]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
Merge branch 'bacula' of github.com:morlix/ipfire-2.x into bacula
authorTimo Eissler <timo@eissler.pro>
Tue, 15 Jul 2014 19:12:51 +0000 (21:12 +0200)
committerTimo Eissler <timo@eissler.pro>
Tue, 15 Jul 2014 19:12:51 +0000 (21:12 +0200)
Conflicts:
make.sh

1016 files changed:
config/avahi/avahi
config/backup/backup.pl
config/backup/exclude
config/backup/include
config/backup/includes/icinga [new file with mode: 0644]
config/backup/includes/igmpproxy [new file with mode: 0644]
config/backup/includes/keepalived [new file with mode: 0644]
config/backup/includes/lcdproc [new file with mode: 0644]
config/backup/includes/mysql [new file with mode: 0644]
config/backup/includes/postfix [new file with mode: 0644]
config/backup/includes/stunnel [new file with mode: 0644]
config/backup/includes/tor [new file with mode: 0644]
config/backup/includes/vdr
config/backup/includes/watchdog
config/cacti/cacti.conf
config/cacti/cacti.logrotate [new file with mode: 0644]
config/cacti/d.gif [new file with mode: 0644]
config/cacti/d.png [new file with mode: 0644]
config/cacti/throbber.gif [new file with mode: 0644]
config/cfgroot/ethernet-vlans
config/cfgroot/general-functions.pl
config/cfgroot/graphs.pl
config/cfgroot/header.pl
config/cfgroot/modem-lib.pl [new file with mode: 0644]
config/cfgroot/p2protocols [deleted file]
config/cfgroot/useragents
config/collectd/collectd.conf
config/cron/crontab
config/etc/fstab
config/etc/group
config/etc/inittab
config/etc/modprobe.d/cfg80211.conf [moved from config/etc/modprobe.d/cfg80211 with 100% similarity]
config/etc/modprobe.d/pcspeaker.conf [moved from config/etc/modprobe.d/pcspeaker with 100% similarity]
config/etc/passwd
config/etc/sysctl.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/guardian/guardian.pl
config/hostapd/config
config/httpd/vhosts.d/ipfire-interface-ssl.conf
config/icinga/icinga.conf [new file with mode: 0644]
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/lcdproc/LCDd.conf [new file with mode: 0644]
config/lcdproc/lcdproc.conf [new file with mode: 0644]
config/menu/10-system.menu
config/menu/20-status.menu
config/menu/30-network.menu
config/menu/40-services.menu
config/menu/50-firewall.menu
config/menu/70-log.menu
config/menu/EX-tor.menu [new file with mode: 0644]
config/outgoingfw/defaultservices [deleted file]
config/outgoingfw/outgoingfw.pl [deleted file]
config/ovpn/openssl/ovpn.cnf
config/ovpn/settings
config/ovpn/verify
config/rootfiles/common/HTML-Template [new file with mode: 0644]
config/rootfiles/common/Net_SSLeay
config/rootfiles/common/apache2
config/rootfiles/common/armv5tel/dracut
config/rootfiles/common/armv5tel/glibc
config/rootfiles/common/armv5tel/initscripts
config/rootfiles/common/armv5tel/installer [deleted file]
config/rootfiles/common/armv5tel/linux
config/rootfiles/common/armv5tel/linux-headers
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/linux-rpi
config/rootfiles/common/armv5tel/lm_sensors
config/rootfiles/common/armv5tel/rpi-firmware
config/rootfiles/common/armv5tel/u-boot
config/rootfiles/common/armv5tel/util-linux
config/rootfiles/common/as86 [deleted file]
config/rootfiles/common/bitstream [new file with mode: 0644]
config/rootfiles/common/compat-drivers [deleted file]
config/rootfiles/common/configroot
config/rootfiles/common/cyrus-sasl
config/rootfiles/common/daq
config/rootfiles/common/dosfstools
config/rootfiles/common/dvb-firmwares
config/rootfiles/common/eject [deleted file]
config/rootfiles/common/fireinfo
config/rootfiles/common/fstrim [deleted file]
config/rootfiles/common/gperf [new file with mode: 0644]
config/rootfiles/common/hostname [new file with mode: 0644]
config/rootfiles/common/i586/dracut
config/rootfiles/common/i586/glibc
config/rootfiles/common/i586/initscripts
config/rootfiles/common/i586/ipfire-netboot [new file with mode: 0644]
config/rootfiles/common/i586/linux
config/rootfiles/common/i586/linux-headers
config/rootfiles/common/i586/lm_sensors
config/rootfiles/common/i586/mISDN [deleted file]
config/rootfiles/common/i586/strongswan-padlock
config/rootfiles/common/i586/syslinux
config/rootfiles/common/i586/util-linux
config/rootfiles/common/inetutils [deleted file]
config/rootfiles/common/iptables
config/rootfiles/common/iputils
config/rootfiles/common/jquery [new file with mode: 0644]
config/rootfiles/common/jwhois [new file with mode: 0644]
config/rootfiles/common/kmod [new file with mode: 0644]
config/rootfiles/common/libjpeg
config/rootfiles/common/libnl
config/rootfiles/common/libpcap
config/rootfiles/common/libsigc++ [deleted file]
config/rootfiles/common/libtorrent [deleted file]
config/rootfiles/common/libusbx [new file with mode: 0644]
config/rootfiles/common/libxml2
config/rootfiles/common/linux-firmware
config/rootfiles/common/lzo
config/rootfiles/common/mbr [deleted file]
config/rootfiles/common/misc-progs
config/rootfiles/common/module-init-tools [deleted file]
config/rootfiles/common/mpage [new file with mode: 0644]
config/rootfiles/common/mysql [deleted file]
config/rootfiles/common/mysql-libs [new file with mode: 0644]
config/rootfiles/common/net-tools
config/rootfiles/common/ntp
config/rootfiles/common/openssh
config/rootfiles/common/openssl
config/rootfiles/common/openssl-compat [new file with mode: 0644]
config/rootfiles/common/openvpn
config/rootfiles/common/pakfire
config/rootfiles/common/paxctl [new file with mode: 0644]
config/rootfiles/common/perl-Device-Modem [new file with mode: 0644]
config/rootfiles/common/perl-Device-SerialPort [new file with mode: 0644]
config/rootfiles/common/ppp
config/rootfiles/common/rng-tools [new file with mode: 0644]
config/rootfiles/common/snort
config/rootfiles/common/squid
config/rootfiles/common/stage2
config/rootfiles/common/strongswan
config/rootfiles/common/sudo
config/rootfiles/common/tzdata
config/rootfiles/common/udev
config/rootfiles/common/usb_modeswitch
config/rootfiles/common/usb_modeswitch_data
config/rootfiles/common/usbutils
config/rootfiles/common/vim
config/rootfiles/common/vnstat
config/rootfiles/common/vnstati [deleted file]
config/rootfiles/common/wget
config/rootfiles/common/xz
config/rootfiles/core/77/exclude [new file with mode: 0644]
config/rootfiles/core/77/filelists/GeoIP [moved from config/rootfiles/core/68/filelists/GeoIP with 100% similarity]
config/rootfiles/core/77/filelists/Net_SSLeay [new symlink]
config/rootfiles/core/77/filelists/apache2 [new symlink]
config/rootfiles/core/77/filelists/armv5tel/binutils [new symlink]
config/rootfiles/core/77/filelists/armv5tel/dracut [new symlink]
config/rootfiles/core/77/filelists/armv5tel/gcc [new symlink]
config/rootfiles/core/77/filelists/armv5tel/glibc [new symlink]
config/rootfiles/core/77/filelists/armv5tel/initscripts [new symlink]
config/rootfiles/core/77/filelists/armv5tel/linux-kirkwood [new symlink]
config/rootfiles/core/77/filelists/armv5tel/linux-multi [new symlink]
config/rootfiles/core/77/filelists/armv5tel/linux-rpi [new symlink]
config/rootfiles/core/77/filelists/armv5tel/lm_sensors [new symlink]
config/rootfiles/core/77/filelists/armv5tel/rpi-firmware [new symlink]
config/rootfiles/core/77/filelists/armv5tel/u-boot [new symlink]
config/rootfiles/core/77/filelists/armv5tel/util-linux [new symlink]
config/rootfiles/core/77/filelists/beep [new symlink]
config/rootfiles/core/77/filelists/bridge-utils [new symlink]
config/rootfiles/core/77/filelists/coreutils [new symlink]
config/rootfiles/core/77/filelists/cyrus-sasl [new symlink]
config/rootfiles/core/77/filelists/dosfstools [new symlink]
config/rootfiles/core/77/filelists/dvb-firmwares [new symlink]
config/rootfiles/core/77/filelists/e2fsprogs [new symlink]
config/rootfiles/core/77/filelists/files [new file with mode: 0644]
config/rootfiles/core/77/filelists/fireinfo [moved from config/rootfiles/core/67/filelists/fireinfo with 100% similarity]
config/rootfiles/core/77/filelists/firewall [new file with mode: 0644]
config/rootfiles/core/77/filelists/hwdata [moved from config/rootfiles/core/68/filelists/hwdata with 100% similarity]
config/rootfiles/core/77/filelists/i586/binutils [new symlink]
config/rootfiles/core/77/filelists/i586/dracut [new symlink]
config/rootfiles/core/77/filelists/i586/gcc [new symlink]
config/rootfiles/core/77/filelists/i586/glibc [new symlink]
config/rootfiles/core/77/filelists/i586/grub [new symlink]
config/rootfiles/core/77/filelists/i586/initscripts [new symlink]
config/rootfiles/core/77/filelists/i586/linux [new symlink]
config/rootfiles/core/77/filelists/i586/lm_sensors [new symlink]
config/rootfiles/core/77/filelists/i586/strongswan-padlock [new symlink]
config/rootfiles/core/77/filelists/i586/util-linux [new symlink]
config/rootfiles/core/77/filelists/iptables [new symlink]
config/rootfiles/core/77/filelists/iw [new symlink]
config/rootfiles/core/77/filelists/jquery [new symlink]
config/rootfiles/core/77/filelists/kmod [new symlink]
config/rootfiles/core/77/filelists/libnl [new symlink]
config/rootfiles/core/77/filelists/libusbx [new symlink]
config/rootfiles/core/77/filelists/libxml2 [new symlink]
config/rootfiles/core/77/filelists/linux-firmware [new symlink]
config/rootfiles/core/77/filelists/lzo [new symlink]
config/rootfiles/core/77/filelists/misc-progs [new symlink]
config/rootfiles/core/77/filelists/mysql-libs [new symlink]
config/rootfiles/core/77/filelists/net-tools [new symlink]
config/rootfiles/core/77/filelists/ntp [new file with mode: 0644]
config/rootfiles/core/77/filelists/openssh [new symlink]
config/rootfiles/core/77/filelists/openssl [new symlink]
config/rootfiles/core/77/filelists/openssl-compat [new symlink]
config/rootfiles/core/77/filelists/openvpn [new symlink]
config/rootfiles/core/77/filelists/pakfire [new file with mode: 0644]
config/rootfiles/core/77/filelists/paxctl [new symlink]
config/rootfiles/core/77/filelists/php [new symlink]
config/rootfiles/core/77/filelists/rng-tools [new symlink]
config/rootfiles/core/77/filelists/setup [new symlink]
config/rootfiles/core/77/filelists/strongswan [moved from config/rootfiles/core/68/filelists/strongswan with 100% similarity]
config/rootfiles/core/77/filelists/tzdata [new symlink]
config/rootfiles/core/77/filelists/udev [new symlink]
config/rootfiles/core/77/filelists/usb_modeswitch [new symlink]
config/rootfiles/core/77/filelists/usb_modeswitch_data [new symlink]
config/rootfiles/core/77/filelists/usbutils [new symlink]
config/rootfiles/core/77/filelists/vim [new symlink]
config/rootfiles/core/77/filelists/wget [new symlink]
config/rootfiles/core/77/filelists/wpa_supplicant [new symlink]
config/rootfiles/core/77/filelists/xz [new symlink]
config/rootfiles/core/77/meta [moved from config/rootfiles/core/67/meta with 100% similarity]
config/rootfiles/core/77/update.sh [new file with mode: 0644]
config/rootfiles/core/79/exclude [new file with mode: 0644]
config/rootfiles/core/79/filelists/armv5tel/linux-kirkwood [new symlink]
config/rootfiles/core/79/filelists/armv5tel/linux-multi [new symlink]
config/rootfiles/core/79/filelists/armv5tel/linux-rpi [new symlink]
config/rootfiles/core/79/filelists/daq [new symlink]
config/rootfiles/core/79/filelists/files [new file with mode: 0644]
config/rootfiles/core/79/filelists/hostname [new symlink]
config/rootfiles/core/79/filelists/i586/grub [new symlink]
config/rootfiles/core/79/filelists/i586/linux [new symlink]
config/rootfiles/core/79/filelists/i586/syslinux [new symlink]
config/rootfiles/core/79/filelists/libpcap [new symlink]
config/rootfiles/core/79/filelists/openssh [new symlink]
config/rootfiles/core/79/filelists/openssl [new symlink]
config/rootfiles/core/79/filelists/openvpn [new symlink]
config/rootfiles/core/79/filelists/perl-Device-Modem [new symlink]
config/rootfiles/core/79/filelists/perl-Device-SerialPort [new symlink]
config/rootfiles/core/79/filelists/ppp [new symlink]
config/rootfiles/core/79/filelists/snort [new symlink]
config/rootfiles/core/79/filelists/squid [moved from config/rootfiles/core/67/filelists/squid with 100% similarity]
config/rootfiles/core/79/filelists/sudo [new symlink]
config/rootfiles/core/79/filelists/vnstat [new symlink]
config/rootfiles/core/79/meta [moved from config/rootfiles/core/68/meta with 100% similarity]
config/rootfiles/core/79/update.sh [new file with mode: 0644]
config/rootfiles/installer/eject [deleted symlink]
config/rootfiles/installer/libidn [new symlink]
config/rootfiles/installer/parted [new symlink]
config/rootfiles/oldcore/27/filelists/files
config/rootfiles/oldcore/66/filelists/files
config/rootfiles/oldcore/67/exclude [moved from config/rootfiles/core/67/exclude with 100% similarity]
config/rootfiles/oldcore/67/filelists/IO-Socket-SSL [moved from config/rootfiles/core/67/filelists/IO-Socket-SSL with 100% similarity]
config/rootfiles/oldcore/67/filelists/armv5tel/compat-drivers-modules-kirkwood [moved from config/rootfiles/core/67/filelists/armv5tel/compat-drivers-modules-kirkwood with 100% similarity]
config/rootfiles/oldcore/67/filelists/armv5tel/compat-drivers-modules-omap [moved from config/rootfiles/core/67/filelists/armv5tel/compat-drivers-modules-omap with 100% similarity]
config/rootfiles/oldcore/67/filelists/armv5tel/compat-drivers-modules-rpi [moved from config/rootfiles/core/67/filelists/armv5tel/compat-drivers-modules-rpi with 100% similarity]
config/rootfiles/oldcore/67/filelists/compat-drivers [moved from config/rootfiles/core/67/filelists/compat-drivers with 100% similarity]
config/rootfiles/oldcore/67/filelists/files [moved from config/rootfiles/core/67/filelists/files with 100% similarity]
config/rootfiles/oldcore/67/filelists/fireinfo [new symlink]
config/rootfiles/oldcore/67/filelists/i586/compat-drivers-modules [moved from config/rootfiles/core/67/filelists/i586/compat-drivers-modules with 100% similarity]
config/rootfiles/oldcore/67/filelists/i586/compat-drivers-modules-pae [moved from config/rootfiles/core/67/filelists/i586/compat-drivers-modules-pae with 100% similarity]
config/rootfiles/oldcore/67/filelists/i586/compat-drivers-modules-pae-xen [moved from config/rootfiles/core/67/filelists/i586/compat-drivers-modules-pae-xen with 100% similarity]
config/rootfiles/oldcore/67/filelists/squid [new symlink]
config/rootfiles/oldcore/67/meta [new file with mode: 0644]
config/rootfiles/oldcore/67/update.sh [moved from config/rootfiles/core/67/update.sh with 100% similarity]
config/rootfiles/oldcore/68/exclude [moved from config/rootfiles/core/68/exclude with 100% similarity]
config/rootfiles/oldcore/68/filelists/GeoIP [new file with mode: 0644]
config/rootfiles/oldcore/68/filelists/dejavu-fonts-ttf [moved from config/rootfiles/core/68/filelists/dejavu-fonts-ttf with 100% similarity]
config/rootfiles/oldcore/68/filelists/files [moved from config/rootfiles/core/68/filelists/files with 94% similarity]
config/rootfiles/oldcore/68/filelists/freefont [moved from config/rootfiles/core/68/filelists/freefont with 100% similarity]
config/rootfiles/oldcore/68/filelists/hwdata [new file with mode: 0644]
config/rootfiles/oldcore/68/filelists/perl-Sort-Naturally [moved from config/rootfiles/core/68/filelists/perl-Sort-Naturally with 100% similarity]
config/rootfiles/oldcore/68/filelists/smartmontools [moved from config/rootfiles/core/68/filelists/smartmontools with 100% similarity]
config/rootfiles/oldcore/68/filelists/strongswan [new symlink]
config/rootfiles/oldcore/68/filelists/vlan [moved from config/rootfiles/core/68/filelists/vlan with 100% similarity]
config/rootfiles/oldcore/68/meta [new file with mode: 0644]
config/rootfiles/oldcore/68/update.sh [moved from config/rootfiles/core/68/update.sh with 100% similarity]
config/rootfiles/oldcore/69/exclude [new file with mode: 0644]
config/rootfiles/oldcore/69/filelists/armv5tel/linux-kirkwood [new symlink]
config/rootfiles/oldcore/69/filelists/armv5tel/linux-omap [new symlink]
config/rootfiles/oldcore/69/filelists/armv5tel/linux-rpi [new symlink]
config/rootfiles/oldcore/69/filelists/files [new file with mode: 0644]
config/rootfiles/oldcore/69/filelists/i586/grub.conf [new file with mode: 0644]
config/rootfiles/oldcore/69/filelists/i586/linux [new symlink]
config/rootfiles/oldcore/69/filelists/openssh [new symlink]
config/rootfiles/oldcore/69/filelists/setup [new symlink]
config/rootfiles/oldcore/69/meta [new file with mode: 0644]
config/rootfiles/oldcore/69/update.sh [new file with mode: 0644]
config/rootfiles/oldcore/70/exclude [new file with mode: 0644]
config/rootfiles/oldcore/70/filelists/armv5tel/linux-kirkwood [new symlink]
config/rootfiles/oldcore/70/filelists/armv5tel/linux-omap [new symlink]
config/rootfiles/oldcore/70/filelists/armv5tel/linux-rpi [new symlink]
config/rootfiles/oldcore/70/filelists/crda [new symlink]
config/rootfiles/oldcore/70/filelists/files [new file with mode: 0644]
config/rootfiles/oldcore/70/filelists/i586/grub.conf [new file with mode: 0644]
config/rootfiles/oldcore/70/filelists/i586/linux [new symlink]
config/rootfiles/oldcore/70/filelists/iw [new symlink]
config/rootfiles/oldcore/70/filelists/libjpeg [new symlink]
config/rootfiles/oldcore/70/filelists/wireless-regdb [new symlink]
config/rootfiles/oldcore/70/meta [new file with mode: 0644]
config/rootfiles/oldcore/70/update.sh [new file with mode: 0644]
config/rootfiles/oldcore/71/exclude [new file with mode: 0644]
config/rootfiles/oldcore/71/filelists/GeoIP [new file with mode: 0644]
config/rootfiles/oldcore/71/filelists/curl [new symlink]
config/rootfiles/oldcore/71/filelists/files [new file with mode: 0644]
config/rootfiles/oldcore/71/filelists/hwdata [new file with mode: 0644]
config/rootfiles/oldcore/71/filelists/jwhois [new symlink]
config/rootfiles/oldcore/71/filelists/oinkmaster [new symlink]
config/rootfiles/oldcore/71/filelists/snort [new symlink]
config/rootfiles/oldcore/71/filelists/squid [new symlink]
config/rootfiles/oldcore/71/filelists/usb_modeswitch [new symlink]
config/rootfiles/oldcore/71/filelists/usb_modeswitch_data [new symlink]
config/rootfiles/oldcore/71/meta [new file with mode: 0644]
config/rootfiles/oldcore/71/update.sh [new file with mode: 0644]
config/rootfiles/oldcore/72/exclude [new file with mode: 0644]
config/rootfiles/oldcore/72/filelists/daq [new symlink]
config/rootfiles/oldcore/72/filelists/files [new file with mode: 0644]
config/rootfiles/oldcore/72/filelists/i586/strongswan-padlock [new symlink]
config/rootfiles/oldcore/72/filelists/snort [new symlink]
config/rootfiles/oldcore/72/filelists/squid [new symlink]
config/rootfiles/oldcore/72/meta [new file with mode: 0644]
config/rootfiles/oldcore/72/update.sh [new file with mode: 0644]
config/rootfiles/oldcore/73/exclude [new file with mode: 0644]
config/rootfiles/oldcore/73/filelists/GeoIP [new file with mode: 0644]
config/rootfiles/oldcore/73/filelists/HTML-Template [new symlink]
config/rootfiles/oldcore/73/filelists/armv5tel/ath-modul [new file with mode: 0644]
config/rootfiles/oldcore/73/filelists/files [new file with mode: 0644]
config/rootfiles/oldcore/73/filelists/hwdata [new file with mode: 0644]
config/rootfiles/oldcore/73/filelists/i586/ath-modul [new file with mode: 0644]
config/rootfiles/oldcore/73/filelists/openssh [new symlink]
config/rootfiles/oldcore/73/filelists/php [new symlink]
config/rootfiles/oldcore/73/filelists/squid [new symlink]
config/rootfiles/oldcore/73/meta [new file with mode: 0644]
config/rootfiles/oldcore/73/update.sh [new file with mode: 0644]
config/rootfiles/oldcore/74/exclude [new file with mode: 0644]
config/rootfiles/oldcore/74/filelists/files [new file with mode: 0644]
config/rootfiles/oldcore/74/filelists/i586/strongswan-padlock [new symlink]
config/rootfiles/oldcore/74/filelists/openvpn [new symlink]
config/rootfiles/oldcore/74/filelists/squid [new symlink]
config/rootfiles/oldcore/74/filelists/strongswan [new symlink]
config/rootfiles/oldcore/74/meta [new file with mode: 0644]
config/rootfiles/oldcore/74/update.sh [new file with mode: 0644]
config/rootfiles/oldcore/75/exclude [new file with mode: 0644]
config/rootfiles/oldcore/75/filelists/files [new file with mode: 0644]
config/rootfiles/oldcore/75/meta [new file with mode: 0644]
config/rootfiles/oldcore/75/update.sh [new file with mode: 0644]
config/rootfiles/packages/alsa
config/rootfiles/packages/arm [new file with mode: 0644]
config/rootfiles/packages/armv5tel/vdr_dvbapi [new file with mode: 0644]
config/rootfiles/packages/cacti
config/rootfiles/packages/check_mk_agent
config/rootfiles/packages/clamav
config/rootfiles/packages/cups
config/rootfiles/packages/foomatic
config/rootfiles/packages/git
config/rootfiles/packages/gutenprint
config/rootfiles/packages/i586/vdr_dvbapi [new file with mode: 0644]
config/rootfiles/packages/icecc [deleted file]
config/rootfiles/packages/icinga [new file with mode: 0644]
config/rootfiles/packages/igmpproxy
config/rootfiles/packages/iotop [new file with mode: 0644]
config/rootfiles/packages/iptraf-ng [new file with mode: 0644]
config/rootfiles/packages/ipvsadm [new file with mode: 0644]
config/rootfiles/packages/keepalived [new file with mode: 0644]
config/rootfiles/packages/lcdproc [new file with mode: 0644]
config/rootfiles/packages/linux-pae
config/rootfiles/packages/linux-xen [deleted file]
config/rootfiles/packages/mc
config/rootfiles/packages/motion
config/rootfiles/packages/multicat [new file with mode: 0644]
config/rootfiles/packages/mysql
config/rootfiles/packages/nagios
config/rootfiles/packages/nfs
config/rootfiles/packages/nut
config/rootfiles/packages/perl-Carp-Clan [new file with mode: 0644]
config/rootfiles/packages/perl-DBD-SQLite [new file with mode: 0644]
config/rootfiles/packages/perl-DBI
config/rootfiles/packages/perl-Date-Calc [new file with mode: 0644]
config/rootfiles/packages/perl-Date-Manip [new file with mode: 0644]
config/rootfiles/packages/perl-File-ReadBackwards [new file with mode: 0644]
config/rootfiles/packages/perl-File-Tail [new file with mode: 0644]
config/rootfiles/packages/perl-TimeDate [new file with mode: 0644]
config/rootfiles/packages/postfix
config/rootfiles/packages/pound
config/rootfiles/packages/rtorrent [deleted file]
config/rootfiles/packages/samba
config/rootfiles/packages/sslh
config/rootfiles/packages/sslscan [new file with mode: 0644]
config/rootfiles/packages/strace [new file with mode: 0644]
config/rootfiles/packages/stunnel [new file with mode: 0644]
config/rootfiles/packages/swatch [new file with mode: 0644]
config/rootfiles/packages/tcpdump
config/rootfiles/packages/tftpd
config/rootfiles/packages/tor [new file with mode: 0644]
config/rootfiles/packages/vdr_eepg [new file with mode: 0644]
config/rootfiles/packages/vdr_vnsiserver5 [new file with mode: 0644]
config/rootfiles/packages/wavemon [new file with mode: 0644]
config/rootfiles/packages/xinetd [new file with mode: 0644]
config/rpi-firmware/config.txt
config/samba/default.shares
config/snort/snort.conf
config/squidclamav/squidclamav.conf
config/stunnel/stunnel.conf [new file with mode: 0644]
config/syslinux/boot.msg [deleted file]
config/syslinux/boot.png [new file with mode: 0644]
config/syslinux/splash.lss [deleted file]
config/syslinux/syslinux.cfg
config/syslinux/unattended.conf
config/tor/defaults-torrc [new file with mode: 0644]
config/tor/tor.logrotate [new file with mode: 0644]
config/u-boot/boot.scr
config/u-boot/boot.script
config/udev/90-hwrng.rules [new file with mode: 0644]
config/udev/blacklist.conf [moved from config/udev/blacklist with 100% similarity]
config/udev/udev.conf [new file with mode: 0644]
config/updxlrator/updxlrator
config/urlfilter/redirect_wrapper
config/vdr/etc/setup.conf
config/vdr/plugins.d/vnsiserver5.conf [new file with mode: 0644]
config/vdr/vdr.sysconfig
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]
config/xinetd/xinetd.conf [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 [new file with mode: 0644]
doc/language_missings
doc/make.sh-usage
html/cgi-bin/aliases.cgi
html/cgi-bin/atm-status.cgi
html/cgi-bin/backup.cgi
html/cgi-bin/connections.cgi
html/cgi-bin/connscheduler.cgi
html/cgi-bin/country.cgi
html/cgi-bin/credits.cgi
html/cgi-bin/ddns.cgi
html/cgi-bin/dhcp.cgi
html/cgi-bin/dmzholes.cgi [deleted file]
html/cgi-bin/dnsforward.cgi [new file with mode: 0644]
html/cgi-bin/entropy.cgi [new file with mode: 0644]
html/cgi-bin/extrahd.cgi
html/cgi-bin/fireinfo.cgi
html/cgi-bin/firewall.cgi [new file with mode: 0644]
html/cgi-bin/fwhosts.cgi [new file with mode: 0644]
html/cgi-bin/gpl.cgi [new file with mode: 0644]
html/cgi-bin/gui.cgi
html/cgi-bin/hosts.cgi
html/cgi-bin/ids.cgi
html/cgi-bin/imspector.cgi
html/cgi-bin/index.cgi
html/cgi-bin/iptables.cgi
html/cgi-bin/logs.cgi/firewalllog.dat
html/cgi-bin/logs.cgi/firewalllogcountry.dat [new file with mode: 0644]
html/cgi-bin/logs.cgi/firewalllogip.dat
html/cgi-bin/logs.cgi/firewalllogport.dat
html/cgi-bin/logs.cgi/log.dat
html/cgi-bin/logs.cgi/proxylog.dat
html/cgi-bin/logs.cgi/showrequestfromcountry.dat [new file with mode: 0644]
html/cgi-bin/logs.cgi/showrequestfromip.dat
html/cgi-bin/logs.cgi/showrequestfromport.dat
html/cgi-bin/logs.cgi/urlfilter.dat
html/cgi-bin/mac.cgi
html/cgi-bin/mdstat.cgi
html/cgi-bin/media.cgi
html/cgi-bin/modem-status.cgi [new file with mode: 0644]
html/cgi-bin/netexternal.cgi
html/cgi-bin/netinternal.cgi
html/cgi-bin/optionsfw.cgi
html/cgi-bin/outgoingfw.cgi [deleted file]
html/cgi-bin/outgoinggrp.cgi [deleted file]
html/cgi-bin/ovpnmain.cgi
html/cgi-bin/p2p-block.cgi [new file with mode: 0644]
html/cgi-bin/pakfire.cgi
html/cgi-bin/portfw.cgi [deleted file]
html/cgi-bin/pppsetup.cgi
html/cgi-bin/proxy.cgi
html/cgi-bin/qos.cgi
html/cgi-bin/remote.cgi
html/cgi-bin/routing.cgi
html/cgi-bin/samba.cgi
html/cgi-bin/services.cgi
html/cgi-bin/shutdown.cgi [new file with mode: 0644]
html/cgi-bin/speed.cgi
html/cgi-bin/time.cgi
html/cgi-bin/tor.cgi [new file with mode: 0644]
html/cgi-bin/traffic.cgi
html/cgi-bin/tripwire.cgi
html/cgi-bin/updatexlrator.cgi
html/cgi-bin/upnp.cgi
html/cgi-bin/urlfilter.cgi
html/cgi-bin/vpnmain.cgi
html/cgi-bin/wakeonlan.cgi
html/cgi-bin/wireless.cgi
html/cgi-bin/wirelessclient.cgi [new file with mode: 0644]
html/cgi-bin/wlanap.cgi
html/cgi-bin/xtaccess.cgi [deleted file]
html/html/include/jquery-1.9.1.min.js [deleted file]
html/html/index.cgi
html/html/redirect-templates/legacy/template.html [new file with mode: 0644]
html/html/redirect.cgi
html/html/themes/darkdos/images/IPFire.png [new file with mode: 0644]
html/html/themes/darkdos/images/b1.gif [new file with mode: 0644]
html/html/themes/darkdos/images/b2.gif [new file with mode: 0644]
html/html/themes/darkdos/images/b3.gif [new file with mode: 0644]
html/html/themes/darkdos/images/b4.gif [new file with mode: 0644]
html/html/themes/darkdos/images/b5.gif [new file with mode: 0644]
html/html/themes/darkdos/images/b6.gif [new file with mode: 0644]
html/html/themes/darkdos/images/spacer.gif [moved from html/html/themes/ipfire/images/spacer.gif with 100% similarity]
html/html/themes/darkdos/include/colors.txt [new file with mode: 0644]
html/html/themes/darkdos/include/functions.pl [new file with mode: 0644]
html/html/themes/darkdos/include/style.css [new file with mode: 0644]
html/html/themes/ipfire-legacy/images/n1.gif [moved from html/html/themes/ipfire/images/n1.gif with 100% similarity]
html/html/themes/ipfire-legacy/images/n2.gif [new file with mode: 0644]
html/html/themes/ipfire-legacy/images/n3.gif [new file with mode: 0644]
html/html/themes/ipfire-legacy/images/n4.gif [moved from html/html/themes/ipfire/images/n4.gif with 100% similarity]
html/html/themes/ipfire-legacy/images/n5.gif [new file with mode: 0644]
html/html/themes/ipfire-legacy/images/n6.gif [new file with mode: 0644]
html/html/themes/ipfire-legacy/images/spacer.gif [new file with mode: 0644]
html/html/themes/ipfire-legacy/include/colors.txt [new file with mode: 0644]
html/html/themes/ipfire-legacy/include/functions.pl [new file with mode: 0644]
html/html/themes/ipfire-legacy/include/style.css [moved from html/html/themes/ipfire/include/style.css with 91% similarity]
html/html/themes/ipfire/images/tux2.png [new file with mode: 0644]
html/html/themes/ipfire/include/css/style-rounded.css [new file with mode: 0644]
html/html/themes/ipfire/include/css/style.css [new file with mode: 0644]
html/html/themes/ipfire/include/functions.pl
html/html/themes/ipfire/include/js/refreshInetInfo.js [new file with mode: 0644]
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/list
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/cgi-bin/tr.pl [new file with mode: 0644]
langs/tr/install/lang_tr.c [new file with mode: 0644]
lfs/Config
lfs/GeoIP
lfs/HTML-Template [moved from lfs/as86 with 93% similarity]
lfs/Net_SSLeay
lfs/alsa
lfs/apache2
lfs/arm [new file with mode: 0644]
lfs/avahi
lfs/beep
lfs/binutils
lfs/bitstream [new file with mode: 0644]
lfs/bluetooth
lfs/bridge-utils
lfs/cacti
lfs/cdrom
lfs/check_mk_agent
lfs/clamav
lfs/compat-drivers
lfs/configroot
lfs/cpufrequtils
lfs/crda
lfs/cryptodev
lfs/cups
lfs/curl
lfs/cyrus-sasl
lfs/daq
lfs/dracut
lfs/e1000
lfs/e1000e
lfs/fetchmail
lfs/ffmpeg
lfs/ffmpeg-libs
lfs/fireinfo
lfs/flash-images
lfs/foomatic
lfs/gcc
lfs/git
lfs/glibc
lfs/gperf [new file with mode: 0644]
lfs/grub
lfs/guardian
lfs/gutenprint
lfs/hostapd
lfs/hostname [moved from lfs/eject with 92% similarity]
lfs/htop
lfs/icinga [new file with mode: 0644]
lfs/igb
lfs/igmpproxy
lfs/imspector
lfs/initrd
lfs/initscripts
lfs/installer
lfs/iotop [new file with mode: 0644]
lfs/ipfire-netboot [new file with mode: 0644]
lfs/iptables
lfs/iptraf-ng [new file with mode: 0644]
lfs/iputils
lfs/ipvsadm [new file with mode: 0644]
lfs/iw
lfs/jquery [new file with mode: 0644]
lfs/jwhois [new file with mode: 0644]
lfs/keepalived [new file with mode: 0644]
lfs/kmod [new file with mode: 0644]
lfs/lcd4linux
lfs/lcdproc [new file with mode: 0644]
lfs/libjpeg
lfs/libmad
lfs/libnl
lfs/libpcap
lfs/libusbx [moved from lfs/fstrim with 90% similarity]
lfs/libxml2
lfs/linux
lfs/linux-firmware
lfs/linux2 [deleted file]
lfs/lm_sensors
lfs/lzo
lfs/mISDN
lfs/mc
lfs/memtest
lfs/miniupnpd
lfs/motion
lfs/mpage [new file with mode: 0644]
lfs/multicat [moved from lfs/libsigc++ with 92% similarity]
lfs/mysql
lfs/nagios
lfs/net-tools
lfs/nginx
lfs/ntp
lfs/nut
lfs/oinkmaster
lfs/openssh
lfs/openssl
lfs/openssl-compat [new file with mode: 0644]
lfs/openvmtools
lfs/openvpn
lfs/pakfire
lfs/paxctl [new file with mode: 0644]
lfs/perl-Carp-Clan [moved from lfs/rtorrent with 90% similarity]
lfs/perl-DBD-SQLite [new file with mode: 0644]
lfs/perl-DBI
lfs/perl-Date-Calc [new file with mode: 0644]
lfs/perl-Date-Manip [new file with mode: 0644]
lfs/perl-Device-Modem [moved from lfs/mbr with 92% similarity]
lfs/perl-Device-SerialPort [moved from lfs/vnstati with 91% similarity]
lfs/perl-File-ReadBackwards [new file with mode: 0644]
lfs/perl-File-Tail [new file with mode: 0644]
lfs/perl-TimeDate [moved from lfs/libtorrent with 90% similarity]
lfs/php
lfs/postfix
lfs/pound
lfs/ppp
lfs/qemu
lfs/r8101
lfs/r8168
lfs/r8169
lfs/rng-tools [new file with mode: 0644]
lfs/rpi-firmware
lfs/rsync
lfs/samba
lfs/snort
lfs/squid
lfs/squidclamav
lfs/squidguard
lfs/sslh
lfs/sslscan [new file with mode: 0644]
lfs/stage2
lfs/strace [new file with mode: 0644]
lfs/strongswan
lfs/stunnel [moved from lfs/inetutils with 81% similarity]
lfs/sudo
lfs/swatch [new file with mode: 0644]
lfs/tcpdump
lfs/tor [new file with mode: 0644]
lfs/transmission
lfs/tzdata
lfs/u-boot
lfs/udev
lfs/usb-stick [deleted file]
lfs/usb_modeswitch
lfs/usb_modeswitch_data
lfs/usbutils
lfs/util-linux
lfs/v4l-dvb
lfs/vdr
lfs/vdr_dvbapi [new file with mode: 0644]
lfs/vdr_eepg [moved from lfs/icecc with 72% similarity]
lfs/vdr_vnsiserver5 [new file with mode: 0644]
lfs/vim
lfs/vnstat
lfs/w_scan
lfs/watchdog
lfs/wavemon [new file with mode: 0644]
lfs/wget
lfs/wireless-regdb
lfs/wpa_supplicant
lfs/xen-image
lfs/xinetd [new file with mode: 0644]
lfs/xz
make.sh
src/hwdata/pci.ids
src/hwdata/usb.ids
src/initscripts/init.d/apache
src/initscripts/init.d/collectd
src/initscripts/init.d/console
src/initscripts/init.d/dhcp
src/initscripts/init.d/dnsmasq
src/initscripts/init.d/fcron
src/initscripts/init.d/firewall
src/initscripts/init.d/firstsetup
src/initscripts/init.d/hostapd
src/initscripts/init.d/icecream [deleted file]
src/initscripts/init.d/keepalived [new file with mode: 0644]
src/initscripts/init.d/lcdproc [new file with mode: 0644]
src/initscripts/init.d/leds
src/initscripts/init.d/mountfs
src/initscripts/init.d/mountkernfs
src/initscripts/init.d/network
src/initscripts/init.d/network-vlans
src/initscripts/init.d/networking/functions.network [new file with mode: 0644]
src/initscripts/init.d/networking/red
src/initscripts/init.d/networking/wpa_supplicant.exe [new file with mode: 0644]
src/initscripts/init.d/ntp
src/initscripts/init.d/nut
src/initscripts/init.d/partresize
src/initscripts/init.d/pound
src/initscripts/init.d/random
src/initscripts/init.d/rngd [new file with mode: 0644]
src/initscripts/init.d/squid
src/initscripts/init.d/sshd
src/initscripts/init.d/sslh
src/initscripts/init.d/stunnel [new file with mode: 0644]
src/initscripts/init.d/tor [new file with mode: 0644]
src/initscripts/init.d/udev
src/initscripts/init.d/udev_retry
src/initscripts/init.d/watchdog
src/initscripts/init.d/wlanclient [new file with mode: 0644]
src/install+setup/install/main.c
src/install+setup/install/mountsource.sh
src/install+setup/install/probenic.sh
src/install+setup/libsmooth/libsmooth.h
src/install+setup/libsmooth/main.c
src/install+setup/libsmooth/netstuff.c
src/install+setup/setup/keymap.c
src/install+setup/setup/main.c
src/install+setup/setup/misc.c
src/install+setup/setup/networking.c
src/misc-progs/Makefile
src/misc-progs/backupctrl.c
src/misc-progs/dnsmasqctrl.c [moved from src/misc-progs/outgoingfwctrl.c with 57% similarity]
src/misc-progs/fireinfoctrl.c
src/misc-progs/firewallctrl.c [new file with mode: 0644]
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/torctrl.c [new file with mode: 0644]
src/misc-progs/wirelessclient.c [new file with mode: 0644]
src/misc-progs/wirelessctrl.c
src/pakfire/lib/functions.pl
src/pakfire/pakfire.conf
src/paks/avahi/install.sh
src/paks/cacti/install.sh
src/paks/check_mk_agent/install.sh
src/paks/check_mk_agent/uninstall.sh
src/paks/fetchmail/install.sh
src/paks/fetchmail/uninstall.sh
src/paks/igmpproxy/install.sh [new file with mode: 0644]
src/paks/igmpproxy/uninstall.sh [moved from src/paks/linux-xen/uninstall.sh with 92% similarity]
src/paks/igmpproxy/update.sh [moved from src/paks/linux-xen/update.sh with 100% similarity]
src/paks/linux-pae/install.sh
src/paks/linux-xen/install.sh [deleted file]
src/paks/mysql/install.sh
src/paks/mysql/uninstall.sh
src/paks/mysql/update.sh
src/paks/postfix/install.sh
src/paks/squidclamav/update.sh
src/paks/stunnel/install.sh [new file with mode: 0644]
src/paks/stunnel/uninstall.sh [new file with mode: 0644]
src/paks/stunnel/update.sh [moved from src/paks/icecc/update.sh with 98% similarity]
src/paks/tor/install.sh [new file with mode: 0644]
src/paks/tor/uninstall.sh [new file with mode: 0644]
src/paks/tor/update.sh [new file with mode: 0644]
src/paks/vdr_vnsiserver5/install.sh [moved from src/paks/icecc/install.sh with 97% similarity]
src/paks/vdr_vnsiserver5/uninstall.sh [new file with mode: 0644]
src/paks/vdr_vnsiserver5/update.sh [moved from src/paks/icecc/uninstall.sh with 97% similarity]
src/paks/xinetd/install.sh [new file with mode: 0644]
src/paks/xinetd/uninstall.sh [new file with mode: 0644]
src/paks/xinetd/update.sh [new file with mode: 0644]
src/patches/arm-dont-require-distutils.patch [new file with mode: 0644]
src/patches/binutils-2.22-pt-pax-flags-20111121.patch [new file with mode: 0644]
src/patches/bitstream-makefile.patch [new file with mode: 0644]
src/patches/bridge-utils-1.5-compile-fix-1.patch [new file with mode: 0644]
src/patches/cacti/cacti-0.8.8a-legal.patch [new file with mode: 0644]
src/patches/cacti/cacti-0.8.8a-replace_treeview_by_jquery.jstree.patch [new file with mode: 0644]
src/patches/cacti/cacti-0.8.8b-html-injection.patch [new file with mode: 0644]
src/patches/cacti/cacti-0.8.8b-remote-command-execution.patch [new file with mode: 0644]
src/patches/cacti/cacti-0.8.8b-rra-comments.patch [new file with mode: 0644]
src/patches/cacti/cacti-0.8.8b-sanitize-variables.patch [new file with mode: 0644]
src/patches/cacti/cacti-0.8.8b-sql-injection-shell-escaping.patch [new file with mode: 0644]
src/patches/compat-drivers-3.8-1-u-kref_get_unless_zero.patch [new file with mode: 0644]
src/patches/compat-drivers-3.8-arm_missing_vmalloc.patch [deleted file]
src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch [new file with mode: 0644]
src/patches/coreutils-5.96-uname-1.patch
src/patches/dracut-006_add_run_dir.patch [new file with mode: 0644]
src/patches/dracut-006_remove_scsi_wait.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-rh886968.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh905575.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh905874.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh916986.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh928318.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh929388.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh947882.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh952422.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh966775.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh966778.patch [new file with mode: 0644]
src/patches/glibc/glibc-rh970090.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/hostname-rh.patch [new file with mode: 0644]
src/patches/icecream-0.9.7-platform-arm.patch [deleted file]
src/patches/icecream-rename-scheduler.patch [deleted file]
src/patches/igmpproxy-001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch [new file with mode: 0644]
src/patches/igmpproxy-002-Change-default-interface-state-to-disabled-wrt-29458.patch [new file with mode: 0644]
src/patches/igmpproxy-003-Restrict-igmp-reports-for-downstream-interfaces-wrt-.patch [new file with mode: 0644]
src/patches/igmpproxy-004-Restrict-igmp-reports-forwarding-to-upstream-interfa.patch [new file with mode: 0644]
src/patches/igmpproxy-100-use-monotic-clock-instead-of-time-of-day.patch [new file with mode: 0644]
src/patches/imspector-20101008-ssl.patch [new file with mode: 0644]
src/patches/inetutils-1.4.2-daemon_fixes-1.patch [deleted file]
src/patches/inetutils-1.4.2-gcc4_fixes-3.patch [deleted file]
src/patches/iptraf-ng-1.1.4-tcplog_flowrate_msg.patch [new file with mode: 0644]
src/patches/jwhois-4.0-conf_update.patch [new file with mode: 0644]
src/patches/jwhois-4.0-conf_update2.patch [new file with mode: 0644]
src/patches/jwhois-4.0-connect.patch [new file with mode: 0644]
src/patches/jwhois-4.0-fclose.patch [new file with mode: 0644]
src/patches/jwhois-4.0-idna.patch [new file with mode: 0644]
src/patches/jwhois-4.0-ipv6match.patch [new file with mode: 0644]
src/patches/jwhois-4.0-multi-homed.patch [new file with mode: 0644]
src/patches/jwhois-4.0-select.patch [new file with mode: 0644]
src/patches/kernel/omap/0002-omap2-twl-common-Add-default-power-configuration.patch [new file with mode: 0644]
src/patches/kernel/omap/3isp/0001-omap3isp-Use-the-common-clock-framework.patch [new file with mode: 0644]
src/patches/kernel/omap/3isp/0002-mt9m032-Fix-PLL-setup.patch [new file with mode: 0644]
src/patches/kernel/omap/3isp/0003-mt9m032-Define-MT9M032_READ_MODE1-bits.patch [new file with mode: 0644]
src/patches/kernel/omap/3isp/0004-mt9p031-Use-devm_-managed-helpers.patch [new file with mode: 0644]
src/patches/kernel/omap/3isp/0005-mt9p031-Add-support-for-regulators.patch [new file with mode: 0644]
src/patches/kernel/omap/3isp/0006-mt9p031-Use-the-common-clock-framework.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/0001-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/0002-backlight-Add-TLC59108-backlight-control-driver.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/0003-tlc59108-adjust-for-beagleboard-uLCD7.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/0004-zeroMAP-Open-your-eyes.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/0005-ARM-OMAP-Beagle-use-TWL4030-generic-reset-script.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/0006-DSS2-use-DSI-PLL-for-DPI-with-OMAP3.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0001-Beagle-expansion-add-buddy-param-for-expansionboard-.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0002-Beagle-expansion-add-zippy.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0003-Beagle-expansion-add-zippy2.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0004-Beagle-expansion-add-trainer.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0005-Beagle-expansion-add-CircuitCo-ulcd-Support.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0006-Beagle-expansion-add-wifi.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0007-Beagle-expansion-add-beaglefpga.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0008-Beagle-expansion-add-spidev.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0009-Beagle-expansion-add-Aptina-li5m03-camera.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0010-Beagle-expansion-add-LSR-COM6L-Adapter-Board.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0011-Beagle-expansion-LSR-COM6L-Adapter-Board-also-initia.patch [new file with mode: 0644]
src/patches/kernel/omap/beagle/expansion/0011-WIP-Beagle-expansion-extend-spidev-to-uart2.patch [new file with mode: 0644]
src/patches/kernel/omap/panda/0001-panda-fix-wl12xx-regulator.patch [new file with mode: 0644]
src/patches/kernel/omap/panda/0002-ti-st-st-kim-fixing-firmware-path.patch [new file with mode: 0644]
src/patches/kernel/omap/panda/0003-Panda-expansion-add-spidev.patch [new file with mode: 0644]
src/patches/kernel/omap/panda/0004-HACK-PandaES-disable-cpufreq-so-board-will-boot.patch [new file with mode: 0644]
src/patches/kernel/omap/panda/0006-ARM-hw_breakpoint-Enable-debug-powerdown-only-if-sys.patch [new file with mode: 0644]
src/patches/kernel/omap/panda/0007-Revert-regulator-twl-Remove-TWL6030_FIXED_RESOURCE.patch [new file with mode: 0644]
src/patches/kernel/omap/panda/0008-Revert-regulator-twl-Remove-another-unused-variable-.patch [new file with mode: 0644]
src/patches/kernel/omap/panda/0009-Revert-regulator-twl-Remove-references-to-the-twl403.patch [new file with mode: 0644]
src/patches/kernel/omap/panda/0010-Revert-regulator-twl-Remove-references-to-32kHz-cloc.patch [new file with mode: 0644]
src/patches/kernel/omap/panda/0011-panda-spidev-setup-pinmux.patch [new file with mode: 0644]
src/patches/kernel/omap/sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch [new file with mode: 0644]
src/patches/kernel/omap/sakoman/0002-video-add-timings-for-hd720.patch [new file with mode: 0644]
src/patches/kernel/omap/sgx/0001-arm-Export-cache-flush-management-symbols-when-MULTI.patch [new file with mode: 0644]
src/patches/kernel/utilite/linux-3.10-compulab-utilite-support.patch [new file with mode: 0644]
src/patches/kernel/wandboard/dts/0001-imx6qdl-wandboard-dts-backport.patch [new file with mode: 0644]
src/patches/kernel/wandboard/dts/0002-ARM-dts-imx6qdl-wandboard-add-gpio-lines-to-wandboar.patch [new file with mode: 0644]
src/patches/kernel/wandboard/dts/0003-ARM-dts-imx6qdl-wandboard-Add-support-for-i2c1.patch [new file with mode: 0644]
src/patches/kernel/wandboard/dts/0004-ARM-dts-wandboard-add-binding-for-wand-rfkill-driver.patch [new file with mode: 0644]
src/patches/kernel/wandboard/dts/0005-ARM-dts-imx6qdl-add-pcie-device-node.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0001-i2c-imx-retry-on-NAK.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0002-i.MX6-Wandboard-add-CKO1-clock-output.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0003-thermal-add-imx-thermal-driver-support.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0004-ARM-i.MX6-Wandboard-add-wifi-bt-rfkill-driver.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0005-Add-IMX6Q-AHCI-support.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0006-imx-Add-IMX53-AHCI-support.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0007-imx6-enable-sata-clk-if-SATA_AHCI_PLATFORM.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0008-ARM-imx6q-update-the-sata-bits-definitions-of-gpr13.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0009-ahci_imx-add-ahci-sata-support-on-imx-platforms.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0010-ahci_imx-depend-on-CONFIG_MFD_SYSCON.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0011-add-pcie-designware.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0012-pcie-backport-fixes.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0013-of-pci-Provide-support-for-parsing-PCI-DT-ranges-pro.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0014-ARM-imx6q-Add-PCIe-bits-to-GPR-syscon-definition.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0015-PCI-imx6-Add-support-for-i.MX6-PCIe-controller.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0016-imx6-pci-tweaks.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0017-ARM-imx-Add-LVDS-general-purpose-clocks-to-i.MX6Q.patch [new file with mode: 0644]
src/patches/kernel/wandboard/imx/0018-ARM-imx6q-clock-and-Kconfig-update-for-PCIe-support.patch [new file with mode: 0644]
src/patches/lcdproc-0.5.6-menuitem.patch [new file with mode: 0644]
src/patches/linux-2.6-silence-acpi-blacklist.patch [new file with mode: 0644]
src/patches/linux-3.10-apu_leds.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-layer7-filter.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.27-fs-exec-atomic64-operand-requires-impossible-reload.patch [new file with mode: 0644]
src/patches/linux-3.10.30-imq.patch [new file with mode: 0644]
src/patches/linux-3.10.30_cs5535audio_fix_logspam_on_geos.patch [new file with mode: 0644]
src/patches/linux-3.10.34-iwlwifi-noibss_only_on_radar_chan.patch [new file with mode: 0644]
src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch [new file with mode: 0644]
src/patches/linux-3.10.39-add_libertas_uap.patch [new file with mode: 0644]
src/patches/linux-3.10.39-pie_packet_sch.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.10.y-usbnet_mcs7830_rework_link_detect.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/mpage25-config.patch [new file with mode: 0644]
src/patches/multicat-makefile.patch [new file with mode: 0644]
src/patches/net-tools-1.60-kernel_headers-3.patch [new file with mode: 0644]
src/patches/net-tools-1.60-no-hostname.patch [new file with mode: 0644]
src/patches/oinkmaster-2.0-add_community_rules.patch [new file with mode: 0644]
src/patches/openssl-1.0.0-beta5-enginesdir.patch [new file with mode: 0644]
src/patches/openssl-1.0.1-beta2-build.patch [new file with mode: 0644]
src/patches/openssl-1.0.1e-cryptodev.patch [new file with mode: 0644]
src/patches/openssl-1.0.1e-fix_parallel_build-1.patch [new file with mode: 0644]
src/patches/openssl-1.0.1e-weak-ciphers.patch [new file with mode: 0644]
src/patches/ppp/0003-build-sys-utilize-compiler-flags-handed-to-us-by-rpm.patch [new file with mode: 0644]
src/patches/ppp/0012-pppd-we-don-t-want-to-accidentally-leak-fds.patch [new file with mode: 0644]
src/patches/ppp/0013-everywhere-O_CLOEXEC-harder.patch [new file with mode: 0644]
src/patches/ppp/0014-everywhere-use-SOCK_CLOEXEC-when-creating-socket.patch [new file with mode: 0644]
src/patches/ppp/ppp-2.4.6-increase-max-padi-attempts.patch [new file with mode: 0644]
src/patches/squidclamav-5.11-dont_use_ipv6.patch [new file with mode: 0644]
src/patches/squidclamav-5.11-squid-helper-protocol.patch [new file with mode: 0644]
src/patches/squidguard-1.4-squid-helper-protocol.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 88% similarity]
src/patches/tcpdump-4.0.0-noINET.patch [deleted file]
src/patches/udev-208_remove_systemd_log.patch [new file with mode: 0644]
src/patches/util-linux-2.12r-cramfs-1.patch [deleted file]
src/patches/util-linux-2.12r-umount-no-special.patch [deleted file]
src/patches/util-linux-buildfix.patch [deleted file]
src/patches/vim-7.2-fixes-4.patch [deleted file]
src/patches/vim-7.2-mandir-1.patch [deleted file]
src/patches/wget-1.14-texi2pod-1.patch [new file with mode: 0644]
src/scripts/backupiso
src/scripts/convert-ovpn [new file with mode: 0755]
src/scripts/dialctrl.pl [deleted file]
src/scripts/httpscert
src/scripts/setddns.pl
src/scripts/timezone-transition [new file with mode: 0644]
tools/checknewlog.pl
tools/checkwronginitlinks [moved from lfs/linux-xen with 81% similarity, mode: 0755]
tools/langdiff.pl [new file with mode: 0755]
tools/make-functions

index 206146aa2fd0109795ac9d0f0f0b47a2016ba8a2..7413f56f1f9f964d56ab148b2705cc76ad018c53 100755 (executable)
@@ -18,7 +18,7 @@ case "$1" in
 
        stop)
                boot_mesg "Stopping avahi..."
-               killproc /usr/sbin/avahi-daemon -k
+               /usr/sbin/avahi-daemon -k
                ;;
 
        reload)
index f9b8302af91af7c90c8fa9a8d9a5b63773542613..f4823fcfbde655009d95b59401a19643f99e83e5 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-2014  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        #
@@ -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,6 +64,69 @@ 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");
+
+  # Convert old OpenVPN CCD files (CN change, core 75).
+  system("/usr/local/bin/convert-ovpn");
 }
 elsif ($ARGV[0] eq 'restoreaddon') {
   if ( -e "/tmp/$ARGV[1]" ){system("mv /tmp/$ARGV[1] /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 9b086831142858547b104a20da5841877f995ffc..1d55e4acd4890c2e6606b53659dcbaf50a74003c 100644 (file)
 /etc/ssh/ssh_host*
 /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
@@ -39,3 +35,4 @@
 /root/.gitconfig
 /root/.bash_history
 /var/ipfire/ethernet/aliases
+/var/ipfire/ethernet/wireless
diff --git a/config/backup/includes/icinga b/config/backup/includes/icinga
new file mode 100644 (file)
index 0000000..ecea4e1
--- /dev/null
@@ -0,0 +1 @@
+/etc/icinga
diff --git a/config/backup/includes/igmpproxy b/config/backup/includes/igmpproxy
new file mode 100644 (file)
index 0000000..dc47ad3
--- /dev/null
@@ -0,0 +1 @@
+/etc/igmpproxy.conf
diff --git a/config/backup/includes/keepalived b/config/backup/includes/keepalived
new file mode 100644 (file)
index 0000000..4f4cd67
--- /dev/null
@@ -0,0 +1 @@
+/etc/keepalived/keepalived.conf
diff --git a/config/backup/includes/lcdproc b/config/backup/includes/lcdproc
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/config/backup/includes/mysql b/config/backup/includes/mysql
new file mode 100644 (file)
index 0000000..bcb837c
--- /dev/null
@@ -0,0 +1,2 @@
+/etc/my.cnf
+/srv/mysql
diff --git a/config/backup/includes/postfix b/config/backup/includes/postfix
new file mode 100644 (file)
index 0000000..0354b64
--- /dev/null
@@ -0,0 +1 @@
+/etc/postfix
diff --git a/config/backup/includes/stunnel b/config/backup/includes/stunnel
new file mode 100644 (file)
index 0000000..e5702f1
--- /dev/null
@@ -0,0 +1 @@
+/etc/stunnel/
diff --git a/config/backup/includes/tor b/config/backup/includes/tor
new file mode 100644 (file)
index 0000000..bff4956
--- /dev/null
@@ -0,0 +1,4 @@
+/etc/tor
+/var/ipfire/tor
+/var/lib/tor/fingerprint
+/var/lib/tor/keys
index 38bd82a4426c722b9f2aae3019cf2a3f01e70de1..a2b5d83f06f3a9cd89f4209b491dfcb06381a766 100644 (file)
@@ -1 +1,2 @@
 /etc/vdr
+/etc/sysconfig/vdr
index 3ef13592a04146e42e459207c8baa44cb1187396..fe7a567886198dda072c30316652c5865a6706fb 100644 (file)
@@ -1 +1,2 @@
+/etc/sysconfig/watchdog
 /etc/watchdog.conf
index 9c39ef6a08a779fb6c07f1146d3052d43bf6427b..024449d3019d2703b1f7d9612c4739354c9a64eb 100644 (file)
@@ -1,11 +1,16 @@
 Listen 1009
 
 <VirtualHost *:1009>
-
     DocumentRoot /usr/share/cacti
+
     Include /etc/httpd/conf/conf.d/php*.conf
+
+    Alias /cacti /usr/share/cacti
     <Directory /usr/share/cacti>
         Options FollowSymLinks
         AllowOverride None
     </Directory>
+
+    RewriteEngine on
+    RewriteRule ^/$ /cacti/ [R]
 </VirtualHost>
diff --git a/config/cacti/cacti.logrotate b/config/cacti/cacti.logrotate
new file mode 100644 (file)
index 0000000..3ff4395
--- /dev/null
@@ -0,0 +1,6 @@
+/var/log/cacti/cacti.log {
+       missingok
+       monthly
+       notifempty
+       compress
+}
diff --git a/config/cacti/d.gif b/config/cacti/d.gif
new file mode 100644 (file)
index 0000000..0e958d3
Binary files /dev/null and b/config/cacti/d.gif differ
diff --git a/config/cacti/d.png b/config/cacti/d.png
new file mode 100644 (file)
index 0000000..8540175
Binary files /dev/null and b/config/cacti/d.png differ
diff --git a/config/cacti/throbber.gif b/config/cacti/throbber.gif
new file mode 100644 (file)
index 0000000..5b33f7e
Binary files /dev/null and b/config/cacti/throbber.gif differ
index 08cb36a7c695f17c6177f9646885c618aaf2cd3a..88a38e335da66e1812fe7d19f95aa28ebf3b67f5 100644 (file)
@@ -1,9 +1,9 @@
-#GREEN_PARENT_DEV="eth0"
-#GREEN_VLAN_ID=20
-#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"
-#ORANGE_VLAN_ID=40
-#ORANGE_MAC_ADDRESS="00:33:44:55:66:77"
+GREEN_PARENT_DEV=
+GREEN_VLAN_ID=
+GREEN_MAC_ADDRESS=
+BLUE_PARENT_DEV=
+BLUE_VLAN_ID=
+BLUE_MAC_ADDRESS=
+ORANGE_PARENT_DEV=
+ORANGE_VLAN_ID=
+ORANGE_MAC_ADDRESS=
index a70f2673e6b4751cadb1530b6bd80c3aab5573e9..271dc41dacf52faf380ce53b74383e72af8f95ef 100644 (file)
@@ -39,6 +39,96 @@ 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'}}{'NET'} = "$netsettings{'GREEN_ADDRESS'}";
+       $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'}}{'NET'} = "$netsettings{'RED_ADDRESS'}";
+               $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'}}{'NET'} = "$netsettings{'ORANGE_ADDRESS'}";
+               $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'}}{'NET'} = "$netsettings{'BLUE_ADDRESS'}";
+               $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";
+                       $defaultNetworks->{'IPsec RW (' .$ip."/".$sub.")"}{'NET'} = &getnextip($ip);
+               }
+       }
+}
+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]";
+                       $defaultNetworks->{$temp[2]}{'NET'} = "$temp[0]";
+                       
+                       $ctr++;
+               }
+       }
+}
 
 sub readhash
 {
@@ -139,68 +229,36 @@ sub writehashpart
        close FILE;
 }
 
-sub age
-{
+sub age {
        my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
-               $atime, $mtime, $ctime, $blksize, $blocks) = stat $_[0];
-       my $now = time;
-       my $timestring = '';
-       my $dset = 0;           # Day is set, when > 0
-       my $hset = 0;           # Hour is set, when > 0
-       my $mset = 0;           # Minute is set, when > 0
-
-       my $totalsecs = $now - $mtime;
-       my $days = int($totalsecs / 86400);
-       my $totalhours = int($totalsecs / 3600);
-       my $hours = $totalhours % 24;
-       my $totalmins = int($totalsecs / 60);
-       my $mins = $totalmins % 60;
-       my $secs = $totalsecs % 60;
+               $atime, $mtime, $ctime, $blksize, $blocks) = stat $_[0];
+       my $totalsecs = time() - $mtime;
+       my @s = ();
 
-       if      ($days > 1) { 
-               ${timestring} .= ${days}.' '.$Lang::tr{'days'}.', ';
-               $dset = 1; 
-       }
-       elsif   ($days == 1) { 
-               ${timestring} .= ${days}.' '.$Lang::tr{'day'}.', ';
-               $dset = 1; 
+       my $secs = $totalsecs % 60;
+       $totalsecs /= 60;
+       if ($secs > 0) {
+               push(@s, "${secs}s");
        }
 
-       if      (($hours > 1) && !($dset)) { 
-               ${timestring} .= ${hours}.' '.$Lang::tr{'hours'}.', ';
-               $hset = 1;
-       }
-       elsif   (($hours == 1) && !($dset)) { 
-               ${timestring} .= ${hours}.' '.$Lang::tr{'hour'}.', ';
-               $hset = 1;
-       }
-       elsif ($dset) {
-               ${timestring} .= ${hours}.' '.$Lang::tr{'age shour'}.', ';
-               $hset = 1;
+       my $min = $totalsecs % 60;
+       $totalsecs /= 60;
+       if ($min > 0) {
+               push(@s, "${min}m");
        }
 
-       if      ((($mins > 1) || ($mins == 0)) && !($dset || $hset)) { 
-               ${timestring} .= ${mins}.' '.$Lang::tr{'minutes'}.', ';
-               $mset = 1;
-       }
-       elsif   (($mins == 1) && !($dset || $hset)) { 
-               ${timestring} .= ${mins}.' '.$Lang::tr{'minute'}.', ';
-               $mset = 1;
-       }
-       else {
-               ${timestring} .= ${mins}.' '.$Lang::tr{'age sminute'}.', '; 
-               $mset = 1;
+       my $hrs = $totalsecs % 24;
+       $totalsecs /= 24;
+       if ($hrs > 0) {
+               push(@s, "${hrs}h");
        }
 
-       if      ((($secs > 1) || ($secs == 0)) && !($dset || $hset || $mset)) { 
-               ${timestring} .= ${secs}.' '.$Lang::tr{'age seconds'};
-       }
-       elsif   (($secs == 1) && !($dset || $hset || $mset)) { 
-               ${timestring} .= $secs.' '.$Lang::tr{'age second'};
+       my $days = int($totalsecs);
+       if ($days > 0) {
+               push(@s, "${days}d");
        }
-       else    { ${timestring} .= $secs.' '.$Lang::tr{'age ssecond'}; }
 
-       return ${timestring};
+       return join(" ", reverse(@s));
 }
 
 sub validip
@@ -295,7 +353,7 @@ sub iporsubtodec
        }
        #Subnet already in decimal and valid?
        if ($mask=~/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ &&(($1<=255  && $2<=$1 && $3<=$2  && $4<=$3 )))       {
-               for (my $i=8;$i<=32;$i++){
+               for (my $i=0;$i<=32;$i++){
                        if (&General::cidrtosub($i) eq $mask){
                                if ($full == 0){return $mask;}else{
                                                         return $net."/".$mask;
@@ -304,7 +362,7 @@ sub iporsubtodec
                }       
        }
        #Subnet in binary format?
-       if ($mask=~/^(\d{1,2})$/ && (($1<=32 && $1>=8))){
+       if ($mask=~/^(\d{1,2})$/ && (($1<=32 && $1>=0))){
                        if($full == 0){ return &General::cidrtosub($mask);}else{
                                                 return $net."/".&General::cidrtosub($mask);
                        }
@@ -331,7 +389,7 @@ sub iporsubtocidr
        }
        #Subnet in decimal and valid?
        if ($mask=~/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ &&(($1<=255  && $2<=$1 && $3<=$2  && $4<=$3 )))       {
-               for (my $i=8;$i<=32;$i++){
+               for (my $i=0;$i<=32;$i++){
                        if (&General::cidrtosub($i) eq $mask){
                                if ($full == 0){return &General::subtocidr($mask);}else{
                                                         return $net."/".&General::subtocidr($mask);
@@ -340,7 +398,7 @@ sub iporsubtocidr
                }       
        }
        #Subnet already in binary format?
-       if ($mask=~/^(\d{1,2})$/ && (($1<=32 && $1>=8))){
+       if ($mask=~/^(\d{1,2})$/ && (($1<=32 && $1>=0))){
                        if($full == 0){ return $mask;}else{
                                                 return $net."/".$mask;
                        }
@@ -430,13 +488,13 @@ sub validipandmask
        if ($ccdip=~/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ &&(($1>0 && $1<=255 && $2>=0 && $2<=255 && $3>=0 && $3<=255 && $4<=255 ))) {
                #Subnet in decimal and valid?
                if ($ccdsubnet=~/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ &&(($1<=255  && $2<=$1 && $3<=$2  && $4<=$3 )))  {
-                       for (my $i=8;$i<=32;$i++){
+                       for (my $i=0;$i<=32;$i++){
                                if (&General::cidrtosub($i) eq $ccdsubnet){
                                        return 1;
                                }
-                       }       
+                       }
                #Subnet already in binary format?
-               }elsif ($ccdsubnet=~/^(\d{1,2})$/ && (($1<=32 && $1>=8))){
+               }elsif ($ccdsubnet=~/^(\d{1,2})$/ && (($1<=32 && $1>=0))){
                        return 1;
                }else{
                        return 0;
@@ -448,24 +506,46 @@ sub validipandmask
 
 sub checksubnets
 {
-       my %ccdconfhash=();                     
-       my @ccdconf=();                         
-       my $ccdname=$_[0];                      
-       my $ccdnet=$_[1];                       
+       my %ccdconfhash=();
+       my %ovpnconfhash=();
+       my %vpnconf=();
+       my %ipsecconf=();
+       my %ownnet=();
+       my %ovpnconf=();
+       my @ccdconf=();
+       my $ccdname=$_[0];
+       my $ccdnet=$_[1];
+       my $ownnet=$_[2];
        my $errormessage;
        my ($ip,$cidr)=split(/\//,$ccdnet);
        $cidr=&iporsubtocidr($cidr);
+
        #get OVPN-Subnet (dynamic range)
-       my %ovpnconf=();
        &readhash("${General::swroot}/ovpn/settings", \%ovpnconf);
        my ($ovpnip,$ovpncidr)= split (/\//,$ovpnconf{'DOVPN_SUBNET'});
        $ovpncidr=&iporsubtocidr($ovpncidr);
+
        #check if we try to use same network as ovpn server
        if ("$ip/$cidr" eq "$ovpnip/$ovpncidr") {
                        $errormessage=$errormessage.$Lang::tr{'ccd err isovpnnet'}."<br>";
                        return $errormessage;
        }
-       #check if we use a network-name/subnet that already exists
+
+       #check if we try to use same network as another ovpn N2N
+       if($ownnet ne 'ovpn'){
+               &readhasharray("${General::swroot}/ovpn/ovpnconfig", \%ovpnconfhash);
+               foreach my $key (keys %ovpnconfhash) {
+                       if ($ovpnconfhash{$key}[3] eq 'net'){
+                               my @ovpnnet=split (/\//,$ovpnconfhash{$key}[11]);
+                               if (&IpInSubnet($ip,$ovpnnet[0],&iporsubtodec($ovpnnet[1]))){
+                                       $errormessage=$errormessage.$Lang::tr{'ccd err isovpnn2n'}." $ovpnconfhash{$key}[1] <br>";
+                                       return $errormessage;
+                               }
+                       }
+               }
+       }
+
+       #check if we use a network-name/subnet (static-ovpn) that already exists
        &readhasharray("${General::swroot}/ovpn/ccd.conf", \%ccdconfhash);
        foreach my $key (keys %ccdconfhash) {
                @ccdconf=split(/\//,$ccdconfhash{$key}[1]);
@@ -477,32 +557,45 @@ sub checksubnets
                my ($newip,$newsub) = split(/\//,$ccdnet);
                if (&IpInSubnet($newip,$ccdconf[0],&iporsubtodec($ccdconf[1]))) 
                {
-                       $errormessage=$errormessage.$Lang::tr{'ccd err issubnet'}."<br>";
+                       $errormessage=$errormessage.$Lang::tr{'ccd err issubnet'}." $ccdconfhash{$key}[0]<br>";
                        return $errormessage;
                }
        }
+
        #check if we use a ipsec right network which is already defined
-       my %ipsecconf=();
-       &General::readhasharray("${General::swroot}/vpn/config", \%ipsecconf);
-       foreach my $key (keys %ipsecconf){
-               if ($ipsecconf{$key}[11] ne ''){
-                       my ($ipsecip,$ipsecsub) = split (/\//, $ipsecconf{$key}[11]);
-                       $ipsecsub=&iporsubtodec($ipsecsub);
-                       if($ipsecconf{$key}[1] ne $ccdname){
-                               if ( &IpInSubnet ($ip,$ipsecip,$ipsecsub) ){
-                                       $errormessage=$Lang::tr{'ccd err isipsecnet'}." Name:  $ipsecconf{$key}[1]";
-                                       return $errormessage;
+       if($ownnet ne 'ipsec'){
+               &General::readhasharray("${General::swroot}/vpn/config", \%ipsecconf);
+               foreach my $key (keys %ipsecconf){
+                       if ($ipsecconf{$key}[11] ne ''){
+                               my ($ipsecip,$ipsecsub) = split (/\//, $ipsecconf{$key}[11]);
+                               $ipsecsub=&iporsubtodec($ipsecsub);
+                               if($ipsecconf{$key}[1] ne $ccdname){
+                                       if ( &IpInSubnet ($ip,$ipsecip,$ipsecsub) ){
+                                               $errormessage=$Lang::tr{'ccd err isipsecnet'}." Name:  $ipsecconf{$key}[1]";
+                                               return $errormessage;
+                                       }
                                }
                        }
                }
        }
+
+       #check if we use the ipsec RW Network (if defined)
+       &readhash("${General::swroot}/vpn/settings", \%vpnconf);
+       if ($vpnconf{'RW_NET'} ne ''){
+               my ($ipsecrwnet,$ipsecrwsub)=split (/\//, $vpnconf{'RW_NET'});
+               if (&IpInSubnet($ip,$ipsecrwnet,&iporsubtodec($ipsecrwsub)))
+               {
+                       $errormessage=$errormessage.$Lang::tr{'ccd err isipsecrw'}."<br>";
+                       return $errormessage;
+               }
+       }
+
        #check if we use one of ipfire's networks (green,orange,blue)
-       my %ownnet=();
        &readhash("${General::swroot}/ethernet/settings", \%ownnet);
-       if (($ownnet{'GREEN_NETADDRESS'}        ne '' && $ownnet{'GREEN_NETADDRESS'}    ne '0.0.0.0') && &IpInSubnet($ownnet{'GREEN_NETADDRESS'},$ip,&iporsubtodec($cidr))){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;}
-       if (($ownnet{'ORANGE_NETADDRESS'}       ne '' && $ownnet{'ORANGE_NETADDRESS'}   ne '0.0.0.0') && &IpInSubnet($ownnet{'ORANGE_NETADDRESS'},$ip,&iporsubtodec($cidr))){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;}
-       if (($ownnet{'BLUE_NETADDRESS'}         ne '' && $ownnet{'BLUE_NETADDRESS'}     ne '0.0.0.0') && &IpInSubnet($ownnet{'BLUE_NETADDRESS'},$ip,&iporsubtodec($cidr))){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;}
-       if (($ownnet{'RED_NETADDRESS'}          ne '' && $ownnet{'RED_NETADDRESS'}              ne '0.0.0.0') && &IpInSubnet($ownnet{'RED_NETADDRESS'},$ip,&iporsubtodec($cidr))){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;}
+       if (($ownnet{'GREEN_NETADDRESS'}        ne '' && $ownnet{'GREEN_NETADDRESS'}    ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'GREEN_NETADDRESS'},&iporsubtodec($ownnet{'GREEN_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;}
+       if (($ownnet{'ORANGE_NETADDRESS'}       ne '' && $ownnet{'ORANGE_NETADDRESS'}   ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'ORANGE_NETADDRESS'},&iporsubtodec($ownnet{'ORANGE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;}
+       if (($ownnet{'BLUE_NETADDRESS'}         ne '' && $ownnet{'BLUE_NETADDRESS'}     ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'BLUE_NETADDRESS'},&iporsubtodec($ownnet{'BLUE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;}
+       if (($ownnet{'RED_NETADDRESS'}          ne '' && $ownnet{'RED_NETADDRESS'}              ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'RED_NETADDRESS'},&iporsubtodec($ownnet{'RED_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err red'};return $errormessage;}
 }
 
 
@@ -857,13 +950,14 @@ sub FetchPublicIp {
         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'} );
     }
-    my ($out, $response) = Net::SSLeay::get_http(  'checkip.dyndns.org',
+    my $user_agent = &MakeUserAgent();
+    my ($out, $response) = Net::SSLeay::get_http(  'checkip4.dns.lightningwirelabs.com',
                                                    80,
                                                    "/",
-                                                   Net::SSLeay::make_headers('User-Agent' => 'IPFire' )
+                                                   Net::SSLeay::make_headers('User-Agent' => $user_agent )
                                                );
     if ($response =~ m%HTTP/1\.. 200 OK%) {
-       $out =~ /Current IP Address: (\d+.\d+.\d+.\d+)/;
+       $out =~ /Your IP address is: (\d+.\d+.\d+.\d+)/;
        return $1;
     }
     return '';
@@ -919,9 +1013,11 @@ sub GetDyndnsRedIP {
     close(IP);
     chomp $ip;
 
+    # 100.64.0.0/10 is reserved for dual-stack lite (http://tools.ietf.org/html/rfc6598).
     if (&General::IpInSubnet ($ip,'10.0.0.0','255.0.0.0') ||
         &General::IpInSubnet ($ip,'172.16.0.0.','255.240.0.0') ||
-        &General::IpInSubnet ($ip,'192.168.0.0','255.255.0.0'))
+        &General::IpInSubnet ($ip,'192.168.0.0','255.255.0.0') ||
+        &General::IpInSubnet ($ip,'100.64.0.0', '255.192.0.0'))
     {
        if ($settings{'BEHINDROUTER'} eq 'FETCH_IP') {
            my $RealIP = &General::FetchPublicIp;
@@ -978,6 +1074,95 @@ sub GetIcmpDescription ($) {
     'SKIP',
     'Photur',                          #40
     'Experimental');
-    if ($index>41) {return 'unknown'} else {return @icmp_description[$index]};
+    if ($index>41) {return 'unknown'} else {return $icmp_description[$index]};
+}
+
+sub GetCoreUpdateVersion() {
+       my $core_update;
+
+       open(FILE, "/opt/pakfire/db/core/mine");
+       while (<FILE>) {
+               $core_update = $_;
+               last;
+       }
+       close(FILE);
+
+       return $core_update;
+}
+
+sub MakeUserAgent() {
+       my $user_agent = "IPFire/$General::version";
+
+       my $core_update = &GetCoreUpdateVersion();
+       if ($core_update ne "") {
+               $user_agent .= "/$core_update";
+       }
+
+       return $user_agent;
+}
+
+sub RedIsWireless() {
+       # This function checks if a network device is a wireless device.
+
+       my %settings = ();
+       &readhash("${General::swroot}/ethernet/settings", \%settings);
+
+       # Find the name of the network device.
+       my $device = $settings{'RED_DEV'};
+
+       # Exit, if no device is configured.
+       return 0 if ($device eq "");
+
+       # Return 1 if the device is a wireless one.
+       my $path = "/sys/class/net/$device/wireless";
+       if (-d $path) {
+               return 1;
+       }
+
+       # Otherwise return zero.
+       return 0;
 }
+
+# Function to read a file with UTF-8 charset.
+sub read_file_utf8 ($) {
+       my ($file) = @_;
+
+       open my $in, '<:encoding(UTF-8)', $file or die "Could not open '$file' for reading $!";
+       local $/ = undef;
+       my $all = <$in>;
+       close $in;
+
+       return $all;
+}
+
+# Function to write a file with UTF-8 charset.
+sub write_file_utf8 ($) {
+       my ($file, $content) = @_;
+
+       open my $out, '>:encoding(UTF-8)', $file or die "Could not open '$file' for writing $!";;           
+       print $out $content;
+       close $out;
+
+       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..487a4dd932a87468e250422e551b4d1bb94dbec4 100644 (file)
@@ -92,8 +92,8 @@ sub makegraphbox {
        print "<a href='".$_[0]."?".$_[1]."?month' target='".$_[1]."box'><b>".$Lang::tr{'month'}."</b></a>";
        print " - ";
        print "<a href='".$_[0]."?".$_[1]."?year' target='".$_[1]."box'><b>".$Lang::tr{'year'}."</b></a>";
+       print "<br></center>";
        print "<iframe src='".$_[0]."?".$_[1]."?".$_[2]."' width='".$width."' height='".$height."' scrolling='no' frameborder='no' marginheight='0' name='".$_[1]."box'></iframe>";
-       print "</center>";
 }
 
 # Generate the CPU Graph for the current period of time for values given by
@@ -422,12 +422,15 @@ sub updateprocessescpugraph {
 
                push(@command,"COMMENT:".$Lang::tr{'caption'}."\\j");
 
+               my $colorIndex = 0;
                foreach(@processesgraph){
+                       my $colorIndex = 10 + $count % 15;
+                       my $color="$color{\"color$colorIndex\"}";
                        chomp($_);my @name=split(/\-/,$_);chop($name[1]);
                        if ($count eq "0"){
-                               push(@command,"AREA:".$name[1].random_hex_color(6)."A0:".$name[1]);
+                               push(@command,"AREA:".$name[1].$color."A0:".$name[1]);
                        }else{
-                               push(@command,"STACK:".$name[1].random_hex_color(6)."A0:".$name[1]);
+                               push(@command,"STACK:".$name[1].$color."A0:".$name[1]);
                        }
                        $count++;
                }
@@ -471,12 +474,15 @@ sub updateprocessesmemorygraph {
 
                push(@command,"COMMENT:".$Lang::tr{'caption'}."\\j");
 
+               my $colorIndex = 0;
                foreach(@processesgraph){
                        chomp($_);my @name=split(/\-/,$_);chop($name[1]);
+                       my $colorIndex = 10 + $count % 15;
+                       my $color="$color{\"color$colorIndex\"}";
                        if ($count eq "0"){
-                               push(@command,"AREA:".$name[1].random_hex_color(6)."A0:".$name[1]);
+                               push(@command,"AREA:".$name[1].$color."A0:".$name[1]);
                        }else{
-                               push(@command,"STACK:".$name[1].random_hex_color(6)."A0:".$name[1]);
+                               push(@command,"STACK:".$name[1].$color."A0:".$name[1]);
                        }
                        $count++;
                }
@@ -602,22 +608,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",
@@ -968,17 +989,18 @@ sub updateqosgraph {
                @classes = <FILE>;
                close FILE;
 
+               my $colorIndex = 0;
                foreach $classentry (sort @classes){
                        @classline = split( /\;/, $classentry );
                        if ( $classline[0] eq $qossettings{'DEV'} ){
-                               $color=random_hex_color(6);
+                               my $colorIndex = 10 + $count % 15;
+                               $color="$color{\"color$colorIndex\"}";
                                push(@command, "DEF:$classline[1]=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE");
 
                                if ($count eq "1") {
-                                       push(@command, "AREA:$classline[1]$color:Klasse $classline[1] -".sprintf("%15s",$classline[8]));
+                                       push(@command, "AREA:$classline[1]$color:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8]));
                                } else {
-                                       push(@command, "STACK:$classline[1]$color:Klasse $classline[1] -".sprintf("%15s",$classline[8]));
-
+                                       push(@command, "STACK:$classline[1]$color:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8]));
                                }
 
                                push(@command, "GPRINT:$classline[1]:MAX:%8.1lf %sBps"
@@ -1099,3 +1121,36 @@ sub getprocesses {
        my @processesgraph = `ls -dA $mainsettings{'RRDLOG'}/collectd/localhost/processes-*/ 2>/dev/null`;
        return @processesgraph;
 }
+
+sub updateentropygraph {
+       my $period    = $_[0];
+       my @command = (
+               "-",
+               "--start",
+               "-1".$period,
+               "-aPNG",
+               "-i",
+               "-z",
+               "-W www.ipfire.org",
+               "--alt-y-grid",
+               "-w 600",
+               "-h 225",
+               "-r",
+               "--lower-limit","0",
+               "-t $Lang::tr{'entropy'}",
+               "-v $Lang::tr{'bit'}",
+               "DEF:entropy=$mainsettings{'RRDLOG'}/collectd/localhost/entropy/entropy.rrd:entropy:AVERAGE",
+               "LINE3:entropy#ff0000:" . sprintf("%-15s", $Lang::tr{'entropy'}),
+               "VDEF:entrmin=entropy,MINIMUM",
+               "VDEF:entrmax=entropy,MAXIMUM",
+               "VDEF:entravg=entropy,AVERAGE",
+               "GPRINT:entrmax:" . sprintf("%12s\\: %%5.0lf", $Lang::tr{'maximum'}),
+               "GPRINT:entrmin:" . sprintf("%12s\\: %%5.0lf", $Lang::tr{'minimum'}),
+               "GPRINT:entravg:" . sprintf("%12s\\: %%5.0lf", $Lang::tr{'average'}) . "\\n",
+       );
+
+       RRDs::graph (@command);
+       $ERROR = RRDs::error;
+
+       print "Error in RRD::graph for entropy: ".$ERROR."\n" if $ERROR;
+}
index 0f10bf9f863b843cd70128a0a275cde218cb0101..d90086d3822b8e6755c8af0e9325de0a91cd5674 100644 (file)
@@ -12,6 +12,8 @@
 package Header;
 
 use CGI();
+use File::Basename;
+use HTML::Entities();
 use Socket;
 use Time::Local;
 
@@ -43,6 +45,7 @@ my %menuhash = ();
 my $menu = \%menuhash;
 %settings = ();
 %ethsettings = ();
+%pppsettings = ();
 @URI = ();
 
 ### Make sure this is an SSL request
@@ -55,6 +58,7 @@ if ($ENV{'SERVER_ADDR'} && $ENV{'HTTPS'} ne 'on') {
 ### Initialize environment
 &General::readhash("${swroot}/main/settings", \%settings);
 &General::readhash("${swroot}/ethernet/settings", \%ethsettings);
+&General::readhash("${swroot}/ppp/settings", \%pppsettings);
 $language = $settings{'LANGUAGE'};
 $hostname = $settings{'HOSTNAME'};
 $hostnameintitle = 0;
@@ -87,18 +91,11 @@ 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);
-};
+our $THEME_NAME = $settings{'THEME'};
 
 require "${swroot}/langs/en.pl";
 require "${swroot}/langs/${language}.pl";
-eval `/bin/cat /srv/web/ipfire/html/themes/$settings{'THEME'}/include/functions.pl`;
+eval `/bin/cat /srv/web/ipfire/html/themes/$THEME_NAME/include/functions.pl`;
 
 sub orange_used () {
     if ($ethsettings{'CONFIG_TYPE'} =~ /^[24]$/) {
@@ -148,21 +145,25 @@ 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;
     }
+
+    if (&General::RedIsWireless()) {
+        $menu->{'01.system'}{'subMenu'}->{'21.wlan'}{'enabled'} = 1;
+    }
+
+    if ( $ethsettings{'RED_TYPE'} eq "PPPOE" && $pppsettings{'MONPORT'} ne "" ) {
+        $menu->{'02.status'}{'subMenu'}->{'74.modem-status'}{'enabled'} = 1;
+    }
 }
 
 sub showhttpheaders
 {
        print "Cache-control: private\n";
-       print "Connection: close\n";
        print "Content-type: text/html; charset=UTF-8\n\n";
 }
 
@@ -301,16 +302,16 @@ sub IpInSubnet
     return (($ip >= $start) && ($ip <= $end));
 }
 
-sub cleanhtml
-{
+sub escape($) {
+       my $s = shift;
+       return HTML::Entities::encode_entities($s);
+}
+
+sub cleanhtml {
        my $outstring =$_[0];
        $outstring =~ tr/,/ / if not defined $_[1] or $_[1] ne 'y';
-       $outstring =~ s/&/&amp;/g;
-       $outstring =~ s/\'/&#039;/g;
-       $outstring =~ s/\"/&quot;/g; #" This is just a workaround for the syntax highlighter
-       $outstring =~ s/</&lt;/g;
-       $outstring =~ s/>/&gt;/g;
-       return $outstring;
+
+       return escape($outstring);
 }
 
 sub connectionstatus
@@ -371,16 +372,16 @@ sub PrintActualLeases
 {
     &openbox('100%', 'left', $tr{'current dynamic leases'});
     print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
 <tr>
-<td width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IPADDR'><b>$tr{'ip address'}</b></a></td>
-<td width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?ETHER'><b>$tr{'mac address'}</b></a></td>
-<td width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?HOSTNAME'><b>$tr{'hostname'}</b></a></td>
-<td width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?ENDTIME'><b>$tr{'lease expires'} (local time d/m/y)</b></a></td>
-<td width='5%' align='center'><b>Add to fix leases<b></td>
+<th width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IPADDR'><b>$tr{'ip address'}</b></a></th>
+<th width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?ETHER'><b>$tr{'mac address'}</b></a></th>
+<th width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?HOSTNAME'><b>$tr{'hostname'}</b></a></th>
+<th width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?ENDTIME'><b>$tr{'lease expires'} (local time d/m/y)</b></a></th>
+<th width='5%' align='center'><b>Add to fix leases<b></th>
 </tr>
 END
-    ;
+;
 
     open(LEASES,"/var/state/dhcp/dhcpd.leases") or die "Can't open dhcpd.leases";
     while ($line = <LEASES>) {
@@ -422,24 +423,27 @@ END
     close(LEASES);
 
     my $id = 0;
+    my $col="";
     foreach my $key (sort leasesort keys %entries) {
        print "<form method='post' action='/cgi-bin/dhcp.cgi'>\n";
        my $hostname = &cleanhtml($entries{$key}->{HOSTNAME},"y");
 
        if ($id % 2) {
-           print "<tr bgcolor='$table1colour'>"; 
+           print "<tr>";
+           $col="bgcolor='$table1colour'";
        }
        else {
-           print "<tr bgcolor='$table2colour'>"; 
+           print "<tr>";
+           $col="bgcolor='$table2colour'";
        }
 
        print <<END
-<td align='center'><input type='hidden' name='FIX_ADDR' value='$entries{$key}->{IPADDR}' />$entries{$key}->{IPADDR}</td>
-<td align='center'><input type='hidden' name='FIX_MAC' value='$entries{$key}->{ETHER}' />$entries{$key}->{ETHER}</td>
-<td align='center'><input type='hidden' name='FIX_REMARK' value='$hostname' />&nbsp;$hostname</td>
-<td align='center'><input type='hidden' name='FIX_ENABLED' value='on' />
+<td align='center' $col><input type='hidden' name='FIX_ADDR' value='$entries{$key}->{IPADDR}' />$entries{$key}->{IPADDR}</td>
+<td align='center' $col><input type='hidden' name='FIX_MAC' value='$entries{$key}->{ETHER}' />$entries{$key}->{ETHER}</td>
+<td align='center' $col><input type='hidden' name='FIX_REMARK' value='$hostname' />&nbsp;$hostname</td>
+<td align='center' $col><input type='hidden' name='FIX_ENABLED' value='on' />
 END
-       ;
+;
 
        ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $dst) = localtime ($entries{$key}->{ENDTIME});
        $enddate = sprintf ("%02d/%02d/%d %02d:%02d:%02d",$mday,$mon+1,$year+1900,$hour,$min,$sec);
@@ -450,10 +454,10 @@ END
            print "$enddate";
        }
        print <<END
-<td><input type='hidden' name='ACTION' value='$Lang::tr{'add'}2' /><input type='submit' name='SUBMIT' value='$Lang::tr{'add'}' />
-</td></td></tr></form>
+</td><td $col><input type='hidden' name='ACTION' value='$Lang::tr{'add'}2' /><input type='submit' name='SUBMIT' value='$Lang::tr{'add'}' />
+</td></tr></form>
 END
-       ;
+;
        $id++;
     }
 
diff --git a/config/cfgroot/modem-lib.pl b/config/cfgroot/modem-lib.pl
new file mode 100644 (file)
index 0000000..5d43cc1
--- /dev/null
@@ -0,0 +1,286 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2014 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/>.       #
+#                                                                             #
+###############################################################################
+
+use Device::Modem;
+
+package Modem;
+
+sub new() {
+       my $class = shift;
+
+       my $port = shift;
+       my $baud = shift;
+
+       my $self = {};
+       bless $self, $class;
+
+       # Initialize the connetion to the modem.
+       my $ret = $self->_initialize($port, $baud);
+       if ($ret) {
+               return undef;
+       }
+
+       if ($self->_is_working()) {
+               return $self;
+       }
+
+       return undef;
+}
+
+sub DESTROY() {
+       my $self = shift;
+
+       # Close connection to modem.
+       if ($self->{modem}) {
+               $self->{modem}->close();
+       }
+}
+
+sub _initialize() {
+       my ($self, $port, $baud) = @_;
+
+       # Check if the character device actually exists.
+       if (! -c $port) {
+               return 1;
+       }
+
+       # Establish connection to the modem.
+       $self->{modem} = new Device::Modem(port => $port);
+       $self->{modem}->connect(baudrate => $baud);
+
+       return 0;
+}
+
+sub _is_working() {
+       my $self = shift;
+
+       # Check if the modem responds to AT commands.
+       $self->{modem}->atsend("AT\r\n");
+
+       my $response = $self->{modem}->answer();
+       return ($response eq "OK");
+}
+
+sub _command() {
+       my $self = shift;
+       my $cmd  = shift;
+
+       # Terminate the AT command with newline.
+       $cmd .= "\r\n";
+
+       $self->{modem}->atsend($cmd);
+
+       my $response = $self->{modem}->answer();
+       my @response = split(/\n/, $response);
+
+       # Trim leading and trailing spaces.
+       foreach my $line (@response) {
+               $line =~ s/^\s+|\s+$//g;
+               chomp($line);
+       }
+
+       my $last_element = pop(@response);
+       unless ($last_element eq "OK") {
+               push(@response, $last_element);
+       }
+
+       $response = join("\n", @response);
+
+       return $self->_trim($response);
+}
+
+sub _trim() {
+       my $self = shift;
+       my $input = shift;
+
+       my $first_char = substr($input, 0, 1);
+       if ($first_char eq "+") {
+               my @output = split(/:/, $input);
+               if ($#output == 1) {
+                       return $output[1];
+               }
+       }
+
+       return $input;
+}
+
+sub get_vendor() {
+       my $self = shift;
+
+       return $self->_command("AT+GMI");
+}
+
+sub get_model() {
+       my $self = shift;
+
+       return $self->_command("AT+GMM");
+}
+
+sub get_software_version() {
+       my $self = shift;
+
+       return $self->_command("AT+GMR");
+}
+
+sub get_imei() {
+       my $self = shift;
+
+       return $self->_command("AT+GSN");
+}
+
+sub get_capabilities() {
+       my $self = shift;
+
+       my $output = $self->_command("AT+GCAP");
+       return split(/,/, $output);
+}
+
+sub is_sim_unlocked() {
+       my $self = shift;
+
+       # TODO
+       return 1;
+}
+
+sub get_sim_imsi() {
+       my $self = shift;
+
+       if ($self->is_sim_unlocked()) {
+               return $self->_command("AT+CIMI");
+       }
+}
+
+sub get_network_registration() {
+       my $self = shift;
+
+       my @elements;
+       foreach my $i ([0, 1]) {
+               my $output = $self->_command("AT+CREG?");
+
+               @elements = split(/,/, $output);
+               if ($#elements != 2) {
+                       # Output in wrong format. Resetting.
+                       $self->_command("AT+CREG=0");
+               }
+       }
+
+       if ($elements[0] == 0) {
+               if ($elements[1] == 0) {
+                       return "NOT REGISTERED, NOT SEARCHING";
+               } elsif ($elements[1] == 1) {
+                       return "REGISTERED TO HOME NETWORK";
+               } elsif ($elements[1] == 2) {
+                       return "NOT REGISTERED, SEARCHING";
+               } elsif ($elements[1] == 3) {
+                       return "REGISTRATION DENIED";
+               } elsif ($elements[1] == 5) {
+                       return "REGISTERED, ROAMING";
+               } else {
+                       return "UNKNOWN";
+               }
+       }
+}
+
+sub _get_network_operator() {
+       my $self = shift;
+
+       my $output = $self->_command("AT+COPS?");
+       $output =~ s/\"//g;
+
+       my @elements = split(/,/, $output);
+       if ($#elements == 3) {
+               return @elements;
+       }
+}
+
+sub get_network_operator() {
+       my $self = shift;
+
+       my ($mode, $format, $operator, $act) = $self->_get_network_operator();
+
+       return $operator;
+}
+
+sub get_network_mode() {
+       my $self = shift;
+
+       my ($mode, $format, $operator, $act) = $self->_get_network_operator();
+
+       if ($act == 0) {
+               return "GSM";
+       } elsif ($act == 1) {
+               return "Compact GSM";
+       } elsif ($act == 2) {
+               return "UMTS";
+       } elsif ($act == 3) {
+               return "GSM WITH EGPRS";
+       } elsif ($act == 4) {
+               return "UMTS WITH HSDPA";
+       } elsif ($act == 5) {
+               return "UMTS WITH HSUPA";
+       } elsif ($act == 6) {
+               return "UMTS WITH HSDPA+HSUPA";
+       } elsif ($act == 7) {
+               return "LTE";
+       } else {
+               return "UNKNOWN ($act)";
+       }
+}
+
+sub _get_signal_quality() {
+       my $self = shift;
+
+       my $output = $self->_command("AT+CSQ");
+
+       my @elements = split(/,/, $output);
+       if ($#elements == 1) {
+               return @elements;
+       }
+}
+
+sub get_signal_quality() {
+       my $self = shift;
+
+       my ($rssi, $ber) = $self->_get_signal_quality();
+
+       # 99 equals unknown.
+       unless ($rssi == 99) {
+               my $dbm = ($rssi * 2) - 113;
+               return $dbm;
+       }
+
+       return undef;
+}
+
+sub get_bit_error_rate() {
+       my $self = shift;
+
+       my ($rssi, $ber) = $self->_get_signal_quality();
+
+       # 99 indicates unknown.
+       unless ($ber == 99) {
+               return $ber;
+       }
+
+       return undef;
+}
+
+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 5fe3446c6176ade7b7bda41f5cc79b810623aaf8..d5164fd63545c3c06d1cbb69c49d57674d0f1bb3 100644 (file)
@@ -11,7 +11,7 @@ GOZILLA,Go!Zilla,(Go!Zilla)
 GOOGLE,Google Toolbar,(Google\sToolbar)
 JAVA,Java,(Java)
 KONQUEROR,Konqueror,(Konqueror)
-LIBWWWPERL,libwww-perl,(libww-perl)
+LIBWWWPERL,libwww-perl,(libwww-perl)
 LYNX,Lynx,(Lynx)
 MSIE,Internet Explorer,(MSIE.*[)]$)
 NETSCAPE,Netscape,(^Mozilla\/4.[7|8])|(Netscape)
index 67d9e19054da255ef327cd036496fed18f2b1411..61327bf6c04f1b642c45d1db81aef61187e87f99 100644 (file)
@@ -15,6 +15,7 @@ ReadThreads  1
 LoadPlugin cpu
 #LoadPlugin cpufreq
 LoadPlugin disk
+LoadPlugin entropy
 LoadPlugin interface
 LoadPlugin iptables
 LoadPlugin load
@@ -45,10 +46,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>
index ad90b07ca9af33eeaaac587b8f4d94c8bc53dea3..92c3a78ba74cf9267daaadd49d2bd6c5d362877b 100644 (file)
@@ -50,11 +50,12 @@ HOME=/
 %weekly  * 3-5   /var/ipfire/updatexlrator/autocheck/cron.weekly
 %monthly * 3-5 * /var/ipfire/updatexlrator/autocheck/cron.monthly
 
-# Reset Dialup Statistics
-&bootrun 0 0 1 * *     /usr/local/bin/dialctrl.pl reset
-
 # fireinfo
 %nightly,random * 23-4 /usr/bin/sendprofile >/dev/null 2>&1
 
 # pakfire
 %nightly,random * 23-4 /usr/local/bin/pakfire update >/dev/null 2>&1
+
+# Re-read firewall rules every Sunday in March, October and November to take care of daylight saving time
+00 3 * 3 0          /usr/local/bin/timezone-transition /usr/local/bin/firewallctrl
+00 2 * 10-11 0      /usr/local/bin/timezone-transition /usr/local/bin/firewallctrl
index 4860d6f9444d502d90c9c201717e97ba25c7d3a1..0cd30ebe9b604d3bab63cbdde753a20f23e52eee 100644 (file)
@@ -5,10 +5,5 @@ DEVICE1        /boot   ext2    defaults        1       2
 DEVICE2         swap   swap    pri=1   0       0
 DEVICE3        /       FSTYPE  defaults        1       1
 DEVICE4        /var    FSTYPE  defaults        1       1
-proc   /proc   proc    defaults        0       0
-sysfs  /sys    sysfs   defaults        0       0
-devpts /dev/pts        devpts   gid=4,mode=620  0     0
-#none  /tmp            tmpfs   defaults        0       0
 none   /var/log/rrd    tmpfs   defaults,size=64M       0       0
 none   /var/lock       tmpfs   defaults,size=8M        0       0
-none   /var/run        tmpfs   defaults,size=2M        0       0
index 46e4b80295050eac06d90e8236fdba485152ad01..ab5f4af51175d8bf75c5ed6cc9760fbf3d6fbbfe 100644 (file)
@@ -10,7 +10,7 @@ kmem:x:9:
 wheel:x:10:root
 mail:x:12:mail
 uucp:x:14:
-dialout:x:16:
+dialout:x:16:nobody
 floppy:x:19:
 tape:x:20:
 utmp:x:22:
index ea5ae9902d24bce03fe6303c2c62d58d2010a0a6..5f7d0a6c743564810169f96104cea2107c376fb7 100644 (file)
@@ -19,7 +19,7 @@ ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
 
 su:S016:once:/sbin/sulogin
 
-1:2345:respawn:/sbin/agetty tty1 9600
+1:2345:respawn:/sbin/agetty tty1 9600 --noclear
 2:2345:respawn:/sbin/agetty tty2 9600
 3:2345:respawn:/sbin/agetty tty3 9600
 4:2345:respawn:/sbin/agetty tty4 9600
index ebc82d55cc91433555d5bdff3b07909c59e41561..0c2527ca39e4bcaf0d02a5065db88279f0a1cae6 100644 (file)
@@ -8,6 +8,7 @@ mysql:x:41:41:MySQL Server:/dev/null:/bin/false
 ftp:x:45:45:anonymous_user:/home/ftp:/bin/false
 vsftpd:x:47:47:vsftpd User:/home/ftp:/bin/false
 rsyncd:x:48:48:rsyncd Daemon:/home/rsync:/bin/false
+stunnel:x:51:51:stunnel Daemon:/var/lib/stunnel:/bin/false
 sshd:x:74:74:sshd:/var/empty:/bin/false
 nobody:x:99:99:Nobody:/home/nobody:/bin/false
 postfix:x:100:100::/var/spool/postfix:/bin/false
index df3ef5f96a08543d78d93abe1adade575766e0a2..e2e3d81b032ab1877e6c76e0136b8be165b23775 100644 (file)
@@ -1,7 +1,10 @@
 net.ipv4.ip_forward = 1
 net.ipv4.ip_dynaddr = 1
+
 net.ipv4.icmp_echo_ignore_broadcasts = 1
 net.ipv4.icmp_ignore_bogus_error_responses = 1
+net.ipv4.icmp_ratelimit = 1000
+net.ipv4.icmp_ratemask = 6168
 
 net.ipv4.tcp_syncookies = 1
 net.ipv4.tcp_fin_timeout = 30
@@ -28,3 +31,6 @@ vm.min_free_kbytes = 8192
 # Disable IPv6 by default.
 net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.default.disable_ipv6 = 1
+
+# Enable netfilter accounting
+net.netfilter.nf_conntrack_acct=1
diff --git a/config/firewall/convert-dmz b/config/firewall/convert-dmz
new file mode 100755 (executable)
index 0000000..7b77045
--- /dev/null
@@ -0,0 +1,202 @@
+#!/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';
+
+if (! -e "$dmzconfig") {
+       print "DMZ config file not found. Exiting!\n";
+       exit(1);
+}
+
+if (! -s "$dmzconfig") {
+       print "Empty DMZ configuration file. Nothing to do. Exiting...\n";
+       exit(0);
+}
+
+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] = $field12;
+               $configfwdfw{$key}[9] = '';
+               $configfwdfw{$key}[10] = '';
+               $configfwdfw{$key}[11] = $field11;
+               $configfwdfw{$key}[12] = '';
+               $configfwdfw{$key}[13] = '';
+               $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,,$field12,,,$field11,,,$field14,$field15,$field16,,,,,,,,,,$field26,$field27,$field28,$field29,$field30,$field31\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..c917f84
--- /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';
+require "${General::swroot}/lang.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 2>/dev/null);
+my @macgroups = qx(ls $macgrouppath 2>/dev/null);
+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 = ();
+my @active= ('Aktiv', 'aktiv', 'Active', 'Activo', 'Actif', 'Actief', 'Aktywne', 'Активен', 'Aktif');
+&General::readhash("${General::swroot}/ovpn/settings", \%ovpnSettings);
+&General::readhash("${General::swroot}/ethernet/settings", \%ownnet);
+
+if (-e "$outfwsettings") {
+       &General::readhash($outfwsettings,\%outsettings);
+}
+else
+{
+       print "Config file for outgoing-firewall not found. Exiting!\n";
+       exit(1);
+}
+
+if (! -s "$outfwsettings") {
+        print "Empty DMZ configuration file. Nothing to do. Exiting...\n";
+        #Fill the firewall settings file
+       open (SETTINGS, ">/var/ipfire/firewall/settings");
+       print SETTINGS "POLICY=MODE2\n";
+       print SETTINGS "POLICY1=MODE2\n";
+       close (SETTINGS);
+        exit(0);
+}
+
+#ONLY RUN if /var/ipfire/outgoing exists
+if ( -d "/var/ipfire/outgoing"){
+       &process_groups;
+       &process_rules;
+       &process_p2p;
+}
+else
+{
+       print "/var/ipfire/outgoing not found. Exiting!\n";
+       exit 1
+}
+
+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") or die 'Unable to open config file.';
+               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
+       my $mac2;
+       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] = '';
+                                       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;
+                                       $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] = '';
+                                               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;
+                                       $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;
+                               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 ";
+                               $mac2=$mac;
+                               $mac2 =~ s/:/-/g;
+                               $name2=$name.$mac2;
+                               $name3="Custom Host";
+                               $hosts{$key}[0] = $name2;
+                               $hosts{$key}[1] = $type;
+                               $hosts{$key}[2] = $mac;
+                               print LOG "->Host (MAC) $mac added to custom hosts\n";
+                       }else{
+                               $mac2=mac;
+                               $mac2 =~ s/:/-/g;
+                               print LOG "->Host (MAC) $mac already exists in custom hosts \n";
+                               $name="host ";
+                               $name2=$name.$mac2;
+                               $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;
+                               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)
+       {
+               &General::readhasharray($fwdfwconfig,\%fwconfig);
+               &General::readhasharray($outfwconfig,\%fwconfigout);
+               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 = '';}
+                       #find all "active" tags in all language files and check them against the old config
+                       my $logging='0';
+                       foreach (@active){
+                               $logging='1' if ($_ eq $configline[9]);
+                       }
+                       if($logging eq '1' ){ $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='ipfire_src';
+                               $source='RED1';
+                               &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 '' && $configline[7] ne '0.0.0.0'){
+                               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";
+               }
+               my $check;
+               my $chain;
+               foreach my $protocol (@prot){
+                       my $now=localtime;
+                       if ($source eq 'RED1'){
+                               $chain='OUTGOINGFW';
+                       }else{
+                               $chain='FORWARDFW';
+                       }
+                       $protocol=uc($protocol);
+                       print LOG "$now -> Converted: $action,$chain,$active,$grp1,$source,$grp2,$target,,$protocol,,,$useport,,,$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,$protocol,$useport,$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}[8],$fwconfig{$key}[11],$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'){
+                               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}[8] = $protocol;
+                                       $fwconfig{$key}[11] = $useport;
+                                       $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';
+                                       &General::writehasharray($fwdfwconfig,\%fwconfig);
+                               }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}[8]   = $protocol;
+                                       $fwconfigout{$key}[11]  = $useport;
+                                       $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($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] = '';
+                       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";
+                       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");
+       chown 99, 99, '/var/ipfire/firewall/p2protocols';
+}
diff --git a/config/firewall/convert-portfw b/config/firewall/convert-portfw
new file mode 100755 (executable)
index 0000000..8660e7c
--- /dev/null
@@ -0,0 +1,176 @@
+#!/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 (! -e "$portfwconfig") {
+        print "Config file for portforward not found. Exiting!\n";
+        exit(1);
+}
+
+if (! -s "$portfwconfig") {
+        print "Empty portforward configuration file. Nothing to do. Exiting...\n";
+        exit(0);
+}
+
+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='Default IP';
+               }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,,$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,*,$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,$dummy,$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}[7],$nat{$key}[8],$nat{$key}[11],$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}[7],$nat{$key}[8],$nat{$key}[11],$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'){
+                       if ( $prot eq 'GRE'){
+                               $tgt_port='';
+                               $tgt_port1='';
+                               $use_port='';
+                               $ipfireport='';
+                               $use_prot='';
+                       }
+                       $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}[7]  = $dummy;
+                       $nat{$id}[8]  = $prot;
+                       $nat{$id}[11] = $use_port;
+                       $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..d11e09c
--- /dev/null
@@ -0,0 +1,152 @@
+#!/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';
+
+if (! -e "$xtaccessconfig") {
+        print "Config file for external access not found. Exiting!\n";
+        exit(1);
+}
+
+if (! -s "$xtaccessconfig") {
+        print "Empty external access configuration file. Nothing to do. Exiting...\n";
+        exit(0);
+}
+
+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] = $field12;
+       $configinputfw{$key}[9] = '';
+       $configinputfw{$key}[10] = '';
+       $configinputfw{$key}[11] = $field11;
+       $configinputfw{$key}[12] = '';
+       $configinputfw{$key}[13] = '';
+       $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..c4a19e5
--- /dev/null
@@ -0,0 +1,536 @@
+#!/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=();
+my %aliases=();
+
+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;
+my $netsettings                = "${General::swroot}/ethernet/settings";
+
+&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);
+&General::get_aliases(\%aliases);
+
+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;
+                       }else{
+                               #Protocols used in servicegroups
+                               push (@ips,$customservicegrp{$key}[2]);
+                       }
+               }
+       }
+       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 && $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";
+                       }
+               }  
+       }
+}
+sub get_addresses
+{
+       my $hash = shift;
+       my $key  = shift;
+       my $type = shift;
+
+       my @addresses = ();
+       my $addr_type;
+       my $value;
+       my $group_name;
+
+       if ($type eq "src") {
+               $addr_type = $$hash{$key}[3];
+               $value = $$hash{$key}[4];
+
+       } elsif ($type eq "tgt") {
+               $addr_type = $$hash{$key}[5];
+               $value = $$hash{$key}[6];
+       }
+
+       if ($addr_type ~~ ["cust_grp_src", "cust_grp_tgt"]) {
+               foreach my $grp (sort {$a <=> $b} keys %customgrp) {
+                       if ($customgrp{$grp}[0] eq $value) {
+                               my @address = &get_address($customgrp{$grp}[3], $customgrp{$grp}[2], $type);
+
+                               if (@address) {
+                                       push(@addresses, @address);
+                               }
+                       }
+               }
+       } else {
+               my @address = &get_address($addr_type, $value, $type);
+
+               if (@address) {
+                       push(@addresses, @address);
+               }
+       }
+
+       return @addresses;
+}
+sub get_address
+{
+       my $key   = shift;
+       my $value = shift;
+       my $type  = shift;
+
+       my @ret = ();
+
+       # If the user manually typed an address, we just check if it is a MAC
+       # address. Otherwise, we assume that it is an IP address.
+       if ($key ~~ ["src_addr", "tgt_addr"]) {
+               if (&General::validmac($value)) {
+                       push(@ret, "-m mac --mac-source $value");
+               } else {
+                       push(@ret, $value);
+               }
+
+       # If a default network interface (GREEN, BLUE, etc.) is selected, we
+       # try to get the corresponding address of the network.
+       } elsif ($key ~~ ["std_net_src", "std_net_tgt", "Standard Network"]) {
+               my $external_interface = &get_external_interface();
+
+               my $network_address = &get_std_net_ip($value, $external_interface);
+               if ($network_address) {
+                       push(@ret, $network_address);
+               }
+
+       # Custom networks.
+       } elsif ($key ~~ ["cust_net_src", "cust_net_tgt", "Custom Network"]) {
+               my $network_address = &get_net_ip($value);
+               if ($network_address) {
+                       push(@ret, $network_address);
+               }
+
+       # Custom hosts.
+       } elsif ($key ~~ ["cust_host_src", "cust_host_tgt", "Custom Host"]) {
+               my $host_address = &get_host_ip($value, $type);
+               if ($host_address) {
+                       push(@ret, $host_address);
+               }
+
+       # OpenVPN networks.
+       } elsif ($key ~~ ["ovpn_net_src", "ovpn_net_tgt", "OpenVPN static network"]) {
+               my $network_address = &get_ovpn_net_ip($value, 1);
+               if ($network_address) {
+                       push(@ret, $network_address);
+               }
+
+       # OpenVPN hosts.
+       } elsif ($key ~~ ["ovpn_host_src", "ovpn_host_tgt", "OpenVPN static host"]) {
+               my $host_address = &get_ovpn_host_ip($value, 33);
+               if ($host_address) {
+                       push(@ret, $host_address);
+               }
+
+       # OpenVPN N2N.
+       } elsif ($key ~~ ["ovpn_n2n_src", "ovpn_n2n_tgt", "OpenVPN N-2-N"]) {
+               my $network_address = &get_ovpn_n2n_ip($value, 11);
+               if ($network_address) {
+                       push(@ret, $network_address);
+               }
+
+       # IPsec networks.
+       } elsif ($key ~~ ["ipsec_net_src", "ipsec_net_tgt", "IpSec Network"]) {
+               my $network_address = &get_ipsec_net_ip($value, 11);
+               if ($network_address) {
+                       push(@ret, $network_address);
+               }
+
+       # The firewall's own IP addresses.
+       } elsif ($key ~~ ["ipfire", "ipfire_src"]) {
+               # ALL
+               if ($value eq "ALL") {
+                       push(@ret, "0/0");
+
+               # GREEN
+               } elsif ($value eq "GREEN") {
+                       push(@ret, $netsettings{"GREEN_ADDRESS"});
+
+               # BLUE
+               } elsif ($value eq "BLUE") {
+                       push(@ret, $netsettings{"BLUE_ADDRESS"});
+
+               # ORANGE
+               } elsif ($value eq "ORANGE") {
+                       push(@ret, $netsettings{"ORANGE_ADDRESS"});
+
+               # RED
+               } elsif ($value ~~ ["RED", "RED1"]) {
+                       my $address = &get_external_address();
+                       if ($address) {
+                               push(@ret, $address);
+                       }
+
+               # Aliases
+               } else {
+                       my $alias = &get_alias($value);
+                       if ($alias) {
+                               push(@ret, $alias);
+                       }
+               }
+
+       # If nothing was selected, we assume "any".
+       } else {
+               push(@ret, "0/0");
+       }
+
+       return @ret;
+}
+sub get_external_interface()
+{
+       open(IFACE, "/var/ipfire/red/iface") or return "";
+       my $iface = <IFACE>;
+       close(IFACE);
+
+       return $iface;
+}
+sub get_external_address()
+{
+       open(ADDR, "/var/ipfire/red/local-ipaddress") or return "";
+       my $address = <ADDR>;
+       close(ADDR);
+
+       return $address;
+}
+sub get_alias
+{
+       my $id = shift;
+
+       foreach my $alias (sort keys %aliases) {
+               if ($id eq $alias) {
+                       return $aliases{$alias}{"IPT"};
+               }
+       }
+}
+
+sub get_nat_address {
+       my $zone = shift;
+       my $source = shift;
+
+       # Any static address of any zone.
+       if ($zone eq "AUTO") {
+               if ($source && ($source !~ m/mac/i )) {
+                       my $firewall_ip = &get_internal_firewall_ip_address($source, 1);
+                       if ($firewall_ip) {
+                               return $firewall_ip;
+                       }
+
+                       $firewall_ip = &get_matching_firewall_address($source, 1);
+                       if ($firewall_ip) {
+                               return $firewall_ip;
+                       }
+               }
+
+               return &get_external_address();
+
+       } elsif ($zone eq "RED" || $zone eq "GREEN" || $zone eq "ORANGE" || $zone eq "BLUE") {
+               return $netsettings{$zone . "_ADDRESS"};
+
+       } elsif ($zone ~~ ["Default IP", "ALL"]) {
+               return &get_external_address();
+
+       } else {
+               my $alias = &get_alias($zone);
+               unless ($alias) {
+                       $alias = &get_external_address();
+               }
+               return $alias;
+       }
+
+       print_error("Could not find NAT address");
+}
+
+sub get_internal_firewall_ip_addresses
+{
+       my $use_orange = shift;
+
+       my @zones = ("GREEN", "BLUE");
+       if ($use_orange) {
+               push(@zones, "ORANGE");
+       }
+
+       my @addresses = ();
+       for my $zone (@zones) {
+               next unless (exists $netsettings{$zone . "_ADDRESS"});
+
+               my $zone_address = $netsettings{$zone . "_ADDRESS"};
+               push(@addresses, $zone_address);
+       }
+
+       return @addresses;
+}
+sub get_matching_firewall_address
+{
+       my $addr = shift;
+       my $use_orange = shift;
+
+       my ($address, $netmask) = split("/", $addr);
+
+       my @zones = ("GREEN", "BLUE");
+       if ($use_orange) {
+               push(@zones, "ORANGE");
+       }
+
+       foreach my $zone (@zones) {
+               next unless (exists $netsettings{$zone . "_ADDRESS"});
+
+               my $zone_subnet = $netsettings{$zone . "_NETADDRESS"};
+               my $zone_mask   = $netsettings{$zone . "_NETMASK"};
+
+               if (&General::IpInSubnet($address, $zone_subnet, $zone_mask)) {
+                       return $netsettings{$zone . "_ADDRESS"};
+               }
+       }
+
+       return 0;
+}
+sub get_internal_firewall_ip_address
+{
+       my $subnet = shift;
+       my $use_orange = shift;
+
+       my ($net_address, $net_mask) = split("/", $subnet);
+       if ((!$net_mask) || ($net_mask ~~ ["32", "255.255.255.255"])) {
+               return 0;
+       }
+
+       # Convert net mask into correct format for &General::IpInSubnet().
+       $net_mask = &General::iporsubtodec($net_mask);
+
+       my @addresses = &get_internal_firewall_ip_addresses($use_orange);
+       foreach my $zone_address (@addresses) {
+               if (&General::IpInSubnet($zone_address, $net_address, $net_mask)) {
+                       return $zone_address;
+               }
+       }
+
+       return 0;
+}
+
+return 1;
diff --git a/config/firewall/firewall-policy b/config/firewall/firewall-policy
new file mode 100755 (executable)
index 0000000..4ba1ace
--- /dev/null
@@ -0,0 +1,172 @@
+#!/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)
+
+function iptables() {
+       /sbin/iptables --wait "$@"
+}
+
+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_ORANGE="true"
+               ;;
+       3)
+               HAVE_BLUE="true"
+               ;;
+       4)
+               HAVE_BLUE="true"
+               HAVE_ORANGE="true"
+               ;;
+esac
+
+HAVE_IPSEC="true"
+HAVE_OPENVPN="true"
+
+# INPUT
+
+# Allow access from GREEN
+iptables -A POLICYIN -i "${GREEN_DEV}" -j ACCEPT
+
+# IPsec INPUT
+case "${HAVE_IPSEC},${POLICY}" in
+       true,MODE1) ;;
+       true,*)
+               iptables -A POLICYIN -m policy --pol ipsec --dir in -j ACCEPT
+               ;;
+esac
+
+# OpenVPN INPUT
+# Allow direct access to the internal IP addresses of the firewall
+# from remote subnets if forward policy is allowed.
+case "${HAVE_OPENVPN},${POLICY}" in
+       true,MODE1) ;;
+       true,*)
+               iptables -A POLICYIN -i tun+ -j ACCEPT
+               ;;
+esac
+
+case "${FWPOLICY2}" in
+       REJECT)
+               if [ "${DROPINPUT}" = "on" ]; then
+                       iptables -A POLICYIN -m limit --limit 10/minute -j LOG --log-prefix "REJECT_INPUT "
+               fi
+               iptables -A POLICYIN -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_INPUT"
+               ;;
+       *) # DROP
+               if [ "${DROPINPUT}" = "on" ]; then
+                       iptables -A POLICYIN -m limit --limit 10/minute -j LOG --log-prefix "DROP_INPUT "
+               fi
+               iptables -A POLICYIN -j DROP -m comment --comment "DROP_INPUT"
+               ;;
+esac
+
+# FORWARD
+case "${POLICY}" in
+       MODE1)
+               case "${FWPOLICY}" in
+                       REJECT)
+                               if [ "${DROPFORWARD}" = "on" ]; then
+                                       iptables -A POLICYFWD -m limit --limit 10/minute -j LOG --log-prefix "REJECT_FORWARD "
+                               fi
+                               iptables -A POLICYFWD -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_FORWARD"
+                               ;;
+                       *) # DROP
+                               if [ "${DROPFORWARD}" = "on" ]; then
+                                       iptables -A POLICYFWD -m limit --limit 10/minute -j LOG --log-prefix "DROP_FORWARD "
+                               fi
+                               iptables -A POLICYFWD -j DROP -m comment --comment "DROP_FORWARD"
+                               ;;
+               esac
+               ;;
+
+       *)
+               # Access from GREEN is granted to everywhere
+               if [ "${IFACE}" = "${GREEN_DEV}" ]; then
+                       # internet via green
+                       # don't check source IP/NET if IFACE is GREEN
+                       iptables -A POLICYFWD -i "${GREEN_DEV}" -j ACCEPT
+               else
+                       iptables -A POLICYFWD -i "${GREEN_DEV}" -s "${GREEN_NETADDRESS}/${GREEN_NETMASK}" -j ACCEPT
+               fi
+
+               # Grant access for IPsec VPN connections
+               iptables -A POLICYFWD -m policy --pol ipsec --dir in -j ACCEPT
+
+               # Grant access for OpenVPN connections
+               iptables -A POLICYFWD -i tun+ -j ACCEPT
+
+               if [ -n "${IFACE}" ]; then
+                       if [ "${HAVE_BLUE}" = "true" ] && [ -n "${BLUE_DEV}" ]; then
+                               iptables -A POLICYFWD -i "${BLUE_DEV}" -s "${BLUE_NETADDRESS}/${BLUE_NETMASK}" -o "${IFACE}" -j ACCEPT
+                       fi
+
+                       if [ "${HAVE_ORANGE}" = "true" ] && [ -n "${ORANGE_DEV}" ]; then
+                               iptables -A POLICYFWD -i "${ORANGE_DEV}" -s "${ORANGE_NETADDRESS}/${ORANGE_NETMASK}" -o "${IFACE}" -j ACCEPT
+                       fi
+               fi
+
+               if [ "${DROPFORWARD}" = "on" ]; then
+                       iptables -A POLICYFWD -m limit --limit 10/minute -j LOG --log-prefix "DROP_FORWARD "
+               fi
+               iptables -A POLICYFWD -m comment --comment "DROP_FORWARD" -j DROP
+               ;;
+esac
+
+# OUTGOING
+case "${POLICY1}" in
+       MODE1)
+               case "${FWPOLICY1}" in
+                       REJECT)
+                               if [ "${DROPOUTGOING}" = "on" ]; then
+                                       iptables -A POLICYOUT -m limit --limit 10/minute -j LOG --log-prefix "REJECT_OUTPUT "
+                               fi
+                               iptables -A POLICYOUT -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_OUTPUT"
+                               ;;
+                       *) # DROP
+                               if [ "${DROPOUTGOING}" == "on" ]; then
+                                       iptables -A POLICYOUT -m limit --limit 10/minute -j LOG --log-prefix "DROP_OUTPUT "
+                               fi
+                               iptables -A POLICYOUT -j DROP -m comment --comment "DROP_OUTPUT"
+                               ;;
+               esac
+               ;;
+       *)
+               iptables -A POLICYOUT -j ACCEPT
+               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..c0ddcb2
--- /dev/null
@@ -0,0 +1,733 @@
+#!/usr/bin/perl -w
+###############################################################################
+#                                                                             #
+# 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;
+
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "/usr/lib/firewall/firewall-lib.pl";
+
+# Set to one to enable debugging mode.
+my $DEBUG = 0;
+
+my $IPTABLES = "iptables --wait";
+
+# iptables chains
+my $CHAIN_INPUT           = "INPUTFW";
+my $CHAIN_FORWARD         = "FORWARDFW";
+my $CHAIN_OUTPUT          = "OUTGOINGFW";
+my $CHAIN                 = $CHAIN_FORWARD;
+my $CHAIN_NAT_SOURCE      = "NAT_SOURCE";
+my $CHAIN_NAT_DESTINATION = "NAT_DESTINATION";
+my $CHAIN_MANGLE_NAT_DESTINATION_FIX = "NAT_DESTINATION";
+my @VALID_CHAINS          = ($CHAIN_INPUT, $CHAIN_FORWARD, $CHAIN_OUTPUT);
+my @ANY_ADDRESSES         = ("0.0.0.0/0.0.0.0", "0.0.0.0/0", "0/0");
+
+my @PROTOCOLS = ("tcp", "udp", "icmp", "igmp", "ah", "esp", "gre", "ipv6", "ipip");
+my @PROTOCOLS_WITH_PORTS = ("tcp", "udp");
+
+my @VALID_TARGETS = ("ACCEPT", "DROP", "REJECT");
+
+my %fwdfwsettings=();
+my %fwoptions = ();
+my %defaultNetworks=();
+my %configfwdfw=();;
+my %customgrp=();
+my %configinputfw=();
+my %configoutgoingfw=();
+my %confignatfw=();
+my @p2ps=();
+
+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";
+
+&General::readhash("${General::swroot}/firewall/settings", \%fwdfwsettings);
+&General::readhash("${General::swroot}/optionsfw/settings", \%fwoptions);
+&General::readhash("$netsettings", \%defaultNetworks);
+&General::readhasharray($configfwdfw, \%configfwdfw);
+&General::readhasharray($configinput, \%configinputfw);
+&General::readhasharray($configoutgoing, \%configoutgoingfw);
+&General::readhasharray($configgrp, \%customgrp);
+
+my @log_limit_options = &make_log_limit_options();
+
+my $POLICY_INPUT_ALLOWED   = 0;
+my $POLICY_FORWARD_ALLOWED = ($fwdfwsettings{"POLICY"} eq "MODE2");
+my $POLICY_OUTPUT_ALLOWED  = ($fwdfwsettings{"POLICY1"} eq "MODE2");
+
+my $POLICY_INPUT_ACTION    = $fwoptions{"FWPOLICY2"};
+my $POLICY_FORWARD_ACTION  = $fwoptions{"FWPOLICY"};
+my $POLICY_OUTPUT_ACTION   = $fwoptions{"FWPOLICY1"};
+
+# MAIN
+&main();
+
+sub main {
+       # Flush all chains.
+       &flush();
+
+       # Reload firewall rules.
+       &preparerules();
+
+       # Load P2P block rules.
+       &p2pblock();
+
+       # Reload firewall policy.
+       run("/usr/sbin/firewall-policy");
+}
+
+sub run {
+       # Executes or prints the given shell command.
+       my $command = shift;
+
+       if ($DEBUG) {
+               print "$command\n";
+       } else {
+               system "$command";
+
+               if ($?) {
+                       print_error("ERROR: $command");
+               }
+       }
+}
+
+sub print_error {
+       my $message = shift;
+
+       print STDERR "$message\n";
+}
+
+sub print_rule {
+       my $hash = shift;
+
+       print "\nRULE:";
+
+       my $i = 0;
+       foreach (@$hash) {
+               printf("  %2d: %s", $i++, $_);
+       }
+       print "\n";
+}
+
+sub flush {
+       run("$IPTABLES -F $CHAIN_INPUT");
+       run("$IPTABLES -F $CHAIN_FORWARD");
+       run("$IPTABLES -F $CHAIN_OUTPUT");
+       run("$IPTABLES -t nat -F $CHAIN_NAT_SOURCE");
+       run("$IPTABLES -t nat -F $CHAIN_NAT_DESTINATION");
+       run("$IPTABLES -t mangle -F $CHAIN_MANGLE_NAT_DESTINATION_FIX");
+}
+
+sub preparerules {
+       if (! -z  "${General::swroot}/firewall/input"){
+               &buildrules(\%configinputfw);
+       }
+       if (! -z  "${General::swroot}/firewall/outgoing"){
+               &buildrules(\%configoutgoingfw);
+       }
+       if (! -z  "${General::swroot}/firewall/config"){
+               &buildrules(\%configfwdfw);
+       }
+}
+
+sub buildrules {
+       my $hash = shift;
+
+       # Search for targets that need to be specially handled when adding
+       # forwarding rules. Additional rules will automatically get inserted
+       # into the INPUT/OUTPUT chains for these targets.
+       my @special_input_targets = ();
+       if (!$POLICY_FORWARD_ALLOWED) {
+               push(@special_input_targets, "ACCEPT");
+       }
+
+       if ($POLICY_INPUT_ACTION eq "DROP") {
+               push(@special_input_targets, "REJECT");
+       } elsif ($POLICY_INPUT_ACTION eq "REJECT") {
+               push(@special_input_targets, "DROP");
+       }
+
+       my @special_output_targets = ();
+       if ($POLICY_OUTPUT_ALLOWED) {
+               push(@special_output_targets, ("DROP", "REJECT"));
+       } else {
+               push(@special_output_targets, "ACCEPT");
+
+               if ($POLICY_OUTPUT_ACTION eq "DROP") {
+                       push(@special_output_targets, "REJECT");
+               } elsif ($POLICY_OUTPUT_ACTION eq "REJECT") {
+                       push(@special_output_targets, "DROP");
+               }
+       }
+
+       foreach my $key (sort {$a <=> $b} keys %$hash) {
+               # Skip disabled rules.
+               next unless ($$hash{$key}[2] eq 'ON');
+
+               if ($DEBUG) {
+                       print_rule($$hash{$key});
+               }
+
+               # Check if the target is valid.
+               my $target = $$hash{$key}[0];
+               if (!$target ~~ @VALID_TARGETS) {
+                       print_error("Invalid target '$target' for rule $key");
+                       next;
+               }
+
+               # Check if the chain is valid.
+               my $chain = $$hash{$key}[1];
+               if (!$chain ~~ @VALID_CHAINS) {
+                       print_error("Invalid chain '$chain' in rule $key");
+                       next;
+               }
+
+               # Collect all sources.
+               my @sources = &fwlib::get_addresses($hash, $key, "src");
+
+               # Collect all destinations.
+               my @destinations = &fwlib::get_addresses($hash, $key, "tgt");
+
+               # True if the destination is the firewall itself.
+               my $destination_is_firewall = ($$hash{$key}[5] eq "ipfire");
+
+               # Check if logging should be enabled.
+               my $LOG = ($$hash{$key}[17] eq 'ON');
+
+               # Check if NAT is enabled and initialize variables, that we use for that.
+               my $NAT = ($$hash{$key}[28] eq 'ON');
+               my $NAT_MODE;
+               if ($NAT) {
+                       $NAT_MODE = uc($$hash{$key}[31]);
+               }
+
+               # Set up time constraints.
+               my @time_options = ();
+               if ($$hash{$key}[18] eq 'ON') {
+                       push(@time_options, ("-m", "time"));
+
+                       # Select all days of the week this match is active.
+                       my @weekdays = ();
+                       if ($$hash{$key}[19] ne '') {
+                               push (@weekdays, "Mon");
+                       }
+                       if ($$hash{$key}[20] ne '') {
+                               push (@weekdays, "Tue");
+                       }
+                       if ($$hash{$key}[21] ne '') {
+                               push (@weekdays, "Wed");
+                       }
+                       if ($$hash{$key}[22] ne '') {
+                               push (@weekdays, "Thu");
+                       }
+                       if ($$hash{$key}[23] ne '') {
+                               push (@weekdays, "Fri");
+                       }
+                       if ($$hash{$key}[24] ne '') {
+                               push (@weekdays, "Sat");
+                       }
+                       if ($$hash{$key}[25] ne '') {
+                               push (@weekdays, "Sun");
+                       }
+                       if (@weekdays) {
+                               push(@time_options, ("--weekdays", join(",", @weekdays)));
+                       }
+
+                       # Convert start time.
+                       my $time_start = &format_time($$hash{$key}[26]);
+                       if ($time_start) {
+                               push(@time_options, ("--timestart", $time_start));
+                       }
+
+                       # Convert end time.
+                       my $time_stop = &format_time($$hash{$key}[27]);
+                       if ($time_stop) {
+                               push(@time_options, ("--timestop", $time_stop));
+                       }
+               }
+
+               # Check which protocols are used in this rule and so that we can
+               # later group rules by protocols.
+               my @protocols = &get_protocols($hash, $key);
+               if (!@protocols) {
+                       print_error("Invalid protocol configuration for rule $key");
+                       next;
+               }
+
+               foreach my $protocol (@protocols) {
+                       # Check if the given protocol is supported.
+                       if (($protocol ne "all") && (!$protocol ~~ @PROTOCOLS)) {
+                               print_error("Protocol $protocol is not supported (rule $key)");
+                               next;
+                       }
+
+                       # Prepare protocol options (like ICMP types, ports, etc...).
+                       my @protocol_options = &get_protocol_options($hash, $key, $protocol, 0);
+
+                       # Check if this protocol knows ports.
+                       my $protocol_has_ports = ($protocol ~~ @PROTOCOLS_WITH_PORTS);
+
+                       foreach my $src (@sources) {
+                               # Skip invalid source.
+                               next unless ($src);
+
+                               # Sanitize source.
+                               my $source = $src;
+                               if ($source ~~ @ANY_ADDRESSES) {
+                                       $source = "";
+                               }
+
+                               foreach my $dst (@destinations) {
+                                       # Skip invalid rules.
+                                       next if (!$dst || ($dst eq "none"));
+
+                                       # Sanitize destination.
+                                       my $destination = $dst;
+                                       if ($destination ~~ @ANY_ADDRESSES) {
+                                               $destination = "";
+                                       }
+
+                                       # Array with iptables arguments.
+                                       my @options = ();
+
+                                       # Append protocol.
+                                       if ($protocol ne "all") {
+                                               push(@options, @protocol_options);
+                                       }
+
+                                       # Prepare source options.
+                                       my @source_options = ();
+                                       if ($source =~ /mac/) {
+                                               push(@source_options, $source);
+                                       } elsif ($source) {
+                                               push(@source_options, ("-s", $source));
+                                       }
+
+                                       # Prepare destination options.
+                                       my @destination_options = ();
+                                       if ($destination) {
+                                               push(@destination_options, ("-d", $destination));
+                                       }
+
+                                       # Add time constraint options.
+                                       push(@options, @time_options);
+
+                                       my $firewall_is_in_source_subnet = 1;
+                                       if ($source) {
+                                               $firewall_is_in_source_subnet = &firewall_is_in_subnet($source);
+                                       }
+
+                                       my $firewall_is_in_destination_subnet = 1;
+                                       if ($destination) {
+                                               $firewall_is_in_destination_subnet = &firewall_is_in_subnet($destination);
+                                       }
+
+                                       # Process NAT rules.
+                                       if ($NAT) {
+                                               my $nat_address = &fwlib::get_nat_address($$hash{$key}[29], $source);
+
+                                               # Skip NAT rules if the NAT address is unknown
+                                               # (i.e. no internet connection has been established, yet).
+                                               next unless ($nat_address);
+
+                                               # Destination NAT
+                                               if ($NAT_MODE eq "DNAT") {
+                                                       my @nat_options = ();
+                                                       if ($protocol ne "all") {
+                                                               my @nat_protocol_options = &get_protocol_options($hash, $key, $protocol, 1);
+                                                               push(@nat_options, @nat_protocol_options);
+                                                       }
+                                                       push(@nat_options, @time_options);
+
+                                                       # Make port-forwardings useable from the internal networks.
+                                                       my @internal_addresses = &fwlib::get_internal_firewall_ip_addresses(1);
+                                                       unless ($nat_address ~~ @internal_addresses) {
+                                                               &add_dnat_mangle_rules($nat_address, @nat_options);
+                                                       }
+
+                                                       push(@nat_options, @source_options);
+                                                       push(@nat_options, ("-d", $nat_address));
+
+                                                       my $dnat_port;
+                                                       if ($protocol_has_ports) {
+                                                               $dnat_port = &get_dnat_target_port($hash, $key);
+                                                       }
+
+                                                       my @nat_action_options = ();
+
+                                                       # Use iptables REDIRECT
+                                                       my $use_redirect = ($destination_is_firewall && !$destination && $protocol_has_ports && $dnat_port);
+                                                       if ($use_redirect) {
+                                                               push(@nat_action_options, ("-j", "REDIRECT", "--to-ports", $dnat_port));
+
+                                                       # Use iptables DNAT
+                                                       } else {
+                                                               if ($destination_is_firewall && !$destination) {
+                                                                       $destination = &fwlib::get_external_address();
+                                                               }
+                                                               next unless ($destination);
+
+                                                               my ($dnat_address, $dnat_mask) = split("/", $destination);
+                                                               @destination_options = ("-d", $dnat_address);
+
+                                                               if ($protocol_has_ports) {
+                                                                       my $dnat_port = &get_dnat_target_port($hash, $key);
+
+                                                                       if ($dnat_port) {
+                                                                               $dnat_address .= ":$dnat_port";
+                                                                       }
+                                                               }
+
+                                                               push(@nat_action_options, ("-j", "DNAT", "--to-destination", $dnat_address));
+                                                       }
+
+                                                       if ($LOG) {
+                                                               run("$IPTABLES -t nat -A $CHAIN_NAT_DESTINATION @nat_options @log_limit_options -j LOG --log-prefix 'DNAT '");
+                                                       }
+                                                       run("$IPTABLES -t nat -A $CHAIN_NAT_DESTINATION @nat_options @nat_action_options");
+
+                                               # Source NAT
+                                               } elsif ($NAT_MODE eq "SNAT") {
+                                                       my @nat_options = @options;
+
+                                                       push(@nat_options, @source_options);
+                                                       push(@nat_options, @destination_options);
+
+                                                       if ($LOG) {
+                                                               run("$IPTABLES -t nat -A $CHAIN_NAT_SOURCE @nat_options @log_limit_options -j LOG --log-prefix 'SNAT '");
+                                                       }
+                                                       run("$IPTABLES -t nat -A $CHAIN_NAT_SOURCE @nat_options -j SNAT --to-source $nat_address");
+                                               }
+                                       }
+
+                                       push(@options, @source_options);
+                                       push(@options, @destination_options);
+
+                                       # Insert firewall rule.
+                                       if ($LOG && !$NAT) {
+                                               run("$IPTABLES -A $chain @options @log_limit_options -j LOG --log-prefix '$chain '");
+                                       }
+                                       run("$IPTABLES -A $chain @options -j $target");
+
+                                       # Handle forwarding rules and add corresponding rules for firewall access.
+                                       if ($chain eq $CHAIN_FORWARD) {
+                                               # If the firewall is part of the destination subnet and access to the destination network
+                                               # is granted/forbidden for any network that the firewall itself is part of, we grant/forbid access
+                                               # for the firewall, too.
+                                               if ($firewall_is_in_destination_subnet && ($target ~~ @special_input_targets)) {
+                                                       if ($LOG && !$NAT) {
+                                                               run("$IPTABLES -A $CHAIN_INPUT @options @log_limit_options -j LOG --log-prefix '$CHAIN_INPUT '");
+                                                       }
+                                                       run("$IPTABLES -A $CHAIN_INPUT @options -j $target");
+                                               }
+
+                                               # Likewise.
+                                               if ($firewall_is_in_source_subnet && ($target ~~ @special_output_targets)) {
+                                                       if ($LOG && !$NAT) {
+                                                               run("$IPTABLES -A $CHAIN_OUTPUT @options @log_limit_options -j LOG --log-prefix '$CHAIN_OUTPUT '");
+                                                       }
+                                                       run("$IPTABLES -A $CHAIN_OUTPUT @options -j $target");
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
+# Formats the given timestamp into the iptables format which is "hh:mm" UTC.
+sub format_time {
+       my $val = shift;
+
+       # Convert the given time into minutes.
+       my $minutes = &time_convert_to_minutes($val);
+
+       # Move the timestamp into UTC.
+       $minutes += &time_utc_offset();
+
+       # Make sure $minutes is between 00:00 and 23:59.
+       if ($minutes < 0) {
+               $minutes += 1440;
+       }
+
+       if ($minutes > 1440) {
+               $minutes -= 1440;
+       }
+
+       # Format as hh:mm.
+       return sprintf("%02d:%02d", $minutes / 60, $minutes % 60);
+}
+
+# Calculates the offsets in minutes from the local timezone to UTC.
+sub time_utc_offset {
+       my @localtime = localtime(time);
+       my @gmtime = gmtime(time);
+
+       return ($gmtime[2] * 60 + $gmtime[1] % 60) - ($localtime[2] * 60 + $localtime[1] % 60);
+}
+
+# Takes a timestamp like "14:00" and converts it into minutes since midnight.
+sub time_convert_to_minutes {
+       my ($hrs, $min) = split(":", shift);
+
+       return ($hrs * 60) + $min;
+}
+
+sub p2pblock {
+       my $search_action;
+       my $target;
+
+       if ($fwdfwsettings{"POLICY"} eq "MODE1") {
+               $search_action = "on";
+               $target = "ACCEPT";
+       } else {
+               $search_action = "off";
+               $target = "DROP";
+       }
+
+       open(FILE, "<$p2pfile") or die "Unable to read $p2pfile";
+       my @protocols = ();
+       foreach my $p2pentry (<FILE>) {
+               my @p2pline = split(/\;/, $p2pentry);
+               next unless ($p2pline[2] eq $search_action);
+
+               push(@protocols, "--$p2pline[1]");
+       }
+       close(FILE);
+
+       if (@protocols) {
+               run("$IPTABLES -A FORWARDFW -m ipp2p @protocols -j $target");
+       }
+}
+
+sub get_protocols {
+       my $hash = shift;
+       my $key = shift;
+
+       my $uses_source_ports = ($$hash{$key}[7] eq "ON");
+       my $uses_services = ($$hash{$key}[11] eq "ON");
+
+       my @protocols = ();
+
+       # Rules which don't have source ports or services (like ICMP, ESP, ...).
+       if (!$uses_source_ports && !$uses_services) {
+               push(@protocols, $$hash{$key}[8]);
+
+       # Rules which either use ports or services.
+       } elsif ($uses_source_ports || $uses_services) {
+               # Check if service group or service
+               if ($$hash{$key}[14] eq 'cust_srv') {
+                       push(@protocols, &fwlib::get_srv_prot($$hash{$key}[15]));
+
+               } elsif($$hash{$key}[14] eq 'cust_srvgrp'){
+                       my $protos = &fwlib::get_srvgrp_prot($$hash{$key}[15]);
+                       push(@protocols, split(",", $protos));
+
+               } else {
+                       # Fetch the protocol for this rule.
+                       my $protocol = lc($$hash{$key}[8]);
+
+                       # Fetch source and destination ports for this rule.
+                       my $source_ports = $$hash{$key}[10];
+                       my $destination_ports = $$hash{$key}[15];
+
+                       # Check if ports are set for protocols which do not support ports.
+                       if (!($protocol ~~ @PROTOCOLS_WITH_PORTS) && ($source_ports || $destination_ports)) {
+                               print_error("$protocol does not support ports");
+                               return ();
+                       }
+
+                       push(@protocols, $protocol);
+               }
+       }
+
+       # Remove all empty elements
+       @protocols = map { $_ ? $_ : () } @protocols;
+
+       # If no protocol has been defined, we assume "all".
+       if (!@protocols) {
+               push(@protocols, "all");
+       }
+
+       # Make all protocol names lowercase.
+       @protocols = map { lc } @protocols;
+
+       return @protocols;
+}
+
+sub get_protocol_options {
+       my $hash = shift;
+       my $key  = shift;
+       my $protocol = shift;
+       my $nat_options_wanted = shift;
+       my @options = ();
+
+       # Nothing to do if no protocol is specified.
+       if ($protocol eq "all") {
+               return @options;
+       } else {
+               push(@options, ("-p", $protocol));
+       }
+
+       if ($protocol ~~ @PROTOCOLS_WITH_PORTS) {
+               # Process source ports.
+               my $use_src_ports = ($$hash{$key}[7] eq "ON");
+               my $src_ports     = $$hash{$key}[10];
+
+               if ($use_src_ports && $src_ports) {
+                       push(@options, &format_ports($src_ports, "src"));
+               }
+
+               # Process destination ports.
+               my $use_dst_ports  = ($$hash{$key}[11] eq "ON");
+               my $use_dnat       = (($$hash{$key}[28] eq "ON") && ($$hash{$key}[31] eq "dnat"));
+
+               if ($use_dst_ports) {
+                       my $dst_ports_mode = $$hash{$key}[14];
+                       my $dst_ports      = $$hash{$key}[15];
+
+                       if (($dst_ports_mode eq "TGT_PORT") && $dst_ports) {
+                               if ($nat_options_wanted && $use_dnat && $$hash{$key}[30]) {
+                                       $dst_ports = $$hash{$key}[30];
+                               }
+                               push(@options, &format_ports($dst_ports, "dst"));
+
+                       } elsif ($dst_ports_mode eq "cust_srv") {
+                               if ($protocol eq "ICMP") {
+                                       push(@options, ("--icmp-type", &fwlib::get_srv_port($dst_ports, 3, "ICMP")));
+                               } else {
+                                       $dst_ports = &fwlib::get_srv_port($dst_ports, 1, uc($protocol));
+                                       push(@options, &format_ports($dst_ports, "dst"));
+                               }
+
+                       } elsif ($dst_ports_mode eq "cust_srvgrp") {
+                               push(@options, &fwlib::get_srvgrp_port($dst_ports, uc($protocol)));
+                       }
+               }
+       }
+
+       # Check if a single ICMP type is selected.
+       if ($protocol eq "icmp") {
+               my $icmp_type = $$hash{$key}[9];
+
+               if (($icmp_type ne "All ICMP-Types") && $icmp_type) {
+                       push(@options, ("--icmp-type", $icmp_type));
+               }
+       }
+
+       return @options;
+}
+
+sub format_ports {
+       my $ports = shift;
+       my $type = shift;
+
+       my $arg;
+       if ($type eq "src") {
+               $arg = "--sport";
+       } elsif ($type eq "dst") {
+               $arg = "--dport";
+       }
+
+       my @options = ();
+
+       if ($ports =~ /\|/) {
+               $ports =~ s/\|/,/g;
+               push(@options, ("-m", "multiport"));
+       }
+
+       if ($ports) {
+               push(@options, ($arg, $ports));
+       }
+
+       return @options;
+}
+
+sub get_dnat_target_port {
+       my $hash = shift;
+       my $key  = shift;
+
+       if ($$hash{$key}[14] eq "TGT_PORT") {
+               my $port = $$hash{$key}[15];
+               my $external_port = $$hash{$key}[30];
+
+               if ($external_port && ($port ne $external_port)) {
+                       return $$hash{$key}[15];
+               }
+       }
+}
+
+sub add_dnat_mangle_rules {
+       my $nat_address = shift;
+       my @options = @_;
+
+       my $mark = 0;
+       foreach my $zone ("GREEN", "BLUE", "ORANGE") {
+               $mark++;
+
+               # Skip rule if not all required information exists.
+               next unless (exists $defaultNetworks{$zone . "_NETADDRESS"});
+               next unless (exists $defaultNetworks{$zone . "_NETMASK"});
+
+               my @mangle_options = @options;
+
+               my $netaddress = $defaultNetworks{$zone . "_NETADDRESS"};
+               $netaddress .= "/" . $defaultNetworks{$zone . "_NETMASK"};
+
+               push(@mangle_options, ("-s", $netaddress, "-d", $nat_address));
+               push(@mangle_options, ("-j", "MARK", "--set-mark", $mark));
+
+               run("$IPTABLES -t mangle -A $CHAIN_MANGLE_NAT_DESTINATION_FIX @mangle_options");
+       }
+}
+
+sub make_log_limit_options {
+       my @options = ("-m", "limit");
+
+       # Maybe we should get this from the configuration.
+       my $limit = 10;
+
+       # We limit log messages to $limit messages per minute.
+       push(@options, ("--limit", "$limit/min"));
+
+       # And we allow bursts of 2x $limit.
+       push(@options, ("--limit-burst", $limit * 2));
+
+       return @options;
+}
+
+sub firewall_is_in_subnet {
+       my $subnet = shift;
+
+       # ORANGE is missing here, because nothing may ever access
+       # the firewall from this network.
+       my $address = &fwlib::get_internal_firewall_ip_address($subnet, 0);
+
+       if ($address) {
+               return 1;
+       }
+
+       return 0;
+}
diff --git a/config/fwhosts/customservices b/config/fwhosts/customservices
new file mode 100644 (file)
index 0000000..9b25a72
--- /dev/null
@@ -0,0 +1,34 @@
+32,rsync,873,TCP,BLANK,0
+33,DNS (UDP),53,UDP,,0
+21,IMAPS,993,TCP,BLANK,0
+7,WINS,42,TCP,BLANK,0
+26,LPD,515,TCP,BLANK,0
+2,FTP-control,21,TCP,BLANK,0
+17,IRC,194,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
+27,JetDirect,9100,TCP,BLANK,0
+25,IPP (UDP),631,UDP,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
+23,RDP,3389,TCP,BLANK,0
+13,NetBIOS Datagram Service,138,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,TCP,BLANK,0
+34,DNS (TCP),53,TCP,,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 86d93fe6117999985587e7a87bb393fa0c9e5ae7..34546b7135aac1f400a1895ea265fb11f43fc96f 100644 (file)
@@ -106,6 +106,10 @@ for (;;) {
                                        $temp = $array[11];
                                }
                                &checkssh ($temp, "possible SSH-Bruteforce Attack");}
+
+                       # This should catch Bruteforce Attacks with enabled preauth
+                       if ($_ =~ /.*sshd.*Received disconnect from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):.*\[preauth\]/) {
+                               &checkssh ($1, "possible SSH-Bruteforce Attack, failed preauth");}
                        }
        }
 
@@ -424,4 +428,4 @@ sub get_aliases {
        }
 
        print "done \n";
-}
\ No newline at end of file
+}
index 6158e2cdf08f9e94b4f2c399738da1fdad79847d..1cd76765a9a66cf92407d8de16e231c5a6e50597 100644 (file)
@@ -142,3 +142,10 @@ CONFIG_IEEE80211N=y
 # This can be used to reduce the size of the hostapd considerably if debugging
 # code is not needed.
 CONFIG_NO_STDOUT_DEBUG=y
+
+# IEEE 802.11ac (Very High Throughput) support
+CONFIG_IEEE80211AC=y
+
+# Enable AUTO_CHANNEL_SELECTION
+# This is needed for dfs (radar detection) channels
+CONFIG_ACS=y
index cc3cb1d90707f0c834b370b2303f6ac672857591..dc6bb21ed5db166b6b00c076bb80fab40964c97d 100644 (file)
@@ -9,7 +9,8 @@
     TransferLog /var/log/httpd/access_log
     SSLEngine on
     SSLProtocol all -SSLv2
-    SSLCipherSuite ALL:!ADH:!EXPORT56:!eNULL:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP
+    SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:HIGH:!RC4:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK
+    SSLHonorCipherOrder on
     SSLCertificateFile /etc/httpd/server.crt
     SSLCertificateKeyFile /etc/httpd/server.key
 
diff --git a/config/icinga/icinga.conf b/config/icinga/icinga.conf
new file mode 100644 (file)
index 0000000..3771812
--- /dev/null
@@ -0,0 +1,37 @@
+Listen 1010
+
+<VirtualHost *:1010>
+       ScriptAlias /icinga/cgi-bin /usr/share/icinga/cgi-bin
+       Alias /icinga /usr/share/icinga/
+
+       RewriteEngine on
+       RewriteRule ^/$ /icinga/ [R]
+
+       <Directory /usr/share/icinga/cgi-bin>
+               Options ExecCGI
+               AllowOverride None
+
+               AuthName "Icinga Access"
+               AuthType Basic
+               AuthUserFile /etc/icinga/htpasswd.users
+
+               Order allow,deny
+               Allow from all
+
+               Require valid-user
+       </Directory>
+
+       <Directory /usr/share/icinga/>
+               Options None
+               AllowOverride All
+
+               AuthName "Icinga Access"
+               AuthType Basic
+               AuthUserFile /etc/icinga/htpasswd.users
+
+               Order allow,deny
+               Allow from all
+
+               Require valid-user
+       </Directory>
+</VirtualHost>
index 59f7dedc15d898f8c1f3d2b1878e739202c5665d..9bc1d43aff4d09da2c1c4da52951d9c3bca1386a 100644 (file)
@@ -1,38 +1,28 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.2.35 Kernel Configuration
+# Linux/arm 3.10.27-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
@@ -644,69 +772,67 @@ CONFIG_IP_VS_TAB_BITS=12
 #
 # IPVS transport protocol load balancing support
 #
-# CONFIG_IP_VS_PROTO_TCP is not set
-# CONFIG_IP_VS_PROTO_UDP is not set
-# CONFIG_IP_VS_PROTO_AH_ESP is not set
-# CONFIG_IP_VS_PROTO_ESP is not set
-# CONFIG_IP_VS_PROTO_AH is not set
-# CONFIG_IP_VS_PROTO_SCTP is not set
+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 is not set
-# CONFIG_IP_VS_WRR is not set
-# CONFIG_IP_VS_LC is not set
-# CONFIG_IP_VS_WLC is not set
-# CONFIG_IP_VS_LBLC is not set
-# CONFIG_IP_VS_LBLCR is not set
-# CONFIG_IP_VS_DH is not set
-# CONFIG_IP_VS_SH is not set
-# CONFIG_IP_VS_SED is not set
-# CONFIG_IP_VS_NQ is not set
+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_NFCT is not set
+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_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
@@ -715,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
@@ -726,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
@@ -753,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_STP=y
 CONFIG_GARP=m
-CONFIG_BRIDGE=m
+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
 
 #
@@ -819,7 +951,11 @@ 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_PIE=m
 CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_PLUG=m
 
 #
 # Classification
@@ -835,6 +971,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
@@ -842,6 +979,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
@@ -858,59 +996,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
@@ -929,21 +1035,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
@@ -955,10 +1056,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
@@ -966,24 +1068,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
@@ -992,39 +1097,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
 
@@ -1051,8 +1168,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
 
@@ -1068,39 +1183,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
 
@@ -1108,71 +1218,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
@@ -1184,62 +1307,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
@@ -1255,28 +1376,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
@@ -1286,6 +1403,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
@@ -1295,6 +1418,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
@@ -1308,6 +1435,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
@@ -1316,13 +1444,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
@@ -1331,7 +1454,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
@@ -1339,7 +1462,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
@@ -1357,7 +1480,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
@@ -1387,7 +1511,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
@@ -1399,9 +1523,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
@@ -1418,82 +1542,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
@@ -1502,47 +1641,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
@@ -1553,12 +1680,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
@@ -1568,14 +1698,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
@@ -1587,16 +1722,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
@@ -1609,8 +1742,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
@@ -1618,24 +1749,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
@@ -1644,36 +1779,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
@@ -1681,9 +1812,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
@@ -1691,9 +1823,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
@@ -1707,8 +1840,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
@@ -1716,6 +1853,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
@@ -1724,15 +1863,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
@@ -1746,12 +1889,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
@@ -1760,11 +1899,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
@@ -1783,82 +1925,172 @@ 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_LIBERTAS_UAP=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
@@ -1890,9 +2122,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
@@ -1908,8 +2140,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
@@ -1917,16 +2147,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
@@ -1952,8 +2177,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
@@ -1963,43 +2186,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_POLLDEV=m
+# CONFIG_INPUT_FF_MEMLESS is not set
+CONFIG_INPUT_POLLDEV=y
 CONFIG_INPUT_SPARSEKMAP=m
+CONFIG_INPUT_MATRIXKMAP=m
 
 #
 # Userland interfaces
@@ -2009,53 +2209,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
 
 #
@@ -2066,100 +2291,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
@@ -2190,17 +2419,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
@@ -2208,8 +2438,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
@@ -2220,6 +2451,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
 #
@@ -2242,37 +2485,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:
@@ -2282,23 +2549,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
@@ -2306,29 +2576,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
 
@@ -2343,6 +2630,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
@@ -2358,13 +2647,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
@@ -2380,14 +2671,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
@@ -2396,20 +2692,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
@@ -2420,6 +2716,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
@@ -2438,17 +2736,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
@@ -2467,397 +2777,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
@@ -2870,119 +3448,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
@@ -2995,9 +3561,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
@@ -3006,6 +3573,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
@@ -3019,9 +3587,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
@@ -3041,12 +3612,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
@@ -3094,11 +3665,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
@@ -3107,11 +3677,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
@@ -3147,12 +3717,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
@@ -3161,98 +3730,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
@@ -3260,14 +3836,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
@@ -3276,27 +3850,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
@@ -3313,7 +3892,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
@@ -3329,21 +3908,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
@@ -3353,7 +3935,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
@@ -3361,16 +3943,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
@@ -3379,22 +3963,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
 
 #
@@ -3402,14 +3989,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
@@ -3419,27 +4006,22 @@ 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
 CONFIG_UWB_I1480U=m
-CONFIG_MMC=m
+CONFIG_MMC=y
 # CONFIG_MMC_DEBUG is not set
 # CONFIG_MMC_UNSAFE_RESUME is not set
 # CONFIG_MMC_CLKGATE is not set
@@ -3447,28 +4029,33 @@ CONFIG_MMC=m
 #
 # MMC/SD/SDIO Card Drivers
 #
-CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK=y
 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_MVSDIO=y
 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
 
@@ -3484,46 +4071,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
 
@@ -3539,7 +4143,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
@@ -3549,12 +4154,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
@@ -3568,25 +4174,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
 
@@ -3594,32 +4206,38 @@ 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_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
@@ -3629,35 +4247,96 @@ 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_RTS5139=m
+# CONFIG_RTS5139_DEBUG 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
@@ -3670,13 +4349,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
@@ -3685,11 +4486,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
@@ -3697,43 +4498,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
@@ -3744,7 +4549,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
@@ -3754,10 +4559,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
 
 #
@@ -3765,37 +4570,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
@@ -3805,113 +4595,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
@@ -3920,27 +4713,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
@@ -3948,10 +4743,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
@@ -3960,53 +4755,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
@@ -4020,43 +5009,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
@@ -4064,6 +5054,7 @@ CONFIG_CRYPTO_XTS=m
 #
 # Hash modes
 #
+CONFIG_CRYPTO_CMAC=m
 CONFIG_CRYPTO_HMAC=y
 CONFIG_CRYPTO_XCBC=m
 CONFIG_CRYPTO_VMAC=m
@@ -4071,17 +5062,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
@@ -4089,12 +5082,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
@@ -4110,7 +5105,7 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
 #
 # Compression
 #
-CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
 
@@ -4118,31 +5113,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
@@ -4167,7 +5176,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..34045f2
--- /dev/null
@@ -0,0 +1,5575 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/arm 3.10.32 Kernel Configuration
+#
+CONFIG_ARM=y
+CONFIG_MIGHT_HAVE_PCI=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=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_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=y
+# CONFIG_RCU_FAST_NO_HZ is not set
+# 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=y
+CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_SWAP_ENABLED=y
+CONFIG_MEMCG_KMEM=y
+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_MM_OWNER=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 is not set
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+CONFIG_OPROFILE=m
+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_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_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 is not set
+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 is not set
+# CONFIG_GPIO_PCA953X is not set
+CONFIG_KEYBOARD_GPIO_POLLED=m
+# CONFIG_ARCH_HIGHBANK is not set
+CONFIG_ARCH_MXC=y
+
+#
+# Freescale i.MX support
+#
+# CONFIG_MXC_IRQ_PRIOR is not set
+CONFIG_MXC_TZIC=y
+# CONFIG_MXC_DEBUG_BOARD is not set
+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_IMX5=y
+CONFIG_SOC_IMX51=y
+
+#
+# i.MX51 machines:
+#
+CONFIG_MACH_IMX51_DT=y
+# CONFIG_MACH_MX51_BABBAGE is not set
+# CONFIG_MACH_EUKREA_CPUIMX51SD is not set
+
+#
+# Device tree only
+#
+CONFIG_SOC_IMX53=y
+CONFIG_SOC_IMX6Q=y
+CONFIG_IMX_HAVE_PLATFORM_FEC=y
+CONFIG_IMX_HAVE_PLATFORM_GPIO_KEYS=y
+CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT=y
+CONFIG_WAND_RFKILL=m
+
+#
+# TI OMAP Common Features
+#
+
+#
+# OMAP Feature Selections
+#
+# CONFIG_POWER_AVS_OMAP is not set
+# CONFIG_OMAP_RESET_CLOCKS is not set
+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_OMAP3=y
+CONFIG_ARCH_OMAP4=y
+CONFIG_SOC_OMAP5=y
+CONFIG_SOC_OMAP3430=y
+CONFIG_SOC_TI81XX=y
+CONFIG_SOC_AM33XX=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_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_TOUCHBOOK=y
+CONFIG_MACH_OMAP_3430SDP=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 is not set
+# CONFIG_OMAP3_SDRC_AC_TIMING is not set
+# CONFIG_ARCH_SOCFPGA is not set
+# CONFIG_PLAT_SPEAR is not set
+CONFIG_ARCH_SUNXI=y
+# CONFIG_ARCH_SIRF is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_U8500 is not set
+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_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_V7=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_LPAE is not set
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_THUMBEE=y
+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_KUSER_HELPERS=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_CACHE_L2X0=y
+CONFIG_CACHE_PL310=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_430973=y
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_ARM_ERRATA_643719=y
+CONFIG_ARM_ERRATA_720789=y
+CONFIG_PL310_ERRATA_727915=y
+CONFIG_PL310_ERRATA_753970=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 is not set
+# CONFIG_PCI_IOV is not set
+# CONFIG_PCI_PRI is not set
+# CONFIG_PCI_PASID is not set
+
+#
+# PCI host controller drivers
+#
+CONFIG_PCIE_DW=y
+CONFIG_PCI_IMX6=y
+# CONFIG_PCCARD is not set
+
+#
+# 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=512
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=100
+CONFIG_SCHED_HRTICK=y
+# CONFIG_THUMB2_KERNEL is not set
+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_HW_PERF_EVENTS=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=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=4096
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_CLEANCACHE=y
+# CONFIG_FRONTSWAP is not set
+CONFIG_FORCE_MAX_ZONEORDER=12
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_SECCOMP is not set
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_XEN is not set
+
+#
+# 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=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_KEXEC is not set
+CONFIG_CRASH_DUMP=y
+CONFIG_AUTO_ZRELADDR=y
+
+#
+# CPU Power Management
+#
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# 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=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_GENERIC_CPUFREQ_CPU0=y
+
+#
+# ARM CPU frequency scaling drivers
+#
+# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
+# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
+# CONFIG_ARM_EXYNOS4X12_CPUFREQ is not set
+# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set
+# CONFIG_ARM_EXYNOS5440_CPUFREQ is not set
+CONFIG_ARM_IMX6Q_CPUFREQ=m
+# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
+CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
+# 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=m
+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_PIE=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=y
+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 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=y
+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=y
+CONFIG_CMA_DEBUG=y
+
+#
+# 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_MVEBU_MBUS=y
+CONFIG_OMAP_OCP2SCP=y
+CONFIG_OMAP_INTERCONNECT=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=y
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# 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 is not set
+# 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_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_DOCG3 is not set
+CONFIG_BCH_CONST_M=13
+CONFIG_BCH_CONST_T=8
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_SMC=y
+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=m
+CONFIG_MTD_NAND_OMAP_BCH8=y
+# CONFIG_MTD_NAND_OMAP_BCH4 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_GPMI_NAND=m
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_NAND_ORION=y
+CONFIG_MTD_NAND_MXC=m
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
+# CONFIG_MTD_UBI_GLUEBI 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=m
+# CONFIG_PARPORT_PC is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+CONFIG_PARPORT_1284=y
+CONFIG_PARPORT_NOT_PC=y
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# 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 is not set
+# CONFIG_BLK_DEV_OSD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+CONFIG_BLK_DEV_RAM=y
+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 is not set
+# CONFIG_MG_DISK is not set
+# CONFIG_BLK_DEV_RBD is not set
+# CONFIG_BLK_DEV_RSXX is not set
+
+#
+# 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 is not set
+CONFIG_ICS932S401=m
+# CONFIG_ATMEL_SSC is not set
+CONFIG_ENCLOSURE_SERVICES=m
+# CONFIG_HP_ILO is not set
+# 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=y
+CONFIG_BMP085=y
+CONFIG_BMP085_I2C=m
+# CONFIG_PCH_PHUB is not set
+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 is not set
+
+#
+# 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=m
+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=5000
+CONFIG_AIC79XX_DEBUG_ENABLE=y
+CONFIG_AIC79XX_DEBUG_MASK=0
+CONFIG_AIC79XX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_AIC94XX=m
+CONFIG_AIC94XX_DEBUG=y
+CONFIG_SCSI_MVSAS=m
+CONFIG_SCSI_MVSAS_DEBUG=y
+# CONFIG_SCSI_MVSAS_TASKLET is not set
+CONFIG_SCSI_MVUMI=m
+CONFIG_SCSI_ARCMSR=m
+CONFIG_MEGARAID_NEWGEN=y
+# CONFIG_MEGARAID_MM is not set
+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 is not set
+# CONFIG_SCSI_IPR_DUMP is not set
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_QLA_FC=m
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_LPFC_DEBUG_FS=y
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_NSP32=m
+CONFIG_SCSI_DEBUG=m
+CONFIG_SCSI_PMCRAID=m
+CONFIG_SCSI_PM8001=m
+CONFIG_SCSI_SRP=m
+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 is not set
+CONFIG_SATA_AHCI_PLATFORM=m
+CONFIG_AHCI_IMX=m
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_SATA_ACARD_AHCI is not set
+# CONFIG_SATA_SIL24 is not set
+CONFIG_ATA_SFF=y
+
+#
+# SFF controllers with custom DMA interface
+#
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_SX4 is not set
+CONFIG_ATA_BMDMA=y
+
+#
+# SATA SFF controllers with BMDMA
+#
+# CONFIG_ATA_PIIX is not set
+CONFIG_SATA_HIGHBANK=m
+CONFIG_SATA_MV=m
+# CONFIG_SATA_NV is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_SATA_ULI is not set
+# CONFIG_SATA_VIA is not set
+# CONFIG_SATA_VITESSE is not set
+
+#
+# PATA SFF controllers with BMDMA
+#
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARASAN_CF=m
+# CONFIG_PATA_ARTOP is not set
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_ATP867X is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CS5536 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+CONFIG_PATA_IMX=m
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NINJA32 is not set
+# CONFIG_PATA_NS87415 is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RDC is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SCH is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_TOSHIBA is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+
+#
+# PIO-only SFF controllers
+#
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_PLATFORM is not set
+# CONFIG_PATA_RZ1000 is not set
+
+#
+# Generic fallback / legacy drivers
+#
+# CONFIG_ATA_GENERIC is not set
+# 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_BUILTIN=y
+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 is not set
+
+#
+# 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 is not set
+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_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 is not set
+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=y
+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_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=y
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_NET_VENDOR_QLOGIC=y
+CONFIG_QLA3XXX=m
+CONFIG_QLCNIC=m
+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_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 is not set
+# 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=y
+CONFIG_TLAN=m
+CONFIG_NET_VENDOR_VIA=y
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+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_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 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_LIBERTAS_UAP=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+CONFIG_AT76C50X_USB=m
+CONFIG_PRISM54=m
+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 is not set
+# CONFIG_ATH5K_PCI is not set
+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 is not set
+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 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=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 is not set
+# CONFIG_IPW2200_PROMISCUOUS is not set
+# CONFIG_IPW2200_QOS is not set
+# 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 is not set
+# CONFIG_RT2500PCI is not set
+# CONFIG_RT61PCI is not set
+# CONFIG_RT2800PCI is not set
+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_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=m
+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 is not set
+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 is not set
+# CONFIG_HISAX_SCT_QUADRO is not set
+CONFIG_HISAX_GAZEL=y
+# CONFIG_HISAX_HFC_PCI is not set
+# CONFIG_HISAX_W6692 is not set
+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 is not set
+
+#
+# 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 is not set
+# CONFIG_ISDN_DRV_AVMB1_T1PCI is not set
+# CONFIG_ISDN_DRV_AVMB1_C4 is not set
+CONFIG_CAPI_EICON=y
+# CONFIG_ISDN_DIVAS is not set
+# CONFIG_ISDN_DRV_GIGASET is not set
+# CONFIG_HYSDN is not set
+# CONFIG_MISDN is not set
+CONFIG_ISDN_HDLC=m
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=m
+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_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=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_IMX=m
+# 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_OMAP4=m
+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 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 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_RETU_PWRBUTTON=m
+CONFIG_INPUT_TWL4030_PWRBUTTON=m
+CONFIG_INPUT_TWL4030_VIBRA=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
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_PARKBD is not set
+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 is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+# CONFIG_NOZOMI is not set
+# 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 is not set
+CONFIG_SERIAL_8250_RSA=y
+CONFIG_SERIAL_8250_DW=y
+# CONFIG_SERIAL_8250_EM is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_AMBA_PL010=y
+CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+# 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 is not set
+# CONFIG_SERIAL_VT8500 is not set
+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 is not set
+# CONFIG_TTY_PRINTK is not set
+CONFIG_PRINTER=m
+CONFIG_LP_CONSOLE=y
+CONFIG_PPDEV=m
+# 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_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 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_ISCH is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+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_IMX=m
+# CONFIG_I2C_INTEL_MID is not set
+CONFIG_I2C_MV64XXX=y
+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_VERSATILE=m
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+CONFIG_I2C_DIOLAN_U2C=m
+CONFIG_I2C_PARPORT=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=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
+
+#
+# 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_PARPORT 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_IMX=y
+CONFIG_PINCTRL_IMX51=y
+CONFIG_PINCTRL_IMX53=y
+CONFIG_PINCTRL_IMX6Q=y
+CONFIG_PINCTRL_SINGLE=y
+CONFIG_PINCTRL_SUNXI=y
+# CONFIG_PINCTRL_EXYNOS is not set
+# CONFIG_PINCTRL_EXYNOS5440 is not set
+CONFIG_PINCTRL_MVEBU=y
+CONFIG_PINCTRL_ARMADA_370=y
+CONFIG_PINCTRL_ARMADA_XP=y
+CONFIG_PINCTRL_WMT=y
+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
+
+#
+# Memory mapped GPIO drivers:
+#
+CONFIG_GPIO_GENERIC_PLATFORM=y
+# 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_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_PCF857X is not set
+# CONFIG_GPIO_SX150X is not set
+CONFIG_GPIO_TWL4030=y
+# 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=m
+
+#
+# AC97 GPIO expanders:
+#
+
+#
+# MODULbus GPIO expanders:
+#
+
+#
+# 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_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_SBS is not set
+# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+CONFIG_CHARGER_88PM860X=m
+# CONFIG_BATTERY_RX51 is not set
+# CONFIG_CHARGER_ISP1704 is not set
+# CONFIG_CHARGER_MAX8903 is not set
+CONFIG_CHARGER_TWL4030=y
+# 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=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_I5K_AMB is not set
+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=y
+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 is not set
+# 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=m
+CONFIG_SENSORS_VEXPRESS=m
+# CONFIG_SENSORS_VIA686A is not set
+CONFIG_SENSORS_VT1211=m
+# CONFIG_SENSORS_VT8231 is not set
+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_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_IMX_THERMAL=m
+CONFIG_ARMADA_THERMAL=m
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_ARM_SP805_WATCHDOG=m
+# CONFIG_DW_WATCHDOG is not set
+CONFIG_MPCORE_WATCHDOG=m
+CONFIG_OMAP_WATCHDOG=m
+CONFIG_TWL4030_WATCHDOG=m
+# CONFIG_MAX63XX_WATCHDOG is not set
+CONFIG_IMX2_WDT=m
+CONFIG_RETU_WATCHDOG=m
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_I6300ESB_WDT is not set
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# 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 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 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_LPC_ICH is not set
+# CONFIG_LPC_SCH is not set
+# 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 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=m
+CONFIG_MFD_SM501_GPIO=y
+# CONFIG_MFD_SMSC is not set
+CONFIG_ABX500_CORE=y
+# CONFIG_AB3100_CORE is not set
+# CONFIG_MFD_STMPE is not set
+CONFIG_MFD_SYSCON=y
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP8788 is not set
+CONFIG_MFD_OMAP_USB_HOST=y
+# 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=y
+CONFIG_TWL4030_MADC=y
+CONFIG_TWL4030_POWER=y
+CONFIG_MFD_TWL4030_AUDIO=y
+# 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_MFD_VX855 is not set
+# 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_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 is not set
+# CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_FAN53555 is not set
+CONFIG_REGULATOR_ANATOP=m
+# 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_MAX8973 is not set
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 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_TWL4030=y
+CONFIG_REGULATOR_VEXPRESS=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=y
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
+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=y
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DMA_CONTIG=y
+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_TTPCI_EEPROM=m
+CONFIG_DVB_MAX_ADAPTERS=8
+CONFIG_DVB_DYNAMIC_MINORS=y
+
+#
+# Media drivers
+#
+CONFIG_RC_CORE=y
+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 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
+
+#
+# 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 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 is not set
+# CONFIG_DVB_TTUSB_DEC is not set
+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=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+# CONFIG_VIDEO_CAFE_CCIC is not set
+# CONFIG_VIDEO_DM6446_CCDC is not set
+CONFIG_VIDEO_OMAP2_VOUT_VRFB=y
+CONFIG_VIDEO_OMAP2_VOUT=y
+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 is not set
+# CONFIG_VIDEO_SH_MOBILE_CEU is not set
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+# CONFIG_VIDEO_CODA is not set
+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 is not set
+# CONFIG_MEDIA_PARPORT_SUPPORT is not set
+
+#
+# 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=y
+
+#
+# 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_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=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_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_GEM_CMA_HELPER=y
+CONFIG_DRM_KMS_CMA_HELPER=y
+
+#
+# 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_NOUVEAU is not set
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE is not set
+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 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_OMAP=m
+CONFIG_DRM_OMAP_NUM_CRTCS=2
+CONFIG_DRM_TILCDC=m
+# CONFIG_DRM_QXL is not set
+# CONFIG_TEGRA_HOST1X is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_VIDEOMODE_HELPERS=y
+CONFIG_HDMI=y
+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=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=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=m
+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_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+CONFIG_FB_ARMCLCD=m
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+# 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 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_VT8500 is not set
+# CONFIG_FB_WM8505 is not set
+# 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 is not set
+# CONFIG_FB_MB862XX is not set
+# CONFIG_FB_MX3 is not set
+# CONFIG_FB_BROADSHEET is not set
+# CONFIG_FB_AUO_K190X is not set
+# CONFIG_FB_SIMPLE is not set
+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=y
+CONFIG_OMAP2_DSS_VENC=y
+CONFIG_OMAP4_DSS_HDMI=y
+CONFIG_OMAP4_DSS_HDMI_AUDIO=y
+CONFIG_OMAP2_DSS_SDI=y
+CONFIG_OMAP2_DSS_DSI=y
+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=8
+CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
+CONFIG_FB_OMAP2=m
+CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
+CONFIG_FB_OMAP2_NUM_FBS=3
+
+#
+# OMAP2/3 Display Device Drivers
+#
+CONFIG_PANEL_GENERIC_DPI=m
+CONFIG_PANEL_TFP410=m
+CONFIG_PANEL_SHARP_LS037V7DW01=m
+CONFIG_PANEL_PICODLP=m
+CONFIG_PANEL_TAAL=m
+# 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 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
+# CONFIG_BACKLIGHT_PANDORA is not set
+# CONFIG_BACKLIGHT_TLC59108 is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=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_MTS64=m
+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=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 is not set
+# CONFIG_SND_HDA_INPUT_BEEP is not set
+# CONFIG_SND_HDA_INPUT_JACK is not set
+# 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_SPEAKERS is not set
+# CONFIG_SND_ISIGHT is not set
+# CONFIG_SND_SCS1X is not set
+CONFIG_SND_SOC=m
+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_PCM=m
+CONFIG_SND_SOC_IMX_PCM_DMA=y
+CONFIG_SND_SOC_IMX_AUDMUX=m
+CONFIG_SND_SOC_IMX_SGTL5000=m
+CONFIG_SND_OMAP_SOC=m
+CONFIG_SND_OMAP_SOC_MCBSP=m
+CONFIG_SND_OMAP_SOC_HDMI=m
+CONFIG_SND_OMAP_SOC_RX51=m
+CONFIG_SND_OMAP_SOC_AM3517EVM=m
+CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
+CONFIG_SND_OMAP_SOC_OMAP_HDMI=m
+CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
+CONFIG_SND_SOC_I2C_AND_SPI=m
+# CONFIG_SND_SOC_ALL_CODECS is not set
+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_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=y
+# 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 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=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 is not set
+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=y
+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=y
+# CONFIG_USB_CHIPIDEA_DEBUG is not set
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+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_MOS7715_PARPORT=y
+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_NOP_USB_XCEIV=m
+CONFIG_OMAP_CONTROL_USB=y
+CONFIG_OMAP_USB2=y
+CONFIG_OMAP_USB3=m
+CONFIG_SAMSUNG_USBPHY=m
+CONFIG_SAMSUNG_USB2PHY=m
+CONFIG_SAMSUNG_USB3PHY=m
+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_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 is not set
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MMC_SDHCI_PXAV3=m
+CONFIG_MMC_SDHCI_PXAV2=m
+CONFIG_MMC_OMAP=y
+CONFIG_MMC_OMAP_HS=y
+CONFIG_MMC_MXC=m
+# CONFIG_MMC_TIFM_SD is not set
+CONFIG_MMC_MVSDIO=y
+# CONFIG_MMC_CB710 is not set
+# CONFIG_MMC_VIA_SDMMC 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_DW_PCI is not set
+CONFIG_MMC_VUB300=m
+CONFIG_MMC_USHC=m
+CONFIG_MMC_WMT=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 is not set
+# CONFIG_MEMSTICK_JMICRON_38X is not set
+# CONFIG_MEMSTICK_R592 is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_88PM860X=y
+CONFIG_LEDS_LM3530=m
+CONFIG_LEDS_LM3533=m
+CONFIG_LEDS_LM3642=m
+CONFIG_LEDS_PCA9532=m
+CONFIG_LEDS_PCA9532_GPIO=y
+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_PCA955X=m
+CONFIG_LEDS_PCA9633=m
+CONFIG_LEDS_PWM=m
+CONFIG_LEDS_REGULATOR=m
+CONFIG_LEDS_BD2802=m
+CONFIG_LEDS_LT3593=m
+CONFIG_LEDS_RENESAS_TPU=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_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=y
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+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
+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_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_TWL4030=y
+# 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_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
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_IMXDI=m
+CONFIG_RTC_DRV_OMAP=y
+CONFIG_RTC_DRV_PL030=m
+CONFIG_RTC_DRV_PL031=m
+CONFIG_RTC_DRV_VT8500=m
+CONFIG_RTC_DRV_MV=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=y
+# CONFIG_DW_DMAC is not set
+CONFIG_MV_XOR=y
+CONFIG_MX3_IPU=y
+CONFIG_MX3_IPU_IRQS=4
+CONFIG_TIMB_DMA=m
+CONFIG_PL330_DMA=y
+CONFIG_IMX_SDMA=y
+CONFIG_IMX_DMA=y
+CONFIG_MXS_DMA=y
+CONFIG_DMA_OMAP=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
+
+#
+# DMA Clients
+#
+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 is not set
+# CONFIG_UIO_SERCOS3 is not set
+# CONFIG_UIO_PCI_GENERIC is not set
+# CONFIG_UIO_NETX is not set
+CONFIG_VIRT_DRIVERS=y
+
+#
+# Virtio drivers
+#
+# CONFIG_VIRTIO_PCI is not set
+# CONFIG_VIRTIO_MMIO is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+CONFIG_STAGING=y
+# CONFIG_ET131X is not set
+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_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_RTLLIB is not set
+# CONFIG_R8712U is not set
+CONFIG_RTS5139=m
+# CONFIG_RTS5139_DEBUG 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
+
+#
+# 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_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 is not set
+# CONFIG_BPCTL is not set
+CONFIG_CED1401=m
+CONFIG_DRM_IMX=m
+# CONFIG_DRM_IMX_FB_HELPER is not set
+CONFIG_DRM_IMX_PARALLEL_DISPLAY=m
+# CONFIG_DRM_IMX_TVE 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_VERSATILE=y
+CONFIG_COMMON_CLK_SI5351=m
+CONFIG_COMMON_CLK_AXI_CLKGEN=m
+CONFIG_MVEBU_CLK_CORE=y
+CONFIG_MVEBU_CLK_CPU=y
+CONFIG_MVEBU_CLK_GATING=y
+CONFIG_HWSPINLOCK=y
+
+#
+# Hardware Spinlock drivers
+#
+CONFIG_HWSPINLOCK_OMAP=y
+CONFIG_CLKSRC_OF=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_ARMADA_370_XP_TIMER=y
+CONFIG_SUN4I_TIMER=y
+CONFIG_VT8500_TIMER=y
+CONFIG_CADENCE_TTC_TIMER=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 is not set
+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_PWM_IMX=m
+# CONFIG_PWM_TIECAP is not set
+# CONFIG_PWM_TIEHRPWM is not set
+CONFIG_PWM_TWL=m
+CONFIG_PWM_TWL_LED=m
+CONFIG_PWM_VT8500=m
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC=y
+# 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_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_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_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=21
+# 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_RING_BUFFER_ALLOW_SWAP=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 is not set
+CONFIG_DEBUG_IMX_UART_PORT=1
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+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 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=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=y
+CONFIG_CRYPTO_SHA1_ARM=y
+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=y
+CONFIG_CRYPTO_DEV_OMAP_AES=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=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_BCH=m
+CONFIG_BCH_CONST_PARAMS=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_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 a517782..0000000
+++ /dev/null
@@ -1,3577 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.2.35 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 is not set
-# CONFIG_IP_VS_PROTO_UDP is not set
-# CONFIG_IP_VS_PROTO_AH_ESP is not set
-# CONFIG_IP_VS_PROTO_ESP is not set
-# CONFIG_IP_VS_PROTO_AH is not set
-# CONFIG_IP_VS_PROTO_SCTP is not set
-
-#
-# IPVS scheduler
-#
-# CONFIG_IP_VS_RR is not set
-# CONFIG_IP_VS_WRR is not set
-# CONFIG_IP_VS_LC is not set
-# CONFIG_IP_VS_WLC is not set
-# CONFIG_IP_VS_LBLC is not set
-# CONFIG_IP_VS_LBLCR is not set
-# CONFIG_IP_VS_DH is not set
-# CONFIG_IP_VS_SH is not set
-# CONFIG_IP_VS_SED is not set
-# CONFIG_IP_VS_NQ is not set
-
-#
-# IPVS application helper
-#
-# CONFIG_IP_VS_NFCT is not set
-
-#
-# 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 is not set
-# 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_UAS=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 a149d03b34137eb10e88d461be074ddf5edd0adb..2c709ccfca87f5beb40bb6b349828d4de4ca25dc 100644 (file)
@@ -1,40 +1,33 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.2.35 Kernel Configuration
+# Linux/arm 3.10.38 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_GPIO_H=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 +35,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 +47,74 @@ 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=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_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 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 +131,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 +157,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 +166,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 +203,37 @@ 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_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
 
+#
+# 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 +244,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
@@ -275,6 +306,7 @@ CONFIG_MACH_BCM2708=y
 CONFIG_BCM2708_GPIO=y
 CONFIG_BCM2708_VCMEM=y
 # CONFIG_BCM2708_NOL2CACHE is not set
+CONFIG_BCM2708_SPIDEV=y
 CONFIG_BCM2708_DMAER=m
 
 #
@@ -291,46 +323,44 @@ CONFIG_CPU_TLB_V6=y
 CONFIG_CPU_HAS_ASID=y
 CONFIG_CPU_CP15=y
 CONFIG_CPU_CP15_MMU=y
-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 +368,34 @@ 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_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 +417,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 +433,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 +457,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 +470,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 +486,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 +501,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 +509,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 +518,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 +530,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 +565,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 +581,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=y
 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 +608,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 +640,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 +662,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,17 +674,21 @@ 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_LAYER7=m
+# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG 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
@@ -623,8 +701,6 @@ 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
@@ -639,31 +715,38 @@ CONFIG_IP_VS_TAB_BITS=12
 #
 # IPVS transport protocol load balancing support
 #
-# CONFIG_IP_VS_PROTO_TCP is not set
-# CONFIG_IP_VS_PROTO_UDP is not set
-# CONFIG_IP_VS_PROTO_AH_ESP is not set
-# CONFIG_IP_VS_PROTO_ESP is not set
-# CONFIG_IP_VS_PROTO_AH is not set
-# CONFIG_IP_VS_PROTO_SCTP is not set
+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 is not set
-# CONFIG_IP_VS_WRR is not set
-# CONFIG_IP_VS_LC is not set
-# CONFIG_IP_VS_WLC is not set
-# CONFIG_IP_VS_LBLC is not set
-# CONFIG_IP_VS_LBLCR is not set
-# CONFIG_IP_VS_DH is not set
-# CONFIG_IP_VS_SH is not set
-# CONFIG_IP_VS_SED is not set
-# CONFIG_IP_VS_NQ is not set
+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_NFCT is not set
+CONFIG_IP_VS_FTP=m
+CONFIG_IP_VS_NFCT=y
+CONFIG_IP_VS_PE_SIP=m
 
 #
 # IP: Netfilter Configuration
@@ -671,37 +754,28 @@ CONFIG_IP_VS_TAB_BITS=12
 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
@@ -712,7 +786,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
@@ -721,13 +794,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,17 +843,15 @@ CONFIG_STP=m
 CONFIG_GARP=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
@@ -786,11 +859,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
 
 #
@@ -814,7 +886,11 @@ 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_PIE=m
 CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_PLUG=m
 
 #
 # Classification
@@ -830,6 +906,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
@@ -853,7 +930,17 @@ 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_NETPRIO_CGROUP=m
+CONFIG_BQL=y
+CONFIG_BPF_JIT=y
 
 #
 # Network testing
@@ -861,49 +948,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
@@ -922,6 +968,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
@@ -929,7 +976,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
@@ -947,7 +993,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
@@ -961,6 +1006,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
@@ -974,6 +1020,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
@@ -983,29 +1030,52 @@ CONFIG_CEPH_LIB=m
 # Generic Driver Options
 #
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-# CONFIG_DEVTMPFS is not set
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
 # 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_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_REGMAP_MMIO=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
@@ -1014,7 +1084,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
 
@@ -1048,6 +1118,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
@@ -1056,20 +1129,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
@@ -1082,9 +1152,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
 
@@ -1092,15 +1162,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
@@ -1115,7 +1186,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
@@ -1125,41 +1195,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
@@ -1193,7 +1272,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
@@ -1209,6 +1287,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
@@ -1229,31 +1309,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
@@ -1263,15 +1320,23 @@ 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_BUILTIN=y
 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
@@ -1282,27 +1347,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
@@ -1312,32 +1383,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
@@ -1345,14 +1432,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
@@ -1361,6 +1455,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
@@ -1370,6 +1465,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
@@ -1396,11 +1495,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
@@ -1419,34 +1521,118 @@ 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_LIBERTAS_UAP=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
@@ -1464,6 +1650,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
@@ -1559,7 +1750,6 @@ CONFIG_MISDN_L1OIP=m
 #
 CONFIG_MISDN_HFCUSB=m
 CONFIG_ISDN_HDLC=m
-# CONFIG_PHONE is not set
 
 #
 # Input device support
@@ -1568,6 +1758,7 @@ CONFIG_INPUT=y
 CONFIG_INPUT_FF_MEMLESS=m
 CONFIG_INPUT_POLLDEV=m
 CONFIG_INPUT_SPARSEKMAP=m
+CONFIG_INPUT_MATRIXKMAP=m
 
 #
 # Userland interfaces
@@ -1577,7 +1768,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
 
 #
@@ -1592,13 +1783,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
@@ -1607,23 +1801,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
 
 #
@@ -1637,11 +1832,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
@@ -1660,7 +1858,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
@@ -1669,6 +1869,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
@@ -1677,15 +1878,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
@@ -1697,13 +1904,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
@@ -1713,6 +1924,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
@@ -1730,9 +1942,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
@@ -1755,7 +1969,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
@@ -1779,9 +2031,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
@@ -1791,8 +2047,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:
@@ -1802,6 +2061,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:
@@ -1810,16 +2070,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
 
@@ -1837,28 +2103,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
@@ -1866,14 +2144,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
@@ -1889,12 +2172,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
@@ -1910,14 +2196,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
@@ -1948,7 +2240,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
@@ -1965,6 +2260,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
@@ -1974,9 +2277,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
 
 #
@@ -1989,57 +2292,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
@@ -2047,265 +2385,439 @@ 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_VIDEO_BCM2835=y
+CONFIG_VIDEO_BCM2835_MMAL=m
+# CONFIG_V4L_MEM2MEM_DRIVERS is not set
+# CONFIG_V4L_TEST_DRIVERS is not set
+
+#
+# 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
 
 #
-# Encoders, decoders, sensors and other helper chips
+# 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)
-#
-# 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
+# Sensors used on soc_camera driver
 #
-# 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
@@ -2316,8 +2828,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
@@ -2331,7 +2856,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
@@ -2346,32 +2870,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
@@ -2387,6 +2896,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
@@ -2395,6 +2905,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
@@ -2432,6 +2943,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
@@ -2439,39 +2951,53 @@ 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_SOC_DMAENGINE_PCM=y
+CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+# CONFIG_SND_ATMEL_SOC is not set
+CONFIG_SND_BCM2708_SOC_I2S=m
+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
+CONFIG_SND_BCM2708_SOC_RPI_DAC=m
+# CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC 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_SOC_PCM1794A=m
+CONFIG_SND_SOC_PCM5102A=m
+# CONFIG_SND_SOC_PCM512x is not set
+CONFIG_SND_SOC_WM8804=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 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
@@ -2479,18 +3005,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
@@ -2499,41 +3027,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
@@ -2541,31 +3079,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
@@ -2598,21 +3131,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
@@ -2630,19 +3162,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
@@ -2655,15 +3189,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
 
 #
@@ -2688,20 +3226,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
@@ -2727,9 +3260,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
@@ -2750,39 +3285,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
 
 #
@@ -2797,7 +3346,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
@@ -2807,6 +3355,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
@@ -2822,6 +3371,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
@@ -2839,13 +3398,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
 
@@ -2854,26 +3419,34 @@ 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_BCM2708=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=m
 # CONFIG_AUXDISPLAY is not set
 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
@@ -2881,21 +3454,114 @@ 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_RTS5139=m
+# CONFIG_RTS5139_DEBUG 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
@@ -2907,23 +3573,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
@@ -2944,9 +3736,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
@@ -2955,6 +3752,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
@@ -2966,6 +3764,7 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=m
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
+CONFIG_GENERIC_ACL=y
 
 #
 # Caches
@@ -3003,10 +3802,9 @@ 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
@@ -3014,6 +3812,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
@@ -3043,6 +3842,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
@@ -3050,21 +3850,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
@@ -3072,6 +3875,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
@@ -3080,36 +3884,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
@@ -3149,6 +3932,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
 
 #
@@ -3161,6 +3955,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
@@ -3168,7 +3963,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
@@ -3179,6 +3975,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
@@ -3186,7 +3983,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
@@ -3204,47 +4000,221 @@ 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
 #
+
+#
+# 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 is not set
+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_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 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_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
@@ -3275,7 +4245,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
@@ -3302,6 +4272,7 @@ CONFIG_CRYPTO_XTS=m
 #
 # Hash modes
 #
+CONFIG_CRYPTO_CMAC=m
 CONFIG_CRYPTO_HMAC=y
 CONFIG_CRYPTO_XCBC=m
 CONFIG_CRYPTO_VMAC=m
@@ -3309,7 +4280,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
@@ -3319,7 +4291,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
@@ -3327,12 +4300,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
@@ -3360,6 +4335,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
 
 #
@@ -3367,11 +4346,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
@@ -3401,7 +4389,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 51f34133aa2a0ef22fd5b0faebf2de8651a4c7e9..329d96d5ff88bfc212facc6868f8f7cf2d7fc4da 100644 (file)
@@ -1,46 +1,34 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/i386 3.2.35 Kernel Configuration
+# Linux/x86 3.10.40-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_INTEL_PSTATE is not set
 CONFIG_X86_PCC_CPUFREQ=m
 CONFIG_X86_ACPI_CPUFREQ=m
+# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
 CONFIG_X86_POWERNOW_K6=m
 CONFIG_X86_POWERNOW_K7=m
 CONFIG_X86_POWERNOW_K7_ACPI=y
 CONFIG_X86_POWERNOW_K8=m
+CONFIG_X86_AMD_FREQ_SENSITIVITY=m
 CONFIG_X86_GX_SUSPMOD=m
-CONFIG_X86_SPEEDSTEP_CENTRINO=m
-CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
 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_E_POWERSAVER is not set
 
 #
 # shared options
 #
 CONFIG_X86_SPEEDSTEP_LIB=m
-# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
+CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=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
 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=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# 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,17 @@ 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_APULED=y
 CONFIG_ALIX=y
+CONFIG_NET5501=y
+CONFIG_GEOS=y
 CONFIG_AMD_NB=y
 CONFIG_PCCARD=m
 CONFIG_PCMCIA=m
@@ -584,17 +683,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 +710,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 +725,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 +733,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 +768,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 +788,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 +809,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 +837,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 +867,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 +894,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 +906,21 @@ 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_LAYER7=m
+# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG 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
@@ -783,14 +933,24 @@ 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_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
@@ -799,69 +959,67 @@ CONFIG_IP_VS_TAB_BITS=12
 #
 # IPVS transport protocol load balancing support
 #
-# CONFIG_IP_VS_PROTO_TCP is not set
-# CONFIG_IP_VS_PROTO_UDP is not set
-# CONFIG_IP_VS_PROTO_AH_ESP is not set
-# CONFIG_IP_VS_PROTO_ESP is not set
-# CONFIG_IP_VS_PROTO_AH is not set
-# CONFIG_IP_VS_PROTO_SCTP is not set
+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 is not set
-# CONFIG_IP_VS_WRR is not set
-# CONFIG_IP_VS_LC is not set
-# CONFIG_IP_VS_WLC is not set
-# CONFIG_IP_VS_LBLC is not set
-# CONFIG_IP_VS_LBLCR is not set
-# CONFIG_IP_VS_DH is not set
-# CONFIG_IP_VS_SH is not set
-# CONFIG_IP_VS_SED is not set
-# CONFIG_IP_VS_NQ is not set
+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_NFCT is not set
+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_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
@@ -870,10 +1028,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
@@ -881,13 +1038,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
@@ -908,49 +1069,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_STP=y
 CONFIG_GARP=m
-CONFIG_BRIDGE=m
+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
 
 #
@@ -974,7 +1138,11 @@ 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_PIE=m
 CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_PLUG=m
 
 #
 # Classification
@@ -990,6 +1158,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
@@ -997,6 +1166,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
@@ -1013,67 +1183,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
@@ -1092,11 +1225,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
@@ -1104,9 +1238,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
@@ -1118,10 +1250,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
@@ -1129,23 +1262,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
 
 #
@@ -1155,100 +1289,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
@@ -1267,65 +1332,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
@@ -1337,62 +1410,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 is not set
+# CONFIG_INTEL_MEI_ME is not set
+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
@@ -1412,25 +1486,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
@@ -1444,10 +1516,17 @@ 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_HYPERV_STORAGE=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
 CONFIG_FCOE=m
@@ -1456,18 +1535,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
@@ -1476,7 +1551,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
@@ -1486,24 +1560,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
@@ -1512,13 +1583,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
@@ -1527,16 +1600,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
@@ -1554,7 +1628,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
@@ -1577,7 +1652,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
@@ -1585,7 +1660,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
@@ -1618,6 +1693,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
@@ -1629,75 +1705,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_BUILTIN=y
+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
@@ -1708,22 +1802,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
@@ -1735,20 +1821,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
@@ -1764,7 +1860,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
@@ -1772,6 +1867,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
@@ -1781,8 +1880,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
@@ -1791,26 +1892,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
@@ -1821,47 +1921,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
@@ -1875,61 +1960,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
@@ -1937,9 +2008,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
@@ -1953,16 +2025,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
@@ -1971,15 +2051,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
@@ -1993,12 +2074,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
@@ -2007,11 +2084,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
@@ -2030,14 +2110,18 @@ 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_LIBERTAS_UAP=m
 CONFIG_AIRO=m
 CONFIG_ATMEL=m
 CONFIG_PCI_ATMEL=m
@@ -2048,74 +2132,177 @@ 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_HYPERV_NET=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
 CONFIG_ISDN_PPP=y
@@ -2145,9 +2332,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
@@ -2155,27 +2342,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
@@ -2183,15 +2370,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
@@ -2204,10 +2391,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
@@ -2219,12 +2406,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
@@ -2262,15 +2448,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
@@ -2280,57 +2466,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
 
 #
@@ -2343,123 +2555,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
@@ -2480,6 +2703,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
@@ -2497,16 +2721,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
@@ -2514,21 +2740,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
 #
@@ -2551,67 +2789,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_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
@@ -2619,29 +2866,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
 
@@ -2658,6 +2915,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
@@ -2678,12 +2937,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
@@ -2701,14 +2962,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
@@ -2717,20 +2983,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
@@ -2741,6 +3007,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
@@ -2767,14 +3035,25 @@ 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_RETU_WATCHDOG=m
 CONFIG_ACQUIRE_WDT=m
 CONFIG_ADVANTECH_WDT=m
 CONFIG_ALIM1535_WDT=m
@@ -2789,8 +3068,9 @@ CONFIG_IB700_WDT=m
 CONFIG_IBMASR=m
 CONFIG_WAFER_WDT=m
 CONFIG_I6300ESB_WDT=m
+CONFIG_IE6XX_WDT=m
 CONFIG_ITCO_WDT=m
-# CONFIG_ITCO_VENDOR_SUPPORT is not set
+CONFIG_ITCO_VENDOR_SUPPORT=y
 CONFIG_IT8712F_WDT=m
 CONFIG_IT87_WDT=m
 CONFIG_HP_WATCHDOG=m
@@ -2805,6 +3085,7 @@ CONFIG_SBC7240_WDT=m
 CONFIG_CPU5_WDT=m
 CONFIG_SMSC_SCH311X_WDT=m
 CONFIG_SMSC37B787_WDT=m
+CONFIG_VIA_WDT=m
 CONFIG_W83627HF_WDT=m
 CONFIG_W83697HF_WDT=m
 CONFIG_W83697UG_WDT=m
@@ -2837,397 +3118,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
-
-#
-# 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_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
 
 #
-# Flash devices
+# Supported MMC/SDIO adapters
 #
-# CONFIG_VIDEO_ADP1653 is not set
+# CONFIG_SMS_SDIO_DRV is not set
+# CONFIG_MEDIA_PARPORT_SUPPORT 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
@@ -3237,27 +3750,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
@@ -3266,9 +3792,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
@@ -3282,7 +3817,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
@@ -3293,45 +3827,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
@@ -3342,17 +3869,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
@@ -3363,43 +3886,40 @@ 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_FB_HYPERV=m
+# 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
+# CONFIG_BACKLIGHT_OT200 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
@@ -3408,8 +3928,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
@@ -3432,9 +3952,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
@@ -3447,7 +3970,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
@@ -3457,7 +3980,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
@@ -3470,6 +3993,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
@@ -3507,7 +4031,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
@@ -3550,11 +4074,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
@@ -3563,11 +4086,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
@@ -3586,7 +4109,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
@@ -3605,103 +4128,111 @@ 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_HYPERV_MOUSE 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
@@ -3709,14 +4240,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
@@ -3726,26 +4255,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
@@ -3762,7 +4296,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
@@ -3778,21 +4312,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
@@ -3802,7 +4339,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
@@ -3810,16 +4347,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
@@ -3828,22 +4367,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
 
 #
@@ -3851,14 +4393,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
@@ -3868,21 +4410,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
@@ -3898,23 +4436,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
 
@@ -3930,6 +4472,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
 
@@ -3937,43 +4480,74 @@ CONFIG_LEDS_CLASS=y
 # LED drivers
 #
 CONFIG_LEDS_LM3530=m
-CONFIG_LEDS_NET48XX=m
-CONFIG_LEDS_NET5501=m
-CONFIG_LEDS_WRAP=m
+CONFIG_LEDS_LM3533=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_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_REGULATOR=m
+CONFIG_LEDS_PCA9633=m
 CONFIG_LEDS_BD2802=m
 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
 
@@ -3998,12 +4572,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
@@ -4023,55 +4598,72 @@ 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=m
+CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_BALLOON=m
 CONFIG_STAGING=y
 CONFIG_ET131X=m
 CONFIG_SLICOSS=m
@@ -4081,48 +4673,100 @@ 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_RTS5139=m
+# CONFIG_RTS5139_DEBUG 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=m
-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
@@ -4133,17 +4777,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
@@ -4151,7 +4810,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
@@ -4161,21 +4820,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
@@ -4184,55 +4856,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_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
-CONFIG_DEVFREQ_GOV_PERFORMANCE=y
-CONFIG_DEVFREQ_GOV_POWERSAVE=y
-CONFIG_DEVFREQ_GOV_USERSPACE=y
+# CONFIG_STE_MODEM_RPROC is not set
 
 #
-# DEVFREQ Drivers
+# 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_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
@@ -4240,43 +5000,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
@@ -4287,7 +5051,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
@@ -4297,10 +5061,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
 
 #
@@ -4309,39 +5073,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
@@ -4350,113 +5097,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
@@ -4466,27 +5217,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
@@ -4494,10 +5250,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
@@ -4507,38 +5263,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
@@ -4546,19 +5343,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
@@ -4570,20 +5365,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
@@ -4592,58 +5556,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
@@ -4651,18 +5617,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
@@ -4670,23 +5638,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
@@ -4695,7 +5665,7 @@ CONFIG_CRYPTO_TWOFISH_586=m
 #
 # Compression
 #
-CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
 
@@ -4703,9 +5673,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
@@ -4713,37 +5683,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
@@ -4760,6 +5748,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
@@ -4769,6 +5758,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 6f39769a289d8d7d9dda0419145c4d1cf0752929..f395f3116ed774983ea6d964d9ba1799346ec595 100644 (file)
@@ -1,46 +1,34 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/i386 3.2.35 Kernel Configuration
+# Linux/x86 3.10.40-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
@@ -316,23 +377,18 @@ CONFIG_M586TSC=y
 # CONFIG_MCORE2 is not set
 # CONFIG_MATOM is not set
 CONFIG_X86_GENERIC=y
-CONFIG_X86_INTERNODE_CACHE_SHIFT=7
-CONFIG_X86_CMPXCHG=y
-CONFIG_CMPXCHG_LOCAL=y
-CONFIG_CMPXCHG_DOUBLE=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
 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,52 +412,54 @@ 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=y
-# CONFIG_NUMA_EMU is not set
-CONFIG_NODES_SHIFT=3
-CONFIG_HAVE_ARCH_BOOTMEM=y
-CONFIG_HAVE_ARCH_ALLOC_REMAP=y
-CONFIG_ARCH_HAVE_MEMORY_PRESENT=y
-CONFIG_NEED_NODE_MEMMAP_SIZE=y
-CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
-CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
+# CONFIG_NUMA is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
 CONFIG_ILLEGAL_POINTER_VALUE=0
 CONFIG_SELECT_MEMORY_MODEL=y
-CONFIG_DISCONTIGMEM_MANUAL=y
+CONFIG_FLATMEM_MANUAL=y
 # CONFIG_SPARSEMEM_MANUAL is not set
-CONFIG_DISCONTIGMEM=y
+CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_NEED_MULTIPLE_NODES=y
-CONFIG_HAVE_MEMORY_PRESENT=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
@@ -412,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
@@ -434,15 +500,16 @@ 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
-CONFIG_USE_PERCPU_NUMA_NODE_ID=y
 
 #
 # Power management and ACPI options
@@ -450,44 +517,55 @@ CONFIG_USE_PERCPU_NUMA_NODE_ID=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_NUMA is not set
-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
@@ -498,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_INTEL_PSTATE is not set
 CONFIG_X86_PCC_CPUFREQ=m
 CONFIG_X86_ACPI_CPUFREQ=m
+# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
 CONFIG_X86_POWERNOW_K6=m
 CONFIG_X86_POWERNOW_K7=m
 CONFIG_X86_POWERNOW_K7_ACPI=y
 CONFIG_X86_POWERNOW_K8=m
+CONFIG_X86_AMD_FREQ_SENSITIVITY=m
 CONFIG_X86_GX_SUSPMOD=m
-CONFIG_X86_SPEEDSTEP_CENTRINO=m
-CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
 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_E_POWERSAVER is not set
 
 #
 # shared options
 #
 CONFIG_X86_SPEEDSTEP_LIB=m
-# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
+CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=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
 CONFIG_INTEL_IDLE=y
 
 #
@@ -555,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=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# 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
@@ -576,16 +665,15 @@ 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_APULED=y
+# 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
@@ -607,17 +695,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
@@ -626,10 +722,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
@@ -638,7 +737,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
@@ -646,28 +745,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
@@ -678,13 +780,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
@@ -696,14 +800,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
@@ -713,13 +821,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
@@ -736,14 +849,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
@@ -752,20 +879,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
 
@@ -773,9 +906,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
@@ -783,17 +918,21 @@ 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_LAYER7=m
+# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG 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
@@ -806,14 +945,24 @@ 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_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
@@ -822,69 +971,67 @@ CONFIG_IP_VS_TAB_BITS=12
 #
 # IPVS transport protocol load balancing support
 #
-# CONFIG_IP_VS_PROTO_TCP is not set
-# CONFIG_IP_VS_PROTO_UDP is not set
-# CONFIG_IP_VS_PROTO_AH_ESP is not set
-# CONFIG_IP_VS_PROTO_ESP is not set
-# CONFIG_IP_VS_PROTO_AH is not set
-# CONFIG_IP_VS_PROTO_SCTP is not set
+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 is not set
-# CONFIG_IP_VS_WRR is not set
-# CONFIG_IP_VS_LC is not set
-# CONFIG_IP_VS_WLC is not set
-# CONFIG_IP_VS_LBLC is not set
-# CONFIG_IP_VS_LBLCR is not set
-# CONFIG_IP_VS_DH is not set
-# CONFIG_IP_VS_SH is not set
-# CONFIG_IP_VS_SED is not set
-# CONFIG_IP_VS_NQ is not set
+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_NFCT is not set
+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_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
@@ -893,10 +1040,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
@@ -904,13 +1050,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
@@ -931,49 +1081,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_STP=y
 CONFIG_GARP=m
-CONFIG_BRIDGE=m
+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
 
 #
@@ -997,7 +1150,11 @@ 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_PIE=m
 CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_PLUG=m
 
 #
 # Classification
@@ -1013,6 +1170,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
@@ -1020,6 +1178,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
@@ -1036,67 +1195,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
@@ -1115,11 +1237,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
@@ -1127,9 +1250,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
@@ -1141,10 +1262,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
@@ -1152,23 +1274,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
 
 #
@@ -1178,100 +1301,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
@@ -1290,67 +1343,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
@@ -1362,62 +1423,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 is not set
+# CONFIG_INTEL_MEI_ME is not set
+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
@@ -1437,25 +1499,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
@@ -1469,10 +1529,17 @@ 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_HYPERV_STORAGE=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
 CONFIG_FCOE=m
@@ -1481,18 +1548,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
@@ -1501,7 +1564,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
@@ -1511,24 +1573,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
@@ -1537,13 +1596,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
@@ -1552,16 +1613,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
@@ -1579,7 +1641,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
@@ -1602,7 +1665,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
@@ -1610,7 +1673,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
@@ -1643,6 +1706,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
@@ -1654,75 +1718,94 @@ 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_BUILTIN=y
+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
@@ -1733,22 +1816,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
@@ -1760,20 +1835,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
@@ -1789,7 +1874,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
@@ -1797,6 +1881,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
@@ -1806,8 +1894,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
@@ -1816,26 +1906,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
@@ -1846,47 +1935,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
@@ -1900,61 +1974,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
@@ -1962,9 +2022,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
@@ -1978,16 +2039,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
@@ -1996,15 +2065,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
@@ -2018,12 +2088,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
@@ -2032,11 +2098,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
@@ -2055,14 +2124,18 @@ 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_LIBERTAS_UAP=m
 CONFIG_AIRO=m
 CONFIG_ATMEL=m
 CONFIG_PCI_ATMEL=m
@@ -2073,76 +2146,179 @@ 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
+CONFIG_HYPERV_NET=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
 CONFIG_ISDN_PPP=y
@@ -2172,9 +2348,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
@@ -2182,27 +2358,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
@@ -2210,15 +2386,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
@@ -2231,10 +2407,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
@@ -2246,12 +2422,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
@@ -2289,15 +2464,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
@@ -2307,59 +2482,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
@@ -2371,125 +2572,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
@@ -2510,6 +2722,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
@@ -2527,16 +2740,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
@@ -2544,21 +2759,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
 #
@@ -2581,67 +2808,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
@@ -2649,29 +2885,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
 
@@ -2688,6 +2934,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
@@ -2708,12 +2956,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
@@ -2731,14 +2981,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
@@ -2747,20 +3002,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
@@ -2771,6 +3026,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
@@ -2797,14 +3054,25 @@ 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_RETU_WATCHDOG=m
 CONFIG_ACQUIRE_WDT=m
 CONFIG_ADVANTECH_WDT=m
 CONFIG_ALIM1535_WDT=m
@@ -2819,14 +3087,14 @@ CONFIG_IB700_WDT=m
 CONFIG_IBMASR=m
 CONFIG_WAFER_WDT=m
 CONFIG_I6300ESB_WDT=m
+CONFIG_IE6XX_WDT=m
 CONFIG_ITCO_WDT=m
-# CONFIG_ITCO_VENDOR_SUPPORT is not set
+CONFIG_ITCO_VENDOR_SUPPORT=y
 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_NV_TCO=m
 CONFIG_60XX_WDT=m
@@ -2835,6 +3103,7 @@ CONFIG_SBC7240_WDT=m
 CONFIG_CPU5_WDT=m
 CONFIG_SMSC_SCH311X_WDT=m
 CONFIG_SMSC37B787_WDT=m
+CONFIG_VIA_WDT=m
 CONFIG_W83627HF_WDT=m
 CONFIG_W83697HF_WDT=m
 CONFIG_W83697UG_WDT=m
@@ -2868,397 +3137,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
-
-#
-# 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_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
 
 #
-# Flash devices
+# Supported MMC/SDIO adapters
 #
-# CONFIG_VIDEO_ADP1653 is not set
+# CONFIG_SMS_SDIO_DRV is not set
+# CONFIG_MEDIA_PARPORT_SUPPORT 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
@@ -3268,27 +3769,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
@@ -3297,9 +3811,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
@@ -3313,7 +3836,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
@@ -3324,45 +3846,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
@@ -3373,17 +3888,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
@@ -3394,44 +3905,40 @@ 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_FB_HYPERV=m
+# 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
@@ -3440,8 +3947,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
@@ -3464,9 +3971,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
@@ -3479,7 +3989,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
@@ -3489,7 +3999,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
@@ -3502,6 +4012,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
@@ -3539,7 +4050,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
@@ -3582,11 +4093,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
@@ -3595,11 +4105,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
@@ -3618,7 +4128,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
@@ -3637,103 +4147,111 @@ 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_HYPERV_MOUSE 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
@@ -3741,14 +4259,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
@@ -3758,26 +4274,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
@@ -3794,7 +4315,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
@@ -3810,21 +4331,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
@@ -3834,7 +4358,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
@@ -3842,16 +4366,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
@@ -3860,22 +4386,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
 
 #
@@ -3883,14 +4412,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
@@ -3900,21 +4429,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
@@ -3930,23 +4455,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
 
@@ -3962,6 +4491,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
 
@@ -3969,43 +4499,74 @@ CONFIG_LEDS_CLASS=y
 # LED drivers
 #
 CONFIG_LEDS_LM3530=m
-CONFIG_LEDS_NET48XX=m
-CONFIG_LEDS_NET5501=m
-CONFIG_LEDS_WRAP=m
+CONFIG_LEDS_LM3533=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_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_REGULATOR=m
+CONFIG_LEDS_PCA9633=m
 CONFIG_LEDS_BD2802=m
 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
 
@@ -4030,12 +4591,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
@@ -4055,60 +4617,78 @@ 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=m
+CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_BALLOON=m
 
 #
 # 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
@@ -4119,7 +4699,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
@@ -4129,48 +4713,100 @@ 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_RTS5139=m
+# CONFIG_RTS5139_DEBUG 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=m
-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
@@ -4181,17 +4817,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
@@ -4199,7 +4850,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
@@ -4209,21 +4860,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
@@ -4232,55 +4896,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_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
-CONFIG_DEVFREQ_GOV_PERFORMANCE=y
-CONFIG_DEVFREQ_GOV_POWERSAVE=y
-CONFIG_DEVFREQ_GOV_USERSPACE=y
+# CONFIG_STE_MODEM_RPROC is not set
 
 #
-# DEVFREQ Drivers
+# 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_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
@@ -4288,43 +5040,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
@@ -4335,7 +5091,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
@@ -4345,10 +5101,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
 
 #
@@ -4357,39 +5113,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
@@ -4398,113 +5137,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
@@ -4514,27 +5257,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
@@ -4542,10 +5290,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
@@ -4555,38 +5303,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
@@ -4594,19 +5383,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
@@ -4618,20 +5405,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
@@ -4640,58 +5594,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
@@ -4699,18 +5655,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
@@ -4718,23 +5676,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
@@ -4743,7 +5703,7 @@ CONFIG_CRYPTO_TWOFISH_586=m
 #
 # Compression
 #
-CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
 
@@ -4751,45 +5711,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
@@ -4806,6 +5784,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
@@ -4815,6 +5794,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 dcdf545..0000000
+++ /dev/null
@@ -1,3747 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.32.60
-# Sat Dec  8 11:41:33 2012
-#
-# 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 is not set
-# CONFIG_IP_VS_PROTO_UDP is not set
-# CONFIG_IP_VS_PROTO_ESP is not set
-# CONFIG_IP_VS_PROTO_AH is not set
-
-#
-# IPVS scheduler
-#
-# CONFIG_IP_VS_RR is not set
-# CONFIG_IP_VS_WRR is not set
-# CONFIG_IP_VS_LC is not set
-# CONFIG_IP_VS_WLC is not set
-# CONFIG_IP_VS_LBLC is not set
-# CONFIG_IP_VS_LBLCR is not set
-# CONFIG_IP_VS_DH is not set
-# CONFIG_IP_VS_SH is not set
-# CONFIG_IP_VS_SED is not set
-# CONFIG_IP_VS_NQ is not set
-
-#
-# IPVS application helper
-#
-
-#
-# 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
diff --git a/config/lcdproc/LCDd.conf b/config/lcdproc/LCDd.conf
new file mode 100644 (file)
index 0000000..8c418f4
--- /dev/null
@@ -0,0 +1,1189 @@
+# LCDd.conf -- configuration file for the LCDproc server daemon LCDd
+#
+# This file contains the configuration for the LCDd server.
+#
+# The format is ini-file-like. It is divided into sections that start at
+# markers that look like [section]. Comments are all line-based comments,
+# and are lines that start with '#' or ';'.
+#
+# The server has a 'central' section named [server]. For the menu there is
+# a section called [menu]. Further each driver has a section which
+# defines how the driver acts.
+#
+# The drivers are activated by specifying them in a driver= line in the
+# server section, like:
+#
+#   Driver=curses
+#
+# This tells LCDd to use the curses driver.
+# The first driver that is loaded and is capable of output defines the
+# size of the display. The default driver to use is curses.
+# If the driver is specified using the -d <driver> command line option,
+# the Driver= options in the config file are ignored.
+#
+# The drivers read their own options from the respective sections.
+
+## Server section with all kinds of settings for the LCDd server ##
+[server]
+
+# Where can we find the driver modules ?
+# IMPORTANT: Make sure to change this setting to reflect your
+#            specific setup! Otherwise LCDd won't be able to find
+#            the driver modules and will thus not be able to
+#            function properly.
+# NOTE: Always place a slash as last character !
+DriverPath=/usr/lib/lcdproc/
+
+# Tells the server to load the given drivers. Multiple lines can be given.
+# The name of the driver is case sensitive and determines the section
+# where to look for further configuration options of the specific driver
+# as well as the name of the dynamic driver module to load at runtime.
+# The latter one can be changed by giving a File= directive in the
+# driver specific section.
+#
+# The following drivers are supported:
+#   bayrad, CFontz, CFontz633, CFontzPacket, curses, CwLnx, ea65,
+#   EyeboxOne, g15, glcdlib, glk, hd44780, icp_a106, imon, imonlcd,
+#   IOWarrior, irman, joy, lb216, lcdm001, lcterm, lirc, lis, MD8800,
+#   mdm166a, ms6931, mtc_s16209x, MtxOrb, mx5000, NoritakeVFD, picolcd,
+#   pyramid, sed1330, sed1520, serialPOS, serialVFD, shuttleVFD, sli,
+#   stv5730, svga, t6963, text, tyan, ula200, xosd
+Driver=CFontz
+
+# Tells the driver to bind to the given interface
+Bind=127.0.0.1
+
+# Listen on this specified port; defaults to 13666.
+Port=13666
+
+# Sets the reporting level; defaults to 2 (warnings and errors only).
+#ReportLevel=3
+
+# Should we report to syslog instead of stderr ? [default: no; legal: yes, no]
+#ReportToSyslog=yes
+
+# User to run as.  LCDd will drop its root privileges, if any,
+# and run as this user instead.
+User=root
+
+# The server will stay in the foreground if set to true.
+#Foreground=no
+
+# Hello message: each entry represents a display line; default: builtin
+#Hello="  Welcome to"
+#Hello="   LCDproc!"
+
+# GoodBye message: each entry represents a display line; default: builtin
+#GoodBye="Thanks for using"
+#GoodBye="   LCDproc!"
+
+# Sets the default time in seconds to displays a screen.
+WaitTime=10
+
+# If set to no, LCDd will start with screen rotation disabled. This has the
+# same effect as if the ToggleRotateKey had been pressed. Rotation will start
+# if the ToggleRotateKey is pressed. Note that this setting does not turn off
+# priority sorting of screens. [default: on; legal: on, off]
+#AutoRotate=no
+
+# If yes, the the serverscreen will be rotated as a usual info screen. If no,
+# it will be a background screen, only visible when no other screens are
+# active. The special value 'blank' is similar to no, but only a blank screen
+# is displayed. [default: on; legal: on, off, blank]
+#ServerScreen=no
+
+# Set master backlight setting. If set to 'open' a client may control the
+# backlight for its own screens (only). [default: open; legal: off, open, on]
+#Backlight=open
+
+# Set master heartbeat setting. If set to 'open' a client may control the
+# heartbeat for its own screens (only). [default: open; legal: off, open, on]
+#Heartbeat=open
+
+# set title scrolling speed [default: 10; legal: 0-10]
+#TitleSpeed=10
+
+# The "...Key=" lines define what the server does with keypresses that
+# don't go to any client. The ToggleRotateKey stops rotation of screens, while
+# the PrevScreenKey and NextScreenKey go back / forward one screen (even if
+# rotation is disabled.
+# Assign the key string returned by the driver to the ...Key setting. These
+# are the defaults:
+ToggleRotateKey=Enter
+PrevScreenKey=Left
+NextScreenKey=Right
+#ScrollUpKey=Up
+#ScrollDownKey=Down
+
+
+## The menu section. The menu is an internal LCDproc client. ##
+[menu]
+# You can configure what keys the menu should use. Note that the MenuKey
+# will be reserved exclusively, the others work in shared mode.
+
+# Up to six keys are supported. The MenuKey (to enter and exit the menu), the
+# EnterKey (to select values) and at least one movement keys are required.
+# These are the default key assignments:
+MenuKey=Escape
+EnterKey=Enter
+UpKey=Up
+DownKey=Down
+#LeftKey=Left
+#RightKey=Right
+
+
+### Driver sections are below this line, in alphabetical order  ###
+
+
+## EMAC BayRAD driver ##
+[bayrad]
+
+# Select the output device to use [default: /dev/lcd]
+Device=/dev/lcd
+
+# Set the communication speed [default: 9600; legal:  1200, 2400, 9600, 19200]
+Speed=9600
+
+
+
+## CrystalFontz driver (for CF632 & CF634) ##
+[CFontz]
+
+# Select the output device to use [default: /dev/lcd]
+Device=/dev/ttyS0
+# Select the LCD size [default: 20x4]
+Size=20x4
+# Set the initial contrast [default: 560; legal: 0 - 1000]
+Contrast=560
+# Set the initial brightness [default: 1000; legal: 0 - 1000]
+Brightness=800
+# Set the initial off-brightness [default: 0; legal: 0 - 1000]
+# This value is used when the display is normally
+# switched off in case LCDd is inactive
+OffBrightness=800
+# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200,
+# 115200]
+Speed=19200
+# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no]
+NewFirmware=yes
+# Reinitialize the LCD's BIOS [default: no; legal: yes, no]
+# normally you shouldn't need this
+Reboot=no
+
+
+
+## CrystalFontz633 driver (for CF633 only) ##
+[CFontz633]
+# Note: Use of this driver is deprecated, please use CFontzPacket driver
+# with Model=633 instead.
+
+# Select the output device to use [default: /dev/lcd]
+Device=/dev/ttyS0
+# Select the LCD type (size) [default: 16x2]
+Size=16x2
+# Set the initial contrast [default: 560; legal: 0 - 1000]
+Contrast=350
+# Set the initial brightness [default: 1000; legal: 0 - 1000]
+Brightness=1000
+# Set the initial off-brightness [default: 0; legal: 0 - 1000]
+# This value is used when the display is normally
+# switched off in case LCDd is inactive
+OffBrightness=50
+# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200]
+Speed=19200
+# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no]
+# Currently this flag is not in use, there is no such thing as NewFirmware. ;=)
+#NewFirmware=no
+# Reinitialize the LCD's BIOS [default: no; legal: yes, no]
+# I want to reboot the LCD to make sure we start from a known state
+Reboot=yes
+
+
+
+## CrystalFontz packet driver (for CFA533, CFA631, CFA633 & CFA635) ##
+[CFontzPacket]
+
+# Select the LCD model [default: 633; legal: 533, 631, 633, 635]
+Model=633
+
+# Select the output device to use [default: /dev/lcd]
+Device=/dev/ttyUSB0
+
+# Set the initial contrast [default: 560; legal: 0 - 1000]
+Contrast=350
+
+# Set the initial brightness [default: 1000; legal: 0 - 1000]
+Brightness=1000
+
+# Set the initial off-brightness [default: 0; legal: 0 - 1000]
+# This value is used when the display is normally
+# switched off in case LCDd is inactive
+OffBrightness=50
+
+# Reinitialize the LCD's BIOS on driver start. [default: no; legal: yes, no]
+Reboot=yes
+
+# Enable the USB flag if the device is connected to an USB port. For
+# serial ports leave it disabled. [default: no; legal: yes, no]
+#USB=yes
+
+# Very old 633 firmware versions do not support partial screen updates using
+# 'Send Data to LCD' command (31). For those devices it may be necessary to
+# enable this flag. [default: no; legal: yes, no]
+#OldFirmware=yes
+
+# Override the LCD size known for the selected model. Usually setting this
+# value should not be necessary.
+#Size=20x4
+
+# Override the default communication speed known for the selected model.
+# Default value depends on model [legal: 19200, 115200]
+#Speed=115200
+
+
+
+## Curses driver ##
+[curses]
+
+# color settings
+# foreground color [default: blue]
+Foreground=blue
+# background color when "backlight" is off [default: cyan]
+Background=cyan
+# background color when "backlight" is on [default: red]
+Backlight=red
+
+# display size [default: 20x4]
+Size=20x4
+
+# What position (X,Y) to start the left top corner at...
+# Default: (7,7)
+TopLeftX=7
+TopLeftY=7
+
+# use ASC symbols for icons & bars [default: no; legal: yes, no]
+UseACS=no
+
+# draw Border [default: yes; legal: yes, no]
+DrawBorder=yes
+
+
+
+## Cwlinux driver ##
+[CwLnx]
+
+# Select the LCD model [default: 12232; legal: 12232, 12832, 1602]
+Model=12232
+
+# Select the output device to use [default: /dev/lcd]
+Device=/dev/ttyUSB0
+
+# Select the LCD size. Default depends on model:
+# 12232: 20x4
+# 12832: 21x4
+# 1602: 16x2
+Size=20x4
+
+# Set the communication speed [default: 19200; legal: 9600, 19200]
+Speed=19200
+
+# Reinitialize the LCD's BIOS [default: no; legal: yes, no]
+# normally you shouldn't need this
+Reboot=no
+
+# If you have a keypad connected. Keypad layout is currently not
+# configureable from the config file.
+Keypad=yes
+
+# If you have a non-standard keypad you can associate any keystrings to keys.
+# There are 6 input keys in the CwLnx hardware that generate characters
+# from 'A' to 'F'.
+#
+# The following is the built-in default mapping hardcoded in the driver.
+# You can leave those unchanged if you have a standard keypad.
+# You can change it if you want to report other keystrings or have a non
+# standard keypad.
+# KeyMap_A=Up
+# KeyMap_B=Down
+# KeyMap_C=Left
+# KeyMap_D=Right
+# KeyMap_E=Enter
+# KeyMap_F=Escape
+
+# keypad_test_mode permits one to test keypad assignment
+# Default value is no
+#keypad_test_mode=yes
+
+
+
+## ea65 driver for the display in AOpen XC Cube AV EA65 media barebones ##
+[ea65]
+
+# Device is fixed /dev/ttyS1
+# Width and Height are fixed 9x1
+
+# As the VFD is self luminescent we don't have a backlight
+# But we can use the backlight functions to control the front LEDs
+# Brightness 0 to 299 -> LEDs off
+# Brightness 300 to 699 -> LEDs half bright
+# Brightness 700 to 1000 -> LEDs full bright
+Brightness=500
+# OffBrightness is the the value used for the 'backlight off' state
+OffBrightness=0
+
+
+
+## EyeboxOne driver ##
+[EyeboxOne]
+
+# Select the output device to use [default: /dev/ttyS1]
+#Device=/dev/cua01
+Device=/dev/ttyS1
+
+# Set the display size [default: 20x4]
+Size=20x4
+
+# Switch on the backlight? [default: yes]
+Backlight=yes
+
+# Switch on the cursor? [default: no]
+Cursor=no
+
+# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200]
+Speed=19200
+
+# Enter Key is a \r character, so it's hardcoded in the driver
+LeftKey=D
+RightKey=C
+UpKey=A
+DownKey=B
+EscapeKey=P
+
+# You can find out which key of your display sends which
+# character by setting keypad_test_mode to yes and running
+# LCDd. LCDd will output all characters it receives.
+# Afterwards you can modify the settings above and set
+# keypad_set_mode to no again.
+keypad_test_mode=no
+
+
+
+## g15 driver for Logitech G15 Keyboard LCDs ##
+[g15]
+
+# Display size (currently unused)
+size=20x5
+
+
+
+## glcdlib meta driver for graphical LCDs ##
+[glcdlib]
+
+## mandatory:
+
+# which graphical display supported by graphlcd-base to use [default: image]
+# (see /etc/graphlcd.conf for possible drivers)
+Driver=t6963c
+
+# no=use graphlcd bitmap fonts (they have only one size / font file)
+# yes=use fonts supported by FreeType2 (needs Freetype2 support in
+# libglcdprocdriver and its dependants)
+UseFT2=no
+
+# text resolution in fixed width characters [default: 16x4]
+# (if it won't fit according to available physical pixel resolution
+# and the minimum available font face size in pixels, then
+# 'DebugBorder' will automatically be turned on)
+TextResolution=20x4
+
+# path to font file to use
+#FontFile=/usr/share/fonts/corefonts/courbd.ttf
+
+## these only apply if UseFT2=yes:
+
+# character encoding to use
+CharEncoding=iso8859-2
+
+# minimum size in pixels in which fonts should be rendered
+MinFontFaceSize=7x12
+
+## optional:
+Brightness=50                   # Brightness (in %) if applicable
+Contrast=50                     # Contrast (in %) if applicable
+Backlight=no                    # Backlight if applicable
+UpsideDown=no                   # flip image upside down
+Invert=no                       # invert light/dark pixels
+ShowDebugFrame=no               # turns on/off 1 pixel thick debugging
+                                # border within the usable text area,
+                                # for setting up TextResolution and
+                                # MinFontFaceSize (if using FT2);
+ShowBigBorder=no                # border around the unused area
+ShowThinBorder=yes              # border around the unused area
+PixelShiftX=0
+PixelShiftY=2
+
+
+
+## Matrix Orbital GLK driver ##
+[glk]
+
+# select the serial device to use [default: /dev/lcd]
+Device=/dev/lcd
+
+# set the initial contrast value [default: 560; legal: 0 - 1000]
+Contrast=560
+
+# set the serial port speed [default: 19200; legal: 9600, 19200, 38400]
+Speed=19200
+
+
+
+## Hitachi HD44780 driver ##
+[hd44780]
+
+# Select what type of connection. See documentation for types.
+ConnectionType=4bit
+
+# Port where the LPT is. Usual value are: 0x278, 0x378 and 0x3BC
+Port=0x378
+
+# Device of the serial interface [default: /dev/lcd]
+Device=/dev/ttyS0
+
+# Bitrate of the serial port (0 for interface default)
+Speed=0
+
+# If you have a keypad connected.
+# You may also need to configure the keypad layout further on in this file.
+Keypad=no
+
+# Set the initial contrast (bwctusb and lcd2usb) [default: 500; legal: 0 - 1000]
+Contrast=0
+
+# Set brightness of the backlight (lcd2usb only) [default: 0; legal: 0 - 1000]
+#Brightness=1000
+#OffBrightness=0
+
+# If you have a switchable backlight.
+Backlight=no
+
+# If you have the additional output port ("bargraph") and you want to
+# be able to control it with the lcdproc OUTPUT command
+OutputPort=no
+
+# Specifies if the last line is pixel addressable (yes) or it controls an
+# underline effect (no). [default: yes; legal: yes, no]
+#Lastline=yes
+
+# Specifies the size of the LCD.
+# In case of multiple combined displays, this should be the total size.
+Size=20x4
+
+# For multiple combined displays: how many lines does each display have.
+# Vspan=2,2 means both displays have 2 lines.
+#vspan=2,2
+
+# If you have an HD66712, a KS0073 or another 'almost HD44780-compatible',
+# set this flag to get into extended mode (4-line linear).
+#ExtendedMode=yes
+
+# In extended mode, on some controllers like the ST7036 (in 3 line mode)
+# the next line in DDRAM won't start 0x20 higher. [default: 0x20]
+#LineAddress=0x10
+
+# Character map to to map ISO-8859-1 to the LCD's character set
+# [default: hd44780_default; legal: hd44780_default, hd44780_euro, ea_ks0073,
+# sed1278f_0b, hd44780_koi8_r, hd44780_cp1251, hd44780_8859_5, upd16314 ]
+# (hd44780_koi8_r, hd44780_cp1251, hd44780_8859_5 and upd16314 are possible if
+# compiled with additional charmaps)
+CharMap=hd44780_default
+
+# If your display is slow and cannot keep up with the flow of data from
+# LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4
+# to increase the delays. Default: 1.
+#DelayMult=2
+
+# Some displays (e.g. vdr-wakeup) need a message from the driver to that it
+# is still alive. When set to a value bigger then null the character in the
+# upper left corner is updated every <KeepAliveDisplay> seconds. Default: 0.
+#KeepAliveDisplay=0
+
+# If you experience occasional garbage on your display you can use this
+# option as workaround. If set to a value bigger than null it forces a
+# full screen refresh <RefreshDiplay> seconds. Default: 0.
+#RefreshDisplay=5
+
+# You can reduce the inserted delays by setting this to false.
+# On fast PCs it is possible your LCD does not respond correctly.
+# Default: true.
+DelayBus=true
+
+# If you have a keypad you can assign keystrings to the keys.
+# See documentation for used terms and how to wire it.
+# For example to give directly connected key 4 the string "Enter", use:
+#   KeyDirect_4=Enter
+# For matrix keys use the X and Y coordinates of the key:
+#   KeyMatrix_1_3=Enter
+KeyMatrix_4_1=Enter
+KeyMatrix_4_2=Up
+KeyMatrix_4_3=Down
+KeyMatrix_4_4=Escape
+
+
+
+## ICP A106 driver ##
+[icp_a106]
+Device=/dev/ttyS1
+
+
+
+## Code Mercenaries IO-Warrior driver ##
+[IOWarrior]
+
+# display dimensions
+Size=20x4
+
+# serial number. Must be exactly as listed by usbview
+# (if not given, the 1st IOWarrior found gets used)
+#SerialNumber=00000674
+
+# If you have an HD66712, a KS0073 or another 'almost HD44780-compatible',
+# set this flag to get into extended mode (4-line linear).
+#ExtendedMode=yes
+
+# Specifies if the last line is pixel addressable (yes) or it controls an
+# underline effect (no). [default: yes; legal: yes, no]
+#Lastline=yes
+
+
+
+## Soundgraph/Ahanix/Silverstone/Uneed/Accent iMON driver ##
+[imon]
+
+# select the device to use
+Device=/dev/lcd0
+
+# display dimensions
+Size=16x2
+
+# Character map to to map ISO-8859-1 to the displays character set.
+# [default: none; legal: none, hd44780_euro, upd16314, hd44780_koi8_r,
+# hd44780_cp1251, hd44780_8859_5 ] (upd16314, hd44780_koi8_r,
+# hd44780_cp1251, hd44780_8859_5 are possible if compiled with additional
+# charmaps)
+CharMap=hd44780_euro
+
+## Soundgraph iMON LCD ##
+[imonlcd]
+# Specify which iMon protocol should be used
+# [legal: 0, 1; default: 0]
+# Choose 0 for 15c2:ffdc device,
+# Choose 1 for 15c2:0038 device
+Protocol=0
+
+# Set the exit behavior [legal: 0-2; default: 1]
+# 0 means leave shutdown message,
+# 1 means show the big clock,
+# 2 means blank device
+#OnExit=2
+
+# Select the output device to use [default: /dev/lcd0]
+Device=/dev/lcd0
+
+# Select the displays contrast [default: 200; legal: 0-1000]
+Contrast=200
+
+# Specify the size of the display in pixels [default: 96x16]
+#Size=96x16
+
+# Set the backlight state [default: on; legal: on, off]
+#Backlight=on
+
+# Set the disc mode [legal: 0,1; default: 0]
+# 0 => spin the "slim" disc - two disc segments,
+# 1 => their complement spinning;
+#DiscMode=0
+
+
+
+## IrMan driver ##
+[IrMan]
+# in case of trouble with IrMan, try the Lirc emulator for IrMan
+
+# Select the input device to use
+#Device=/dev/irman
+
+# Select the configuration file to use
+#Config=/etc/irman.cfg
+
+
+
+## IRtrans driver ##
+[irtrans]
+
+# Does the device have a backlight? [default: no; legal: yes, no]
+#Backlight=no
+
+# IRTrans device to connect to [default: localhost]
+#Hostname=localhost
+
+# display dimensions
+Size=16x2
+
+
+
+## Joystick driver ##
+[joy]
+
+# Select the input device to use [default: /dev/js0]
+Device=/dev/js0
+
+# set the axis map
+Map_Axis1neg=Left
+Map_Axis1pos=Right
+Map_Axis2neg=Up
+Map_Axis2pos=Down
+
+# set the button map
+Map_Button1=Enter
+Map_Button2=Escape
+
+
+
+## LB216 driver ##
+[lb216]
+
+# Select the output device to use [default: /dev/lcd]
+Device=/dev/lcd
+
+# Set the initial brightness [default: 255; legal: 0 - 255]
+Brightness=255
+
+# Set the communication speed [default: 9600; legal: 2400, 9600]
+Speed=9600
+
+# Reinitialize the LCD's BIOS [default: no; legal: yes, no]
+Reboot=no
+
+
+
+## LCDM001 driver ##
+[lcdm001]
+
+Device=/dev/ttyS1
+
+# keypad settings
+# Keyname      Function
+#              Normal context              Menu context
+# -------      --------------              ------------
+# PauseKey     Pause/Continue              Enter/select
+# BackKey      Back(Go to previous screen) Up/Left
+# ForwardKey   Forward(Go to next screen)  Down/Right
+# MainMenuKey  Open main menu              Exit/Cancel
+PauseKey=LeftKey
+BackKey=UpKey
+ForwardKey=DownKey
+MainMenuKey=RightKey
+
+# You can rearrange the settings here.
+# If your device is broken, have a look at server/drivers/lcdm001.h
+
+
+
+## HNE LCTerm driver ##
+[lcterm]
+Device=/dev/ttyS1
+Size=16x2
+
+
+
+## LIRC input driver ##
+[lirc]
+
+# Specify an alternative location of the lircrc file [default: ~/.lircrc]
+#lircrc=/etc/lircrc.lcdproc
+
+# Must be the same as in your lircrc
+#prog=lcdd
+
+
+
+## LIS MCE 2005 driver ##
+[lis]
+
+# Set the initial brightness [default: 1000; legal: 0 - 1000]
+# 0-250 = 25%, 251-500 = 50%, 501-750 = 75%, 751-1000 = 100%
+#Brightness=1000
+
+# Columns by lines [default: 20x2]
+#Size=20x2
+
+# USB Vendor ID [default: 0x0403]
+# Change only if testing a compatible device.
+#VendorID=0x0403
+
+# USB Product ID [default: 0x6001]
+# Change only if testing a compatible device.
+#ProductID=0x6001
+
+
+
+##The driver for the VFD of the Medion MD8800 PC ##
+[MD8800]
+# device to use [default: /dev/ttyS1]
+#Device=/dev/ttyS1
+
+# display size [default: 16x2]
+#Size=16x2
+
+# Set the initial brightness [default: 1000; legal: 0 - 1000]
+Brightness=1000
+# Set the initial off-brightness [default: 0; legal: 0 - 1000]
+# This value is used when the display is normally
+# switched off in case LCDd is inactive
+OffBrightness=50
+
+
+
+## Futuba MDM166A Display
+[mdm166a]
+# Show self-running clock after LCDd shutdown
+# Possible values: [default: no; legal: no, small, big]
+Clock=big
+# Dim display, no dimming gives full brightness [default: no, legal: yes, no]
+Dimming=no
+# Dim display in case LCDd is inactive [default: no, legal: yes, no]
+OffDimming=yes
+
+
+
+## MSI MS-6931 driver for displays in 1HU servers ##
+[ms6931]
+
+# device to use [default: /dev/ttyS1]
+Device=/dev/ttyS1
+
+# display size [default: 16x2]
+#Size=16x2
+
+
+
+## MTC-S16209x driver ##
+[mtc_s16209x]
+
+# Select the output device to use [default: /dev/lcd]
+Device=/dev/lcd
+
+# Set the initial brightness [default: 255; legal: 0 - 255]
+Brightness=255
+
+# Reinitialize the LCD's BIOS [default: no; legal: yes, no]
+Reboot=no
+
+
+
+## Matrix Orbital driver ##
+[MtxOrb]
+
+# Select the output device to use [default: /dev/lcd]
+Device=/dev/ttyS0
+
+# Set the display size [default: 20x4]
+Size=20x4
+
+# Set the display type [default: lcd; legal: lcd, lkd, vfd, vkd]
+Type=lkd
+
+# Set the initial contrast [default: 480]
+# NOTE: The driver will ignore this if the display
+#       is a vfd or vkd as they don't have this feature
+Contrast=480
+
+# Some old displays do not have an adjustable backlight but only can
+# switch the backlight on/off. If you experience randomly appearing block
+# characters, try setting this to false. [default: yes; legal: yes, no]
+hasAdjustableBacklight=no
+
+# Set the initial brightness [default: 1000; legal: 0 - 1000]
+Brightness=1000
+# Set the initial off-brightness [default: 0; legal: 0 - 1000]
+# This value is used when the display is normally
+# switched off in case LCDd is inactive
+OffBrightness=0
+
+# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200]
+Speed=19200
+
+# The following table translates from MtxOrb key letters to logical key names.
+# By default no keys are mapped, meaning the keypad is not used at all.
+#KeyMap_A=Left
+#KeyMap_B=Right
+#KeyMap_C=Up
+#KeyMap_D=Down
+#KeyMap_E=Enter
+#KeyMap_F=Escape
+# See the [menu] section for an explanation of the key mappings
+
+# You can find out which key of your display sends which
+# character by setting keypad_test_mode to yes and running
+# LCDd. LCDd will output all characters it receives.
+# Afterwards you can modify the settings above and set
+# keypad_set_mode to no again.
+keypad_test_mode=no
+
+
+
+## mx5000 driver for LCD display on the Logitech MX5000 keyboard ##
+[mx5000]
+
+# Select the output device to use [default: /dev/hiddev0]
+Device = /dev/hiddev0
+# Time to wait in ms after the refresh screen has been sent [default: 1000]
+WaitAfterRefresh = 1000
+
+
+
+## Noritake VFD driver ##
+[NoritakeVFD]
+# device where the VFD is. Usual values are /dev/ttyS0 and /dev/ttyS1
+# [default: /dev/lcd]
+Device=/dev/ttyS0
+# Specifies the size of the LCD.
+Size=20x4
+# Set the initial brightness [default: 1000; legal: 0 - 1000]
+Brightness=1000
+# Set the initial off-brightness [default: 0; legal: 0 - 1000]
+# This value is used when the display is normally
+# switched off in case LCDd is inactive
+OffBrightness=50
+# set the serial port speed [default: 9600, legal: 1200, 2400, 9600, 19200, 115200]
+Speed=9600
+# Set serial data parity [default: 0; legal: 0-2 ]
+# Meaning: 0(=none), 1(=odd), 2(=even)
+Parity=0
+# re-initialize the VFD [default: no; legal: yes, no]
+Reboot=no
+
+
+
+## Mini-box.com picoLCD (usblcd) driver ##
+[picolcd]
+
+# KeyTimeout is the time in ms that LCDd spends waiting for a key press before
+# cycling through other duties.  Higher values make LCDd use less CPU time and
+# make key presses more detectable.  Lower values make LCDd more responsive
+# but a little prone to missing key presses.  500 (.5 second) is the default
+# and a balanced value. [default: 500; legal: 0 - 1000]
+KeyTimeout=500
+
+# Sets the initial state of the backlight upon start-up.
+# [default: on; legal: on, off]
+#Backlight=on
+
+# Set the initial brightness [default: 1000; legal: 0 - 1000]. Works only
+# with the 20x4 device
+Brightness=1000
+
+# Set the brightness while the backlight is 'off' [default: 0; legal: 0 - 1000].
+# Works only with the 20x4 device.
+#OffBrightness=0
+
+# Set the initial contrast [default: 1000; legal: 0 - 1000]
+Contrast=1000
+
+# Light the keys? [default: on; legal: on, off]
+Keylights=on
+
+# If Keylights is on, the you can unlight specific keys below:
+# Key0 is the directional pad.  Key1 - Key5 correspond to the F1 - F5 keys.
+# There is no LED for the +/- keys.  This is a handy way to indicate to users
+# which keys are disabled.  [default: on; legal: on, off]
+Key0Light=on
+Key1Light=on
+Key2Light=on
+Key3Light=on
+Key4Light=on
+Key5Light=on
+
+# Host name or IP address of the LIRC instance that is to receive IR codes
+# If not set, or set to an empty value, IR support is disabled.
+#LircHost=127.0.0.1
+
+# UDP port on which LIRC is listening [default: 8765; legal: 1 - 65535]
+LircPort=8765
+
+# Threshold in jiffies of synthesized gap that triggers flushing the IR data
+# to lirc [default: 100 ; max: 32767 ]
+# 100 means 6.1ms. legal: 16 - 32767; Use 0 to disable.
+LircFlushThreshold=100
+
+
+
+## Pyramid LCD driver ##
+[pyramid]
+
+# device to connect to [default: /dev/lcd]
+Device=/dev/ttyUSB0
+
+
+
+## Seiko Epson 1330 driver ##
+[sed1330]
+
+# Port where the LPT is. Common values are 0x278, 0x378 and 0x3BC
+Port=0x378
+
+# Type of LCD module (legal: G321D, G121C, G242C, G191D, G2446, SP14Q002)
+# Note: Currently only tested with G321D & SP14Q002.
+Type=G321D
+
+# Width x Height of a character cell in pixels [legal: 6x7 - 8x16; default: 6x10]
+CellSize=6x10
+
+# Select what type of connection [legal: classic, bitshaker; default: classic]
+ConnectionType=classic
+
+
+
+## Seiko Epson 1520 driver ##
+[sed1520]
+
+# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC
+Port=0x378
+
+# Select the interface type (wiring) for the display. Supported values are
+# 68 for 68-style connection (RESET level high) and 80 for 80-style connection
+# (RESET level low). [legal: 68, 80; default: 80]
+InterfaceType=68
+
+# On fast machines it may be necessary to slow down transfer to the display.
+# If this value is set to zero, delay is disabled. Any value greater than
+# zero slows down each write by one microsecond. [legal: 0-1000; default: 1]
+DelayMult=0
+
+
+## serial POS display driver ##
+[serialPOS]
+
+# Device to use in serial mode [default: /dev/lcd]
+Device=/dev/lcd
+
+# Specifies the size of the display in characters. [default: 16x2]
+Size=16x2
+
+# Set the communication protocol to use with the POS display.
+# [default: AEDEX; legal: IEE, Epson, Emax, IBM, LogicControls, Ultimate]
+Type=AEDEX
+
+# communication baud rate with the display [default: 9600; legal: 1200, 2400,
+# 19200, 115200]
+Speed=9600
+
+
+
+## Serial VFD driver ##
+## Drives various (see below) serial 5x7dot VFD's.  ##
+[serialVFD]
+
+# Specifies the displaytype.[default: 0]
+# 0 NEC (FIPC8367 based) VFDs.
+# 1 KD Rev 2.1.
+# 2 Noritake VFDs (*).
+# 3 Futaba VFDs
+# 4 IEE S03601-95B
+# 5 IEE S03601-96-080 (*)
+# 6 Futaba NA202SD08FA (allmost IEE compatible)
+# 7 Samsung 20S207DA4 and 20S207DA6
+# 8 Nixdorf BA6x / VT100
+# (* most should work, not tested yet.)
+Type=0
+
+# "no" if display connected serial, "yes" if connected parallel. [default: no]
+# I.e. serial by default
+use_parallel=no
+
+# Number of Custom-Characters. default is display type dependent
+#Custom-Characters=0
+
+# Portaddress where the LPT is. Used in parallel mode only. Usual values are
+# 0x278, 0x378 and 0x3BC.
+Port=0x378
+
+# Set parallel port timing delay (us). Used in parallel mode only.
+# [default: 2; legal: 0 - 255]
+#PortWait=2
+
+# Device to use in serial mode. Usual values are /dev/ttyS0 and /dev/ttyS1
+Device=/dev/ttyS1
+
+# Specifies the size of the VFD.
+Size=20x2
+
+# Set the initial brightness [default: 1000; legal: 0 - 1000]
+# (4 steps 0-250, 251-500, 501-750, 751-1000)
+Brightness=1000
+# Set the initial off-brightness [default: 0; legal: 0 - 1000]
+# This value is used when the display is normally
+# switched off in case LCDd is inactive
+# (4 steps 0-250, 251-500, 501-750, 751-1000)
+OffBrightness=0
+
+# set the serial port speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200]
+Speed=9600
+
+# enable ISO 8859 1 compatibility [default: yes; legal: yes, no]
+#ISO_8859_1=yes
+
+
+
+## shuttleVFD driver ##
+[shuttleVFD]
+# No options
+
+
+
+## stv5730 driver ##
+[stv5730]
+
+# Port the device is connected to [default: 0x378]
+Port=0x378
+
+
+[SureElec]
+
+# Port the device is connected to  (by default first USB serial port)
+Device=/dev/ttyUSB0
+
+# Edition level of the device (can be 1, 2 or 3) [default: 2]
+#Edition=1
+
+# set display size
+# Note: The size can be obtained directly from device for edition 2 & 3.
+#Size=16x2
+
+# Set the initial contrast [default: 480; legal: 0 - 1000]
+#Contrast=200
+
+# Set the initial brightness [default: 480; legal: 1 - 1000]
+#Brightness=480
+
+# Set the initial off-brightness [default: 100; legal: 1 - 1000]
+# This value is used when the display is normally
+# switched off in case LCDd is inactive
+#OffBrightness=100
+
+
+## SVGAlib driver ##
+[svga]
+
+# svgalib mode to use [default: G320x240x256 ]
+# legal values are supported svgalib modes
+#Mode=G640x480x256
+
+# set display size [default: 20x4]
+Size=20x4
+
+# Set the initial contrast [default: 500; legal: 0 - 1000]
+# Can be set but does not change anything internally
+Contrast=500
+
+# Set the initial brightness [default: 1000; legal: 1 - 1000]
+Brightness=1000
+
+# Set the initial off-brightness [default: 500; legal: 1 - 1000]
+# This value is used when the display is normally
+# switched off in case LCDd is inactive
+OffBrightness=500
+
+
+
+## Text driver ##
+[text]
+# Set the display size [default: 20x4]
+Size=20x4
+
+
+
+## Toshiba T6963 driver ##
+[t6963]
+
+# set display size in pixels [default: 128x64]
+Size=240x128
+
+# port to use [default: 0x378; legal: 0x200 - 0x400]
+Port=0x378
+
+# Use LPT port in bi-directional mode. This should work on most LPT port and
+# is required for proper timing! [default: yes; legal: yes, no]
+bidirectional=yes
+
+# Insert additional delays into reads / writes. [default: no; legal: yes, no]
+#delayBus=no
+
+# Clear graphic memory on start-up. [default: no; legal: yes, no]
+ClearGraphic=yes
+
+
+
+## Tyan Barebones LCD driver (GS10 & GS12 series) ##
+[tyan]
+
+# Select the output device to use [default: /dev/lcd]
+Device=/dev/lcd
+
+# Set the communication speed [default: 9600; legal: 4800, 9600]
+Speed=9600
+
+# set display size [default: 16x2]
+Size=16x2
+
+
+
+## ELV ula200 driver ##
+[ula200]
+
+# Select the LCD size [default: 20x4]
+Size=20x4
+
+# If you have a non standard keypad you can associate any keystrings to keys.
+# There are 6 input key in the CwLnx hardware that generate characters
+# from 'A' to 'F'.
+#
+# The following it the built-in default mapping hardcoded in the driver.
+# You can leave those unchanged if you have a standard keypad.
+# You can change it if you want to report other keystrings or have a non
+# standard keypad.
+# KeyMap_A=Up
+# KeyMap_B=Down
+# KeyMap_C=Left
+# KeyMap_D=Right
+# KeyMap_E=Enter
+# KeyMap_F=Escape
+
+
+
+## Wirz SLI LCD driver ##
+[sli]
+
+# Select the output device to use [default: /dev/lcd]
+Device=/dev/lcd
+
+# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200,
+# 38400, 57600, 115200]
+Speed=19200
+
+
+
+## OnScreen Display using libxosd ##
+[xosd]
+
+# set display size [default: 20x4]
+Size=20x4
+
+# Offset in pixels from the top-left corner of the monitor [default: 0x0]
+Offset=200x200
+
+# X font to use, in XLFD format, as given by "xfontsel"
+Font=-*-terminus-*-r-*-*-*-320-*-*-*-*-*
+
+# EOF
diff --git a/config/lcdproc/lcdproc.conf b/config/lcdproc/lcdproc.conf
new file mode 100644 (file)
index 0000000..807238c
--- /dev/null
@@ -0,0 +1,129 @@
+# LCDproc client configuration file
+
+## general options ##
+[lcdproc]
+# address of the LCDd server to connect to
+Server=localhost
+
+# Port of the server to connect to
+Port=13666
+
+# set reporting level
+ReportLevel=2
+
+# report to to syslog ?
+ReportToSyslog=false
+
+# run in foreground [default: false; legal: true, false]
+#Foreground=true
+
+# PidFile location when running as daemon [default: /var/run/lcdproc.pid]
+#PidFile=/var/run/lcdproc.pid
+
+# slow down initial announcement of modes (in 1/100s)
+#delay=2
+
+# display name for the main menu [default: LCDproc HOST]
+#DisplayName=lcdproc
+
+## screen specific configuration options ##
+
+[CPU]
+# Show screen
+Active=True
+OnTime=1
+OffTime=2
+ShowInvisible=false
+
+[Iface]
+# Show screen
+Active=True
+
+# Show stats for Interface0
+Interface0=green0
+# Interface alias name to display [default: <interface name>]
+Alias0=LAN
+
+# Show stats for Interface1
+Interface1=red0
+Alias1=WAN
+
+# Show stats for Interface2
+Interface2=blue0
+Alias2=WIFI
+
+# for more than 3 interfaces change MAX_INTERFACES in iface.h and rebuild
+
+# Units to display [default: byte; legal: byte, bit, packet]
+unit=bit
+
+# add screen with transferred traffic
+#transfer=TRUE
+
+[Memory]
+# Show screen
+Active=True
+
+[Load]
+# Show screen
+Active=True
+# Min Load Avg at which the backlight will be turned off [default: 0.05]
+LowLoad=0.00
+# Max Load Avg at which the backlight will start blinking [default: 1.3]
+HighLoad=2.5
+
+[TimeDate]
+# Show screen
+Active=True
+# time format [default: %H:%M:%S; legal: see strftime(3)]
+TimeFormat="%H:%M:%S"
+# date format [default: %x; legal: see strftime(3)]
+DateFormat="%x"
+
+[About]
+# Show screen
+Active=false
+
+[SMP-CPU]
+# Show screen
+Active=false
+
+[OldTime]
+# Show screen
+Active=false
+# time format [default: %H:%M:%S; legal: see strftime(3)]
+TimeFormat="%H:%M:%S"
+# date format [default: %x; legal: see strftime(3)]
+DateFormat="%x"
+
+[BigClock]
+# Show screen
+Active=false
+
+[Uptime]
+# Show screen
+Active=false
+
+[Battery]
+# Show screen
+Active=false
+
+[CPUGraph]
+# Show screen
+Active=false
+
+[ProcSize]
+# Show screen
+Active=false
+
+[Disk]
+# Show screen
+Active=false
+
+[MiniClock]
+# Show screen
+Active=True
+# time format [default: %H:%M; legal: see strftime(3)]
+TimeFormat="%H:%M"
+
+# EOF
index 9248663bd4b9ee1368576a5bd3b4fe935a583ef6..5755366edcac048a14bae2766eb1b353251871f7 100644 (file)
                                'title' => "$Lang::tr{'alt dialup'}",
                                'enabled' => 1,
                                };
+    $subsystem->{'21.wlan'} = {
+                               'caption' => $Lang::tr{'wlan client'},
+                               'uri' => '/cgi-bin/wirelessclient.cgi',
+                               'title' => "$Lang::tr{'wlan client'}",
+                               'enabled' => 0,
+                               };
     $subsystem->{'30.ssh'} = {
                                'caption' => $Lang::tr{'ssh access'},
                                'uri' => '/cgi-bin/remote.cgi',
                                'title' => "$Lang::tr{'system information'}",
                                'enabled' => 1,
                                };
+       $subsystem->{'42.shutdown'} = {
+                               'caption' => $Lang::tr{'shutdown'},
+                               'uri' => '/cgi-bin/shutdown.cgi',
+                               'title' => "$Lang::tr{'shutdown'}",
+                               'enabled' => 1,
+                               };
     $subsystem->{'99.credits'} = {
                                'caption' => $Lang::tr{'credits'},
                                'uri' => '/cgi-bin/credits.cgi',
index c0b780a0624080ea73373376626127356e99b77f..b159ed6109b0988cf4112ca450777776f73ad66f 100644 (file)
                                'title' => "$Lang::tr{'hardware graphs'}",
                                'enabled' => 1,
                          };
+    $substatus->{'61.entropy'} = {
+                               'caption' => "$Lang::tr{'entropy'}",
+                               'uri' => '/cgi-bin/entropy.cgi',
+                               'title' => "$Lang::tr{'entropy graphs'}",
+                               'enabled' => 1,
+                         };
     $substatus->{'71.connections'} = {
                                'caption' => $Lang::tr{'connections'},
                                'uri' => '/cgi-bin/connections.cgi',
                                'title' => "$Lang::tr{'qos graphs'}",
                                'enabled' => 1,
                                };
+    $substatus->{'74.modem-status'} = {'caption' => $Lang::tr{'modem status'},
+                                 'uri' => '/cgi-bin/modem-status.cgi',
+                                 'title' => $Lang::tr{'modem status'},
+                                 'enabled' => 0,
+                                 };
     $substatus->{'75.atm-status'} = {'caption' => 'Atm-status',
                                  'uri' => '/cgi-bin/atm-status.cgi',
                                  'title' => 'Atm-status',
index f4645b8fc7647882bc006572998f08f5263a674f..c50508f818b8e7b47187e6bd90e52cfda1179a89 100644 (file)
                                 'title' => "$Lang::tr{'edit hosts'}",
                                 'enabled' => 1,
                                 };
-    $subnetwork->{'51.routes'} = {
+    $subnetwork->{'51.dnsmenu'} = {
+                                  'caption' => $Lang::tr{'dns menu'},
+                                  'uri' => '/cgi-bin/dns.cgi',
+                                  'title' => "$Lang::tr{'dns menu'}",
+                                  'enabled' => `grep "RED_TYPE=DHCP" /var/ipfire/ethernet/settings`,
+                                  };
+    $subnetwork->{'52.dnsforward'} = {
+                                  'caption' => $Lang::tr{'dnsforward'},
+                                  'uri' => '/cgi-bin/dnsforward.cgi',
+                                  'title' => "$Lang::tr{'dnsforward'}",
+                                  'enabled' => 1
+                                  };
+    $subnetwork->{'60.routes'} = {
                                 'caption' => $Lang::tr{'static routes'},
                                 'uri' => '/cgi-bin/routing.cgi',
                                 'title' => "$Lang::tr{'static routes'}",
                                 'enabled' => 1,
                                 };
-    $subnetwork->{'60.upload'} = {
-                                 'caption' => $Lang::tr{'upload'},
-                                 'uri' => '/cgi-bin/upload.cgi',
-                                 'title' => "$Lang::tr{'upload'}",
-                                 'enabled' => 0,
-                                 };
     $subnetwork->{'70.aliases'} = {
                                  'caption' => $Lang::tr{'aliases'},
                                  'uri' => '/cgi-bin/aliases.cgi',
                                  'title' => "$Lang::tr{'aliases'}",
                                  'enabled' => `grep "RED_TYPE=STATIC" /var/ipfire/ethernet/settings`,
                                  };
-       $subnetwork->{'80.dnsmenu'} = {
-                                 'caption' => $Lang::tr{'dns menu'},
-                                 'uri' => '/cgi-bin/dns.cgi',
-                                 'title' => "$Lang::tr{'dns menu'}",
-                                 'enabled' => `grep "RED_TYPE=DHCP" /var/ipfire/ethernet/settings`,
-                                 };
-       $subnetwork->{'90.macadressmenu'} = {
+    $subnetwork->{'80.macadressmenu'} = {
                                  'caption' => $Lang::tr{'mac address menu'},
                                  'uri' => '/cgi-bin/mac.cgi',
                                  'title' => "$Lang::tr{'mac address menu'}",
                                  'enabled' => 1,
                                  };
-        $subnetwork->{'99.wakeonlan'} = {
+    $subnetwork->{'90.wakeonlan'} = {
                                  'caption' => $Lang::tr{'WakeOnLan'},
                                  'uri' => '/cgi-bin/wakeonlan.cgi',
                                  'title' => "$Lang::tr{'WakeOnLan'}",
index 9901e8f3f1df00ac4d958fe0a5535a9fb7aabda9..2f4d96e736bd5a8cdf571db9669cd9de804ebc35 100644 (file)
@@ -1,5 +1,5 @@
     $subservices->{'10.ipsec'} = {
-                               'caption' => 'IPSec',
+                               'caption' => $Lang::tr{'ipsec'},
                                'uri' => '/cgi-bin/vpnmain.cgi',
                                'title' => "$Lang::tr{'virtual private networking'}",
                                'enabled' => 1,
index de28f8e259c8cf59870e6ae7a2bdd8d723c1c969..e872e6428c1d68395e974b6b596eebc7e6e8af48 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.firewall'} = {
+                               'caption' => $Lang::tr{'firewall rules'},
+                               'uri' => '/cgi-bin/firewall.cgi',
+                               'title' => "$Lang::tr{'firewall rules'}",
                                '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' => $Lang::tr{'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'}",
index 25ba090fc2e609428eaabc1b59bc77f949c9ddb4..08973de5a2943ea6f3b5267837d14b7011c60206 100644 (file)
                                 'title' => "$Lang::tr{'firewall logs port'}",
                                 'enabled' => 1
                                 };
+    $sublogs->{'43.firewallcountry'} = {'caption' => $Lang::tr{'firewall logs country'},
+                                'uri' => '/cgi-bin/logs.cgi/firewalllogcountry.dat',
+                                'title' => "$Lang::tr{'firewall logs country'}",
+                                'enabled' => 1
+                                };
     $sublogs->{'50.ids'} = {'caption' => $Lang::tr{'ids logs'},
                                'uri' => '/cgi-bin/logs.cgi/ids.dat',
                                'title' => "$Lang::tr{'ids logs'}",
diff --git a/config/menu/EX-tor.menu b/config/menu/EX-tor.menu
new file mode 100644 (file)
index 0000000..00ddffe
--- /dev/null
@@ -0,0 +1,6 @@
+$subipfire->{'50.tor'} = {
+       'caption' => $Lang::tr{'tor'},
+       'uri' => '/cgi-bin/tor.cgi',
+       'title' => $Lang::tr{'tor'},
+       'enabled' => 1,
+};
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 7dd1430..0000000
+++ /dev/null
@@ -1,275 +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' ) {
-       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);
-}
-
-sub applyrule($$) {
-       my $cmd = shift;
-       my $macrule = shift;
-
-       system("/sbin/iptables -A OUTGOINGFWMAC $cmd");
-       if ($macrule == 0) {
-               system("/sbin/iptables -A OUTGOINGFW $cmd");
-       }
-}
index d82c04b904c3e216c933867671ac8d68141090c2..ab026c10951f98afa6e35d15b3ea7620501532ef 100644 (file)
@@ -1,46 +1,46 @@
-HOME           = .
-RANDFILE       = /var/ipfire/ovpn/ca/.rnd
-oid_section    = new_oids
+HOME                           = .
+RANDFILE                       = /var/ipfire/ovpn/ca/.rnd
+oid_section                    = new_oids
 
 [ new_oids ]
 
 [ ca ]
-default_ca     = openvpn
+default_ca                     = openvpn
 
 [ openvpn ]
-dir            = /var/ipfire/ovpn
-certs          = $dir/certs
-crl_dir                = $dir/crl
-database       = $dir/certs/index.txt
-new_certs_dir  = $dir/certs
-certificate    = $dir/ca/cacert.pem
-serial         = $dir/certs/serial
-crl            = $dir/crl.pem
-private_key    = $dir/ca/cakey.pem
-RANDFILE       = $dir/ca/.rand
-x509_extensions        = usr_cert
-default_days   = 999999
-default_crl_days= 30
-default_md     = md5
-preserve       = no
-policy         = policy_match
-email_in_dn    = no
+dir                            = /var/ipfire/ovpn
+certs                          = $dir/certs
+crl_dir                                = $dir/crl
+database                       = $dir/certs/index.txt
+new_certs_dir                  = $dir/certs
+certificate                    = $dir/ca/cacert.pem
+serial                         = $dir/certs/serial
+crl                            = $dir/crl.pem
+private_key                    = $dir/ca/cakey.pem
+RANDFILE                       = $dir/ca/.rand
+x509_extensions                        = usr_cert
+default_days                   = 999999
+default_crl_days               = 30
+default_md                     = sha256
+preserve                       = no
+policy                         = policy_match
+email_in_dn                    = no
 
 [ policy_match ]
-countryName            = optional
-stateOrProvinceName    = optional
-organizationName       = optional
-organizationalUnitName = optional
-commonName             = supplied
-emailAddress           = optional
+countryName                    = optional
+stateOrProvinceName            = optional
+organizationName               = optional
+organizationalUnitName         = optional
+commonName                     = supplied
+emailAddress                   = optional
 
 [ req ]
-default_bits           = 1024
-default_keyfile        = privkey.pem
-distinguished_name     = req_distinguished_name
-attributes             = req_attributes
-x509_extensions        = v3_ca
-string_mask = nombstr
+default_bits                   = 2048
+default_keyfile                = privkey.pem
+distinguished_name             = req_distinguished_name
+attributes                     = req_attributes
+x509_extensions                        = v3_ca
+string_mask                    = nombstr
 
 [ req_distinguished_name ]
 countryName                    = Country Name (2 letter code)
@@ -73,31 +73,31 @@ challengePassword_max               = 20
 unstructuredName               = An optional company name
 
 [ usr_cert ]
-basicConstraints=CA:FALSE
+basicConstraints               = CA:FALSE
 nsComment                      = "OpenSSL Generated Certificate"
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid,issuer:always
+subjectKeyIdentifier           = hash
+authorityKeyIdentifier         = keyid,issuer:always
 
 [ server ]
 
 # JY ADDED -- Make a cert with nsCertType set to "server"
-basicConstraints=CA:FALSE
+basicConstraints               = CA:FALSE
 nsCertType                     = server
 nsComment                      = "OpenSSL Generated Server Certificate"
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid,issuer:always 
+subjectKeyIdentifier           = hash
+authorityKeyIdentifier         = keyid,issuer:always 
 
 [ v3_req ]
-basicConstraints = CA:FALSE
-keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+basicConstraints               = CA:FALSE
+keyUsage                       = nonRepudiation, digitalSignature, keyEncipherment
 
 [ v3_ca ]
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid:always,issuer:always
-basicConstraints = CA:true
+subjectKeyIdentifier           = hash
+authorityKeyIdentifier         = keyid:always,issuer:always
+basicConstraints               = CA:true
 
 [ crl_ext ]
-authorityKeyIdentifier=keyid:always,issuer:always
+authorityKeyIdentifier         = keyid:always,issuer:always
 
 [ engine ]
-default = openssl
+default                        = openssl
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8fa37fe07b27f8d42e8eb644d703ccb130dff58c 100644 (file)
@@ -0,0 +1,6 @@
+ENABLED=off
+ENABLED_BLUE=off
+ENABLED_ORANGE=off
+DDEST_PORT=1194
+DPROTOCOL=udp
+VPN_IP=
index 72334296cabf27d8991b9a34687ca22963922511..1a1fcb501d83065ca5fb408580789b993740e921 100644 (file)
@@ -30,8 +30,8 @@ my $CN    = $ARGV[1];
 exit 0 unless ($DEPTH eq "0");
 
 # Strip the CN from the X509 identifier.
-$CN =~ /\/CN=(.*)$/i;
-$CN = $1;
+$CN =~ /(\/|,\ )CN=(.*)$/i;
+$CN = $2;
 
 my %confighash = ();
 if (-f "${General::swroot}/ovpn/ovpnconfig"){
@@ -49,7 +49,7 @@ if (-f "${General::swroot}/ovpn/ovpnconfig"){
                exit 0 if ($cn eq $CN);
 
                # Compatibility code for incorrectly saved CNs.
-               $cn =~ s/\ /_/;
+               $cn =~ s/\ /_/g;
                exit 0 if ($cn eq $CN);
        }
 }
diff --git a/config/rootfiles/common/HTML-Template b/config/rootfiles/common/HTML-Template
new file mode 100644 (file)
index 0000000..4b486d9
--- /dev/null
@@ -0,0 +1,7 @@
+usr/lib/perl5/site_perl/5.12.3/HTML/Template
+usr/lib/perl5/site_perl/5.12.3/HTML/Template.pm
+usr/lib/perl5/site_perl/5.12.3/HTML/Template/FAQ.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/HTML/Template
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/HTML/Template/.packlist
+#usr/share/man/man3/HTML::Template.3
+#usr/share/man/man3/HTML::Template::FAQ.3
index 63002efe948df50da9c2032ef79922c5f983b0fc..8d5ee2a9007258b67e5e239218bb96759e0d1aa3 100644 (file)
@@ -1,5 +1,6 @@
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Net/SSLeay
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Net/SSLeay.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Net/SSLeay.pod
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Net/SSLeay/Handle.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Net/SSLeay
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Net/SSLeay/.packlist
@@ -36,6 +37,7 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Net/SSLeay/head_h
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Net/SSLeay/http_cat.al
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Net/SSLeay/https_cat.al
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Net/SSLeay/httpx_cat.al
+usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Net/SSLeay/initialize.al
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Net/SSLeay/make_form.al
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Net/SSLeay/make_headers.al
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Net/SSLeay/new_x_ctx.al
index 802ddcb72a447be5a85936ca1e4cc95f99ed9734..474e7a7dc1edb54578ccfc963ef9ce2175940fd4 100644 (file)
@@ -323,14 +323,14 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/developer/debugging.html.en
 #srv/web/ipfire/manual/developer/documenting.html
 #srv/web/ipfire/manual/developer/documenting.html.en
-#srv/web/ipfire/manual/developer/documenting.html.zh-cn
+#srv/web/ipfire/manual/developer/documenting.html.zh-cn.utf8
 #srv/web/ipfire/manual/developer/filters.html
 #srv/web/ipfire/manual/developer/filters.html.en
 #srv/web/ipfire/manual/developer/hooks.html
 #srv/web/ipfire/manual/developer/hooks.html.en
 #srv/web/ipfire/manual/developer/index.html
 #srv/web/ipfire/manual/developer/index.html.en
-#srv/web/ipfire/manual/developer/index.html.zh-cn
+#srv/web/ipfire/manual/developer/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/developer/modules.html
 #srv/web/ipfire/manual/developer/modules.html.en
 #srv/web/ipfire/manual/developer/modules.html.ja.utf8
@@ -357,7 +357,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/faq/index.html
 #srv/web/ipfire/manual/faq/index.html.en
 #srv/web/ipfire/manual/faq/index.html.tr.utf8
-#srv/web/ipfire/manual/faq/index.html.zh-cn
+#srv/web/ipfire/manual/faq/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/filter.html
 #srv/web/ipfire/manual/filter.html.en
 #srv/web/ipfire/manual/filter.html.es
@@ -381,7 +381,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/handler.html.ko.euc-kr
 #srv/web/ipfire/manual/handler.html.ru.koi8-r
 #srv/web/ipfire/manual/handler.html.tr.utf8
-#srv/web/ipfire/manual/handler.html.zh-cn
+#srv/web/ipfire/manual/handler.html.zh-cn.utf8
 #srv/web/ipfire/manual/howto
 #srv/web/ipfire/manual/howto/access.html
 #srv/web/ipfire/manual/howto/access.html.en
@@ -405,7 +405,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/howto/index.html.en
 #srv/web/ipfire/manual/howto/index.html.ja.utf8
 #srv/web/ipfire/manual/howto/index.html.ko.euc-kr
-#srv/web/ipfire/manual/howto/index.html.zh-cn
+#srv/web/ipfire/manual/howto/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/howto/public_html.html
 #srv/web/ipfire/manual/howto/public_html.html.en
 #srv/web/ipfire/manual/howto/public_html.html.ja.utf8
@@ -434,6 +434,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/images/mod_filter_new.png
 #srv/web/ipfire/manual/images/mod_filter_new.tr.png
 #srv/web/ipfire/manual/images/mod_filter_old.gif
+#srv/web/ipfire/manual/images/mod_filter_old.png
 #srv/web/ipfire/manual/images/mod_rewrite_fig1.gif
 #srv/web/ipfire/manual/images/mod_rewrite_fig1.png
 #srv/web/ipfire/manual/images/mod_rewrite_fig2.gif
@@ -461,7 +462,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/index.html.ko.euc-kr
 #srv/web/ipfire/manual/index.html.pt-br
 #srv/web/ipfire/manual/index.html.tr.utf8
-#srv/web/ipfire/manual/index.html.zh-cn
+#srv/web/ipfire/manual/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/install.html
 #srv/web/ipfire/manual/install.html.de
 #srv/web/ipfire/manual/install.html.en
@@ -492,7 +493,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/misc/index.html.en
 #srv/web/ipfire/manual/misc/index.html.ko.euc-kr
 #srv/web/ipfire/manual/misc/index.html.tr.utf8
-#srv/web/ipfire/manual/misc/index.html.zh-cn
+#srv/web/ipfire/manual/misc/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/misc/password_encryptions.html
 #srv/web/ipfire/manual/misc/password_encryptions.html.en
 #srv/web/ipfire/manual/misc/perf-tuning.html
@@ -534,7 +535,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/mod/directives.html.ko.euc-kr
 #srv/web/ipfire/manual/mod/directives.html.ru.koi8-r
 #srv/web/ipfire/manual/mod/directives.html.tr.utf8
-#srv/web/ipfire/manual/mod/directives.html.zh-cn
+#srv/web/ipfire/manual/mod/directives.html.zh-cn.utf8
 #srv/web/ipfire/manual/mod/event.html
 #srv/web/ipfire/manual/mod/event.html.en
 #srv/web/ipfire/manual/mod/index.html
@@ -544,7 +545,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/mod/index.html.ja.utf8
 #srv/web/ipfire/manual/mod/index.html.ko.euc-kr
 #srv/web/ipfire/manual/mod/index.html.tr.utf8
-#srv/web/ipfire/manual/mod/index.html.zh-cn
+#srv/web/ipfire/manual/mod/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/mod/mod_actions.html
 #srv/web/ipfire/manual/mod/mod_actions.html.de
 #srv/web/ipfire/manual/mod/mod_actions.html.en
@@ -606,6 +607,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/mod/mod_authz_groupfile.html.ko.euc-kr
 #srv/web/ipfire/manual/mod/mod_authz_host.html
 #srv/web/ipfire/manual/mod/mod_authz_host.html.en
+#srv/web/ipfire/manual/mod/mod_authz_host.html.fr
 #srv/web/ipfire/manual/mod/mod_authz_host.html.ja.utf8
 #srv/web/ipfire/manual/mod/mod_authz_host.html.ko.euc-kr
 #srv/web/ipfire/manual/mod/mod_authz_owner.html
@@ -851,7 +853,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/mod/quickreference.html.ko.euc-kr
 #srv/web/ipfire/manual/mod/quickreference.html.ru.koi8-r
 #srv/web/ipfire/manual/mod/quickreference.html.tr.utf8
-#srv/web/ipfire/manual/mod/quickreference.html.zh-cn
+#srv/web/ipfire/manual/mod/quickreference.html.zh-cn.utf8
 #srv/web/ipfire/manual/mod/worker.html
 #srv/web/ipfire/manual/mod/worker.html.de
 #srv/web/ipfire/manual/mod/worker.html.en
@@ -865,7 +867,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/mpm.html.ja.utf8
 #srv/web/ipfire/manual/mpm.html.ko.euc-kr
 #srv/web/ipfire/manual/mpm.html.tr.utf8
-#srv/web/ipfire/manual/mpm.html.zh-cn
+#srv/web/ipfire/manual/mpm.html.zh-cn.utf8
 #srv/web/ipfire/manual/new_features_2_0.html
 #srv/web/ipfire/manual/new_features_2_0.html.de
 #srv/web/ipfire/manual/new_features_2_0.html.en
@@ -889,7 +891,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/platform/index.html
 #srv/web/ipfire/manual/platform/index.html.en
 #srv/web/ipfire/manual/platform/index.html.ko.euc-kr
-#srv/web/ipfire/manual/platform/index.html.zh-cn
+#srv/web/ipfire/manual/platform/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/platform/netware.html
 #srv/web/ipfire/manual/platform/netware.html.en
 #srv/web/ipfire/manual/platform/netware.html.ko.euc-kr
@@ -952,7 +954,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/programs/index.html.ko.euc-kr
 #srv/web/ipfire/manual/programs/index.html.ru.koi8-r
 #srv/web/ipfire/manual/programs/index.html.tr.utf8
-#srv/web/ipfire/manual/programs/index.html.zh-cn
+#srv/web/ipfire/manual/programs/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/programs/logresolve.html
 #srv/web/ipfire/manual/programs/logresolve.html.en
 #srv/web/ipfire/manual/programs/logresolve.html.ko.euc-kr
@@ -985,7 +987,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/rewrite/index.html.en
 #srv/web/ipfire/manual/rewrite/index.html.fr
 #srv/web/ipfire/manual/rewrite/index.html.tr.utf8
-#srv/web/ipfire/manual/rewrite/index.html.zh-cn
+#srv/web/ipfire/manual/rewrite/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/rewrite/intro.html
 #srv/web/ipfire/manual/rewrite/intro.html.en
 #srv/web/ipfire/manual/rewrite/intro.html.fr
@@ -1018,13 +1020,13 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/sitemap.html.ja.utf8
 #srv/web/ipfire/manual/sitemap.html.ko.euc-kr
 #srv/web/ipfire/manual/sitemap.html.tr.utf8
-#srv/web/ipfire/manual/sitemap.html.zh-cn
+#srv/web/ipfire/manual/sitemap.html.zh-cn.utf8
 #srv/web/ipfire/manual/ssl
 #srv/web/ipfire/manual/ssl/index.html
 #srv/web/ipfire/manual/ssl/index.html.en
 #srv/web/ipfire/manual/ssl/index.html.ja.utf8
 #srv/web/ipfire/manual/ssl/index.html.tr.utf8
-#srv/web/ipfire/manual/ssl/index.html.zh-cn
+#srv/web/ipfire/manual/ssl/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/ssl/ssl_compat.html
 #srv/web/ipfire/manual/ssl/ssl_compat.html.en
 #srv/web/ipfire/manual/ssl/ssl_faq.html
@@ -1061,7 +1063,9 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/style/manualpage.dtd
 #srv/web/ipfire/manual/style/modulesynopsis.dtd
 #srv/web/ipfire/manual/style/scripts
+#srv/web/ipfire/manual/style/scripts/MINIFY
 #srv/web/ipfire/manual/style/scripts/prettify.js
+#srv/web/ipfire/manual/style/scripts/prettify.min.js
 #srv/web/ipfire/manual/style/sitemap.dtd
 #srv/web/ipfire/manual/style/version.ent
 #srv/web/ipfire/manual/style/xsl
@@ -1108,7 +1112,7 @@ etc/httpd/conf/mime.types
 #srv/web/ipfire/manual/vhosts/index.html.ko.euc-kr
 #srv/web/ipfire/manual/vhosts/index.html.ru.koi8-r
 #srv/web/ipfire/manual/vhosts/index.html.tr.utf8
-#srv/web/ipfire/manual/vhosts/index.html.zh-cn
+#srv/web/ipfire/manual/vhosts/index.html.zh-cn.utf8
 #srv/web/ipfire/manual/vhosts/ip-based.html
 #srv/web/ipfire/manual/vhosts/ip-based.html.en
 #srv/web/ipfire/manual/vhosts/ip-based.html.fr
@@ -1153,6 +1157,7 @@ etc/httpd/conf/mime.types
 #usr/include/apache/apr_dso.h
 #usr/include/apache/apr_env.h
 #usr/include/apache/apr_errno.h
+#usr/include/apache/apr_escape.h
 #usr/include/apache/apr_file_info.h
 #usr/include/apache/apr_file_io.h
 #usr/include/apache/apr_fnmatch.h
@@ -1188,6 +1193,7 @@ etc/httpd/conf/mime.types
 #usr/include/apache/apr_sha1.h
 #usr/include/apache/apr_shm.h
 #usr/include/apache/apr_signal.h
+#usr/include/apache/apr_skiplist.h
 #usr/include/apache/apr_strings.h
 #usr/include/apache/apr_strmatch.h
 #usr/include/apache/apr_support.h
@@ -1330,12 +1336,12 @@ usr/lib/apr-util-1/apr_dbd_sqlite3.so
 #usr/lib/libapr-1.la
 usr/lib/libapr-1.so
 usr/lib/libapr-1.so.0
-usr/lib/libapr-1.so.0.4.6
+usr/lib/libapr-1.so.0.5.0
 #usr/lib/libaprutil-1.a
 #usr/lib/libaprutil-1.la
 usr/lib/libaprutil-1.so
 usr/lib/libaprutil-1.so.0
-usr/lib/libaprutil-1.so.0.4.1
+usr/lib/libaprutil-1.so.0.5.3
 #usr/lib/pkgconfig/apr-1.pc
 #usr/lib/pkgconfig/apr-util-1.pc
 #usr/sbin/ab
@@ -1388,11 +1394,15 @@ srv/web/ipfire/cgi-bin/connscheduler.cgi
 srv/web/ipfire/cgi-bin/country.cgi
 srv/web/ipfire/cgi-bin/credits.cgi
 srv/web/ipfire/cgi-bin/dns.cgi
+srv/web/ipfire/cgi-bin/dnsforward.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/entropy.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/gpl.cgi
 srv/web/ipfire/cgi-bin/gui.cgi
 srv/web/ipfire/cgi-bin/hardwaregraphs.cgi
 srv/web/ipfire/cgi-bin/hosts.cgi
@@ -1405,21 +1415,21 @@ srv/web/ipfire/cgi-bin/mac.cgi
 srv/web/ipfire/cgi-bin/media.cgi
 srv/web/ipfire/cgi-bin/memory.cgi
 srv/web/ipfire/cgi-bin/modem.cgi
+srv/web/ipfire/cgi-bin/modem-status.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/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
 srv/web/ipfire/cgi-bin/remote.cgi
 srv/web/ipfire/cgi-bin/routing.cgi
 srv/web/ipfire/cgi-bin/services.cgi
+srv/web/ipfire/cgi-bin/shutdown.cgi
 srv/web/ipfire/cgi-bin/speed.cgi
 srv/web/ipfire/cgi-bin/system.cgi
 srv/web/ipfire/cgi-bin/time.cgi
@@ -1431,6 +1441,6 @@ srv/web/ipfire/cgi-bin/vpnmain.cgi
 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/xtaccess.cgi
+srv/web/ipfire/cgi-bin/wirelessclient.cgi
 srv/web/ipfire/html
 var/updatecache
index 4d4ed18bf37e63adef096e1dca22758acb11aaa3..9c41aba9a6480896071e3ff109e3ee94ead46bd0 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
@@ -10,7 +10,6 @@ sbin/dracut-catimages
 sbin/dracut-gencmdline
 sbin/lsinitrd
 sbin/mkinitrd
-sbin/switch_root
 usr/share/dracut
 usr/share/dracut/dracut-functions
 usr/share/dracut/modules.d
@@ -55,6 +54,7 @@ usr/share/dracut/modules.d/99base/check
 usr/share/dracut/modules.d/99base/dracut-lib.sh
 usr/share/dracut/modules.d/99base/init
 usr/share/dracut/modules.d/99base/initqueue
+#usr/share/dracut/modules.d/99base/init~
 usr/share/dracut/modules.d/99base/install
 usr/share/dracut/modules.d/99base/loginit
 usr/share/dracut/modules.d/99base/parse-blacklist.sh
@@ -63,3 +63,4 @@ usr/share/dracut/modules.d/99base/parse-root-opts.sh
 #usr/share/man/man8/dracut-catimages.8
 #usr/share/man/man8/dracut-gencmdline.8
 #usr/share/man/man8/dracut.8
+sbin/switch_root
index 28103897c0e4925b8fb095a9ba4a51620fb4144c..596b9511fce85bb15e13816f2e635fe7589ad8e2 100644 (file)
@@ -48,8 +48,8 @@ sbin/ldconfig
 #sbin/sln
 #usr/bin/catchsegv
 #usr/bin/gencat
-#usr/bin/getconf
-#usr/bin/getent
+usr/bin/getconf
+usr/bin/getent
 #usr/bin/iconv
 usr/bin/ldd
 usr/bin/locale
@@ -770,8 +770,5943 @@ usr/lib/gconv
 #usr/lib/libthread_db.so
 #usr/lib/libutil.a
 #usr/lib/libutil.so
-#usr/lib/locale
-usr/lib/locale/locale-archive
+usr/lib/locale
+#usr/lib/locale/aa_DJ
+#usr/lib/locale/aa_DJ.utf8
+#usr/lib/locale/aa_DJ.utf8/LC_ADDRESS
+#usr/lib/locale/aa_DJ.utf8/LC_COLLATE
+#usr/lib/locale/aa_DJ.utf8/LC_CTYPE
+#usr/lib/locale/aa_DJ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/aa_DJ.utf8/LC_MEASUREMENT
+#usr/lib/locale/aa_DJ.utf8/LC_MESSAGES
+#usr/lib/locale/aa_DJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/aa_DJ.utf8/LC_MONETARY
+#usr/lib/locale/aa_DJ.utf8/LC_NAME
+#usr/lib/locale/aa_DJ.utf8/LC_NUMERIC
+#usr/lib/locale/aa_DJ.utf8/LC_PAPER
+#usr/lib/locale/aa_DJ.utf8/LC_TELEPHONE
+#usr/lib/locale/aa_DJ.utf8/LC_TIME
+#usr/lib/locale/aa_DJ/LC_ADDRESS
+#usr/lib/locale/aa_DJ/LC_COLLATE
+#usr/lib/locale/aa_DJ/LC_CTYPE
+#usr/lib/locale/aa_DJ/LC_IDENTIFICATION
+#usr/lib/locale/aa_DJ/LC_MEASUREMENT
+#usr/lib/locale/aa_DJ/LC_MESSAGES
+#usr/lib/locale/aa_DJ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/aa_DJ/LC_MONETARY
+#usr/lib/locale/aa_DJ/LC_NAME
+#usr/lib/locale/aa_DJ/LC_NUMERIC
+#usr/lib/locale/aa_DJ/LC_PAPER
+#usr/lib/locale/aa_DJ/LC_TELEPHONE
+#usr/lib/locale/aa_DJ/LC_TIME
+#usr/lib/locale/aa_ER
+#usr/lib/locale/aa_ER/LC_ADDRESS
+#usr/lib/locale/aa_ER/LC_COLLATE
+#usr/lib/locale/aa_ER/LC_CTYPE
+#usr/lib/locale/aa_ER/LC_IDENTIFICATION
+#usr/lib/locale/aa_ER/LC_MEASUREMENT
+#usr/lib/locale/aa_ER/LC_MESSAGES
+#usr/lib/locale/aa_ER/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/aa_ER/LC_MONETARY
+#usr/lib/locale/aa_ER/LC_NAME
+#usr/lib/locale/aa_ER/LC_NUMERIC
+#usr/lib/locale/aa_ER/LC_PAPER
+#usr/lib/locale/aa_ER/LC_TELEPHONE
+#usr/lib/locale/aa_ER/LC_TIME
+#usr/lib/locale/aa_ER@saaho
+#usr/lib/locale/aa_ER@saaho/LC_ADDRESS
+#usr/lib/locale/aa_ER@saaho/LC_COLLATE
+#usr/lib/locale/aa_ER@saaho/LC_CTYPE
+#usr/lib/locale/aa_ER@saaho/LC_IDENTIFICATION
+#usr/lib/locale/aa_ER@saaho/LC_MEASUREMENT
+#usr/lib/locale/aa_ER@saaho/LC_MESSAGES
+#usr/lib/locale/aa_ER@saaho/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/aa_ER@saaho/LC_MONETARY
+#usr/lib/locale/aa_ER@saaho/LC_NAME
+#usr/lib/locale/aa_ER@saaho/LC_NUMERIC
+#usr/lib/locale/aa_ER@saaho/LC_PAPER
+#usr/lib/locale/aa_ER@saaho/LC_TELEPHONE
+#usr/lib/locale/aa_ER@saaho/LC_TIME
+#usr/lib/locale/aa_ET
+#usr/lib/locale/aa_ET/LC_ADDRESS
+#usr/lib/locale/aa_ET/LC_COLLATE
+#usr/lib/locale/aa_ET/LC_CTYPE
+#usr/lib/locale/aa_ET/LC_IDENTIFICATION
+#usr/lib/locale/aa_ET/LC_MEASUREMENT
+#usr/lib/locale/aa_ET/LC_MESSAGES
+#usr/lib/locale/aa_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/aa_ET/LC_MONETARY
+#usr/lib/locale/aa_ET/LC_NAME
+#usr/lib/locale/aa_ET/LC_NUMERIC
+#usr/lib/locale/aa_ET/LC_PAPER
+#usr/lib/locale/aa_ET/LC_TELEPHONE
+#usr/lib/locale/aa_ET/LC_TIME
+#usr/lib/locale/af_ZA
+#usr/lib/locale/af_ZA.utf8
+#usr/lib/locale/af_ZA.utf8/LC_ADDRESS
+#usr/lib/locale/af_ZA.utf8/LC_COLLATE
+#usr/lib/locale/af_ZA.utf8/LC_CTYPE
+#usr/lib/locale/af_ZA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/af_ZA.utf8/LC_MEASUREMENT
+#usr/lib/locale/af_ZA.utf8/LC_MESSAGES
+#usr/lib/locale/af_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/af_ZA.utf8/LC_MONETARY
+#usr/lib/locale/af_ZA.utf8/LC_NAME
+#usr/lib/locale/af_ZA.utf8/LC_NUMERIC
+#usr/lib/locale/af_ZA.utf8/LC_PAPER
+#usr/lib/locale/af_ZA.utf8/LC_TELEPHONE
+#usr/lib/locale/af_ZA.utf8/LC_TIME
+#usr/lib/locale/af_ZA/LC_ADDRESS
+#usr/lib/locale/af_ZA/LC_COLLATE
+#usr/lib/locale/af_ZA/LC_CTYPE
+#usr/lib/locale/af_ZA/LC_IDENTIFICATION
+#usr/lib/locale/af_ZA/LC_MEASUREMENT
+#usr/lib/locale/af_ZA/LC_MESSAGES
+#usr/lib/locale/af_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/af_ZA/LC_MONETARY
+#usr/lib/locale/af_ZA/LC_NAME
+#usr/lib/locale/af_ZA/LC_NUMERIC
+#usr/lib/locale/af_ZA/LC_PAPER
+#usr/lib/locale/af_ZA/LC_TELEPHONE
+#usr/lib/locale/af_ZA/LC_TIME
+#usr/lib/locale/am_ET
+#usr/lib/locale/am_ET/LC_ADDRESS
+#usr/lib/locale/am_ET/LC_COLLATE
+#usr/lib/locale/am_ET/LC_CTYPE
+#usr/lib/locale/am_ET/LC_IDENTIFICATION
+#usr/lib/locale/am_ET/LC_MEASUREMENT
+#usr/lib/locale/am_ET/LC_MESSAGES
+#usr/lib/locale/am_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/am_ET/LC_MONETARY
+#usr/lib/locale/am_ET/LC_NAME
+#usr/lib/locale/am_ET/LC_NUMERIC
+#usr/lib/locale/am_ET/LC_PAPER
+#usr/lib/locale/am_ET/LC_TELEPHONE
+#usr/lib/locale/am_ET/LC_TIME
+#usr/lib/locale/an_ES
+#usr/lib/locale/an_ES.utf8
+#usr/lib/locale/an_ES.utf8/LC_ADDRESS
+#usr/lib/locale/an_ES.utf8/LC_COLLATE
+#usr/lib/locale/an_ES.utf8/LC_CTYPE
+#usr/lib/locale/an_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/an_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/an_ES.utf8/LC_MESSAGES
+#usr/lib/locale/an_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/an_ES.utf8/LC_MONETARY
+#usr/lib/locale/an_ES.utf8/LC_NAME
+#usr/lib/locale/an_ES.utf8/LC_NUMERIC
+#usr/lib/locale/an_ES.utf8/LC_PAPER
+#usr/lib/locale/an_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/an_ES.utf8/LC_TIME
+#usr/lib/locale/an_ES/LC_ADDRESS
+#usr/lib/locale/an_ES/LC_COLLATE
+#usr/lib/locale/an_ES/LC_CTYPE
+#usr/lib/locale/an_ES/LC_IDENTIFICATION
+#usr/lib/locale/an_ES/LC_MEASUREMENT
+#usr/lib/locale/an_ES/LC_MESSAGES
+#usr/lib/locale/an_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/an_ES/LC_MONETARY
+#usr/lib/locale/an_ES/LC_NAME
+#usr/lib/locale/an_ES/LC_NUMERIC
+#usr/lib/locale/an_ES/LC_PAPER
+#usr/lib/locale/an_ES/LC_TELEPHONE
+#usr/lib/locale/an_ES/LC_TIME
+#usr/lib/locale/ar_AE
+#usr/lib/locale/ar_AE.utf8
+#usr/lib/locale/ar_AE.utf8/LC_ADDRESS
+#usr/lib/locale/ar_AE.utf8/LC_COLLATE
+#usr/lib/locale/ar_AE.utf8/LC_CTYPE
+#usr/lib/locale/ar_AE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_AE.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_AE.utf8/LC_MESSAGES
+#usr/lib/locale/ar_AE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_AE.utf8/LC_MONETARY
+#usr/lib/locale/ar_AE.utf8/LC_NAME
+#usr/lib/locale/ar_AE.utf8/LC_NUMERIC
+#usr/lib/locale/ar_AE.utf8/LC_PAPER
+#usr/lib/locale/ar_AE.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_AE.utf8/LC_TIME
+#usr/lib/locale/ar_AE/LC_ADDRESS
+#usr/lib/locale/ar_AE/LC_COLLATE
+#usr/lib/locale/ar_AE/LC_CTYPE
+#usr/lib/locale/ar_AE/LC_IDENTIFICATION
+#usr/lib/locale/ar_AE/LC_MEASUREMENT
+#usr/lib/locale/ar_AE/LC_MESSAGES
+#usr/lib/locale/ar_AE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_AE/LC_MONETARY
+#usr/lib/locale/ar_AE/LC_NAME
+#usr/lib/locale/ar_AE/LC_NUMERIC
+#usr/lib/locale/ar_AE/LC_PAPER
+#usr/lib/locale/ar_AE/LC_TELEPHONE
+#usr/lib/locale/ar_AE/LC_TIME
+#usr/lib/locale/ar_BH
+#usr/lib/locale/ar_BH.utf8
+#usr/lib/locale/ar_BH.utf8/LC_ADDRESS
+#usr/lib/locale/ar_BH.utf8/LC_COLLATE
+#usr/lib/locale/ar_BH.utf8/LC_CTYPE
+#usr/lib/locale/ar_BH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_BH.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_BH.utf8/LC_MESSAGES
+#usr/lib/locale/ar_BH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_BH.utf8/LC_MONETARY
+#usr/lib/locale/ar_BH.utf8/LC_NAME
+#usr/lib/locale/ar_BH.utf8/LC_NUMERIC
+#usr/lib/locale/ar_BH.utf8/LC_PAPER
+#usr/lib/locale/ar_BH.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_BH.utf8/LC_TIME
+#usr/lib/locale/ar_BH/LC_ADDRESS
+#usr/lib/locale/ar_BH/LC_COLLATE
+#usr/lib/locale/ar_BH/LC_CTYPE
+#usr/lib/locale/ar_BH/LC_IDENTIFICATION
+#usr/lib/locale/ar_BH/LC_MEASUREMENT
+#usr/lib/locale/ar_BH/LC_MESSAGES
+#usr/lib/locale/ar_BH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_BH/LC_MONETARY
+#usr/lib/locale/ar_BH/LC_NAME
+#usr/lib/locale/ar_BH/LC_NUMERIC
+#usr/lib/locale/ar_BH/LC_PAPER
+#usr/lib/locale/ar_BH/LC_TELEPHONE
+#usr/lib/locale/ar_BH/LC_TIME
+#usr/lib/locale/ar_DZ
+#usr/lib/locale/ar_DZ.utf8
+#usr/lib/locale/ar_DZ.utf8/LC_ADDRESS
+#usr/lib/locale/ar_DZ.utf8/LC_COLLATE
+#usr/lib/locale/ar_DZ.utf8/LC_CTYPE
+#usr/lib/locale/ar_DZ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_DZ.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_DZ.utf8/LC_MESSAGES
+#usr/lib/locale/ar_DZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_DZ.utf8/LC_MONETARY
+#usr/lib/locale/ar_DZ.utf8/LC_NAME
+#usr/lib/locale/ar_DZ.utf8/LC_NUMERIC
+#usr/lib/locale/ar_DZ.utf8/LC_PAPER
+#usr/lib/locale/ar_DZ.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_DZ.utf8/LC_TIME
+#usr/lib/locale/ar_DZ/LC_ADDRESS
+#usr/lib/locale/ar_DZ/LC_COLLATE
+#usr/lib/locale/ar_DZ/LC_CTYPE
+#usr/lib/locale/ar_DZ/LC_IDENTIFICATION
+#usr/lib/locale/ar_DZ/LC_MEASUREMENT
+#usr/lib/locale/ar_DZ/LC_MESSAGES
+#usr/lib/locale/ar_DZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_DZ/LC_MONETARY
+#usr/lib/locale/ar_DZ/LC_NAME
+#usr/lib/locale/ar_DZ/LC_NUMERIC
+#usr/lib/locale/ar_DZ/LC_PAPER
+#usr/lib/locale/ar_DZ/LC_TELEPHONE
+#usr/lib/locale/ar_DZ/LC_TIME
+#usr/lib/locale/ar_EG
+#usr/lib/locale/ar_EG.utf8
+#usr/lib/locale/ar_EG.utf8/LC_ADDRESS
+#usr/lib/locale/ar_EG.utf8/LC_COLLATE
+#usr/lib/locale/ar_EG.utf8/LC_CTYPE
+#usr/lib/locale/ar_EG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_EG.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_EG.utf8/LC_MESSAGES
+#usr/lib/locale/ar_EG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_EG.utf8/LC_MONETARY
+#usr/lib/locale/ar_EG.utf8/LC_NAME
+#usr/lib/locale/ar_EG.utf8/LC_NUMERIC
+#usr/lib/locale/ar_EG.utf8/LC_PAPER
+#usr/lib/locale/ar_EG.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_EG.utf8/LC_TIME
+#usr/lib/locale/ar_EG/LC_ADDRESS
+#usr/lib/locale/ar_EG/LC_COLLATE
+#usr/lib/locale/ar_EG/LC_CTYPE
+#usr/lib/locale/ar_EG/LC_IDENTIFICATION
+#usr/lib/locale/ar_EG/LC_MEASUREMENT
+#usr/lib/locale/ar_EG/LC_MESSAGES
+#usr/lib/locale/ar_EG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_EG/LC_MONETARY
+#usr/lib/locale/ar_EG/LC_NAME
+#usr/lib/locale/ar_EG/LC_NUMERIC
+#usr/lib/locale/ar_EG/LC_PAPER
+#usr/lib/locale/ar_EG/LC_TELEPHONE
+#usr/lib/locale/ar_EG/LC_TIME
+#usr/lib/locale/ar_IN
+#usr/lib/locale/ar_IN/LC_ADDRESS
+#usr/lib/locale/ar_IN/LC_COLLATE
+#usr/lib/locale/ar_IN/LC_CTYPE
+#usr/lib/locale/ar_IN/LC_IDENTIFICATION
+#usr/lib/locale/ar_IN/LC_MEASUREMENT
+#usr/lib/locale/ar_IN/LC_MESSAGES
+#usr/lib/locale/ar_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_IN/LC_MONETARY
+#usr/lib/locale/ar_IN/LC_NAME
+#usr/lib/locale/ar_IN/LC_NUMERIC
+#usr/lib/locale/ar_IN/LC_PAPER
+#usr/lib/locale/ar_IN/LC_TELEPHONE
+#usr/lib/locale/ar_IN/LC_TIME
+#usr/lib/locale/ar_IQ
+#usr/lib/locale/ar_IQ.utf8
+#usr/lib/locale/ar_IQ.utf8/LC_ADDRESS
+#usr/lib/locale/ar_IQ.utf8/LC_COLLATE
+#usr/lib/locale/ar_IQ.utf8/LC_CTYPE
+#usr/lib/locale/ar_IQ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_IQ.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_IQ.utf8/LC_MESSAGES
+#usr/lib/locale/ar_IQ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_IQ.utf8/LC_MONETARY
+#usr/lib/locale/ar_IQ.utf8/LC_NAME
+#usr/lib/locale/ar_IQ.utf8/LC_NUMERIC
+#usr/lib/locale/ar_IQ.utf8/LC_PAPER
+#usr/lib/locale/ar_IQ.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_IQ.utf8/LC_TIME
+#usr/lib/locale/ar_IQ/LC_ADDRESS
+#usr/lib/locale/ar_IQ/LC_COLLATE
+#usr/lib/locale/ar_IQ/LC_CTYPE
+#usr/lib/locale/ar_IQ/LC_IDENTIFICATION
+#usr/lib/locale/ar_IQ/LC_MEASUREMENT
+#usr/lib/locale/ar_IQ/LC_MESSAGES
+#usr/lib/locale/ar_IQ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_IQ/LC_MONETARY
+#usr/lib/locale/ar_IQ/LC_NAME
+#usr/lib/locale/ar_IQ/LC_NUMERIC
+#usr/lib/locale/ar_IQ/LC_PAPER
+#usr/lib/locale/ar_IQ/LC_TELEPHONE
+#usr/lib/locale/ar_IQ/LC_TIME
+#usr/lib/locale/ar_JO
+#usr/lib/locale/ar_JO.utf8
+#usr/lib/locale/ar_JO.utf8/LC_ADDRESS
+#usr/lib/locale/ar_JO.utf8/LC_COLLATE
+#usr/lib/locale/ar_JO.utf8/LC_CTYPE
+#usr/lib/locale/ar_JO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_JO.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_JO.utf8/LC_MESSAGES
+#usr/lib/locale/ar_JO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_JO.utf8/LC_MONETARY
+#usr/lib/locale/ar_JO.utf8/LC_NAME
+#usr/lib/locale/ar_JO.utf8/LC_NUMERIC
+#usr/lib/locale/ar_JO.utf8/LC_PAPER
+#usr/lib/locale/ar_JO.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_JO.utf8/LC_TIME
+#usr/lib/locale/ar_JO/LC_ADDRESS
+#usr/lib/locale/ar_JO/LC_COLLATE
+#usr/lib/locale/ar_JO/LC_CTYPE
+#usr/lib/locale/ar_JO/LC_IDENTIFICATION
+#usr/lib/locale/ar_JO/LC_MEASUREMENT
+#usr/lib/locale/ar_JO/LC_MESSAGES
+#usr/lib/locale/ar_JO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_JO/LC_MONETARY
+#usr/lib/locale/ar_JO/LC_NAME
+#usr/lib/locale/ar_JO/LC_NUMERIC
+#usr/lib/locale/ar_JO/LC_PAPER
+#usr/lib/locale/ar_JO/LC_TELEPHONE
+#usr/lib/locale/ar_JO/LC_TIME
+#usr/lib/locale/ar_KW
+#usr/lib/locale/ar_KW.utf8
+#usr/lib/locale/ar_KW.utf8/LC_ADDRESS
+#usr/lib/locale/ar_KW.utf8/LC_COLLATE
+#usr/lib/locale/ar_KW.utf8/LC_CTYPE
+#usr/lib/locale/ar_KW.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_KW.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_KW.utf8/LC_MESSAGES
+#usr/lib/locale/ar_KW.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_KW.utf8/LC_MONETARY
+#usr/lib/locale/ar_KW.utf8/LC_NAME
+#usr/lib/locale/ar_KW.utf8/LC_NUMERIC
+#usr/lib/locale/ar_KW.utf8/LC_PAPER
+#usr/lib/locale/ar_KW.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_KW.utf8/LC_TIME
+#usr/lib/locale/ar_KW/LC_ADDRESS
+#usr/lib/locale/ar_KW/LC_COLLATE
+#usr/lib/locale/ar_KW/LC_CTYPE
+#usr/lib/locale/ar_KW/LC_IDENTIFICATION
+#usr/lib/locale/ar_KW/LC_MEASUREMENT
+#usr/lib/locale/ar_KW/LC_MESSAGES
+#usr/lib/locale/ar_KW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_KW/LC_MONETARY
+#usr/lib/locale/ar_KW/LC_NAME
+#usr/lib/locale/ar_KW/LC_NUMERIC
+#usr/lib/locale/ar_KW/LC_PAPER
+#usr/lib/locale/ar_KW/LC_TELEPHONE
+#usr/lib/locale/ar_KW/LC_TIME
+#usr/lib/locale/ar_LB
+#usr/lib/locale/ar_LB.utf8
+#usr/lib/locale/ar_LB.utf8/LC_ADDRESS
+#usr/lib/locale/ar_LB.utf8/LC_COLLATE
+#usr/lib/locale/ar_LB.utf8/LC_CTYPE
+#usr/lib/locale/ar_LB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_LB.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_LB.utf8/LC_MESSAGES
+#usr/lib/locale/ar_LB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_LB.utf8/LC_MONETARY
+#usr/lib/locale/ar_LB.utf8/LC_NAME
+#usr/lib/locale/ar_LB.utf8/LC_NUMERIC
+#usr/lib/locale/ar_LB.utf8/LC_PAPER
+#usr/lib/locale/ar_LB.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_LB.utf8/LC_TIME
+#usr/lib/locale/ar_LB/LC_ADDRESS
+#usr/lib/locale/ar_LB/LC_COLLATE
+#usr/lib/locale/ar_LB/LC_CTYPE
+#usr/lib/locale/ar_LB/LC_IDENTIFICATION
+#usr/lib/locale/ar_LB/LC_MEASUREMENT
+#usr/lib/locale/ar_LB/LC_MESSAGES
+#usr/lib/locale/ar_LB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_LB/LC_MONETARY
+#usr/lib/locale/ar_LB/LC_NAME
+#usr/lib/locale/ar_LB/LC_NUMERIC
+#usr/lib/locale/ar_LB/LC_PAPER
+#usr/lib/locale/ar_LB/LC_TELEPHONE
+#usr/lib/locale/ar_LB/LC_TIME
+#usr/lib/locale/ar_LY
+#usr/lib/locale/ar_LY.utf8
+#usr/lib/locale/ar_LY.utf8/LC_ADDRESS
+#usr/lib/locale/ar_LY.utf8/LC_COLLATE
+#usr/lib/locale/ar_LY.utf8/LC_CTYPE
+#usr/lib/locale/ar_LY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_LY.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_LY.utf8/LC_MESSAGES
+#usr/lib/locale/ar_LY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_LY.utf8/LC_MONETARY
+#usr/lib/locale/ar_LY.utf8/LC_NAME
+#usr/lib/locale/ar_LY.utf8/LC_NUMERIC
+#usr/lib/locale/ar_LY.utf8/LC_PAPER
+#usr/lib/locale/ar_LY.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_LY.utf8/LC_TIME
+#usr/lib/locale/ar_LY/LC_ADDRESS
+#usr/lib/locale/ar_LY/LC_COLLATE
+#usr/lib/locale/ar_LY/LC_CTYPE
+#usr/lib/locale/ar_LY/LC_IDENTIFICATION
+#usr/lib/locale/ar_LY/LC_MEASUREMENT
+#usr/lib/locale/ar_LY/LC_MESSAGES
+#usr/lib/locale/ar_LY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_LY/LC_MONETARY
+#usr/lib/locale/ar_LY/LC_NAME
+#usr/lib/locale/ar_LY/LC_NUMERIC
+#usr/lib/locale/ar_LY/LC_PAPER
+#usr/lib/locale/ar_LY/LC_TELEPHONE
+#usr/lib/locale/ar_LY/LC_TIME
+#usr/lib/locale/ar_MA
+#usr/lib/locale/ar_MA.utf8
+#usr/lib/locale/ar_MA.utf8/LC_ADDRESS
+#usr/lib/locale/ar_MA.utf8/LC_COLLATE
+#usr/lib/locale/ar_MA.utf8/LC_CTYPE
+#usr/lib/locale/ar_MA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_MA.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_MA.utf8/LC_MESSAGES
+#usr/lib/locale/ar_MA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_MA.utf8/LC_MONETARY
+#usr/lib/locale/ar_MA.utf8/LC_NAME
+#usr/lib/locale/ar_MA.utf8/LC_NUMERIC
+#usr/lib/locale/ar_MA.utf8/LC_PAPER
+#usr/lib/locale/ar_MA.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_MA.utf8/LC_TIME
+#usr/lib/locale/ar_MA/LC_ADDRESS
+#usr/lib/locale/ar_MA/LC_COLLATE
+#usr/lib/locale/ar_MA/LC_CTYPE
+#usr/lib/locale/ar_MA/LC_IDENTIFICATION
+#usr/lib/locale/ar_MA/LC_MEASUREMENT
+#usr/lib/locale/ar_MA/LC_MESSAGES
+#usr/lib/locale/ar_MA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_MA/LC_MONETARY
+#usr/lib/locale/ar_MA/LC_NAME
+#usr/lib/locale/ar_MA/LC_NUMERIC
+#usr/lib/locale/ar_MA/LC_PAPER
+#usr/lib/locale/ar_MA/LC_TELEPHONE
+#usr/lib/locale/ar_MA/LC_TIME
+#usr/lib/locale/ar_OM
+#usr/lib/locale/ar_OM.utf8
+#usr/lib/locale/ar_OM.utf8/LC_ADDRESS
+#usr/lib/locale/ar_OM.utf8/LC_COLLATE
+#usr/lib/locale/ar_OM.utf8/LC_CTYPE
+#usr/lib/locale/ar_OM.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_OM.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_OM.utf8/LC_MESSAGES
+#usr/lib/locale/ar_OM.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_OM.utf8/LC_MONETARY
+#usr/lib/locale/ar_OM.utf8/LC_NAME
+#usr/lib/locale/ar_OM.utf8/LC_NUMERIC
+#usr/lib/locale/ar_OM.utf8/LC_PAPER
+#usr/lib/locale/ar_OM.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_OM.utf8/LC_TIME
+#usr/lib/locale/ar_OM/LC_ADDRESS
+#usr/lib/locale/ar_OM/LC_COLLATE
+#usr/lib/locale/ar_OM/LC_CTYPE
+#usr/lib/locale/ar_OM/LC_IDENTIFICATION
+#usr/lib/locale/ar_OM/LC_MEASUREMENT
+#usr/lib/locale/ar_OM/LC_MESSAGES
+#usr/lib/locale/ar_OM/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_OM/LC_MONETARY
+#usr/lib/locale/ar_OM/LC_NAME
+#usr/lib/locale/ar_OM/LC_NUMERIC
+#usr/lib/locale/ar_OM/LC_PAPER
+#usr/lib/locale/ar_OM/LC_TELEPHONE
+#usr/lib/locale/ar_OM/LC_TIME
+#usr/lib/locale/ar_QA
+#usr/lib/locale/ar_QA.utf8
+#usr/lib/locale/ar_QA.utf8/LC_ADDRESS
+#usr/lib/locale/ar_QA.utf8/LC_COLLATE
+#usr/lib/locale/ar_QA.utf8/LC_CTYPE
+#usr/lib/locale/ar_QA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_QA.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_QA.utf8/LC_MESSAGES
+#usr/lib/locale/ar_QA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_QA.utf8/LC_MONETARY
+#usr/lib/locale/ar_QA.utf8/LC_NAME
+#usr/lib/locale/ar_QA.utf8/LC_NUMERIC
+#usr/lib/locale/ar_QA.utf8/LC_PAPER
+#usr/lib/locale/ar_QA.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_QA.utf8/LC_TIME
+#usr/lib/locale/ar_QA/LC_ADDRESS
+#usr/lib/locale/ar_QA/LC_COLLATE
+#usr/lib/locale/ar_QA/LC_CTYPE
+#usr/lib/locale/ar_QA/LC_IDENTIFICATION
+#usr/lib/locale/ar_QA/LC_MEASUREMENT
+#usr/lib/locale/ar_QA/LC_MESSAGES
+#usr/lib/locale/ar_QA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_QA/LC_MONETARY
+#usr/lib/locale/ar_QA/LC_NAME
+#usr/lib/locale/ar_QA/LC_NUMERIC
+#usr/lib/locale/ar_QA/LC_PAPER
+#usr/lib/locale/ar_QA/LC_TELEPHONE
+#usr/lib/locale/ar_QA/LC_TIME
+#usr/lib/locale/ar_SA
+#usr/lib/locale/ar_SA.utf8
+#usr/lib/locale/ar_SA.utf8/LC_ADDRESS
+#usr/lib/locale/ar_SA.utf8/LC_COLLATE
+#usr/lib/locale/ar_SA.utf8/LC_CTYPE
+#usr/lib/locale/ar_SA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_SA.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_SA.utf8/LC_MESSAGES
+#usr/lib/locale/ar_SA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SA.utf8/LC_MONETARY
+#usr/lib/locale/ar_SA.utf8/LC_NAME
+#usr/lib/locale/ar_SA.utf8/LC_NUMERIC
+#usr/lib/locale/ar_SA.utf8/LC_PAPER
+#usr/lib/locale/ar_SA.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_SA.utf8/LC_TIME
+#usr/lib/locale/ar_SA/LC_ADDRESS
+#usr/lib/locale/ar_SA/LC_COLLATE
+#usr/lib/locale/ar_SA/LC_CTYPE
+#usr/lib/locale/ar_SA/LC_IDENTIFICATION
+#usr/lib/locale/ar_SA/LC_MEASUREMENT
+#usr/lib/locale/ar_SA/LC_MESSAGES
+#usr/lib/locale/ar_SA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SA/LC_MONETARY
+#usr/lib/locale/ar_SA/LC_NAME
+#usr/lib/locale/ar_SA/LC_NUMERIC
+#usr/lib/locale/ar_SA/LC_PAPER
+#usr/lib/locale/ar_SA/LC_TELEPHONE
+#usr/lib/locale/ar_SA/LC_TIME
+#usr/lib/locale/ar_SD
+#usr/lib/locale/ar_SD.utf8
+#usr/lib/locale/ar_SD.utf8/LC_ADDRESS
+#usr/lib/locale/ar_SD.utf8/LC_COLLATE
+#usr/lib/locale/ar_SD.utf8/LC_CTYPE
+#usr/lib/locale/ar_SD.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_SD.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_SD.utf8/LC_MESSAGES
+#usr/lib/locale/ar_SD.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SD.utf8/LC_MONETARY
+#usr/lib/locale/ar_SD.utf8/LC_NAME
+#usr/lib/locale/ar_SD.utf8/LC_NUMERIC
+#usr/lib/locale/ar_SD.utf8/LC_PAPER
+#usr/lib/locale/ar_SD.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_SD.utf8/LC_TIME
+#usr/lib/locale/ar_SD/LC_ADDRESS
+#usr/lib/locale/ar_SD/LC_COLLATE
+#usr/lib/locale/ar_SD/LC_CTYPE
+#usr/lib/locale/ar_SD/LC_IDENTIFICATION
+#usr/lib/locale/ar_SD/LC_MEASUREMENT
+#usr/lib/locale/ar_SD/LC_MESSAGES
+#usr/lib/locale/ar_SD/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SD/LC_MONETARY
+#usr/lib/locale/ar_SD/LC_NAME
+#usr/lib/locale/ar_SD/LC_NUMERIC
+#usr/lib/locale/ar_SD/LC_PAPER
+#usr/lib/locale/ar_SD/LC_TELEPHONE
+#usr/lib/locale/ar_SD/LC_TIME
+#usr/lib/locale/ar_SY
+#usr/lib/locale/ar_SY.utf8
+#usr/lib/locale/ar_SY.utf8/LC_ADDRESS
+#usr/lib/locale/ar_SY.utf8/LC_COLLATE
+#usr/lib/locale/ar_SY.utf8/LC_CTYPE
+#usr/lib/locale/ar_SY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_SY.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_SY.utf8/LC_MESSAGES
+#usr/lib/locale/ar_SY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SY.utf8/LC_MONETARY
+#usr/lib/locale/ar_SY.utf8/LC_NAME
+#usr/lib/locale/ar_SY.utf8/LC_NUMERIC
+#usr/lib/locale/ar_SY.utf8/LC_PAPER
+#usr/lib/locale/ar_SY.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_SY.utf8/LC_TIME
+#usr/lib/locale/ar_SY/LC_ADDRESS
+#usr/lib/locale/ar_SY/LC_COLLATE
+#usr/lib/locale/ar_SY/LC_CTYPE
+#usr/lib/locale/ar_SY/LC_IDENTIFICATION
+#usr/lib/locale/ar_SY/LC_MEASUREMENT
+#usr/lib/locale/ar_SY/LC_MESSAGES
+#usr/lib/locale/ar_SY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SY/LC_MONETARY
+#usr/lib/locale/ar_SY/LC_NAME
+#usr/lib/locale/ar_SY/LC_NUMERIC
+#usr/lib/locale/ar_SY/LC_PAPER
+#usr/lib/locale/ar_SY/LC_TELEPHONE
+#usr/lib/locale/ar_SY/LC_TIME
+#usr/lib/locale/ar_TN
+#usr/lib/locale/ar_TN.utf8
+#usr/lib/locale/ar_TN.utf8/LC_ADDRESS
+#usr/lib/locale/ar_TN.utf8/LC_COLLATE
+#usr/lib/locale/ar_TN.utf8/LC_CTYPE
+#usr/lib/locale/ar_TN.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_TN.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_TN.utf8/LC_MESSAGES
+#usr/lib/locale/ar_TN.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_TN.utf8/LC_MONETARY
+#usr/lib/locale/ar_TN.utf8/LC_NAME
+#usr/lib/locale/ar_TN.utf8/LC_NUMERIC
+#usr/lib/locale/ar_TN.utf8/LC_PAPER
+#usr/lib/locale/ar_TN.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_TN.utf8/LC_TIME
+#usr/lib/locale/ar_TN/LC_ADDRESS
+#usr/lib/locale/ar_TN/LC_COLLATE
+#usr/lib/locale/ar_TN/LC_CTYPE
+#usr/lib/locale/ar_TN/LC_IDENTIFICATION
+#usr/lib/locale/ar_TN/LC_MEASUREMENT
+#usr/lib/locale/ar_TN/LC_MESSAGES
+#usr/lib/locale/ar_TN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_TN/LC_MONETARY
+#usr/lib/locale/ar_TN/LC_NAME
+#usr/lib/locale/ar_TN/LC_NUMERIC
+#usr/lib/locale/ar_TN/LC_PAPER
+#usr/lib/locale/ar_TN/LC_TELEPHONE
+#usr/lib/locale/ar_TN/LC_TIME
+#usr/lib/locale/ar_YE
+#usr/lib/locale/ar_YE.utf8
+#usr/lib/locale/ar_YE.utf8/LC_ADDRESS
+#usr/lib/locale/ar_YE.utf8/LC_COLLATE
+#usr/lib/locale/ar_YE.utf8/LC_CTYPE
+#usr/lib/locale/ar_YE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_YE.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_YE.utf8/LC_MESSAGES
+#usr/lib/locale/ar_YE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_YE.utf8/LC_MONETARY
+#usr/lib/locale/ar_YE.utf8/LC_NAME
+#usr/lib/locale/ar_YE.utf8/LC_NUMERIC
+#usr/lib/locale/ar_YE.utf8/LC_PAPER
+#usr/lib/locale/ar_YE.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_YE.utf8/LC_TIME
+#usr/lib/locale/ar_YE/LC_ADDRESS
+#usr/lib/locale/ar_YE/LC_COLLATE
+#usr/lib/locale/ar_YE/LC_CTYPE
+#usr/lib/locale/ar_YE/LC_IDENTIFICATION
+#usr/lib/locale/ar_YE/LC_MEASUREMENT
+#usr/lib/locale/ar_YE/LC_MESSAGES
+#usr/lib/locale/ar_YE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_YE/LC_MONETARY
+#usr/lib/locale/ar_YE/LC_NAME
+#usr/lib/locale/ar_YE/LC_NUMERIC
+#usr/lib/locale/ar_YE/LC_PAPER
+#usr/lib/locale/ar_YE/LC_TELEPHONE
+#usr/lib/locale/ar_YE/LC_TIME
+#usr/lib/locale/as_IN
+#usr/lib/locale/as_IN/LC_ADDRESS
+#usr/lib/locale/as_IN/LC_COLLATE
+#usr/lib/locale/as_IN/LC_CTYPE
+#usr/lib/locale/as_IN/LC_IDENTIFICATION
+#usr/lib/locale/as_IN/LC_MEASUREMENT
+#usr/lib/locale/as_IN/LC_MESSAGES
+#usr/lib/locale/as_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/as_IN/LC_MONETARY
+#usr/lib/locale/as_IN/LC_NAME
+#usr/lib/locale/as_IN/LC_NUMERIC
+#usr/lib/locale/as_IN/LC_PAPER
+#usr/lib/locale/as_IN/LC_TELEPHONE
+#usr/lib/locale/as_IN/LC_TIME
+#usr/lib/locale/ast_ES
+#usr/lib/locale/ast_ES.utf8
+#usr/lib/locale/ast_ES.utf8/LC_ADDRESS
+#usr/lib/locale/ast_ES.utf8/LC_COLLATE
+#usr/lib/locale/ast_ES.utf8/LC_CTYPE
+#usr/lib/locale/ast_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ast_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/ast_ES.utf8/LC_MESSAGES
+#usr/lib/locale/ast_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ast_ES.utf8/LC_MONETARY
+#usr/lib/locale/ast_ES.utf8/LC_NAME
+#usr/lib/locale/ast_ES.utf8/LC_NUMERIC
+#usr/lib/locale/ast_ES.utf8/LC_PAPER
+#usr/lib/locale/ast_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/ast_ES.utf8/LC_TIME
+#usr/lib/locale/ast_ES/LC_ADDRESS
+#usr/lib/locale/ast_ES/LC_COLLATE
+#usr/lib/locale/ast_ES/LC_CTYPE
+#usr/lib/locale/ast_ES/LC_IDENTIFICATION
+#usr/lib/locale/ast_ES/LC_MEASUREMENT
+#usr/lib/locale/ast_ES/LC_MESSAGES
+#usr/lib/locale/ast_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ast_ES/LC_MONETARY
+#usr/lib/locale/ast_ES/LC_NAME
+#usr/lib/locale/ast_ES/LC_NUMERIC
+#usr/lib/locale/ast_ES/LC_PAPER
+#usr/lib/locale/ast_ES/LC_TELEPHONE
+#usr/lib/locale/ast_ES/LC_TIME
+#usr/lib/locale/az_AZ
+#usr/lib/locale/az_AZ/LC_ADDRESS
+#usr/lib/locale/az_AZ/LC_COLLATE
+#usr/lib/locale/az_AZ/LC_CTYPE
+#usr/lib/locale/az_AZ/LC_IDENTIFICATION
+#usr/lib/locale/az_AZ/LC_MEASUREMENT
+#usr/lib/locale/az_AZ/LC_MESSAGES
+#usr/lib/locale/az_AZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/az_AZ/LC_MONETARY
+#usr/lib/locale/az_AZ/LC_NAME
+#usr/lib/locale/az_AZ/LC_NUMERIC
+#usr/lib/locale/az_AZ/LC_PAPER
+#usr/lib/locale/az_AZ/LC_TELEPHONE
+#usr/lib/locale/az_AZ/LC_TIME
+#usr/lib/locale/be_BY
+#usr/lib/locale/be_BY.utf8
+#usr/lib/locale/be_BY.utf8/LC_ADDRESS
+#usr/lib/locale/be_BY.utf8/LC_COLLATE
+#usr/lib/locale/be_BY.utf8/LC_CTYPE
+#usr/lib/locale/be_BY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/be_BY.utf8/LC_MEASUREMENT
+#usr/lib/locale/be_BY.utf8/LC_MESSAGES
+#usr/lib/locale/be_BY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/be_BY.utf8/LC_MONETARY
+#usr/lib/locale/be_BY.utf8/LC_NAME
+#usr/lib/locale/be_BY.utf8/LC_NUMERIC
+#usr/lib/locale/be_BY.utf8/LC_PAPER
+#usr/lib/locale/be_BY.utf8/LC_TELEPHONE
+#usr/lib/locale/be_BY.utf8/LC_TIME
+#usr/lib/locale/be_BY/LC_ADDRESS
+#usr/lib/locale/be_BY/LC_COLLATE
+#usr/lib/locale/be_BY/LC_CTYPE
+#usr/lib/locale/be_BY/LC_IDENTIFICATION
+#usr/lib/locale/be_BY/LC_MEASUREMENT
+#usr/lib/locale/be_BY/LC_MESSAGES
+#usr/lib/locale/be_BY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/be_BY/LC_MONETARY
+#usr/lib/locale/be_BY/LC_NAME
+#usr/lib/locale/be_BY/LC_NUMERIC
+#usr/lib/locale/be_BY/LC_PAPER
+#usr/lib/locale/be_BY/LC_TELEPHONE
+#usr/lib/locale/be_BY/LC_TIME
+#usr/lib/locale/be_BY@latin
+#usr/lib/locale/be_BY@latin/LC_ADDRESS
+#usr/lib/locale/be_BY@latin/LC_COLLATE
+#usr/lib/locale/be_BY@latin/LC_CTYPE
+#usr/lib/locale/be_BY@latin/LC_IDENTIFICATION
+#usr/lib/locale/be_BY@latin/LC_MEASUREMENT
+#usr/lib/locale/be_BY@latin/LC_MESSAGES
+#usr/lib/locale/be_BY@latin/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/be_BY@latin/LC_MONETARY
+#usr/lib/locale/be_BY@latin/LC_NAME
+#usr/lib/locale/be_BY@latin/LC_NUMERIC
+#usr/lib/locale/be_BY@latin/LC_PAPER
+#usr/lib/locale/be_BY@latin/LC_TELEPHONE
+#usr/lib/locale/be_BY@latin/LC_TIME
+#usr/lib/locale/ber_DZ
+#usr/lib/locale/ber_DZ/LC_ADDRESS
+#usr/lib/locale/ber_DZ/LC_COLLATE
+#usr/lib/locale/ber_DZ/LC_CTYPE
+#usr/lib/locale/ber_DZ/LC_IDENTIFICATION
+#usr/lib/locale/ber_DZ/LC_MEASUREMENT
+#usr/lib/locale/ber_DZ/LC_MESSAGES
+#usr/lib/locale/ber_DZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ber_DZ/LC_MONETARY
+#usr/lib/locale/ber_DZ/LC_NAME
+#usr/lib/locale/ber_DZ/LC_NUMERIC
+#usr/lib/locale/ber_DZ/LC_PAPER
+#usr/lib/locale/ber_DZ/LC_TELEPHONE
+#usr/lib/locale/ber_DZ/LC_TIME
+#usr/lib/locale/ber_MA
+#usr/lib/locale/ber_MA/LC_ADDRESS
+#usr/lib/locale/ber_MA/LC_COLLATE
+#usr/lib/locale/ber_MA/LC_CTYPE
+#usr/lib/locale/ber_MA/LC_IDENTIFICATION
+#usr/lib/locale/ber_MA/LC_MEASUREMENT
+#usr/lib/locale/ber_MA/LC_MESSAGES
+#usr/lib/locale/ber_MA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ber_MA/LC_MONETARY
+#usr/lib/locale/ber_MA/LC_NAME
+#usr/lib/locale/ber_MA/LC_NUMERIC
+#usr/lib/locale/ber_MA/LC_PAPER
+#usr/lib/locale/ber_MA/LC_TELEPHONE
+#usr/lib/locale/ber_MA/LC_TIME
+#usr/lib/locale/bg_BG
+#usr/lib/locale/bg_BG.utf8
+#usr/lib/locale/bg_BG.utf8/LC_ADDRESS
+#usr/lib/locale/bg_BG.utf8/LC_COLLATE
+#usr/lib/locale/bg_BG.utf8/LC_CTYPE
+#usr/lib/locale/bg_BG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/bg_BG.utf8/LC_MEASUREMENT
+#usr/lib/locale/bg_BG.utf8/LC_MESSAGES
+#usr/lib/locale/bg_BG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bg_BG.utf8/LC_MONETARY
+#usr/lib/locale/bg_BG.utf8/LC_NAME
+#usr/lib/locale/bg_BG.utf8/LC_NUMERIC
+#usr/lib/locale/bg_BG.utf8/LC_PAPER
+#usr/lib/locale/bg_BG.utf8/LC_TELEPHONE
+#usr/lib/locale/bg_BG.utf8/LC_TIME
+#usr/lib/locale/bg_BG/LC_ADDRESS
+#usr/lib/locale/bg_BG/LC_COLLATE
+#usr/lib/locale/bg_BG/LC_CTYPE
+#usr/lib/locale/bg_BG/LC_IDENTIFICATION
+#usr/lib/locale/bg_BG/LC_MEASUREMENT
+#usr/lib/locale/bg_BG/LC_MESSAGES
+#usr/lib/locale/bg_BG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bg_BG/LC_MONETARY
+#usr/lib/locale/bg_BG/LC_NAME
+#usr/lib/locale/bg_BG/LC_NUMERIC
+#usr/lib/locale/bg_BG/LC_PAPER
+#usr/lib/locale/bg_BG/LC_TELEPHONE
+#usr/lib/locale/bg_BG/LC_TIME
+#usr/lib/locale/bn_BD
+#usr/lib/locale/bn_BD/LC_ADDRESS
+#usr/lib/locale/bn_BD/LC_COLLATE
+#usr/lib/locale/bn_BD/LC_CTYPE
+#usr/lib/locale/bn_BD/LC_IDENTIFICATION
+#usr/lib/locale/bn_BD/LC_MEASUREMENT
+#usr/lib/locale/bn_BD/LC_MESSAGES
+#usr/lib/locale/bn_BD/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bn_BD/LC_MONETARY
+#usr/lib/locale/bn_BD/LC_NAME
+#usr/lib/locale/bn_BD/LC_NUMERIC
+#usr/lib/locale/bn_BD/LC_PAPER
+#usr/lib/locale/bn_BD/LC_TELEPHONE
+#usr/lib/locale/bn_BD/LC_TIME
+#usr/lib/locale/bn_IN
+#usr/lib/locale/bn_IN/LC_ADDRESS
+#usr/lib/locale/bn_IN/LC_COLLATE
+#usr/lib/locale/bn_IN/LC_CTYPE
+#usr/lib/locale/bn_IN/LC_IDENTIFICATION
+#usr/lib/locale/bn_IN/LC_MEASUREMENT
+#usr/lib/locale/bn_IN/LC_MESSAGES
+#usr/lib/locale/bn_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bn_IN/LC_MONETARY
+#usr/lib/locale/bn_IN/LC_NAME
+#usr/lib/locale/bn_IN/LC_NUMERIC
+#usr/lib/locale/bn_IN/LC_PAPER
+#usr/lib/locale/bn_IN/LC_TELEPHONE
+#usr/lib/locale/bn_IN/LC_TIME
+#usr/lib/locale/bo_CN
+#usr/lib/locale/bo_CN/LC_ADDRESS
+#usr/lib/locale/bo_CN/LC_COLLATE
+#usr/lib/locale/bo_CN/LC_CTYPE
+#usr/lib/locale/bo_CN/LC_IDENTIFICATION
+#usr/lib/locale/bo_CN/LC_MEASUREMENT
+#usr/lib/locale/bo_CN/LC_MESSAGES
+#usr/lib/locale/bo_CN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bo_CN/LC_MONETARY
+#usr/lib/locale/bo_CN/LC_NAME
+#usr/lib/locale/bo_CN/LC_NUMERIC
+#usr/lib/locale/bo_CN/LC_PAPER
+#usr/lib/locale/bo_CN/LC_TELEPHONE
+#usr/lib/locale/bo_CN/LC_TIME
+#usr/lib/locale/bo_IN
+#usr/lib/locale/bo_IN/LC_ADDRESS
+#usr/lib/locale/bo_IN/LC_COLLATE
+#usr/lib/locale/bo_IN/LC_CTYPE
+#usr/lib/locale/bo_IN/LC_IDENTIFICATION
+#usr/lib/locale/bo_IN/LC_MEASUREMENT
+#usr/lib/locale/bo_IN/LC_MESSAGES
+#usr/lib/locale/bo_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bo_IN/LC_MONETARY
+#usr/lib/locale/bo_IN/LC_NAME
+#usr/lib/locale/bo_IN/LC_NUMERIC
+#usr/lib/locale/bo_IN/LC_PAPER
+#usr/lib/locale/bo_IN/LC_TELEPHONE
+#usr/lib/locale/bo_IN/LC_TIME
+#usr/lib/locale/br_FR
+#usr/lib/locale/br_FR.utf8
+#usr/lib/locale/br_FR.utf8/LC_ADDRESS
+#usr/lib/locale/br_FR.utf8/LC_COLLATE
+#usr/lib/locale/br_FR.utf8/LC_CTYPE
+#usr/lib/locale/br_FR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/br_FR.utf8/LC_MEASUREMENT
+#usr/lib/locale/br_FR.utf8/LC_MESSAGES
+#usr/lib/locale/br_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/br_FR.utf8/LC_MONETARY
+#usr/lib/locale/br_FR.utf8/LC_NAME
+#usr/lib/locale/br_FR.utf8/LC_NUMERIC
+#usr/lib/locale/br_FR.utf8/LC_PAPER
+#usr/lib/locale/br_FR.utf8/LC_TELEPHONE
+#usr/lib/locale/br_FR.utf8/LC_TIME
+#usr/lib/locale/br_FR/LC_ADDRESS
+#usr/lib/locale/br_FR/LC_COLLATE
+#usr/lib/locale/br_FR/LC_CTYPE
+#usr/lib/locale/br_FR/LC_IDENTIFICATION
+#usr/lib/locale/br_FR/LC_MEASUREMENT
+#usr/lib/locale/br_FR/LC_MESSAGES
+#usr/lib/locale/br_FR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/br_FR/LC_MONETARY
+#usr/lib/locale/br_FR/LC_NAME
+#usr/lib/locale/br_FR/LC_NUMERIC
+#usr/lib/locale/br_FR/LC_PAPER
+#usr/lib/locale/br_FR/LC_TELEPHONE
+#usr/lib/locale/br_FR/LC_TIME
+#usr/lib/locale/br_FR@euro
+#usr/lib/locale/br_FR@euro/LC_ADDRESS
+#usr/lib/locale/br_FR@euro/LC_COLLATE
+#usr/lib/locale/br_FR@euro/LC_CTYPE
+#usr/lib/locale/br_FR@euro/LC_IDENTIFICATION
+#usr/lib/locale/br_FR@euro/LC_MEASUREMENT
+#usr/lib/locale/br_FR@euro/LC_MESSAGES
+#usr/lib/locale/br_FR@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/br_FR@euro/LC_MONETARY
+#usr/lib/locale/br_FR@euro/LC_NAME
+#usr/lib/locale/br_FR@euro/LC_NUMERIC
+#usr/lib/locale/br_FR@euro/LC_PAPER
+#usr/lib/locale/br_FR@euro/LC_TELEPHONE
+#usr/lib/locale/br_FR@euro/LC_TIME
+#usr/lib/locale/bs_BA
+#usr/lib/locale/bs_BA.utf8
+#usr/lib/locale/bs_BA.utf8/LC_ADDRESS
+#usr/lib/locale/bs_BA.utf8/LC_COLLATE
+#usr/lib/locale/bs_BA.utf8/LC_CTYPE
+#usr/lib/locale/bs_BA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/bs_BA.utf8/LC_MEASUREMENT
+#usr/lib/locale/bs_BA.utf8/LC_MESSAGES
+#usr/lib/locale/bs_BA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bs_BA.utf8/LC_MONETARY
+#usr/lib/locale/bs_BA.utf8/LC_NAME
+#usr/lib/locale/bs_BA.utf8/LC_NUMERIC
+#usr/lib/locale/bs_BA.utf8/LC_PAPER
+#usr/lib/locale/bs_BA.utf8/LC_TELEPHONE
+#usr/lib/locale/bs_BA.utf8/LC_TIME
+#usr/lib/locale/bs_BA/LC_ADDRESS
+#usr/lib/locale/bs_BA/LC_COLLATE
+#usr/lib/locale/bs_BA/LC_CTYPE
+#usr/lib/locale/bs_BA/LC_IDENTIFICATION
+#usr/lib/locale/bs_BA/LC_MEASUREMENT
+#usr/lib/locale/bs_BA/LC_MESSAGES
+#usr/lib/locale/bs_BA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bs_BA/LC_MONETARY
+#usr/lib/locale/bs_BA/LC_NAME
+#usr/lib/locale/bs_BA/LC_NUMERIC
+#usr/lib/locale/bs_BA/LC_PAPER
+#usr/lib/locale/bs_BA/LC_TELEPHONE
+#usr/lib/locale/bs_BA/LC_TIME
+#usr/lib/locale/byn_ER
+#usr/lib/locale/byn_ER/LC_ADDRESS
+#usr/lib/locale/byn_ER/LC_COLLATE
+#usr/lib/locale/byn_ER/LC_CTYPE
+#usr/lib/locale/byn_ER/LC_IDENTIFICATION
+#usr/lib/locale/byn_ER/LC_MEASUREMENT
+#usr/lib/locale/byn_ER/LC_MESSAGES
+#usr/lib/locale/byn_ER/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/byn_ER/LC_MONETARY
+#usr/lib/locale/byn_ER/LC_NAME
+#usr/lib/locale/byn_ER/LC_NUMERIC
+#usr/lib/locale/byn_ER/LC_PAPER
+#usr/lib/locale/byn_ER/LC_TELEPHONE
+#usr/lib/locale/byn_ER/LC_TIME
+#usr/lib/locale/ca_AD
+#usr/lib/locale/ca_AD.utf8
+#usr/lib/locale/ca_AD.utf8/LC_ADDRESS
+#usr/lib/locale/ca_AD.utf8/LC_COLLATE
+#usr/lib/locale/ca_AD.utf8/LC_CTYPE
+#usr/lib/locale/ca_AD.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ca_AD.utf8/LC_MEASUREMENT
+#usr/lib/locale/ca_AD.utf8/LC_MESSAGES
+#usr/lib/locale/ca_AD.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_AD.utf8/LC_MONETARY
+#usr/lib/locale/ca_AD.utf8/LC_NAME
+#usr/lib/locale/ca_AD.utf8/LC_NUMERIC
+#usr/lib/locale/ca_AD.utf8/LC_PAPER
+#usr/lib/locale/ca_AD.utf8/LC_TELEPHONE
+#usr/lib/locale/ca_AD.utf8/LC_TIME
+#usr/lib/locale/ca_AD/LC_ADDRESS
+#usr/lib/locale/ca_AD/LC_COLLATE
+#usr/lib/locale/ca_AD/LC_CTYPE
+#usr/lib/locale/ca_AD/LC_IDENTIFICATION
+#usr/lib/locale/ca_AD/LC_MEASUREMENT
+#usr/lib/locale/ca_AD/LC_MESSAGES
+#usr/lib/locale/ca_AD/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_AD/LC_MONETARY
+#usr/lib/locale/ca_AD/LC_NAME
+#usr/lib/locale/ca_AD/LC_NUMERIC
+#usr/lib/locale/ca_AD/LC_PAPER
+#usr/lib/locale/ca_AD/LC_TELEPHONE
+#usr/lib/locale/ca_AD/LC_TIME
+#usr/lib/locale/ca_ES
+#usr/lib/locale/ca_ES.utf8
+#usr/lib/locale/ca_ES.utf8/LC_ADDRESS
+#usr/lib/locale/ca_ES.utf8/LC_COLLATE
+#usr/lib/locale/ca_ES.utf8/LC_CTYPE
+#usr/lib/locale/ca_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ca_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/ca_ES.utf8/LC_MESSAGES
+#usr/lib/locale/ca_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_ES.utf8/LC_MONETARY
+#usr/lib/locale/ca_ES.utf8/LC_NAME
+#usr/lib/locale/ca_ES.utf8/LC_NUMERIC
+#usr/lib/locale/ca_ES.utf8/LC_PAPER
+#usr/lib/locale/ca_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/ca_ES.utf8/LC_TIME
+#usr/lib/locale/ca_ES/LC_ADDRESS
+#usr/lib/locale/ca_ES/LC_COLLATE
+#usr/lib/locale/ca_ES/LC_CTYPE
+#usr/lib/locale/ca_ES/LC_IDENTIFICATION
+#usr/lib/locale/ca_ES/LC_MEASUREMENT
+#usr/lib/locale/ca_ES/LC_MESSAGES
+#usr/lib/locale/ca_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_ES/LC_MONETARY
+#usr/lib/locale/ca_ES/LC_NAME
+#usr/lib/locale/ca_ES/LC_NUMERIC
+#usr/lib/locale/ca_ES/LC_PAPER
+#usr/lib/locale/ca_ES/LC_TELEPHONE
+#usr/lib/locale/ca_ES/LC_TIME
+#usr/lib/locale/ca_ES@euro
+#usr/lib/locale/ca_ES@euro/LC_ADDRESS
+#usr/lib/locale/ca_ES@euro/LC_COLLATE
+#usr/lib/locale/ca_ES@euro/LC_CTYPE
+#usr/lib/locale/ca_ES@euro/LC_IDENTIFICATION
+#usr/lib/locale/ca_ES@euro/LC_MEASUREMENT
+#usr/lib/locale/ca_ES@euro/LC_MESSAGES
+#usr/lib/locale/ca_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_ES@euro/LC_MONETARY
+#usr/lib/locale/ca_ES@euro/LC_NAME
+#usr/lib/locale/ca_ES@euro/LC_NUMERIC
+#usr/lib/locale/ca_ES@euro/LC_PAPER
+#usr/lib/locale/ca_ES@euro/LC_TELEPHONE
+#usr/lib/locale/ca_ES@euro/LC_TIME
+#usr/lib/locale/ca_FR
+#usr/lib/locale/ca_FR.utf8
+#usr/lib/locale/ca_FR.utf8/LC_ADDRESS
+#usr/lib/locale/ca_FR.utf8/LC_COLLATE
+#usr/lib/locale/ca_FR.utf8/LC_CTYPE
+#usr/lib/locale/ca_FR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ca_FR.utf8/LC_MEASUREMENT
+#usr/lib/locale/ca_FR.utf8/LC_MESSAGES
+#usr/lib/locale/ca_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_FR.utf8/LC_MONETARY
+#usr/lib/locale/ca_FR.utf8/LC_NAME
+#usr/lib/locale/ca_FR.utf8/LC_NUMERIC
+#usr/lib/locale/ca_FR.utf8/LC_PAPER
+#usr/lib/locale/ca_FR.utf8/LC_TELEPHONE
+#usr/lib/locale/ca_FR.utf8/LC_TIME
+#usr/lib/locale/ca_FR/LC_ADDRESS
+#usr/lib/locale/ca_FR/LC_COLLATE
+#usr/lib/locale/ca_FR/LC_CTYPE
+#usr/lib/locale/ca_FR/LC_IDENTIFICATION
+#usr/lib/locale/ca_FR/LC_MEASUREMENT
+#usr/lib/locale/ca_FR/LC_MESSAGES
+#usr/lib/locale/ca_FR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_FR/LC_MONETARY
+#usr/lib/locale/ca_FR/LC_NAME
+#usr/lib/locale/ca_FR/LC_NUMERIC
+#usr/lib/locale/ca_FR/LC_PAPER
+#usr/lib/locale/ca_FR/LC_TELEPHONE
+#usr/lib/locale/ca_FR/LC_TIME
+#usr/lib/locale/ca_IT
+#usr/lib/locale/ca_IT.utf8
+#usr/lib/locale/ca_IT.utf8/LC_ADDRESS
+#usr/lib/locale/ca_IT.utf8/LC_COLLATE
+#usr/lib/locale/ca_IT.utf8/LC_CTYPE
+#usr/lib/locale/ca_IT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ca_IT.utf8/LC_MEASUREMENT
+#usr/lib/locale/ca_IT.utf8/LC_MESSAGES
+#usr/lib/locale/ca_IT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_IT.utf8/LC_MONETARY
+#usr/lib/locale/ca_IT.utf8/LC_NAME
+#usr/lib/locale/ca_IT.utf8/LC_NUMERIC
+#usr/lib/locale/ca_IT.utf8/LC_PAPER
+#usr/lib/locale/ca_IT.utf8/LC_TELEPHONE
+#usr/lib/locale/ca_IT.utf8/LC_TIME
+#usr/lib/locale/ca_IT/LC_ADDRESS
+#usr/lib/locale/ca_IT/LC_COLLATE
+#usr/lib/locale/ca_IT/LC_CTYPE
+#usr/lib/locale/ca_IT/LC_IDENTIFICATION
+#usr/lib/locale/ca_IT/LC_MEASUREMENT
+#usr/lib/locale/ca_IT/LC_MESSAGES
+#usr/lib/locale/ca_IT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_IT/LC_MONETARY
+#usr/lib/locale/ca_IT/LC_NAME
+#usr/lib/locale/ca_IT/LC_NUMERIC
+#usr/lib/locale/ca_IT/LC_PAPER
+#usr/lib/locale/ca_IT/LC_TELEPHONE
+#usr/lib/locale/ca_IT/LC_TIME
+#usr/lib/locale/crh_UA
+#usr/lib/locale/crh_UA/LC_ADDRESS
+#usr/lib/locale/crh_UA/LC_COLLATE
+#usr/lib/locale/crh_UA/LC_CTYPE
+#usr/lib/locale/crh_UA/LC_IDENTIFICATION
+#usr/lib/locale/crh_UA/LC_MEASUREMENT
+#usr/lib/locale/crh_UA/LC_MESSAGES
+#usr/lib/locale/crh_UA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/crh_UA/LC_MONETARY
+#usr/lib/locale/crh_UA/LC_NAME
+#usr/lib/locale/crh_UA/LC_NUMERIC
+#usr/lib/locale/crh_UA/LC_PAPER
+#usr/lib/locale/crh_UA/LC_TELEPHONE
+#usr/lib/locale/crh_UA/LC_TIME
+#usr/lib/locale/cs_CZ
+#usr/lib/locale/cs_CZ.utf8
+#usr/lib/locale/cs_CZ.utf8/LC_ADDRESS
+#usr/lib/locale/cs_CZ.utf8/LC_COLLATE
+#usr/lib/locale/cs_CZ.utf8/LC_CTYPE
+#usr/lib/locale/cs_CZ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/cs_CZ.utf8/LC_MEASUREMENT
+#usr/lib/locale/cs_CZ.utf8/LC_MESSAGES
+#usr/lib/locale/cs_CZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/cs_CZ.utf8/LC_MONETARY
+#usr/lib/locale/cs_CZ.utf8/LC_NAME
+#usr/lib/locale/cs_CZ.utf8/LC_NUMERIC
+#usr/lib/locale/cs_CZ.utf8/LC_PAPER
+#usr/lib/locale/cs_CZ.utf8/LC_TELEPHONE
+#usr/lib/locale/cs_CZ.utf8/LC_TIME
+#usr/lib/locale/cs_CZ/LC_ADDRESS
+#usr/lib/locale/cs_CZ/LC_COLLATE
+#usr/lib/locale/cs_CZ/LC_CTYPE
+#usr/lib/locale/cs_CZ/LC_IDENTIFICATION
+#usr/lib/locale/cs_CZ/LC_MEASUREMENT
+#usr/lib/locale/cs_CZ/LC_MESSAGES
+#usr/lib/locale/cs_CZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/cs_CZ/LC_MONETARY
+#usr/lib/locale/cs_CZ/LC_NAME
+#usr/lib/locale/cs_CZ/LC_NUMERIC
+#usr/lib/locale/cs_CZ/LC_PAPER
+#usr/lib/locale/cs_CZ/LC_TELEPHONE
+#usr/lib/locale/cs_CZ/LC_TIME
+#usr/lib/locale/csb_PL
+#usr/lib/locale/csb_PL/LC_ADDRESS
+#usr/lib/locale/csb_PL/LC_COLLATE
+#usr/lib/locale/csb_PL/LC_CTYPE
+#usr/lib/locale/csb_PL/LC_IDENTIFICATION
+#usr/lib/locale/csb_PL/LC_MEASUREMENT
+#usr/lib/locale/csb_PL/LC_MESSAGES
+#usr/lib/locale/csb_PL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/csb_PL/LC_MONETARY
+#usr/lib/locale/csb_PL/LC_NAME
+#usr/lib/locale/csb_PL/LC_NUMERIC
+#usr/lib/locale/csb_PL/LC_PAPER
+#usr/lib/locale/csb_PL/LC_TELEPHONE
+#usr/lib/locale/csb_PL/LC_TIME
+#usr/lib/locale/cv_RU
+#usr/lib/locale/cv_RU/LC_ADDRESS
+#usr/lib/locale/cv_RU/LC_COLLATE
+#usr/lib/locale/cv_RU/LC_CTYPE
+#usr/lib/locale/cv_RU/LC_IDENTIFICATION
+#usr/lib/locale/cv_RU/LC_MEASUREMENT
+#usr/lib/locale/cv_RU/LC_MESSAGES
+#usr/lib/locale/cv_RU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/cv_RU/LC_MONETARY
+#usr/lib/locale/cv_RU/LC_NAME
+#usr/lib/locale/cv_RU/LC_NUMERIC
+#usr/lib/locale/cv_RU/LC_PAPER
+#usr/lib/locale/cv_RU/LC_TELEPHONE
+#usr/lib/locale/cv_RU/LC_TIME
+#usr/lib/locale/cy_GB
+#usr/lib/locale/cy_GB.utf8
+#usr/lib/locale/cy_GB.utf8/LC_ADDRESS
+#usr/lib/locale/cy_GB.utf8/LC_COLLATE
+#usr/lib/locale/cy_GB.utf8/LC_CTYPE
+#usr/lib/locale/cy_GB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/cy_GB.utf8/LC_MEASUREMENT
+#usr/lib/locale/cy_GB.utf8/LC_MESSAGES
+#usr/lib/locale/cy_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/cy_GB.utf8/LC_MONETARY
+#usr/lib/locale/cy_GB.utf8/LC_NAME
+#usr/lib/locale/cy_GB.utf8/LC_NUMERIC
+#usr/lib/locale/cy_GB.utf8/LC_PAPER
+#usr/lib/locale/cy_GB.utf8/LC_TELEPHONE
+#usr/lib/locale/cy_GB.utf8/LC_TIME
+#usr/lib/locale/cy_GB/LC_ADDRESS
+#usr/lib/locale/cy_GB/LC_COLLATE
+#usr/lib/locale/cy_GB/LC_CTYPE
+#usr/lib/locale/cy_GB/LC_IDENTIFICATION
+#usr/lib/locale/cy_GB/LC_MEASUREMENT
+#usr/lib/locale/cy_GB/LC_MESSAGES
+#usr/lib/locale/cy_GB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/cy_GB/LC_MONETARY
+#usr/lib/locale/cy_GB/LC_NAME
+#usr/lib/locale/cy_GB/LC_NUMERIC
+#usr/lib/locale/cy_GB/LC_PAPER
+#usr/lib/locale/cy_GB/LC_TELEPHONE
+#usr/lib/locale/cy_GB/LC_TIME
+#usr/lib/locale/da_DK
+#usr/lib/locale/da_DK.iso885915
+#usr/lib/locale/da_DK.iso885915/LC_ADDRESS
+#usr/lib/locale/da_DK.iso885915/LC_COLLATE
+#usr/lib/locale/da_DK.iso885915/LC_CTYPE
+#usr/lib/locale/da_DK.iso885915/LC_IDENTIFICATION
+#usr/lib/locale/da_DK.iso885915/LC_MEASUREMENT
+#usr/lib/locale/da_DK.iso885915/LC_MESSAGES
+#usr/lib/locale/da_DK.iso885915/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/da_DK.iso885915/LC_MONETARY
+#usr/lib/locale/da_DK.iso885915/LC_NAME
+#usr/lib/locale/da_DK.iso885915/LC_NUMERIC
+#usr/lib/locale/da_DK.iso885915/LC_PAPER
+#usr/lib/locale/da_DK.iso885915/LC_TELEPHONE
+#usr/lib/locale/da_DK.iso885915/LC_TIME
+#usr/lib/locale/da_DK.utf8
+#usr/lib/locale/da_DK.utf8/LC_ADDRESS
+#usr/lib/locale/da_DK.utf8/LC_COLLATE
+#usr/lib/locale/da_DK.utf8/LC_CTYPE
+#usr/lib/locale/da_DK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/da_DK.utf8/LC_MEASUREMENT
+#usr/lib/locale/da_DK.utf8/LC_MESSAGES
+#usr/lib/locale/da_DK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/da_DK.utf8/LC_MONETARY
+#usr/lib/locale/da_DK.utf8/LC_NAME
+#usr/lib/locale/da_DK.utf8/LC_NUMERIC
+#usr/lib/locale/da_DK.utf8/LC_PAPER
+#usr/lib/locale/da_DK.utf8/LC_TELEPHONE
+#usr/lib/locale/da_DK.utf8/LC_TIME
+#usr/lib/locale/da_DK/LC_ADDRESS
+#usr/lib/locale/da_DK/LC_COLLATE
+#usr/lib/locale/da_DK/LC_CTYPE
+#usr/lib/locale/da_DK/LC_IDENTIFICATION
+#usr/lib/locale/da_DK/LC_MEASUREMENT
+#usr/lib/locale/da_DK/LC_MESSAGES
+#usr/lib/locale/da_DK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/da_DK/LC_MONETARY
+#usr/lib/locale/da_DK/LC_NAME
+#usr/lib/locale/da_DK/LC_NUMERIC
+#usr/lib/locale/da_DK/LC_PAPER
+#usr/lib/locale/da_DK/LC_TELEPHONE
+#usr/lib/locale/da_DK/LC_TIME
+#usr/lib/locale/de_AT
+#usr/lib/locale/de_AT.utf8
+#usr/lib/locale/de_AT.utf8/LC_ADDRESS
+#usr/lib/locale/de_AT.utf8/LC_COLLATE
+#usr/lib/locale/de_AT.utf8/LC_CTYPE
+#usr/lib/locale/de_AT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/de_AT.utf8/LC_MEASUREMENT
+#usr/lib/locale/de_AT.utf8/LC_MESSAGES
+#usr/lib/locale/de_AT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_AT.utf8/LC_MONETARY
+#usr/lib/locale/de_AT.utf8/LC_NAME
+#usr/lib/locale/de_AT.utf8/LC_NUMERIC
+#usr/lib/locale/de_AT.utf8/LC_PAPER
+#usr/lib/locale/de_AT.utf8/LC_TELEPHONE
+#usr/lib/locale/de_AT.utf8/LC_TIME
+#usr/lib/locale/de_AT/LC_ADDRESS
+#usr/lib/locale/de_AT/LC_COLLATE
+#usr/lib/locale/de_AT/LC_CTYPE
+#usr/lib/locale/de_AT/LC_IDENTIFICATION
+#usr/lib/locale/de_AT/LC_MEASUREMENT
+#usr/lib/locale/de_AT/LC_MESSAGES
+#usr/lib/locale/de_AT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_AT/LC_MONETARY
+#usr/lib/locale/de_AT/LC_NAME
+#usr/lib/locale/de_AT/LC_NUMERIC
+#usr/lib/locale/de_AT/LC_PAPER
+#usr/lib/locale/de_AT/LC_TELEPHONE
+#usr/lib/locale/de_AT/LC_TIME
+#usr/lib/locale/de_AT@euro
+#usr/lib/locale/de_AT@euro/LC_ADDRESS
+#usr/lib/locale/de_AT@euro/LC_COLLATE
+#usr/lib/locale/de_AT@euro/LC_CTYPE
+#usr/lib/locale/de_AT@euro/LC_IDENTIFICATION
+#usr/lib/locale/de_AT@euro/LC_MEASUREMENT
+#usr/lib/locale/de_AT@euro/LC_MESSAGES
+#usr/lib/locale/de_AT@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_AT@euro/LC_MONETARY
+#usr/lib/locale/de_AT@euro/LC_NAME
+#usr/lib/locale/de_AT@euro/LC_NUMERIC
+#usr/lib/locale/de_AT@euro/LC_PAPER
+#usr/lib/locale/de_AT@euro/LC_TELEPHONE
+#usr/lib/locale/de_AT@euro/LC_TIME
+#usr/lib/locale/de_BE
+#usr/lib/locale/de_BE.utf8
+#usr/lib/locale/de_BE.utf8/LC_ADDRESS
+#usr/lib/locale/de_BE.utf8/LC_COLLATE
+#usr/lib/locale/de_BE.utf8/LC_CTYPE
+#usr/lib/locale/de_BE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/de_BE.utf8/LC_MEASUREMENT
+#usr/lib/locale/de_BE.utf8/LC_MESSAGES
+#usr/lib/locale/de_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_BE.utf8/LC_MONETARY
+#usr/lib/locale/de_BE.utf8/LC_NAME
+#usr/lib/locale/de_BE.utf8/LC_NUMERIC
+#usr/lib/locale/de_BE.utf8/LC_PAPER
+#usr/lib/locale/de_BE.utf8/LC_TELEPHONE
+#usr/lib/locale/de_BE.utf8/LC_TIME
+#usr/lib/locale/de_BE/LC_ADDRESS
+#usr/lib/locale/de_BE/LC_COLLATE
+#usr/lib/locale/de_BE/LC_CTYPE
+#usr/lib/locale/de_BE/LC_IDENTIFICATION
+#usr/lib/locale/de_BE/LC_MEASUREMENT
+#usr/lib/locale/de_BE/LC_MESSAGES
+#usr/lib/locale/de_BE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_BE/LC_MONETARY
+#usr/lib/locale/de_BE/LC_NAME
+#usr/lib/locale/de_BE/LC_NUMERIC
+#usr/lib/locale/de_BE/LC_PAPER
+#usr/lib/locale/de_BE/LC_TELEPHONE
+#usr/lib/locale/de_BE/LC_TIME
+#usr/lib/locale/de_BE@euro
+#usr/lib/locale/de_BE@euro/LC_ADDRESS
+#usr/lib/locale/de_BE@euro/LC_COLLATE
+#usr/lib/locale/de_BE@euro/LC_CTYPE
+#usr/lib/locale/de_BE@euro/LC_IDENTIFICATION
+#usr/lib/locale/de_BE@euro/LC_MEASUREMENT
+#usr/lib/locale/de_BE@euro/LC_MESSAGES
+#usr/lib/locale/de_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_BE@euro/LC_MONETARY
+#usr/lib/locale/de_BE@euro/LC_NAME
+#usr/lib/locale/de_BE@euro/LC_NUMERIC
+#usr/lib/locale/de_BE@euro/LC_PAPER
+#usr/lib/locale/de_BE@euro/LC_TELEPHONE
+#usr/lib/locale/de_BE@euro/LC_TIME
+#usr/lib/locale/de_CH
+#usr/lib/locale/de_CH.utf8
+#usr/lib/locale/de_CH.utf8/LC_ADDRESS
+#usr/lib/locale/de_CH.utf8/LC_COLLATE
+#usr/lib/locale/de_CH.utf8/LC_CTYPE
+#usr/lib/locale/de_CH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/de_CH.utf8/LC_MEASUREMENT
+#usr/lib/locale/de_CH.utf8/LC_MESSAGES
+#usr/lib/locale/de_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_CH.utf8/LC_MONETARY
+#usr/lib/locale/de_CH.utf8/LC_NAME
+#usr/lib/locale/de_CH.utf8/LC_NUMERIC
+#usr/lib/locale/de_CH.utf8/LC_PAPER
+#usr/lib/locale/de_CH.utf8/LC_TELEPHONE
+#usr/lib/locale/de_CH.utf8/LC_TIME
+#usr/lib/locale/de_CH/LC_ADDRESS
+#usr/lib/locale/de_CH/LC_COLLATE
+#usr/lib/locale/de_CH/LC_CTYPE
+#usr/lib/locale/de_CH/LC_IDENTIFICATION
+#usr/lib/locale/de_CH/LC_MEASUREMENT
+#usr/lib/locale/de_CH/LC_MESSAGES
+#usr/lib/locale/de_CH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_CH/LC_MONETARY
+#usr/lib/locale/de_CH/LC_NAME
+#usr/lib/locale/de_CH/LC_NUMERIC
+#usr/lib/locale/de_CH/LC_PAPER
+#usr/lib/locale/de_CH/LC_TELEPHONE
+#usr/lib/locale/de_CH/LC_TIME
+#usr/lib/locale/de_DE
+#usr/lib/locale/de_DE.utf8
+#usr/lib/locale/de_DE.utf8/LC_ADDRESS
+#usr/lib/locale/de_DE.utf8/LC_COLLATE
+#usr/lib/locale/de_DE.utf8/LC_CTYPE
+#usr/lib/locale/de_DE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/de_DE.utf8/LC_MEASUREMENT
+#usr/lib/locale/de_DE.utf8/LC_MESSAGES
+#usr/lib/locale/de_DE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_DE.utf8/LC_MONETARY
+#usr/lib/locale/de_DE.utf8/LC_NAME
+#usr/lib/locale/de_DE.utf8/LC_NUMERIC
+#usr/lib/locale/de_DE.utf8/LC_PAPER
+#usr/lib/locale/de_DE.utf8/LC_TELEPHONE
+#usr/lib/locale/de_DE.utf8/LC_TIME
+#usr/lib/locale/de_DE/LC_ADDRESS
+#usr/lib/locale/de_DE/LC_COLLATE
+#usr/lib/locale/de_DE/LC_CTYPE
+#usr/lib/locale/de_DE/LC_IDENTIFICATION
+#usr/lib/locale/de_DE/LC_MEASUREMENT
+#usr/lib/locale/de_DE/LC_MESSAGES
+#usr/lib/locale/de_DE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_DE/LC_MONETARY
+#usr/lib/locale/de_DE/LC_NAME
+#usr/lib/locale/de_DE/LC_NUMERIC
+#usr/lib/locale/de_DE/LC_PAPER
+#usr/lib/locale/de_DE/LC_TELEPHONE
+#usr/lib/locale/de_DE/LC_TIME
+#usr/lib/locale/de_DE@euro
+#usr/lib/locale/de_DE@euro/LC_ADDRESS
+#usr/lib/locale/de_DE@euro/LC_COLLATE
+#usr/lib/locale/de_DE@euro/LC_CTYPE
+#usr/lib/locale/de_DE@euro/LC_IDENTIFICATION
+#usr/lib/locale/de_DE@euro/LC_MEASUREMENT
+#usr/lib/locale/de_DE@euro/LC_MESSAGES
+#usr/lib/locale/de_DE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_DE@euro/LC_MONETARY
+#usr/lib/locale/de_DE@euro/LC_NAME
+#usr/lib/locale/de_DE@euro/LC_NUMERIC
+#usr/lib/locale/de_DE@euro/LC_PAPER
+#usr/lib/locale/de_DE@euro/LC_TELEPHONE
+#usr/lib/locale/de_DE@euro/LC_TIME
+#usr/lib/locale/de_LU
+#usr/lib/locale/de_LU.utf8
+#usr/lib/locale/de_LU.utf8/LC_ADDRESS
+#usr/lib/locale/de_LU.utf8/LC_COLLATE
+#usr/lib/locale/de_LU.utf8/LC_CTYPE
+#usr/lib/locale/de_LU.utf8/LC_IDENTIFICATION
+#usr/lib/locale/de_LU.utf8/LC_MEASUREMENT
+#usr/lib/locale/de_LU.utf8/LC_MESSAGES
+#usr/lib/locale/de_LU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_LU.utf8/LC_MONETARY
+#usr/lib/locale/de_LU.utf8/LC_NAME
+#usr/lib/locale/de_LU.utf8/LC_NUMERIC
+#usr/lib/locale/de_LU.utf8/LC_PAPER
+#usr/lib/locale/de_LU.utf8/LC_TELEPHONE
+#usr/lib/locale/de_LU.utf8/LC_TIME
+#usr/lib/locale/de_LU/LC_ADDRESS
+#usr/lib/locale/de_LU/LC_COLLATE
+#usr/lib/locale/de_LU/LC_CTYPE
+#usr/lib/locale/de_LU/LC_IDENTIFICATION
+#usr/lib/locale/de_LU/LC_MEASUREMENT
+#usr/lib/locale/de_LU/LC_MESSAGES
+#usr/lib/locale/de_LU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_LU/LC_MONETARY
+#usr/lib/locale/de_LU/LC_NAME
+#usr/lib/locale/de_LU/LC_NUMERIC
+#usr/lib/locale/de_LU/LC_PAPER
+#usr/lib/locale/de_LU/LC_TELEPHONE
+#usr/lib/locale/de_LU/LC_TIME
+#usr/lib/locale/de_LU@euro
+#usr/lib/locale/de_LU@euro/LC_ADDRESS
+#usr/lib/locale/de_LU@euro/LC_COLLATE
+#usr/lib/locale/de_LU@euro/LC_CTYPE
+#usr/lib/locale/de_LU@euro/LC_IDENTIFICATION
+#usr/lib/locale/de_LU@euro/LC_MEASUREMENT
+#usr/lib/locale/de_LU@euro/LC_MESSAGES
+#usr/lib/locale/de_LU@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_LU@euro/LC_MONETARY
+#usr/lib/locale/de_LU@euro/LC_NAME
+#usr/lib/locale/de_LU@euro/LC_NUMERIC
+#usr/lib/locale/de_LU@euro/LC_PAPER
+#usr/lib/locale/de_LU@euro/LC_TELEPHONE
+#usr/lib/locale/de_LU@euro/LC_TIME
+#usr/lib/locale/dv_MV
+#usr/lib/locale/dv_MV/LC_ADDRESS
+#usr/lib/locale/dv_MV/LC_COLLATE
+#usr/lib/locale/dv_MV/LC_CTYPE
+#usr/lib/locale/dv_MV/LC_IDENTIFICATION
+#usr/lib/locale/dv_MV/LC_MEASUREMENT
+#usr/lib/locale/dv_MV/LC_MESSAGES
+#usr/lib/locale/dv_MV/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/dv_MV/LC_MONETARY
+#usr/lib/locale/dv_MV/LC_NAME
+#usr/lib/locale/dv_MV/LC_NUMERIC
+#usr/lib/locale/dv_MV/LC_PAPER
+#usr/lib/locale/dv_MV/LC_TELEPHONE
+#usr/lib/locale/dv_MV/LC_TIME
+#usr/lib/locale/dz_BT
+#usr/lib/locale/dz_BT/LC_ADDRESS
+#usr/lib/locale/dz_BT/LC_COLLATE
+#usr/lib/locale/dz_BT/LC_CTYPE
+#usr/lib/locale/dz_BT/LC_IDENTIFICATION
+#usr/lib/locale/dz_BT/LC_MEASUREMENT
+#usr/lib/locale/dz_BT/LC_MESSAGES
+#usr/lib/locale/dz_BT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/dz_BT/LC_MONETARY
+#usr/lib/locale/dz_BT/LC_NAME
+#usr/lib/locale/dz_BT/LC_NUMERIC
+#usr/lib/locale/dz_BT/LC_PAPER
+#usr/lib/locale/dz_BT/LC_TELEPHONE
+#usr/lib/locale/dz_BT/LC_TIME
+#usr/lib/locale/el_CY
+#usr/lib/locale/el_CY.utf8
+#usr/lib/locale/el_CY.utf8/LC_ADDRESS
+#usr/lib/locale/el_CY.utf8/LC_COLLATE
+#usr/lib/locale/el_CY.utf8/LC_CTYPE
+#usr/lib/locale/el_CY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/el_CY.utf8/LC_MEASUREMENT
+#usr/lib/locale/el_CY.utf8/LC_MESSAGES
+#usr/lib/locale/el_CY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/el_CY.utf8/LC_MONETARY
+#usr/lib/locale/el_CY.utf8/LC_NAME
+#usr/lib/locale/el_CY.utf8/LC_NUMERIC
+#usr/lib/locale/el_CY.utf8/LC_PAPER
+#usr/lib/locale/el_CY.utf8/LC_TELEPHONE
+#usr/lib/locale/el_CY.utf8/LC_TIME
+#usr/lib/locale/el_CY/LC_ADDRESS
+#usr/lib/locale/el_CY/LC_COLLATE
+#usr/lib/locale/el_CY/LC_CTYPE
+#usr/lib/locale/el_CY/LC_IDENTIFICATION
+#usr/lib/locale/el_CY/LC_MEASUREMENT
+#usr/lib/locale/el_CY/LC_MESSAGES
+#usr/lib/locale/el_CY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/el_CY/LC_MONETARY
+#usr/lib/locale/el_CY/LC_NAME
+#usr/lib/locale/el_CY/LC_NUMERIC
+#usr/lib/locale/el_CY/LC_PAPER
+#usr/lib/locale/el_CY/LC_TELEPHONE
+#usr/lib/locale/el_CY/LC_TIME
+#usr/lib/locale/el_GR
+#usr/lib/locale/el_GR.utf8
+#usr/lib/locale/el_GR.utf8/LC_ADDRESS
+#usr/lib/locale/el_GR.utf8/LC_COLLATE
+#usr/lib/locale/el_GR.utf8/LC_CTYPE
+#usr/lib/locale/el_GR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/el_GR.utf8/LC_MEASUREMENT
+#usr/lib/locale/el_GR.utf8/LC_MESSAGES
+#usr/lib/locale/el_GR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/el_GR.utf8/LC_MONETARY
+#usr/lib/locale/el_GR.utf8/LC_NAME
+#usr/lib/locale/el_GR.utf8/LC_NUMERIC
+#usr/lib/locale/el_GR.utf8/LC_PAPER
+#usr/lib/locale/el_GR.utf8/LC_TELEPHONE
+#usr/lib/locale/el_GR.utf8/LC_TIME
+#usr/lib/locale/el_GR/LC_ADDRESS
+#usr/lib/locale/el_GR/LC_COLLATE
+#usr/lib/locale/el_GR/LC_CTYPE
+#usr/lib/locale/el_GR/LC_IDENTIFICATION
+#usr/lib/locale/el_GR/LC_MEASUREMENT
+#usr/lib/locale/el_GR/LC_MESSAGES
+#usr/lib/locale/el_GR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/el_GR/LC_MONETARY
+#usr/lib/locale/el_GR/LC_NAME
+#usr/lib/locale/el_GR/LC_NUMERIC
+#usr/lib/locale/el_GR/LC_PAPER
+#usr/lib/locale/el_GR/LC_TELEPHONE
+#usr/lib/locale/el_GR/LC_TIME
+#usr/lib/locale/en_AG
+#usr/lib/locale/en_AG/LC_ADDRESS
+#usr/lib/locale/en_AG/LC_COLLATE
+#usr/lib/locale/en_AG/LC_CTYPE
+#usr/lib/locale/en_AG/LC_IDENTIFICATION
+#usr/lib/locale/en_AG/LC_MEASUREMENT
+#usr/lib/locale/en_AG/LC_MESSAGES
+#usr/lib/locale/en_AG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_AG/LC_MONETARY
+#usr/lib/locale/en_AG/LC_NAME
+#usr/lib/locale/en_AG/LC_NUMERIC
+#usr/lib/locale/en_AG/LC_PAPER
+#usr/lib/locale/en_AG/LC_TELEPHONE
+#usr/lib/locale/en_AG/LC_TIME
+#usr/lib/locale/en_AU
+#usr/lib/locale/en_AU.utf8
+#usr/lib/locale/en_AU.utf8/LC_ADDRESS
+#usr/lib/locale/en_AU.utf8/LC_COLLATE
+#usr/lib/locale/en_AU.utf8/LC_CTYPE
+#usr/lib/locale/en_AU.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_AU.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_AU.utf8/LC_MESSAGES
+#usr/lib/locale/en_AU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_AU.utf8/LC_MONETARY
+#usr/lib/locale/en_AU.utf8/LC_NAME
+#usr/lib/locale/en_AU.utf8/LC_NUMERIC
+#usr/lib/locale/en_AU.utf8/LC_PAPER
+#usr/lib/locale/en_AU.utf8/LC_TELEPHONE
+#usr/lib/locale/en_AU.utf8/LC_TIME
+#usr/lib/locale/en_AU/LC_ADDRESS
+#usr/lib/locale/en_AU/LC_COLLATE
+#usr/lib/locale/en_AU/LC_CTYPE
+#usr/lib/locale/en_AU/LC_IDENTIFICATION
+#usr/lib/locale/en_AU/LC_MEASUREMENT
+#usr/lib/locale/en_AU/LC_MESSAGES
+#usr/lib/locale/en_AU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_AU/LC_MONETARY
+#usr/lib/locale/en_AU/LC_NAME
+#usr/lib/locale/en_AU/LC_NUMERIC
+#usr/lib/locale/en_AU/LC_PAPER
+#usr/lib/locale/en_AU/LC_TELEPHONE
+#usr/lib/locale/en_AU/LC_TIME
+#usr/lib/locale/en_BW
+#usr/lib/locale/en_BW.utf8
+#usr/lib/locale/en_BW.utf8/LC_ADDRESS
+#usr/lib/locale/en_BW.utf8/LC_COLLATE
+#usr/lib/locale/en_BW.utf8/LC_CTYPE
+#usr/lib/locale/en_BW.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_BW.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_BW.utf8/LC_MESSAGES
+#usr/lib/locale/en_BW.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_BW.utf8/LC_MONETARY
+#usr/lib/locale/en_BW.utf8/LC_NAME
+#usr/lib/locale/en_BW.utf8/LC_NUMERIC
+#usr/lib/locale/en_BW.utf8/LC_PAPER
+#usr/lib/locale/en_BW.utf8/LC_TELEPHONE
+#usr/lib/locale/en_BW.utf8/LC_TIME
+#usr/lib/locale/en_BW/LC_ADDRESS
+#usr/lib/locale/en_BW/LC_COLLATE
+#usr/lib/locale/en_BW/LC_CTYPE
+#usr/lib/locale/en_BW/LC_IDENTIFICATION
+#usr/lib/locale/en_BW/LC_MEASUREMENT
+#usr/lib/locale/en_BW/LC_MESSAGES
+#usr/lib/locale/en_BW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_BW/LC_MONETARY
+#usr/lib/locale/en_BW/LC_NAME
+#usr/lib/locale/en_BW/LC_NUMERIC
+#usr/lib/locale/en_BW/LC_PAPER
+#usr/lib/locale/en_BW/LC_TELEPHONE
+#usr/lib/locale/en_BW/LC_TIME
+#usr/lib/locale/en_CA
+#usr/lib/locale/en_CA.utf8
+#usr/lib/locale/en_CA.utf8/LC_ADDRESS
+#usr/lib/locale/en_CA.utf8/LC_COLLATE
+#usr/lib/locale/en_CA.utf8/LC_CTYPE
+#usr/lib/locale/en_CA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_CA.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_CA.utf8/LC_MESSAGES
+#usr/lib/locale/en_CA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_CA.utf8/LC_MONETARY
+#usr/lib/locale/en_CA.utf8/LC_NAME
+#usr/lib/locale/en_CA.utf8/LC_NUMERIC
+#usr/lib/locale/en_CA.utf8/LC_PAPER
+#usr/lib/locale/en_CA.utf8/LC_TELEPHONE
+#usr/lib/locale/en_CA.utf8/LC_TIME
+#usr/lib/locale/en_CA/LC_ADDRESS
+#usr/lib/locale/en_CA/LC_COLLATE
+#usr/lib/locale/en_CA/LC_CTYPE
+#usr/lib/locale/en_CA/LC_IDENTIFICATION
+#usr/lib/locale/en_CA/LC_MEASUREMENT
+#usr/lib/locale/en_CA/LC_MESSAGES
+#usr/lib/locale/en_CA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_CA/LC_MONETARY
+#usr/lib/locale/en_CA/LC_NAME
+#usr/lib/locale/en_CA/LC_NUMERIC
+#usr/lib/locale/en_CA/LC_PAPER
+#usr/lib/locale/en_CA/LC_TELEPHONE
+#usr/lib/locale/en_CA/LC_TIME
+#usr/lib/locale/en_DK
+#usr/lib/locale/en_DK.utf8
+#usr/lib/locale/en_DK.utf8/LC_ADDRESS
+#usr/lib/locale/en_DK.utf8/LC_COLLATE
+#usr/lib/locale/en_DK.utf8/LC_CTYPE
+#usr/lib/locale/en_DK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_DK.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_DK.utf8/LC_MESSAGES
+#usr/lib/locale/en_DK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_DK.utf8/LC_MONETARY
+#usr/lib/locale/en_DK.utf8/LC_NAME
+#usr/lib/locale/en_DK.utf8/LC_NUMERIC
+#usr/lib/locale/en_DK.utf8/LC_PAPER
+#usr/lib/locale/en_DK.utf8/LC_TELEPHONE
+#usr/lib/locale/en_DK.utf8/LC_TIME
+#usr/lib/locale/en_DK/LC_ADDRESS
+#usr/lib/locale/en_DK/LC_COLLATE
+#usr/lib/locale/en_DK/LC_CTYPE
+#usr/lib/locale/en_DK/LC_IDENTIFICATION
+#usr/lib/locale/en_DK/LC_MEASUREMENT
+#usr/lib/locale/en_DK/LC_MESSAGES
+#usr/lib/locale/en_DK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_DK/LC_MONETARY
+#usr/lib/locale/en_DK/LC_NAME
+#usr/lib/locale/en_DK/LC_NUMERIC
+#usr/lib/locale/en_DK/LC_PAPER
+#usr/lib/locale/en_DK/LC_TELEPHONE
+#usr/lib/locale/en_DK/LC_TIME
+#usr/lib/locale/en_GB
+#usr/lib/locale/en_GB.iso885915
+#usr/lib/locale/en_GB.iso885915/LC_ADDRESS
+#usr/lib/locale/en_GB.iso885915/LC_COLLATE
+#usr/lib/locale/en_GB.iso885915/LC_CTYPE
+#usr/lib/locale/en_GB.iso885915/LC_IDENTIFICATION
+#usr/lib/locale/en_GB.iso885915/LC_MEASUREMENT
+#usr/lib/locale/en_GB.iso885915/LC_MESSAGES
+#usr/lib/locale/en_GB.iso885915/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_GB.iso885915/LC_MONETARY
+#usr/lib/locale/en_GB.iso885915/LC_NAME
+#usr/lib/locale/en_GB.iso885915/LC_NUMERIC
+#usr/lib/locale/en_GB.iso885915/LC_PAPER
+#usr/lib/locale/en_GB.iso885915/LC_TELEPHONE
+#usr/lib/locale/en_GB.iso885915/LC_TIME
+#usr/lib/locale/en_GB.utf8
+#usr/lib/locale/en_GB.utf8/LC_ADDRESS
+#usr/lib/locale/en_GB.utf8/LC_COLLATE
+#usr/lib/locale/en_GB.utf8/LC_CTYPE
+#usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_GB.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_GB.utf8/LC_MESSAGES
+#usr/lib/locale/en_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_GB.utf8/LC_MONETARY
+#usr/lib/locale/en_GB.utf8/LC_NAME
+#usr/lib/locale/en_GB.utf8/LC_NUMERIC
+#usr/lib/locale/en_GB.utf8/LC_PAPER
+#usr/lib/locale/en_GB.utf8/LC_TELEPHONE
+#usr/lib/locale/en_GB.utf8/LC_TIME
+#usr/lib/locale/en_GB/LC_ADDRESS
+#usr/lib/locale/en_GB/LC_COLLATE
+#usr/lib/locale/en_GB/LC_CTYPE
+#usr/lib/locale/en_GB/LC_IDENTIFICATION
+#usr/lib/locale/en_GB/LC_MEASUREMENT
+#usr/lib/locale/en_GB/LC_MESSAGES
+#usr/lib/locale/en_GB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_GB/LC_MONETARY
+#usr/lib/locale/en_GB/LC_NAME
+#usr/lib/locale/en_GB/LC_NUMERIC
+#usr/lib/locale/en_GB/LC_PAPER
+#usr/lib/locale/en_GB/LC_TELEPHONE
+#usr/lib/locale/en_GB/LC_TIME
+#usr/lib/locale/en_HK
+#usr/lib/locale/en_HK.utf8
+#usr/lib/locale/en_HK.utf8/LC_ADDRESS
+#usr/lib/locale/en_HK.utf8/LC_COLLATE
+#usr/lib/locale/en_HK.utf8/LC_CTYPE
+#usr/lib/locale/en_HK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_HK.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_HK.utf8/LC_MESSAGES
+#usr/lib/locale/en_HK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_HK.utf8/LC_MONETARY
+#usr/lib/locale/en_HK.utf8/LC_NAME
+#usr/lib/locale/en_HK.utf8/LC_NUMERIC
+#usr/lib/locale/en_HK.utf8/LC_PAPER
+#usr/lib/locale/en_HK.utf8/LC_TELEPHONE
+#usr/lib/locale/en_HK.utf8/LC_TIME
+#usr/lib/locale/en_HK/LC_ADDRESS
+#usr/lib/locale/en_HK/LC_COLLATE
+#usr/lib/locale/en_HK/LC_CTYPE
+#usr/lib/locale/en_HK/LC_IDENTIFICATION
+#usr/lib/locale/en_HK/LC_MEASUREMENT
+#usr/lib/locale/en_HK/LC_MESSAGES
+#usr/lib/locale/en_HK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_HK/LC_MONETARY
+#usr/lib/locale/en_HK/LC_NAME
+#usr/lib/locale/en_HK/LC_NUMERIC
+#usr/lib/locale/en_HK/LC_PAPER
+#usr/lib/locale/en_HK/LC_TELEPHONE
+#usr/lib/locale/en_HK/LC_TIME
+#usr/lib/locale/en_IE
+#usr/lib/locale/en_IE.utf8
+#usr/lib/locale/en_IE.utf8/LC_ADDRESS
+#usr/lib/locale/en_IE.utf8/LC_COLLATE
+#usr/lib/locale/en_IE.utf8/LC_CTYPE
+#usr/lib/locale/en_IE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_IE.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_IE.utf8/LC_MESSAGES
+#usr/lib/locale/en_IE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_IE.utf8/LC_MONETARY
+#usr/lib/locale/en_IE.utf8/LC_NAME
+#usr/lib/locale/en_IE.utf8/LC_NUMERIC
+#usr/lib/locale/en_IE.utf8/LC_PAPER
+#usr/lib/locale/en_IE.utf8/LC_TELEPHONE
+#usr/lib/locale/en_IE.utf8/LC_TIME
+#usr/lib/locale/en_IE/LC_ADDRESS
+#usr/lib/locale/en_IE/LC_COLLATE
+#usr/lib/locale/en_IE/LC_CTYPE
+#usr/lib/locale/en_IE/LC_IDENTIFICATION
+#usr/lib/locale/en_IE/LC_MEASUREMENT
+#usr/lib/locale/en_IE/LC_MESSAGES
+#usr/lib/locale/en_IE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_IE/LC_MONETARY
+#usr/lib/locale/en_IE/LC_NAME
+#usr/lib/locale/en_IE/LC_NUMERIC
+#usr/lib/locale/en_IE/LC_PAPER
+#usr/lib/locale/en_IE/LC_TELEPHONE
+#usr/lib/locale/en_IE/LC_TIME
+#usr/lib/locale/en_IE@euro
+#usr/lib/locale/en_IE@euro/LC_ADDRESS
+#usr/lib/locale/en_IE@euro/LC_COLLATE
+#usr/lib/locale/en_IE@euro/LC_CTYPE
+#usr/lib/locale/en_IE@euro/LC_IDENTIFICATION
+#usr/lib/locale/en_IE@euro/LC_MEASUREMENT
+#usr/lib/locale/en_IE@euro/LC_MESSAGES
+#usr/lib/locale/en_IE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_IE@euro/LC_MONETARY
+#usr/lib/locale/en_IE@euro/LC_NAME
+#usr/lib/locale/en_IE@euro/LC_NUMERIC
+#usr/lib/locale/en_IE@euro/LC_PAPER
+#usr/lib/locale/en_IE@euro/LC_TELEPHONE
+#usr/lib/locale/en_IE@euro/LC_TIME
+#usr/lib/locale/en_IN
+#usr/lib/locale/en_IN/LC_ADDRESS
+#usr/lib/locale/en_IN/LC_COLLATE
+#usr/lib/locale/en_IN/LC_CTYPE
+#usr/lib/locale/en_IN/LC_IDENTIFICATION
+#usr/lib/locale/en_IN/LC_MEASUREMENT
+#usr/lib/locale/en_IN/LC_MESSAGES
+#usr/lib/locale/en_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_IN/LC_MONETARY
+#usr/lib/locale/en_IN/LC_NAME
+#usr/lib/locale/en_IN/LC_NUMERIC
+#usr/lib/locale/en_IN/LC_PAPER
+#usr/lib/locale/en_IN/LC_TELEPHONE
+#usr/lib/locale/en_IN/LC_TIME
+#usr/lib/locale/en_NG
+#usr/lib/locale/en_NG/LC_ADDRESS
+#usr/lib/locale/en_NG/LC_COLLATE
+#usr/lib/locale/en_NG/LC_CTYPE
+#usr/lib/locale/en_NG/LC_IDENTIFICATION
+#usr/lib/locale/en_NG/LC_MEASUREMENT
+#usr/lib/locale/en_NG/LC_MESSAGES
+#usr/lib/locale/en_NG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_NG/LC_MONETARY
+#usr/lib/locale/en_NG/LC_NAME
+#usr/lib/locale/en_NG/LC_NUMERIC
+#usr/lib/locale/en_NG/LC_PAPER
+#usr/lib/locale/en_NG/LC_TELEPHONE
+#usr/lib/locale/en_NG/LC_TIME
+#usr/lib/locale/en_NZ
+#usr/lib/locale/en_NZ.utf8
+#usr/lib/locale/en_NZ.utf8/LC_ADDRESS
+#usr/lib/locale/en_NZ.utf8/LC_COLLATE
+#usr/lib/locale/en_NZ.utf8/LC_CTYPE
+#usr/lib/locale/en_NZ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_NZ.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_NZ.utf8/LC_MESSAGES
+#usr/lib/locale/en_NZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_NZ.utf8/LC_MONETARY
+#usr/lib/locale/en_NZ.utf8/LC_NAME
+#usr/lib/locale/en_NZ.utf8/LC_NUMERIC
+#usr/lib/locale/en_NZ.utf8/LC_PAPER
+#usr/lib/locale/en_NZ.utf8/LC_TELEPHONE
+#usr/lib/locale/en_NZ.utf8/LC_TIME
+#usr/lib/locale/en_NZ/LC_ADDRESS
+#usr/lib/locale/en_NZ/LC_COLLATE
+#usr/lib/locale/en_NZ/LC_CTYPE
+#usr/lib/locale/en_NZ/LC_IDENTIFICATION
+#usr/lib/locale/en_NZ/LC_MEASUREMENT
+#usr/lib/locale/en_NZ/LC_MESSAGES
+#usr/lib/locale/en_NZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_NZ/LC_MONETARY
+#usr/lib/locale/en_NZ/LC_NAME
+#usr/lib/locale/en_NZ/LC_NUMERIC
+#usr/lib/locale/en_NZ/LC_PAPER
+#usr/lib/locale/en_NZ/LC_TELEPHONE
+#usr/lib/locale/en_NZ/LC_TIME
+#usr/lib/locale/en_PH
+#usr/lib/locale/en_PH.utf8
+#usr/lib/locale/en_PH.utf8/LC_ADDRESS
+#usr/lib/locale/en_PH.utf8/LC_COLLATE
+#usr/lib/locale/en_PH.utf8/LC_CTYPE
+#usr/lib/locale/en_PH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_PH.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_PH.utf8/LC_MESSAGES
+#usr/lib/locale/en_PH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_PH.utf8/LC_MONETARY
+#usr/lib/locale/en_PH.utf8/LC_NAME
+#usr/lib/locale/en_PH.utf8/LC_NUMERIC
+#usr/lib/locale/en_PH.utf8/LC_PAPER
+#usr/lib/locale/en_PH.utf8/LC_TELEPHONE
+#usr/lib/locale/en_PH.utf8/LC_TIME
+#usr/lib/locale/en_PH/LC_ADDRESS
+#usr/lib/locale/en_PH/LC_COLLATE
+#usr/lib/locale/en_PH/LC_CTYPE
+#usr/lib/locale/en_PH/LC_IDENTIFICATION
+#usr/lib/locale/en_PH/LC_MEASUREMENT
+#usr/lib/locale/en_PH/LC_MESSAGES
+#usr/lib/locale/en_PH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_PH/LC_MONETARY
+#usr/lib/locale/en_PH/LC_NAME
+#usr/lib/locale/en_PH/LC_NUMERIC
+#usr/lib/locale/en_PH/LC_PAPER
+#usr/lib/locale/en_PH/LC_TELEPHONE
+#usr/lib/locale/en_PH/LC_TIME
+#usr/lib/locale/en_SG
+#usr/lib/locale/en_SG.utf8
+#usr/lib/locale/en_SG.utf8/LC_ADDRESS
+#usr/lib/locale/en_SG.utf8/LC_COLLATE
+#usr/lib/locale/en_SG.utf8/LC_CTYPE
+#usr/lib/locale/en_SG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_SG.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_SG.utf8/LC_MESSAGES
+#usr/lib/locale/en_SG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_SG.utf8/LC_MONETARY
+#usr/lib/locale/en_SG.utf8/LC_NAME
+#usr/lib/locale/en_SG.utf8/LC_NUMERIC
+#usr/lib/locale/en_SG.utf8/LC_PAPER
+#usr/lib/locale/en_SG.utf8/LC_TELEPHONE
+#usr/lib/locale/en_SG.utf8/LC_TIME
+#usr/lib/locale/en_SG/LC_ADDRESS
+#usr/lib/locale/en_SG/LC_COLLATE
+#usr/lib/locale/en_SG/LC_CTYPE
+#usr/lib/locale/en_SG/LC_IDENTIFICATION
+#usr/lib/locale/en_SG/LC_MEASUREMENT
+#usr/lib/locale/en_SG/LC_MESSAGES
+#usr/lib/locale/en_SG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_SG/LC_MONETARY
+#usr/lib/locale/en_SG/LC_NAME
+#usr/lib/locale/en_SG/LC_NUMERIC
+#usr/lib/locale/en_SG/LC_PAPER
+#usr/lib/locale/en_SG/LC_TELEPHONE
+#usr/lib/locale/en_SG/LC_TIME
+#usr/lib/locale/en_US
+#usr/lib/locale/en_US.iso885915
+#usr/lib/locale/en_US.iso885915/LC_ADDRESS
+#usr/lib/locale/en_US.iso885915/LC_COLLATE
+#usr/lib/locale/en_US.iso885915/LC_CTYPE
+#usr/lib/locale/en_US.iso885915/LC_IDENTIFICATION
+#usr/lib/locale/en_US.iso885915/LC_MEASUREMENT
+#usr/lib/locale/en_US.iso885915/LC_MESSAGES
+#usr/lib/locale/en_US.iso885915/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_US.iso885915/LC_MONETARY
+#usr/lib/locale/en_US.iso885915/LC_NAME
+#usr/lib/locale/en_US.iso885915/LC_NUMERIC
+#usr/lib/locale/en_US.iso885915/LC_PAPER
+#usr/lib/locale/en_US.iso885915/LC_TELEPHONE
+#usr/lib/locale/en_US.iso885915/LC_TIME
+#usr/lib/locale/en_US.utf8
+#usr/lib/locale/en_US.utf8/LC_ADDRESS
+#usr/lib/locale/en_US.utf8/LC_COLLATE
+#usr/lib/locale/en_US.utf8/LC_CTYPE
+#usr/lib/locale/en_US.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_US.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_US.utf8/LC_MESSAGES
+#usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_US.utf8/LC_MONETARY
+#usr/lib/locale/en_US.utf8/LC_NAME
+#usr/lib/locale/en_US.utf8/LC_NUMERIC
+#usr/lib/locale/en_US.utf8/LC_PAPER
+#usr/lib/locale/en_US.utf8/LC_TELEPHONE
+#usr/lib/locale/en_US.utf8/LC_TIME
+#usr/lib/locale/en_US/LC_ADDRESS
+#usr/lib/locale/en_US/LC_COLLATE
+#usr/lib/locale/en_US/LC_CTYPE
+#usr/lib/locale/en_US/LC_IDENTIFICATION
+#usr/lib/locale/en_US/LC_MEASUREMENT
+#usr/lib/locale/en_US/LC_MESSAGES
+#usr/lib/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_US/LC_MONETARY
+#usr/lib/locale/en_US/LC_NAME
+#usr/lib/locale/en_US/LC_NUMERIC
+#usr/lib/locale/en_US/LC_PAPER
+#usr/lib/locale/en_US/LC_TELEPHONE
+#usr/lib/locale/en_US/LC_TIME
+#usr/lib/locale/en_ZA
+#usr/lib/locale/en_ZA.utf8
+#usr/lib/locale/en_ZA.utf8/LC_ADDRESS
+#usr/lib/locale/en_ZA.utf8/LC_COLLATE
+#usr/lib/locale/en_ZA.utf8/LC_CTYPE
+#usr/lib/locale/en_ZA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_ZA.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_ZA.utf8/LC_MESSAGES
+#usr/lib/locale/en_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_ZA.utf8/LC_MONETARY
+#usr/lib/locale/en_ZA.utf8/LC_NAME
+#usr/lib/locale/en_ZA.utf8/LC_NUMERIC
+#usr/lib/locale/en_ZA.utf8/LC_PAPER
+#usr/lib/locale/en_ZA.utf8/LC_TELEPHONE
+#usr/lib/locale/en_ZA.utf8/LC_TIME
+#usr/lib/locale/en_ZA/LC_ADDRESS
+#usr/lib/locale/en_ZA/LC_COLLATE
+#usr/lib/locale/en_ZA/LC_CTYPE
+#usr/lib/locale/en_ZA/LC_IDENTIFICATION
+#usr/lib/locale/en_ZA/LC_MEASUREMENT
+#usr/lib/locale/en_ZA/LC_MESSAGES
+#usr/lib/locale/en_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_ZA/LC_MONETARY
+#usr/lib/locale/en_ZA/LC_NAME
+#usr/lib/locale/en_ZA/LC_NUMERIC
+#usr/lib/locale/en_ZA/LC_PAPER
+#usr/lib/locale/en_ZA/LC_TELEPHONE
+#usr/lib/locale/en_ZA/LC_TIME
+#usr/lib/locale/en_ZW
+#usr/lib/locale/en_ZW.utf8
+#usr/lib/locale/en_ZW.utf8/LC_ADDRESS
+#usr/lib/locale/en_ZW.utf8/LC_COLLATE
+#usr/lib/locale/en_ZW.utf8/LC_CTYPE
+#usr/lib/locale/en_ZW.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_ZW.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_ZW.utf8/LC_MESSAGES
+#usr/lib/locale/en_ZW.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_ZW.utf8/LC_MONETARY
+#usr/lib/locale/en_ZW.utf8/LC_NAME
+#usr/lib/locale/en_ZW.utf8/LC_NUMERIC
+#usr/lib/locale/en_ZW.utf8/LC_PAPER
+#usr/lib/locale/en_ZW.utf8/LC_TELEPHONE
+#usr/lib/locale/en_ZW.utf8/LC_TIME
+#usr/lib/locale/en_ZW/LC_ADDRESS
+#usr/lib/locale/en_ZW/LC_COLLATE
+#usr/lib/locale/en_ZW/LC_CTYPE
+#usr/lib/locale/en_ZW/LC_IDENTIFICATION
+#usr/lib/locale/en_ZW/LC_MEASUREMENT
+#usr/lib/locale/en_ZW/LC_MESSAGES
+#usr/lib/locale/en_ZW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_ZW/LC_MONETARY
+#usr/lib/locale/en_ZW/LC_NAME
+#usr/lib/locale/en_ZW/LC_NUMERIC
+#usr/lib/locale/en_ZW/LC_PAPER
+#usr/lib/locale/en_ZW/LC_TELEPHONE
+#usr/lib/locale/en_ZW/LC_TIME
+#usr/lib/locale/es_AR
+#usr/lib/locale/es_AR.utf8
+#usr/lib/locale/es_AR.utf8/LC_ADDRESS
+#usr/lib/locale/es_AR.utf8/LC_COLLATE
+#usr/lib/locale/es_AR.utf8/LC_CTYPE
+#usr/lib/locale/es_AR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_AR.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_AR.utf8/LC_MESSAGES
+#usr/lib/locale/es_AR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_AR.utf8/LC_MONETARY
+#usr/lib/locale/es_AR.utf8/LC_NAME
+#usr/lib/locale/es_AR.utf8/LC_NUMERIC
+#usr/lib/locale/es_AR.utf8/LC_PAPER
+#usr/lib/locale/es_AR.utf8/LC_TELEPHONE
+#usr/lib/locale/es_AR.utf8/LC_TIME
+#usr/lib/locale/es_AR/LC_ADDRESS
+#usr/lib/locale/es_AR/LC_COLLATE
+#usr/lib/locale/es_AR/LC_CTYPE
+#usr/lib/locale/es_AR/LC_IDENTIFICATION
+#usr/lib/locale/es_AR/LC_MEASUREMENT
+#usr/lib/locale/es_AR/LC_MESSAGES
+#usr/lib/locale/es_AR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_AR/LC_MONETARY
+#usr/lib/locale/es_AR/LC_NAME
+#usr/lib/locale/es_AR/LC_NUMERIC
+#usr/lib/locale/es_AR/LC_PAPER
+#usr/lib/locale/es_AR/LC_TELEPHONE
+#usr/lib/locale/es_AR/LC_TIME
+#usr/lib/locale/es_BO
+#usr/lib/locale/es_BO.utf8
+#usr/lib/locale/es_BO.utf8/LC_ADDRESS
+#usr/lib/locale/es_BO.utf8/LC_COLLATE
+#usr/lib/locale/es_BO.utf8/LC_CTYPE
+#usr/lib/locale/es_BO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_BO.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_BO.utf8/LC_MESSAGES
+#usr/lib/locale/es_BO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_BO.utf8/LC_MONETARY
+#usr/lib/locale/es_BO.utf8/LC_NAME
+#usr/lib/locale/es_BO.utf8/LC_NUMERIC
+#usr/lib/locale/es_BO.utf8/LC_PAPER
+#usr/lib/locale/es_BO.utf8/LC_TELEPHONE
+#usr/lib/locale/es_BO.utf8/LC_TIME
+#usr/lib/locale/es_BO/LC_ADDRESS
+#usr/lib/locale/es_BO/LC_COLLATE
+#usr/lib/locale/es_BO/LC_CTYPE
+#usr/lib/locale/es_BO/LC_IDENTIFICATION
+#usr/lib/locale/es_BO/LC_MEASUREMENT
+#usr/lib/locale/es_BO/LC_MESSAGES
+#usr/lib/locale/es_BO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_BO/LC_MONETARY
+#usr/lib/locale/es_BO/LC_NAME
+#usr/lib/locale/es_BO/LC_NUMERIC
+#usr/lib/locale/es_BO/LC_PAPER
+#usr/lib/locale/es_BO/LC_TELEPHONE
+#usr/lib/locale/es_BO/LC_TIME
+#usr/lib/locale/es_CL
+#usr/lib/locale/es_CL.utf8
+#usr/lib/locale/es_CL.utf8/LC_ADDRESS
+#usr/lib/locale/es_CL.utf8/LC_COLLATE
+#usr/lib/locale/es_CL.utf8/LC_CTYPE
+#usr/lib/locale/es_CL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_CL.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_CL.utf8/LC_MESSAGES
+#usr/lib/locale/es_CL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CL.utf8/LC_MONETARY
+#usr/lib/locale/es_CL.utf8/LC_NAME
+#usr/lib/locale/es_CL.utf8/LC_NUMERIC
+#usr/lib/locale/es_CL.utf8/LC_PAPER
+#usr/lib/locale/es_CL.utf8/LC_TELEPHONE
+#usr/lib/locale/es_CL.utf8/LC_TIME
+#usr/lib/locale/es_CL/LC_ADDRESS
+#usr/lib/locale/es_CL/LC_COLLATE
+#usr/lib/locale/es_CL/LC_CTYPE
+#usr/lib/locale/es_CL/LC_IDENTIFICATION
+#usr/lib/locale/es_CL/LC_MEASUREMENT
+#usr/lib/locale/es_CL/LC_MESSAGES
+#usr/lib/locale/es_CL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CL/LC_MONETARY
+#usr/lib/locale/es_CL/LC_NAME
+#usr/lib/locale/es_CL/LC_NUMERIC
+#usr/lib/locale/es_CL/LC_PAPER
+#usr/lib/locale/es_CL/LC_TELEPHONE
+#usr/lib/locale/es_CL/LC_TIME
+#usr/lib/locale/es_CO
+#usr/lib/locale/es_CO.utf8
+#usr/lib/locale/es_CO.utf8/LC_ADDRESS
+#usr/lib/locale/es_CO.utf8/LC_COLLATE
+#usr/lib/locale/es_CO.utf8/LC_CTYPE
+#usr/lib/locale/es_CO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_CO.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_CO.utf8/LC_MESSAGES
+#usr/lib/locale/es_CO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CO.utf8/LC_MONETARY
+#usr/lib/locale/es_CO.utf8/LC_NAME
+#usr/lib/locale/es_CO.utf8/LC_NUMERIC
+#usr/lib/locale/es_CO.utf8/LC_PAPER
+#usr/lib/locale/es_CO.utf8/LC_TELEPHONE
+#usr/lib/locale/es_CO.utf8/LC_TIME
+#usr/lib/locale/es_CO/LC_ADDRESS
+#usr/lib/locale/es_CO/LC_COLLATE
+#usr/lib/locale/es_CO/LC_CTYPE
+#usr/lib/locale/es_CO/LC_IDENTIFICATION
+#usr/lib/locale/es_CO/LC_MEASUREMENT
+#usr/lib/locale/es_CO/LC_MESSAGES
+#usr/lib/locale/es_CO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CO/LC_MONETARY
+#usr/lib/locale/es_CO/LC_NAME
+#usr/lib/locale/es_CO/LC_NUMERIC
+#usr/lib/locale/es_CO/LC_PAPER
+#usr/lib/locale/es_CO/LC_TELEPHONE
+#usr/lib/locale/es_CO/LC_TIME
+#usr/lib/locale/es_CR
+#usr/lib/locale/es_CR.utf8
+#usr/lib/locale/es_CR.utf8/LC_ADDRESS
+#usr/lib/locale/es_CR.utf8/LC_COLLATE
+#usr/lib/locale/es_CR.utf8/LC_CTYPE
+#usr/lib/locale/es_CR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_CR.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_CR.utf8/LC_MESSAGES
+#usr/lib/locale/es_CR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CR.utf8/LC_MONETARY
+#usr/lib/locale/es_CR.utf8/LC_NAME
+#usr/lib/locale/es_CR.utf8/LC_NUMERIC
+#usr/lib/locale/es_CR.utf8/LC_PAPER
+#usr/lib/locale/es_CR.utf8/LC_TELEPHONE
+#usr/lib/locale/es_CR.utf8/LC_TIME
+#usr/lib/locale/es_CR/LC_ADDRESS
+#usr/lib/locale/es_CR/LC_COLLATE
+#usr/lib/locale/es_CR/LC_CTYPE
+#usr/lib/locale/es_CR/LC_IDENTIFICATION
+#usr/lib/locale/es_CR/LC_MEASUREMENT
+#usr/lib/locale/es_CR/LC_MESSAGES
+#usr/lib/locale/es_CR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CR/LC_MONETARY
+#usr/lib/locale/es_CR/LC_NAME
+#usr/lib/locale/es_CR/LC_NUMERIC
+#usr/lib/locale/es_CR/LC_PAPER
+#usr/lib/locale/es_CR/LC_TELEPHONE
+#usr/lib/locale/es_CR/LC_TIME
+#usr/lib/locale/es_DO
+#usr/lib/locale/es_DO.utf8
+#usr/lib/locale/es_DO.utf8/LC_ADDRESS
+#usr/lib/locale/es_DO.utf8/LC_COLLATE
+#usr/lib/locale/es_DO.utf8/LC_CTYPE
+#usr/lib/locale/es_DO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_DO.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_DO.utf8/LC_MESSAGES
+#usr/lib/locale/es_DO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_DO.utf8/LC_MONETARY
+#usr/lib/locale/es_DO.utf8/LC_NAME
+#usr/lib/locale/es_DO.utf8/LC_NUMERIC
+#usr/lib/locale/es_DO.utf8/LC_PAPER
+#usr/lib/locale/es_DO.utf8/LC_TELEPHONE
+#usr/lib/locale/es_DO.utf8/LC_TIME
+#usr/lib/locale/es_DO/LC_ADDRESS
+#usr/lib/locale/es_DO/LC_COLLATE
+#usr/lib/locale/es_DO/LC_CTYPE
+#usr/lib/locale/es_DO/LC_IDENTIFICATION
+#usr/lib/locale/es_DO/LC_MEASUREMENT
+#usr/lib/locale/es_DO/LC_MESSAGES
+#usr/lib/locale/es_DO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_DO/LC_MONETARY
+#usr/lib/locale/es_DO/LC_NAME
+#usr/lib/locale/es_DO/LC_NUMERIC
+#usr/lib/locale/es_DO/LC_PAPER
+#usr/lib/locale/es_DO/LC_TELEPHONE
+#usr/lib/locale/es_DO/LC_TIME
+#usr/lib/locale/es_EC
+#usr/lib/locale/es_EC.utf8
+#usr/lib/locale/es_EC.utf8/LC_ADDRESS
+#usr/lib/locale/es_EC.utf8/LC_COLLATE
+#usr/lib/locale/es_EC.utf8/LC_CTYPE
+#usr/lib/locale/es_EC.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_EC.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_EC.utf8/LC_MESSAGES
+#usr/lib/locale/es_EC.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_EC.utf8/LC_MONETARY
+#usr/lib/locale/es_EC.utf8/LC_NAME
+#usr/lib/locale/es_EC.utf8/LC_NUMERIC
+#usr/lib/locale/es_EC.utf8/LC_PAPER
+#usr/lib/locale/es_EC.utf8/LC_TELEPHONE
+#usr/lib/locale/es_EC.utf8/LC_TIME
+#usr/lib/locale/es_EC/LC_ADDRESS
+#usr/lib/locale/es_EC/LC_COLLATE
+#usr/lib/locale/es_EC/LC_CTYPE
+#usr/lib/locale/es_EC/LC_IDENTIFICATION
+#usr/lib/locale/es_EC/LC_MEASUREMENT
+#usr/lib/locale/es_EC/LC_MESSAGES
+#usr/lib/locale/es_EC/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_EC/LC_MONETARY
+#usr/lib/locale/es_EC/LC_NAME
+#usr/lib/locale/es_EC/LC_NUMERIC
+#usr/lib/locale/es_EC/LC_PAPER
+#usr/lib/locale/es_EC/LC_TELEPHONE
+#usr/lib/locale/es_EC/LC_TIME
+#usr/lib/locale/es_ES
+#usr/lib/locale/es_ES.utf8
+#usr/lib/locale/es_ES.utf8/LC_ADDRESS
+#usr/lib/locale/es_ES.utf8/LC_COLLATE
+#usr/lib/locale/es_ES.utf8/LC_CTYPE
+#usr/lib/locale/es_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_ES.utf8/LC_MESSAGES
+#usr/lib/locale/es_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_ES.utf8/LC_MONETARY
+#usr/lib/locale/es_ES.utf8/LC_NAME
+#usr/lib/locale/es_ES.utf8/LC_NUMERIC
+#usr/lib/locale/es_ES.utf8/LC_PAPER
+#usr/lib/locale/es_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/es_ES.utf8/LC_TIME
+#usr/lib/locale/es_ES/LC_ADDRESS
+#usr/lib/locale/es_ES/LC_COLLATE
+#usr/lib/locale/es_ES/LC_CTYPE
+#usr/lib/locale/es_ES/LC_IDENTIFICATION
+#usr/lib/locale/es_ES/LC_MEASUREMENT
+#usr/lib/locale/es_ES/LC_MESSAGES
+#usr/lib/locale/es_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_ES/LC_MONETARY
+#usr/lib/locale/es_ES/LC_NAME
+#usr/lib/locale/es_ES/LC_NUMERIC
+#usr/lib/locale/es_ES/LC_PAPER
+#usr/lib/locale/es_ES/LC_TELEPHONE
+#usr/lib/locale/es_ES/LC_TIME
+#usr/lib/locale/es_ES@euro
+#usr/lib/locale/es_ES@euro/LC_ADDRESS
+#usr/lib/locale/es_ES@euro/LC_COLLATE
+#usr/lib/locale/es_ES@euro/LC_CTYPE
+#usr/lib/locale/es_ES@euro/LC_IDENTIFICATION
+#usr/lib/locale/es_ES@euro/LC_MEASUREMENT
+#usr/lib/locale/es_ES@euro/LC_MESSAGES
+#usr/lib/locale/es_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_ES@euro/LC_MONETARY
+#usr/lib/locale/es_ES@euro/LC_NAME
+#usr/lib/locale/es_ES@euro/LC_NUMERIC
+#usr/lib/locale/es_ES@euro/LC_PAPER
+#usr/lib/locale/es_ES@euro/LC_TELEPHONE
+#usr/lib/locale/es_ES@euro/LC_TIME
+#usr/lib/locale/es_GT
+#usr/lib/locale/es_GT.utf8
+#usr/lib/locale/es_GT.utf8/LC_ADDRESS
+#usr/lib/locale/es_GT.utf8/LC_COLLATE
+#usr/lib/locale/es_GT.utf8/LC_CTYPE
+#usr/lib/locale/es_GT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_GT.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_GT.utf8/LC_MESSAGES
+#usr/lib/locale/es_GT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_GT.utf8/LC_MONETARY
+#usr/lib/locale/es_GT.utf8/LC_NAME
+#usr/lib/locale/es_GT.utf8/LC_NUMERIC
+#usr/lib/locale/es_GT.utf8/LC_PAPER
+#usr/lib/locale/es_GT.utf8/LC_TELEPHONE
+#usr/lib/locale/es_GT.utf8/LC_TIME
+#usr/lib/locale/es_GT/LC_ADDRESS
+#usr/lib/locale/es_GT/LC_COLLATE
+#usr/lib/locale/es_GT/LC_CTYPE
+#usr/lib/locale/es_GT/LC_IDENTIFICATION
+#usr/lib/locale/es_GT/LC_MEASUREMENT
+#usr/lib/locale/es_GT/LC_MESSAGES
+#usr/lib/locale/es_GT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_GT/LC_MONETARY
+#usr/lib/locale/es_GT/LC_NAME
+#usr/lib/locale/es_GT/LC_NUMERIC
+#usr/lib/locale/es_GT/LC_PAPER
+#usr/lib/locale/es_GT/LC_TELEPHONE
+#usr/lib/locale/es_GT/LC_TIME
+#usr/lib/locale/es_HN
+#usr/lib/locale/es_HN.utf8
+#usr/lib/locale/es_HN.utf8/LC_ADDRESS
+#usr/lib/locale/es_HN.utf8/LC_COLLATE
+#usr/lib/locale/es_HN.utf8/LC_CTYPE
+#usr/lib/locale/es_HN.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_HN.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_HN.utf8/LC_MESSAGES
+#usr/lib/locale/es_HN.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_HN.utf8/LC_MONETARY
+#usr/lib/locale/es_HN.utf8/LC_NAME
+#usr/lib/locale/es_HN.utf8/LC_NUMERIC
+#usr/lib/locale/es_HN.utf8/LC_PAPER
+#usr/lib/locale/es_HN.utf8/LC_TELEPHONE
+#usr/lib/locale/es_HN.utf8/LC_TIME
+#usr/lib/locale/es_HN/LC_ADDRESS
+#usr/lib/locale/es_HN/LC_COLLATE
+#usr/lib/locale/es_HN/LC_CTYPE
+#usr/lib/locale/es_HN/LC_IDENTIFICATION
+#usr/lib/locale/es_HN/LC_MEASUREMENT
+#usr/lib/locale/es_HN/LC_MESSAGES
+#usr/lib/locale/es_HN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_HN/LC_MONETARY
+#usr/lib/locale/es_HN/LC_NAME
+#usr/lib/locale/es_HN/LC_NUMERIC
+#usr/lib/locale/es_HN/LC_PAPER
+#usr/lib/locale/es_HN/LC_TELEPHONE
+#usr/lib/locale/es_HN/LC_TIME
+#usr/lib/locale/es_MX
+#usr/lib/locale/es_MX.utf8
+#usr/lib/locale/es_MX.utf8/LC_ADDRESS
+#usr/lib/locale/es_MX.utf8/LC_COLLATE
+#usr/lib/locale/es_MX.utf8/LC_CTYPE
+#usr/lib/locale/es_MX.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_MX.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_MX.utf8/LC_MESSAGES
+#usr/lib/locale/es_MX.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_MX.utf8/LC_MONETARY
+#usr/lib/locale/es_MX.utf8/LC_NAME
+#usr/lib/locale/es_MX.utf8/LC_NUMERIC
+#usr/lib/locale/es_MX.utf8/LC_PAPER
+#usr/lib/locale/es_MX.utf8/LC_TELEPHONE
+#usr/lib/locale/es_MX.utf8/LC_TIME
+#usr/lib/locale/es_MX/LC_ADDRESS
+#usr/lib/locale/es_MX/LC_COLLATE
+#usr/lib/locale/es_MX/LC_CTYPE
+#usr/lib/locale/es_MX/LC_IDENTIFICATION
+#usr/lib/locale/es_MX/LC_MEASUREMENT
+#usr/lib/locale/es_MX/LC_MESSAGES
+#usr/lib/locale/es_MX/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_MX/LC_MONETARY
+#usr/lib/locale/es_MX/LC_NAME
+#usr/lib/locale/es_MX/LC_NUMERIC
+#usr/lib/locale/es_MX/LC_PAPER
+#usr/lib/locale/es_MX/LC_TELEPHONE
+#usr/lib/locale/es_MX/LC_TIME
+#usr/lib/locale/es_NI
+#usr/lib/locale/es_NI.utf8
+#usr/lib/locale/es_NI.utf8/LC_ADDRESS
+#usr/lib/locale/es_NI.utf8/LC_COLLATE
+#usr/lib/locale/es_NI.utf8/LC_CTYPE
+#usr/lib/locale/es_NI.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_NI.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_NI.utf8/LC_MESSAGES
+#usr/lib/locale/es_NI.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_NI.utf8/LC_MONETARY
+#usr/lib/locale/es_NI.utf8/LC_NAME
+#usr/lib/locale/es_NI.utf8/LC_NUMERIC
+#usr/lib/locale/es_NI.utf8/LC_PAPER
+#usr/lib/locale/es_NI.utf8/LC_TELEPHONE
+#usr/lib/locale/es_NI.utf8/LC_TIME
+#usr/lib/locale/es_NI/LC_ADDRESS
+#usr/lib/locale/es_NI/LC_COLLATE
+#usr/lib/locale/es_NI/LC_CTYPE
+#usr/lib/locale/es_NI/LC_IDENTIFICATION
+#usr/lib/locale/es_NI/LC_MEASUREMENT
+#usr/lib/locale/es_NI/LC_MESSAGES
+#usr/lib/locale/es_NI/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_NI/LC_MONETARY
+#usr/lib/locale/es_NI/LC_NAME
+#usr/lib/locale/es_NI/LC_NUMERIC
+#usr/lib/locale/es_NI/LC_PAPER
+#usr/lib/locale/es_NI/LC_TELEPHONE
+#usr/lib/locale/es_NI/LC_TIME
+#usr/lib/locale/es_PA
+#usr/lib/locale/es_PA.utf8
+#usr/lib/locale/es_PA.utf8/LC_ADDRESS
+#usr/lib/locale/es_PA.utf8/LC_COLLATE
+#usr/lib/locale/es_PA.utf8/LC_CTYPE
+#usr/lib/locale/es_PA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_PA.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_PA.utf8/LC_MESSAGES
+#usr/lib/locale/es_PA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PA.utf8/LC_MONETARY
+#usr/lib/locale/es_PA.utf8/LC_NAME
+#usr/lib/locale/es_PA.utf8/LC_NUMERIC
+#usr/lib/locale/es_PA.utf8/LC_PAPER
+#usr/lib/locale/es_PA.utf8/LC_TELEPHONE
+#usr/lib/locale/es_PA.utf8/LC_TIME
+#usr/lib/locale/es_PA/LC_ADDRESS
+#usr/lib/locale/es_PA/LC_COLLATE
+#usr/lib/locale/es_PA/LC_CTYPE
+#usr/lib/locale/es_PA/LC_IDENTIFICATION
+#usr/lib/locale/es_PA/LC_MEASUREMENT
+#usr/lib/locale/es_PA/LC_MESSAGES
+#usr/lib/locale/es_PA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PA/LC_MONETARY
+#usr/lib/locale/es_PA/LC_NAME
+#usr/lib/locale/es_PA/LC_NUMERIC
+#usr/lib/locale/es_PA/LC_PAPER
+#usr/lib/locale/es_PA/LC_TELEPHONE
+#usr/lib/locale/es_PA/LC_TIME
+#usr/lib/locale/es_PE
+#usr/lib/locale/es_PE.utf8
+#usr/lib/locale/es_PE.utf8/LC_ADDRESS
+#usr/lib/locale/es_PE.utf8/LC_COLLATE
+#usr/lib/locale/es_PE.utf8/LC_CTYPE
+#usr/lib/locale/es_PE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_PE.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_PE.utf8/LC_MESSAGES
+#usr/lib/locale/es_PE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PE.utf8/LC_MONETARY
+#usr/lib/locale/es_PE.utf8/LC_NAME
+#usr/lib/locale/es_PE.utf8/LC_NUMERIC
+#usr/lib/locale/es_PE.utf8/LC_PAPER
+#usr/lib/locale/es_PE.utf8/LC_TELEPHONE
+#usr/lib/locale/es_PE.utf8/LC_TIME
+#usr/lib/locale/es_PE/LC_ADDRESS
+#usr/lib/locale/es_PE/LC_COLLATE
+#usr/lib/locale/es_PE/LC_CTYPE
+#usr/lib/locale/es_PE/LC_IDENTIFICATION
+#usr/lib/locale/es_PE/LC_MEASUREMENT
+#usr/lib/locale/es_PE/LC_MESSAGES
+#usr/lib/locale/es_PE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PE/LC_MONETARY
+#usr/lib/locale/es_PE/LC_NAME
+#usr/lib/locale/es_PE/LC_NUMERIC
+#usr/lib/locale/es_PE/LC_PAPER
+#usr/lib/locale/es_PE/LC_TELEPHONE
+#usr/lib/locale/es_PE/LC_TIME
+#usr/lib/locale/es_PR
+#usr/lib/locale/es_PR.utf8
+#usr/lib/locale/es_PR.utf8/LC_ADDRESS
+#usr/lib/locale/es_PR.utf8/LC_COLLATE
+#usr/lib/locale/es_PR.utf8/LC_CTYPE
+#usr/lib/locale/es_PR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_PR.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_PR.utf8/LC_MESSAGES
+#usr/lib/locale/es_PR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PR.utf8/LC_MONETARY
+#usr/lib/locale/es_PR.utf8/LC_NAME
+#usr/lib/locale/es_PR.utf8/LC_NUMERIC
+#usr/lib/locale/es_PR.utf8/LC_PAPER
+#usr/lib/locale/es_PR.utf8/LC_TELEPHONE
+#usr/lib/locale/es_PR.utf8/LC_TIME
+#usr/lib/locale/es_PR/LC_ADDRESS
+#usr/lib/locale/es_PR/LC_COLLATE
+#usr/lib/locale/es_PR/LC_CTYPE
+#usr/lib/locale/es_PR/LC_IDENTIFICATION
+#usr/lib/locale/es_PR/LC_MEASUREMENT
+#usr/lib/locale/es_PR/LC_MESSAGES
+#usr/lib/locale/es_PR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PR/LC_MONETARY
+#usr/lib/locale/es_PR/LC_NAME
+#usr/lib/locale/es_PR/LC_NUMERIC
+#usr/lib/locale/es_PR/LC_PAPER
+#usr/lib/locale/es_PR/LC_TELEPHONE
+#usr/lib/locale/es_PR/LC_TIME
+#usr/lib/locale/es_PY
+#usr/lib/locale/es_PY.utf8
+#usr/lib/locale/es_PY.utf8/LC_ADDRESS
+#usr/lib/locale/es_PY.utf8/LC_COLLATE
+#usr/lib/locale/es_PY.utf8/LC_CTYPE
+#usr/lib/locale/es_PY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_PY.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_PY.utf8/LC_MESSAGES
+#usr/lib/locale/es_PY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PY.utf8/LC_MONETARY
+#usr/lib/locale/es_PY.utf8/LC_NAME
+#usr/lib/locale/es_PY.utf8/LC_NUMERIC
+#usr/lib/locale/es_PY.utf8/LC_PAPER
+#usr/lib/locale/es_PY.utf8/LC_TELEPHONE
+#usr/lib/locale/es_PY.utf8/LC_TIME
+#usr/lib/locale/es_PY/LC_ADDRESS
+#usr/lib/locale/es_PY/LC_COLLATE
+#usr/lib/locale/es_PY/LC_CTYPE
+#usr/lib/locale/es_PY/LC_IDENTIFICATION
+#usr/lib/locale/es_PY/LC_MEASUREMENT
+#usr/lib/locale/es_PY/LC_MESSAGES
+#usr/lib/locale/es_PY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PY/LC_MONETARY
+#usr/lib/locale/es_PY/LC_NAME
+#usr/lib/locale/es_PY/LC_NUMERIC
+#usr/lib/locale/es_PY/LC_PAPER
+#usr/lib/locale/es_PY/LC_TELEPHONE
+#usr/lib/locale/es_PY/LC_TIME
+#usr/lib/locale/es_SV
+#usr/lib/locale/es_SV.utf8
+#usr/lib/locale/es_SV.utf8/LC_ADDRESS
+#usr/lib/locale/es_SV.utf8/LC_COLLATE
+#usr/lib/locale/es_SV.utf8/LC_CTYPE
+#usr/lib/locale/es_SV.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_SV.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_SV.utf8/LC_MESSAGES
+#usr/lib/locale/es_SV.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_SV.utf8/LC_MONETARY
+#usr/lib/locale/es_SV.utf8/LC_NAME
+#usr/lib/locale/es_SV.utf8/LC_NUMERIC
+#usr/lib/locale/es_SV.utf8/LC_PAPER
+#usr/lib/locale/es_SV.utf8/LC_TELEPHONE
+#usr/lib/locale/es_SV.utf8/LC_TIME
+#usr/lib/locale/es_SV/LC_ADDRESS
+#usr/lib/locale/es_SV/LC_COLLATE
+#usr/lib/locale/es_SV/LC_CTYPE
+#usr/lib/locale/es_SV/LC_IDENTIFICATION
+#usr/lib/locale/es_SV/LC_MEASUREMENT
+#usr/lib/locale/es_SV/LC_MESSAGES
+#usr/lib/locale/es_SV/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_SV/LC_MONETARY
+#usr/lib/locale/es_SV/LC_NAME
+#usr/lib/locale/es_SV/LC_NUMERIC
+#usr/lib/locale/es_SV/LC_PAPER
+#usr/lib/locale/es_SV/LC_TELEPHONE
+#usr/lib/locale/es_SV/LC_TIME
+#usr/lib/locale/es_US
+#usr/lib/locale/es_US.utf8
+#usr/lib/locale/es_US.utf8/LC_ADDRESS
+#usr/lib/locale/es_US.utf8/LC_COLLATE
+#usr/lib/locale/es_US.utf8/LC_CTYPE
+#usr/lib/locale/es_US.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_US.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_US.utf8/LC_MESSAGES
+#usr/lib/locale/es_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_US.utf8/LC_MONETARY
+#usr/lib/locale/es_US.utf8/LC_NAME
+#usr/lib/locale/es_US.utf8/LC_NUMERIC
+#usr/lib/locale/es_US.utf8/LC_PAPER
+#usr/lib/locale/es_US.utf8/LC_TELEPHONE
+#usr/lib/locale/es_US.utf8/LC_TIME
+#usr/lib/locale/es_US/LC_ADDRESS
+#usr/lib/locale/es_US/LC_COLLATE
+#usr/lib/locale/es_US/LC_CTYPE
+#usr/lib/locale/es_US/LC_IDENTIFICATION
+#usr/lib/locale/es_US/LC_MEASUREMENT
+#usr/lib/locale/es_US/LC_MESSAGES
+#usr/lib/locale/es_US/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_US/LC_MONETARY
+#usr/lib/locale/es_US/LC_NAME
+#usr/lib/locale/es_US/LC_NUMERIC
+#usr/lib/locale/es_US/LC_PAPER
+#usr/lib/locale/es_US/LC_TELEPHONE
+#usr/lib/locale/es_US/LC_TIME
+#usr/lib/locale/es_UY
+#usr/lib/locale/es_UY.utf8
+#usr/lib/locale/es_UY.utf8/LC_ADDRESS
+#usr/lib/locale/es_UY.utf8/LC_COLLATE
+#usr/lib/locale/es_UY.utf8/LC_CTYPE
+#usr/lib/locale/es_UY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_UY.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_UY.utf8/LC_MESSAGES
+#usr/lib/locale/es_UY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_UY.utf8/LC_MONETARY
+#usr/lib/locale/es_UY.utf8/LC_NAME
+#usr/lib/locale/es_UY.utf8/LC_NUMERIC
+#usr/lib/locale/es_UY.utf8/LC_PAPER
+#usr/lib/locale/es_UY.utf8/LC_TELEPHONE
+#usr/lib/locale/es_UY.utf8/LC_TIME
+#usr/lib/locale/es_UY/LC_ADDRESS
+#usr/lib/locale/es_UY/LC_COLLATE
+#usr/lib/locale/es_UY/LC_CTYPE
+#usr/lib/locale/es_UY/LC_IDENTIFICATION
+#usr/lib/locale/es_UY/LC_MEASUREMENT
+#usr/lib/locale/es_UY/LC_MESSAGES
+#usr/lib/locale/es_UY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_UY/LC_MONETARY
+#usr/lib/locale/es_UY/LC_NAME
+#usr/lib/locale/es_UY/LC_NUMERIC
+#usr/lib/locale/es_UY/LC_PAPER
+#usr/lib/locale/es_UY/LC_TELEPHONE
+#usr/lib/locale/es_UY/LC_TIME
+#usr/lib/locale/es_VE
+#usr/lib/locale/es_VE.utf8
+#usr/lib/locale/es_VE.utf8/LC_ADDRESS
+#usr/lib/locale/es_VE.utf8/LC_COLLATE
+#usr/lib/locale/es_VE.utf8/LC_CTYPE
+#usr/lib/locale/es_VE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_VE.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_VE.utf8/LC_MESSAGES
+#usr/lib/locale/es_VE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_VE.utf8/LC_MONETARY
+#usr/lib/locale/es_VE.utf8/LC_NAME
+#usr/lib/locale/es_VE.utf8/LC_NUMERIC
+#usr/lib/locale/es_VE.utf8/LC_PAPER
+#usr/lib/locale/es_VE.utf8/LC_TELEPHONE
+#usr/lib/locale/es_VE.utf8/LC_TIME
+#usr/lib/locale/es_VE/LC_ADDRESS
+#usr/lib/locale/es_VE/LC_COLLATE
+#usr/lib/locale/es_VE/LC_CTYPE
+#usr/lib/locale/es_VE/LC_IDENTIFICATION
+#usr/lib/locale/es_VE/LC_MEASUREMENT
+#usr/lib/locale/es_VE/LC_MESSAGES
+#usr/lib/locale/es_VE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_VE/LC_MONETARY
+#usr/lib/locale/es_VE/LC_NAME
+#usr/lib/locale/es_VE/LC_NUMERIC
+#usr/lib/locale/es_VE/LC_PAPER
+#usr/lib/locale/es_VE/LC_TELEPHONE
+#usr/lib/locale/es_VE/LC_TIME
+#usr/lib/locale/et_EE
+#usr/lib/locale/et_EE.iso885915
+#usr/lib/locale/et_EE.iso885915/LC_ADDRESS
+#usr/lib/locale/et_EE.iso885915/LC_COLLATE
+#usr/lib/locale/et_EE.iso885915/LC_CTYPE
+#usr/lib/locale/et_EE.iso885915/LC_IDENTIFICATION
+#usr/lib/locale/et_EE.iso885915/LC_MEASUREMENT
+#usr/lib/locale/et_EE.iso885915/LC_MESSAGES
+#usr/lib/locale/et_EE.iso885915/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/et_EE.iso885915/LC_MONETARY
+#usr/lib/locale/et_EE.iso885915/LC_NAME
+#usr/lib/locale/et_EE.iso885915/LC_NUMERIC
+#usr/lib/locale/et_EE.iso885915/LC_PAPER
+#usr/lib/locale/et_EE.iso885915/LC_TELEPHONE
+#usr/lib/locale/et_EE.iso885915/LC_TIME
+#usr/lib/locale/et_EE.utf8
+#usr/lib/locale/et_EE.utf8/LC_ADDRESS
+#usr/lib/locale/et_EE.utf8/LC_COLLATE
+#usr/lib/locale/et_EE.utf8/LC_CTYPE
+#usr/lib/locale/et_EE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/et_EE.utf8/LC_MEASUREMENT
+#usr/lib/locale/et_EE.utf8/LC_MESSAGES
+#usr/lib/locale/et_EE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/et_EE.utf8/LC_MONETARY
+#usr/lib/locale/et_EE.utf8/LC_NAME
+#usr/lib/locale/et_EE.utf8/LC_NUMERIC
+#usr/lib/locale/et_EE.utf8/LC_PAPER
+#usr/lib/locale/et_EE.utf8/LC_TELEPHONE
+#usr/lib/locale/et_EE.utf8/LC_TIME
+#usr/lib/locale/et_EE/LC_ADDRESS
+#usr/lib/locale/et_EE/LC_COLLATE
+#usr/lib/locale/et_EE/LC_CTYPE
+#usr/lib/locale/et_EE/LC_IDENTIFICATION
+#usr/lib/locale/et_EE/LC_MEASUREMENT
+#usr/lib/locale/et_EE/LC_MESSAGES
+#usr/lib/locale/et_EE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/et_EE/LC_MONETARY
+#usr/lib/locale/et_EE/LC_NAME
+#usr/lib/locale/et_EE/LC_NUMERIC
+#usr/lib/locale/et_EE/LC_PAPER
+#usr/lib/locale/et_EE/LC_TELEPHONE
+#usr/lib/locale/et_EE/LC_TIME
+#usr/lib/locale/eu_ES
+#usr/lib/locale/eu_ES.utf8
+#usr/lib/locale/eu_ES.utf8/LC_ADDRESS
+#usr/lib/locale/eu_ES.utf8/LC_COLLATE
+#usr/lib/locale/eu_ES.utf8/LC_CTYPE
+#usr/lib/locale/eu_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/eu_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/eu_ES.utf8/LC_MESSAGES
+#usr/lib/locale/eu_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/eu_ES.utf8/LC_MONETARY
+#usr/lib/locale/eu_ES.utf8/LC_NAME
+#usr/lib/locale/eu_ES.utf8/LC_NUMERIC
+#usr/lib/locale/eu_ES.utf8/LC_PAPER
+#usr/lib/locale/eu_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/eu_ES.utf8/LC_TIME
+#usr/lib/locale/eu_ES/LC_ADDRESS
+#usr/lib/locale/eu_ES/LC_COLLATE
+#usr/lib/locale/eu_ES/LC_CTYPE
+#usr/lib/locale/eu_ES/LC_IDENTIFICATION
+#usr/lib/locale/eu_ES/LC_MEASUREMENT
+#usr/lib/locale/eu_ES/LC_MESSAGES
+#usr/lib/locale/eu_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/eu_ES/LC_MONETARY
+#usr/lib/locale/eu_ES/LC_NAME
+#usr/lib/locale/eu_ES/LC_NUMERIC
+#usr/lib/locale/eu_ES/LC_PAPER
+#usr/lib/locale/eu_ES/LC_TELEPHONE
+#usr/lib/locale/eu_ES/LC_TIME
+#usr/lib/locale/eu_ES@euro
+#usr/lib/locale/eu_ES@euro/LC_ADDRESS
+#usr/lib/locale/eu_ES@euro/LC_COLLATE
+#usr/lib/locale/eu_ES@euro/LC_CTYPE
+#usr/lib/locale/eu_ES@euro/LC_IDENTIFICATION
+#usr/lib/locale/eu_ES@euro/LC_MEASUREMENT
+#usr/lib/locale/eu_ES@euro/LC_MESSAGES
+#usr/lib/locale/eu_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/eu_ES@euro/LC_MONETARY
+#usr/lib/locale/eu_ES@euro/LC_NAME
+#usr/lib/locale/eu_ES@euro/LC_NUMERIC
+#usr/lib/locale/eu_ES@euro/LC_PAPER
+#usr/lib/locale/eu_ES@euro/LC_TELEPHONE
+#usr/lib/locale/eu_ES@euro/LC_TIME
+#usr/lib/locale/fa_IR
+#usr/lib/locale/fa_IR/LC_ADDRESS
+#usr/lib/locale/fa_IR/LC_COLLATE
+#usr/lib/locale/fa_IR/LC_CTYPE
+#usr/lib/locale/fa_IR/LC_IDENTIFICATION
+#usr/lib/locale/fa_IR/LC_MEASUREMENT
+#usr/lib/locale/fa_IR/LC_MESSAGES
+#usr/lib/locale/fa_IR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fa_IR/LC_MONETARY
+#usr/lib/locale/fa_IR/LC_NAME
+#usr/lib/locale/fa_IR/LC_NUMERIC
+#usr/lib/locale/fa_IR/LC_PAPER
+#usr/lib/locale/fa_IR/LC_TELEPHONE
+#usr/lib/locale/fa_IR/LC_TIME
+#usr/lib/locale/fi_FI
+#usr/lib/locale/fi_FI.utf8
+#usr/lib/locale/fi_FI.utf8/LC_ADDRESS
+#usr/lib/locale/fi_FI.utf8/LC_COLLATE
+#usr/lib/locale/fi_FI.utf8/LC_CTYPE
+#usr/lib/locale/fi_FI.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fi_FI.utf8/LC_MEASUREMENT
+#usr/lib/locale/fi_FI.utf8/LC_MESSAGES
+#usr/lib/locale/fi_FI.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fi_FI.utf8/LC_MONETARY
+#usr/lib/locale/fi_FI.utf8/LC_NAME
+#usr/lib/locale/fi_FI.utf8/LC_NUMERIC
+#usr/lib/locale/fi_FI.utf8/LC_PAPER
+#usr/lib/locale/fi_FI.utf8/LC_TELEPHONE
+#usr/lib/locale/fi_FI.utf8/LC_TIME
+#usr/lib/locale/fi_FI/LC_ADDRESS
+#usr/lib/locale/fi_FI/LC_COLLATE
+#usr/lib/locale/fi_FI/LC_CTYPE
+#usr/lib/locale/fi_FI/LC_IDENTIFICATION
+#usr/lib/locale/fi_FI/LC_MEASUREMENT
+#usr/lib/locale/fi_FI/LC_MESSAGES
+#usr/lib/locale/fi_FI/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fi_FI/LC_MONETARY
+#usr/lib/locale/fi_FI/LC_NAME
+#usr/lib/locale/fi_FI/LC_NUMERIC
+#usr/lib/locale/fi_FI/LC_PAPER
+#usr/lib/locale/fi_FI/LC_TELEPHONE
+#usr/lib/locale/fi_FI/LC_TIME
+#usr/lib/locale/fi_FI@euro
+#usr/lib/locale/fi_FI@euro/LC_ADDRESS
+#usr/lib/locale/fi_FI@euro/LC_COLLATE
+#usr/lib/locale/fi_FI@euro/LC_CTYPE
+#usr/lib/locale/fi_FI@euro/LC_IDENTIFICATION
+#usr/lib/locale/fi_FI@euro/LC_MEASUREMENT
+#usr/lib/locale/fi_FI@euro/LC_MESSAGES
+#usr/lib/locale/fi_FI@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fi_FI@euro/LC_MONETARY
+#usr/lib/locale/fi_FI@euro/LC_NAME
+#usr/lib/locale/fi_FI@euro/LC_NUMERIC
+#usr/lib/locale/fi_FI@euro/LC_PAPER
+#usr/lib/locale/fi_FI@euro/LC_TELEPHONE
+#usr/lib/locale/fi_FI@euro/LC_TIME
+#usr/lib/locale/fil_PH
+#usr/lib/locale/fil_PH/LC_ADDRESS
+#usr/lib/locale/fil_PH/LC_COLLATE
+#usr/lib/locale/fil_PH/LC_CTYPE
+#usr/lib/locale/fil_PH/LC_IDENTIFICATION
+#usr/lib/locale/fil_PH/LC_MEASUREMENT
+#usr/lib/locale/fil_PH/LC_MESSAGES
+#usr/lib/locale/fil_PH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fil_PH/LC_MONETARY
+#usr/lib/locale/fil_PH/LC_NAME
+#usr/lib/locale/fil_PH/LC_NUMERIC
+#usr/lib/locale/fil_PH/LC_PAPER
+#usr/lib/locale/fil_PH/LC_TELEPHONE
+#usr/lib/locale/fil_PH/LC_TIME
+#usr/lib/locale/fo_FO
+#usr/lib/locale/fo_FO.utf8
+#usr/lib/locale/fo_FO.utf8/LC_ADDRESS
+#usr/lib/locale/fo_FO.utf8/LC_COLLATE
+#usr/lib/locale/fo_FO.utf8/LC_CTYPE
+#usr/lib/locale/fo_FO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fo_FO.utf8/LC_MEASUREMENT
+#usr/lib/locale/fo_FO.utf8/LC_MESSAGES
+#usr/lib/locale/fo_FO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fo_FO.utf8/LC_MONETARY
+#usr/lib/locale/fo_FO.utf8/LC_NAME
+#usr/lib/locale/fo_FO.utf8/LC_NUMERIC
+#usr/lib/locale/fo_FO.utf8/LC_PAPER
+#usr/lib/locale/fo_FO.utf8/LC_TELEPHONE
+#usr/lib/locale/fo_FO.utf8/LC_TIME
+#usr/lib/locale/fo_FO/LC_ADDRESS
+#usr/lib/locale/fo_FO/LC_COLLATE
+#usr/lib/locale/fo_FO/LC_CTYPE
+#usr/lib/locale/fo_FO/LC_IDENTIFICATION
+#usr/lib/locale/fo_FO/LC_MEASUREMENT
+#usr/lib/locale/fo_FO/LC_MESSAGES
+#usr/lib/locale/fo_FO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fo_FO/LC_MONETARY
+#usr/lib/locale/fo_FO/LC_NAME
+#usr/lib/locale/fo_FO/LC_NUMERIC
+#usr/lib/locale/fo_FO/LC_PAPER
+#usr/lib/locale/fo_FO/LC_TELEPHONE
+#usr/lib/locale/fo_FO/LC_TIME
+#usr/lib/locale/fr_BE
+#usr/lib/locale/fr_BE.utf8
+#usr/lib/locale/fr_BE.utf8/LC_ADDRESS
+#usr/lib/locale/fr_BE.utf8/LC_COLLATE
+#usr/lib/locale/fr_BE.utf8/LC_CTYPE
+#usr/lib/locale/fr_BE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fr_BE.utf8/LC_MEASUREMENT
+#usr/lib/locale/fr_BE.utf8/LC_MESSAGES
+#usr/lib/locale/fr_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_BE.utf8/LC_MONETARY
+#usr/lib/locale/fr_BE.utf8/LC_NAME
+#usr/lib/locale/fr_BE.utf8/LC_NUMERIC
+#usr/lib/locale/fr_BE.utf8/LC_PAPER
+#usr/lib/locale/fr_BE.utf8/LC_TELEPHONE
+#usr/lib/locale/fr_BE.utf8/LC_TIME
+#usr/lib/locale/fr_BE/LC_ADDRESS
+#usr/lib/locale/fr_BE/LC_COLLATE
+#usr/lib/locale/fr_BE/LC_CTYPE
+#usr/lib/locale/fr_BE/LC_IDENTIFICATION
+#usr/lib/locale/fr_BE/LC_MEASUREMENT
+#usr/lib/locale/fr_BE/LC_MESSAGES
+#usr/lib/locale/fr_BE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_BE/LC_MONETARY
+#usr/lib/locale/fr_BE/LC_NAME
+#usr/lib/locale/fr_BE/LC_NUMERIC
+#usr/lib/locale/fr_BE/LC_PAPER
+#usr/lib/locale/fr_BE/LC_TELEPHONE
+#usr/lib/locale/fr_BE/LC_TIME
+#usr/lib/locale/fr_BE@euro
+#usr/lib/locale/fr_BE@euro/LC_ADDRESS
+#usr/lib/locale/fr_BE@euro/LC_COLLATE
+#usr/lib/locale/fr_BE@euro/LC_CTYPE
+#usr/lib/locale/fr_BE@euro/LC_IDENTIFICATION
+#usr/lib/locale/fr_BE@euro/LC_MEASUREMENT
+#usr/lib/locale/fr_BE@euro/LC_MESSAGES
+#usr/lib/locale/fr_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_BE@euro/LC_MONETARY
+#usr/lib/locale/fr_BE@euro/LC_NAME
+#usr/lib/locale/fr_BE@euro/LC_NUMERIC
+#usr/lib/locale/fr_BE@euro/LC_PAPER
+#usr/lib/locale/fr_BE@euro/LC_TELEPHONE
+#usr/lib/locale/fr_BE@euro/LC_TIME
+#usr/lib/locale/fr_CA
+#usr/lib/locale/fr_CA.utf8
+#usr/lib/locale/fr_CA.utf8/LC_ADDRESS
+#usr/lib/locale/fr_CA.utf8/LC_COLLATE
+#usr/lib/locale/fr_CA.utf8/LC_CTYPE
+#usr/lib/locale/fr_CA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fr_CA.utf8/LC_MEASUREMENT
+#usr/lib/locale/fr_CA.utf8/LC_MESSAGES
+#usr/lib/locale/fr_CA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_CA.utf8/LC_MONETARY
+#usr/lib/locale/fr_CA.utf8/LC_NAME
+#usr/lib/locale/fr_CA.utf8/LC_NUMERIC
+#usr/lib/locale/fr_CA.utf8/LC_PAPER
+#usr/lib/locale/fr_CA.utf8/LC_TELEPHONE
+#usr/lib/locale/fr_CA.utf8/LC_TIME
+#usr/lib/locale/fr_CA/LC_ADDRESS
+#usr/lib/locale/fr_CA/LC_COLLATE
+#usr/lib/locale/fr_CA/LC_CTYPE
+#usr/lib/locale/fr_CA/LC_IDENTIFICATION
+#usr/lib/locale/fr_CA/LC_MEASUREMENT
+#usr/lib/locale/fr_CA/LC_MESSAGES
+#usr/lib/locale/fr_CA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_CA/LC_MONETARY
+#usr/lib/locale/fr_CA/LC_NAME
+#usr/lib/locale/fr_CA/LC_NUMERIC
+#usr/lib/locale/fr_CA/LC_PAPER
+#usr/lib/locale/fr_CA/LC_TELEPHONE
+#usr/lib/locale/fr_CA/LC_TIME
+#usr/lib/locale/fr_CH
+#usr/lib/locale/fr_CH.utf8
+#usr/lib/locale/fr_CH.utf8/LC_ADDRESS
+#usr/lib/locale/fr_CH.utf8/LC_COLLATE
+#usr/lib/locale/fr_CH.utf8/LC_CTYPE
+#usr/lib/locale/fr_CH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fr_CH.utf8/LC_MEASUREMENT
+#usr/lib/locale/fr_CH.utf8/LC_MESSAGES
+#usr/lib/locale/fr_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_CH.utf8/LC_MONETARY
+#usr/lib/locale/fr_CH.utf8/LC_NAME
+#usr/lib/locale/fr_CH.utf8/LC_NUMERIC
+#usr/lib/locale/fr_CH.utf8/LC_PAPER
+#usr/lib/locale/fr_CH.utf8/LC_TELEPHONE
+#usr/lib/locale/fr_CH.utf8/LC_TIME
+#usr/lib/locale/fr_CH/LC_ADDRESS
+#usr/lib/locale/fr_CH/LC_COLLATE
+#usr/lib/locale/fr_CH/LC_CTYPE
+#usr/lib/locale/fr_CH/LC_IDENTIFICATION
+#usr/lib/locale/fr_CH/LC_MEASUREMENT
+#usr/lib/locale/fr_CH/LC_MESSAGES
+#usr/lib/locale/fr_CH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_CH/LC_MONETARY
+#usr/lib/locale/fr_CH/LC_NAME
+#usr/lib/locale/fr_CH/LC_NUMERIC
+#usr/lib/locale/fr_CH/LC_PAPER
+#usr/lib/locale/fr_CH/LC_TELEPHONE
+#usr/lib/locale/fr_CH/LC_TIME
+#usr/lib/locale/fr_FR
+#usr/lib/locale/fr_FR.utf8
+#usr/lib/locale/fr_FR.utf8/LC_ADDRESS
+#usr/lib/locale/fr_FR.utf8/LC_COLLATE
+#usr/lib/locale/fr_FR.utf8/LC_CTYPE
+#usr/lib/locale/fr_FR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fr_FR.utf8/LC_MEASUREMENT
+#usr/lib/locale/fr_FR.utf8/LC_MESSAGES
+#usr/lib/locale/fr_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_FR.utf8/LC_MONETARY
+#usr/lib/locale/fr_FR.utf8/LC_NAME
+#usr/lib/locale/fr_FR.utf8/LC_NUMERIC
+#usr/lib/locale/fr_FR.utf8/LC_PAPER
+#usr/lib/locale/fr_FR.utf8/LC_TELEPHONE
+#usr/lib/locale/fr_FR.utf8/LC_TIME
+#usr/lib/locale/fr_FR/LC_ADDRESS
+#usr/lib/locale/fr_FR/LC_COLLATE
+#usr/lib/locale/fr_FR/LC_CTYPE
+#usr/lib/locale/fr_FR/LC_IDENTIFICATION
+#usr/lib/locale/fr_FR/LC_MEASUREMENT
+#usr/lib/locale/fr_FR/LC_MESSAGES
+#usr/lib/locale/fr_FR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_FR/LC_MONETARY
+#usr/lib/locale/fr_FR/LC_NAME
+#usr/lib/locale/fr_FR/LC_NUMERIC
+#usr/lib/locale/fr_FR/LC_PAPER
+#usr/lib/locale/fr_FR/LC_TELEPHONE
+#usr/lib/locale/fr_FR/LC_TIME
+#usr/lib/locale/fr_FR@euro
+#usr/lib/locale/fr_FR@euro/LC_ADDRESS
+#usr/lib/locale/fr_FR@euro/LC_COLLATE
+#usr/lib/locale/fr_FR@euro/LC_CTYPE
+#usr/lib/locale/fr_FR@euro/LC_IDENTIFICATION
+#usr/lib/locale/fr_FR@euro/LC_MEASUREMENT
+#usr/lib/locale/fr_FR@euro/LC_MESSAGES
+#usr/lib/locale/fr_FR@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_FR@euro/LC_MONETARY
+#usr/lib/locale/fr_FR@euro/LC_NAME
+#usr/lib/locale/fr_FR@euro/LC_NUMERIC
+#usr/lib/locale/fr_FR@euro/LC_PAPER
+#usr/lib/locale/fr_FR@euro/LC_TELEPHONE
+#usr/lib/locale/fr_FR@euro/LC_TIME
+#usr/lib/locale/fr_LU
+#usr/lib/locale/fr_LU.utf8
+#usr/lib/locale/fr_LU.utf8/LC_ADDRESS
+#usr/lib/locale/fr_LU.utf8/LC_COLLATE
+#usr/lib/locale/fr_LU.utf8/LC_CTYPE
+#usr/lib/locale/fr_LU.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fr_LU.utf8/LC_MEASUREMENT
+#usr/lib/locale/fr_LU.utf8/LC_MESSAGES
+#usr/lib/locale/fr_LU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_LU.utf8/LC_MONETARY
+#usr/lib/locale/fr_LU.utf8/LC_NAME
+#usr/lib/locale/fr_LU.utf8/LC_NUMERIC
+#usr/lib/locale/fr_LU.utf8/LC_PAPER
+#usr/lib/locale/fr_LU.utf8/LC_TELEPHONE
+#usr/lib/locale/fr_LU.utf8/LC_TIME
+#usr/lib/locale/fr_LU/LC_ADDRESS
+#usr/lib/locale/fr_LU/LC_COLLATE
+#usr/lib/locale/fr_LU/LC_CTYPE
+#usr/lib/locale/fr_LU/LC_IDENTIFICATION
+#usr/lib/locale/fr_LU/LC_MEASUREMENT
+#usr/lib/locale/fr_LU/LC_MESSAGES
+#usr/lib/locale/fr_LU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_LU/LC_MONETARY
+#usr/lib/locale/fr_LU/LC_NAME
+#usr/lib/locale/fr_LU/LC_NUMERIC
+#usr/lib/locale/fr_LU/LC_PAPER
+#usr/lib/locale/fr_LU/LC_TELEPHONE
+#usr/lib/locale/fr_LU/LC_TIME
+#usr/lib/locale/fr_LU@euro
+#usr/lib/locale/fr_LU@euro/LC_ADDRESS
+#usr/lib/locale/fr_LU@euro/LC_COLLATE
+#usr/lib/locale/fr_LU@euro/LC_CTYPE
+#usr/lib/locale/fr_LU@euro/LC_IDENTIFICATION
+#usr/lib/locale/fr_LU@euro/LC_MEASUREMENT
+#usr/lib/locale/fr_LU@euro/LC_MESSAGES
+#usr/lib/locale/fr_LU@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_LU@euro/LC_MONETARY
+#usr/lib/locale/fr_LU@euro/LC_NAME
+#usr/lib/locale/fr_LU@euro/LC_NUMERIC
+#usr/lib/locale/fr_LU@euro/LC_PAPER
+#usr/lib/locale/fr_LU@euro/LC_TELEPHONE
+#usr/lib/locale/fr_LU@euro/LC_TIME
+#usr/lib/locale/fur_IT
+#usr/lib/locale/fur_IT/LC_ADDRESS
+#usr/lib/locale/fur_IT/LC_COLLATE
+#usr/lib/locale/fur_IT/LC_CTYPE
+#usr/lib/locale/fur_IT/LC_IDENTIFICATION
+#usr/lib/locale/fur_IT/LC_MEASUREMENT
+#usr/lib/locale/fur_IT/LC_MESSAGES
+#usr/lib/locale/fur_IT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fur_IT/LC_MONETARY
+#usr/lib/locale/fur_IT/LC_NAME
+#usr/lib/locale/fur_IT/LC_NUMERIC
+#usr/lib/locale/fur_IT/LC_PAPER
+#usr/lib/locale/fur_IT/LC_TELEPHONE
+#usr/lib/locale/fur_IT/LC_TIME
+#usr/lib/locale/fy_DE
+#usr/lib/locale/fy_DE/LC_ADDRESS
+#usr/lib/locale/fy_DE/LC_COLLATE
+#usr/lib/locale/fy_DE/LC_CTYPE
+#usr/lib/locale/fy_DE/LC_IDENTIFICATION
+#usr/lib/locale/fy_DE/LC_MEASUREMENT
+#usr/lib/locale/fy_DE/LC_MESSAGES
+#usr/lib/locale/fy_DE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fy_DE/LC_MONETARY
+#usr/lib/locale/fy_DE/LC_NAME
+#usr/lib/locale/fy_DE/LC_NUMERIC
+#usr/lib/locale/fy_DE/LC_PAPER
+#usr/lib/locale/fy_DE/LC_TELEPHONE
+#usr/lib/locale/fy_DE/LC_TIME
+#usr/lib/locale/fy_NL
+#usr/lib/locale/fy_NL/LC_ADDRESS
+#usr/lib/locale/fy_NL/LC_COLLATE
+#usr/lib/locale/fy_NL/LC_CTYPE
+#usr/lib/locale/fy_NL/LC_IDENTIFICATION
+#usr/lib/locale/fy_NL/LC_MEASUREMENT
+#usr/lib/locale/fy_NL/LC_MESSAGES
+#usr/lib/locale/fy_NL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fy_NL/LC_MONETARY
+#usr/lib/locale/fy_NL/LC_NAME
+#usr/lib/locale/fy_NL/LC_NUMERIC
+#usr/lib/locale/fy_NL/LC_PAPER
+#usr/lib/locale/fy_NL/LC_TELEPHONE
+#usr/lib/locale/fy_NL/LC_TIME
+#usr/lib/locale/ga_IE
+#usr/lib/locale/ga_IE.utf8
+#usr/lib/locale/ga_IE.utf8/LC_ADDRESS
+#usr/lib/locale/ga_IE.utf8/LC_COLLATE
+#usr/lib/locale/ga_IE.utf8/LC_CTYPE
+#usr/lib/locale/ga_IE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ga_IE.utf8/LC_MEASUREMENT
+#usr/lib/locale/ga_IE.utf8/LC_MESSAGES
+#usr/lib/locale/ga_IE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ga_IE.utf8/LC_MONETARY
+#usr/lib/locale/ga_IE.utf8/LC_NAME
+#usr/lib/locale/ga_IE.utf8/LC_NUMERIC
+#usr/lib/locale/ga_IE.utf8/LC_PAPER
+#usr/lib/locale/ga_IE.utf8/LC_TELEPHONE
+#usr/lib/locale/ga_IE.utf8/LC_TIME
+#usr/lib/locale/ga_IE/LC_ADDRESS
+#usr/lib/locale/ga_IE/LC_COLLATE
+#usr/lib/locale/ga_IE/LC_CTYPE
+#usr/lib/locale/ga_IE/LC_IDENTIFICATION
+#usr/lib/locale/ga_IE/LC_MEASUREMENT
+#usr/lib/locale/ga_IE/LC_MESSAGES
+#usr/lib/locale/ga_IE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ga_IE/LC_MONETARY
+#usr/lib/locale/ga_IE/LC_NAME
+#usr/lib/locale/ga_IE/LC_NUMERIC
+#usr/lib/locale/ga_IE/LC_PAPER
+#usr/lib/locale/ga_IE/LC_TELEPHONE
+#usr/lib/locale/ga_IE/LC_TIME
+#usr/lib/locale/ga_IE@euro
+#usr/lib/locale/ga_IE@euro/LC_ADDRESS
+#usr/lib/locale/ga_IE@euro/LC_COLLATE
+#usr/lib/locale/ga_IE@euro/LC_CTYPE
+#usr/lib/locale/ga_IE@euro/LC_IDENTIFICATION
+#usr/lib/locale/ga_IE@euro/LC_MEASUREMENT
+#usr/lib/locale/ga_IE@euro/LC_MESSAGES
+#usr/lib/locale/ga_IE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ga_IE@euro/LC_MONETARY
+#usr/lib/locale/ga_IE@euro/LC_NAME
+#usr/lib/locale/ga_IE@euro/LC_NUMERIC
+#usr/lib/locale/ga_IE@euro/LC_PAPER
+#usr/lib/locale/ga_IE@euro/LC_TELEPHONE
+#usr/lib/locale/ga_IE@euro/LC_TIME
+#usr/lib/locale/gd_GB
+#usr/lib/locale/gd_GB.utf8
+#usr/lib/locale/gd_GB.utf8/LC_ADDRESS
+#usr/lib/locale/gd_GB.utf8/LC_COLLATE
+#usr/lib/locale/gd_GB.utf8/LC_CTYPE
+#usr/lib/locale/gd_GB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/gd_GB.utf8/LC_MEASUREMENT
+#usr/lib/locale/gd_GB.utf8/LC_MESSAGES
+#usr/lib/locale/gd_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gd_GB.utf8/LC_MONETARY
+#usr/lib/locale/gd_GB.utf8/LC_NAME
+#usr/lib/locale/gd_GB.utf8/LC_NUMERIC
+#usr/lib/locale/gd_GB.utf8/LC_PAPER
+#usr/lib/locale/gd_GB.utf8/LC_TELEPHONE
+#usr/lib/locale/gd_GB.utf8/LC_TIME
+#usr/lib/locale/gd_GB/LC_ADDRESS
+#usr/lib/locale/gd_GB/LC_COLLATE
+#usr/lib/locale/gd_GB/LC_CTYPE
+#usr/lib/locale/gd_GB/LC_IDENTIFICATION
+#usr/lib/locale/gd_GB/LC_MEASUREMENT
+#usr/lib/locale/gd_GB/LC_MESSAGES
+#usr/lib/locale/gd_GB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gd_GB/LC_MONETARY
+#usr/lib/locale/gd_GB/LC_NAME
+#usr/lib/locale/gd_GB/LC_NUMERIC
+#usr/lib/locale/gd_GB/LC_PAPER
+#usr/lib/locale/gd_GB/LC_TELEPHONE
+#usr/lib/locale/gd_GB/LC_TIME
+#usr/lib/locale/gez_ER
+#usr/lib/locale/gez_ER/LC_ADDRESS
+#usr/lib/locale/gez_ER/LC_COLLATE
+#usr/lib/locale/gez_ER/LC_CTYPE
+#usr/lib/locale/gez_ER/LC_IDENTIFICATION
+#usr/lib/locale/gez_ER/LC_MEASUREMENT
+#usr/lib/locale/gez_ER/LC_MESSAGES
+#usr/lib/locale/gez_ER/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gez_ER/LC_MONETARY
+#usr/lib/locale/gez_ER/LC_NAME
+#usr/lib/locale/gez_ER/LC_NUMERIC
+#usr/lib/locale/gez_ER/LC_PAPER
+#usr/lib/locale/gez_ER/LC_TELEPHONE
+#usr/lib/locale/gez_ER/LC_TIME
+#usr/lib/locale/gez_ER@abegede
+#usr/lib/locale/gez_ER@abegede/LC_ADDRESS
+#usr/lib/locale/gez_ER@abegede/LC_COLLATE
+#usr/lib/locale/gez_ER@abegede/LC_CTYPE
+#usr/lib/locale/gez_ER@abegede/LC_IDENTIFICATION
+#usr/lib/locale/gez_ER@abegede/LC_MEASUREMENT
+#usr/lib/locale/gez_ER@abegede/LC_MESSAGES
+#usr/lib/locale/gez_ER@abegede/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gez_ER@abegede/LC_MONETARY
+#usr/lib/locale/gez_ER@abegede/LC_NAME
+#usr/lib/locale/gez_ER@abegede/LC_NUMERIC
+#usr/lib/locale/gez_ER@abegede/LC_PAPER
+#usr/lib/locale/gez_ER@abegede/LC_TELEPHONE
+#usr/lib/locale/gez_ER@abegede/LC_TIME
+#usr/lib/locale/gez_ET
+#usr/lib/locale/gez_ET/LC_ADDRESS
+#usr/lib/locale/gez_ET/LC_COLLATE
+#usr/lib/locale/gez_ET/LC_CTYPE
+#usr/lib/locale/gez_ET/LC_IDENTIFICATION
+#usr/lib/locale/gez_ET/LC_MEASUREMENT
+#usr/lib/locale/gez_ET/LC_MESSAGES
+#usr/lib/locale/gez_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gez_ET/LC_MONETARY
+#usr/lib/locale/gez_ET/LC_NAME
+#usr/lib/locale/gez_ET/LC_NUMERIC
+#usr/lib/locale/gez_ET/LC_PAPER
+#usr/lib/locale/gez_ET/LC_TELEPHONE
+#usr/lib/locale/gez_ET/LC_TIME
+#usr/lib/locale/gez_ET@abegede
+#usr/lib/locale/gez_ET@abegede/LC_ADDRESS
+#usr/lib/locale/gez_ET@abegede/LC_COLLATE
+#usr/lib/locale/gez_ET@abegede/LC_CTYPE
+#usr/lib/locale/gez_ET@abegede/LC_IDENTIFICATION
+#usr/lib/locale/gez_ET@abegede/LC_MEASUREMENT
+#usr/lib/locale/gez_ET@abegede/LC_MESSAGES
+#usr/lib/locale/gez_ET@abegede/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gez_ET@abegede/LC_MONETARY
+#usr/lib/locale/gez_ET@abegede/LC_NAME
+#usr/lib/locale/gez_ET@abegede/LC_NUMERIC
+#usr/lib/locale/gez_ET@abegede/LC_PAPER
+#usr/lib/locale/gez_ET@abegede/LC_TELEPHONE
+#usr/lib/locale/gez_ET@abegede/LC_TIME
+#usr/lib/locale/gl_ES
+#usr/lib/locale/gl_ES.utf8
+#usr/lib/locale/gl_ES.utf8/LC_ADDRESS
+#usr/lib/locale/gl_ES.utf8/LC_COLLATE
+#usr/lib/locale/gl_ES.utf8/LC_CTYPE
+#usr/lib/locale/gl_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/gl_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/gl_ES.utf8/LC_MESSAGES
+#usr/lib/locale/gl_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gl_ES.utf8/LC_MONETARY
+#usr/lib/locale/gl_ES.utf8/LC_NAME
+#usr/lib/locale/gl_ES.utf8/LC_NUMERIC
+#usr/lib/locale/gl_ES.utf8/LC_PAPER
+#usr/lib/locale/gl_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/gl_ES.utf8/LC_TIME
+#usr/lib/locale/gl_ES/LC_ADDRESS
+#usr/lib/locale/gl_ES/LC_COLLATE
+#usr/lib/locale/gl_ES/LC_CTYPE
+#usr/lib/locale/gl_ES/LC_IDENTIFICATION
+#usr/lib/locale/gl_ES/LC_MEASUREMENT
+#usr/lib/locale/gl_ES/LC_MESSAGES
+#usr/lib/locale/gl_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gl_ES/LC_MONETARY
+#usr/lib/locale/gl_ES/LC_NAME
+#usr/lib/locale/gl_ES/LC_NUMERIC
+#usr/lib/locale/gl_ES/LC_PAPER
+#usr/lib/locale/gl_ES/LC_TELEPHONE
+#usr/lib/locale/gl_ES/LC_TIME
+#usr/lib/locale/gl_ES@euro
+#usr/lib/locale/gl_ES@euro/LC_ADDRESS
+#usr/lib/locale/gl_ES@euro/LC_COLLATE
+#usr/lib/locale/gl_ES@euro/LC_CTYPE
+#usr/lib/locale/gl_ES@euro/LC_IDENTIFICATION
+#usr/lib/locale/gl_ES@euro/LC_MEASUREMENT
+#usr/lib/locale/gl_ES@euro/LC_MESSAGES
+#usr/lib/locale/gl_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gl_ES@euro/LC_MONETARY
+#usr/lib/locale/gl_ES@euro/LC_NAME
+#usr/lib/locale/gl_ES@euro/LC_NUMERIC
+#usr/lib/locale/gl_ES@euro/LC_PAPER
+#usr/lib/locale/gl_ES@euro/LC_TELEPHONE
+#usr/lib/locale/gl_ES@euro/LC_TIME
+#usr/lib/locale/gu_IN
+#usr/lib/locale/gu_IN/LC_ADDRESS
+#usr/lib/locale/gu_IN/LC_COLLATE
+#usr/lib/locale/gu_IN/LC_CTYPE
+#usr/lib/locale/gu_IN/LC_IDENTIFICATION
+#usr/lib/locale/gu_IN/LC_MEASUREMENT
+#usr/lib/locale/gu_IN/LC_MESSAGES
+#usr/lib/locale/gu_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gu_IN/LC_MONETARY
+#usr/lib/locale/gu_IN/LC_NAME
+#usr/lib/locale/gu_IN/LC_NUMERIC
+#usr/lib/locale/gu_IN/LC_PAPER
+#usr/lib/locale/gu_IN/LC_TELEPHONE
+#usr/lib/locale/gu_IN/LC_TIME
+#usr/lib/locale/gv_GB
+#usr/lib/locale/gv_GB.utf8
+#usr/lib/locale/gv_GB.utf8/LC_ADDRESS
+#usr/lib/locale/gv_GB.utf8/LC_COLLATE
+#usr/lib/locale/gv_GB.utf8/LC_CTYPE
+#usr/lib/locale/gv_GB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/gv_GB.utf8/LC_MEASUREMENT
+#usr/lib/locale/gv_GB.utf8/LC_MESSAGES
+#usr/lib/locale/gv_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gv_GB.utf8/LC_MONETARY
+#usr/lib/locale/gv_GB.utf8/LC_NAME
+#usr/lib/locale/gv_GB.utf8/LC_NUMERIC
+#usr/lib/locale/gv_GB.utf8/LC_PAPER
+#usr/lib/locale/gv_GB.utf8/LC_TELEPHONE
+#usr/lib/locale/gv_GB.utf8/LC_TIME
+#usr/lib/locale/gv_GB/LC_ADDRESS
+#usr/lib/locale/gv_GB/LC_COLLATE
+#usr/lib/locale/gv_GB/LC_CTYPE
+#usr/lib/locale/gv_GB/LC_IDENTIFICATION
+#usr/lib/locale/gv_GB/LC_MEASUREMENT
+#usr/lib/locale/gv_GB/LC_MESSAGES
+#usr/lib/locale/gv_GB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gv_GB/LC_MONETARY
+#usr/lib/locale/gv_GB/LC_NAME
+#usr/lib/locale/gv_GB/LC_NUMERIC
+#usr/lib/locale/gv_GB/LC_PAPER
+#usr/lib/locale/gv_GB/LC_TELEPHONE
+#usr/lib/locale/gv_GB/LC_TIME
+#usr/lib/locale/ha_NG
+#usr/lib/locale/ha_NG/LC_ADDRESS
+#usr/lib/locale/ha_NG/LC_COLLATE
+#usr/lib/locale/ha_NG/LC_CTYPE
+#usr/lib/locale/ha_NG/LC_IDENTIFICATION
+#usr/lib/locale/ha_NG/LC_MEASUREMENT
+#usr/lib/locale/ha_NG/LC_MESSAGES
+#usr/lib/locale/ha_NG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ha_NG/LC_MONETARY
+#usr/lib/locale/ha_NG/LC_NAME
+#usr/lib/locale/ha_NG/LC_NUMERIC
+#usr/lib/locale/ha_NG/LC_PAPER
+#usr/lib/locale/ha_NG/LC_TELEPHONE
+#usr/lib/locale/ha_NG/LC_TIME
+#usr/lib/locale/he_IL
+#usr/lib/locale/he_IL.utf8
+#usr/lib/locale/he_IL.utf8/LC_ADDRESS
+#usr/lib/locale/he_IL.utf8/LC_COLLATE
+#usr/lib/locale/he_IL.utf8/LC_CTYPE
+#usr/lib/locale/he_IL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/he_IL.utf8/LC_MEASUREMENT
+#usr/lib/locale/he_IL.utf8/LC_MESSAGES
+#usr/lib/locale/he_IL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/he_IL.utf8/LC_MONETARY
+#usr/lib/locale/he_IL.utf8/LC_NAME
+#usr/lib/locale/he_IL.utf8/LC_NUMERIC
+#usr/lib/locale/he_IL.utf8/LC_PAPER
+#usr/lib/locale/he_IL.utf8/LC_TELEPHONE
+#usr/lib/locale/he_IL.utf8/LC_TIME
+#usr/lib/locale/he_IL/LC_ADDRESS
+#usr/lib/locale/he_IL/LC_COLLATE
+#usr/lib/locale/he_IL/LC_CTYPE
+#usr/lib/locale/he_IL/LC_IDENTIFICATION
+#usr/lib/locale/he_IL/LC_MEASUREMENT
+#usr/lib/locale/he_IL/LC_MESSAGES
+#usr/lib/locale/he_IL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/he_IL/LC_MONETARY
+#usr/lib/locale/he_IL/LC_NAME
+#usr/lib/locale/he_IL/LC_NUMERIC
+#usr/lib/locale/he_IL/LC_PAPER
+#usr/lib/locale/he_IL/LC_TELEPHONE
+#usr/lib/locale/he_IL/LC_TIME
+#usr/lib/locale/hi_IN
+#usr/lib/locale/hi_IN/LC_ADDRESS
+#usr/lib/locale/hi_IN/LC_COLLATE
+#usr/lib/locale/hi_IN/LC_CTYPE
+#usr/lib/locale/hi_IN/LC_IDENTIFICATION
+#usr/lib/locale/hi_IN/LC_MEASUREMENT
+#usr/lib/locale/hi_IN/LC_MESSAGES
+#usr/lib/locale/hi_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hi_IN/LC_MONETARY
+#usr/lib/locale/hi_IN/LC_NAME
+#usr/lib/locale/hi_IN/LC_NUMERIC
+#usr/lib/locale/hi_IN/LC_PAPER
+#usr/lib/locale/hi_IN/LC_TELEPHONE
+#usr/lib/locale/hi_IN/LC_TIME
+#usr/lib/locale/hne_IN
+#usr/lib/locale/hne_IN/LC_ADDRESS
+#usr/lib/locale/hne_IN/LC_COLLATE
+#usr/lib/locale/hne_IN/LC_CTYPE
+#usr/lib/locale/hne_IN/LC_IDENTIFICATION
+#usr/lib/locale/hne_IN/LC_MEASUREMENT
+#usr/lib/locale/hne_IN/LC_MESSAGES
+#usr/lib/locale/hne_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hne_IN/LC_MONETARY
+#usr/lib/locale/hne_IN/LC_NAME
+#usr/lib/locale/hne_IN/LC_NUMERIC
+#usr/lib/locale/hne_IN/LC_PAPER
+#usr/lib/locale/hne_IN/LC_TELEPHONE
+#usr/lib/locale/hne_IN/LC_TIME
+#usr/lib/locale/hr_HR
+#usr/lib/locale/hr_HR.utf8
+#usr/lib/locale/hr_HR.utf8/LC_ADDRESS
+#usr/lib/locale/hr_HR.utf8/LC_COLLATE
+#usr/lib/locale/hr_HR.utf8/LC_CTYPE
+#usr/lib/locale/hr_HR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/hr_HR.utf8/LC_MEASUREMENT
+#usr/lib/locale/hr_HR.utf8/LC_MESSAGES
+#usr/lib/locale/hr_HR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hr_HR.utf8/LC_MONETARY
+#usr/lib/locale/hr_HR.utf8/LC_NAME
+#usr/lib/locale/hr_HR.utf8/LC_NUMERIC
+#usr/lib/locale/hr_HR.utf8/LC_PAPER
+#usr/lib/locale/hr_HR.utf8/LC_TELEPHONE
+#usr/lib/locale/hr_HR.utf8/LC_TIME
+#usr/lib/locale/hr_HR/LC_ADDRESS
+#usr/lib/locale/hr_HR/LC_COLLATE
+#usr/lib/locale/hr_HR/LC_CTYPE
+#usr/lib/locale/hr_HR/LC_IDENTIFICATION
+#usr/lib/locale/hr_HR/LC_MEASUREMENT
+#usr/lib/locale/hr_HR/LC_MESSAGES
+#usr/lib/locale/hr_HR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hr_HR/LC_MONETARY
+#usr/lib/locale/hr_HR/LC_NAME
+#usr/lib/locale/hr_HR/LC_NUMERIC
+#usr/lib/locale/hr_HR/LC_PAPER
+#usr/lib/locale/hr_HR/LC_TELEPHONE
+#usr/lib/locale/hr_HR/LC_TIME
+#usr/lib/locale/hsb_DE
+#usr/lib/locale/hsb_DE.utf8
+#usr/lib/locale/hsb_DE.utf8/LC_ADDRESS
+#usr/lib/locale/hsb_DE.utf8/LC_COLLATE
+#usr/lib/locale/hsb_DE.utf8/LC_CTYPE
+#usr/lib/locale/hsb_DE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/hsb_DE.utf8/LC_MEASUREMENT
+#usr/lib/locale/hsb_DE.utf8/LC_MESSAGES
+#usr/lib/locale/hsb_DE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hsb_DE.utf8/LC_MONETARY
+#usr/lib/locale/hsb_DE.utf8/LC_NAME
+#usr/lib/locale/hsb_DE.utf8/LC_NUMERIC
+#usr/lib/locale/hsb_DE.utf8/LC_PAPER
+#usr/lib/locale/hsb_DE.utf8/LC_TELEPHONE
+#usr/lib/locale/hsb_DE.utf8/LC_TIME
+#usr/lib/locale/hsb_DE/LC_ADDRESS
+#usr/lib/locale/hsb_DE/LC_COLLATE
+#usr/lib/locale/hsb_DE/LC_CTYPE
+#usr/lib/locale/hsb_DE/LC_IDENTIFICATION
+#usr/lib/locale/hsb_DE/LC_MEASUREMENT
+#usr/lib/locale/hsb_DE/LC_MESSAGES
+#usr/lib/locale/hsb_DE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hsb_DE/LC_MONETARY
+#usr/lib/locale/hsb_DE/LC_NAME
+#usr/lib/locale/hsb_DE/LC_NUMERIC
+#usr/lib/locale/hsb_DE/LC_PAPER
+#usr/lib/locale/hsb_DE/LC_TELEPHONE
+#usr/lib/locale/hsb_DE/LC_TIME
+#usr/lib/locale/ht_HT
+#usr/lib/locale/ht_HT/LC_ADDRESS
+#usr/lib/locale/ht_HT/LC_COLLATE
+#usr/lib/locale/ht_HT/LC_CTYPE
+#usr/lib/locale/ht_HT/LC_IDENTIFICATION
+#usr/lib/locale/ht_HT/LC_MEASUREMENT
+#usr/lib/locale/ht_HT/LC_MESSAGES
+#usr/lib/locale/ht_HT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ht_HT/LC_MONETARY
+#usr/lib/locale/ht_HT/LC_NAME
+#usr/lib/locale/ht_HT/LC_NUMERIC
+#usr/lib/locale/ht_HT/LC_PAPER
+#usr/lib/locale/ht_HT/LC_TELEPHONE
+#usr/lib/locale/ht_HT/LC_TIME
+#usr/lib/locale/hu_HU
+#usr/lib/locale/hu_HU.utf8
+#usr/lib/locale/hu_HU.utf8/LC_ADDRESS
+#usr/lib/locale/hu_HU.utf8/LC_COLLATE
+#usr/lib/locale/hu_HU.utf8/LC_CTYPE
+#usr/lib/locale/hu_HU.utf8/LC_IDENTIFICATION
+#usr/lib/locale/hu_HU.utf8/LC_MEASUREMENT
+#usr/lib/locale/hu_HU.utf8/LC_MESSAGES
+#usr/lib/locale/hu_HU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hu_HU.utf8/LC_MONETARY
+#usr/lib/locale/hu_HU.utf8/LC_NAME
+#usr/lib/locale/hu_HU.utf8/LC_NUMERIC
+#usr/lib/locale/hu_HU.utf8/LC_PAPER
+#usr/lib/locale/hu_HU.utf8/LC_TELEPHONE
+#usr/lib/locale/hu_HU.utf8/LC_TIME
+#usr/lib/locale/hu_HU/LC_ADDRESS
+#usr/lib/locale/hu_HU/LC_COLLATE
+#usr/lib/locale/hu_HU/LC_CTYPE
+#usr/lib/locale/hu_HU/LC_IDENTIFICATION
+#usr/lib/locale/hu_HU/LC_MEASUREMENT
+#usr/lib/locale/hu_HU/LC_MESSAGES
+#usr/lib/locale/hu_HU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hu_HU/LC_MONETARY
+#usr/lib/locale/hu_HU/LC_NAME
+#usr/lib/locale/hu_HU/LC_NUMERIC
+#usr/lib/locale/hu_HU/LC_PAPER
+#usr/lib/locale/hu_HU/LC_TELEPHONE
+#usr/lib/locale/hu_HU/LC_TIME
+#usr/lib/locale/hy_AM
+#usr/lib/locale/hy_AM.armscii8
+#usr/lib/locale/hy_AM.armscii8/LC_ADDRESS
+#usr/lib/locale/hy_AM.armscii8/LC_COLLATE
+#usr/lib/locale/hy_AM.armscii8/LC_CTYPE
+#usr/lib/locale/hy_AM.armscii8/LC_IDENTIFICATION
+#usr/lib/locale/hy_AM.armscii8/LC_MEASUREMENT
+#usr/lib/locale/hy_AM.armscii8/LC_MESSAGES
+#usr/lib/locale/hy_AM.armscii8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hy_AM.armscii8/LC_MONETARY
+#usr/lib/locale/hy_AM.armscii8/LC_NAME
+#usr/lib/locale/hy_AM.armscii8/LC_NUMERIC
+#usr/lib/locale/hy_AM.armscii8/LC_PAPER
+#usr/lib/locale/hy_AM.armscii8/LC_TELEPHONE
+#usr/lib/locale/hy_AM.armscii8/LC_TIME
+#usr/lib/locale/hy_AM/LC_ADDRESS
+#usr/lib/locale/hy_AM/LC_COLLATE
+#usr/lib/locale/hy_AM/LC_CTYPE
+#usr/lib/locale/hy_AM/LC_IDENTIFICATION
+#usr/lib/locale/hy_AM/LC_MEASUREMENT
+#usr/lib/locale/hy_AM/LC_MESSAGES
+#usr/lib/locale/hy_AM/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hy_AM/LC_MONETARY
+#usr/lib/locale/hy_AM/LC_NAME
+#usr/lib/locale/hy_AM/LC_NUMERIC
+#usr/lib/locale/hy_AM/LC_PAPER
+#usr/lib/locale/hy_AM/LC_TELEPHONE
+#usr/lib/locale/hy_AM/LC_TIME
+#usr/lib/locale/id_ID
+#usr/lib/locale/id_ID.utf8
+#usr/lib/locale/id_ID.utf8/LC_ADDRESS
+#usr/lib/locale/id_ID.utf8/LC_COLLATE
+#usr/lib/locale/id_ID.utf8/LC_CTYPE
+#usr/lib/locale/id_ID.utf8/LC_IDENTIFICATION
+#usr/lib/locale/id_ID.utf8/LC_MEASUREMENT
+#usr/lib/locale/id_ID.utf8/LC_MESSAGES
+#usr/lib/locale/id_ID.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/id_ID.utf8/LC_MONETARY
+#usr/lib/locale/id_ID.utf8/LC_NAME
+#usr/lib/locale/id_ID.utf8/LC_NUMERIC
+#usr/lib/locale/id_ID.utf8/LC_PAPER
+#usr/lib/locale/id_ID.utf8/LC_TELEPHONE
+#usr/lib/locale/id_ID.utf8/LC_TIME
+#usr/lib/locale/id_ID/LC_ADDRESS
+#usr/lib/locale/id_ID/LC_COLLATE
+#usr/lib/locale/id_ID/LC_CTYPE
+#usr/lib/locale/id_ID/LC_IDENTIFICATION
+#usr/lib/locale/id_ID/LC_MEASUREMENT
+#usr/lib/locale/id_ID/LC_MESSAGES
+#usr/lib/locale/id_ID/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/id_ID/LC_MONETARY
+#usr/lib/locale/id_ID/LC_NAME
+#usr/lib/locale/id_ID/LC_NUMERIC
+#usr/lib/locale/id_ID/LC_PAPER
+#usr/lib/locale/id_ID/LC_TELEPHONE
+#usr/lib/locale/id_ID/LC_TIME
+#usr/lib/locale/ig_NG
+#usr/lib/locale/ig_NG/LC_ADDRESS
+#usr/lib/locale/ig_NG/LC_COLLATE
+#usr/lib/locale/ig_NG/LC_CTYPE
+#usr/lib/locale/ig_NG/LC_IDENTIFICATION
+#usr/lib/locale/ig_NG/LC_MEASUREMENT
+#usr/lib/locale/ig_NG/LC_MESSAGES
+#usr/lib/locale/ig_NG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ig_NG/LC_MONETARY
+#usr/lib/locale/ig_NG/LC_NAME
+#usr/lib/locale/ig_NG/LC_NUMERIC
+#usr/lib/locale/ig_NG/LC_PAPER
+#usr/lib/locale/ig_NG/LC_TELEPHONE
+#usr/lib/locale/ig_NG/LC_TIME
+#usr/lib/locale/ik_CA
+#usr/lib/locale/ik_CA/LC_ADDRESS
+#usr/lib/locale/ik_CA/LC_COLLATE
+#usr/lib/locale/ik_CA/LC_CTYPE
+#usr/lib/locale/ik_CA/LC_IDENTIFICATION
+#usr/lib/locale/ik_CA/LC_MEASUREMENT
+#usr/lib/locale/ik_CA/LC_MESSAGES
+#usr/lib/locale/ik_CA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ik_CA/LC_MONETARY
+#usr/lib/locale/ik_CA/LC_NAME
+#usr/lib/locale/ik_CA/LC_NUMERIC
+#usr/lib/locale/ik_CA/LC_PAPER
+#usr/lib/locale/ik_CA/LC_TELEPHONE
+#usr/lib/locale/ik_CA/LC_TIME
+#usr/lib/locale/is_IS
+#usr/lib/locale/is_IS.utf8
+#usr/lib/locale/is_IS.utf8/LC_ADDRESS
+#usr/lib/locale/is_IS.utf8/LC_COLLATE
+#usr/lib/locale/is_IS.utf8/LC_CTYPE
+#usr/lib/locale/is_IS.utf8/LC_IDENTIFICATION
+#usr/lib/locale/is_IS.utf8/LC_MEASUREMENT
+#usr/lib/locale/is_IS.utf8/LC_MESSAGES
+#usr/lib/locale/is_IS.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/is_IS.utf8/LC_MONETARY
+#usr/lib/locale/is_IS.utf8/LC_NAME
+#usr/lib/locale/is_IS.utf8/LC_NUMERIC
+#usr/lib/locale/is_IS.utf8/LC_PAPER
+#usr/lib/locale/is_IS.utf8/LC_TELEPHONE
+#usr/lib/locale/is_IS.utf8/LC_TIME
+#usr/lib/locale/is_IS/LC_ADDRESS
+#usr/lib/locale/is_IS/LC_COLLATE
+#usr/lib/locale/is_IS/LC_CTYPE
+#usr/lib/locale/is_IS/LC_IDENTIFICATION
+#usr/lib/locale/is_IS/LC_MEASUREMENT
+#usr/lib/locale/is_IS/LC_MESSAGES
+#usr/lib/locale/is_IS/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/is_IS/LC_MONETARY
+#usr/lib/locale/is_IS/LC_NAME
+#usr/lib/locale/is_IS/LC_NUMERIC
+#usr/lib/locale/is_IS/LC_PAPER
+#usr/lib/locale/is_IS/LC_TELEPHONE
+#usr/lib/locale/is_IS/LC_TIME
+#usr/lib/locale/it_CH
+#usr/lib/locale/it_CH.utf8
+#usr/lib/locale/it_CH.utf8/LC_ADDRESS
+#usr/lib/locale/it_CH.utf8/LC_COLLATE
+#usr/lib/locale/it_CH.utf8/LC_CTYPE
+#usr/lib/locale/it_CH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/it_CH.utf8/LC_MEASUREMENT
+#usr/lib/locale/it_CH.utf8/LC_MESSAGES
+#usr/lib/locale/it_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/it_CH.utf8/LC_MONETARY
+#usr/lib/locale/it_CH.utf8/LC_NAME
+#usr/lib/locale/it_CH.utf8/LC_NUMERIC
+#usr/lib/locale/it_CH.utf8/LC_PAPER
+#usr/lib/locale/it_CH.utf8/LC_TELEPHONE
+#usr/lib/locale/it_CH.utf8/LC_TIME
+#usr/lib/locale/it_CH/LC_ADDRESS
+#usr/lib/locale/it_CH/LC_COLLATE
+#usr/lib/locale/it_CH/LC_CTYPE
+#usr/lib/locale/it_CH/LC_IDENTIFICATION
+#usr/lib/locale/it_CH/LC_MEASUREMENT
+#usr/lib/locale/it_CH/LC_MESSAGES
+#usr/lib/locale/it_CH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/it_CH/LC_MONETARY
+#usr/lib/locale/it_CH/LC_NAME
+#usr/lib/locale/it_CH/LC_NUMERIC
+#usr/lib/locale/it_CH/LC_PAPER
+#usr/lib/locale/it_CH/LC_TELEPHONE
+#usr/lib/locale/it_CH/LC_TIME
+#usr/lib/locale/it_IT
+#usr/lib/locale/it_IT.utf8
+#usr/lib/locale/it_IT.utf8/LC_ADDRESS
+#usr/lib/locale/it_IT.utf8/LC_COLLATE
+#usr/lib/locale/it_IT.utf8/LC_CTYPE
+#usr/lib/locale/it_IT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/it_IT.utf8/LC_MEASUREMENT
+#usr/lib/locale/it_IT.utf8/LC_MESSAGES
+#usr/lib/locale/it_IT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/it_IT.utf8/LC_MONETARY
+#usr/lib/locale/it_IT.utf8/LC_NAME
+#usr/lib/locale/it_IT.utf8/LC_NUMERIC
+#usr/lib/locale/it_IT.utf8/LC_PAPER
+#usr/lib/locale/it_IT.utf8/LC_TELEPHONE
+#usr/lib/locale/it_IT.utf8/LC_TIME
+#usr/lib/locale/it_IT/LC_ADDRESS
+#usr/lib/locale/it_IT/LC_COLLATE
+#usr/lib/locale/it_IT/LC_CTYPE
+#usr/lib/locale/it_IT/LC_IDENTIFICATION
+#usr/lib/locale/it_IT/LC_MEASUREMENT
+#usr/lib/locale/it_IT/LC_MESSAGES
+#usr/lib/locale/it_IT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/it_IT/LC_MONETARY
+#usr/lib/locale/it_IT/LC_NAME
+#usr/lib/locale/it_IT/LC_NUMERIC
+#usr/lib/locale/it_IT/LC_PAPER
+#usr/lib/locale/it_IT/LC_TELEPHONE
+#usr/lib/locale/it_IT/LC_TIME
+#usr/lib/locale/it_IT@euro
+#usr/lib/locale/it_IT@euro/LC_ADDRESS
+#usr/lib/locale/it_IT@euro/LC_COLLATE
+#usr/lib/locale/it_IT@euro/LC_CTYPE
+#usr/lib/locale/it_IT@euro/LC_IDENTIFICATION
+#usr/lib/locale/it_IT@euro/LC_MEASUREMENT
+#usr/lib/locale/it_IT@euro/LC_MESSAGES
+#usr/lib/locale/it_IT@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/it_IT@euro/LC_MONETARY
+#usr/lib/locale/it_IT@euro/LC_NAME
+#usr/lib/locale/it_IT@euro/LC_NUMERIC
+#usr/lib/locale/it_IT@euro/LC_PAPER
+#usr/lib/locale/it_IT@euro/LC_TELEPHONE
+#usr/lib/locale/it_IT@euro/LC_TIME
+#usr/lib/locale/iu_CA
+#usr/lib/locale/iu_CA/LC_ADDRESS
+#usr/lib/locale/iu_CA/LC_COLLATE
+#usr/lib/locale/iu_CA/LC_CTYPE
+#usr/lib/locale/iu_CA/LC_IDENTIFICATION
+#usr/lib/locale/iu_CA/LC_MEASUREMENT
+#usr/lib/locale/iu_CA/LC_MESSAGES
+#usr/lib/locale/iu_CA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/iu_CA/LC_MONETARY
+#usr/lib/locale/iu_CA/LC_NAME
+#usr/lib/locale/iu_CA/LC_NUMERIC
+#usr/lib/locale/iu_CA/LC_PAPER
+#usr/lib/locale/iu_CA/LC_TELEPHONE
+#usr/lib/locale/iu_CA/LC_TIME
+#usr/lib/locale/iw_IL
+#usr/lib/locale/iw_IL.utf8
+#usr/lib/locale/iw_IL.utf8/LC_ADDRESS
+#usr/lib/locale/iw_IL.utf8/LC_COLLATE
+#usr/lib/locale/iw_IL.utf8/LC_CTYPE
+#usr/lib/locale/iw_IL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/iw_IL.utf8/LC_MEASUREMENT
+#usr/lib/locale/iw_IL.utf8/LC_MESSAGES
+#usr/lib/locale/iw_IL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/iw_IL.utf8/LC_MONETARY
+#usr/lib/locale/iw_IL.utf8/LC_NAME
+#usr/lib/locale/iw_IL.utf8/LC_NUMERIC
+#usr/lib/locale/iw_IL.utf8/LC_PAPER
+#usr/lib/locale/iw_IL.utf8/LC_TELEPHONE
+#usr/lib/locale/iw_IL.utf8/LC_TIME
+#usr/lib/locale/iw_IL/LC_ADDRESS
+#usr/lib/locale/iw_IL/LC_COLLATE
+#usr/lib/locale/iw_IL/LC_CTYPE
+#usr/lib/locale/iw_IL/LC_IDENTIFICATION
+#usr/lib/locale/iw_IL/LC_MEASUREMENT
+#usr/lib/locale/iw_IL/LC_MESSAGES
+#usr/lib/locale/iw_IL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/iw_IL/LC_MONETARY
+#usr/lib/locale/iw_IL/LC_NAME
+#usr/lib/locale/iw_IL/LC_NUMERIC
+#usr/lib/locale/iw_IL/LC_PAPER
+#usr/lib/locale/iw_IL/LC_TELEPHONE
+#usr/lib/locale/iw_IL/LC_TIME
+#usr/lib/locale/ja_JP.eucjp
+#usr/lib/locale/ja_JP.eucjp/LC_ADDRESS
+#usr/lib/locale/ja_JP.eucjp/LC_COLLATE
+#usr/lib/locale/ja_JP.eucjp/LC_CTYPE
+#usr/lib/locale/ja_JP.eucjp/LC_IDENTIFICATION
+#usr/lib/locale/ja_JP.eucjp/LC_MEASUREMENT
+#usr/lib/locale/ja_JP.eucjp/LC_MESSAGES
+#usr/lib/locale/ja_JP.eucjp/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ja_JP.eucjp/LC_MONETARY
+#usr/lib/locale/ja_JP.eucjp/LC_NAME
+#usr/lib/locale/ja_JP.eucjp/LC_NUMERIC
+#usr/lib/locale/ja_JP.eucjp/LC_PAPER
+#usr/lib/locale/ja_JP.eucjp/LC_TELEPHONE
+#usr/lib/locale/ja_JP.eucjp/LC_TIME
+#usr/lib/locale/ja_JP.utf8
+#usr/lib/locale/ja_JP.utf8/LC_ADDRESS
+#usr/lib/locale/ja_JP.utf8/LC_COLLATE
+#usr/lib/locale/ja_JP.utf8/LC_CTYPE
+#usr/lib/locale/ja_JP.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ja_JP.utf8/LC_MEASUREMENT
+#usr/lib/locale/ja_JP.utf8/LC_MESSAGES
+#usr/lib/locale/ja_JP.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ja_JP.utf8/LC_MONETARY
+#usr/lib/locale/ja_JP.utf8/LC_NAME
+#usr/lib/locale/ja_JP.utf8/LC_NUMERIC
+#usr/lib/locale/ja_JP.utf8/LC_PAPER
+#usr/lib/locale/ja_JP.utf8/LC_TELEPHONE
+#usr/lib/locale/ja_JP.utf8/LC_TIME
+#usr/lib/locale/ka_GE
+#usr/lib/locale/ka_GE.utf8
+#usr/lib/locale/ka_GE.utf8/LC_ADDRESS
+#usr/lib/locale/ka_GE.utf8/LC_COLLATE
+#usr/lib/locale/ka_GE.utf8/LC_CTYPE
+#usr/lib/locale/ka_GE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ka_GE.utf8/LC_MEASUREMENT
+#usr/lib/locale/ka_GE.utf8/LC_MESSAGES
+#usr/lib/locale/ka_GE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ka_GE.utf8/LC_MONETARY
+#usr/lib/locale/ka_GE.utf8/LC_NAME
+#usr/lib/locale/ka_GE.utf8/LC_NUMERIC
+#usr/lib/locale/ka_GE.utf8/LC_PAPER
+#usr/lib/locale/ka_GE.utf8/LC_TELEPHONE
+#usr/lib/locale/ka_GE.utf8/LC_TIME
+#usr/lib/locale/ka_GE/LC_ADDRESS
+#usr/lib/locale/ka_GE/LC_COLLATE
+#usr/lib/locale/ka_GE/LC_CTYPE
+#usr/lib/locale/ka_GE/LC_IDENTIFICATION
+#usr/lib/locale/ka_GE/LC_MEASUREMENT
+#usr/lib/locale/ka_GE/LC_MESSAGES
+#usr/lib/locale/ka_GE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ka_GE/LC_MONETARY
+#usr/lib/locale/ka_GE/LC_NAME
+#usr/lib/locale/ka_GE/LC_NUMERIC
+#usr/lib/locale/ka_GE/LC_PAPER
+#usr/lib/locale/ka_GE/LC_TELEPHONE
+#usr/lib/locale/ka_GE/LC_TIME
+#usr/lib/locale/kk_KZ
+#usr/lib/locale/kk_KZ.utf8
+#usr/lib/locale/kk_KZ.utf8/LC_ADDRESS
+#usr/lib/locale/kk_KZ.utf8/LC_COLLATE
+#usr/lib/locale/kk_KZ.utf8/LC_CTYPE
+#usr/lib/locale/kk_KZ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/kk_KZ.utf8/LC_MEASUREMENT
+#usr/lib/locale/kk_KZ.utf8/LC_MESSAGES
+#usr/lib/locale/kk_KZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kk_KZ.utf8/LC_MONETARY
+#usr/lib/locale/kk_KZ.utf8/LC_NAME
+#usr/lib/locale/kk_KZ.utf8/LC_NUMERIC
+#usr/lib/locale/kk_KZ.utf8/LC_PAPER
+#usr/lib/locale/kk_KZ.utf8/LC_TELEPHONE
+#usr/lib/locale/kk_KZ.utf8/LC_TIME
+#usr/lib/locale/kk_KZ/LC_ADDRESS
+#usr/lib/locale/kk_KZ/LC_COLLATE
+#usr/lib/locale/kk_KZ/LC_CTYPE
+#usr/lib/locale/kk_KZ/LC_IDENTIFICATION
+#usr/lib/locale/kk_KZ/LC_MEASUREMENT
+#usr/lib/locale/kk_KZ/LC_MESSAGES
+#usr/lib/locale/kk_KZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kk_KZ/LC_MONETARY
+#usr/lib/locale/kk_KZ/LC_NAME
+#usr/lib/locale/kk_KZ/LC_NUMERIC
+#usr/lib/locale/kk_KZ/LC_PAPER
+#usr/lib/locale/kk_KZ/LC_TELEPHONE
+#usr/lib/locale/kk_KZ/LC_TIME
+#usr/lib/locale/kl_GL
+#usr/lib/locale/kl_GL.utf8
+#usr/lib/locale/kl_GL.utf8/LC_ADDRESS
+#usr/lib/locale/kl_GL.utf8/LC_COLLATE
+#usr/lib/locale/kl_GL.utf8/LC_CTYPE
+#usr/lib/locale/kl_GL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/kl_GL.utf8/LC_MEASUREMENT
+#usr/lib/locale/kl_GL.utf8/LC_MESSAGES
+#usr/lib/locale/kl_GL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kl_GL.utf8/LC_MONETARY
+#usr/lib/locale/kl_GL.utf8/LC_NAME
+#usr/lib/locale/kl_GL.utf8/LC_NUMERIC
+#usr/lib/locale/kl_GL.utf8/LC_PAPER
+#usr/lib/locale/kl_GL.utf8/LC_TELEPHONE
+#usr/lib/locale/kl_GL.utf8/LC_TIME
+#usr/lib/locale/kl_GL/LC_ADDRESS
+#usr/lib/locale/kl_GL/LC_COLLATE
+#usr/lib/locale/kl_GL/LC_CTYPE
+#usr/lib/locale/kl_GL/LC_IDENTIFICATION
+#usr/lib/locale/kl_GL/LC_MEASUREMENT
+#usr/lib/locale/kl_GL/LC_MESSAGES
+#usr/lib/locale/kl_GL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kl_GL/LC_MONETARY
+#usr/lib/locale/kl_GL/LC_NAME
+#usr/lib/locale/kl_GL/LC_NUMERIC
+#usr/lib/locale/kl_GL/LC_PAPER
+#usr/lib/locale/kl_GL/LC_TELEPHONE
+#usr/lib/locale/kl_GL/LC_TIME
+#usr/lib/locale/km_KH
+#usr/lib/locale/km_KH/LC_ADDRESS
+#usr/lib/locale/km_KH/LC_COLLATE
+#usr/lib/locale/km_KH/LC_CTYPE
+#usr/lib/locale/km_KH/LC_IDENTIFICATION
+#usr/lib/locale/km_KH/LC_MEASUREMENT
+#usr/lib/locale/km_KH/LC_MESSAGES
+#usr/lib/locale/km_KH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/km_KH/LC_MONETARY
+#usr/lib/locale/km_KH/LC_NAME
+#usr/lib/locale/km_KH/LC_NUMERIC
+#usr/lib/locale/km_KH/LC_PAPER
+#usr/lib/locale/km_KH/LC_TELEPHONE
+#usr/lib/locale/km_KH/LC_TIME
+#usr/lib/locale/kn_IN
+#usr/lib/locale/kn_IN/LC_ADDRESS
+#usr/lib/locale/kn_IN/LC_COLLATE
+#usr/lib/locale/kn_IN/LC_CTYPE
+#usr/lib/locale/kn_IN/LC_IDENTIFICATION
+#usr/lib/locale/kn_IN/LC_MEASUREMENT
+#usr/lib/locale/kn_IN/LC_MESSAGES
+#usr/lib/locale/kn_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kn_IN/LC_MONETARY
+#usr/lib/locale/kn_IN/LC_NAME
+#usr/lib/locale/kn_IN/LC_NUMERIC
+#usr/lib/locale/kn_IN/LC_PAPER
+#usr/lib/locale/kn_IN/LC_TELEPHONE
+#usr/lib/locale/kn_IN/LC_TIME
+#usr/lib/locale/ko_KR.euckr
+#usr/lib/locale/ko_KR.euckr/LC_ADDRESS
+#usr/lib/locale/ko_KR.euckr/LC_COLLATE
+#usr/lib/locale/ko_KR.euckr/LC_CTYPE
+#usr/lib/locale/ko_KR.euckr/LC_IDENTIFICATION
+#usr/lib/locale/ko_KR.euckr/LC_MEASUREMENT
+#usr/lib/locale/ko_KR.euckr/LC_MESSAGES
+#usr/lib/locale/ko_KR.euckr/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ko_KR.euckr/LC_MONETARY
+#usr/lib/locale/ko_KR.euckr/LC_NAME
+#usr/lib/locale/ko_KR.euckr/LC_NUMERIC
+#usr/lib/locale/ko_KR.euckr/LC_PAPER
+#usr/lib/locale/ko_KR.euckr/LC_TELEPHONE
+#usr/lib/locale/ko_KR.euckr/LC_TIME
+#usr/lib/locale/ko_KR.utf8
+#usr/lib/locale/ko_KR.utf8/LC_ADDRESS
+#usr/lib/locale/ko_KR.utf8/LC_COLLATE
+#usr/lib/locale/ko_KR.utf8/LC_CTYPE
+#usr/lib/locale/ko_KR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ko_KR.utf8/LC_MEASUREMENT
+#usr/lib/locale/ko_KR.utf8/LC_MESSAGES
+#usr/lib/locale/ko_KR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ko_KR.utf8/LC_MONETARY
+#usr/lib/locale/ko_KR.utf8/LC_NAME
+#usr/lib/locale/ko_KR.utf8/LC_NUMERIC
+#usr/lib/locale/ko_KR.utf8/LC_PAPER
+#usr/lib/locale/ko_KR.utf8/LC_TELEPHONE
+#usr/lib/locale/ko_KR.utf8/LC_TIME
+#usr/lib/locale/kok_IN
+#usr/lib/locale/kok_IN/LC_ADDRESS
+#usr/lib/locale/kok_IN/LC_COLLATE
+#usr/lib/locale/kok_IN/LC_CTYPE
+#usr/lib/locale/kok_IN/LC_IDENTIFICATION
+#usr/lib/locale/kok_IN/LC_MEASUREMENT
+#usr/lib/locale/kok_IN/LC_MESSAGES
+#usr/lib/locale/kok_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kok_IN/LC_MONETARY
+#usr/lib/locale/kok_IN/LC_NAME
+#usr/lib/locale/kok_IN/LC_NUMERIC
+#usr/lib/locale/kok_IN/LC_PAPER
+#usr/lib/locale/kok_IN/LC_TELEPHONE
+#usr/lib/locale/kok_IN/LC_TIME
+#usr/lib/locale/ks_IN
+#usr/lib/locale/ks_IN/LC_ADDRESS
+#usr/lib/locale/ks_IN/LC_COLLATE
+#usr/lib/locale/ks_IN/LC_CTYPE
+#usr/lib/locale/ks_IN/LC_IDENTIFICATION
+#usr/lib/locale/ks_IN/LC_MEASUREMENT
+#usr/lib/locale/ks_IN/LC_MESSAGES
+#usr/lib/locale/ks_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ks_IN/LC_MONETARY
+#usr/lib/locale/ks_IN/LC_NAME
+#usr/lib/locale/ks_IN/LC_NUMERIC
+#usr/lib/locale/ks_IN/LC_PAPER
+#usr/lib/locale/ks_IN/LC_TELEPHONE
+#usr/lib/locale/ks_IN/LC_TIME
+#usr/lib/locale/ks_IN@devanagari
+#usr/lib/locale/ks_IN@devanagari/LC_ADDRESS
+#usr/lib/locale/ks_IN@devanagari/LC_COLLATE
+#usr/lib/locale/ks_IN@devanagari/LC_CTYPE
+#usr/lib/locale/ks_IN@devanagari/LC_IDENTIFICATION
+#usr/lib/locale/ks_IN@devanagari/LC_MEASUREMENT
+#usr/lib/locale/ks_IN@devanagari/LC_MESSAGES
+#usr/lib/locale/ks_IN@devanagari/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ks_IN@devanagari/LC_MONETARY
+#usr/lib/locale/ks_IN@devanagari/LC_NAME
+#usr/lib/locale/ks_IN@devanagari/LC_NUMERIC
+#usr/lib/locale/ks_IN@devanagari/LC_PAPER
+#usr/lib/locale/ks_IN@devanagari/LC_TELEPHONE
+#usr/lib/locale/ks_IN@devanagari/LC_TIME
+#usr/lib/locale/ku_TR
+#usr/lib/locale/ku_TR.utf8
+#usr/lib/locale/ku_TR.utf8/LC_ADDRESS
+#usr/lib/locale/ku_TR.utf8/LC_COLLATE
+#usr/lib/locale/ku_TR.utf8/LC_CTYPE
+#usr/lib/locale/ku_TR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ku_TR.utf8/LC_MEASUREMENT
+#usr/lib/locale/ku_TR.utf8/LC_MESSAGES
+#usr/lib/locale/ku_TR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ku_TR.utf8/LC_MONETARY
+#usr/lib/locale/ku_TR.utf8/LC_NAME
+#usr/lib/locale/ku_TR.utf8/LC_NUMERIC
+#usr/lib/locale/ku_TR.utf8/LC_PAPER
+#usr/lib/locale/ku_TR.utf8/LC_TELEPHONE
+#usr/lib/locale/ku_TR.utf8/LC_TIME
+#usr/lib/locale/ku_TR/LC_ADDRESS
+#usr/lib/locale/ku_TR/LC_COLLATE
+#usr/lib/locale/ku_TR/LC_CTYPE
+#usr/lib/locale/ku_TR/LC_IDENTIFICATION
+#usr/lib/locale/ku_TR/LC_MEASUREMENT
+#usr/lib/locale/ku_TR/LC_MESSAGES
+#usr/lib/locale/ku_TR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ku_TR/LC_MONETARY
+#usr/lib/locale/ku_TR/LC_NAME
+#usr/lib/locale/ku_TR/LC_NUMERIC
+#usr/lib/locale/ku_TR/LC_PAPER
+#usr/lib/locale/ku_TR/LC_TELEPHONE
+#usr/lib/locale/ku_TR/LC_TIME
+#usr/lib/locale/kw_GB
+#usr/lib/locale/kw_GB.utf8
+#usr/lib/locale/kw_GB.utf8/LC_ADDRESS
+#usr/lib/locale/kw_GB.utf8/LC_COLLATE
+#usr/lib/locale/kw_GB.utf8/LC_CTYPE
+#usr/lib/locale/kw_GB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/kw_GB.utf8/LC_MEASUREMENT
+#usr/lib/locale/kw_GB.utf8/LC_MESSAGES
+#usr/lib/locale/kw_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kw_GB.utf8/LC_MONETARY
+#usr/lib/locale/kw_GB.utf8/LC_NAME
+#usr/lib/locale/kw_GB.utf8/LC_NUMERIC
+#usr/lib/locale/kw_GB.utf8/LC_PAPER
+#usr/lib/locale/kw_GB.utf8/LC_TELEPHONE
+#usr/lib/locale/kw_GB.utf8/LC_TIME
+#usr/lib/locale/kw_GB/LC_ADDRESS
+#usr/lib/locale/kw_GB/LC_COLLATE
+#usr/lib/locale/kw_GB/LC_CTYPE
+#usr/lib/locale/kw_GB/LC_IDENTIFICATION
+#usr/lib/locale/kw_GB/LC_MEASUREMENT
+#usr/lib/locale/kw_GB/LC_MESSAGES
+#usr/lib/locale/kw_GB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kw_GB/LC_MONETARY
+#usr/lib/locale/kw_GB/LC_NAME
+#usr/lib/locale/kw_GB/LC_NUMERIC
+#usr/lib/locale/kw_GB/LC_PAPER
+#usr/lib/locale/kw_GB/LC_TELEPHONE
+#usr/lib/locale/kw_GB/LC_TIME
+#usr/lib/locale/ky_KG
+#usr/lib/locale/ky_KG/LC_ADDRESS
+#usr/lib/locale/ky_KG/LC_COLLATE
+#usr/lib/locale/ky_KG/LC_CTYPE
+#usr/lib/locale/ky_KG/LC_IDENTIFICATION
+#usr/lib/locale/ky_KG/LC_MEASUREMENT
+#usr/lib/locale/ky_KG/LC_MESSAGES
+#usr/lib/locale/ky_KG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ky_KG/LC_MONETARY
+#usr/lib/locale/ky_KG/LC_NAME
+#usr/lib/locale/ky_KG/LC_NUMERIC
+#usr/lib/locale/ky_KG/LC_PAPER
+#usr/lib/locale/ky_KG/LC_TELEPHONE
+#usr/lib/locale/ky_KG/LC_TIME
+#usr/lib/locale/lg_UG
+#usr/lib/locale/lg_UG.utf8
+#usr/lib/locale/lg_UG.utf8/LC_ADDRESS
+#usr/lib/locale/lg_UG.utf8/LC_COLLATE
+#usr/lib/locale/lg_UG.utf8/LC_CTYPE
+#usr/lib/locale/lg_UG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/lg_UG.utf8/LC_MEASUREMENT
+#usr/lib/locale/lg_UG.utf8/LC_MESSAGES
+#usr/lib/locale/lg_UG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lg_UG.utf8/LC_MONETARY
+#usr/lib/locale/lg_UG.utf8/LC_NAME
+#usr/lib/locale/lg_UG.utf8/LC_NUMERIC
+#usr/lib/locale/lg_UG.utf8/LC_PAPER
+#usr/lib/locale/lg_UG.utf8/LC_TELEPHONE
+#usr/lib/locale/lg_UG.utf8/LC_TIME
+#usr/lib/locale/lg_UG/LC_ADDRESS
+#usr/lib/locale/lg_UG/LC_COLLATE
+#usr/lib/locale/lg_UG/LC_CTYPE
+#usr/lib/locale/lg_UG/LC_IDENTIFICATION
+#usr/lib/locale/lg_UG/LC_MEASUREMENT
+#usr/lib/locale/lg_UG/LC_MESSAGES
+#usr/lib/locale/lg_UG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lg_UG/LC_MONETARY
+#usr/lib/locale/lg_UG/LC_NAME
+#usr/lib/locale/lg_UG/LC_NUMERIC
+#usr/lib/locale/lg_UG/LC_PAPER
+#usr/lib/locale/lg_UG/LC_TELEPHONE
+#usr/lib/locale/lg_UG/LC_TIME
+#usr/lib/locale/li_BE
+#usr/lib/locale/li_BE/LC_ADDRESS
+#usr/lib/locale/li_BE/LC_COLLATE
+#usr/lib/locale/li_BE/LC_CTYPE
+#usr/lib/locale/li_BE/LC_IDENTIFICATION
+#usr/lib/locale/li_BE/LC_MEASUREMENT
+#usr/lib/locale/li_BE/LC_MESSAGES
+#usr/lib/locale/li_BE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/li_BE/LC_MONETARY
+#usr/lib/locale/li_BE/LC_NAME
+#usr/lib/locale/li_BE/LC_NUMERIC
+#usr/lib/locale/li_BE/LC_PAPER
+#usr/lib/locale/li_BE/LC_TELEPHONE
+#usr/lib/locale/li_BE/LC_TIME
+#usr/lib/locale/li_NL
+#usr/lib/locale/li_NL/LC_ADDRESS
+#usr/lib/locale/li_NL/LC_COLLATE
+#usr/lib/locale/li_NL/LC_CTYPE
+#usr/lib/locale/li_NL/LC_IDENTIFICATION
+#usr/lib/locale/li_NL/LC_MEASUREMENT
+#usr/lib/locale/li_NL/LC_MESSAGES
+#usr/lib/locale/li_NL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/li_NL/LC_MONETARY
+#usr/lib/locale/li_NL/LC_NAME
+#usr/lib/locale/li_NL/LC_NUMERIC
+#usr/lib/locale/li_NL/LC_PAPER
+#usr/lib/locale/li_NL/LC_TELEPHONE
+#usr/lib/locale/li_NL/LC_TIME
+#usr/lib/locale/lo_LA
+#usr/lib/locale/lo_LA/LC_ADDRESS
+#usr/lib/locale/lo_LA/LC_COLLATE
+#usr/lib/locale/lo_LA/LC_CTYPE
+#usr/lib/locale/lo_LA/LC_IDENTIFICATION
+#usr/lib/locale/lo_LA/LC_MEASUREMENT
+#usr/lib/locale/lo_LA/LC_MESSAGES
+#usr/lib/locale/lo_LA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lo_LA/LC_MONETARY
+#usr/lib/locale/lo_LA/LC_NAME
+#usr/lib/locale/lo_LA/LC_NUMERIC
+#usr/lib/locale/lo_LA/LC_PAPER
+#usr/lib/locale/lo_LA/LC_TELEPHONE
+#usr/lib/locale/lo_LA/LC_TIME
+#usr/lib/locale/lt_LT
+#usr/lib/locale/lt_LT.utf8
+#usr/lib/locale/lt_LT.utf8/LC_ADDRESS
+#usr/lib/locale/lt_LT.utf8/LC_COLLATE
+#usr/lib/locale/lt_LT.utf8/LC_CTYPE
+#usr/lib/locale/lt_LT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/lt_LT.utf8/LC_MEASUREMENT
+#usr/lib/locale/lt_LT.utf8/LC_MESSAGES
+#usr/lib/locale/lt_LT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lt_LT.utf8/LC_MONETARY
+#usr/lib/locale/lt_LT.utf8/LC_NAME
+#usr/lib/locale/lt_LT.utf8/LC_NUMERIC
+#usr/lib/locale/lt_LT.utf8/LC_PAPER
+#usr/lib/locale/lt_LT.utf8/LC_TELEPHONE
+#usr/lib/locale/lt_LT.utf8/LC_TIME
+#usr/lib/locale/lt_LT/LC_ADDRESS
+#usr/lib/locale/lt_LT/LC_COLLATE
+#usr/lib/locale/lt_LT/LC_CTYPE
+#usr/lib/locale/lt_LT/LC_IDENTIFICATION
+#usr/lib/locale/lt_LT/LC_MEASUREMENT
+#usr/lib/locale/lt_LT/LC_MESSAGES
+#usr/lib/locale/lt_LT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lt_LT/LC_MONETARY
+#usr/lib/locale/lt_LT/LC_NAME
+#usr/lib/locale/lt_LT/LC_NUMERIC
+#usr/lib/locale/lt_LT/LC_PAPER
+#usr/lib/locale/lt_LT/LC_TELEPHONE
+#usr/lib/locale/lt_LT/LC_TIME
+#usr/lib/locale/lv_LV
+#usr/lib/locale/lv_LV.utf8
+#usr/lib/locale/lv_LV.utf8/LC_ADDRESS
+#usr/lib/locale/lv_LV.utf8/LC_COLLATE
+#usr/lib/locale/lv_LV.utf8/LC_CTYPE
+#usr/lib/locale/lv_LV.utf8/LC_IDENTIFICATION
+#usr/lib/locale/lv_LV.utf8/LC_MEASUREMENT
+#usr/lib/locale/lv_LV.utf8/LC_MESSAGES
+#usr/lib/locale/lv_LV.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lv_LV.utf8/LC_MONETARY
+#usr/lib/locale/lv_LV.utf8/LC_NAME
+#usr/lib/locale/lv_LV.utf8/LC_NUMERIC
+#usr/lib/locale/lv_LV.utf8/LC_PAPER
+#usr/lib/locale/lv_LV.utf8/LC_TELEPHONE
+#usr/lib/locale/lv_LV.utf8/LC_TIME
+#usr/lib/locale/lv_LV/LC_ADDRESS
+#usr/lib/locale/lv_LV/LC_COLLATE
+#usr/lib/locale/lv_LV/LC_CTYPE
+#usr/lib/locale/lv_LV/LC_IDENTIFICATION
+#usr/lib/locale/lv_LV/LC_MEASUREMENT
+#usr/lib/locale/lv_LV/LC_MESSAGES
+#usr/lib/locale/lv_LV/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lv_LV/LC_MONETARY
+#usr/lib/locale/lv_LV/LC_NAME
+#usr/lib/locale/lv_LV/LC_NUMERIC
+#usr/lib/locale/lv_LV/LC_PAPER
+#usr/lib/locale/lv_LV/LC_TELEPHONE
+#usr/lib/locale/lv_LV/LC_TIME
+#usr/lib/locale/mai_IN
+#usr/lib/locale/mai_IN/LC_ADDRESS
+#usr/lib/locale/mai_IN/LC_COLLATE
+#usr/lib/locale/mai_IN/LC_CTYPE
+#usr/lib/locale/mai_IN/LC_IDENTIFICATION
+#usr/lib/locale/mai_IN/LC_MEASUREMENT
+#usr/lib/locale/mai_IN/LC_MESSAGES
+#usr/lib/locale/mai_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mai_IN/LC_MONETARY
+#usr/lib/locale/mai_IN/LC_NAME
+#usr/lib/locale/mai_IN/LC_NUMERIC
+#usr/lib/locale/mai_IN/LC_PAPER
+#usr/lib/locale/mai_IN/LC_TELEPHONE
+#usr/lib/locale/mai_IN/LC_TIME
+#usr/lib/locale/mg_MG
+#usr/lib/locale/mg_MG.utf8
+#usr/lib/locale/mg_MG.utf8/LC_ADDRESS
+#usr/lib/locale/mg_MG.utf8/LC_COLLATE
+#usr/lib/locale/mg_MG.utf8/LC_CTYPE
+#usr/lib/locale/mg_MG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/mg_MG.utf8/LC_MEASUREMENT
+#usr/lib/locale/mg_MG.utf8/LC_MESSAGES
+#usr/lib/locale/mg_MG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mg_MG.utf8/LC_MONETARY
+#usr/lib/locale/mg_MG.utf8/LC_NAME
+#usr/lib/locale/mg_MG.utf8/LC_NUMERIC
+#usr/lib/locale/mg_MG.utf8/LC_PAPER
+#usr/lib/locale/mg_MG.utf8/LC_TELEPHONE
+#usr/lib/locale/mg_MG.utf8/LC_TIME
+#usr/lib/locale/mg_MG/LC_ADDRESS
+#usr/lib/locale/mg_MG/LC_COLLATE
+#usr/lib/locale/mg_MG/LC_CTYPE
+#usr/lib/locale/mg_MG/LC_IDENTIFICATION
+#usr/lib/locale/mg_MG/LC_MEASUREMENT
+#usr/lib/locale/mg_MG/LC_MESSAGES
+#usr/lib/locale/mg_MG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mg_MG/LC_MONETARY
+#usr/lib/locale/mg_MG/LC_NAME
+#usr/lib/locale/mg_MG/LC_NUMERIC
+#usr/lib/locale/mg_MG/LC_PAPER
+#usr/lib/locale/mg_MG/LC_TELEPHONE
+#usr/lib/locale/mg_MG/LC_TIME
+#usr/lib/locale/mi_NZ
+#usr/lib/locale/mi_NZ.utf8
+#usr/lib/locale/mi_NZ.utf8/LC_ADDRESS
+#usr/lib/locale/mi_NZ.utf8/LC_COLLATE
+#usr/lib/locale/mi_NZ.utf8/LC_CTYPE
+#usr/lib/locale/mi_NZ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/mi_NZ.utf8/LC_MEASUREMENT
+#usr/lib/locale/mi_NZ.utf8/LC_MESSAGES
+#usr/lib/locale/mi_NZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mi_NZ.utf8/LC_MONETARY
+#usr/lib/locale/mi_NZ.utf8/LC_NAME
+#usr/lib/locale/mi_NZ.utf8/LC_NUMERIC
+#usr/lib/locale/mi_NZ.utf8/LC_PAPER
+#usr/lib/locale/mi_NZ.utf8/LC_TELEPHONE
+#usr/lib/locale/mi_NZ.utf8/LC_TIME
+#usr/lib/locale/mi_NZ/LC_ADDRESS
+#usr/lib/locale/mi_NZ/LC_COLLATE
+#usr/lib/locale/mi_NZ/LC_CTYPE
+#usr/lib/locale/mi_NZ/LC_IDENTIFICATION
+#usr/lib/locale/mi_NZ/LC_MEASUREMENT
+#usr/lib/locale/mi_NZ/LC_MESSAGES
+#usr/lib/locale/mi_NZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mi_NZ/LC_MONETARY
+#usr/lib/locale/mi_NZ/LC_NAME
+#usr/lib/locale/mi_NZ/LC_NUMERIC
+#usr/lib/locale/mi_NZ/LC_PAPER
+#usr/lib/locale/mi_NZ/LC_TELEPHONE
+#usr/lib/locale/mi_NZ/LC_TIME
+#usr/lib/locale/mk_MK
+#usr/lib/locale/mk_MK.utf8
+#usr/lib/locale/mk_MK.utf8/LC_ADDRESS
+#usr/lib/locale/mk_MK.utf8/LC_COLLATE
+#usr/lib/locale/mk_MK.utf8/LC_CTYPE
+#usr/lib/locale/mk_MK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/mk_MK.utf8/LC_MEASUREMENT
+#usr/lib/locale/mk_MK.utf8/LC_MESSAGES
+#usr/lib/locale/mk_MK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mk_MK.utf8/LC_MONETARY
+#usr/lib/locale/mk_MK.utf8/LC_NAME
+#usr/lib/locale/mk_MK.utf8/LC_NUMERIC
+#usr/lib/locale/mk_MK.utf8/LC_PAPER
+#usr/lib/locale/mk_MK.utf8/LC_TELEPHONE
+#usr/lib/locale/mk_MK.utf8/LC_TIME
+#usr/lib/locale/mk_MK/LC_ADDRESS
+#usr/lib/locale/mk_MK/LC_COLLATE
+#usr/lib/locale/mk_MK/LC_CTYPE
+#usr/lib/locale/mk_MK/LC_IDENTIFICATION
+#usr/lib/locale/mk_MK/LC_MEASUREMENT
+#usr/lib/locale/mk_MK/LC_MESSAGES
+#usr/lib/locale/mk_MK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mk_MK/LC_MONETARY
+#usr/lib/locale/mk_MK/LC_NAME
+#usr/lib/locale/mk_MK/LC_NUMERIC
+#usr/lib/locale/mk_MK/LC_PAPER
+#usr/lib/locale/mk_MK/LC_TELEPHONE
+#usr/lib/locale/mk_MK/LC_TIME
+#usr/lib/locale/ml_IN
+#usr/lib/locale/ml_IN/LC_ADDRESS
+#usr/lib/locale/ml_IN/LC_COLLATE
+#usr/lib/locale/ml_IN/LC_CTYPE
+#usr/lib/locale/ml_IN/LC_IDENTIFICATION
+#usr/lib/locale/ml_IN/LC_MEASUREMENT
+#usr/lib/locale/ml_IN/LC_MESSAGES
+#usr/lib/locale/ml_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ml_IN/LC_MONETARY
+#usr/lib/locale/ml_IN/LC_NAME
+#usr/lib/locale/ml_IN/LC_NUMERIC
+#usr/lib/locale/ml_IN/LC_PAPER
+#usr/lib/locale/ml_IN/LC_TELEPHONE
+#usr/lib/locale/ml_IN/LC_TIME
+#usr/lib/locale/mn_MN
+#usr/lib/locale/mn_MN/LC_ADDRESS
+#usr/lib/locale/mn_MN/LC_COLLATE
+#usr/lib/locale/mn_MN/LC_CTYPE
+#usr/lib/locale/mn_MN/LC_IDENTIFICATION
+#usr/lib/locale/mn_MN/LC_MEASUREMENT
+#usr/lib/locale/mn_MN/LC_MESSAGES
+#usr/lib/locale/mn_MN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mn_MN/LC_MONETARY
+#usr/lib/locale/mn_MN/LC_NAME
+#usr/lib/locale/mn_MN/LC_NUMERIC
+#usr/lib/locale/mn_MN/LC_PAPER
+#usr/lib/locale/mn_MN/LC_TELEPHONE
+#usr/lib/locale/mn_MN/LC_TIME
+#usr/lib/locale/mr_IN
+#usr/lib/locale/mr_IN/LC_ADDRESS
+#usr/lib/locale/mr_IN/LC_COLLATE
+#usr/lib/locale/mr_IN/LC_CTYPE
+#usr/lib/locale/mr_IN/LC_IDENTIFICATION
+#usr/lib/locale/mr_IN/LC_MEASUREMENT
+#usr/lib/locale/mr_IN/LC_MESSAGES
+#usr/lib/locale/mr_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mr_IN/LC_MONETARY
+#usr/lib/locale/mr_IN/LC_NAME
+#usr/lib/locale/mr_IN/LC_NUMERIC
+#usr/lib/locale/mr_IN/LC_PAPER
+#usr/lib/locale/mr_IN/LC_TELEPHONE
+#usr/lib/locale/mr_IN/LC_TIME
+#usr/lib/locale/ms_MY
+#usr/lib/locale/ms_MY.utf8
+#usr/lib/locale/ms_MY.utf8/LC_ADDRESS
+#usr/lib/locale/ms_MY.utf8/LC_COLLATE
+#usr/lib/locale/ms_MY.utf8/LC_CTYPE
+#usr/lib/locale/ms_MY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ms_MY.utf8/LC_MEASUREMENT
+#usr/lib/locale/ms_MY.utf8/LC_MESSAGES
+#usr/lib/locale/ms_MY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ms_MY.utf8/LC_MONETARY
+#usr/lib/locale/ms_MY.utf8/LC_NAME
+#usr/lib/locale/ms_MY.utf8/LC_NUMERIC
+#usr/lib/locale/ms_MY.utf8/LC_PAPER
+#usr/lib/locale/ms_MY.utf8/LC_TELEPHONE
+#usr/lib/locale/ms_MY.utf8/LC_TIME
+#usr/lib/locale/ms_MY/LC_ADDRESS
+#usr/lib/locale/ms_MY/LC_COLLATE
+#usr/lib/locale/ms_MY/LC_CTYPE
+#usr/lib/locale/ms_MY/LC_IDENTIFICATION
+#usr/lib/locale/ms_MY/LC_MEASUREMENT
+#usr/lib/locale/ms_MY/LC_MESSAGES
+#usr/lib/locale/ms_MY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ms_MY/LC_MONETARY
+#usr/lib/locale/ms_MY/LC_NAME
+#usr/lib/locale/ms_MY/LC_NUMERIC
+#usr/lib/locale/ms_MY/LC_PAPER
+#usr/lib/locale/ms_MY/LC_TELEPHONE
+#usr/lib/locale/ms_MY/LC_TIME
+#usr/lib/locale/mt_MT
+#usr/lib/locale/mt_MT.utf8
+#usr/lib/locale/mt_MT.utf8/LC_ADDRESS
+#usr/lib/locale/mt_MT.utf8/LC_COLLATE
+#usr/lib/locale/mt_MT.utf8/LC_CTYPE
+#usr/lib/locale/mt_MT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/mt_MT.utf8/LC_MEASUREMENT
+#usr/lib/locale/mt_MT.utf8/LC_MESSAGES
+#usr/lib/locale/mt_MT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mt_MT.utf8/LC_MONETARY
+#usr/lib/locale/mt_MT.utf8/LC_NAME
+#usr/lib/locale/mt_MT.utf8/LC_NUMERIC
+#usr/lib/locale/mt_MT.utf8/LC_PAPER
+#usr/lib/locale/mt_MT.utf8/LC_TELEPHONE
+#usr/lib/locale/mt_MT.utf8/LC_TIME
+#usr/lib/locale/mt_MT/LC_ADDRESS
+#usr/lib/locale/mt_MT/LC_COLLATE
+#usr/lib/locale/mt_MT/LC_CTYPE
+#usr/lib/locale/mt_MT/LC_IDENTIFICATION
+#usr/lib/locale/mt_MT/LC_MEASUREMENT
+#usr/lib/locale/mt_MT/LC_MESSAGES
+#usr/lib/locale/mt_MT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mt_MT/LC_MONETARY
+#usr/lib/locale/mt_MT/LC_NAME
+#usr/lib/locale/mt_MT/LC_NUMERIC
+#usr/lib/locale/mt_MT/LC_PAPER
+#usr/lib/locale/mt_MT/LC_TELEPHONE
+#usr/lib/locale/mt_MT/LC_TIME
+#usr/lib/locale/my_MM
+#usr/lib/locale/my_MM/LC_ADDRESS
+#usr/lib/locale/my_MM/LC_COLLATE
+#usr/lib/locale/my_MM/LC_CTYPE
+#usr/lib/locale/my_MM/LC_IDENTIFICATION
+#usr/lib/locale/my_MM/LC_MEASUREMENT
+#usr/lib/locale/my_MM/LC_MESSAGES
+#usr/lib/locale/my_MM/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/my_MM/LC_MONETARY
+#usr/lib/locale/my_MM/LC_NAME
+#usr/lib/locale/my_MM/LC_NUMERIC
+#usr/lib/locale/my_MM/LC_PAPER
+#usr/lib/locale/my_MM/LC_TELEPHONE
+#usr/lib/locale/my_MM/LC_TIME
+#usr/lib/locale/nan_TW@latin
+#usr/lib/locale/nan_TW@latin/LC_ADDRESS
+#usr/lib/locale/nan_TW@latin/LC_COLLATE
+#usr/lib/locale/nan_TW@latin/LC_CTYPE
+#usr/lib/locale/nan_TW@latin/LC_IDENTIFICATION
+#usr/lib/locale/nan_TW@latin/LC_MEASUREMENT
+#usr/lib/locale/nan_TW@latin/LC_MESSAGES
+#usr/lib/locale/nan_TW@latin/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nan_TW@latin/LC_MONETARY
+#usr/lib/locale/nan_TW@latin/LC_NAME
+#usr/lib/locale/nan_TW@latin/LC_NUMERIC
+#usr/lib/locale/nan_TW@latin/LC_PAPER
+#usr/lib/locale/nan_TW@latin/LC_TELEPHONE
+#usr/lib/locale/nan_TW@latin/LC_TIME
+#usr/lib/locale/nb_NO
+#usr/lib/locale/nb_NO.utf8
+#usr/lib/locale/nb_NO.utf8/LC_ADDRESS
+#usr/lib/locale/nb_NO.utf8/LC_COLLATE
+#usr/lib/locale/nb_NO.utf8/LC_CTYPE
+#usr/lib/locale/nb_NO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/nb_NO.utf8/LC_MEASUREMENT
+#usr/lib/locale/nb_NO.utf8/LC_MESSAGES
+#usr/lib/locale/nb_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nb_NO.utf8/LC_MONETARY
+#usr/lib/locale/nb_NO.utf8/LC_NAME
+#usr/lib/locale/nb_NO.utf8/LC_NUMERIC
+#usr/lib/locale/nb_NO.utf8/LC_PAPER
+#usr/lib/locale/nb_NO.utf8/LC_TELEPHONE
+#usr/lib/locale/nb_NO.utf8/LC_TIME
+#usr/lib/locale/nb_NO/LC_ADDRESS
+#usr/lib/locale/nb_NO/LC_COLLATE
+#usr/lib/locale/nb_NO/LC_CTYPE
+#usr/lib/locale/nb_NO/LC_IDENTIFICATION
+#usr/lib/locale/nb_NO/LC_MEASUREMENT
+#usr/lib/locale/nb_NO/LC_MESSAGES
+#usr/lib/locale/nb_NO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nb_NO/LC_MONETARY
+#usr/lib/locale/nb_NO/LC_NAME
+#usr/lib/locale/nb_NO/LC_NUMERIC
+#usr/lib/locale/nb_NO/LC_PAPER
+#usr/lib/locale/nb_NO/LC_TELEPHONE
+#usr/lib/locale/nb_NO/LC_TIME
+#usr/lib/locale/nds_DE
+#usr/lib/locale/nds_DE/LC_ADDRESS
+#usr/lib/locale/nds_DE/LC_COLLATE
+#usr/lib/locale/nds_DE/LC_CTYPE
+#usr/lib/locale/nds_DE/LC_IDENTIFICATION
+#usr/lib/locale/nds_DE/LC_MEASUREMENT
+#usr/lib/locale/nds_DE/LC_MESSAGES
+#usr/lib/locale/nds_DE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nds_DE/LC_MONETARY
+#usr/lib/locale/nds_DE/LC_NAME
+#usr/lib/locale/nds_DE/LC_NUMERIC
+#usr/lib/locale/nds_DE/LC_PAPER
+#usr/lib/locale/nds_DE/LC_TELEPHONE
+#usr/lib/locale/nds_DE/LC_TIME
+#usr/lib/locale/nds_NL
+#usr/lib/locale/nds_NL/LC_ADDRESS
+#usr/lib/locale/nds_NL/LC_COLLATE
+#usr/lib/locale/nds_NL/LC_CTYPE
+#usr/lib/locale/nds_NL/LC_IDENTIFICATION
+#usr/lib/locale/nds_NL/LC_MEASUREMENT
+#usr/lib/locale/nds_NL/LC_MESSAGES
+#usr/lib/locale/nds_NL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nds_NL/LC_MONETARY
+#usr/lib/locale/nds_NL/LC_NAME
+#usr/lib/locale/nds_NL/LC_NUMERIC
+#usr/lib/locale/nds_NL/LC_PAPER
+#usr/lib/locale/nds_NL/LC_TELEPHONE
+#usr/lib/locale/nds_NL/LC_TIME
+#usr/lib/locale/ne_NP
+#usr/lib/locale/ne_NP/LC_ADDRESS
+#usr/lib/locale/ne_NP/LC_COLLATE
+#usr/lib/locale/ne_NP/LC_CTYPE
+#usr/lib/locale/ne_NP/LC_IDENTIFICATION
+#usr/lib/locale/ne_NP/LC_MEASUREMENT
+#usr/lib/locale/ne_NP/LC_MESSAGES
+#usr/lib/locale/ne_NP/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ne_NP/LC_MONETARY
+#usr/lib/locale/ne_NP/LC_NAME
+#usr/lib/locale/ne_NP/LC_NUMERIC
+#usr/lib/locale/ne_NP/LC_PAPER
+#usr/lib/locale/ne_NP/LC_TELEPHONE
+#usr/lib/locale/ne_NP/LC_TIME
+#usr/lib/locale/nl_AW
+#usr/lib/locale/nl_AW/LC_ADDRESS
+#usr/lib/locale/nl_AW/LC_COLLATE
+#usr/lib/locale/nl_AW/LC_CTYPE
+#usr/lib/locale/nl_AW/LC_IDENTIFICATION
+#usr/lib/locale/nl_AW/LC_MEASUREMENT
+#usr/lib/locale/nl_AW/LC_MESSAGES
+#usr/lib/locale/nl_AW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_AW/LC_MONETARY
+#usr/lib/locale/nl_AW/LC_NAME
+#usr/lib/locale/nl_AW/LC_NUMERIC
+#usr/lib/locale/nl_AW/LC_PAPER
+#usr/lib/locale/nl_AW/LC_TELEPHONE
+#usr/lib/locale/nl_AW/LC_TIME
+#usr/lib/locale/nl_BE
+#usr/lib/locale/nl_BE.utf8
+#usr/lib/locale/nl_BE.utf8/LC_ADDRESS
+#usr/lib/locale/nl_BE.utf8/LC_COLLATE
+#usr/lib/locale/nl_BE.utf8/LC_CTYPE
+#usr/lib/locale/nl_BE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/nl_BE.utf8/LC_MEASUREMENT
+#usr/lib/locale/nl_BE.utf8/LC_MESSAGES
+#usr/lib/locale/nl_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_BE.utf8/LC_MONETARY
+#usr/lib/locale/nl_BE.utf8/LC_NAME
+#usr/lib/locale/nl_BE.utf8/LC_NUMERIC
+#usr/lib/locale/nl_BE.utf8/LC_PAPER
+#usr/lib/locale/nl_BE.utf8/LC_TELEPHONE
+#usr/lib/locale/nl_BE.utf8/LC_TIME
+#usr/lib/locale/nl_BE/LC_ADDRESS
+#usr/lib/locale/nl_BE/LC_COLLATE
+#usr/lib/locale/nl_BE/LC_CTYPE
+#usr/lib/locale/nl_BE/LC_IDENTIFICATION
+#usr/lib/locale/nl_BE/LC_MEASUREMENT
+#usr/lib/locale/nl_BE/LC_MESSAGES
+#usr/lib/locale/nl_BE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_BE/LC_MONETARY
+#usr/lib/locale/nl_BE/LC_NAME
+#usr/lib/locale/nl_BE/LC_NUMERIC
+#usr/lib/locale/nl_BE/LC_PAPER
+#usr/lib/locale/nl_BE/LC_TELEPHONE
+#usr/lib/locale/nl_BE/LC_TIME
+#usr/lib/locale/nl_BE@euro
+#usr/lib/locale/nl_BE@euro/LC_ADDRESS
+#usr/lib/locale/nl_BE@euro/LC_COLLATE
+#usr/lib/locale/nl_BE@euro/LC_CTYPE
+#usr/lib/locale/nl_BE@euro/LC_IDENTIFICATION
+#usr/lib/locale/nl_BE@euro/LC_MEASUREMENT
+#usr/lib/locale/nl_BE@euro/LC_MESSAGES
+#usr/lib/locale/nl_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_BE@euro/LC_MONETARY
+#usr/lib/locale/nl_BE@euro/LC_NAME
+#usr/lib/locale/nl_BE@euro/LC_NUMERIC
+#usr/lib/locale/nl_BE@euro/LC_PAPER
+#usr/lib/locale/nl_BE@euro/LC_TELEPHONE
+#usr/lib/locale/nl_BE@euro/LC_TIME
+#usr/lib/locale/nl_NL
+#usr/lib/locale/nl_NL.utf8
+#usr/lib/locale/nl_NL.utf8/LC_ADDRESS
+#usr/lib/locale/nl_NL.utf8/LC_COLLATE
+#usr/lib/locale/nl_NL.utf8/LC_CTYPE
+#usr/lib/locale/nl_NL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/nl_NL.utf8/LC_MEASUREMENT
+#usr/lib/locale/nl_NL.utf8/LC_MESSAGES
+#usr/lib/locale/nl_NL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_NL.utf8/LC_MONETARY
+#usr/lib/locale/nl_NL.utf8/LC_NAME
+#usr/lib/locale/nl_NL.utf8/LC_NUMERIC
+#usr/lib/locale/nl_NL.utf8/LC_PAPER
+#usr/lib/locale/nl_NL.utf8/LC_TELEPHONE
+#usr/lib/locale/nl_NL.utf8/LC_TIME
+#usr/lib/locale/nl_NL/LC_ADDRESS
+#usr/lib/locale/nl_NL/LC_COLLATE
+#usr/lib/locale/nl_NL/LC_CTYPE
+#usr/lib/locale/nl_NL/LC_IDENTIFICATION
+#usr/lib/locale/nl_NL/LC_MEASUREMENT
+#usr/lib/locale/nl_NL/LC_MESSAGES
+#usr/lib/locale/nl_NL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_NL/LC_MONETARY
+#usr/lib/locale/nl_NL/LC_NAME
+#usr/lib/locale/nl_NL/LC_NUMERIC
+#usr/lib/locale/nl_NL/LC_PAPER
+#usr/lib/locale/nl_NL/LC_TELEPHONE
+#usr/lib/locale/nl_NL/LC_TIME
+#usr/lib/locale/nl_NL@euro
+#usr/lib/locale/nl_NL@euro/LC_ADDRESS
+#usr/lib/locale/nl_NL@euro/LC_COLLATE
+#usr/lib/locale/nl_NL@euro/LC_CTYPE
+#usr/lib/locale/nl_NL@euro/LC_IDENTIFICATION
+#usr/lib/locale/nl_NL@euro/LC_MEASUREMENT
+#usr/lib/locale/nl_NL@euro/LC_MESSAGES
+#usr/lib/locale/nl_NL@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_NL@euro/LC_MONETARY
+#usr/lib/locale/nl_NL@euro/LC_NAME
+#usr/lib/locale/nl_NL@euro/LC_NUMERIC
+#usr/lib/locale/nl_NL@euro/LC_PAPER
+#usr/lib/locale/nl_NL@euro/LC_TELEPHONE
+#usr/lib/locale/nl_NL@euro/LC_TIME
+#usr/lib/locale/nn_NO
+#usr/lib/locale/nn_NO.utf8
+#usr/lib/locale/nn_NO.utf8/LC_ADDRESS
+#usr/lib/locale/nn_NO.utf8/LC_COLLATE
+#usr/lib/locale/nn_NO.utf8/LC_CTYPE
+#usr/lib/locale/nn_NO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/nn_NO.utf8/LC_MEASUREMENT
+#usr/lib/locale/nn_NO.utf8/LC_MESSAGES
+#usr/lib/locale/nn_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nn_NO.utf8/LC_MONETARY
+#usr/lib/locale/nn_NO.utf8/LC_NAME
+#usr/lib/locale/nn_NO.utf8/LC_NUMERIC
+#usr/lib/locale/nn_NO.utf8/LC_PAPER
+#usr/lib/locale/nn_NO.utf8/LC_TELEPHONE
+#usr/lib/locale/nn_NO.utf8/LC_TIME
+#usr/lib/locale/nn_NO/LC_ADDRESS
+#usr/lib/locale/nn_NO/LC_COLLATE
+#usr/lib/locale/nn_NO/LC_CTYPE
+#usr/lib/locale/nn_NO/LC_IDENTIFICATION
+#usr/lib/locale/nn_NO/LC_MEASUREMENT
+#usr/lib/locale/nn_NO/LC_MESSAGES
+#usr/lib/locale/nn_NO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nn_NO/LC_MONETARY
+#usr/lib/locale/nn_NO/LC_NAME
+#usr/lib/locale/nn_NO/LC_NUMERIC
+#usr/lib/locale/nn_NO/LC_PAPER
+#usr/lib/locale/nn_NO/LC_TELEPHONE
+#usr/lib/locale/nn_NO/LC_TIME
+#usr/lib/locale/no_NO
+#usr/lib/locale/no_NO.utf8
+#usr/lib/locale/no_NO.utf8/LC_ADDRESS
+#usr/lib/locale/no_NO.utf8/LC_COLLATE
+#usr/lib/locale/no_NO.utf8/LC_CTYPE
+#usr/lib/locale/no_NO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/no_NO.utf8/LC_MEASUREMENT
+#usr/lib/locale/no_NO.utf8/LC_MESSAGES
+#usr/lib/locale/no_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/no_NO.utf8/LC_MONETARY
+#usr/lib/locale/no_NO.utf8/LC_NAME
+#usr/lib/locale/no_NO.utf8/LC_NUMERIC
+#usr/lib/locale/no_NO.utf8/LC_PAPER
+#usr/lib/locale/no_NO.utf8/LC_TELEPHONE
+#usr/lib/locale/no_NO.utf8/LC_TIME
+#usr/lib/locale/no_NO/LC_ADDRESS
+#usr/lib/locale/no_NO/LC_COLLATE
+#usr/lib/locale/no_NO/LC_CTYPE
+#usr/lib/locale/no_NO/LC_IDENTIFICATION
+#usr/lib/locale/no_NO/LC_MEASUREMENT
+#usr/lib/locale/no_NO/LC_MESSAGES
+#usr/lib/locale/no_NO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/no_NO/LC_MONETARY
+#usr/lib/locale/no_NO/LC_NAME
+#usr/lib/locale/no_NO/LC_NUMERIC
+#usr/lib/locale/no_NO/LC_PAPER
+#usr/lib/locale/no_NO/LC_TELEPHONE
+#usr/lib/locale/no_NO/LC_TIME
+#usr/lib/locale/nr_ZA
+#usr/lib/locale/nr_ZA/LC_ADDRESS
+#usr/lib/locale/nr_ZA/LC_COLLATE
+#usr/lib/locale/nr_ZA/LC_CTYPE
+#usr/lib/locale/nr_ZA/LC_IDENTIFICATION
+#usr/lib/locale/nr_ZA/LC_MEASUREMENT
+#usr/lib/locale/nr_ZA/LC_MESSAGES
+#usr/lib/locale/nr_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nr_ZA/LC_MONETARY
+#usr/lib/locale/nr_ZA/LC_NAME
+#usr/lib/locale/nr_ZA/LC_NUMERIC
+#usr/lib/locale/nr_ZA/LC_PAPER
+#usr/lib/locale/nr_ZA/LC_TELEPHONE
+#usr/lib/locale/nr_ZA/LC_TIME
+#usr/lib/locale/nso_ZA
+#usr/lib/locale/nso_ZA/LC_ADDRESS
+#usr/lib/locale/nso_ZA/LC_COLLATE
+#usr/lib/locale/nso_ZA/LC_CTYPE
+#usr/lib/locale/nso_ZA/LC_IDENTIFICATION
+#usr/lib/locale/nso_ZA/LC_MEASUREMENT
+#usr/lib/locale/nso_ZA/LC_MESSAGES
+#usr/lib/locale/nso_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nso_ZA/LC_MONETARY
+#usr/lib/locale/nso_ZA/LC_NAME
+#usr/lib/locale/nso_ZA/LC_NUMERIC
+#usr/lib/locale/nso_ZA/LC_PAPER
+#usr/lib/locale/nso_ZA/LC_TELEPHONE
+#usr/lib/locale/nso_ZA/LC_TIME
+#usr/lib/locale/oc_FR
+#usr/lib/locale/oc_FR.utf8
+#usr/lib/locale/oc_FR.utf8/LC_ADDRESS
+#usr/lib/locale/oc_FR.utf8/LC_COLLATE
+#usr/lib/locale/oc_FR.utf8/LC_CTYPE
+#usr/lib/locale/oc_FR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/oc_FR.utf8/LC_MEASUREMENT
+#usr/lib/locale/oc_FR.utf8/LC_MESSAGES
+#usr/lib/locale/oc_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/oc_FR.utf8/LC_MONETARY
+#usr/lib/locale/oc_FR.utf8/LC_NAME
+#usr/lib/locale/oc_FR.utf8/LC_NUMERIC
+#usr/lib/locale/oc_FR.utf8/LC_PAPER
+#usr/lib/locale/oc_FR.utf8/LC_TELEPHONE
+#usr/lib/locale/oc_FR.utf8/LC_TIME
+#usr/lib/locale/oc_FR/LC_ADDRESS
+#usr/lib/locale/oc_FR/LC_COLLATE
+#usr/lib/locale/oc_FR/LC_CTYPE
+#usr/lib/locale/oc_FR/LC_IDENTIFICATION
+#usr/lib/locale/oc_FR/LC_MEASUREMENT
+#usr/lib/locale/oc_FR/LC_MESSAGES
+#usr/lib/locale/oc_FR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/oc_FR/LC_MONETARY
+#usr/lib/locale/oc_FR/LC_NAME
+#usr/lib/locale/oc_FR/LC_NUMERIC
+#usr/lib/locale/oc_FR/LC_PAPER
+#usr/lib/locale/oc_FR/LC_TELEPHONE
+#usr/lib/locale/oc_FR/LC_TIME
+#usr/lib/locale/om_ET
+#usr/lib/locale/om_ET/LC_ADDRESS
+#usr/lib/locale/om_ET/LC_COLLATE
+#usr/lib/locale/om_ET/LC_CTYPE
+#usr/lib/locale/om_ET/LC_IDENTIFICATION
+#usr/lib/locale/om_ET/LC_MEASUREMENT
+#usr/lib/locale/om_ET/LC_MESSAGES
+#usr/lib/locale/om_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/om_ET/LC_MONETARY
+#usr/lib/locale/om_ET/LC_NAME
+#usr/lib/locale/om_ET/LC_NUMERIC
+#usr/lib/locale/om_ET/LC_PAPER
+#usr/lib/locale/om_ET/LC_TELEPHONE
+#usr/lib/locale/om_ET/LC_TIME
+#usr/lib/locale/om_KE
+#usr/lib/locale/om_KE.utf8
+#usr/lib/locale/om_KE.utf8/LC_ADDRESS
+#usr/lib/locale/om_KE.utf8/LC_COLLATE
+#usr/lib/locale/om_KE.utf8/LC_CTYPE
+#usr/lib/locale/om_KE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/om_KE.utf8/LC_MEASUREMENT
+#usr/lib/locale/om_KE.utf8/LC_MESSAGES
+#usr/lib/locale/om_KE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/om_KE.utf8/LC_MONETARY
+#usr/lib/locale/om_KE.utf8/LC_NAME
+#usr/lib/locale/om_KE.utf8/LC_NUMERIC
+#usr/lib/locale/om_KE.utf8/LC_PAPER
+#usr/lib/locale/om_KE.utf8/LC_TELEPHONE
+#usr/lib/locale/om_KE.utf8/LC_TIME
+#usr/lib/locale/om_KE/LC_ADDRESS
+#usr/lib/locale/om_KE/LC_COLLATE
+#usr/lib/locale/om_KE/LC_CTYPE
+#usr/lib/locale/om_KE/LC_IDENTIFICATION
+#usr/lib/locale/om_KE/LC_MEASUREMENT
+#usr/lib/locale/om_KE/LC_MESSAGES
+#usr/lib/locale/om_KE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/om_KE/LC_MONETARY
+#usr/lib/locale/om_KE/LC_NAME
+#usr/lib/locale/om_KE/LC_NUMERIC
+#usr/lib/locale/om_KE/LC_PAPER
+#usr/lib/locale/om_KE/LC_TELEPHONE
+#usr/lib/locale/om_KE/LC_TIME
+#usr/lib/locale/or_IN
+#usr/lib/locale/or_IN/LC_ADDRESS
+#usr/lib/locale/or_IN/LC_COLLATE
+#usr/lib/locale/or_IN/LC_CTYPE
+#usr/lib/locale/or_IN/LC_IDENTIFICATION
+#usr/lib/locale/or_IN/LC_MEASUREMENT
+#usr/lib/locale/or_IN/LC_MESSAGES
+#usr/lib/locale/or_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/or_IN/LC_MONETARY
+#usr/lib/locale/or_IN/LC_NAME
+#usr/lib/locale/or_IN/LC_NUMERIC
+#usr/lib/locale/or_IN/LC_PAPER
+#usr/lib/locale/or_IN/LC_TELEPHONE
+#usr/lib/locale/or_IN/LC_TIME
+#usr/lib/locale/pa_IN
+#usr/lib/locale/pa_IN/LC_ADDRESS
+#usr/lib/locale/pa_IN/LC_COLLATE
+#usr/lib/locale/pa_IN/LC_CTYPE
+#usr/lib/locale/pa_IN/LC_IDENTIFICATION
+#usr/lib/locale/pa_IN/LC_MEASUREMENT
+#usr/lib/locale/pa_IN/LC_MESSAGES
+#usr/lib/locale/pa_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pa_IN/LC_MONETARY
+#usr/lib/locale/pa_IN/LC_NAME
+#usr/lib/locale/pa_IN/LC_NUMERIC
+#usr/lib/locale/pa_IN/LC_PAPER
+#usr/lib/locale/pa_IN/LC_TELEPHONE
+#usr/lib/locale/pa_IN/LC_TIME
+#usr/lib/locale/pa_PK
+#usr/lib/locale/pa_PK/LC_ADDRESS
+#usr/lib/locale/pa_PK/LC_COLLATE
+#usr/lib/locale/pa_PK/LC_CTYPE
+#usr/lib/locale/pa_PK/LC_IDENTIFICATION
+#usr/lib/locale/pa_PK/LC_MEASUREMENT
+#usr/lib/locale/pa_PK/LC_MESSAGES
+#usr/lib/locale/pa_PK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pa_PK/LC_MONETARY
+#usr/lib/locale/pa_PK/LC_NAME
+#usr/lib/locale/pa_PK/LC_NUMERIC
+#usr/lib/locale/pa_PK/LC_PAPER
+#usr/lib/locale/pa_PK/LC_TELEPHONE
+#usr/lib/locale/pa_PK/LC_TIME
+#usr/lib/locale/pap_AN
+#usr/lib/locale/pap_AN/LC_ADDRESS
+#usr/lib/locale/pap_AN/LC_COLLATE
+#usr/lib/locale/pap_AN/LC_CTYPE
+#usr/lib/locale/pap_AN/LC_IDENTIFICATION
+#usr/lib/locale/pap_AN/LC_MEASUREMENT
+#usr/lib/locale/pap_AN/LC_MESSAGES
+#usr/lib/locale/pap_AN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pap_AN/LC_MONETARY
+#usr/lib/locale/pap_AN/LC_NAME
+#usr/lib/locale/pap_AN/LC_NUMERIC
+#usr/lib/locale/pap_AN/LC_PAPER
+#usr/lib/locale/pap_AN/LC_TELEPHONE
+#usr/lib/locale/pap_AN/LC_TIME
+#usr/lib/locale/pl_PL
+#usr/lib/locale/pl_PL.utf8
+#usr/lib/locale/pl_PL.utf8/LC_ADDRESS
+#usr/lib/locale/pl_PL.utf8/LC_COLLATE
+#usr/lib/locale/pl_PL.utf8/LC_CTYPE
+#usr/lib/locale/pl_PL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/pl_PL.utf8/LC_MEASUREMENT
+#usr/lib/locale/pl_PL.utf8/LC_MESSAGES
+#usr/lib/locale/pl_PL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pl_PL.utf8/LC_MONETARY
+#usr/lib/locale/pl_PL.utf8/LC_NAME
+#usr/lib/locale/pl_PL.utf8/LC_NUMERIC
+#usr/lib/locale/pl_PL.utf8/LC_PAPER
+#usr/lib/locale/pl_PL.utf8/LC_TELEPHONE
+#usr/lib/locale/pl_PL.utf8/LC_TIME
+#usr/lib/locale/pl_PL/LC_ADDRESS
+#usr/lib/locale/pl_PL/LC_COLLATE
+#usr/lib/locale/pl_PL/LC_CTYPE
+#usr/lib/locale/pl_PL/LC_IDENTIFICATION
+#usr/lib/locale/pl_PL/LC_MEASUREMENT
+#usr/lib/locale/pl_PL/LC_MESSAGES
+#usr/lib/locale/pl_PL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pl_PL/LC_MONETARY
+#usr/lib/locale/pl_PL/LC_NAME
+#usr/lib/locale/pl_PL/LC_NUMERIC
+#usr/lib/locale/pl_PL/LC_PAPER
+#usr/lib/locale/pl_PL/LC_TELEPHONE
+#usr/lib/locale/pl_PL/LC_TIME
+#usr/lib/locale/ps_AF
+#usr/lib/locale/ps_AF/LC_ADDRESS
+#usr/lib/locale/ps_AF/LC_COLLATE
+#usr/lib/locale/ps_AF/LC_CTYPE
+#usr/lib/locale/ps_AF/LC_IDENTIFICATION
+#usr/lib/locale/ps_AF/LC_MEASUREMENT
+#usr/lib/locale/ps_AF/LC_MESSAGES
+#usr/lib/locale/ps_AF/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ps_AF/LC_MONETARY
+#usr/lib/locale/ps_AF/LC_NAME
+#usr/lib/locale/ps_AF/LC_NUMERIC
+#usr/lib/locale/ps_AF/LC_PAPER
+#usr/lib/locale/ps_AF/LC_TELEPHONE
+#usr/lib/locale/ps_AF/LC_TIME
+#usr/lib/locale/pt_BR
+#usr/lib/locale/pt_BR.utf8
+#usr/lib/locale/pt_BR.utf8/LC_ADDRESS
+#usr/lib/locale/pt_BR.utf8/LC_COLLATE
+#usr/lib/locale/pt_BR.utf8/LC_CTYPE
+#usr/lib/locale/pt_BR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/pt_BR.utf8/LC_MEASUREMENT
+#usr/lib/locale/pt_BR.utf8/LC_MESSAGES
+#usr/lib/locale/pt_BR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pt_BR.utf8/LC_MONETARY
+#usr/lib/locale/pt_BR.utf8/LC_NAME
+#usr/lib/locale/pt_BR.utf8/LC_NUMERIC
+#usr/lib/locale/pt_BR.utf8/LC_PAPER
+#usr/lib/locale/pt_BR.utf8/LC_TELEPHONE
+#usr/lib/locale/pt_BR.utf8/LC_TIME
+#usr/lib/locale/pt_BR/LC_ADDRESS
+#usr/lib/locale/pt_BR/LC_COLLATE
+#usr/lib/locale/pt_BR/LC_CTYPE
+#usr/lib/locale/pt_BR/LC_IDENTIFICATION
+#usr/lib/locale/pt_BR/LC_MEASUREMENT
+#usr/lib/locale/pt_BR/LC_MESSAGES
+#usr/lib/locale/pt_BR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pt_BR/LC_MONETARY
+#usr/lib/locale/pt_BR/LC_NAME
+#usr/lib/locale/pt_BR/LC_NUMERIC
+#usr/lib/locale/pt_BR/LC_PAPER
+#usr/lib/locale/pt_BR/LC_TELEPHONE
+#usr/lib/locale/pt_BR/LC_TIME
+#usr/lib/locale/pt_PT
+#usr/lib/locale/pt_PT.utf8
+#usr/lib/locale/pt_PT.utf8/LC_ADDRESS
+#usr/lib/locale/pt_PT.utf8/LC_COLLATE
+#usr/lib/locale/pt_PT.utf8/LC_CTYPE
+#usr/lib/locale/pt_PT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/pt_PT.utf8/LC_MEASUREMENT
+#usr/lib/locale/pt_PT.utf8/LC_MESSAGES
+#usr/lib/locale/pt_PT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pt_PT.utf8/LC_MONETARY
+#usr/lib/locale/pt_PT.utf8/LC_NAME
+#usr/lib/locale/pt_PT.utf8/LC_NUMERIC
+#usr/lib/locale/pt_PT.utf8/LC_PAPER
+#usr/lib/locale/pt_PT.utf8/LC_TELEPHONE
+#usr/lib/locale/pt_PT.utf8/LC_TIME
+#usr/lib/locale/pt_PT/LC_ADDRESS
+#usr/lib/locale/pt_PT/LC_COLLATE
+#usr/lib/locale/pt_PT/LC_CTYPE
+#usr/lib/locale/pt_PT/LC_IDENTIFICATION
+#usr/lib/locale/pt_PT/LC_MEASUREMENT
+#usr/lib/locale/pt_PT/LC_MESSAGES
+#usr/lib/locale/pt_PT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pt_PT/LC_MONETARY
+#usr/lib/locale/pt_PT/LC_NAME
+#usr/lib/locale/pt_PT/LC_NUMERIC
+#usr/lib/locale/pt_PT/LC_PAPER
+#usr/lib/locale/pt_PT/LC_TELEPHONE
+#usr/lib/locale/pt_PT/LC_TIME
+#usr/lib/locale/pt_PT@euro
+#usr/lib/locale/pt_PT@euro/LC_ADDRESS
+#usr/lib/locale/pt_PT@euro/LC_COLLATE
+#usr/lib/locale/pt_PT@euro/LC_CTYPE
+#usr/lib/locale/pt_PT@euro/LC_IDENTIFICATION
+#usr/lib/locale/pt_PT@euro/LC_MEASUREMENT
+#usr/lib/locale/pt_PT@euro/LC_MESSAGES
+#usr/lib/locale/pt_PT@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pt_PT@euro/LC_MONETARY
+#usr/lib/locale/pt_PT@euro/LC_NAME
+#usr/lib/locale/pt_PT@euro/LC_NUMERIC
+#usr/lib/locale/pt_PT@euro/LC_PAPER
+#usr/lib/locale/pt_PT@euro/LC_TELEPHONE
+#usr/lib/locale/pt_PT@euro/LC_TIME
+#usr/lib/locale/ro_RO
+#usr/lib/locale/ro_RO.utf8
+#usr/lib/locale/ro_RO.utf8/LC_ADDRESS
+#usr/lib/locale/ro_RO.utf8/LC_COLLATE
+#usr/lib/locale/ro_RO.utf8/LC_CTYPE
+#usr/lib/locale/ro_RO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ro_RO.utf8/LC_MEASUREMENT
+#usr/lib/locale/ro_RO.utf8/LC_MESSAGES
+#usr/lib/locale/ro_RO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ro_RO.utf8/LC_MONETARY
+#usr/lib/locale/ro_RO.utf8/LC_NAME
+#usr/lib/locale/ro_RO.utf8/LC_NUMERIC
+#usr/lib/locale/ro_RO.utf8/LC_PAPER
+#usr/lib/locale/ro_RO.utf8/LC_TELEPHONE
+#usr/lib/locale/ro_RO.utf8/LC_TIME
+#usr/lib/locale/ro_RO/LC_ADDRESS
+#usr/lib/locale/ro_RO/LC_COLLATE
+#usr/lib/locale/ro_RO/LC_CTYPE
+#usr/lib/locale/ro_RO/LC_IDENTIFICATION
+#usr/lib/locale/ro_RO/LC_MEASUREMENT
+#usr/lib/locale/ro_RO/LC_MESSAGES
+#usr/lib/locale/ro_RO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ro_RO/LC_MONETARY
+#usr/lib/locale/ro_RO/LC_NAME
+#usr/lib/locale/ro_RO/LC_NUMERIC
+#usr/lib/locale/ro_RO/LC_PAPER
+#usr/lib/locale/ro_RO/LC_TELEPHONE
+#usr/lib/locale/ro_RO/LC_TIME
+#usr/lib/locale/ru_RU
+#usr/lib/locale/ru_RU.koi8r
+#usr/lib/locale/ru_RU.koi8r/LC_ADDRESS
+#usr/lib/locale/ru_RU.koi8r/LC_COLLATE
+#usr/lib/locale/ru_RU.koi8r/LC_CTYPE
+#usr/lib/locale/ru_RU.koi8r/LC_IDENTIFICATION
+#usr/lib/locale/ru_RU.koi8r/LC_MEASUREMENT
+#usr/lib/locale/ru_RU.koi8r/LC_MESSAGES
+#usr/lib/locale/ru_RU.koi8r/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ru_RU.koi8r/LC_MONETARY
+#usr/lib/locale/ru_RU.koi8r/LC_NAME
+#usr/lib/locale/ru_RU.koi8r/LC_NUMERIC
+#usr/lib/locale/ru_RU.koi8r/LC_PAPER
+#usr/lib/locale/ru_RU.koi8r/LC_TELEPHONE
+#usr/lib/locale/ru_RU.koi8r/LC_TIME
+#usr/lib/locale/ru_RU.utf8
+#usr/lib/locale/ru_RU.utf8/LC_ADDRESS
+#usr/lib/locale/ru_RU.utf8/LC_COLLATE
+#usr/lib/locale/ru_RU.utf8/LC_CTYPE
+#usr/lib/locale/ru_RU.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ru_RU.utf8/LC_MEASUREMENT
+#usr/lib/locale/ru_RU.utf8/LC_MESSAGES
+#usr/lib/locale/ru_RU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ru_RU.utf8/LC_MONETARY
+#usr/lib/locale/ru_RU.utf8/LC_NAME
+#usr/lib/locale/ru_RU.utf8/LC_NUMERIC
+#usr/lib/locale/ru_RU.utf8/LC_PAPER
+#usr/lib/locale/ru_RU.utf8/LC_TELEPHONE
+#usr/lib/locale/ru_RU.utf8/LC_TIME
+#usr/lib/locale/ru_RU/LC_ADDRESS
+#usr/lib/locale/ru_RU/LC_COLLATE
+#usr/lib/locale/ru_RU/LC_CTYPE
+#usr/lib/locale/ru_RU/LC_IDENTIFICATION
+#usr/lib/locale/ru_RU/LC_MEASUREMENT
+#usr/lib/locale/ru_RU/LC_MESSAGES
+#usr/lib/locale/ru_RU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ru_RU/LC_MONETARY
+#usr/lib/locale/ru_RU/LC_NAME
+#usr/lib/locale/ru_RU/LC_NUMERIC
+#usr/lib/locale/ru_RU/LC_PAPER
+#usr/lib/locale/ru_RU/LC_TELEPHONE
+#usr/lib/locale/ru_RU/LC_TIME
+#usr/lib/locale/ru_UA
+#usr/lib/locale/ru_UA.utf8
+#usr/lib/locale/ru_UA.utf8/LC_ADDRESS
+#usr/lib/locale/ru_UA.utf8/LC_COLLATE
+#usr/lib/locale/ru_UA.utf8/LC_CTYPE
+#usr/lib/locale/ru_UA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ru_UA.utf8/LC_MEASUREMENT
+#usr/lib/locale/ru_UA.utf8/LC_MESSAGES
+#usr/lib/locale/ru_UA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ru_UA.utf8/LC_MONETARY
+#usr/lib/locale/ru_UA.utf8/LC_NAME
+#usr/lib/locale/ru_UA.utf8/LC_NUMERIC
+#usr/lib/locale/ru_UA.utf8/LC_PAPER
+#usr/lib/locale/ru_UA.utf8/LC_TELEPHONE
+#usr/lib/locale/ru_UA.utf8/LC_TIME
+#usr/lib/locale/ru_UA/LC_ADDRESS
+#usr/lib/locale/ru_UA/LC_COLLATE
+#usr/lib/locale/ru_UA/LC_CTYPE
+#usr/lib/locale/ru_UA/LC_IDENTIFICATION
+#usr/lib/locale/ru_UA/LC_MEASUREMENT
+#usr/lib/locale/ru_UA/LC_MESSAGES
+#usr/lib/locale/ru_UA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ru_UA/LC_MONETARY
+#usr/lib/locale/ru_UA/LC_NAME
+#usr/lib/locale/ru_UA/LC_NUMERIC
+#usr/lib/locale/ru_UA/LC_PAPER
+#usr/lib/locale/ru_UA/LC_TELEPHONE
+#usr/lib/locale/ru_UA/LC_TIME
+#usr/lib/locale/rw_RW
+#usr/lib/locale/rw_RW/LC_ADDRESS
+#usr/lib/locale/rw_RW/LC_COLLATE
+#usr/lib/locale/rw_RW/LC_CTYPE
+#usr/lib/locale/rw_RW/LC_IDENTIFICATION
+#usr/lib/locale/rw_RW/LC_MEASUREMENT
+#usr/lib/locale/rw_RW/LC_MESSAGES
+#usr/lib/locale/rw_RW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/rw_RW/LC_MONETARY
+#usr/lib/locale/rw_RW/LC_NAME
+#usr/lib/locale/rw_RW/LC_NUMERIC
+#usr/lib/locale/rw_RW/LC_PAPER
+#usr/lib/locale/rw_RW/LC_TELEPHONE
+#usr/lib/locale/rw_RW/LC_TIME
+#usr/lib/locale/sa_IN
+#usr/lib/locale/sa_IN/LC_ADDRESS
+#usr/lib/locale/sa_IN/LC_COLLATE
+#usr/lib/locale/sa_IN/LC_CTYPE
+#usr/lib/locale/sa_IN/LC_IDENTIFICATION
+#usr/lib/locale/sa_IN/LC_MEASUREMENT
+#usr/lib/locale/sa_IN/LC_MESSAGES
+#usr/lib/locale/sa_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sa_IN/LC_MONETARY
+#usr/lib/locale/sa_IN/LC_NAME
+#usr/lib/locale/sa_IN/LC_NUMERIC
+#usr/lib/locale/sa_IN/LC_PAPER
+#usr/lib/locale/sa_IN/LC_TELEPHONE
+#usr/lib/locale/sa_IN/LC_TIME
+#usr/lib/locale/sc_IT
+#usr/lib/locale/sc_IT/LC_ADDRESS
+#usr/lib/locale/sc_IT/LC_COLLATE
+#usr/lib/locale/sc_IT/LC_CTYPE
+#usr/lib/locale/sc_IT/LC_IDENTIFICATION
+#usr/lib/locale/sc_IT/LC_MEASUREMENT
+#usr/lib/locale/sc_IT/LC_MESSAGES
+#usr/lib/locale/sc_IT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sc_IT/LC_MONETARY
+#usr/lib/locale/sc_IT/LC_NAME
+#usr/lib/locale/sc_IT/LC_NUMERIC
+#usr/lib/locale/sc_IT/LC_PAPER
+#usr/lib/locale/sc_IT/LC_TELEPHONE
+#usr/lib/locale/sc_IT/LC_TIME
+#usr/lib/locale/sd_IN
+#usr/lib/locale/sd_IN/LC_ADDRESS
+#usr/lib/locale/sd_IN/LC_COLLATE
+#usr/lib/locale/sd_IN/LC_CTYPE
+#usr/lib/locale/sd_IN/LC_IDENTIFICATION
+#usr/lib/locale/sd_IN/LC_MEASUREMENT
+#usr/lib/locale/sd_IN/LC_MESSAGES
+#usr/lib/locale/sd_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sd_IN/LC_MONETARY
+#usr/lib/locale/sd_IN/LC_NAME
+#usr/lib/locale/sd_IN/LC_NUMERIC
+#usr/lib/locale/sd_IN/LC_PAPER
+#usr/lib/locale/sd_IN/LC_TELEPHONE
+#usr/lib/locale/sd_IN/LC_TIME
+#usr/lib/locale/sd_IN@devanagari
+#usr/lib/locale/sd_IN@devanagari/LC_ADDRESS
+#usr/lib/locale/sd_IN@devanagari/LC_COLLATE
+#usr/lib/locale/sd_IN@devanagari/LC_CTYPE
+#usr/lib/locale/sd_IN@devanagari/LC_IDENTIFICATION
+#usr/lib/locale/sd_IN@devanagari/LC_MEASUREMENT
+#usr/lib/locale/sd_IN@devanagari/LC_MESSAGES
+#usr/lib/locale/sd_IN@devanagari/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sd_IN@devanagari/LC_MONETARY
+#usr/lib/locale/sd_IN@devanagari/LC_NAME
+#usr/lib/locale/sd_IN@devanagari/LC_NUMERIC
+#usr/lib/locale/sd_IN@devanagari/LC_PAPER
+#usr/lib/locale/sd_IN@devanagari/LC_TELEPHONE
+#usr/lib/locale/sd_IN@devanagari/LC_TIME
+#usr/lib/locale/se_NO
+#usr/lib/locale/se_NO/LC_ADDRESS
+#usr/lib/locale/se_NO/LC_COLLATE
+#usr/lib/locale/se_NO/LC_CTYPE
+#usr/lib/locale/se_NO/LC_IDENTIFICATION
+#usr/lib/locale/se_NO/LC_MEASUREMENT
+#usr/lib/locale/se_NO/LC_MESSAGES
+#usr/lib/locale/se_NO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/se_NO/LC_MONETARY
+#usr/lib/locale/se_NO/LC_NAME
+#usr/lib/locale/se_NO/LC_NUMERIC
+#usr/lib/locale/se_NO/LC_PAPER
+#usr/lib/locale/se_NO/LC_TELEPHONE
+#usr/lib/locale/se_NO/LC_TIME
+#usr/lib/locale/shs_CA
+#usr/lib/locale/shs_CA/LC_ADDRESS
+#usr/lib/locale/shs_CA/LC_COLLATE
+#usr/lib/locale/shs_CA/LC_CTYPE
+#usr/lib/locale/shs_CA/LC_IDENTIFICATION
+#usr/lib/locale/shs_CA/LC_MEASUREMENT
+#usr/lib/locale/shs_CA/LC_MESSAGES
+#usr/lib/locale/shs_CA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/shs_CA/LC_MONETARY
+#usr/lib/locale/shs_CA/LC_NAME
+#usr/lib/locale/shs_CA/LC_NUMERIC
+#usr/lib/locale/shs_CA/LC_PAPER
+#usr/lib/locale/shs_CA/LC_TELEPHONE
+#usr/lib/locale/shs_CA/LC_TIME
+#usr/lib/locale/si_LK
+#usr/lib/locale/si_LK/LC_ADDRESS
+#usr/lib/locale/si_LK/LC_COLLATE
+#usr/lib/locale/si_LK/LC_CTYPE
+#usr/lib/locale/si_LK/LC_IDENTIFICATION
+#usr/lib/locale/si_LK/LC_MEASUREMENT
+#usr/lib/locale/si_LK/LC_MESSAGES
+#usr/lib/locale/si_LK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/si_LK/LC_MONETARY
+#usr/lib/locale/si_LK/LC_NAME
+#usr/lib/locale/si_LK/LC_NUMERIC
+#usr/lib/locale/si_LK/LC_PAPER
+#usr/lib/locale/si_LK/LC_TELEPHONE
+#usr/lib/locale/si_LK/LC_TIME
+#usr/lib/locale/sid_ET
+#usr/lib/locale/sid_ET/LC_ADDRESS
+#usr/lib/locale/sid_ET/LC_COLLATE
+#usr/lib/locale/sid_ET/LC_CTYPE
+#usr/lib/locale/sid_ET/LC_IDENTIFICATION
+#usr/lib/locale/sid_ET/LC_MEASUREMENT
+#usr/lib/locale/sid_ET/LC_MESSAGES
+#usr/lib/locale/sid_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sid_ET/LC_MONETARY
+#usr/lib/locale/sid_ET/LC_NAME
+#usr/lib/locale/sid_ET/LC_NUMERIC
+#usr/lib/locale/sid_ET/LC_PAPER
+#usr/lib/locale/sid_ET/LC_TELEPHONE
+#usr/lib/locale/sid_ET/LC_TIME
+#usr/lib/locale/sk_SK
+#usr/lib/locale/sk_SK.utf8
+#usr/lib/locale/sk_SK.utf8/LC_ADDRESS
+#usr/lib/locale/sk_SK.utf8/LC_COLLATE
+#usr/lib/locale/sk_SK.utf8/LC_CTYPE
+#usr/lib/locale/sk_SK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/sk_SK.utf8/LC_MEASUREMENT
+#usr/lib/locale/sk_SK.utf8/LC_MESSAGES
+#usr/lib/locale/sk_SK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sk_SK.utf8/LC_MONETARY
+#usr/lib/locale/sk_SK.utf8/LC_NAME
+#usr/lib/locale/sk_SK.utf8/LC_NUMERIC
+#usr/lib/locale/sk_SK.utf8/LC_PAPER
+#usr/lib/locale/sk_SK.utf8/LC_TELEPHONE
+#usr/lib/locale/sk_SK.utf8/LC_TIME
+#usr/lib/locale/sk_SK/LC_ADDRESS
+#usr/lib/locale/sk_SK/LC_COLLATE
+#usr/lib/locale/sk_SK/LC_CTYPE
+#usr/lib/locale/sk_SK/LC_IDENTIFICATION
+#usr/lib/locale/sk_SK/LC_MEASUREMENT
+#usr/lib/locale/sk_SK/LC_MESSAGES
+#usr/lib/locale/sk_SK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sk_SK/LC_MONETARY
+#usr/lib/locale/sk_SK/LC_NAME
+#usr/lib/locale/sk_SK/LC_NUMERIC
+#usr/lib/locale/sk_SK/LC_PAPER
+#usr/lib/locale/sk_SK/LC_TELEPHONE
+#usr/lib/locale/sk_SK/LC_TIME
+#usr/lib/locale/sl_SI
+#usr/lib/locale/sl_SI.utf8
+#usr/lib/locale/sl_SI.utf8/LC_ADDRESS
+#usr/lib/locale/sl_SI.utf8/LC_COLLATE
+#usr/lib/locale/sl_SI.utf8/LC_CTYPE
+#usr/lib/locale/sl_SI.utf8/LC_IDENTIFICATION
+#usr/lib/locale/sl_SI.utf8/LC_MEASUREMENT
+#usr/lib/locale/sl_SI.utf8/LC_MESSAGES
+#usr/lib/locale/sl_SI.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sl_SI.utf8/LC_MONETARY
+#usr/lib/locale/sl_SI.utf8/LC_NAME
+#usr/lib/locale/sl_SI.utf8/LC_NUMERIC
+#usr/lib/locale/sl_SI.utf8/LC_PAPER
+#usr/lib/locale/sl_SI.utf8/LC_TELEPHONE
+#usr/lib/locale/sl_SI.utf8/LC_TIME
+#usr/lib/locale/sl_SI/LC_ADDRESS
+#usr/lib/locale/sl_SI/LC_COLLATE
+#usr/lib/locale/sl_SI/LC_CTYPE
+#usr/lib/locale/sl_SI/LC_IDENTIFICATION
+#usr/lib/locale/sl_SI/LC_MEASUREMENT
+#usr/lib/locale/sl_SI/LC_MESSAGES
+#usr/lib/locale/sl_SI/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sl_SI/LC_MONETARY
+#usr/lib/locale/sl_SI/LC_NAME
+#usr/lib/locale/sl_SI/LC_NUMERIC
+#usr/lib/locale/sl_SI/LC_PAPER
+#usr/lib/locale/sl_SI/LC_TELEPHONE
+#usr/lib/locale/sl_SI/LC_TIME
+#usr/lib/locale/so_DJ
+#usr/lib/locale/so_DJ.utf8
+#usr/lib/locale/so_DJ.utf8/LC_ADDRESS
+#usr/lib/locale/so_DJ.utf8/LC_COLLATE
+#usr/lib/locale/so_DJ.utf8/LC_CTYPE
+#usr/lib/locale/so_DJ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/so_DJ.utf8/LC_MEASUREMENT
+#usr/lib/locale/so_DJ.utf8/LC_MESSAGES
+#usr/lib/locale/so_DJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_DJ.utf8/LC_MONETARY
+#usr/lib/locale/so_DJ.utf8/LC_NAME
+#usr/lib/locale/so_DJ.utf8/LC_NUMERIC
+#usr/lib/locale/so_DJ.utf8/LC_PAPER
+#usr/lib/locale/so_DJ.utf8/LC_TELEPHONE
+#usr/lib/locale/so_DJ.utf8/LC_TIME
+#usr/lib/locale/so_DJ/LC_ADDRESS
+#usr/lib/locale/so_DJ/LC_COLLATE
+#usr/lib/locale/so_DJ/LC_CTYPE
+#usr/lib/locale/so_DJ/LC_IDENTIFICATION
+#usr/lib/locale/so_DJ/LC_MEASUREMENT
+#usr/lib/locale/so_DJ/LC_MESSAGES
+#usr/lib/locale/so_DJ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_DJ/LC_MONETARY
+#usr/lib/locale/so_DJ/LC_NAME
+#usr/lib/locale/so_DJ/LC_NUMERIC
+#usr/lib/locale/so_DJ/LC_PAPER
+#usr/lib/locale/so_DJ/LC_TELEPHONE
+#usr/lib/locale/so_DJ/LC_TIME
+#usr/lib/locale/so_ET
+#usr/lib/locale/so_ET/LC_ADDRESS
+#usr/lib/locale/so_ET/LC_COLLATE
+#usr/lib/locale/so_ET/LC_CTYPE
+#usr/lib/locale/so_ET/LC_IDENTIFICATION
+#usr/lib/locale/so_ET/LC_MEASUREMENT
+#usr/lib/locale/so_ET/LC_MESSAGES
+#usr/lib/locale/so_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_ET/LC_MONETARY
+#usr/lib/locale/so_ET/LC_NAME
+#usr/lib/locale/so_ET/LC_NUMERIC
+#usr/lib/locale/so_ET/LC_PAPER
+#usr/lib/locale/so_ET/LC_TELEPHONE
+#usr/lib/locale/so_ET/LC_TIME
+#usr/lib/locale/so_KE
+#usr/lib/locale/so_KE.utf8
+#usr/lib/locale/so_KE.utf8/LC_ADDRESS
+#usr/lib/locale/so_KE.utf8/LC_COLLATE
+#usr/lib/locale/so_KE.utf8/LC_CTYPE
+#usr/lib/locale/so_KE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/so_KE.utf8/LC_MEASUREMENT
+#usr/lib/locale/so_KE.utf8/LC_MESSAGES
+#usr/lib/locale/so_KE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_KE.utf8/LC_MONETARY
+#usr/lib/locale/so_KE.utf8/LC_NAME
+#usr/lib/locale/so_KE.utf8/LC_NUMERIC
+#usr/lib/locale/so_KE.utf8/LC_PAPER
+#usr/lib/locale/so_KE.utf8/LC_TELEPHONE
+#usr/lib/locale/so_KE.utf8/LC_TIME
+#usr/lib/locale/so_KE/LC_ADDRESS
+#usr/lib/locale/so_KE/LC_COLLATE
+#usr/lib/locale/so_KE/LC_CTYPE
+#usr/lib/locale/so_KE/LC_IDENTIFICATION
+#usr/lib/locale/so_KE/LC_MEASUREMENT
+#usr/lib/locale/so_KE/LC_MESSAGES
+#usr/lib/locale/so_KE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_KE/LC_MONETARY
+#usr/lib/locale/so_KE/LC_NAME
+#usr/lib/locale/so_KE/LC_NUMERIC
+#usr/lib/locale/so_KE/LC_PAPER
+#usr/lib/locale/so_KE/LC_TELEPHONE
+#usr/lib/locale/so_KE/LC_TIME
+#usr/lib/locale/so_SO
+#usr/lib/locale/so_SO.utf8
+#usr/lib/locale/so_SO.utf8/LC_ADDRESS
+#usr/lib/locale/so_SO.utf8/LC_COLLATE
+#usr/lib/locale/so_SO.utf8/LC_CTYPE
+#usr/lib/locale/so_SO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/so_SO.utf8/LC_MEASUREMENT
+#usr/lib/locale/so_SO.utf8/LC_MESSAGES
+#usr/lib/locale/so_SO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_SO.utf8/LC_MONETARY
+#usr/lib/locale/so_SO.utf8/LC_NAME
+#usr/lib/locale/so_SO.utf8/LC_NUMERIC
+#usr/lib/locale/so_SO.utf8/LC_PAPER
+#usr/lib/locale/so_SO.utf8/LC_TELEPHONE
+#usr/lib/locale/so_SO.utf8/LC_TIME
+#usr/lib/locale/so_SO/LC_ADDRESS
+#usr/lib/locale/so_SO/LC_COLLATE
+#usr/lib/locale/so_SO/LC_CTYPE
+#usr/lib/locale/so_SO/LC_IDENTIFICATION
+#usr/lib/locale/so_SO/LC_MEASUREMENT
+#usr/lib/locale/so_SO/LC_MESSAGES
+#usr/lib/locale/so_SO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_SO/LC_MONETARY
+#usr/lib/locale/so_SO/LC_NAME
+#usr/lib/locale/so_SO/LC_NUMERIC
+#usr/lib/locale/so_SO/LC_PAPER
+#usr/lib/locale/so_SO/LC_TELEPHONE
+#usr/lib/locale/so_SO/LC_TIME
+#usr/lib/locale/sq_AL
+#usr/lib/locale/sq_AL.utf8
+#usr/lib/locale/sq_AL.utf8/LC_ADDRESS
+#usr/lib/locale/sq_AL.utf8/LC_COLLATE
+#usr/lib/locale/sq_AL.utf8/LC_CTYPE
+#usr/lib/locale/sq_AL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/sq_AL.utf8/LC_MEASUREMENT
+#usr/lib/locale/sq_AL.utf8/LC_MESSAGES
+#usr/lib/locale/sq_AL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sq_AL.utf8/LC_MONETARY
+#usr/lib/locale/sq_AL.utf8/LC_NAME
+#usr/lib/locale/sq_AL.utf8/LC_NUMERIC
+#usr/lib/locale/sq_AL.utf8/LC_PAPER
+#usr/lib/locale/sq_AL.utf8/LC_TELEPHONE
+#usr/lib/locale/sq_AL.utf8/LC_TIME
+#usr/lib/locale/sq_AL/LC_ADDRESS
+#usr/lib/locale/sq_AL/LC_COLLATE
+#usr/lib/locale/sq_AL/LC_CTYPE
+#usr/lib/locale/sq_AL/LC_IDENTIFICATION
+#usr/lib/locale/sq_AL/LC_MEASUREMENT
+#usr/lib/locale/sq_AL/LC_MESSAGES
+#usr/lib/locale/sq_AL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sq_AL/LC_MONETARY
+#usr/lib/locale/sq_AL/LC_NAME
+#usr/lib/locale/sq_AL/LC_NUMERIC
+#usr/lib/locale/sq_AL/LC_PAPER
+#usr/lib/locale/sq_AL/LC_TELEPHONE
+#usr/lib/locale/sq_AL/LC_TIME
+#usr/lib/locale/sq_MK
+#usr/lib/locale/sq_MK/LC_ADDRESS
+#usr/lib/locale/sq_MK/LC_COLLATE
+#usr/lib/locale/sq_MK/LC_CTYPE
+#usr/lib/locale/sq_MK/LC_IDENTIFICATION
+#usr/lib/locale/sq_MK/LC_MEASUREMENT
+#usr/lib/locale/sq_MK/LC_MESSAGES
+#usr/lib/locale/sq_MK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sq_MK/LC_MONETARY
+#usr/lib/locale/sq_MK/LC_NAME
+#usr/lib/locale/sq_MK/LC_NUMERIC
+#usr/lib/locale/sq_MK/LC_PAPER
+#usr/lib/locale/sq_MK/LC_TELEPHONE
+#usr/lib/locale/sq_MK/LC_TIME
+#usr/lib/locale/sr_ME
+#usr/lib/locale/sr_ME/LC_ADDRESS
+#usr/lib/locale/sr_ME/LC_COLLATE
+#usr/lib/locale/sr_ME/LC_CTYPE
+#usr/lib/locale/sr_ME/LC_IDENTIFICATION
+#usr/lib/locale/sr_ME/LC_MEASUREMENT
+#usr/lib/locale/sr_ME/LC_MESSAGES
+#usr/lib/locale/sr_ME/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sr_ME/LC_MONETARY
+#usr/lib/locale/sr_ME/LC_NAME
+#usr/lib/locale/sr_ME/LC_NUMERIC
+#usr/lib/locale/sr_ME/LC_PAPER
+#usr/lib/locale/sr_ME/LC_TELEPHONE
+#usr/lib/locale/sr_ME/LC_TIME
+#usr/lib/locale/sr_RS
+#usr/lib/locale/sr_RS/LC_ADDRESS
+#usr/lib/locale/sr_RS/LC_COLLATE
+#usr/lib/locale/sr_RS/LC_CTYPE
+#usr/lib/locale/sr_RS/LC_IDENTIFICATION
+#usr/lib/locale/sr_RS/LC_MEASUREMENT
+#usr/lib/locale/sr_RS/LC_MESSAGES
+#usr/lib/locale/sr_RS/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sr_RS/LC_MONETARY
+#usr/lib/locale/sr_RS/LC_NAME
+#usr/lib/locale/sr_RS/LC_NUMERIC
+#usr/lib/locale/sr_RS/LC_PAPER
+#usr/lib/locale/sr_RS/LC_TELEPHONE
+#usr/lib/locale/sr_RS/LC_TIME
+#usr/lib/locale/sr_RS@latin
+#usr/lib/locale/sr_RS@latin/LC_ADDRESS
+#usr/lib/locale/sr_RS@latin/LC_COLLATE
+#usr/lib/locale/sr_RS@latin/LC_CTYPE
+#usr/lib/locale/sr_RS@latin/LC_IDENTIFICATION
+#usr/lib/locale/sr_RS@latin/LC_MEASUREMENT
+#usr/lib/locale/sr_RS@latin/LC_MESSAGES
+#usr/lib/locale/sr_RS@latin/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sr_RS@latin/LC_MONETARY
+#usr/lib/locale/sr_RS@latin/LC_NAME
+#usr/lib/locale/sr_RS@latin/LC_NUMERIC
+#usr/lib/locale/sr_RS@latin/LC_PAPER
+#usr/lib/locale/sr_RS@latin/LC_TELEPHONE
+#usr/lib/locale/sr_RS@latin/LC_TIME
+#usr/lib/locale/ss_ZA
+#usr/lib/locale/ss_ZA/LC_ADDRESS
+#usr/lib/locale/ss_ZA/LC_COLLATE
+#usr/lib/locale/ss_ZA/LC_CTYPE
+#usr/lib/locale/ss_ZA/LC_IDENTIFICATION
+#usr/lib/locale/ss_ZA/LC_MEASUREMENT
+#usr/lib/locale/ss_ZA/LC_MESSAGES
+#usr/lib/locale/ss_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ss_ZA/LC_MONETARY
+#usr/lib/locale/ss_ZA/LC_NAME
+#usr/lib/locale/ss_ZA/LC_NUMERIC
+#usr/lib/locale/ss_ZA/LC_PAPER
+#usr/lib/locale/ss_ZA/LC_TELEPHONE
+#usr/lib/locale/ss_ZA/LC_TIME
+#usr/lib/locale/st_ZA
+#usr/lib/locale/st_ZA.utf8
+#usr/lib/locale/st_ZA.utf8/LC_ADDRESS
+#usr/lib/locale/st_ZA.utf8/LC_COLLATE
+#usr/lib/locale/st_ZA.utf8/LC_CTYPE
+#usr/lib/locale/st_ZA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/st_ZA.utf8/LC_MEASUREMENT
+#usr/lib/locale/st_ZA.utf8/LC_MESSAGES
+#usr/lib/locale/st_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/st_ZA.utf8/LC_MONETARY
+#usr/lib/locale/st_ZA.utf8/LC_NAME
+#usr/lib/locale/st_ZA.utf8/LC_NUMERIC
+#usr/lib/locale/st_ZA.utf8/LC_PAPER
+#usr/lib/locale/st_ZA.utf8/LC_TELEPHONE
+#usr/lib/locale/st_ZA.utf8/LC_TIME
+#usr/lib/locale/st_ZA/LC_ADDRESS
+#usr/lib/locale/st_ZA/LC_COLLATE
+#usr/lib/locale/st_ZA/LC_CTYPE
+#usr/lib/locale/st_ZA/LC_IDENTIFICATION
+#usr/lib/locale/st_ZA/LC_MEASUREMENT
+#usr/lib/locale/st_ZA/LC_MESSAGES
+#usr/lib/locale/st_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/st_ZA/LC_MONETARY
+#usr/lib/locale/st_ZA/LC_NAME
+#usr/lib/locale/st_ZA/LC_NUMERIC
+#usr/lib/locale/st_ZA/LC_PAPER
+#usr/lib/locale/st_ZA/LC_TELEPHONE
+#usr/lib/locale/st_ZA/LC_TIME
+#usr/lib/locale/sv_FI
+#usr/lib/locale/sv_FI.utf8
+#usr/lib/locale/sv_FI.utf8/LC_ADDRESS
+#usr/lib/locale/sv_FI.utf8/LC_COLLATE
+#usr/lib/locale/sv_FI.utf8/LC_CTYPE
+#usr/lib/locale/sv_FI.utf8/LC_IDENTIFICATION
+#usr/lib/locale/sv_FI.utf8/LC_MEASUREMENT
+#usr/lib/locale/sv_FI.utf8/LC_MESSAGES
+#usr/lib/locale/sv_FI.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_FI.utf8/LC_MONETARY
+#usr/lib/locale/sv_FI.utf8/LC_NAME
+#usr/lib/locale/sv_FI.utf8/LC_NUMERIC
+#usr/lib/locale/sv_FI.utf8/LC_PAPER
+#usr/lib/locale/sv_FI.utf8/LC_TELEPHONE
+#usr/lib/locale/sv_FI.utf8/LC_TIME
+#usr/lib/locale/sv_FI/LC_ADDRESS
+#usr/lib/locale/sv_FI/LC_COLLATE
+#usr/lib/locale/sv_FI/LC_CTYPE
+#usr/lib/locale/sv_FI/LC_IDENTIFICATION
+#usr/lib/locale/sv_FI/LC_MEASUREMENT
+#usr/lib/locale/sv_FI/LC_MESSAGES
+#usr/lib/locale/sv_FI/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_FI/LC_MONETARY
+#usr/lib/locale/sv_FI/LC_NAME
+#usr/lib/locale/sv_FI/LC_NUMERIC
+#usr/lib/locale/sv_FI/LC_PAPER
+#usr/lib/locale/sv_FI/LC_TELEPHONE
+#usr/lib/locale/sv_FI/LC_TIME
+#usr/lib/locale/sv_FI@euro
+#usr/lib/locale/sv_FI@euro/LC_ADDRESS
+#usr/lib/locale/sv_FI@euro/LC_COLLATE
+#usr/lib/locale/sv_FI@euro/LC_CTYPE
+#usr/lib/locale/sv_FI@euro/LC_IDENTIFICATION
+#usr/lib/locale/sv_FI@euro/LC_MEASUREMENT
+#usr/lib/locale/sv_FI@euro/LC_MESSAGES
+#usr/lib/locale/sv_FI@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_FI@euro/LC_MONETARY
+#usr/lib/locale/sv_FI@euro/LC_NAME
+#usr/lib/locale/sv_FI@euro/LC_NUMERIC
+#usr/lib/locale/sv_FI@euro/LC_PAPER
+#usr/lib/locale/sv_FI@euro/LC_TELEPHONE
+#usr/lib/locale/sv_FI@euro/LC_TIME
+#usr/lib/locale/sv_SE
+#usr/lib/locale/sv_SE.iso885915
+#usr/lib/locale/sv_SE.iso885915/LC_ADDRESS
+#usr/lib/locale/sv_SE.iso885915/LC_COLLATE
+#usr/lib/locale/sv_SE.iso885915/LC_CTYPE
+#usr/lib/locale/sv_SE.iso885915/LC_IDENTIFICATION
+#usr/lib/locale/sv_SE.iso885915/LC_MEASUREMENT
+#usr/lib/locale/sv_SE.iso885915/LC_MESSAGES
+#usr/lib/locale/sv_SE.iso885915/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_SE.iso885915/LC_MONETARY
+#usr/lib/locale/sv_SE.iso885915/LC_NAME
+#usr/lib/locale/sv_SE.iso885915/LC_NUMERIC
+#usr/lib/locale/sv_SE.iso885915/LC_PAPER
+#usr/lib/locale/sv_SE.iso885915/LC_TELEPHONE
+#usr/lib/locale/sv_SE.iso885915/LC_TIME
+#usr/lib/locale/sv_SE.utf8
+#usr/lib/locale/sv_SE.utf8/LC_ADDRESS
+#usr/lib/locale/sv_SE.utf8/LC_COLLATE
+#usr/lib/locale/sv_SE.utf8/LC_CTYPE
+#usr/lib/locale/sv_SE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/sv_SE.utf8/LC_MEASUREMENT
+#usr/lib/locale/sv_SE.utf8/LC_MESSAGES
+#usr/lib/locale/sv_SE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_SE.utf8/LC_MONETARY
+#usr/lib/locale/sv_SE.utf8/LC_NAME
+#usr/lib/locale/sv_SE.utf8/LC_NUMERIC
+#usr/lib/locale/sv_SE.utf8/LC_PAPER
+#usr/lib/locale/sv_SE.utf8/LC_TELEPHONE
+#usr/lib/locale/sv_SE.utf8/LC_TIME
+#usr/lib/locale/sv_SE/LC_ADDRESS
+#usr/lib/locale/sv_SE/LC_COLLATE
+#usr/lib/locale/sv_SE/LC_CTYPE
+#usr/lib/locale/sv_SE/LC_IDENTIFICATION
+#usr/lib/locale/sv_SE/LC_MEASUREMENT
+#usr/lib/locale/sv_SE/LC_MESSAGES
+#usr/lib/locale/sv_SE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_SE/LC_MONETARY
+#usr/lib/locale/sv_SE/LC_NAME
+#usr/lib/locale/sv_SE/LC_NUMERIC
+#usr/lib/locale/sv_SE/LC_PAPER
+#usr/lib/locale/sv_SE/LC_TELEPHONE
+#usr/lib/locale/sv_SE/LC_TIME
+#usr/lib/locale/ta_IN
+#usr/lib/locale/ta_IN/LC_ADDRESS
+#usr/lib/locale/ta_IN/LC_COLLATE
+#usr/lib/locale/ta_IN/LC_CTYPE
+#usr/lib/locale/ta_IN/LC_IDENTIFICATION
+#usr/lib/locale/ta_IN/LC_MEASUREMENT
+#usr/lib/locale/ta_IN/LC_MESSAGES
+#usr/lib/locale/ta_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ta_IN/LC_MONETARY
+#usr/lib/locale/ta_IN/LC_NAME
+#usr/lib/locale/ta_IN/LC_NUMERIC
+#usr/lib/locale/ta_IN/LC_PAPER
+#usr/lib/locale/ta_IN/LC_TELEPHONE
+#usr/lib/locale/ta_IN/LC_TIME
+#usr/lib/locale/te_IN
+#usr/lib/locale/te_IN/LC_ADDRESS
+#usr/lib/locale/te_IN/LC_COLLATE
+#usr/lib/locale/te_IN/LC_CTYPE
+#usr/lib/locale/te_IN/LC_IDENTIFICATION
+#usr/lib/locale/te_IN/LC_MEASUREMENT
+#usr/lib/locale/te_IN/LC_MESSAGES
+#usr/lib/locale/te_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/te_IN/LC_MONETARY
+#usr/lib/locale/te_IN/LC_NAME
+#usr/lib/locale/te_IN/LC_NUMERIC
+#usr/lib/locale/te_IN/LC_PAPER
+#usr/lib/locale/te_IN/LC_TELEPHONE
+#usr/lib/locale/te_IN/LC_TIME
+#usr/lib/locale/tg_TJ
+#usr/lib/locale/tg_TJ.utf8
+#usr/lib/locale/tg_TJ.utf8/LC_ADDRESS
+#usr/lib/locale/tg_TJ.utf8/LC_COLLATE
+#usr/lib/locale/tg_TJ.utf8/LC_CTYPE
+#usr/lib/locale/tg_TJ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/tg_TJ.utf8/LC_MEASUREMENT
+#usr/lib/locale/tg_TJ.utf8/LC_MESSAGES
+#usr/lib/locale/tg_TJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tg_TJ.utf8/LC_MONETARY
+#usr/lib/locale/tg_TJ.utf8/LC_NAME
+#usr/lib/locale/tg_TJ.utf8/LC_NUMERIC
+#usr/lib/locale/tg_TJ.utf8/LC_PAPER
+#usr/lib/locale/tg_TJ.utf8/LC_TELEPHONE
+#usr/lib/locale/tg_TJ.utf8/LC_TIME
+#usr/lib/locale/tg_TJ/LC_ADDRESS
+#usr/lib/locale/tg_TJ/LC_COLLATE
+#usr/lib/locale/tg_TJ/LC_CTYPE
+#usr/lib/locale/tg_TJ/LC_IDENTIFICATION
+#usr/lib/locale/tg_TJ/LC_MEASUREMENT
+#usr/lib/locale/tg_TJ/LC_MESSAGES
+#usr/lib/locale/tg_TJ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tg_TJ/LC_MONETARY
+#usr/lib/locale/tg_TJ/LC_NAME
+#usr/lib/locale/tg_TJ/LC_NUMERIC
+#usr/lib/locale/tg_TJ/LC_PAPER
+#usr/lib/locale/tg_TJ/LC_TELEPHONE
+#usr/lib/locale/tg_TJ/LC_TIME
+#usr/lib/locale/th_TH
+#usr/lib/locale/th_TH.utf8
+#usr/lib/locale/th_TH.utf8/LC_ADDRESS
+#usr/lib/locale/th_TH.utf8/LC_COLLATE
+#usr/lib/locale/th_TH.utf8/LC_CTYPE
+#usr/lib/locale/th_TH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/th_TH.utf8/LC_MEASUREMENT
+#usr/lib/locale/th_TH.utf8/LC_MESSAGES
+#usr/lib/locale/th_TH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/th_TH.utf8/LC_MONETARY
+#usr/lib/locale/th_TH.utf8/LC_NAME
+#usr/lib/locale/th_TH.utf8/LC_NUMERIC
+#usr/lib/locale/th_TH.utf8/LC_PAPER
+#usr/lib/locale/th_TH.utf8/LC_TELEPHONE
+#usr/lib/locale/th_TH.utf8/LC_TIME
+#usr/lib/locale/th_TH/LC_ADDRESS
+#usr/lib/locale/th_TH/LC_COLLATE
+#usr/lib/locale/th_TH/LC_CTYPE
+#usr/lib/locale/th_TH/LC_IDENTIFICATION
+#usr/lib/locale/th_TH/LC_MEASUREMENT
+#usr/lib/locale/th_TH/LC_MESSAGES
+#usr/lib/locale/th_TH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/th_TH/LC_MONETARY
+#usr/lib/locale/th_TH/LC_NAME
+#usr/lib/locale/th_TH/LC_NUMERIC
+#usr/lib/locale/th_TH/LC_PAPER
+#usr/lib/locale/th_TH/LC_TELEPHONE
+#usr/lib/locale/th_TH/LC_TIME
+#usr/lib/locale/ti_ER
+#usr/lib/locale/ti_ER/LC_ADDRESS
+#usr/lib/locale/ti_ER/LC_COLLATE
+#usr/lib/locale/ti_ER/LC_CTYPE
+#usr/lib/locale/ti_ER/LC_IDENTIFICATION
+#usr/lib/locale/ti_ER/LC_MEASUREMENT
+#usr/lib/locale/ti_ER/LC_MESSAGES
+#usr/lib/locale/ti_ER/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ti_ER/LC_MONETARY
+#usr/lib/locale/ti_ER/LC_NAME
+#usr/lib/locale/ti_ER/LC_NUMERIC
+#usr/lib/locale/ti_ER/LC_PAPER
+#usr/lib/locale/ti_ER/LC_TELEPHONE
+#usr/lib/locale/ti_ER/LC_TIME
+#usr/lib/locale/ti_ET
+#usr/lib/locale/ti_ET/LC_ADDRESS
+#usr/lib/locale/ti_ET/LC_COLLATE
+#usr/lib/locale/ti_ET/LC_CTYPE
+#usr/lib/locale/ti_ET/LC_IDENTIFICATION
+#usr/lib/locale/ti_ET/LC_MEASUREMENT
+#usr/lib/locale/ti_ET/LC_MESSAGES
+#usr/lib/locale/ti_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ti_ET/LC_MONETARY
+#usr/lib/locale/ti_ET/LC_NAME
+#usr/lib/locale/ti_ET/LC_NUMERIC
+#usr/lib/locale/ti_ET/LC_PAPER
+#usr/lib/locale/ti_ET/LC_TELEPHONE
+#usr/lib/locale/ti_ET/LC_TIME
+#usr/lib/locale/tig_ER
+#usr/lib/locale/tig_ER/LC_ADDRESS
+#usr/lib/locale/tig_ER/LC_COLLATE
+#usr/lib/locale/tig_ER/LC_CTYPE
+#usr/lib/locale/tig_ER/LC_IDENTIFICATION
+#usr/lib/locale/tig_ER/LC_MEASUREMENT
+#usr/lib/locale/tig_ER/LC_MESSAGES
+#usr/lib/locale/tig_ER/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tig_ER/LC_MONETARY
+#usr/lib/locale/tig_ER/LC_NAME
+#usr/lib/locale/tig_ER/LC_NUMERIC
+#usr/lib/locale/tig_ER/LC_PAPER
+#usr/lib/locale/tig_ER/LC_TELEPHONE
+#usr/lib/locale/tig_ER/LC_TIME
+#usr/lib/locale/tk_TM
+#usr/lib/locale/tk_TM/LC_ADDRESS
+#usr/lib/locale/tk_TM/LC_COLLATE
+#usr/lib/locale/tk_TM/LC_CTYPE
+#usr/lib/locale/tk_TM/LC_IDENTIFICATION
+#usr/lib/locale/tk_TM/LC_MEASUREMENT
+#usr/lib/locale/tk_TM/LC_MESSAGES
+#usr/lib/locale/tk_TM/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tk_TM/LC_MONETARY
+#usr/lib/locale/tk_TM/LC_NAME
+#usr/lib/locale/tk_TM/LC_NUMERIC
+#usr/lib/locale/tk_TM/LC_PAPER
+#usr/lib/locale/tk_TM/LC_TELEPHONE
+#usr/lib/locale/tk_TM/LC_TIME
+#usr/lib/locale/tl_PH
+#usr/lib/locale/tl_PH.utf8
+#usr/lib/locale/tl_PH.utf8/LC_ADDRESS
+#usr/lib/locale/tl_PH.utf8/LC_COLLATE
+#usr/lib/locale/tl_PH.utf8/LC_CTYPE
+#usr/lib/locale/tl_PH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/tl_PH.utf8/LC_MEASUREMENT
+#usr/lib/locale/tl_PH.utf8/LC_MESSAGES
+#usr/lib/locale/tl_PH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tl_PH.utf8/LC_MONETARY
+#usr/lib/locale/tl_PH.utf8/LC_NAME
+#usr/lib/locale/tl_PH.utf8/LC_NUMERIC
+#usr/lib/locale/tl_PH.utf8/LC_PAPER
+#usr/lib/locale/tl_PH.utf8/LC_TELEPHONE
+#usr/lib/locale/tl_PH.utf8/LC_TIME
+#usr/lib/locale/tl_PH/LC_ADDRESS
+#usr/lib/locale/tl_PH/LC_COLLATE
+#usr/lib/locale/tl_PH/LC_CTYPE
+#usr/lib/locale/tl_PH/LC_IDENTIFICATION
+#usr/lib/locale/tl_PH/LC_MEASUREMENT
+#usr/lib/locale/tl_PH/LC_MESSAGES
+#usr/lib/locale/tl_PH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tl_PH/LC_MONETARY
+#usr/lib/locale/tl_PH/LC_NAME
+#usr/lib/locale/tl_PH/LC_NUMERIC
+#usr/lib/locale/tl_PH/LC_PAPER
+#usr/lib/locale/tl_PH/LC_TELEPHONE
+#usr/lib/locale/tl_PH/LC_TIME
+#usr/lib/locale/tn_ZA
+#usr/lib/locale/tn_ZA/LC_ADDRESS
+#usr/lib/locale/tn_ZA/LC_COLLATE
+#usr/lib/locale/tn_ZA/LC_CTYPE
+#usr/lib/locale/tn_ZA/LC_IDENTIFICATION
+#usr/lib/locale/tn_ZA/LC_MEASUREMENT
+#usr/lib/locale/tn_ZA/LC_MESSAGES
+#usr/lib/locale/tn_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tn_ZA/LC_MONETARY
+#usr/lib/locale/tn_ZA/LC_NAME
+#usr/lib/locale/tn_ZA/LC_NUMERIC
+#usr/lib/locale/tn_ZA/LC_PAPER
+#usr/lib/locale/tn_ZA/LC_TELEPHONE
+#usr/lib/locale/tn_ZA/LC_TIME
+#usr/lib/locale/tr_CY
+#usr/lib/locale/tr_CY.utf8
+#usr/lib/locale/tr_CY.utf8/LC_ADDRESS
+#usr/lib/locale/tr_CY.utf8/LC_COLLATE
+#usr/lib/locale/tr_CY.utf8/LC_CTYPE
+#usr/lib/locale/tr_CY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/tr_CY.utf8/LC_MEASUREMENT
+#usr/lib/locale/tr_CY.utf8/LC_MESSAGES
+#usr/lib/locale/tr_CY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tr_CY.utf8/LC_MONETARY
+#usr/lib/locale/tr_CY.utf8/LC_NAME
+#usr/lib/locale/tr_CY.utf8/LC_NUMERIC
+#usr/lib/locale/tr_CY.utf8/LC_PAPER
+#usr/lib/locale/tr_CY.utf8/LC_TELEPHONE
+#usr/lib/locale/tr_CY.utf8/LC_TIME
+#usr/lib/locale/tr_CY/LC_ADDRESS
+#usr/lib/locale/tr_CY/LC_COLLATE
+#usr/lib/locale/tr_CY/LC_CTYPE
+#usr/lib/locale/tr_CY/LC_IDENTIFICATION
+#usr/lib/locale/tr_CY/LC_MEASUREMENT
+#usr/lib/locale/tr_CY/LC_MESSAGES
+#usr/lib/locale/tr_CY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tr_CY/LC_MONETARY
+#usr/lib/locale/tr_CY/LC_NAME
+#usr/lib/locale/tr_CY/LC_NUMERIC
+#usr/lib/locale/tr_CY/LC_PAPER
+#usr/lib/locale/tr_CY/LC_TELEPHONE
+#usr/lib/locale/tr_CY/LC_TIME
+#usr/lib/locale/tr_TR
+#usr/lib/locale/tr_TR.utf8
+#usr/lib/locale/tr_TR.utf8/LC_ADDRESS
+#usr/lib/locale/tr_TR.utf8/LC_COLLATE
+#usr/lib/locale/tr_TR.utf8/LC_CTYPE
+#usr/lib/locale/tr_TR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/tr_TR.utf8/LC_MEASUREMENT
+#usr/lib/locale/tr_TR.utf8/LC_MESSAGES
+#usr/lib/locale/tr_TR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tr_TR.utf8/LC_MONETARY
+#usr/lib/locale/tr_TR.utf8/LC_NAME
+#usr/lib/locale/tr_TR.utf8/LC_NUMERIC
+#usr/lib/locale/tr_TR.utf8/LC_PAPER
+#usr/lib/locale/tr_TR.utf8/LC_TELEPHONE
+#usr/lib/locale/tr_TR.utf8/LC_TIME
+#usr/lib/locale/tr_TR/LC_ADDRESS
+#usr/lib/locale/tr_TR/LC_COLLATE
+#usr/lib/locale/tr_TR/LC_CTYPE
+#usr/lib/locale/tr_TR/LC_IDENTIFICATION
+#usr/lib/locale/tr_TR/LC_MEASUREMENT
+#usr/lib/locale/tr_TR/LC_MESSAGES
+#usr/lib/locale/tr_TR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tr_TR/LC_MONETARY
+#usr/lib/locale/tr_TR/LC_NAME
+#usr/lib/locale/tr_TR/LC_NUMERIC
+#usr/lib/locale/tr_TR/LC_PAPER
+#usr/lib/locale/tr_TR/LC_TELEPHONE
+#usr/lib/locale/tr_TR/LC_TIME
+#usr/lib/locale/ts_ZA
+#usr/lib/locale/ts_ZA/LC_ADDRESS
+#usr/lib/locale/ts_ZA/LC_COLLATE
+#usr/lib/locale/ts_ZA/LC_CTYPE
+#usr/lib/locale/ts_ZA/LC_IDENTIFICATION
+#usr/lib/locale/ts_ZA/LC_MEASUREMENT
+#usr/lib/locale/ts_ZA/LC_MESSAGES
+#usr/lib/locale/ts_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ts_ZA/LC_MONETARY
+#usr/lib/locale/ts_ZA/LC_NAME
+#usr/lib/locale/ts_ZA/LC_NUMERIC
+#usr/lib/locale/ts_ZA/LC_PAPER
+#usr/lib/locale/ts_ZA/LC_TELEPHONE
+#usr/lib/locale/ts_ZA/LC_TIME
+#usr/lib/locale/tt_RU
+#usr/lib/locale/tt_RU/LC_ADDRESS
+#usr/lib/locale/tt_RU/LC_COLLATE
+#usr/lib/locale/tt_RU/LC_CTYPE
+#usr/lib/locale/tt_RU/LC_IDENTIFICATION
+#usr/lib/locale/tt_RU/LC_MEASUREMENT
+#usr/lib/locale/tt_RU/LC_MESSAGES
+#usr/lib/locale/tt_RU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tt_RU/LC_MONETARY
+#usr/lib/locale/tt_RU/LC_NAME
+#usr/lib/locale/tt_RU/LC_NUMERIC
+#usr/lib/locale/tt_RU/LC_PAPER
+#usr/lib/locale/tt_RU/LC_TELEPHONE
+#usr/lib/locale/tt_RU/LC_TIME
+#usr/lib/locale/tt_RU@iqtelif
+#usr/lib/locale/tt_RU@iqtelif/LC_ADDRESS
+#usr/lib/locale/tt_RU@iqtelif/LC_COLLATE
+#usr/lib/locale/tt_RU@iqtelif/LC_CTYPE
+#usr/lib/locale/tt_RU@iqtelif/LC_IDENTIFICATION
+#usr/lib/locale/tt_RU@iqtelif/LC_MEASUREMENT
+#usr/lib/locale/tt_RU@iqtelif/LC_MESSAGES
+#usr/lib/locale/tt_RU@iqtelif/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tt_RU@iqtelif/LC_MONETARY
+#usr/lib/locale/tt_RU@iqtelif/LC_NAME
+#usr/lib/locale/tt_RU@iqtelif/LC_NUMERIC
+#usr/lib/locale/tt_RU@iqtelif/LC_PAPER
+#usr/lib/locale/tt_RU@iqtelif/LC_TELEPHONE
+#usr/lib/locale/tt_RU@iqtelif/LC_TIME
+#usr/lib/locale/ug_CN
+#usr/lib/locale/ug_CN/LC_ADDRESS
+#usr/lib/locale/ug_CN/LC_COLLATE
+#usr/lib/locale/ug_CN/LC_CTYPE
+#usr/lib/locale/ug_CN/LC_IDENTIFICATION
+#usr/lib/locale/ug_CN/LC_MEASUREMENT
+#usr/lib/locale/ug_CN/LC_MESSAGES
+#usr/lib/locale/ug_CN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ug_CN/LC_MONETARY
+#usr/lib/locale/ug_CN/LC_NAME
+#usr/lib/locale/ug_CN/LC_NUMERIC
+#usr/lib/locale/ug_CN/LC_PAPER
+#usr/lib/locale/ug_CN/LC_TELEPHONE
+#usr/lib/locale/ug_CN/LC_TIME
+#usr/lib/locale/uk_UA
+#usr/lib/locale/uk_UA.utf8
+#usr/lib/locale/uk_UA.utf8/LC_ADDRESS
+#usr/lib/locale/uk_UA.utf8/LC_COLLATE
+#usr/lib/locale/uk_UA.utf8/LC_CTYPE
+#usr/lib/locale/uk_UA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/uk_UA.utf8/LC_MEASUREMENT
+#usr/lib/locale/uk_UA.utf8/LC_MESSAGES
+#usr/lib/locale/uk_UA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/uk_UA.utf8/LC_MONETARY
+#usr/lib/locale/uk_UA.utf8/LC_NAME
+#usr/lib/locale/uk_UA.utf8/LC_NUMERIC
+#usr/lib/locale/uk_UA.utf8/LC_PAPER
+#usr/lib/locale/uk_UA.utf8/LC_TELEPHONE
+#usr/lib/locale/uk_UA.utf8/LC_TIME
+#usr/lib/locale/uk_UA/LC_ADDRESS
+#usr/lib/locale/uk_UA/LC_COLLATE
+#usr/lib/locale/uk_UA/LC_CTYPE
+#usr/lib/locale/uk_UA/LC_IDENTIFICATION
+#usr/lib/locale/uk_UA/LC_MEASUREMENT
+#usr/lib/locale/uk_UA/LC_MESSAGES
+#usr/lib/locale/uk_UA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/uk_UA/LC_MONETARY
+#usr/lib/locale/uk_UA/LC_NAME
+#usr/lib/locale/uk_UA/LC_NUMERIC
+#usr/lib/locale/uk_UA/LC_PAPER
+#usr/lib/locale/uk_UA/LC_TELEPHONE
+#usr/lib/locale/uk_UA/LC_TIME
+#usr/lib/locale/ur_PK
+#usr/lib/locale/ur_PK/LC_ADDRESS
+#usr/lib/locale/ur_PK/LC_COLLATE
+#usr/lib/locale/ur_PK/LC_CTYPE
+#usr/lib/locale/ur_PK/LC_IDENTIFICATION
+#usr/lib/locale/ur_PK/LC_MEASUREMENT
+#usr/lib/locale/ur_PK/LC_MESSAGES
+#usr/lib/locale/ur_PK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ur_PK/LC_MONETARY
+#usr/lib/locale/ur_PK/LC_NAME
+#usr/lib/locale/ur_PK/LC_NUMERIC
+#usr/lib/locale/ur_PK/LC_PAPER
+#usr/lib/locale/ur_PK/LC_TELEPHONE
+#usr/lib/locale/ur_PK/LC_TIME
+#usr/lib/locale/uz_UZ
+#usr/lib/locale/uz_UZ/LC_ADDRESS
+#usr/lib/locale/uz_UZ/LC_COLLATE
+#usr/lib/locale/uz_UZ/LC_CTYPE
+#usr/lib/locale/uz_UZ/LC_IDENTIFICATION
+#usr/lib/locale/uz_UZ/LC_MEASUREMENT
+#usr/lib/locale/uz_UZ/LC_MESSAGES
+#usr/lib/locale/uz_UZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/uz_UZ/LC_MONETARY
+#usr/lib/locale/uz_UZ/LC_NAME
+#usr/lib/locale/uz_UZ/LC_NUMERIC
+#usr/lib/locale/uz_UZ/LC_PAPER
+#usr/lib/locale/uz_UZ/LC_TELEPHONE
+#usr/lib/locale/uz_UZ/LC_TIME
+#usr/lib/locale/uz_UZ@cyrillic
+#usr/lib/locale/uz_UZ@cyrillic/LC_ADDRESS
+#usr/lib/locale/uz_UZ@cyrillic/LC_COLLATE
+#usr/lib/locale/uz_UZ@cyrillic/LC_CTYPE
+#usr/lib/locale/uz_UZ@cyrillic/LC_IDENTIFICATION
+#usr/lib/locale/uz_UZ@cyrillic/LC_MEASUREMENT
+#usr/lib/locale/uz_UZ@cyrillic/LC_MESSAGES
+#usr/lib/locale/uz_UZ@cyrillic/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/uz_UZ@cyrillic/LC_MONETARY
+#usr/lib/locale/uz_UZ@cyrillic/LC_NAME
+#usr/lib/locale/uz_UZ@cyrillic/LC_NUMERIC
+#usr/lib/locale/uz_UZ@cyrillic/LC_PAPER
+#usr/lib/locale/uz_UZ@cyrillic/LC_TELEPHONE
+#usr/lib/locale/uz_UZ@cyrillic/LC_TIME
+#usr/lib/locale/ve_ZA
+#usr/lib/locale/ve_ZA/LC_ADDRESS
+#usr/lib/locale/ve_ZA/LC_COLLATE
+#usr/lib/locale/ve_ZA/LC_CTYPE
+#usr/lib/locale/ve_ZA/LC_IDENTIFICATION
+#usr/lib/locale/ve_ZA/LC_MEASUREMENT
+#usr/lib/locale/ve_ZA/LC_MESSAGES
+#usr/lib/locale/ve_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ve_ZA/LC_MONETARY
+#usr/lib/locale/ve_ZA/LC_NAME
+#usr/lib/locale/ve_ZA/LC_NUMERIC
+#usr/lib/locale/ve_ZA/LC_PAPER
+#usr/lib/locale/ve_ZA/LC_TELEPHONE
+#usr/lib/locale/ve_ZA/LC_TIME
+#usr/lib/locale/vi_VN
+#usr/lib/locale/vi_VN.tcvn
+#usr/lib/locale/vi_VN.tcvn/LC_ADDRESS
+#usr/lib/locale/vi_VN.tcvn/LC_COLLATE
+#usr/lib/locale/vi_VN.tcvn/LC_CTYPE
+#usr/lib/locale/vi_VN.tcvn/LC_IDENTIFICATION
+#usr/lib/locale/vi_VN.tcvn/LC_MEASUREMENT
+#usr/lib/locale/vi_VN.tcvn/LC_MESSAGES
+#usr/lib/locale/vi_VN.tcvn/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/vi_VN.tcvn/LC_MONETARY
+#usr/lib/locale/vi_VN.tcvn/LC_NAME
+#usr/lib/locale/vi_VN.tcvn/LC_NUMERIC
+#usr/lib/locale/vi_VN.tcvn/LC_PAPER
+#usr/lib/locale/vi_VN.tcvn/LC_TELEPHONE
+#usr/lib/locale/vi_VN.tcvn/LC_TIME
+#usr/lib/locale/vi_VN/LC_ADDRESS
+#usr/lib/locale/vi_VN/LC_COLLATE
+#usr/lib/locale/vi_VN/LC_CTYPE
+#usr/lib/locale/vi_VN/LC_IDENTIFICATION
+#usr/lib/locale/vi_VN/LC_MEASUREMENT
+#usr/lib/locale/vi_VN/LC_MESSAGES
+#usr/lib/locale/vi_VN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/vi_VN/LC_MONETARY
+#usr/lib/locale/vi_VN/LC_NAME
+#usr/lib/locale/vi_VN/LC_NUMERIC
+#usr/lib/locale/vi_VN/LC_PAPER
+#usr/lib/locale/vi_VN/LC_TELEPHONE
+#usr/lib/locale/vi_VN/LC_TIME
+#usr/lib/locale/wa_BE
+#usr/lib/locale/wa_BE.utf8
+#usr/lib/locale/wa_BE.utf8/LC_ADDRESS
+#usr/lib/locale/wa_BE.utf8/LC_COLLATE
+#usr/lib/locale/wa_BE.utf8/LC_CTYPE
+#usr/lib/locale/wa_BE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/wa_BE.utf8/LC_MEASUREMENT
+#usr/lib/locale/wa_BE.utf8/LC_MESSAGES
+#usr/lib/locale/wa_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/wa_BE.utf8/LC_MONETARY
+#usr/lib/locale/wa_BE.utf8/LC_NAME
+#usr/lib/locale/wa_BE.utf8/LC_NUMERIC
+#usr/lib/locale/wa_BE.utf8/LC_PAPER
+#usr/lib/locale/wa_BE.utf8/LC_TELEPHONE
+#usr/lib/locale/wa_BE.utf8/LC_TIME
+#usr/lib/locale/wa_BE/LC_ADDRESS
+#usr/lib/locale/wa_BE/LC_COLLATE
+#usr/lib/locale/wa_BE/LC_CTYPE
+#usr/lib/locale/wa_BE/LC_IDENTIFICATION
+#usr/lib/locale/wa_BE/LC_MEASUREMENT
+#usr/lib/locale/wa_BE/LC_MESSAGES
+#usr/lib/locale/wa_BE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/wa_BE/LC_MONETARY
+#usr/lib/locale/wa_BE/LC_NAME
+#usr/lib/locale/wa_BE/LC_NUMERIC
+#usr/lib/locale/wa_BE/LC_PAPER
+#usr/lib/locale/wa_BE/LC_TELEPHONE
+#usr/lib/locale/wa_BE/LC_TIME
+#usr/lib/locale/wa_BE@euro
+#usr/lib/locale/wa_BE@euro/LC_ADDRESS
+#usr/lib/locale/wa_BE@euro/LC_COLLATE
+#usr/lib/locale/wa_BE@euro/LC_CTYPE
+#usr/lib/locale/wa_BE@euro/LC_IDENTIFICATION
+#usr/lib/locale/wa_BE@euro/LC_MEASUREMENT
+#usr/lib/locale/wa_BE@euro/LC_MESSAGES
+#usr/lib/locale/wa_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/wa_BE@euro/LC_MONETARY
+#usr/lib/locale/wa_BE@euro/LC_NAME
+#usr/lib/locale/wa_BE@euro/LC_NUMERIC
+#usr/lib/locale/wa_BE@euro/LC_PAPER
+#usr/lib/locale/wa_BE@euro/LC_TELEPHONE
+#usr/lib/locale/wa_BE@euro/LC_TIME
+#usr/lib/locale/wo_SN
+#usr/lib/locale/wo_SN/LC_ADDRESS
+#usr/lib/locale/wo_SN/LC_COLLATE
+#usr/lib/locale/wo_SN/LC_CTYPE
+#usr/lib/locale/wo_SN/LC_IDENTIFICATION
+#usr/lib/locale/wo_SN/LC_MEASUREMENT
+#usr/lib/locale/wo_SN/LC_MESSAGES
+#usr/lib/locale/wo_SN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/wo_SN/LC_MONETARY
+#usr/lib/locale/wo_SN/LC_NAME
+#usr/lib/locale/wo_SN/LC_NUMERIC
+#usr/lib/locale/wo_SN/LC_PAPER
+#usr/lib/locale/wo_SN/LC_TELEPHONE
+#usr/lib/locale/wo_SN/LC_TIME
+#usr/lib/locale/xh_ZA
+#usr/lib/locale/xh_ZA.utf8
+#usr/lib/locale/xh_ZA.utf8/LC_ADDRESS
+#usr/lib/locale/xh_ZA.utf8/LC_COLLATE
+#usr/lib/locale/xh_ZA.utf8/LC_CTYPE
+#usr/lib/locale/xh_ZA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/xh_ZA.utf8/LC_MEASUREMENT
+#usr/lib/locale/xh_ZA.utf8/LC_MESSAGES
+#usr/lib/locale/xh_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/xh_ZA.utf8/LC_MONETARY
+#usr/lib/locale/xh_ZA.utf8/LC_NAME
+#usr/lib/locale/xh_ZA.utf8/LC_NUMERIC
+#usr/lib/locale/xh_ZA.utf8/LC_PAPER
+#usr/lib/locale/xh_ZA.utf8/LC_TELEPHONE
+#usr/lib/locale/xh_ZA.utf8/LC_TIME
+#usr/lib/locale/xh_ZA/LC_ADDRESS
+#usr/lib/locale/xh_ZA/LC_COLLATE
+#usr/lib/locale/xh_ZA/LC_CTYPE
+#usr/lib/locale/xh_ZA/LC_IDENTIFICATION
+#usr/lib/locale/xh_ZA/LC_MEASUREMENT
+#usr/lib/locale/xh_ZA/LC_MESSAGES
+#usr/lib/locale/xh_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/xh_ZA/LC_MONETARY
+#usr/lib/locale/xh_ZA/LC_NAME
+#usr/lib/locale/xh_ZA/LC_NUMERIC
+#usr/lib/locale/xh_ZA/LC_PAPER
+#usr/lib/locale/xh_ZA/LC_TELEPHONE
+#usr/lib/locale/xh_ZA/LC_TIME
+#usr/lib/locale/yi_US
+#usr/lib/locale/yi_US.utf8
+#usr/lib/locale/yi_US.utf8/LC_ADDRESS
+#usr/lib/locale/yi_US.utf8/LC_COLLATE
+#usr/lib/locale/yi_US.utf8/LC_CTYPE
+#usr/lib/locale/yi_US.utf8/LC_IDENTIFICATION
+#usr/lib/locale/yi_US.utf8/LC_MEASUREMENT
+#usr/lib/locale/yi_US.utf8/LC_MESSAGES
+#usr/lib/locale/yi_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/yi_US.utf8/LC_MONETARY
+#usr/lib/locale/yi_US.utf8/LC_NAME
+#usr/lib/locale/yi_US.utf8/LC_NUMERIC
+#usr/lib/locale/yi_US.utf8/LC_PAPER
+#usr/lib/locale/yi_US.utf8/LC_TELEPHONE
+#usr/lib/locale/yi_US.utf8/LC_TIME
+#usr/lib/locale/yi_US/LC_ADDRESS
+#usr/lib/locale/yi_US/LC_COLLATE
+#usr/lib/locale/yi_US/LC_CTYPE
+#usr/lib/locale/yi_US/LC_IDENTIFICATION
+#usr/lib/locale/yi_US/LC_MEASUREMENT
+#usr/lib/locale/yi_US/LC_MESSAGES
+#usr/lib/locale/yi_US/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/yi_US/LC_MONETARY
+#usr/lib/locale/yi_US/LC_NAME
+#usr/lib/locale/yi_US/LC_NUMERIC
+#usr/lib/locale/yi_US/LC_PAPER
+#usr/lib/locale/yi_US/LC_TELEPHONE
+#usr/lib/locale/yi_US/LC_TIME
+#usr/lib/locale/yo_NG
+#usr/lib/locale/yo_NG/LC_ADDRESS
+#usr/lib/locale/yo_NG/LC_COLLATE
+#usr/lib/locale/yo_NG/LC_CTYPE
+#usr/lib/locale/yo_NG/LC_IDENTIFICATION
+#usr/lib/locale/yo_NG/LC_MEASUREMENT
+#usr/lib/locale/yo_NG/LC_MESSAGES
+#usr/lib/locale/yo_NG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/yo_NG/LC_MONETARY
+#usr/lib/locale/yo_NG/LC_NAME
+#usr/lib/locale/yo_NG/LC_NUMERIC
+#usr/lib/locale/yo_NG/LC_PAPER
+#usr/lib/locale/yo_NG/LC_TELEPHONE
+#usr/lib/locale/yo_NG/LC_TIME
+#usr/lib/locale/zh_CN
+#usr/lib/locale/zh_CN.gb18030
+#usr/lib/locale/zh_CN.gb18030/LC_ADDRESS
+#usr/lib/locale/zh_CN.gb18030/LC_COLLATE
+#usr/lib/locale/zh_CN.gb18030/LC_CTYPE
+#usr/lib/locale/zh_CN.gb18030/LC_IDENTIFICATION
+#usr/lib/locale/zh_CN.gb18030/LC_MEASUREMENT
+#usr/lib/locale/zh_CN.gb18030/LC_MESSAGES
+#usr/lib/locale/zh_CN.gb18030/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_CN.gb18030/LC_MONETARY
+#usr/lib/locale/zh_CN.gb18030/LC_NAME
+#usr/lib/locale/zh_CN.gb18030/LC_NUMERIC
+#usr/lib/locale/zh_CN.gb18030/LC_PAPER
+#usr/lib/locale/zh_CN.gb18030/LC_TELEPHONE
+#usr/lib/locale/zh_CN.gb18030/LC_TIME
+#usr/lib/locale/zh_CN.gbk
+#usr/lib/locale/zh_CN.gbk/LC_ADDRESS
+#usr/lib/locale/zh_CN.gbk/LC_COLLATE
+#usr/lib/locale/zh_CN.gbk/LC_CTYPE
+#usr/lib/locale/zh_CN.gbk/LC_IDENTIFICATION
+#usr/lib/locale/zh_CN.gbk/LC_MEASUREMENT
+#usr/lib/locale/zh_CN.gbk/LC_MESSAGES
+#usr/lib/locale/zh_CN.gbk/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_CN.gbk/LC_MONETARY
+#usr/lib/locale/zh_CN.gbk/LC_NAME
+#usr/lib/locale/zh_CN.gbk/LC_NUMERIC
+#usr/lib/locale/zh_CN.gbk/LC_PAPER
+#usr/lib/locale/zh_CN.gbk/LC_TELEPHONE
+#usr/lib/locale/zh_CN.gbk/LC_TIME
+#usr/lib/locale/zh_CN.utf8
+#usr/lib/locale/zh_CN.utf8/LC_ADDRESS
+#usr/lib/locale/zh_CN.utf8/LC_COLLATE
+#usr/lib/locale/zh_CN.utf8/LC_CTYPE
+#usr/lib/locale/zh_CN.utf8/LC_IDENTIFICATION
+#usr/lib/locale/zh_CN.utf8/LC_MEASUREMENT
+#usr/lib/locale/zh_CN.utf8/LC_MESSAGES
+#usr/lib/locale/zh_CN.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_CN.utf8/LC_MONETARY
+#usr/lib/locale/zh_CN.utf8/LC_NAME
+#usr/lib/locale/zh_CN.utf8/LC_NUMERIC
+#usr/lib/locale/zh_CN.utf8/LC_PAPER
+#usr/lib/locale/zh_CN.utf8/LC_TELEPHONE
+#usr/lib/locale/zh_CN.utf8/LC_TIME
+#usr/lib/locale/zh_CN/LC_ADDRESS
+#usr/lib/locale/zh_CN/LC_COLLATE
+#usr/lib/locale/zh_CN/LC_CTYPE
+#usr/lib/locale/zh_CN/LC_IDENTIFICATION
+#usr/lib/locale/zh_CN/LC_MEASUREMENT
+#usr/lib/locale/zh_CN/LC_MESSAGES
+#usr/lib/locale/zh_CN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_CN/LC_MONETARY
+#usr/lib/locale/zh_CN/LC_NAME
+#usr/lib/locale/zh_CN/LC_NUMERIC
+#usr/lib/locale/zh_CN/LC_PAPER
+#usr/lib/locale/zh_CN/LC_TELEPHONE
+#usr/lib/locale/zh_CN/LC_TIME
+#usr/lib/locale/zh_HK
+#usr/lib/locale/zh_HK.utf8
+#usr/lib/locale/zh_HK.utf8/LC_ADDRESS
+#usr/lib/locale/zh_HK.utf8/LC_COLLATE
+#usr/lib/locale/zh_HK.utf8/LC_CTYPE
+#usr/lib/locale/zh_HK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/zh_HK.utf8/LC_MEASUREMENT
+#usr/lib/locale/zh_HK.utf8/LC_MESSAGES
+#usr/lib/locale/zh_HK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_HK.utf8/LC_MONETARY
+#usr/lib/locale/zh_HK.utf8/LC_NAME
+#usr/lib/locale/zh_HK.utf8/LC_NUMERIC
+#usr/lib/locale/zh_HK.utf8/LC_PAPER
+#usr/lib/locale/zh_HK.utf8/LC_TELEPHONE
+#usr/lib/locale/zh_HK.utf8/LC_TIME
+#usr/lib/locale/zh_HK/LC_ADDRESS
+#usr/lib/locale/zh_HK/LC_COLLATE
+#usr/lib/locale/zh_HK/LC_CTYPE
+#usr/lib/locale/zh_HK/LC_IDENTIFICATION
+#usr/lib/locale/zh_HK/LC_MEASUREMENT
+#usr/lib/locale/zh_HK/LC_MESSAGES
+#usr/lib/locale/zh_HK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_HK/LC_MONETARY
+#usr/lib/locale/zh_HK/LC_NAME
+#usr/lib/locale/zh_HK/LC_NUMERIC
+#usr/lib/locale/zh_HK/LC_PAPER
+#usr/lib/locale/zh_HK/LC_TELEPHONE
+#usr/lib/locale/zh_HK/LC_TIME
+#usr/lib/locale/zh_SG
+#usr/lib/locale/zh_SG.gbk
+#usr/lib/locale/zh_SG.gbk/LC_ADDRESS
+#usr/lib/locale/zh_SG.gbk/LC_COLLATE
+#usr/lib/locale/zh_SG.gbk/LC_CTYPE
+#usr/lib/locale/zh_SG.gbk/LC_IDENTIFICATION
+#usr/lib/locale/zh_SG.gbk/LC_MEASUREMENT
+#usr/lib/locale/zh_SG.gbk/LC_MESSAGES
+#usr/lib/locale/zh_SG.gbk/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_SG.gbk/LC_MONETARY
+#usr/lib/locale/zh_SG.gbk/LC_NAME
+#usr/lib/locale/zh_SG.gbk/LC_NUMERIC
+#usr/lib/locale/zh_SG.gbk/LC_PAPER
+#usr/lib/locale/zh_SG.gbk/LC_TELEPHONE
+#usr/lib/locale/zh_SG.gbk/LC_TIME
+#usr/lib/locale/zh_SG.utf8
+#usr/lib/locale/zh_SG.utf8/LC_ADDRESS
+#usr/lib/locale/zh_SG.utf8/LC_COLLATE
+#usr/lib/locale/zh_SG.utf8/LC_CTYPE
+#usr/lib/locale/zh_SG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/zh_SG.utf8/LC_MEASUREMENT
+#usr/lib/locale/zh_SG.utf8/LC_MESSAGES
+#usr/lib/locale/zh_SG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_SG.utf8/LC_MONETARY
+#usr/lib/locale/zh_SG.utf8/LC_NAME
+#usr/lib/locale/zh_SG.utf8/LC_NUMERIC
+#usr/lib/locale/zh_SG.utf8/LC_PAPER
+#usr/lib/locale/zh_SG.utf8/LC_TELEPHONE
+#usr/lib/locale/zh_SG.utf8/LC_TIME
+#usr/lib/locale/zh_SG/LC_ADDRESS
+#usr/lib/locale/zh_SG/LC_COLLATE
+#usr/lib/locale/zh_SG/LC_CTYPE
+#usr/lib/locale/zh_SG/LC_IDENTIFICATION
+#usr/lib/locale/zh_SG/LC_MEASUREMENT
+#usr/lib/locale/zh_SG/LC_MESSAGES
+#usr/lib/locale/zh_SG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_SG/LC_MONETARY
+#usr/lib/locale/zh_SG/LC_NAME
+#usr/lib/locale/zh_SG/LC_NUMERIC
+#usr/lib/locale/zh_SG/LC_PAPER
+#usr/lib/locale/zh_SG/LC_TELEPHONE
+#usr/lib/locale/zh_SG/LC_TIME
+#usr/lib/locale/zh_TW
+#usr/lib/locale/zh_TW.euctw
+#usr/lib/locale/zh_TW.euctw/LC_ADDRESS
+#usr/lib/locale/zh_TW.euctw/LC_COLLATE
+#usr/lib/locale/zh_TW.euctw/LC_CTYPE
+#usr/lib/locale/zh_TW.euctw/LC_IDENTIFICATION
+#usr/lib/locale/zh_TW.euctw/LC_MEASUREMENT
+#usr/lib/locale/zh_TW.euctw/LC_MESSAGES
+#usr/lib/locale/zh_TW.euctw/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_TW.euctw/LC_MONETARY
+#usr/lib/locale/zh_TW.euctw/LC_NAME
+#usr/lib/locale/zh_TW.euctw/LC_NUMERIC
+#usr/lib/locale/zh_TW.euctw/LC_PAPER
+#usr/lib/locale/zh_TW.euctw/LC_TELEPHONE
+#usr/lib/locale/zh_TW.euctw/LC_TIME
+#usr/lib/locale/zh_TW.utf8
+#usr/lib/locale/zh_TW.utf8/LC_ADDRESS
+#usr/lib/locale/zh_TW.utf8/LC_COLLATE
+#usr/lib/locale/zh_TW.utf8/LC_CTYPE
+#usr/lib/locale/zh_TW.utf8/LC_IDENTIFICATION
+#usr/lib/locale/zh_TW.utf8/LC_MEASUREMENT
+#usr/lib/locale/zh_TW.utf8/LC_MESSAGES
+#usr/lib/locale/zh_TW.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_TW.utf8/LC_MONETARY
+#usr/lib/locale/zh_TW.utf8/LC_NAME
+#usr/lib/locale/zh_TW.utf8/LC_NUMERIC
+#usr/lib/locale/zh_TW.utf8/LC_PAPER
+#usr/lib/locale/zh_TW.utf8/LC_TELEPHONE
+#usr/lib/locale/zh_TW.utf8/LC_TIME
+#usr/lib/locale/zh_TW/LC_ADDRESS
+#usr/lib/locale/zh_TW/LC_COLLATE
+#usr/lib/locale/zh_TW/LC_CTYPE
+#usr/lib/locale/zh_TW/LC_IDENTIFICATION
+#usr/lib/locale/zh_TW/LC_MEASUREMENT
+#usr/lib/locale/zh_TW/LC_MESSAGES
+#usr/lib/locale/zh_TW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_TW/LC_MONETARY
+#usr/lib/locale/zh_TW/LC_NAME
+#usr/lib/locale/zh_TW/LC_NUMERIC
+#usr/lib/locale/zh_TW/LC_PAPER
+#usr/lib/locale/zh_TW/LC_TELEPHONE
+#usr/lib/locale/zh_TW/LC_TIME
+#usr/lib/locale/zu_ZA
+#usr/lib/locale/zu_ZA.utf8
+#usr/lib/locale/zu_ZA.utf8/LC_ADDRESS
+#usr/lib/locale/zu_ZA.utf8/LC_COLLATE
+#usr/lib/locale/zu_ZA.utf8/LC_CTYPE
+#usr/lib/locale/zu_ZA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/zu_ZA.utf8/LC_MEASUREMENT
+#usr/lib/locale/zu_ZA.utf8/LC_MESSAGES
+#usr/lib/locale/zu_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zu_ZA.utf8/LC_MONETARY
+#usr/lib/locale/zu_ZA.utf8/LC_NAME
+#usr/lib/locale/zu_ZA.utf8/LC_NUMERIC
+#usr/lib/locale/zu_ZA.utf8/LC_PAPER
+#usr/lib/locale/zu_ZA.utf8/LC_TELEPHONE
+#usr/lib/locale/zu_ZA.utf8/LC_TIME
+#usr/lib/locale/zu_ZA/LC_ADDRESS
+#usr/lib/locale/zu_ZA/LC_COLLATE
+#usr/lib/locale/zu_ZA/LC_CTYPE
+#usr/lib/locale/zu_ZA/LC_IDENTIFICATION
+#usr/lib/locale/zu_ZA/LC_MEASUREMENT
+#usr/lib/locale/zu_ZA/LC_MESSAGES
+#usr/lib/locale/zu_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zu_ZA/LC_MONETARY
+#usr/lib/locale/zu_ZA/LC_NAME
+#usr/lib/locale/zu_ZA/LC_NUMERIC
+#usr/lib/locale/zu_ZA/LC_PAPER
+#usr/lib/locale/zu_ZA/LC_TELEPHONE
+#usr/lib/locale/zu_ZA/LC_TIME
 #usr/sbin/iconvconfig
 #usr/sbin/nscd
 #usr/sbin/rpcinfo
index 1a613ac34a447999c44b81d6583d1d2544fd4d4a..5d5c6920490f847f710759131c7dc78d5a91b445 100644 (file)
@@ -34,10 +34,11 @@ etc/rc.d/init.d/functions
 #etc/rc.d/init.d/gnump3d
 etc/rc.d/init.d/halt
 #etc/rc.d/init.d/hostapd
-#etc/rc.d/init.d/icecream
 #etc/rc.d/init.d/imspector
 etc/rc.d/init.d/ipsec
+#etc/rc.d/init.d/keepalived
 #etc/rc.d/init.d/lcd4linux
+#etc/rc.d/init.d/lcdproc
 #etc/rc.d/init.d/lcr
 etc/rc.d/init.d/leds
 etc/rc.d/init.d/localnet
@@ -62,6 +63,7 @@ etc/rc.d/init.d/network-vlans
 etc/rc.d/init.d/networking/any
 etc/rc.d/init.d/networking/blue
 etc/rc.d/init.d/networking/dhcpcd.exe
+etc/rc.d/init.d/networking/functions.network
 etc/rc.d/init.d/networking/green
 etc/rc.d/init.d/networking/orange
 etc/rc.d/init.d/networking/red
@@ -71,27 +73,23 @@ etc/rc.d/init.d/networking/red.down/10-ipsec
 etc/rc.d/init.d/networking/red.down/10-miniupnpd
 etc/rc.d/init.d/networking/red.down/10-ovpn
 etc/rc.d/init.d/networking/red.down/20-RL-firewall
-etc/rc.d/init.d/networking/red.down/99-D-dialctrl.pl
 #etc/rc.d/init.d/networking/red.up
 etc/rc.d/init.d/networking/red.up/01-conntrack-cleanup
 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/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
 etc/rc.d/init.d/networking/red.up/50-ipsec
 etc/rc.d/init.d/networking/red.up/50-ovpn
 etc/rc.d/init.d/networking/red.up/98-leds
-etc/rc.d/init.d/networking/red.up/99-U-dialctrl.pl
 etc/rc.d/init.d/networking/red.up/99-fireinfo
 etc/rc.d/init.d/networking/red.up/99-pakfire-update
+etc/rc.d/init.d/networking/wpa_supplicant.exe
 #etc/rc.d/init.d/nfs-server
 etc/rc.d/init.d/ntp
 #etc/rc.d/init.d/nut
@@ -104,6 +102,7 @@ etc/rc.d/init.d/fsresize
 etc/rc.d/init.d/random
 etc/rc.d/init.d/rc
 etc/rc.d/init.d/reboot
+etc/rc.d/init.d/rngd
 #etc/rc.d/init.d/samba
 #etc/rc.d/init.d/sane
 etc/rc.d/init.d/sendsignals
@@ -115,6 +114,7 @@ etc/rc.d/init.d/squid
 etc/rc.d/init.d/sshd
 #etc/rc.d/init.d/sslh
 etc/rc.d/init.d/static-routes
+#etc/rc.d/init.d/stunnel
 etc/rc.d/init.d/swap
 etc/rc.d/init.d/sysctl
 etc/rc.d/init.d/sysklogd
@@ -122,6 +122,7 @@ etc/rc.d/init.d/teamspeak
 etc/rc.d/init.d/template
 #etc/rc.d/init.d/tftpd
 etc/rc.d/init.d/tmpfs
+#etc/rc.d/init.d/tor
 etc/rc.d/init.d/udev
 etc/rc.d/init.d/udev_retry
 etc/rc.d/init.d/upnpd
@@ -130,6 +131,7 @@ etc/rc.d/init.d/upnpd
 #etc/rc.d/init.d/vsftpd
 #etc/rc.d/init.d/watchdog
 #etc/rc.d/init.d/winbind
+etc/rc.d/init.d/wlanclient
 #etc/rc.d/init.d/xinetd
 #etc/rc.d/rc0.d
 #etc/rc.d/rc0.d/K01imspetor
@@ -147,6 +149,7 @@ etc/rc.d/rc0.d/K49cyrus-sasl
 etc/rc.d/rc0.d/K78snort
 etc/rc.d/rc0.d/K79leds
 etc/rc.d/rc0.d/K80network
+etc/rc.d/rc0.d/K82wlanclient
 #etc/rc.d/rc0.d/K84bluetooth
 #etc/rc.d/rc0.d/K85messagebus
 etc/rc.d/rc0.d/K85tmpfs
@@ -163,6 +166,7 @@ etc/rc.d/rc3.d/S10sysklogd
 #etc/rc.d/rc3.d/S16bluetooth
 #etc/rc.d/rc3.d/S18cpufreq
 etc/rc.d/rc3.d/S19smartenabler
+etc/rc.d/rc3.d/S19wlanclient
 etc/rc.d/rc3.d/S20network
 etc/rc.d/rc3.d/S21leds
 etc/rc.d/rc3.d/S24cyrus-sasl
@@ -193,6 +197,7 @@ etc/rc.d/rc6.d/K49cyrus-sasl
 etc/rc.d/rc6.d/K78snort
 etc/rc.d/rc6.d/K79leds
 etc/rc.d/rc6.d/K80network
+etc/rc.d/rc6.d/K82wlanclient
 #etc/rc.d/rc6.d/K84bluetooth
 #etc/rc.d/rc6.d/K85messagebus
 etc/rc.d/rc6.d/K85tmpfs
@@ -204,6 +209,7 @@ etc/rc.d/rc6.d/S90localnet
 etc/rc.d/rc6.d/S99reboot
 #etc/rc.d/rcsysinit.d
 etc/rc.d/rcsysinit.d/S00mountkernfs
+etc/rc.d/rcsysinit.d/S01sysctl
 etc/rc.d/rcsysinit.d/S05modules
 etc/rc.d/rcsysinit.d/S10udev
 etc/rc.d/rcsysinit.d/S19waitdrives
@@ -216,8 +222,9 @@ etc/rc.d/rcsysinit.d/S60setclock
 etc/rc.d/rcsysinit.d/S70console
 etc/rc.d/rcsysinit.d/S75firstsetup
 etc/rc.d/rcsysinit.d/S80localnet
-etc/rc.d/rcsysinit.d/S90sysctl
+etc/rc.d/rcsysinit.d/S85firewall
 etc/rc.d/rcsysinit.d/S91network-vlans
+etc/rc.d/rcsysinit.d/S92rngd
 etc/rc.d/rc3.d/S15fireinfo
 #etc/sysconfig
 etc/sysconfig/createfiles
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 2206ce3c1379bd2cefde4a8d016411a85c163ed9..8c4c97f2e9dc4ee7d2eefb1d383b23654545c2f7 100644 (file)
@@ -1,4 +1,4 @@
-etc/modprobe.d/framebuffer
-etc/modprobe.d/ipv6
-etc/modprobe.d/isdn
+etc/modprobe.d/framebuffer.conf
+etc/modprobe.d/ipv6.conf
+etc/modprobe.d/isdn.conf
 sbin/gen_init_cpio
index 3b8dd3a70079a6d21359614aaeb2c683d4c70e16..7fa9a2463f92150d8ca0df6baf73ce0c028dca7a 100644 (file)
@@ -10,6 +10,7 @@
 #usr/include/asm-generic/ioctl.h
 #usr/include/asm-generic/ioctls.h
 #usr/include/asm-generic/ipcbuf.h
+#usr/include/asm-generic/kvm_para.h
 #usr/include/asm-generic/mman-common.h
 #usr/include/asm-generic/mman.h
 #usr/include/asm-generic/msgbuf.h
@@ -34,7 +35,6 @@
 #usr/include/asm-generic/types.h
 #usr/include/asm-generic/ucontext.h
 #usr/include/asm-generic/unistd.h
-#usr/include/asm/a.out.h
 #usr/include/asm/auxvec.h
 #usr/include/asm/bitsperlong.h
 #usr/include/asm/byteorder.h
@@ -44,6 +44,8 @@
 #usr/include/asm/ioctl.h
 #usr/include/asm/ioctls.h
 #usr/include/asm/ipcbuf.h
+#usr/include/asm/kvm.h
+#usr/include/asm/kvm_para.h
 #usr/include/asm/mman.h
 #usr/include/asm/msgbuf.h
 #usr/include/asm/param.h
 #usr/include/asm/unistd.h
 #usr/include/drm
 #usr/include/drm/drm.h
+#usr/include/drm/drm_fourcc.h
 #usr/include/drm/drm_mode.h
 #usr/include/drm/drm_sarea.h
+#usr/include/drm/exynos_drm.h
 #usr/include/drm/i810_drm.h
 #usr/include/drm/i915_drm.h
 #usr/include/drm/mga_drm.h
 #usr/include/drm/nouveau_drm.h
+#usr/include/drm/qxl_drm.h
 #usr/include/drm/r128_drm.h
 #usr/include/drm/radeon_drm.h
 #usr/include/drm/savage_drm.h
 #usr/include/drm/sis_drm.h
+#usr/include/drm/tegra_drm.h
 #usr/include/drm/via_drm.h
 #usr/include/drm/vmwgfx_drm.h
 #usr/include/linux
-#usr/include/linux/a.out.h
 #usr/include/linux/acct.h
 #usr/include/linux/adb.h
 #usr/include/linux/adfs_fs.h
 #usr/include/linux/baycom.h
 #usr/include/linux/bfs_fs.h
 #usr/include/linux/binfmts.h
-#usr/include/linux/blk_types.h
 #usr/include/linux/blkpg.h
 #usr/include/linux/blktrace_api.h
 #usr/include/linux/bpqether.h
 #usr/include/linux/bsg.h
+#usr/include/linux/btrfs.h
 #usr/include/linux/byteorder
 #usr/include/linux/byteorder/big_endian.h
 #usr/include/linux/byteorder/little_endian.h
 #usr/include/linux/capi.h
 #usr/include/linux/cciss_defs.h
 #usr/include/linux/cciss_ioctl.h
-#usr/include/linux/cdk.h
 #usr/include/linux/cdrom.h
 #usr/include/linux/cgroupstats.h
 #usr/include/linux/chio.h
 #usr/include/linux/coda.h
 #usr/include/linux/coda_psdev.h
 #usr/include/linux/coff.h
-#usr/include/linux/comstats.h
 #usr/include/linux/connector.h
 #usr/include/linux/const.h
 #usr/include/linux/cramfs_fs.h
 #usr/include/linux/errqueue.h
 #usr/include/linux/ethtool.h
 #usr/include/linux/eventpoll.h
-#usr/include/linux/ext2_fs.h
 #usr/include/linux/fadvise.h
 #usr/include/linux/falloc.h
 #usr/include/linux/fanotify.h
 #usr/include/linux/futex.h
 #usr/include/linux/gameport.h
 #usr/include/linux/gen_stats.h
-#usr/include/linux/generic_serial.h
 #usr/include/linux/genetlink.h
 #usr/include/linux/gfs2_ondisk.h
 #usr/include/linux/gigaset_dev.h
 #usr/include/linux/hiddev.h
 #usr/include/linux/hidraw.h
 #usr/include/linux/hpet.h
+#usr/include/linux/hsi
+#usr/include/linux/hsi/hsi_char.h
+#usr/include/linux/hw_breakpoint.h
 #usr/include/linux/hysdn_if.h
 #usr/include/linux/i2c-dev.h
 #usr/include/linux/i2c.h
 #usr/include/linux/if_bonding.h
 #usr/include/linux/if_bridge.h
 #usr/include/linux/if_cablemodem.h
-#usr/include/linux/if_ec.h
 #usr/include/linux/if_eql.h
 #usr/include/linux/if_ether.h
 #usr/include/linux/if_fc.h
 #usr/include/linux/if_pppol2tp.h
 #usr/include/linux/if_pppox.h
 #usr/include/linux/if_slip.h
-#usr/include/linux/if_strip.h
-#usr/include/linux/if_tr.h
+#usr/include/linux/if_team.h
 #usr/include/linux/if_tun.h
 #usr/include/linux/if_tunnel.h
 #usr/include/linux/if_vlan.h
 #usr/include/linux/kernel-page-flags.h
 #usr/include/linux/kernel.h
 #usr/include/linux/kernelcapi.h
+#usr/include/linux/kexec.h
 #usr/include/linux/keyboard.h
 #usr/include/linux/keyctl.h
+#usr/include/linux/kvm.h
+#usr/include/linux/kvm_para.h
 #usr/include/linux/l2tp.h
 #usr/include/linux/limits.h
 #usr/include/linux/llc.h
 #usr/include/linux/major.h
 #usr/include/linux/map_to_7segment.h
 #usr/include/linux/matroxfb.h
+#usr/include/linux/mdio.h
 #usr/include/linux/media.h
+#usr/include/linux/mei.h
 #usr/include/linux/mempolicy.h
 #usr/include/linux/meye.h
 #usr/include/linux/mii.h
 #usr/include/linux/net.h
 #usr/include/linux/net_dropmon.h
 #usr/include/linux/net_tstamp.h
+#usr/include/linux/netconf.h
 #usr/include/linux/netdevice.h
 #usr/include/linux/netfilter
 #usr/include/linux/netfilter.h
 #usr/include/linux/netfilter/nf_conntrack_sctp.h
 #usr/include/linux/netfilter/nf_conntrack_tcp.h
 #usr/include/linux/netfilter/nf_conntrack_tuple_common.h
+#usr/include/linux/netfilter/nf_nat.h
 #usr/include/linux/netfilter/nfnetlink.h
+#usr/include/linux/netfilter/nfnetlink_acct.h
 #usr/include/linux/netfilter/nfnetlink_compat.h
 #usr/include/linux/netfilter/nfnetlink_conntrack.h
+#usr/include/linux/netfilter/nfnetlink_cthelper.h
+#usr/include/linux/netfilter/nfnetlink_cttimeout.h
 #usr/include/linux/netfilter/nfnetlink_log.h
 #usr/include/linux/netfilter/nfnetlink_queue.h
 #usr/include/linux/netfilter/x_tables.h
 #usr/include/linux/netfilter/xt_DSCP.h
 #usr/include/linux/netfilter/xt_IDLETIMER.h
 #usr/include/linux/netfilter/xt_LED.h
+#usr/include/linux/netfilter/xt_LOG.h
 #usr/include/linux/netfilter/xt_MARK.h
 #usr/include/linux/netfilter/xt_NFLOG.h
 #usr/include/linux/netfilter/xt_NFQUEUE.h
 #usr/include/linux/netfilter/xt_TEE.h
 #usr/include/linux/netfilter/xt_TPROXY.h
 #usr/include/linux/netfilter/xt_addrtype.h
+#usr/include/linux/netfilter/xt_bpf.h
 #usr/include/linux/netfilter/xt_cluster.h
 #usr/include/linux/netfilter/xt_comment.h
 #usr/include/linux/netfilter/xt_connbytes.h
+#usr/include/linux/netfilter/xt_connlabel.h
 #usr/include/linux/netfilter/xt_connlimit.h
 #usr/include/linux/netfilter/xt_connmark.h
 #usr/include/linux/netfilter/xt_conntrack.h
 #usr/include/linux/netfilter/xt_dccp.h
 #usr/include/linux/netfilter/xt_devgroup.h
 #usr/include/linux/netfilter/xt_dscp.h
+#usr/include/linux/netfilter/xt_ecn.h
 #usr/include/linux/netfilter/xt_esp.h
 #usr/include/linux/netfilter/xt_hashlimit.h
 #usr/include/linux/netfilter/xt_helper.h
 #usr/include/linux/netfilter/xt_iprange.h
 #usr/include/linux/netfilter/xt_ipvs.h
+#usr/include/linux/netfilter/xt_layer7.h
 #usr/include/linux/netfilter/xt_length.h
 #usr/include/linux/netfilter/xt_limit.h
 #usr/include/linux/netfilter/xt_mac.h
 #usr/include/linux/netfilter/xt_mark.h
 #usr/include/linux/netfilter/xt_multiport.h
+#usr/include/linux/netfilter/xt_nfacct.h
 #usr/include/linux/netfilter/xt_osf.h
 #usr/include/linux/netfilter/xt_owner.h
 #usr/include/linux/netfilter/xt_physdev.h
 #usr/include/linux/netfilter_decnet.h
 #usr/include/linux/netfilter_ipv4
 #usr/include/linux/netfilter_ipv4.h
-#usr/include/linux/netfilter_ipv4/ip_queue.h
 #usr/include/linux/netfilter_ipv4/ip_tables.h
 #usr/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
 #usr/include/linux/netfilter_ipv4/ipt_ECN.h
 #usr/include/linux/netfilter_ipv4/ipt_LOG.h
 #usr/include/linux/netfilter_ipv4/ipt_REJECT.h
-#usr/include/linux/netfilter_ipv4/ipt_SAME.h
 #usr/include/linux/netfilter_ipv4/ipt_TTL.h
 #usr/include/linux/netfilter_ipv4/ipt_ULOG.h
-#usr/include/linux/netfilter_ipv4/ipt_addrtype.h
 #usr/include/linux/netfilter_ipv4/ipt_ah.h
 #usr/include/linux/netfilter_ipv4/ipt_ecn.h
-#usr/include/linux/netfilter_ipv4/ipt_realm.h
 #usr/include/linux/netfilter_ipv4/ipt_ttl.h
-#usr/include/linux/netfilter_ipv4/nf_nat.h
 #usr/include/linux/netfilter_ipv6
 #usr/include/linux/netfilter_ipv6.h
 #usr/include/linux/netfilter_ipv6/ip6_tables.h
 #usr/include/linux/netfilter_ipv6/ip6t_HL.h
 #usr/include/linux/netfilter_ipv6/ip6t_LOG.h
+#usr/include/linux/netfilter_ipv6/ip6t_NPT.h
 #usr/include/linux/netfilter_ipv6/ip6t_REJECT.h
 #usr/include/linux/netfilter_ipv6/ip6t_ah.h
 #usr/include/linux/netfilter_ipv6/ip6t_frag.h
 #usr/include/linux/netfilter_ipv6/ip6t_opts.h
 #usr/include/linux/netfilter_ipv6/ip6t_rt.h
 #usr/include/linux/netlink.h
+#usr/include/linux/netlink_diag.h
 #usr/include/linux/netrom.h
 #usr/include/linux/nfc.h
 #usr/include/linux/nfs.h
 #usr/include/linux/nfs_mount.h
 #usr/include/linux/nfsacl.h
 #usr/include/linux/nfsd
+#usr/include/linux/nfsd/cld.h
 #usr/include/linux/nfsd/debug.h
 #usr/include/linux/nfsd/export.h
 #usr/include/linux/nfsd/nfsfh.h
 #usr/include/linux/omap3isp.h
 #usr/include/linux/omapfb.h
 #usr/include/linux/oom.h
+#usr/include/linux/openvswitch.h
+#usr/include/linux/packet_diag.h
 #usr/include/linux/param.h
 #usr/include/linux/parport.h
 #usr/include/linux/patchkey.h
 #usr/include/linux/posix_types.h
 #usr/include/linux/ppdev.h
 #usr/include/linux/ppp-comp.h
+#usr/include/linux/ppp-ioctl.h
 #usr/include/linux/ppp_defs.h
 #usr/include/linux/pps.h
 #usr/include/linux/prctl.h
 #usr/include/linux/scc.h
 #usr/include/linux/sched.h
 #usr/include/linux/screen_info.h
+#usr/include/linux/sctp.h
 #usr/include/linux/sdla.h
+#usr/include/linux/seccomp.h
 #usr/include/linux/securebits.h
 #usr/include/linux/selinux_netlink.h
 #usr/include/linux/sem.h
 #usr/include/linux/signal.h
 #usr/include/linux/signalfd.h
 #usr/include/linux/snmp.h
+#usr/include/linux/sock_diag.h
 #usr/include/linux/socket.h
 #usr/include/linux/sockios.h
 #usr/include/linux/som.h
 #usr/include/linux/swab.h
 #usr/include/linux/synclink.h
 #usr/include/linux/sysctl.h
+#usr/include/linux/sysinfo.h
 #usr/include/linux/taskstats.h
 #usr/include/linux/tc_act
 #usr/include/linux/tc_act/tc_csum.h
 #usr/include/linux/tc_ematch/tc_em_nbyte.h
 #usr/include/linux/tc_ematch/tc_em_text.h
 #usr/include/linux/tcp.h
+#usr/include/linux/tcp_metrics.h
 #usr/include/linux/telephony.h
 #usr/include/linux/termios.h
 #usr/include/linux/time.h
 #usr/include/linux/tipc_config.h
 #usr/include/linux/toshiba.h
 #usr/include/linux/tty.h
+#usr/include/linux/tty_flags.h
 #usr/include/linux/types.h
 #usr/include/linux/udf_fs_i.h
 #usr/include/linux/udp.h
+#usr/include/linux/uhid.h
 #usr/include/linux/uinput.h
 #usr/include/linux/uio.h
 #usr/include/linux/ultrasound.h
 #usr/include/linux/un.h
 #usr/include/linux/unistd.h
+#usr/include/linux/unix_diag.h
 #usr/include/linux/usb
 #usr/include/linux/usb/audio.h
+#usr/include/linux/usb/cdc-wdm.h
 #usr/include/linux/usb/cdc.h
 #usr/include/linux/usb/ch11.h
 #usr/include/linux/usb/ch9.h
 #usr/include/linux/usbdevice_fs.h
 #usr/include/linux/utime.h
 #usr/include/linux/utsname.h
+#usr/include/linux/uuid.h
 #usr/include/linux/uvcvideo.h
+#usr/include/linux/v4l2-common.h
+#usr/include/linux/v4l2-controls.h
+#usr/include/linux/v4l2-dv-timings.h
 #usr/include/linux/v4l2-mediabus.h
 #usr/include/linux/v4l2-subdev.h
 #usr/include/linux/version.h
 #usr/include/linux/veth.h
+#usr/include/linux/vfio.h
 #usr/include/linux/vhost.h
 #usr/include/linux/videodev2.h
 #usr/include/linux/virtio_9p.h
 #usr/include/sound/asequencer.h
 #usr/include/sound/asound.h
 #usr/include/sound/asound_fm.h
+#usr/include/sound/compress_offload.h
+#usr/include/sound/compress_params.h
 #usr/include/sound/emu10k1.h
 #usr/include/sound/hdsp.h
 #usr/include/sound/hdspm.h
 #usr/include/sound/sb16_csp.h
 #usr/include/sound/sfnt_info.h
+#usr/include/uapi
 #usr/include/video
 #usr/include/video/edid.h
 #usr/include/video/sisfb.h
index c24aebeb272f321084bafcfc42c4b5fd355e6e3b..4880b60ffe7a6bd4f18da36d5b0cee16cd14f7be 100644 (file)
@@ -1,22 +1,53 @@
 boot/System.map-KVER-ipfire-kirkwood
 #boot/System.map-ipfire-kirkwood
 boot/config-KVER-ipfire-kirkwood
+boot/dtb-KVER-ipfire-kirkwood
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-cloudbox.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-dns320.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-dns325.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-dockstar.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-dreamplug.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-goflexnet.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-guruplug-server-plus.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-ib62x0.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-iconnect.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-iomega_ix2_200.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-is2.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-km_kirkwood.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-lschlv2.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-lsxhl.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-mplcec4.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-netgear_readynas_duo_v2.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-ns2.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-ns2lite.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-ns2max.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-ns2mini.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-nsa310.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-openblocks_a6.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-topkick.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-ts219-6281.dtb
+#boot/dtb-KVER-ipfire-kirkwood/kirkwood-ts219-6282.dtb
 boot/uImage-ipfire-kirkwood
 boot/vmlinuz-KVER-ipfire-kirkwood
-etc/modprobe.d/framebuffer
-etc/modprobe.d/ipv6
-etc/modprobe.d/isdn
+etc/modprobe.d/framebuffer.conf
+etc/modprobe.d/ipv6.conf
+etc/modprobe.d/isdn.conf
 lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/build
 #lib/modules/KVER-ipfire-kirkwood/kernel
+#lib/modules/KVER-ipfire-kirkwood/kernel/arch
+#lib/modules/KVER-ipfire-kirkwood/kernel/arch/arm
+#lib/modules/KVER-ipfire-kirkwood/kernel/arch/arm/crypto
+#lib/modules/KVER-ipfire-kirkwood/kernel/arch/arm/crypto/aes-arm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/aes_generic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/af_alg.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/algif_hash.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/algif_skcipher.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/ansi_cprng.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/anubis.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/arc4.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/asymmetric_keys
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/asymmetric_keys/public_key.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/asymmetric_keys/rsa.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/asymmetric_keys/x509_key_parser.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/async_tx
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/async_tx/async_memcpy.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/async_tx/async_pq.ko
@@ -28,18 +59,16 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/authencesn.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/blowfish_common.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/blowfish_generic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/camellia.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/cast5.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/cast6.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/cbc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/camellia_generic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/cast5_generic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/cast6_generic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/cast_common.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/ccm.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/crc32c.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/cryptd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/crypto_user.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/ctr.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/cmac.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/crypto_null.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/cts.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/deflate.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/des_generic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/ecb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/fcrypt.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/gcm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/gf128mul.ko
@@ -48,7 +77,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/lrw.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/lzo.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/md4.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/md5.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/michael_mic.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/pcbc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/rmd128.ko
@@ -57,11 +85,9 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/rmd320.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/salsa20_generic.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/seed.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/seqiv.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/serpent.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/sha1_generic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/sha256_generic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/serpent_generic.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/sha512_generic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/crypto/tcrypt.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/tea.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/tgr192.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/crypto/twofish_common.ko
@@ -75,12 +101,8 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/acard-ahci.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/ahci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/ahci_platform.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/ata_generic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/ata_piix.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/libahci.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/libata.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_ali.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_amd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_arasan_cf.ko
@@ -101,7 +123,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_it8213.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_it821x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_jmicron.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_legacy.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_marvell.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_mpiix.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_netcell.ko
@@ -111,14 +132,11 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_oldpiix.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_opti.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_optidma.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_pcmcia.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_pdc2027x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_pdc202xx_old.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_piccolo.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_radisys.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_rdc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_rz1000.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_sc1200.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_sch.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_serverworks.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_sil680.ko
@@ -127,6 +145,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_triflex.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pata_via.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/pdc_adma.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/sata_highbank.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/sata_inic162x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/sata_mv.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/sata_nv.ko
@@ -141,59 +160,38 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/sata_via.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ata/sata_vsc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/ambassador.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/atmtcp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/eni.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/firestream.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/fore_200e.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/horizon.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/idt77105.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/idt77252.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/iphase.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/lanai.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/nicstar.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/solos-pci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/suni.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/uPD98402.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/atm/zatm.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/base
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/base/regmap
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/base/regmap/regmap-i2c.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bcma
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bcma/bcma.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/DAC960.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/aoe
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/aoe/aoe.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/cciss.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/cpqarray.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/cryptoloop.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/mg_disk.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/nbd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/osdblk.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/rbd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/nvme.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/rsxx
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/rsxx/rsxx.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/sx8.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/block/umem.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/ath3k.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/bcm203x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/bfusb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/bluecard_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/bpa10x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/bt3c_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/btmrvl.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/btmrvl_sdio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/btsdio.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/btuart_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/btusb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/btwilink.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/dtl1_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/hci_uart.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/bluetooth/hci_vhci.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/cdrom
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/cdrom/cdrom.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/hw_random
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/hw_random/rng-core.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/hw_random/atmel-rng.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/hw_random/exynos-rng.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/hw_random/timeriomem-rng.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/ipmi
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/ipmi/ipmi_devintf.ko
@@ -202,110 +200,70 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/ipmi/ipmi_si.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/ipmi/ipmi_watchdog.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/lp.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/nvram.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/pcmcia
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/pcmcia/synclink_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/char/ppdev.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/connector
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/connector/cn.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/clk
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/clk/clk-si5351.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/crypto
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/crypto/hifn_795x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/crypto/mv_cesa.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/dma
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/dma/dmatest.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/dma/timb_dma.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/firewire
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/firewire/firewire-core.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/firewire/firewire-net.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/firewire/firewire-ohci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/firewire/firewire-sbp2.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-adp5588.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-generic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-it8761e.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-janz-ttl.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-max7300.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-max730x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-max732x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-adnp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-mcp23s08.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-ml-ioh.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-pca953x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-pcf857x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-rdc321x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-vx855.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-ts5500.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpio/gpio-viperboard.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/drm.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/mga
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/mga/mga.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/r128
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/r128/r128.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/savage
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/savage/savage.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/tdfx
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/tdfx/tdfx.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/ttm
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/ttm/ttm.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/via
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/via/via.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/vmwgfx
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/stub
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/stub/poulsbo.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/drm_kms_helper.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/drm_usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/i2c
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/i2c/ch7006.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/i2c/sil164.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/i2c/tda998x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/udl
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/gpu/drm/udl/udl.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-a4tech.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-apple.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-axff.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-belkin.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-cherry.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-chicony.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-cypress.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-dr.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-elecom.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-ezkey.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-gaff.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-aureal.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-gyration.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-holtekff.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-kensington.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-keytouch.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-kye.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-lcpower.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-lenovo-tpkbd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-logitech-dj.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-logitech.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-magicmouse.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-microsoft.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-monterey.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-multitouch.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-ntrig.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-ortek.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-petalynx.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-picolcd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-pl.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-primax.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-prodikeys.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-quanta.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat-arvo.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat-common.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat-isku.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat-kone.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat-koneplus.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat-konepure.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat-kovaplus.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat-lua.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat-pyra.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat-savu.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-roccat.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-saitek.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-samsung.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-sjoy.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-sony.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-sensor-hub.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-speedlink.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-tmff.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-thingm.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-tivo.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-topseed.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-twinhan.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-uclogic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-wacom.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-waltop.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-wiimote.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-zpff.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/hid-zydacron.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/usbhid
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/usbhid/usbhid.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/i2c-hid
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hid/i2c-hid/i2c-hid.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hsi
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hsi/clients
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hsi/clients/hsi_char.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hsi/hsi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ad7414.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ad7418.ko
@@ -317,10 +275,12 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/adm9240.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ads1015.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ads7828.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/adt7410.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/adt7411.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/adt7462.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/adt7470.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/adt7475.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/adt7x10.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/amc6821.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/asc7621.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/atxp1.ko
@@ -328,7 +288,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ds1621.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ds620.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/emc1403.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/emc2103.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/emc6w201.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/f71805f.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/f71882fg.ko
@@ -336,16 +295,15 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/g760a.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/gl518sm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/gl520sm.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/gpio-fan.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/hih6130.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/hwmon-vid.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/hwmon.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/i5k_amb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ibmaem.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ibmpex.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ina209.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ina2xx.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/it87.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/jc42.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lineage-pem.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lm63.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lm73.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lm75.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lm77.ko
@@ -357,6 +315,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lm90.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lm92.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lm93.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lm95234.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lm95241.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/lm95245.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ltc4151.ko
@@ -366,9 +325,13 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/max16065.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/max1619.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/max1668.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/max197.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/max6639.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/max6642.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/max6650.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/max6697.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/nct6775.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/ntc_thermistor.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pc87360.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pc87427.ko
@@ -376,7 +339,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus/adm1275.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus/lm25066.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus/ltc2978.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus/max16064.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus/max34440.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus/max8688.ko
@@ -384,14 +346,12 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus/pmbus_core.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus/ucd9000.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus/ucd9200.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/pmbus/zl6100.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/sch5627.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/sch5636.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/sch56xx-common.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/sht15.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/sht21.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/sis5595.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/smm665.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/smsc47b397.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/smsc47m1.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/hwmon/smsc47m192.ko
@@ -421,16 +381,12 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-ali15x3.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-amd756.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-amd8111.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-designware-core.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-designware-pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-cbus-gpio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-eg20t.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-gpio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-i801.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-intel-mid.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-isch.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-nforce2.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-ocores.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-parport-light.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-parport.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-pca-platform.ko
@@ -439,59 +395,48 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-sis5595.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-sis630.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-sis96x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-stub.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-taos-evm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-tiny-usb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-via.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-viapro.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-xiic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/busses/i2c-viperboard.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/i2c-dev.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/i2c-mux.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/i2c-smbus.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/muxes
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/muxes/gpio-i2cmux.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/muxes/pca9541.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/muxes/pca954x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ieee802154
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ieee802154/fakehard.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/i2c/i2c-stub.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/iio
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/iio/common
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/iio/common/hid-sensors
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/iio/common/hid-sensors/hid-sensor-trigger.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/iio/industrialio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/iio/kfifo_buf.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/ff-memless.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/input-polldev.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/adp5588-keys.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/adp5589-keys.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/gpio_keys.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/gpio_keys_polled.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/lkkbd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/lm8323.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/matrix_keypad.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/max7359_keypad.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/mcs_touchkey.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/mpr121_touchkey.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/newtonkbd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/opencores-kbd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/qt1070.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/qt2160.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/stowaway.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/sunkbd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/tca6416-keypad.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/xtkbd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/keyboard/lm8333.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/matrix-keymap.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/88pm860x_onkey.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/ad714x-i2c.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/ad714x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/ati_remote2.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/bma150.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/cm109.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/keyspan_remote.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/pcf50633-input.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/pcf8574_keypad.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/powermate.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/pwm-beeper.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/retu-pwrbutton.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/rotary_encoder.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/uinput.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/misc/yealink.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/mouse
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/mouse/appletouch.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/mouse/bcm5974.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/mouse/cyapa.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/mouse/psmouse.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/mouse/sermouse.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/mouse/synaptics_i2c.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/mouse/synaptics_usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/mouse/vsxxxaa.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/serio
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/serio/altera_ps2.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/serio/ps2mult.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/serio/apbps2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/serio/arc_ps2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/serio/serio_raw.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/input/sparse-keymap.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/capi
@@ -500,18 +445,11 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/capi/kernelcapi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/divert
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/divert/dss1_divert.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/gigaset
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/gigaset/bas_gigaset.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/gigaset/gigaset.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/gigaset/ser_gigaset.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/gigaset/usb_gigaset.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/avm
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/avm/avm_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/avm/b1.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/avm/b1dma.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/avm/b1pci.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/avm/b1pcmcia.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/avm/c4.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/avm/t1pci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/eicon
@@ -520,75 +458,65 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/eicon/divacapi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/eicon/divadidd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/eicon/divas.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN/avmfritz.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN/hfcmulti.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN/hfcpci.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN/hfcsusb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN/mISDNinfineon.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN/mISDNipac.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN/mISDNisar.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN/netjet.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN/speedfax.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hardware/mISDN/w6692.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax/avma1_cs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax/elsa_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax/hfc4s8s_l1.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax/hfc_usb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax/hisax.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax/hisax_fcpcipnp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax/hisax_isac.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax/hisax_st5481.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax/sedlbauer_cs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hisax/teles_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hysdn
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/hysdn/hysdn.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/i4l
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/i4l/isdn.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/i4l/isdn_bsdcomp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/i4l/isdnhdlc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/mISDN
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/mISDN/l1oip.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/mISDN/mISDN_core.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-88pm860x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-bd2802.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-gpio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-blinkm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-lm3530.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-lm3533.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-lm355x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-lm3642.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-lp3944.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-lp5521.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-lp5523.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-lp5562.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-lp55xx-common.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-lt3593.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-pca9532.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-pca955x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-netxbig.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-ns2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-ot200.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-pca9633.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-pwm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-regulator.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/ledtrig-backlight.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/ledtrig-gpio.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/ledtrig-heartbeat.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/ledtrig-netdev.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/ledtrig-timer.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/leds-tca6507.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/trigger
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/trigger/ledtrig-backlight.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/trigger/ledtrig-camera.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/trigger/ledtrig-gpio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/trigger/ledtrig-heartbeat.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/trigger/ledtrig-netdev.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/trigger/ledtrig-timer.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/leds/trigger/ledtrig-transient.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/bcache
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/bcache/bcache.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-bio-prison.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-bufio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-cache-cleaner.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-cache.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-crypt.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-delay.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-flakey.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-log-userspace.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-log.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-mirror.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-mod.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-multipath.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-queue-length.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-raid.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-region-hash.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-round-robin.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-service-time.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-snapshot.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-thin-pool.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-zero.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/dm-verity.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/faulty.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/linear.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/md-mod.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/multipath.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/persistent-data
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/persistent-data/dm-persistent-data.ko
@@ -598,31 +526,243 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/md/raid456.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/mc44s803.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/mt20xx.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/tda18271.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/tda827x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/tda8290.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/tda9887.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/tea5761.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/tea5767.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/tuner-simple.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/tuner-types.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/xc4000.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tuners/xc5000.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb/dvb-core
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb/dvb-core/dvb-core.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/media.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/b2c2
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/btcx-risc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/cx2341x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/cypress_firmware.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/saa7146
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/saa7146/saa7146.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/saa7146/saa7146_vv.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/siano
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/siano/smsdvb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/siano/smsmdtv.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/common/tveeprom.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/a8293.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/af9013.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/atbm8830.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/au8522_common.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/au8522_dig.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/bcm3510.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/cx22700.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/cx22702.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/cx24110.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/cx24113.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/cx24116.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/cx24123.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/cxd2820r.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/dib0070.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/dib0090.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/dib3000mb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/dib3000mc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/dib7000m.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/dib7000p.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/dib8000.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/drxd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/drxk.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/ds3000.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/dvb-pll.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/isl6405.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/isl6421.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/isl6423.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/it913x-fe.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/itd1000.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/ix2505v.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/l64781.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/lg2160.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/lgdt330x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/lnbp21.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/lnbp22.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/m88dc2800.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/m88ds3103.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/m88rs2000.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/mb86a16.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/mt312.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/mt352.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/nxt200x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/nxt6000.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/or51132.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/or51211.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/rtl2830.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/rtl2832.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/s5h1409.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/s5h1411.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/s5h1420.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/sp8870.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/sp887x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stb0899.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stb6000.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stb6100.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stv0288.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stv0297.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stv0299.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stv0367.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stv0900.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stv090x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stv6110.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda10021.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda10023.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda10048.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda1004x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda10071.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda10086.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda18271c2dd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda665x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda8083.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda8261.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tda826x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/ts2020.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/tua6100.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/ves1820.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/ves1x93.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/zl10036.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/zl10039.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/dvb-frontends/zl10353.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/firewire
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/firewire/firedtv.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/adv7180.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/cs5345.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/cs53l32a.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/cx25840
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/cx25840/cx25840.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/m52790.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/ov7670.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/saa6588.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/saa7115.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/saa7127.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/saa717x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/imx074.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/mt9m001.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/mt9m111.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/mt9t031.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/mt9t112.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/mt9v022.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/ov2640.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/ov5642.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/ov6650.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/ov772x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/ov9640.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/ov9740.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/rj54n1cb0c.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/soc_camera/tw9910.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/tda7432.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/tda9840.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/tea6415c.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/tea6420.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/tvaudio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/upd64031a.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/upd64083.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/vp27smpx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/wm8739.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/i2c/wm8775.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/b2c2
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/bt8xx
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/bt8xx/bt878.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/bt8xx/bttv.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/bt8xx/dst.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/bt8xx/dst_ca.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/bt8xx/dvb-bt8xx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx18
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx18/cx18-alsa.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx18/cx18.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx23885
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx23885/altera-ci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx23885/cx23885.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx25821
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx25821/cx25821-alsa.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx25821/cx25821.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx88
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx88/cx88-alsa.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx88/cx88-blackbird.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx88/cx88-dvb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx88/cx88-vp3054-i2c.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx88/cx8800.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx88/cx8802.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/cx88/cx88xx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/dm1105
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/dm1105/dm1105.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ivtv
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ivtv/ivtv-alsa.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ivtv/ivtv.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ivtv/ivtvfb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/mantis
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/mantis/hopper.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/mantis/mantis.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/mantis/mantis_core.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ngene
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ngene/ngene.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/pluto2
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/pluto2/pluto2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/pt1
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/pt1/earth-pt1.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7134
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7134/saa6752hs.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7134/saa7134.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7146
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7146/hexium_gemini.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7146/hexium_orion.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7146/mxb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7164
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/saa7164/saa7164.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ttpci
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ttpci/budget-av.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ttpci/budget-ci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ttpci/budget-core.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ttpci/budget-patch.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ttpci/budget.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/platform
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/platform/m2m-deinterlace.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/platform/marvell-ccic
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/platform/sh_veu.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/platform/soc_camera
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/platform/soc_camera/soc_camera.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/platform/timblogiw.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/iguanair.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/ir-jvc-decoder.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/ir-lirc-codec.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/ir-nec-decoder.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/ir-rc5-decoder.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/ir-rc6-decoder.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/ir-sony-decoder.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-alink-dtu-m.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-anysee.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-apac-viewcomp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-asus-pc39.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-asus-ps3-100.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-ati-tv-wonder-hd-600.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-ati-x10.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-avermedia-a16d.ko
@@ -646,6 +786,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-encore-enltv.ko
@@ -662,13 +803,18 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-imon-mce.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-imon-pad.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-iodata-bctv7e.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-it913x-v1.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-it913x-v2.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-kaiomy.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-kworld-315u.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-kworld-pc150u.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-kworld-plus-tv-analog.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-leadtek-y04g0051.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-lirc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-lme2510.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-manli.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-medion-x10-digitainer.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-medion-x10-or2x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-medion-x10.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-msi-digivox-ii.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-msi-digivox-iii.ko
@@ -692,6 +838,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-pv951.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-rc6-mce.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-real-audio-220-32-keys.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-reddo.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-snapstream-firefly.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
@@ -701,6 +848,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-tevii-nec.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-tivo.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand-02.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
@@ -711,12 +859,186 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-winfast-usbii-deluxe.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/keymaps/rc-winfast.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/lirc_dev.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/rc-core.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/video
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/video/ir-kbd-i2c.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/video/v4l2-common.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/video/v4l2-int-device.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/video/videodev.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/mceusb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/rc-loopback.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/redrat3.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/streamzap.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/rc/ttusbir.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/e4000.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/fc0011.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/fc0012.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/fc0013.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/fc2580.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/max2165.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/mt2060.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/mt2063.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/mt2131.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/mxl5005s.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/qt1010.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/tda18212.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/tda18218.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/tua9001.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/tuners/tuner_it913x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/au0828
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/au0828/au0828.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/b2c2
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/b2c2/b2c2-flexcop-usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/cpia2
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/cpia2/cpia2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/cx231xx
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/cx231xx/cx231xx-alsa.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/cx231xx/cx231xx-dvb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/cx231xx/cx231xx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-af9015.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-af9035.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-anysee.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-au6610.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-az6007.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ce6230.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/dvb_usb_v2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/mxl111sf-demod.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb-v2/mxl111sf-tuner.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-a800.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-af9005-remote.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-af9005.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-az6027.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-cinergyT2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-cxusb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtv5100.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-dw2102.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-friio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-gp8psk.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-m920x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-nova-t-usb2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-opera.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-pctv452e.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-technisat-usb2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-ttusb2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-umt-010.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-vp702x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb-vp7045.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/dvb-usb/dvb-usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/em28xx
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/em28xx/em28xx-dvb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gl860
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_benq.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_conex.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_etoms.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_finepix.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_jl2005bcd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_kinect.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_konica.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_main.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_mars.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_mr97310a.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_nw80x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_ov519.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_ov534.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_ov534_9.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_pac207.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_pac7302.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_pac7311.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_se401.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_sn9c2028.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_sn9c20x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_sonixb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_sonixj.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_spca1528.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_spca500.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_spca501.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_spca505.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_spca506.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_spca508.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_spca561.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_sq905.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_sq905c.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_sq930x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_stk014.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_stv0680.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_t613.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_vicam.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_xirlink_cit.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/gspca_zc3xx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/m5602
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/m5602/gspca_m5602.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/stv06xx
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/gspca/stv06xx/gspca_stv06xx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/hdpvr
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/hdpvr/hdpvr.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/pvrusb2
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/pvrusb2/pvrusb2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/pwc
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/pwc/pwc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/s2255
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/s2255/s2255drv.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/siano
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/siano/smsusb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/sn9c102
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/sn9c102/sn9c102.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/stk1160
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/stk1160/stk1160.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/stkwebcam
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/tlg2300
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/tlg2300/poseidon.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/tm6000
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/tm6000/tm6000.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/ttusb-budget
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/ttusb-dec
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/ttusb-dec/ttusb_dec.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/ttusb-dec/ttusbdecfe.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/usbvision
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/usbvision/usbvision.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/uvc
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/uvc/uvcvideo.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/zr364xx
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/usb/zr364xx/zr364xx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/tuner.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/v4l2-int-device.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/videobuf-core.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/videobuf2-core.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/memstick
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/memstick/core
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/memstick/core/memstick.ko
@@ -724,6 +1046,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/memstick/host
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/memstick/host/jmb38x_ms.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/memstick/host/r592.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/memstick/host/rtsx_pci_ms.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/memstick/host/tifm_ms.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message/fusion
@@ -733,34 +1056,31 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message/fusion/mptsas.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message/fusion/mptscsih.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message/fusion/mptspi.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message/i2o
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message/i2o/i2o_block.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message/i2o/i2o_bus.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message/i2o/i2o_core.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message/i2o/i2o_proc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/message/i2o/i2o_scsi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/htc-pasic3.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/janz-cmodio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/lm3533-core.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/lm3533-ctrlbank.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/lpc_ich.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/lpc_sch.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/pcf50633-adc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/pcf50633-gpio.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/pcf50633.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/rdc321x-southbridge.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/retu-mfd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/rtsx_pci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/sm501.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/timberdale.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/tps6105x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/tps65010.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/tps6507x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/ucb1400_core.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/viperboard.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/vx855.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/wl1273-core.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mfd/wm8400-core.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/apds9802als.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/apds990x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/bh1770glc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/bh1780gli.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/bmp085.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/c2port
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/c2port/core.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/altera-stapl
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/altera-stapl/altera-stapl.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/bmp085-i2c.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/cb710
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/cb710/cb710.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/ds1682.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/dummy-irq.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/eeprom
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/eeprom/at24.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/eeprom/eeprom.ko
@@ -768,99 +1088,52 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/eeprom/max6875.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/enclosure.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/fsa9480.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/hmc6352.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/hpilo.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/ics932s401.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/isl29003.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/isl29020.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/iwmc3200top
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/iwmc3200top/iwmc3200top.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/lis3lv02d
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/lis3lv02d/lis3lv02d.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/lis3lv02d/lis3lv02d_i2c.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/pch_phub.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/ti-st
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/ti-st/st_drv.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/tifm_7xx1.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/tifm_core.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/misc/tsl2550.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/card
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/card/mmc_block.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/card/mmc_test.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/card/sdio_uart.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/core
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/core/mmc_core.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/cb710-mmc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/dw_mmc-exynos.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/dw_mmc-pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/dw_mmc-pltfm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/dw_mmc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/mvsdio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/sdhci-pci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/sdhci-pltfm.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/sdhci-pxav2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/sdhci-pxav3.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/sdhci.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/sdricoh_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/tifm_sd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/ushc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/via-sdmmc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mmc/host/vub300.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/ar7part.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/chips
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/chips/chipreg.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/lpddr
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/lpddr/lpddr_cmds.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/lpddr/qinfo_probe.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/maps
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/maps/physmap.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/mtd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/mtd_blkdevs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/mtdblock.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/mtdchar.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/nand
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/nand/nand.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/nand/nand_ecc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/nand/nand_ids.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/nand/orion_nand.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/nand/plat_nand.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/ofpart.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/sm_ftl.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/tests
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/tests/mtd_nandecctest.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/tests/mtd_oobtest.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/tests/mtd_pagetest.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/tests/mtd_readtest.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/tests/mtd_speedtest.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/tests/mtd_stresstest.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/tests/mtd_subpagetest.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/tests/mtd_torturetest.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/ubi
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/mtd/ubi/ubi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/bonding
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/bonding/bonding.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/dummy.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/eql.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/3com
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/3com/3c574_cs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/3com/3c589_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/3com/3c59x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/3com/typhoon.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/8390
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/8390/8390.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/8390/ax88796.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/8390/axnet_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/8390/ne2k-pci.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/8390/pcnet_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/adaptec
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/adaptec/starfire.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/alteon
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/alteon/acenic.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/amd
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/amd/amd8111e.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/amd/nmclan_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/amd/pcnet32.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/atheros
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/atheros/alx
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/atheros/alx/alx.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/atheros/atl1c
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/atheros/atl1c/atl1c.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/atheros/atl1e
@@ -878,6 +1151,11 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/brocade
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/brocade/bna
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/brocade/bna/bna.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/cadence
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/cadence/at91_ether.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/cadence/macb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/calxeda
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/calxeda/xgmac.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/chelsio
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/chelsio/cxgb
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
@@ -887,6 +1165,8 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/chelsio/cxgb4/cxgb4.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/chelsio/cxgb4vf
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/cirrus
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/cirrus/cs89x0.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/cisco
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/cisco/enic
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/cisco/enic/enic.ko
@@ -895,15 +1175,12 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dec
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dec/tulip
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dec/tulip/de2104x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dec/tulip/de4x5.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dec/tulip/dmfe.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dec/tulip/tulip.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dec/tulip/uli526x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dec/tulip/winbond-840.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dec/tulip/xircom_cb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dlink
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dlink/de600.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dlink/de620.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dlink/dl2k.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dlink/sundance.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/dnet.ko
@@ -912,8 +1189,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/emulex/benet/be2net.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/ethoc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/fealnx.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/fujitsu
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/fujitsu/fmvj18x_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/hp
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/hp/hp100.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/icplus
@@ -935,15 +1210,10 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/jme.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/marvell
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/marvell/mv643xx_eth.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/marvell/mvmdio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/marvell/skge.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/marvell/sky2.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/mellanox
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/mellanox/mlx4
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/micrel
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/micrel/ks8842.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/micrel/ksz884x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/myricom
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/myricom/myri10ge
@@ -960,9 +1230,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/oki-semi
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/oki-semi/pch_gbe
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/packetengines
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/packetengines/hamachi.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/packetengines/yellowfin.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/qlogic
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/qlogic/netxen
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
@@ -977,8 +1244,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/realtek/8139cp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/realtek/8139too.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/realtek/r8169.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/seeq
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/seeq/seeq8005.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/sfc
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/sfc/sfc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/silan
@@ -989,7 +1254,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/smsc
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/smsc/epic100.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/smsc/smc911x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/smsc/smc91c92_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/smsc/smc91x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/smsc/smsc911x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/smsc/smsc9420.ko
@@ -1007,35 +1271,31 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/via
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/via/via-rhine.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/via/via-velocity.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/xircom
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/xircom/xirc2ps_cs.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/wiznet
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/wiznet/w5100.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ethernet/wiznet/w5300.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ifb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/imq.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/irda
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/irda/irda-usb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/irda/irtty-sir.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/irda/kingsun-sir.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/irda/ks959-sir.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/irda/ksdazzle-sir.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/irda/mcs7780.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/irda/sir-dev.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/irda/stir4200.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/irda/vlsi_ir.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/macvlan.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/macvtap.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/mdio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/mii.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/netconsole.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/bcm87xx.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/broadcom.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/cicada.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/davicom.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/dp83640.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/et1011c.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/icplus.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/lxt.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/marvell.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/mdio-bitbang.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/mdio-gpio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/mdio-mux-gpio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/mdio-mux-mmioreg.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/mdio-mux.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/micrel.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/national.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/phy/qsemi.ko
@@ -1055,13 +1315,14 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/ppp/pptp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/slip
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/slip/slhc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/slip/slip.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/tun.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/asix.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/ax88179_178a.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/catc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/cdc_eem.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/cdc_ether.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/cdc_mbim.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/cdc_ncm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/cdc_subset.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/cx82310_eth.ko
@@ -1069,6 +1330,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/gl620a.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/hso.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/int51x1.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/ipheth.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/kalmia.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/kaweth.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/lg-vl600.ko
@@ -1076,6 +1338,8 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/net1080.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/pegasus.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/plusb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/qmi_wwan.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/r8152.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/rndis_host.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/rtl8150.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/usb/sierra_net.ko
@@ -1086,60 +1350,143 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/veth.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/vmxnet3
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/vmxnet3/vmxnet3.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/dlci.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/dscc4.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/farsync.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/hdlc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/hdlc_cisco.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/hdlc_fr.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/hdlc_ppp.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/hdlc_raw.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/hdlc_raw_eth.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/lmc
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/lmc/lmc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/pc300too.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/pci200syn.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wan/wanxl.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/vxlan.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/airo.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/airo_cs.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/adm8211.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ar5523
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ath.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ath5k
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ath9k
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/carl9170
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/wil6210
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/atmel.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/atmel_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/atmel_pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/b43
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/b43/b43.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/b43legacy
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/hostap
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/hostap/hostap.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/hostap/hostap_cs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/hostap/hostap_pci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ray_cs.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ipw2x00
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ipw2x00/libipw.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/iwlegacy
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/iwlegacy/iwlegacy.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/libertas
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/libertas/libertas.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/libertas_tf
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/libertas_uap
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/libertas_uap/uap8xxx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/mac80211_hwsim.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/mwifiex
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/mwl8k.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/orinoco
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/orinoco/orinoco.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/p54
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/p54/p54common.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/p54/p54pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/p54/p54usb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rndis_wlan.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/wl3501_cs.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtl818x
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtl818x/rtl8180
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtl818x/rtl8187
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8188ee
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8192c
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8192ce
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8192cu
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8192de
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8192se
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti/wl1251
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti/wl1251/wl1251_sdio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti/wl12xx
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti/wl12xx/wl12xx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti/wl18xx
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti/wl18xx/wl18xx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti/wlcore
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/zd1201.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/zd1211rw
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/parport
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/parport/parport.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/parport/parport_ax88796.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pci
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pci/pci-stub.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/parport/parport_pc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/parport/parport_serial.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pcmcia
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pcmcia/i82092.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pcmcia/pcmcia.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pcmcia/pcmcia_core.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pcmcia/pcmcia_rsrc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pcmcia/pd6729.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pcmcia/yenta_socket.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pinctrl
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pinctrl/pinctrl-single.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/power
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/power/88pm860x_battery.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/power/88pm860x_charger.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/power/generic-adc-battery.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pps
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/pps/pps_core.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ptp
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ptp/ptp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ptp/ptp_pch.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/regulator
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/regulator/fixed.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/regulator/gpio-regulator.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/regulator/lp8755.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-88pm80x.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-88pm860x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-bq32k.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-bq4802.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-cmos.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-ds1286.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-ds1307.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-ds1374.ko
@@ -1147,18 +1494,19 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-ds1553.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-ds1672.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-ds1742.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-ds2404.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-ds3232.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-em3027.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-fm3130.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-hid-sensor-time.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-isl12022.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-isl1208.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-m41t80.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-m48t35.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-m48t59.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-m48t86.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-max6900.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-msm6242.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-pcf50633.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-pcf8523.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-pcf8563.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-pcf8583.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-rp5c01.ko
@@ -1166,7 +1514,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-rv3029c2.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-rx8025.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-rx8581.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-s35390a.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-snvs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-stk17ta8.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-v3020.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/rtc/rtc-x1205.ko
@@ -1193,6 +1541,8 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/bnx2i
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/bnx2i/bnx2i.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/ch.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/csiostor
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/csiostor/csiostor.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/cxgbi
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/cxgbi/cxgb3i
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/cxgbi/cxgb3i/cxgb3i.ko
@@ -1201,19 +1551,18 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/cxgbi/libcxgbi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/dc395x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/device_handler
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/device_handler/scsi_dh.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/device_handler/scsi_dh_alua.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/device_handler/scsi_dh_emc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/device_handler/scsi_dh_hp_sw.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/device_handler/scsi_dh_rdac.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/dmx3191d.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/dpt_i2o.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/fcoe
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/fcoe/fcoe.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/fcoe/libfcoe.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/fdomain.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/hpsa.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/hptiop.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/imm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/initio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/ipr.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/ips.ko
@@ -1234,77 +1583,80 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/megaraid/megaraid_sas.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/mpt2sas
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/mpt3sas
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/mvsas
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/mvsas/mvsas.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/mvumi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/osd
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/osd/libosd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/osd/osd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/pcmcia
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/pcmcia/aha152x_cs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/pcmcia/fdomain_cs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/pcmcia/nsp_cs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/pcmcia/qlogic_cs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/pcmcia/sym53c500_cs.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/osst.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/pm8001
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/pm8001/pm8001.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/pm8001/pm80xx.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/pmcraid.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/ppa.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/qla1280.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/qla2xxx
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/qla2xxx/qla2xxx.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/qla4xxx
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/qla4xxx/qla4xxx.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/qlogicfas408.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/raid_class.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/scsi_mod.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/scsi_tgt.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/scsi_transport_fc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/scsi_transport_iscsi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/scsi_transport_sas.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/scsi_transport_spi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/scsi_transport_srp.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/scsi_wait_scan.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/sd_mod.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/ses.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/sg.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/sr_mod.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/st.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/stex.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/sym53c8xx_2
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/tmscsim.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/ufs/ufshcd-pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/scsi/ufs/ufshcd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ssb
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/ssb/ssb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/ced1401
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/ced1401/cedusb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/et131x
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/et131x/et131x.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/phison
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/phison/phison.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/fwserial
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/fwserial/firewire-serial.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/rts5139
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/rts5139/rts5139.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/silicom
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/silicom/bpctl_mod.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/silicom/bypasslib
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/silicom/bypasslib/bypass.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/usbip
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/usbip/usbip-core.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/usbip/usbip-host.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/staging/usbip/vhci-hcd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/thermal
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/thermal/kirkwood_thermal.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/ipwireless
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/ipwireless/ipwireless.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/cyclades.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/n_gsm.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/n_hdlc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/n_r3964.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/nozomi.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/rocket.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/8250_dw.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/altera_jtaguart.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/altera_uart.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/mfd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/pch_uart.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/serial_cs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/timbuart.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/uartlite.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/xilinx_uartps.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/arc_uart.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/jsm
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/jsm/jsm.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/rp2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/serial/sccnxp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/synclink_gt.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/tty/synclinkmp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uio
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uio/uio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uio/uio_aec.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uio/uio_cif.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uio/uio_netx.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uio/uio_pci_generic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uio/uio_pdrv.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uio/uio_pdrv_genirq.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uio/uio_sercos3.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/atm
@@ -1313,44 +1665,49 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/atm/ueagle-atm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/atm/usbatm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/atm/xusbatm.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/chipidea
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/chipidea/ci13xxx_imx.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/chipidea/ci13xxx_msm.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/chipidea/ci13xxx_pci.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/chipidea/ci_hdrc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/chipidea/usbmisc_imx.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/class
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/class/cdc-acm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/class/cdc-wdm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/class/usblp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/class/usbtmc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/dwc3
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/dwc3/dwc3-exynos.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/dwc3/dwc3-omap.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/dwc3/dwc3-pci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/dwc3/dwc3.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/hwa-hc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/isp116x-hcd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/isp1362-hcd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/oxu210hp-hcd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/r8a66597-hcd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/sl811-hcd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/u132-hcd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/ssb-hcd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/whci
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/whci/whci-hcd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/host/xhci-hcd.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/image
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/image/mdc800.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/image/microtek.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/cypress_cy7c63.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/cytherm.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/adutux.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/emi26.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/emi62.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/ezusb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/ftdi-elan.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/iowarrior.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/isight_firmware.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/sisusbvga
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/usb3503.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/usblcd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/usbled.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/usbsevseg.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/uss720.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/misc/yurex.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/otg
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/otg/gpio_vbus.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/otg/nop-usb-xceiv.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/mon
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/mon/usbmon.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/aircable.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/ark3116.ko
@@ -1359,11 +1716,9 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/cp210x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/cypress_m8.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/digi_acceleport.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/empeg.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/f81232.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/ftdi_sio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/funsoft.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/garmin_gps.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/hp4x.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/io_edgeport.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/io_ti.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/ipaq.ko
@@ -1371,31 +1726,27 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/ir-usb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/iuu_phoenix.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/keyspan_pda.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/kl5kusb105.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/mct_u232.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/mos7720.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/mos7840.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/moto_modem.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/opticon.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/option.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/oti6858.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/pl2303.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/qcaux.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/qcserial.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/safe_serial.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/quatech2.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/siemens_mpi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/sierra.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/spcp8x5.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/ssu100.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/symbolserial.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/ti_usb_3410_5052.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/usb_wwan.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/usbserial.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/visor.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/vivopay-serial.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/zio.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/serial/zte_ev.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/storage
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/storage/uas.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/storage/ums-alauda.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/storage/ums-cypress.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/storage/ums-datafab.ko
@@ -1409,7 +1760,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/storage/ums-sddr09.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/storage/ums-sddr55.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/storage/ums-usbat.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/storage/usb-storage.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/wusbcore
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/usb/wusbcore/wusb-wa.ko
@@ -1425,154 +1775,164 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uwb/whc-rc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/uwb/whci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/arkfb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/aty
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/aty/aty128fb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/aty/atyfb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/aty/radeonfb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/backlight
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/backlight/88pm860x_bl.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/backlight/adp8860_bl.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/backlight/adp8870_bl.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/backlight/generic_bl.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/backlight/lcd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/backlight/pcf50633-backlight.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/backlight/platform_lcd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/cirrusfb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/display
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/display/display.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/fb_ddc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/cfbcopyarea.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/cfbfillrect.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/cfbimgblt.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/kyro
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/kyro/kyrofb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/macmodes.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox/g450_pll.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox/i2c-matroxfb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox/matroxfb_accel.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox/matroxfb_crtc2.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox/matroxfb_g450.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox/matroxfb_maven.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/metronomefb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/neofb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/nvidia
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/nvidia/nvidiafb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/output.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/pm2fb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/pm3fb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/riva
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/riva/rivafb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/s3fb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/sis
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/sis/sisfb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/sm501fb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/smscufx.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/sstfb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/svgalib.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/ssd1307fb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/syscopyarea.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/sysfillrect.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/tdfxfb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/tmiofb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/tridentfb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/uvesafb.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/vgastate.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/video/vt8623fb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/masters
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/masters/ds1wm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/masters/ds2482.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/masters/ds2490.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/masters/matrox_w1.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/masters/w1-gpio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_bq27000.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_ds2408.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_ds2413.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_ds2423.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_ds2431.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_ds2433.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_ds2760.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_ds2780.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_ds2781.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_ds28e04.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_smem.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/slaves/w1_therm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/w1/wire.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/watchdog
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/watchdog/alim7101_wdt.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/watchdog/max63xx_wdt.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/watchdog/i6300esb.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/watchdog/orion_wdt.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/watchdog/pcwd_pci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/watchdog/pcwd_usb.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/drivers/watchdog/retu_wdt.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/watchdog/softdog.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/drivers/watchdog/wdt_pci.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/autofs4
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/autofs4/autofs4.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/btrfs
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/btrfs/btrfs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/cachefiles
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/cachefiles/cachefiles.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/cifs
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/cifs/cifs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/ecryptfs
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/ecryptfs/ecryptfs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/exportfs
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/exportfs/exportfs.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/configfs
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/configfs/configfs.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/dlm
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/dlm/dlm.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/exofs
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/exofs/libore.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/fat
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/fat/fat.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/fat/msdos.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/fat/vfat.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/fscache
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/fscache/fscache.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/fuse
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/fuse/cuse.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/fuse/fuse.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/isofs
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/isofs/isofs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/jffs2
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/jffs2/jffs2.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/jfs
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/jfs/jfs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/lockd
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/lockd/lockd.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs/blocklayout
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs/nfs.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs/nfs_layout_nfsv41_files.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs/nfsv2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs/nfsv3.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs/nfsv4.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs/objlayout
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs/objlayout/objlayoutdriver.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs_common
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfs_common/nfs_acl.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfsd
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/nfsd/nfsd.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/quota
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/quota/quota_tree.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/quota/quota_v1.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/quota/quota_v2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-celtic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-centeuro.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-croatian.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-cyrillic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-gaelic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-greek.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-iceland.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-inuit.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-roman.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-romanian.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/mac-turkish.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp1250.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp1251.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp1255.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp737.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp775.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp850.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp852.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp855.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp857.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp860.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp861.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp862.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp863.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp864.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp865.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp866.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp869.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp874.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp932.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp936.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp949.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_cp950.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_euc-jp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-1.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-13.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-14.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-15.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-2.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-3.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-4.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-5.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-6.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-7.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_iso8859-9.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_koi8-r.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_koi8-ru.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_koi8-u.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/fs/nls/nls_utf8.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/reiserfs
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/reiserfs/reiserfs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/udf
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/udf/udf.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/ufs
-#lib/modules/KVER-ipfire-kirkwood/kernel/fs/ufs/ufs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/xfs
 #lib/modules/KVER-ipfire-kirkwood/kernel/fs/xfs/xfs.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/kernel
+#lib/modules/KVER-ipfire-kirkwood/kernel/kernel/trace
+#lib/modules/KVER-ipfire-kirkwood/kernel/kernel/trace/ring_buffer_benchmark.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib
+#lib/modules/KVER-ipfire-kirkwood/kernel/lib/asn1_decoder.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib/cordic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/lib/crc-ccitt.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib/crc-itu-t.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/lib/crc-t10dif.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib/crc7.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib/crc8.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib/libcrc32c.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/lib/mpi
+#lib/modules/KVER-ipfire-kirkwood/kernel/lib/mpi/mpi.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/lib/oid_registry.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib/raid6
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib/raid6/raid6_pq.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/lib/rbtree_test.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib/ts_bm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib/ts_fsm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/lib/ts_kmp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/lib/zlib_deflate
+#lib/modules/KVER-ipfire-kirkwood/kernel/lib/zlib_deflate/zlib_deflate.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/802
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/802/garp.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/802/p8022.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/802/psnap.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/802/stp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/8021q
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/8021q/8021q.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/atm
@@ -1593,7 +1953,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bluetooth/rfcomm
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bluetooth/rfcomm/rfcomm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/bridge.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebt_802_3.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebt_among.ko
@@ -1611,64 +1970,45 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebt_redirect.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebt_snat.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebt_stp.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebt_ulog.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebt_vlan.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebtable_broute.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebtable_filter.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebtable_nat.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/bridge/netfilter/ebtables.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ceph
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ceph/libceph.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ieee802154
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ieee802154/6lowpan.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ieee802154/af_802154.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ieee802154/ieee802154.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/core
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/core/netprio_cgroup.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/ah4.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/esp4.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/gre.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/inet_diag.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/ip_gre.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/ip_tunnel.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/ip_vti.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/ipcomp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/ipip.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/arp_tables.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/arpt_mangle.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/arptable_filter.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ip_queue.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ip_tables.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_CLUSTERIP.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_ECN.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_LOG.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_NETMAP.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_REJECT.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_ULOG.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_ecn.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/iptable_filter.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/iptable_mangle.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/iptable_nat.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/iptable_raw.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_amanda.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_ftp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/iptable_security.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_h323.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_irc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_proto_dccp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_proto_sctp.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_proto_udplite.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_sip.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/tcp_bic.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/tcp_cubic.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/tcp_diag.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/tcp_highspeed.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/tcp_htcp.ko
@@ -1681,17 +2021,21 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/tcp_westwood.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/tcp_yeah.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/tunnel4.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/udp_diag.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/xfrm4_mode_beet.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/xfrm4_mode_transport.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/xfrm4_mode_tunnel.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv4/xfrm4_tunnel.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/ah6.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/ip6_gre.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/ip6_tunnel.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/ipcomp6.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/mip6.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6_queue.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6_tables.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_LOG.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_MASQUERADE.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_NPT.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_ah.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_eui64.ko
@@ -1699,12 +2043,14 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_hbh.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_ipv6header.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_mh.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_rpfilter.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6t_rt.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6table_filter.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6table_mangle.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6table_nat.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6table_raw.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/nf_conntrack_ipv6.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/nf_defrag_ipv6.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/ip6table_security.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/sit.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/tunnel6.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/xfrm6_mode_beet.ko
@@ -1712,31 +2058,45 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/xfrm6_mode_transport.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/xfrm6_mode_tunnel.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/ipv6/xfrm6_tunnel.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/irda
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/irda/ircomm
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/irda/ircomm/ircomm-tty.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/irda/ircomm/ircomm.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/irda/irda.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/irda/irlan
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/irda/irlan/irlan.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/irda/irnet
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/irda/irnet/irnet.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/key
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/key/af_key.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/l2tp
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/l2tp/l2tp_core.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/l2tp/l2tp_eth.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/l2tp/l2tp_ip.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/l2tp/l2tp_ip6.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/l2tp/l2tp_netlink.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/l2tp/l2tp_ppp.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/llc
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/llc/llc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/mac80211
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/mac80211/mac80211.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_bitmap_ip.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_bitmap_port.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_hash_ip.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_hash_ipport.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_hash_ipportip.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_hash_net.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_hash_netport.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipset/ip_set_list_set.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_conntrack.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_lc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_rr.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_sed.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_sh.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_wlc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/ipvs/ip_vs_wrr.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_conntrack_amanda.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_conntrack_broadcast.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_conntrack_ftp.ko
@@ -1753,33 +2113,51 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_conntrack_sip.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_conntrack_snmp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_nat.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_nat_amanda.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_nat_ftp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_nat_irc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_nat_proto_dccp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_nat_proto_sctp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_nat_sip.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nf_tproxy_core.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nfnetlink.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nfnetlink_acct.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nfnetlink_cthelper.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nfnetlink_cttimeout.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nfnetlink_log.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/nfnetlink_queue.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/x_tables.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_AUDIT.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_CHECKSUM.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_CLASSIFY.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_CONNSECMARK.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_CT.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_DSCP.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_HL.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_HMARK.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_IDLETIMER.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_IMQ.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_LED.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_LOG.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_NETMAP.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_NFLOG.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_NFQUEUE.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_NOTRACK.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_RATEEST.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_REDIRECT.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_SECMARK.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_TCPMSS.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_TCPOPTSTRIP.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_TEE.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_TPROXY.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_TRACE.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_addrtype.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_bpf.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_cluster.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_comment.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_connbytes.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_connlabel.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_connlimit.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_connmark.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_conntrack.ko
@@ -1787,18 +2165,20 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_dccp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_devgroup.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_dscp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_ecn.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_esp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_hashlimit.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_helper.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_hl.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_iprange.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_ipvs.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_layer7.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_length.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_limit.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_mac.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_mark.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_multiport.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_nat.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_nfacct.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_osf.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_owner.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_physdev.ko
@@ -1809,20 +2189,21 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_realm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_recent.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_sctp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_set.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_socket.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_state.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_statistic.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_string.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_tcpmss.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_tcpudp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_time.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/netfilter/xt_u32.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netlink
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/netlink/netlink_diag.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/openvswitch
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/openvswitch/openvswitch.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/rfkill
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/rfkill/rfkill-regulator.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/rfkill/rfkill.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/rxrpc
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/rxrpc/af-rxrpc.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/rxrpc/rxkad.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/act_csum.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/act_gact.ko
@@ -1834,6 +2215,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/act_simple.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/act_skbedit.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/cls_basic.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/cls_cgroup.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/cls_flow.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/cls_fw.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/cls_route.ko
@@ -1842,6 +2224,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/cls_tcindex.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/cls_u32.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/em_cmp.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/em_ipset.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/em_meta.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/em_nbyte.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/em_text.ko
@@ -1849,8 +2232,10 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_atm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_cbq.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_choke.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_codel.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_drr.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_dsmark.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_fq_codel.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_gred.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_hfsc.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_htb.ko
@@ -1858,6 +2243,8 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_mqprio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_multiq.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_netem.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_pie.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_plug.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_prio.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_qfq.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_red.ko
@@ -1865,11 +2252,17 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_sfq.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_tbf.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sched/sch_teql.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/sctp
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/sctp/sctp.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sunrpc
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sunrpc/auth_gss
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/sunrpc/sunrpc.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/unix
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/unix/unix_diag.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/vmw_vsock
+#lib/modules/KVER-ipfire-kirkwood/kernel/net/vmw_vsock/vsock.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/wireless
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/wireless/cfg80211.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/wireless/lib80211.ko
@@ -1878,7 +2271,6 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/wireless/lib80211_crypt_wep.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/xfrm
 #lib/modules/KVER-ipfire-kirkwood/kernel/net/xfrm/xfrm_ipcomp.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/net/xfrm/xfrm_user.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/ac97_bus.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/core
@@ -1895,6 +2287,7 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/core/seq/snd-seq-midi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/core/seq/snd-seq-virmidi.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/core/seq/snd-seq.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/sound/core/snd-compress.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/core/snd-hrtimer.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/core/snd-hwdep.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/core/snd-page-alloc.ko
@@ -1921,12 +2314,10 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/firewire
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/firewire/snd-firewire-lib.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/firewire/snd-firewire-speakers.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/sound/firewire/snd-isight.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/i2c
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/i2c/other
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/i2c/other/snd-ak4113.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/i2c/other/snd-ak4114.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/sound/i2c/other/snd-ak4117.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/i2c/other/snd-ak4xxx-adda.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/i2c/other/snd-pt2258.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/i2c/other/snd-tea575x-tuner.ko
@@ -1935,6 +2326,8 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci/ac97
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci/ac97/snd-ac97-codec.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci/ali5451
+#lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci/ali5451/snd-ali5451.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci/au88x0
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci/au88x0/snd-au8810.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci/au88x0/snd-au8820.ko
@@ -2035,15 +2428,16 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci/vx222/snd-vx222.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci/ymfpci
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/pci/ymfpci/snd-ymfpci.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/sound/pcmcia
-#lib/modules/KVER-ipfire-kirkwood/kernel/sound/pcmcia/pdaudiocf
-#lib/modules/KVER-ipfire-kirkwood/kernel/sound/pcmcia/pdaudiocf/snd-pdaudiocf.ko
-#lib/modules/KVER-ipfire-kirkwood/kernel/sound/pcmcia/vx
-#lib/modules/KVER-ipfire-kirkwood/kernel/sound/pcmcia/vx/snd-vxpocket.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc
+#lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/atmel
+#lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/atmel/snd-soc-atmel-pcm.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/codecs
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/codecs/snd-soc-alc5623.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/codecs/snd-soc-cs42l51.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/dwc
+#lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/dwc/designware_i2s.ko
+#lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/generic
+#lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/generic/snd-soc-simple-card.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/kirkwood
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/kirkwood/snd-soc-kirkwood-i2s.ko
 #lib/modules/KVER-ipfire-kirkwood/kernel/sound/soc/kirkwood/snd-soc-kirkwood.ko
@@ -2067,19 +2461,14 @@ lib/modules/KVER-ipfire-kirkwood
 #lib/modules/KVER-ipfire-kirkwood/modules.alias
 #lib/modules/KVER-ipfire-kirkwood/modules.alias.bin
 #lib/modules/KVER-ipfire-kirkwood/modules.builtin
-#lib/modules/KVER-ipfire-kirkwood/modules.ccwmap
+#lib/modules/KVER-ipfire-kirkwood/modules.builtin.bin
 #lib/modules/KVER-ipfire-kirkwood/modules.dep
 #lib/modules/KVER-ipfire-kirkwood/modules.dep.bin
-#lib/modules/KVER-ipfire-kirkwood/modules.ieee1394map
-#lib/modules/KVER-ipfire-kirkwood/modules.inputmap
-#lib/modules/KVER-ipfire-kirkwood/modules.isapnpmap
-#lib/modules/KVER-ipfire-kirkwood/modules.ofmap
+#lib/modules/KVER-ipfire-kirkwood/modules.devname
 #lib/modules/KVER-ipfire-kirkwood/modules.order
-#lib/modules/KVER-ipfire-kirkwood/modules.pcimap
-#lib/modules/KVER-ipfire-kirkwood/modules.seriomap
+#lib/modules/KVER-ipfire-kirkwood/modules.softdep
 #lib/modules/KVER-ipfire-kirkwood/modules.symbols
 #lib/modules/KVER-ipfire-kirkwood/modules.symbols.bin
-#lib/modules/KVER-ipfire-kirkwood/modules.usbmap
 #lib/modules/KVER-ipfire-kirkwood/source
 sbin/gen_init_cpio
 boot/uInit-ipfire-kirkwood
diff --git a/config/rootfiles/common/armv5tel/linux-multi b/config/rootfiles/common/armv5tel/linux-multi
new file mode 100644 (file)
index 0000000..3c20c52
--- /dev/null
@@ -0,0 +1,2436 @@
+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/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-cm-fx6.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/imx6q-wandboard.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/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/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
+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/mach-imx
+#lib/modules/KVER-ipfire-multi/kernel/arch/arm/mach-imx/devices
+#lib/modules/KVER-ipfire-multi/kernel/arch/arm/mach-imx/devices/wand-rfkill.ko
+#lib/modules/KVER-ipfire-multi/kernel/arch/arm/oprofile
+#lib/modules/KVER-ipfire-multi/kernel/arch/arm/oprofile/oprofile.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/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/ahci_imx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/ahci_platform.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/libahci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_arasan_cf.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_imx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_highbank.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_mv.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/cryptoloop.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/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/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/char/lp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/char/ppdev.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/cpufreq
+#lib/modules/KVER-ipfire-multi/kernel/drivers/cpufreq/imx6q-cpufreq.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/dma
+#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-mcp23s08.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpio/gpio-ts5500.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/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/omapdrm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/omapdrm/omapdrm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/tilcdc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/tilcdc/tilcdc.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/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/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/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/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/twl4030-madc-hwmon.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/vt1211.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/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-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-gpio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-imx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-parport-light.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-parport.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-pca-platform.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-simtec.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-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/ff-memless.ko
+#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_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/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/pwm-beeper.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/twl4030-pwrbutton.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc/twl4030-vibra.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/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/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_st5481.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/leds
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-bd2802.ko
+#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-pca9532.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-pca955x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-pca9633.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-pwm.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-gpio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-heartbeat.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/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/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/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/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/ddbridge
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ddbridge/ddbridge.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/m2m-deinterlace.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/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/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_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/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-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/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/mfd
+#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/retu-mfd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/sm501.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/viperboard.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/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/ics932s401.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/mmc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/dw_mmc-exynos.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/mxcmmc.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/ushc.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/devices
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/devices/elm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/nand
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/nand/gpmi-nand
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/nand/gpmi-nand/gpmi_nand.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/nand/mxc_nand.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/packetengines
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/packetengines/hamachi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/packetengines/yellowfin.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/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/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/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/libertas_uap
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/libertas_uap/uap8xxx.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/prism54
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/prism54/prism54.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/rt2500usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2800lib.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/rt2x00usb.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/parport
+#lib/modules/KVER-ipfire-multi/kernel/drivers/parport/parport.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/power
+#lib/modules/KVER-ipfire-multi/kernel/drivers/power/88pm860x_battery.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/power/88pm860x_charger.ko
+#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/pwm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/pwm/pwm-imx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/pwm/pwm-twl-led.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/pwm/pwm-twl.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/pwm/pwm-vt8500.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/anatop-regulator.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/lp8755.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/vexpress.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-88pm80x.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-88pm860x.ko
+#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-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-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/atp870u.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/libsrp.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_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/mvumi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/nsp32.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_debug.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/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/imx-drm
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/imx-drm/imxdrm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/imx-drm/parallel-display.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/rts5139
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/rts5139/rts5139.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/usbip
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/usbip/usbip-core.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/usbip/usbip-host.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/usbip/vhci-hcd.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/thermal/imx_thermal.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty
+#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/serial
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/arc_uart.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/sccnxp.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/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/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/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/uss720.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-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-usb3.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-rcar-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-samsung-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-samsung-usb2.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-samsung-usb3.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/video
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/amba-clcd.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/backlight/platform_lcd.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/fb_sys_fops.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-generic-dpi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2/displays/panel-picodlp.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2/displays/panel-sharp-ls037v7dw01.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2/displays/panel-taal.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2/displays/panel-tfp410.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2/omapfb
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2/omapfb/omapfb.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/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/imx2_wdt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/mpcore_wdt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/omap_wdt.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/sp805_wdt.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/twl4030_wdt.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/bch.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/802
+#lib/modules/KVER-ipfire-multi/kernel/net/802/garp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/8021q
+#lib/modules/KVER-ipfire-multi/kernel/net/8021q/8021q.ko
+#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-regulator.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_pie.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-mts64.ko
+#lib/modules/KVER-ipfire-multi/kernel/sound/drivers/snd-portman2x4.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/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-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/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-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/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-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-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/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.builtin.bin
+#lib/modules/KVER-ipfire-multi/modules.dep
+#lib/modules/KVER-ipfire-multi/modules.dep.bin
+#lib/modules/KVER-ipfire-multi/modules.devname
+#lib/modules/KVER-ipfire-multi/modules.order
+#lib/modules/KVER-ipfire-multi/modules.softdep
+#lib/modules/KVER-ipfire-multi/modules.symbols
+#lib/modules/KVER-ipfire-multi/modules.symbols.bin
+#lib/modules/KVER-ipfire-multi/source
+boot/uInit-ipfire-multi
diff --git a/config/rootfiles/common/armv5tel/linux-omap b/config/rootfiles/common/armv5tel/linux-omap
deleted file mode 100644 (file)
index f3bf7c6..0000000
+++ /dev/null
@@ -1,1467 +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/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 0b8c57c6481e60ff65082a9045448c14f6de2be1..01f9312ee890ec7b24675bad898ca674b8bd95e9 100644 (file)
@@ -9,16 +9,23 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel
 #lib/modules/KVER-ipfire-rpi/kernel/arch
 #lib/modules/KVER-ipfire-rpi/kernel/arch/arm
+#lib/modules/KVER-ipfire-rpi/kernel/arch/arm/crypto
+#lib/modules/KVER-ipfire-rpi/kernel/arch/arm/crypto/aes-arm.ko
+#lib/modules/KVER-ipfire-rpi/kernel/arch/arm/crypto/sha1-arm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/arch/arm/mach-bcm2708
-#lib/modules/KVER-ipfire-rpi/kernel/arch/arm/mach-bcm2708/dmaer.ko
+#lib/modules/KVER-ipfire-rpi/kernel/arch/arm/mach-bcm2708/dmaer_master.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto
-#lib/modules/KVER-ipfire-rpi/kernel/crypto/aes_generic.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/af_alg.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/algif_hash.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/algif_skcipher.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/ansi_cprng.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/anubis.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/arc4.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/asymmetric_keys
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/asymmetric_keys/public_key.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/asymmetric_keys/rsa.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/asymmetric_keys/x509_key_parser.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/async_tx
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/async_tx/async_memcpy.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/async_tx/async_pq.ko
@@ -30,13 +37,16 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/authencesn.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/blowfish_common.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/blowfish_generic.ko
-#lib/modules/KVER-ipfire-rpi/kernel/crypto/camellia.ko
-#lib/modules/KVER-ipfire-rpi/kernel/crypto/cast5.ko
-#lib/modules/KVER-ipfire-rpi/kernel/crypto/cast6.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/camellia_generic.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/cast5_generic.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/cast6_generic.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/cast_common.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/cbc.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/ccm.ko
-#lib/modules/KVER-ipfire-rpi/kernel/crypto/crc32c.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/cmac.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/crc32.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/cryptd.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/crypto_null.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/crypto_user.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/ctr.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/cts.ko
@@ -60,9 +70,8 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/salsa20_generic.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/seed.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/seqiv.ko
-#lib/modules/KVER-ipfire-rpi/kernel/crypto/serpent.ko
+#lib/modules/KVER-ipfire-rpi/kernel/crypto/serpent_generic.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/sha1_generic.ko
-#lib/modules/KVER-ipfire-rpi/kernel/crypto/sha256_generic.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/sha512_generic.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/tea.ko
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/tgr192.ko
@@ -76,18 +85,14 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/crypto/zlib.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/ata
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/ata/ahci_platform.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/ata/libahci.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/ata/libata.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/ata/pata_arasan_cf.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/ata/sata_mv.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/atm
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/atm/atmtcp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/base
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/base/regmap
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/base/regmap/regmap-i2c.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/bcma
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/bcma/bcma.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/base/regmap/regmap-mmio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/base/regmap/regmap-spi.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/block
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/block/aoe
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/block/aoe/aoe.ko
@@ -105,15 +110,11 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/bluetooth/btmrvl_sdio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/bluetooth/btsdio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/bluetooth/btusb.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/bluetooth/btwilink.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/bluetooth/hci_uart.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/bluetooth/hci_vhci.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/cdrom
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/cdrom/cdrom.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/char
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/char/hw_random
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/char/hw_random/rng-core.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/char/hw_random/timeriomem-rng.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/char/ipmi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/char/ipmi/ipmi_devintf.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/char/ipmi/ipmi_msghandler.ko
@@ -130,41 +131,46 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/dma
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/dma/dmatest.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-74x164.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-adnp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-adp5588.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-generic.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-it8761e.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-grgpio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-max7300.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-max7301.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-max730x.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-max732x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-mc33880.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-mcp23s08.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-pca953x.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-pcf857x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-rcar.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpio/gpio-ts5500.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpu
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpu/drm
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/gpu/drm/drm.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpu/drm/drm_kms_helper.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpu/drm/drm_usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpu/drm/i2c
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpu/drm/i2c/tda998x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpu/drm/udl
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/gpu/drm/udl/udl.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-a4tech.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-apple.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-aureal.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-axff.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-belkin.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-cherry.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-chicony.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-cypress.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-dr.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-elecom.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-ezkey.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-gaff.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-gyration.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-holtek-kbd.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-holtekff.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-kensington.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-icade.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-keytouch.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-kye.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-lcpower.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-lenovo-tpkbd.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-logitech-dj.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-logitech.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-magicmouse.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-microsoft.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-monterey.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-multitouch.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-ntrig.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-ortek.ko
@@ -173,19 +179,28 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-pl.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-primax.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-prodikeys.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-quanta.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-ps3remote.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat-arvo.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat-common.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat-isku.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat-kone.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat-koneplus.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat-konepure.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat-kovaplus.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat-lua.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat-pyra.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat-savu.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-roccat.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-saitek.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-samsung.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-sensor-hub.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-sjoy.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-sony.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-speedlink.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-steelseries.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-sunplus.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-thingm.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-tivo.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-tmff.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-topseed.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-twinhan.ko
@@ -195,11 +210,19 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-wiimote.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-zpff.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/hid-zydacron.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/i2c-hid
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/i2c-hid/i2c-hid.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/usbhid
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hid/usbhid/usbhid.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hsi
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hsi/clients
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hsi/clients/hsi_char.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hsi/hsi.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ad7314.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ad7414.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ad7418.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adcxx.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adm1021.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adm1025.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adm1026.ko
@@ -208,10 +231,14 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adm9240.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ads1015.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ads7828.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ads7871.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adt7310.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adt7410.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adt7411.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adt7462.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adt7470.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adt7475.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/adt7x10.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/amc6821.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/asc7621.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/atxp1.ko
@@ -228,14 +255,19 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/gl518sm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/gl520sm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/gpio-fan.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/hih6130.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/hwmon-vid.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/hwmon.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ibmaem.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ibmpex.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/iio_hwmon.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ina209.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ina2xx.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/it87.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/jc42.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lineage-pem.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm63.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm70.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm73.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm75.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm77.ko
@@ -247,18 +279,24 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm90.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm92.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm93.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm95234.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm95241.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/lm95245.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ltc4151.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ltc4215.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ltc4245.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ltc4261.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/max1111.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/max16065.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/max1619.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/max1668.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/max197.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/max6639.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/max6642.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/max6650.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/max6697.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/nct6775.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/ntc_thermistor.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/pc87360.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/hwmon/pc87427.ko
@@ -304,28 +342,33 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/algos/i2c-algo-pca.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-bcm2708.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-cbus-gpio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-designware-core.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-designware-platform.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-gpio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-nomadik.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-ocores.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-parport-light.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-parport.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-pca-platform.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-simtec.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-stub.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-taos-evm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-tiny-usb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/busses/i2c-xiic.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/i2c-dev.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/i2c-mux.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/i2c-smbus.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/i2c-stub.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/muxes
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/muxes/gpio-i2cmux.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/muxes/pca9541.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/muxes/pca954x.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/ieee802154
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/ieee802154/fakehard.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/muxes/i2c-mux-gpio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/muxes/i2c-mux-pca9541.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/i2c/muxes/i2c-mux-pca954x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/iio
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/iio/common
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/iio/common/hid-sensors
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/iio/industrialio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/ff-memless.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/input-polldev.ko
@@ -336,6 +379,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/gpio_keys_polled.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/lkkbd.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/lm8323.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/lm8333.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/matrix_keypad.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/max7359_keypad.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/mcs_touchkey.ko
@@ -344,26 +388,22 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/opencores-kbd.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/qt1070.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/qt2160.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/samsung-keypad.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/stowaway.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/sunkbd.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/tca6416-keypad.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/tca8418_keypad.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/keyboard/xtkbd.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/matrix-keymap.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/88pm860x_onkey.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/ad714x-i2c.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/ad714x.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/ati_remote2.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/bma150.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/cm109.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/keyspan_remote.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/pcf50633-input.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/pcf8574_keypad.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/powermate.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/rotary_encoder.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/yealink.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/misc/pwm-beeper.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/serio
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/serio/altera_ps2.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/serio/ambakmi.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/serio/apbps2.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/input/serio/arc_ps2.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/serio/ps2mult.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/input/sparse-keymap.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/isdn
@@ -395,24 +435,43 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/isdn/mISDN/mISDN_core.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-88pm860x.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-bd2802.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-blinkm.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-dac124s085.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-gpio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-lm3530.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-lm355x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-lm3642.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-lp3944.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-lp5521.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-lp5523.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-lp5562.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-lp55xx-common.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-lt3593.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-ot200.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-pca9532.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-pca955x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-pca9633.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-pwm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-regulator.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/ledtrig-backlight.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/ledtrig-gpio.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/ledtrig-heartbeat.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/ledtrig-netdev.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/ledtrig-timer.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/leds-tca6507.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/trigger
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/trigger/ledtrig-backlight.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/trigger/ledtrig-camera.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/trigger/ledtrig-gpio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/trigger/ledtrig-heartbeat.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/trigger/ledtrig-netdev.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/trigger/ledtrig-timer.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/leds/trigger/ledtrig-transient.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/md/bcache
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/md/bcache/bcache.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-bio-prison.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-bufio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-cache-cleaner.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-cache.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-crypt.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-delay.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-flakey.ko
@@ -428,6 +487,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-service-time.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-snapshot.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-thin-pool.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-verity.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/dm-zero.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/linear.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/md-mod.ko
@@ -440,31 +500,126 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/md/raid456.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/mc44s803.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/mt20xx.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/tda18271.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/tda827x.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/tda8290.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/tda9887.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/tea5761.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/tea5767.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/tuner-simple.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/tuner-types.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/xc4000.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tuners/xc5000.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb/dvb-core
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb/dvb-core/dvb-core.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/b2c2
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/cx2341x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/cypress_firmware.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/siano
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/siano/smsdvb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/siano/smsmdtv.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/common/tveeprom.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-core
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-core/dvb-core.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/a8293.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/af9013.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/atbm8830.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/au8522_common.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/au8522_dig.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/bcm3510.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/cx22702.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/cx24113.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/cx24116.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/cx24123.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/cxd2820r.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/dib0070.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/dib0090.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/dib3000mb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/dib3000mc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/dib7000m.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/dib7000p.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/dib8000.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/drxd.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/drxk.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/ds3000.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/dvb-pll.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/isl6421.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/isl6423.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/it913x-fe.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/itd1000.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/ix2505v.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/lg2160.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/lgdt330x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/lnbp21.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/lnbp22.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/m88ds3103.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/m88rs2000.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/mt312.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/mt352.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/nxt200x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/nxt6000.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/rtl2830.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/rtl2832.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/s5h1409.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/s5h1411.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/s5h1420.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/stb0899.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/stb6000.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/stb6100.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/stv0288.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/stv0297.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/stv0299.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/stv0900.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/stv090x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/stv6110.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/tda10023.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/tda10048.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/tda1004x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/tda10071.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/tda10086.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/tda18271c2dd.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/tda826x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/ts2020.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/zl10039.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/dvb-frontends/zl10353.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/i2c
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/i2c/cs53l32a.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/i2c/cx25840
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/i2c/cx25840/cx25840.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/i2c/ir-kbd-i2c.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/i2c/saa7115.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/i2c/wm8775.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/media.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/pci
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/pci/ttpci
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/platform
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/platform/bcm2835
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/platform/bcm2835/bcm2835-v4l2.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ati_remote.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/iguanair.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ir-jvc-decoder.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ir-lirc-codec.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ir-nec-decoder.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ir-rc5-decoder.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ir-rc6-decoder.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ir-sony-decoder.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-alink-dtu-m.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-anysee.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-apac-viewcomp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-asus-pc39.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-asus-ps3-100.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-ati-tv-wonder-hd-600.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-ati-x10.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-avermedia-a16d.ko
@@ -488,6 +643,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-encore-enltv.ko
@@ -504,13 +660,18 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-imon-mce.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-imon-pad.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-iodata-bctv7e.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-it913x-v1.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-it913x-v2.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-kaiomy.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-kworld-315u.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-kworld-pc150u.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-kworld-plus-tv-analog.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-leadtek-y04g0051.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-lirc.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-lme2510.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-manli.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-medion-x10-digitainer.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-medion-x10-or2x.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-medion-x10.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-msi-digivox-ii.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-msi-digivox-iii.ko
@@ -534,6 +695,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-pv951.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-rc6-mce.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-real-audio-220-32-keys.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-reddo.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-snapstream-firefly.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
@@ -543,6 +705,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-tevii-nec.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-tivo.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand-02.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
@@ -553,37 +716,202 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-winfast-usbii-deluxe.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/keymaps/rc-winfast.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/lirc_dev.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/mceusb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/rc-core.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/video
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/video/ir-kbd-i2c.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/video/v4l2-common.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/video/v4l2-int-device.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/video/videodev.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/rc-loopback.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/redrat3.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/streamzap.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/rc/ttusbir.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/e4000.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/fc0011.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/fc0012.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/fc0013.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/fc2580.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/max2165.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/mc44s803.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/mt2060.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/mt2063.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/mt20xx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/mxl5005s.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/qt1010.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tda18212.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tda18218.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tda18271.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tda827x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tda8290.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tda9887.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tea5761.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tea5767.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tua9001.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tuner-simple.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tuner-types.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tuner-xc2028.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/tuner_it913x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/xc4000.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/tuners/xc5000.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/au0828
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/au0828/au0828.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/b2c2
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/b2c2/b2c2-flexcop-usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/cpia2
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/cpia2/cpia2.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/cx231xx
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/cx231xx/cx231xx-alsa.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/cx231xx/cx231xx-dvb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/cx231xx/cx231xx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-af9015.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-af9035.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-anysee.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-au6610.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-az6007.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ce6230.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/dvb_usb_v2.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/mxl111sf-demod.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb-v2/mxl111sf-tuner.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-a800.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-af9005-remote.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-af9005.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-az6027.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-cinergyT2.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-cxusb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtv5100.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-dw2102.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-friio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-gp8psk.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-m920x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-nova-t-usb2.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-opera.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-pctv452e.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-technisat-usb2.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-ttusb2.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-umt-010.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-vp702x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb-vp7045.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/dvb-usb/dvb-usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/em28xx
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/em28xx/em28xx-dvb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gl860
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_benq.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_conex.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_etoms.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_finepix.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_jl2005bcd.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_kinect.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_konica.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_main.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_mars.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_mr97310a.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_nw80x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_ov519.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_ov534.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_ov534_9.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_pac207.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_pac7302.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_pac7311.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_se401.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_sn9c2028.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_sn9c20x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_sonixb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_sonixj.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_spca1528.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_spca500.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_spca501.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_spca505.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_spca506.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_spca508.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_spca561.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_sq905.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_sq905c.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_sq930x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_stk014.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_stv0680.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_t613.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_topro.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_vicam.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_xirlink_cit.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/gspca_zc3xx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/m5602
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/m5602/gspca_m5602.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/stv06xx
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/gspca/stv06xx/gspca_stv06xx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/hdpvr
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/hdpvr/hdpvr.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/pvrusb2
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/pvrusb2/pvrusb2.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/pwc
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/pwc/pwc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/s2255
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/s2255/s2255drv.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/siano
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/siano/smsusb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/sn9c102
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/sn9c102/sn9c102.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/stk1160
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/stk1160/stk1160.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/stkwebcam
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/tlg2300
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/tlg2300/poseidon.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/tm6000
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/tm6000/tm6000.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/usbvision
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/usbvision/usbvision.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/uvc
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/uvc/uvcvideo.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/zr364xx
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/usb/zr364xx/zr364xx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core/tuner.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core/v4l2-common.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core/v4l2-int-device.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core/videobuf-core.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core/videobuf2-core.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/media/v4l2-core/videodev.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/memstick
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/memstick/core
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/memstick/core/memstick.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/memstick/core/mspro_block.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/htc-pasic3.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/pcf50633-adc.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/pcf50633-gpio.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/pcf50633.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/sm501.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/tps6105x.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/tps65010.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/tps6507x.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/ucb1400_core.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/wl1273-core.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/wm8400-core.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/mfd/mfd-core.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/misc
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/apds9802als.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/apds990x.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/bh1770glc.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/bh1780gli.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/bmp085.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/c2port
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/c2port/core.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/ds1682.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/dummy-irq.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/eeprom
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/eeprom/at24.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/eeprom/eeprom.ko
@@ -591,23 +919,13 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/eeprom/max6875.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/enclosure.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/fsa9480.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/hmc6352.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/ics932s401.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/isl29003.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/isl29020.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/iwmc3200top
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/iwmc3200top/iwmc3200top.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/lis3lv02d
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/lis3lv02d/lis3lv02d.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/lis3lv02d/lis3lv02d_i2c.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/ti-st
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/ti-st/st_drv.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/misc/tsl2550.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/card
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/card/mmc_test.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/card/sdio_uart.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/host
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/host/dw_mmc-exynos.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/host/dw_mmc-pltfm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/host/dw_mmc.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/host/mmci.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/host/sdhci-pltfm.ko
@@ -616,9 +934,9 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/host/ushc.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mmc/host/vub300.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/ar7part.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/chips
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/chips/chipreg.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/cmdlinepart.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/lpddr
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/lpddr/lpddr_cmds.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/lpddr/qinfo_probe.ko
@@ -627,23 +945,12 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/mtd.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/mtd_blkdevs.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/mtdblock.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/mtdchar.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/nand
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/nand/nand.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/nand/nand_ecc.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/nand/nand_ids.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/nand/plat_nand.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/ofpart.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/sm_ftl.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/tests
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/tests/mtd_nandecctest.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/tests/mtd_oobtest.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/tests/mtd_pagetest.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/tests/mtd_readtest.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/tests/mtd_speedtest.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/tests/mtd_stresstest.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/tests/mtd_subpagetest.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/tests/mtd_torturetest.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/ubi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/mtd/ubi/ubi.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net
@@ -656,18 +963,28 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/8390/ax88796.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/broadcom
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/broadcom/b44.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/cadence
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/cadence/at91_ether.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/cadence/macb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/calxeda
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/calxeda/xgmac.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/cirrus
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/cirrus/cs89x0.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/davicom
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/davicom/dm9000.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/dlink
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/dlink/de600.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/dlink/de620.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/dnet.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/ethoc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/faraday
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/faraday/ftgmac100.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/faraday/ftmac100.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/marvell
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/marvell/mvmdio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/micrel
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/micrel/ks8842.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/micrel/ks8851.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/micrel/ks8851_mll.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/seeq
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/seeq/seeq8005.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/microchip
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/microchip/enc28j60.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/smsc
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/smsc/smc911x.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/smsc/smc91x.ko
@@ -675,31 +992,33 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/stmicro
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/stmicro/stmmac
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/wiznet
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/wiznet/w5100.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ethernet/wiznet/w5300.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ieee802154
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ieee802154/fakehard.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ieee802154/fakelb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/ifb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/imq.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/irda
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/irda/irda-usb.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/irda/irtty-sir.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/irda/kingsun-sir.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/irda/ks959-sir.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/irda/ksdazzle-sir.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/irda/mcs7780.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/irda/sir-dev.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/irda/stir4200.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/macvlan.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/macvtap.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/mii.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/bcm87xx.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/broadcom.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/cicada.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/davicom.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/dp83640.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/et1011c.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/icplus.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/lxt.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/marvell.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/mdio-bitbang.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/mdio-gpio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/mdio-mux-gpio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/mdio-mux-mmioreg.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/mdio-mux.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/micrel.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/national.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/phy/qsemi.ko
@@ -720,12 +1039,21 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/slip
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/slip/slhc.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/slip/slip.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/team
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/team/team.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/team/team_mode_activebackup.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/team/team_mode_broadcast.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/team/team_mode_loadbalance.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/team/team_mode_random.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/team/team_mode_roundrobin.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/tun.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/asix.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/ax88179_178a.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/catc.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/cdc_eem.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/cdc_ether.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/cdc_mbim.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/cdc_ncm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/cdc_subset.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/cx82310_eth.ko
@@ -740,6 +1068,8 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/net1080.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/pegasus.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/plusb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/qmi_wwan.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/r8152.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/rndis_host.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/rtl8150.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/sierra_net.ko
@@ -748,6 +1078,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/usbnet.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/usb/zaurus.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/veth.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/vxlan.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wan
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wan/dlci.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wan/hdlc.ko
@@ -758,10 +1089,79 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wan/hdlc_raw_eth.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ar5523
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ath.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ath6kl
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ath6kl/ath6kl_core.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ath6kl/ath6kl_sdio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ath6kl/ath6kl_usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ath9k
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/carl9170
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/b43
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/b43/b43.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/b43legacy
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/brcm80211
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/brcm80211/brcmfmac
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/brcm80211/brcmsmac
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/brcm80211/brcmutil
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/hostap
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/hostap/hostap.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/libertas
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/libertas/libertas.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/libertas/libertas_spi.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/libertas_tf
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/libertas_uap
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/libertas_uap/uap8xxx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/mwifiex
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/p54
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/p54/p54common.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/p54/p54spi.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/p54/p54usb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rndis_wlan.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rt2x00
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rtl818x
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rtl818x/rtl8187
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rtl8192cu
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/rtl8192cu/8192cu.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti/wl1251
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti/wl1251/wl1251_sdio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti/wl12xx
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti/wl12xx/wl12xx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti/wl18xx
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti/wl18xx/wl18xx.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti/wlcore
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/zd1201.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/zd1211rw
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/parport
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/parport/parport.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/parport/parport_ax88796.ko
@@ -777,34 +1177,47 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-bq4802.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-cmos.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds1286.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds1305.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds1307.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds1374.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds1390.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds1511.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds1553.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds1672.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds1742.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds2404.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds3232.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-ds3234.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-em3027.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-fm3130.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-hid-sensor-time.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-isl12022.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-isl1208.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-m41t80.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-m41t93.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-m41t94.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-m48t35.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-m48t59.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-m48t86.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-max6900.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-max6902.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-msm6242.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-pcf50633.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-pcf2123.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-pcf8523.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-pcf8563.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-pcf8583.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-pl030.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-pl031.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-r9701.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-rp5c01.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-rs5c348.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-rs5c372.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-rv3029c2.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-rx4581.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-rx8025.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-rx8581.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-s35390a.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-snvs.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-stk17ta8.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-v3020.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/rtc/rtc-x1205.ko
@@ -835,13 +1248,25 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/scsi/scsi_transport_sas.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/scsi/scsi_transport_spi.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/scsi/scsi_transport_srp.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/scsi/scsi_wait_scan.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/scsi/ses.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/scsi/sg.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/scsi/sr_mod.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/scsi/ufs/ufshcd.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/spi
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/spi/spi-bcm2708.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/spi/spi-bitbang.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/spi/spi-gpio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/spi/spi-oc-tiny.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/spi/spi-pl022.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/ssb
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/ssb/ssb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/staging
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/staging/echo
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/staging/echo/echo.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/staging/rts5139
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/staging/rts5139/rts5139.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/staging/usbip
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/staging/usbip/usbip-core.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/staging/usbip/usbip-host.ko
@@ -849,13 +1274,18 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/tty
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/n_gsm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial/8250_dw.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial/8250
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial/8250/8250_dw.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial/8250/8250_em.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial/altera_jtaguart.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial/altera_uart.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial/arc_uart.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial/sccnxp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial/timbuart.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/tty/serial/xilinx_uartps.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/uio
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/uio/uio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/uio/uio_dmem_genirq.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/uio/uio_pdrv.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/uio/uio_pdrv_genirq.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb
@@ -870,41 +1300,32 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/class/cdc-wdm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/class/usblp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/class/usbtmc.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/dwc3
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/dwc3/dwc3-omap.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/dwc3/dwc3.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/host
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/host/isp116x-hcd.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/host/isp1362-hcd.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/host/oxu210hp-hcd.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/host/r8a66597-hcd.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/host/sl811-hcd.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/host/u132-hcd.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/cypress_cy7c63.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/cytherm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/emi26.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/emi62.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/ezusb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/ftdi-elan.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/iowarrior.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/isight_firmware.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/usb3503.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/usblcd.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/usbled.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/usbsevseg.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/uss720.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/misc/yurex.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/otg
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/otg/gpio_vbus.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/otg/nop-usb-xceiv.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/aircable.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/ark3116.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/belkin_sa.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/ch341.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/cp210x.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/cyberjack.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/cypress_m8.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/digi_acceleport.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/empeg.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/f81232.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/ftdi_sio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/funsoft.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/garmin_gps.ko
@@ -915,17 +1336,24 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/ipw.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/ir-usb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/iuu_phoenix.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/keyspan.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/keyspan_pda.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/kl5kusb105.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/kobil_sct.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/mct_u232.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/metro-usb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/mos7720.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/mos7840.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/moto_modem.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/navman.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/omninet.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/opticon.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/option.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/oti6858.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/pl2303.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/qcaux.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/qcserial.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/quatech2.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/safe_serial.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/siemens_mpi.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/sierra.ko
@@ -938,9 +1366,11 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/visor.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/vivopay-serial.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/whiteheat.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/wishbone-serial.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/xsens_mt.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/zio.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/serial/zte_ev.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/storage
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/storage/uas.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/storage/ums-alauda.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/storage/ums-cypress.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/storage/ums-datafab.ko
@@ -956,23 +1386,13 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/storage/ums-usbat.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/usb/storage/usb-storage.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/video
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/backlight
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/backlight/88pm860x_bl.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/backlight/adp8860_bl.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/backlight/adp8870_bl.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/backlight/generic_bl.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/backlight/lcd.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/backlight/pcf50633-backlight.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/backlight/platform_lcd.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/metronomefb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/video/output.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/sm501fb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/video/smscufx.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/video/syscopyarea.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/video/sysfillrect.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/tmiofb.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/video/udlfb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/video/uvesafb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/masters
@@ -983,24 +1403,26 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_bq27000.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_ds2408.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_ds2413.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_ds2423.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_ds2431.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_ds2433.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_ds2760.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_ds2780.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_ds2781.ko
+#lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_ds28e04.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_smem.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/slaves/w1_therm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/w1/wire.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/watchdog
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/watchdog/bcm2708_wdog.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/watchdog/dw_wdt.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/watchdog/max63xx_wdt.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/watchdog/pcwd_usb.ko
 #lib/modules/KVER-ipfire-rpi/kernel/drivers/watchdog/softdog.ko
-#lib/modules/KVER-ipfire-rpi/kernel/drivers/watchdog/sp805_wdt.ko
 #lib/modules/KVER-ipfire-rpi/kernel/fs
 #lib/modules/KVER-ipfire-rpi/kernel/fs/autofs4
 #lib/modules/KVER-ipfire-rpi/kernel/fs/autofs4/autofs4.ko
+#lib/modules/KVER-ipfire-rpi/kernel/fs/btrfs
+#lib/modules/KVER-ipfire-rpi/kernel/fs/btrfs/btrfs.ko
 #lib/modules/KVER-ipfire-rpi/kernel/fs/cachefiles
 #lib/modules/KVER-ipfire-rpi/kernel/fs/cachefiles/cachefiles.ko
 #lib/modules/KVER-ipfire-rpi/kernel/fs/cifs
@@ -1027,6 +1449,9 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/fs/lockd/lockd.ko
 #lib/modules/KVER-ipfire-rpi/kernel/fs/nfs
 #lib/modules/KVER-ipfire-rpi/kernel/fs/nfs/nfs.ko
+#lib/modules/KVER-ipfire-rpi/kernel/fs/nfs/nfsv2.ko
+#lib/modules/KVER-ipfire-rpi/kernel/fs/nfs/nfsv3.ko
+#lib/modules/KVER-ipfire-rpi/kernel/fs/nfs/nfsv4.ko
 #lib/modules/KVER-ipfire-rpi/kernel/fs/nfs_common
 #lib/modules/KVER-ipfire-rpi/kernel/fs/nfs_common/nfs_acl.ko
 #lib/modules/KVER-ipfire-rpi/kernel/fs/nfsd
@@ -1044,6 +1469,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/fs/xfs
 #lib/modules/KVER-ipfire-rpi/kernel/fs/xfs/xfs.ko
 #lib/modules/KVER-ipfire-rpi/kernel/lib
+#lib/modules/KVER-ipfire-rpi/kernel/lib/asn1_decoder.ko
 #lib/modules/KVER-ipfire-rpi/kernel/lib/cordic.ko
 #lib/modules/KVER-ipfire-rpi/kernel/lib/crc-ccitt.ko
 #lib/modules/KVER-ipfire-rpi/kernel/lib/crc-itu-t.ko
@@ -1051,6 +1477,9 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/lib/crc7.ko
 #lib/modules/KVER-ipfire-rpi/kernel/lib/crc8.ko
 #lib/modules/KVER-ipfire-rpi/kernel/lib/libcrc32c.ko
+#lib/modules/KVER-ipfire-rpi/kernel/lib/mpi
+#lib/modules/KVER-ipfire-rpi/kernel/lib/mpi/mpi.ko
+#lib/modules/KVER-ipfire-rpi/kernel/lib/oid_registry.ko
 #lib/modules/KVER-ipfire-rpi/kernel/lib/raid6
 #lib/modules/KVER-ipfire-rpi/kernel/lib/raid6/raid6_pq.ko
 #lib/modules/KVER-ipfire-rpi/kernel/lib/ts_bm.ko
@@ -1108,6 +1537,8 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/bridge/netfilter/ebtables.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ceph
 #lib/modules/KVER-ipfire-rpi/kernel/net/ceph/libceph.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/core
+#lib/modules/KVER-ipfire-rpi/kernel/net/core/netprio_cgroup.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ieee802154
 #lib/modules/KVER-ipfire-rpi/kernel/net/ieee802154/6lowpan.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ieee802154/af_802154.ko
@@ -1118,44 +1549,35 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/gre.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/inet_diag.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/ip_gre.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/ip_tunnel.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/ip_vti.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/ipcomp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/ipip.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/arp_tables.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/arpt_mangle.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/arptable_filter.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ip_queue.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ip_tables.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_CLUSTERIP.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_ECN.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_LOG.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_NETMAP.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_REJECT.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_ULOG.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_ecn.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/iptable_filter.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/iptable_mangle.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/iptable_nat.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/iptable_raw.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/iptable_security.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_amanda.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_ftp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_h323.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_irc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_proto_dccp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_proto_sctp.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_proto_udplite.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_sip.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/tcp_bic.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/tcp_cubic.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/tcp_diag.ko
@@ -1170,17 +1592,17 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/tcp_westwood.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/tcp_yeah.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/tunnel4.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/udp_diag.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv4/xfrm4_tunnel.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/ah6.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/ip6_gre.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/ip6_tunnel.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/ipcomp6.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/mip6.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6_queue.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6_tables.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6t_LOG.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6t_ah.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6t_eui64.ko
@@ -1188,10 +1610,12 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6t_hbh.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6t_ipv6header.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6t_mh.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6t_rpfilter.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6t_rt.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6table_filter.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6table_mangle.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6table_raw.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/ip6table_security.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/nf_conntrack_ipv6.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/netfilter/nf_defrag_ipv6.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/sit.ko
@@ -1201,31 +1625,36 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/xfrm6_mode_transport.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/xfrm6_mode_tunnel.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/xfrm6_tunnel.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/ircomm
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/ircomm/ircomm-tty.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/ircomm/ircomm.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/irda.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/irlan
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/irlan/irlan.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/irnet
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/irnet/irnet.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/key
 #lib/modules/KVER-ipfire-rpi/kernel/net/key/af_key.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/l2tp
 #lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_core.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_eth.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_ip.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_ip6.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_netlink.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_ppp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/llc
 #lib/modules/KVER-ipfire-rpi/kernel/net/llc/llc.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/mac80211
 #lib/modules/KVER-ipfire-rpi/kernel/net/mac80211/mac80211.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/mac802154
+#lib/modules/KVER-ipfire-rpi/kernel/net/mac802154/mac802154.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_conntrack.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_lc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_rr.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_sed.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_sh.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_wlc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs_wrr.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_conntrack_amanda.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_conntrack_broadcast.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_conntrack_ftp.ko
@@ -1242,8 +1671,20 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_conntrack_sip.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_conntrack_snmp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_nat.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_nat_amanda.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_nat_ftp.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_nat_irc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_nat_proto_dccp.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_nat_proto_sctp.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_nat_sip.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nf_tproxy_core.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nfnetlink.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nfnetlink_acct.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nfnetlink_cthelper.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nfnetlink_cttimeout.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nfnetlink_log.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/nfnetlink_queue.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/x_tables.ko
@@ -1253,22 +1694,27 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_CT.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_DSCP.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_HL.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_HMARK.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_IDLETIMER.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_IMQ.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_LED.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_LOG.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_NETMAP.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_NFLOG.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_NFQUEUE.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_NOTRACK.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_RATEEST.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_REDIRECT.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_TCPMSS.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_TCPOPTSTRIP.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_TEE.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_TPROXY.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_TRACE.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_addrtype.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_bpf.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_cluster.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_comment.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_connbytes.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_connlabel.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_connlimit.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_connmark.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_conntrack.ko
@@ -1276,6 +1722,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_dccp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_devgroup.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_dscp.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_ecn.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_esp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_hashlimit.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_helper.ko
@@ -1288,6 +1735,8 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_mac.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_mark.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_multiport.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_nat.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_nfacct.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_osf.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_owner.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_physdev.ko
@@ -1306,6 +1755,10 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_tcpudp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_time.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/xt_u32.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/netlink
+#lib/modules/KVER-ipfire-rpi/kernel/net/netlink/netlink_diag.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/openvswitch
+#lib/modules/KVER-ipfire-rpi/kernel/net/openvswitch/openvswitch.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/rfkill
 #lib/modules/KVER-ipfire-rpi/kernel/net/rfkill/rfkill-gpio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/rfkill/rfkill-regulator.ko
@@ -1324,6 +1777,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/act_simple.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/act_skbedit.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/cls_basic.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/sched/cls_cgroup.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/cls_flow.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/cls_fw.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/cls_route.ko
@@ -1339,8 +1793,10 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_atm.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_cbq.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_choke.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_codel.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_drr.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_dsmark.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_fq_codel.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_gred.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_hfsc.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_htb.ko
@@ -1348,6 +1804,8 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_mqprio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_multiq.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_netem.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_pie.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_plug.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_prio.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_qfq.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sched/sch_red.ko
@@ -1360,6 +1818,8 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/sunrpc/sunrpc.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/unix
+#lib/modules/KVER-ipfire-rpi/kernel/net/unix/unix_diag.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/wireless
 #lib/modules/KVER-ipfire-rpi/kernel/net/wireless/cfg80211.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/wireless/lib80211.ko
@@ -1367,6 +1827,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/net/wireless/lib80211_crypt_tkip.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/wireless/lib80211_crypt_wep.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/xfrm
+#lib/modules/KVER-ipfire-rpi/kernel/net/xfrm/xfrm_algo.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/xfrm/xfrm_ipcomp.ko
 #lib/modules/KVER-ipfire-rpi/kernel/net/xfrm/xfrm_user.ko
 #lib/modules/KVER-ipfire-rpi/kernel/sound
@@ -1387,6 +1848,7 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/sound/core/seq/snd-seq-midi.ko
 #lib/modules/KVER-ipfire-rpi/kernel/sound/core/seq/snd-seq-virmidi.ko
 #lib/modules/KVER-ipfire-rpi/kernel/sound/core/seq/snd-seq.ko
+#lib/modules/KVER-ipfire-rpi/kernel/sound/core/snd-compress.ko
 #lib/modules/KVER-ipfire-rpi/kernel/sound/core/snd-hrtimer.ko
 #lib/modules/KVER-ipfire-rpi/kernel/sound/core/snd-hwdep.ko
 #lib/modules/KVER-ipfire-rpi/kernel/sound/core/snd-page-alloc.ko
@@ -1409,6 +1871,19 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/kernel/sound/pci/ac97
 #lib/modules/KVER-ipfire-rpi/kernel/sound/pci/ac97/snd-ac97-codec.ko
 #lib/modules/KVER-ipfire-rpi/kernel/sound/soc
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/bcm
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/bcm/snd-soc-bcm2708-i2s.ko
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/bcm/snd-soc-hifiberry-dac.ko
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/bcm/snd-soc-hifiberry-digi.ko
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/bcm/snd-soc-rpi-dac.ko
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/codecs
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/codecs/snd-soc-pcm1794a.ko
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/codecs/snd-soc-pcm5102a.ko
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/codecs/snd-soc-wm8804.ko
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/dwc
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/dwc/designware_i2s.ko
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/generic
+#lib/modules/KVER-ipfire-rpi/kernel/sound/soc/generic/snd-soc-simple-card.ko
 #lib/modules/KVER-ipfire-rpi/kernel/sound/soc/snd-soc-core.ko
 #lib/modules/KVER-ipfire-rpi/kernel/sound/soundcore.ko
 #lib/modules/KVER-ipfire-rpi/kernel/sound/usb
@@ -1423,17 +1898,12 @@ lib/modules/KVER-ipfire-rpi
 #lib/modules/KVER-ipfire-rpi/modules.alias
 #lib/modules/KVER-ipfire-rpi/modules.alias.bin
 #lib/modules/KVER-ipfire-rpi/modules.builtin
-#lib/modules/KVER-ipfire-rpi/modules.ccwmap
+#lib/modules/KVER-ipfire-rpi/modules.builtin.bin
 #lib/modules/KVER-ipfire-rpi/modules.dep
 #lib/modules/KVER-ipfire-rpi/modules.dep.bin
-#lib/modules/KVER-ipfire-rpi/modules.ieee1394map
-#lib/modules/KVER-ipfire-rpi/modules.inputmap
-#lib/modules/KVER-ipfire-rpi/modules.isapnpmap
-#lib/modules/KVER-ipfire-rpi/modules.ofmap
+#lib/modules/KVER-ipfire-rpi/modules.devname
 #lib/modules/KVER-ipfire-rpi/modules.order
-#lib/modules/KVER-ipfire-rpi/modules.pcimap
-#lib/modules/KVER-ipfire-rpi/modules.seriomap
+#lib/modules/KVER-ipfire-rpi/modules.softdep
 #lib/modules/KVER-ipfire-rpi/modules.symbols
 #lib/modules/KVER-ipfire-rpi/modules.symbols.bin
-#lib/modules/KVER-ipfire-rpi/modules.usbmap
 #lib/modules/KVER-ipfire-rpi/source
index 774e47d289a32b7c43350982aba4abb6801b2f2c..4d17590b6ddc163f87805bdfc17838f49faa6a84 100644 (file)
@@ -8,7 +8,7 @@ usr/bin/sensors-conf-convert
 #usr/lib/libsensors.a
 usr/lib/libsensors.so
 usr/lib/libsensors.so.4
-usr/lib/libsensors.so.4.3.1
+usr/lib/libsensors.so.4.3.2
 #usr/man/man1/sensors.1
 #usr/man/man3/libsensors.3
 #usr/man/man5/sensors.conf.5
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..b139d7e732a416475e9bf41e07a6374517ade9c6 100644 (file)
@@ -1,6 +1,16 @@
 #boot/MLO
-#boot/u-boot.bin
-usr/bin/mkimage
 boot/boot.scr
 boot/boot.script
 boot/convert_bootscript
+#boot/u-boot.img
+usr/bin/mkimage
+#usr/share/u-boot
+#usr/share/u-boot/pandaboard
+#usr/share/u-boot/pandaboard/MLO
+#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
index d3a010cab332cfef0b3cdbabc57bc0c9bf4316ee..c75b147c69747df1d5bf533cb4bd3f3782ecfb20 100644 (file)
@@ -1,17 +1,27 @@
-#bin/arch
 bin/dmesg
+bin/findmnt
+bin/lsblk
 bin/more
 bin/mount
 bin/umount
-etc/fdprm
+bin/wdctl
+#etc/fcron.daily
+etc/fcron.daily/trim
+lib/libblkid.so.1.1.0
+lib/libmount.so.1
+lib/libmount.so.1.1.0
+lib/libuuid.so.1.3.0
 sbin/agetty
+sbin/blkdiscard
 sbin/blockdev
 sbin/cfdisk
+sbin/chcpu
 sbin/ctrlaltdel
-#sbin/elvtune
 sbin/fdisk
 #sbin/fsck.cramfs
 sbin/fsck.minix
+sbin/fsfreeze
+sbin/fstrim
 sbin/hwclock
 sbin/losetup
 sbin/mkfs
@@ -19,46 +29,160 @@ sbin/mkfs
 #sbin/mkfs.cramfs
 sbin/mkfs.minix
 sbin/mkswap
+sbin/nologin
 #sbin/pivot_root
+sbin/raw
 sbin/sfdisk
+sbin/swaplabel
 sbin/swapoff
 sbin/swapon
+sbin/switch_root
+sbin/wipefs
 #usr/bin/cal
-#usr/bin/chkdupexe
+#usr/bin/chrt
 #usr/bin/col
 #usr/bin/colcrt
 #usr/bin/colrm
 #usr/bin/column
 #usr/bin/cytune
-#usr/bin/ddate
-usr/bin/fdformat
+usr/bin/eject
+usr/bin/fallocate
 usr/bin/flock
 usr/bin/getopt
 #usr/bin/hexdump
+usr/bin/ionice
+#usr/bin/ipcmk
 #usr/bin/ipcrm
 #usr/bin/ipcs
 #usr/bin/isosize
-#usr/bin/line
+#usr/bin/linux32
+#usr/bin/linux64
 usr/bin/logger
 #usr/bin/look
+usr/bin/lscpu
+usr/bin/lslocks
 #usr/bin/mcookie
 #usr/bin/namei
+usr/bin/nsenter
 usr/bin/pg
-#usr/bin/raw
+usr/bin/prlimit
 usr/bin/rename
 usr/bin/renice
 #usr/bin/rev
 #usr/bin/script
-#usr/bin/setfdprm
+#usr/bin/scriptreplay
+#usr/bin/setarch
 #usr/bin/setsid
 #usr/bin/setterm
 #usr/bin/tailf
+#usr/bin/taskset
 #usr/bin/ul
+#usr/bin/unshare
 #usr/bin/whereis
-#usr/bin/write
+#usr/include/libmount
+#usr/include/libmount/libmount.h
+#usr/lib/libblkid.la
+#usr/lib/libmount.a
+#usr/lib/libmount.la
+usr/lib/libmount.so
+#usr/lib/libuuid.la
+#usr/lib/pkgconfig/mount.pc
+usr/sbin/addpart
+usr/sbin/delpart
+usr/sbin/fdformat
+usr/sbin/ldattach
+usr/sbin/partx
 #usr/sbin/readprofile
-#usr/sbin/tunelp
-#usr/share/info/ipc.info
+usr/sbin/resizepart
+usr/sbin/rtcwake
+#usr/share/bash-completion
+#usr/share/bash-completion/completions
+#usr/share/bash-completion/completions/addpart
+#usr/share/bash-completion/completions/blkdiscard
+#usr/share/bash-completion/completions/blkid
+#usr/share/bash-completion/completions/blockdev
+#usr/share/bash-completion/completions/cal
+#usr/share/bash-completion/completions/cfdisk
+#usr/share/bash-completion/completions/chcpu
+#usr/share/bash-completion/completions/chrt
+#usr/share/bash-completion/completions/col
+#usr/share/bash-completion/completions/colcrt
+#usr/share/bash-completion/completions/colrm
+#usr/share/bash-completion/completions/column
+#usr/share/bash-completion/completions/ctrlaltdel
+#usr/share/bash-completion/completions/cytune
+#usr/share/bash-completion/completions/delpart
+#usr/share/bash-completion/completions/dmesg
+#usr/share/bash-completion/completions/eject
+#usr/share/bash-completion/completions/fallocate
+#usr/share/bash-completion/completions/fdformat
+#usr/share/bash-completion/completions/fdisk
+#usr/share/bash-completion/completions/findmnt
+#usr/share/bash-completion/completions/flock
+#usr/share/bash-completion/completions/fsck
+#usr/share/bash-completion/completions/fsck.cramfs
+#usr/share/bash-completion/completions/fsck.minix
+#usr/share/bash-completion/completions/fsfreeze
+#usr/share/bash-completion/completions/fstrim
+#usr/share/bash-completion/completions/getopt
+#usr/share/bash-completion/completions/hexdump
+#usr/share/bash-completion/completions/hwclock
+#usr/share/bash-completion/completions/ionice
+#usr/share/bash-completion/completions/ipcrm
+#usr/share/bash-completion/completions/ipcs
+#usr/share/bash-completion/completions/isosize
+#usr/share/bash-completion/completions/ldattach
+#usr/share/bash-completion/completions/logger
+#usr/share/bash-completion/completions/look
+#usr/share/bash-completion/completions/losetup
+#usr/share/bash-completion/completions/lsblk
+#usr/share/bash-completion/completions/lscpu
+#usr/share/bash-completion/completions/lslocks
+#usr/share/bash-completion/completions/mcookie
+#usr/share/bash-completion/completions/mesg
+#usr/share/bash-completion/completions/mkfs
+#usr/share/bash-completion/completions/mkfs.bfs
+#usr/share/bash-completion/completions/mkfs.cramfs
+#usr/share/bash-completion/completions/mkfs.minix
+#usr/share/bash-completion/completions/mkswap
+#usr/share/bash-completion/completions/more
+#usr/share/bash-completion/completions/mountpoint
+#usr/share/bash-completion/completions/namei
+#usr/share/bash-completion/completions/nsenter
+#usr/share/bash-completion/completions/partx
+#usr/share/bash-completion/completions/pg
+#usr/share/bash-completion/completions/pivot_root
+#usr/share/bash-completion/completions/prlimit
+#usr/share/bash-completion/completions/raw
+#usr/share/bash-completion/completions/readprofile
+#usr/share/bash-completion/completions/rename
+#usr/share/bash-completion/completions/renice
+#usr/share/bash-completion/completions/resizepart
+#usr/share/bash-completion/completions/rev
+#usr/share/bash-completion/completions/rtcwake
+#usr/share/bash-completion/completions/script
+#usr/share/bash-completion/completions/scriptreplay
+#usr/share/bash-completion/completions/setarch
+#usr/share/bash-completion/completions/setsid
+#usr/share/bash-completion/completions/setterm
+#usr/share/bash-completion/completions/sfdisk
+#usr/share/bash-completion/completions/swaplabel
+#usr/share/bash-completion/completions/swapon
+#usr/share/bash-completion/completions/tailf
+#usr/share/bash-completion/completions/taskset
+#usr/share/bash-completion/completions/ul
+#usr/share/bash-completion/completions/unshare
+#usr/share/bash-completion/completions/utmpdump
+#usr/share/bash-completion/completions/uuidd
+#usr/share/bash-completion/completions/uuidgen
+#usr/share/bash-completion/completions/wall
+#usr/share/bash-completion/completions/wdctl
+#usr/share/bash-completion/completions/whereis
+#usr/share/bash-completion/completions/wipefs
+#usr/share/doc/util-linux
+#usr/share/doc/util-linux/getopt
+#usr/share/doc/util-linux/getopt/getopt-parse.bash
+#usr/share/doc/util-linux/getopt/getopt-parse.tcsh
 #usr/share/locale/ca/LC_MESSAGES/util-linux.mo
 #usr/share/locale/cs/LC_MESSAGES/util-linux.mo
 #usr/share/locale/da/LC_MESSAGES/util-linux.mo
@@ -67,12 +191,21 @@ usr/bin/renice
 #usr/share/locale/et
 #usr/share/locale/et/LC_MESSAGES
 #usr/share/locale/et/LC_MESSAGES/util-linux.mo
+#usr/share/locale/eu
+#usr/share/locale/eu/LC_MESSAGES
+#usr/share/locale/eu/LC_MESSAGES/util-linux.mo
 #usr/share/locale/fi/LC_MESSAGES/util-linux.mo
 #usr/share/locale/fr/LC_MESSAGES/util-linux.mo
+#usr/share/locale/gl/LC_MESSAGES/util-linux.mo
+#usr/share/locale/hr/LC_MESSAGES/util-linux.mo
+#usr/share/locale/hu/LC_MESSAGES/util-linux.mo
+#usr/share/locale/id/LC_MESSAGES/util-linux.mo
 #usr/share/locale/it/LC_MESSAGES/util-linux.mo
 #usr/share/locale/ja/LC_MESSAGES/util-linux.mo
 #usr/share/locale/nl/LC_MESSAGES/util-linux.mo
+#usr/share/locale/pl/LC_MESSAGES/util-linux.mo
 #usr/share/locale/pt_BR/LC_MESSAGES/util-linux.mo
+#usr/share/locale/ru/LC_MESSAGES/util-linux.mo
 #usr/share/locale/sl
 #usr/share/locale/sl/LC_MESSAGES
 #usr/share/locale/sl/LC_MESSAGES/util-linux.mo
@@ -81,68 +214,91 @@ usr/bin/renice
 #usr/share/locale/uk
 #usr/share/locale/uk/LC_MESSAGES
 #usr/share/locale/uk/LC_MESSAGES/util-linux.mo
-#usr/share/man/man1/arch.1
+#usr/share/locale/vi/LC_MESSAGES/util-linux.mo
+#usr/share/locale/zh_CN/LC_MESSAGES/util-linux.mo
+#usr/share/locale/zh_TW/LC_MESSAGES/util-linux.mo
 #usr/share/man/man1/cal.1
-#usr/share/man/man1/chkdupexe.1
+#usr/share/man/man1/chrt.1
 #usr/share/man/man1/col.1
 #usr/share/man/man1/colcrt.1
 #usr/share/man/man1/colrm.1
 #usr/share/man/man1/column.1
-#usr/share/man/man1/ddate.1
+#usr/share/man/man1/dmesg.1
+#usr/share/man/man1/eject.1
+#usr/share/man/man1/fallocate.1
 #usr/share/man/man1/flock.1
 #usr/share/man/man1/getopt.1
 #usr/share/man/man1/hexdump.1
-#usr/share/man/man1/line.1
+#usr/share/man/man1/ionice.1
+#usr/share/man/man1/ipcmk.1
+#usr/share/man/man1/ipcrm.1
+#usr/share/man/man1/ipcs.1
+#usr/share/man/man1/logger.1
 #usr/share/man/man1/look.1
+#usr/share/man/man1/lscpu.1
 #usr/share/man/man1/mcookie.1
 #usr/share/man/man1/more.1
 #usr/share/man/man1/namei.1
+#usr/share/man/man1/nsenter.1
 #usr/share/man/man1/pg.1
-#usr/share/man/man1/readprofile.1
+#usr/share/man/man1/prlimit.1
 #usr/share/man/man1/rename.1
+#usr/share/man/man1/renice.1
 #usr/share/man/man1/rev.1
 #usr/share/man/man1/script.1
+#usr/share/man/man1/scriptreplay.1
+#usr/share/man/man1/setsid.1
 #usr/share/man/man1/setterm.1
 #usr/share/man/man1/tailf.1
+#usr/share/man/man1/taskset.1
 #usr/share/man/man1/ul.1
+#usr/share/man/man1/unshare.1
 #usr/share/man/man1/whereis.1
-#usr/share/man/man1/write.1
+#usr/share/man/man3/uuid_generate_time_safe.3
 #usr/share/man/man5/fstab.5
-#usr/share/man/man5/nfs.5
+#usr/share/man/man8/addpart.8
 #usr/share/man/man8/agetty.8
+#usr/share/man/man8/blkdiscard.8
 #usr/share/man/man8/blockdev.8
 #usr/share/man/man8/cfdisk.8
+#usr/share/man/man8/chcpu.8
 #usr/share/man/man8/ctrlaltdel.8
 #usr/share/man/man8/cytune.8
-#usr/share/man/man8/dmesg.8
-#usr/share/man/man8/elvtune.8
+#usr/share/man/man8/delpart.8
 #usr/share/man/man8/fdformat.8
 #usr/share/man/man8/fdisk.8
+#usr/share/man/man8/findmnt.8
+#usr/share/man/man8/fsck.cramfs.8
 #usr/share/man/man8/fsck.minix.8
+#usr/share/man/man8/fsfreeze.8
+#usr/share/man/man8/fstrim.8
 #usr/share/man/man8/hwclock.8
-#usr/share/man/man8/ipcrm.8
-#usr/share/man/man8/ipcs.8
 #usr/share/man/man8/isosize.8
+#usr/share/man/man8/ldattach.8
+#usr/share/man/man8/linux32.8
+#usr/share/man/man8/linux64.8
 #usr/share/man/man8/losetup.8
+#usr/share/man/man8/lsblk.8
+#usr/share/man/man8/lslocks.8
 #usr/share/man/man8/mkfs.8
 #usr/share/man/man8/mkfs.bfs.8
+#usr/share/man/man8/mkfs.cramfs.8
 #usr/share/man/man8/mkfs.minix.8
 #usr/share/man/man8/mkswap.8
 #usr/share/man/man8/mount.8
+#usr/share/man/man8/nologin.8
+#usr/share/man/man8/partx.8
 #usr/share/man/man8/pivot_root.8
 #usr/share/man/man8/raw.8
-#usr/share/man/man8/renice.8
-#usr/share/man/man8/setfdprm.8
-#usr/share/man/man8/setsid.8
+#usr/share/man/man8/readprofile.8
+#usr/share/man/man8/resizepart.8
+#usr/share/man/man8/rtcwake.8
+#usr/share/man/man8/setarch.8
 #usr/share/man/man8/sfdisk.8
-#usr/share/man/man8/sln.8
+#usr/share/man/man8/swaplabel.8
 #usr/share/man/man8/swapoff.8
 #usr/share/man/man8/swapon.8
-#usr/share/man/man8/tunelp.8
+#usr/share/man/man8/switch_root.8
 #usr/share/man/man8/umount.8
-#usr/share/misc/getopt
-#usr/share/misc/getopt/getopt-parse.bash
-#usr/share/misc/getopt/getopt-parse.tcsh
-#usr/share/misc/getopt/getopt-test.bash
-#usr/share/misc/getopt/getopt-test.tcsh
-var/lib/hwclock
+#usr/share/man/man8/wdctl.8
+#usr/share/man/man8/wipefs.8
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/bitstream b/config/rootfiles/common/bitstream
new file mode 100644 (file)
index 0000000..583d8f2
--- /dev/null
@@ -0,0 +1,138 @@
+#usr/include/bitstream
+#usr/include/bitstream/common.h
+#usr/include/bitstream/dvb
+#usr/include/bitstream/dvb/ci.h
+#usr/include/bitstream/dvb/si
+#usr/include/bitstream/dvb/si.h
+#usr/include/bitstream/dvb/si/bat.h
+#usr/include/bitstream/dvb/si/bat_print.h
+#usr/include/bitstream/dvb/si/datetime.h
+#usr/include/bitstream/dvb/si/desc_40.h
+#usr/include/bitstream/dvb/si/desc_41.h
+#usr/include/bitstream/dvb/si/desc_42.h
+#usr/include/bitstream/dvb/si/desc_43.h
+#usr/include/bitstream/dvb/si/desc_44.h
+#usr/include/bitstream/dvb/si/desc_45.h
+#usr/include/bitstream/dvb/si/desc_46.h
+#usr/include/bitstream/dvb/si/desc_47.h
+#usr/include/bitstream/dvb/si/desc_48.h
+#usr/include/bitstream/dvb/si/desc_49.h
+#usr/include/bitstream/dvb/si/desc_4a.h
+#usr/include/bitstream/dvb/si/desc_4b.h
+#usr/include/bitstream/dvb/si/desc_4c.h
+#usr/include/bitstream/dvb/si/desc_4d.h
+#usr/include/bitstream/dvb/si/desc_4e.h
+#usr/include/bitstream/dvb/si/desc_4f.h
+#usr/include/bitstream/dvb/si/desc_50.h
+#usr/include/bitstream/dvb/si/desc_51.h
+#usr/include/bitstream/dvb/si/desc_52.h
+#usr/include/bitstream/dvb/si/desc_53.h
+#usr/include/bitstream/dvb/si/desc_54.h
+#usr/include/bitstream/dvb/si/desc_55.h
+#usr/include/bitstream/dvb/si/desc_56.h
+#usr/include/bitstream/dvb/si/desc_57.h
+#usr/include/bitstream/dvb/si/desc_58.h
+#usr/include/bitstream/dvb/si/desc_59.h
+#usr/include/bitstream/dvb/si/desc_5a.h
+#usr/include/bitstream/dvb/si/desc_5b.h
+#usr/include/bitstream/dvb/si/desc_5c.h
+#usr/include/bitstream/dvb/si/desc_5d.h
+#usr/include/bitstream/dvb/si/desc_5e.h
+#usr/include/bitstream/dvb/si/desc_5f.h
+#usr/include/bitstream/dvb/si/desc_60.h
+#usr/include/bitstream/dvb/si/desc_61.h
+#usr/include/bitstream/dvb/si/desc_62.h
+#usr/include/bitstream/dvb/si/desc_63.h
+#usr/include/bitstream/dvb/si/desc_64.h
+#usr/include/bitstream/dvb/si/desc_65.h
+#usr/include/bitstream/dvb/si/desc_66.h
+#usr/include/bitstream/dvb/si/desc_67.h
+#usr/include/bitstream/dvb/si/desc_68.h
+#usr/include/bitstream/dvb/si/desc_69.h
+#usr/include/bitstream/dvb/si/desc_6a.h
+#usr/include/bitstream/dvb/si/desc_6b.h
+#usr/include/bitstream/dvb/si/desc_6c.h
+#usr/include/bitstream/dvb/si/desc_6d.h
+#usr/include/bitstream/dvb/si/desc_6e.h
+#usr/include/bitstream/dvb/si/desc_7a.h
+#usr/include/bitstream/dvb/si/desc_7b.h
+#usr/include/bitstream/dvb/si/desc_7c.h
+#usr/include/bitstream/dvb/si/desc_83p28.h
+#usr/include/bitstream/dvb/si/desc_88p28.h
+#usr/include/bitstream/dvb/si/descs_list.h
+#usr/include/bitstream/dvb/si/dit.h
+#usr/include/bitstream/dvb/si/dit_print.h
+#usr/include/bitstream/dvb/si/eit.h
+#usr/include/bitstream/dvb/si/eit_print.h
+#usr/include/bitstream/dvb/si/nit.h
+#usr/include/bitstream/dvb/si/nit_print.h
+#usr/include/bitstream/dvb/si/numbers.h
+#usr/include/bitstream/dvb/si/rst.h
+#usr/include/bitstream/dvb/si/rst_print.h
+#usr/include/bitstream/dvb/si/sdt.h
+#usr/include/bitstream/dvb/si/sdt_print.h
+#usr/include/bitstream/dvb/si/sit.h
+#usr/include/bitstream/dvb/si/sit_print.h
+#usr/include/bitstream/dvb/si/st.h
+#usr/include/bitstream/dvb/si/strings.h
+#usr/include/bitstream/dvb/si/tdt.h
+#usr/include/bitstream/dvb/si/tdt_print.h
+#usr/include/bitstream/dvb/si/tot.h
+#usr/include/bitstream/dvb/si/tot_print.h
+#usr/include/bitstream/dvb/si_print.h
+#usr/include/bitstream/dvb/sim.h
+#usr/include/bitstream/ietf
+#usr/include/bitstream/ietf/rtp.h
+#usr/include/bitstream/mpeg
+#usr/include/bitstream/mpeg/aac.h
+#usr/include/bitstream/mpeg/pes.h
+#usr/include/bitstream/mpeg/psi
+#usr/include/bitstream/mpeg/psi.h
+#usr/include/bitstream/mpeg/psi/cat.h
+#usr/include/bitstream/mpeg/psi/cat_print.h
+#usr/include/bitstream/mpeg/psi/desc_02.h
+#usr/include/bitstream/mpeg/psi/desc_03.h
+#usr/include/bitstream/mpeg/psi/desc_04.h
+#usr/include/bitstream/mpeg/psi/desc_05.h
+#usr/include/bitstream/mpeg/psi/desc_06.h
+#usr/include/bitstream/mpeg/psi/desc_07.h
+#usr/include/bitstream/mpeg/psi/desc_08.h
+#usr/include/bitstream/mpeg/psi/desc_09.h
+#usr/include/bitstream/mpeg/psi/desc_0a.h
+#usr/include/bitstream/mpeg/psi/desc_0b.h
+#usr/include/bitstream/mpeg/psi/desc_0c.h
+#usr/include/bitstream/mpeg/psi/desc_0d.h
+#usr/include/bitstream/mpeg/psi/desc_0e.h
+#usr/include/bitstream/mpeg/psi/desc_0f.h
+#usr/include/bitstream/mpeg/psi/desc_10.h
+#usr/include/bitstream/mpeg/psi/desc_11.h
+#usr/include/bitstream/mpeg/psi/desc_12.h
+#usr/include/bitstream/mpeg/psi/desc_1b.h
+#usr/include/bitstream/mpeg/psi/desc_1c.h
+#usr/include/bitstream/mpeg/psi/desc_1d.h
+#usr/include/bitstream/mpeg/psi/desc_1e.h
+#usr/include/bitstream/mpeg/psi/desc_1f.h
+#usr/include/bitstream/mpeg/psi/desc_20.h
+#usr/include/bitstream/mpeg/psi/desc_21.h
+#usr/include/bitstream/mpeg/psi/desc_22.h
+#usr/include/bitstream/mpeg/psi/desc_23.h
+#usr/include/bitstream/mpeg/psi/desc_24.h
+#usr/include/bitstream/mpeg/psi/desc_25.h
+#usr/include/bitstream/mpeg/psi/desc_26.h
+#usr/include/bitstream/mpeg/psi/desc_27.h
+#usr/include/bitstream/mpeg/psi/desc_28.h
+#usr/include/bitstream/mpeg/psi/desc_2a.h
+#usr/include/bitstream/mpeg/psi/desc_2b.h
+#usr/include/bitstream/mpeg/psi/desc_2c.h
+#usr/include/bitstream/mpeg/psi/descriptors.h
+#usr/include/bitstream/mpeg/psi/descs_list.h
+#usr/include/bitstream/mpeg/psi/descs_print.h
+#usr/include/bitstream/mpeg/psi/pat.h
+#usr/include/bitstream/mpeg/psi/pat_print.h
+#usr/include/bitstream/mpeg/psi/pmt.h
+#usr/include/bitstream/mpeg/psi/pmt_print.h
+#usr/include/bitstream/mpeg/psi/psi.h
+#usr/include/bitstream/mpeg/psi/tsdt.h
+#usr/include/bitstream/mpeg/psi/tsdt_print.h
+#usr/include/bitstream/mpeg/psi_print.h
+#usr/include/bitstream/mpeg/ts.h
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 51fd388fb8661b70a7456a96e6d204e881f23554..6afe6cdf8840a3fbe4be5b5dbdd2ed061b71d40c 100644 (file)
@@ -1,3 +1,8 @@
+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
@@ -26,23 +31,40 @@ 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
+#var/ipfire/dnsforward/config
 var/ipfire/ethernet
 #var/ipfire/ethernet/aliases
 #var/ipfire/ethernet/known_nics
 #var/ipfire/ethernet/scanned_nics
 #var/ipfire/ethernet/settings
 #var/ipfire/ethernet/vlans
-#var/ipfire/extrahd
+#var/ipfire/ethernet/wireless
+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/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/customservices.default
+#var/ipfire/fwhosts/icmp-types
 var/ipfire/fwlogs
 #var/ipfire/fwlogs/ipsettings
 #var/ipfire/fwlogs/portsettings
@@ -62,6 +84,7 @@ var/ipfire/langs
 #var/ipfire/langs/nl.pl
 #var/ipfire/langs/pl.pl
 #var/ipfire/langs/ru.pl
+#var/ipfire/langs/tr.pl
 var/ipfire/logging
 #var/ipfire/logging/settings
 var/ipfire/mac
@@ -87,11 +110,13 @@ var/ipfire/menu.d/70-log.menu
 #var/ipfire/menu.d/EX-imspector.menu
 #var/ipfire/menu.d/EX-mpfire.menu
 #var/ipfire/menu.d/EX-samba.menu
+#var/ipfire/menu.d/EX-tor.menu
 #var/ipfire/menu.d/EX-tripwire.menu
 #var/ipfire/menu.d/EX-wlanap.menu
 var/ipfire/modem
 #var/ipfire/modem/defaults
 #var/ipfire/modem/settings
+var/ipfire/modem-lib.pl
 var/ipfire/net-traffic
 #var/ipfire/net-traffic/net-traffic-admin.pl
 #var/ipfire/net-traffic/net-traffic-lib.pl
@@ -101,24 +126,14 @@ 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
-var/ipfire/portfw
+#var/ipfire/portfw
 #var/ipfire/portfw/config
 var/ipfire/ppp
 #var/ipfire/ppp/fake-resolv.conf
@@ -139,6 +154,7 @@ var/ipfire/proxy
 #var/ipfire/proxy/calamaris
 #var/ipfire/proxy/calamaris/bin
 #var/ipfire/proxy/settings
+#var/ipfire/proxy/squid.conf
 var/ipfire/qos
 #var/ipfire/qos/bin
 #var/ipfire/qos/bin/RRD-func.pl
@@ -183,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..08a732182b60f04d9793a8602bf391d412380313 100644 (file)
@@ -37,53 +37,53 @@ 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 10ec777b266d3e3cf2693a3c73e5fb8c64f32473..b8a9fd4acac2bc9737f0a459d11e28658af7c004 100644 (file)
@@ -21,7 +21,7 @@ usr/lib/daq
 #usr/lib/libdaq.la
 #usr/lib/libdaq.so
 usr/lib/libdaq.so.2
-usr/lib/libdaq.so.2.0.0
+usr/lib/libdaq.so.2.0.2
 #usr/lib/libdaq_static.a
 #usr/lib/libdaq_static.la
 #usr/lib/libdaq_static_modules.a
index 2a1b0ef3cb2aaf69bc41ac9ca12cf9f1638b13fd..4b38c292631cd5de064c6bf6cf8fcc81a1a3c7d6 100644 (file)
@@ -5,6 +5,7 @@ sbin/fsck.vfat
 sbin/mkdosfs
 sbin/mkfs.msdos
 sbin/mkfs.vfat
+#share
 #share/doc
 #share/doc/dosfstools
 #share/doc/dosfstools/ANNOUNCE.mkdosfs
@@ -16,6 +17,8 @@ sbin/mkfs.vfat
 #share/doc/dosfstools/README.dosfstools-2.x
 #share/doc/dosfstools/README.mkdosfs
 #share/doc/dosfstools/TODO.dosfstools-2.x
+#share/man
+#share/man/man8
 #share/man/man8/dosfsck.8
 #share/man/man8/dosfslabel.8
 #share/man/man8/fsck.msdos.8
index 3a521b1b726bedc56434aa590dc14cc9b1d9d362..53dec979f7262857144289dea32182d65bc64f57 100644 (file)
@@ -21,3 +21,4 @@ lib/firmware/dvb-usb-vp702x-01.fw
 lib/firmware/dvb-usb-vp7045-01.fw
 lib/firmware/dvb-usb-wt220u-01.fw
 lib/firmware/dvb-usb-wt220u-02.fw
+lib/firmware/v4l-cx23885-enc.fw
diff --git a/config/rootfiles/common/eject b/config/rootfiles/common/eject
deleted file mode 100644 (file)
index 988d1b7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-usr/bin/eject
-usr/bin/volname
-#usr/man/man1/eject.1
-#usr/man/man1/volname.1
-#usr/share/locale/cs_CZ
-#usr/share/locale/cs_CZ/LC_MESSAGES
-#usr/share/locale/cs_CZ/LC_MESSAGES/eject.mo
-#usr/share/locale/de/LC_MESSAGES/eject.mo
-#usr/share/locale/es/LC_MESSAGES/eject.mo
-#usr/share/locale/fr/LC_MESSAGES/eject.mo
-#usr/share/locale/ja/LC_MESSAGES/eject.mo
-#usr/share/locale/pt_BR/LC_MESSAGES/eject.mo
-#usr/share/locale/tr/LC_MESSAGES/eject.mo
-#usr/share/locale/zh_TW/LC_MESSAGES/eject.mo
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
diff --git a/config/rootfiles/common/fstrim b/config/rootfiles/common/fstrim
deleted file mode 100644 (file)
index 775fa92..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-etc/fcron.daily/trim
-usr/bin/fstrim
diff --git a/config/rootfiles/common/gperf b/config/rootfiles/common/gperf
new file mode 100644 (file)
index 0000000..7c3a1cb
--- /dev/null
@@ -0,0 +1,4 @@
+#usr/bin/gperf
+#usr/share/doc/gperf.html
+#usr/share/info/gperf.info
+#usr/share/man/man1/gperf.1
diff --git a/config/rootfiles/common/hostname b/config/rootfiles/common/hostname
new file mode 100644 (file)
index 0000000..7c59b98
--- /dev/null
@@ -0,0 +1,9 @@
+bin/dnsdomainname
+bin/domainname
+bin/hostname
+bin/nisdomainname
+bin/ypdomainname
+#usr/share/man/man1/dnsdomainname.1
+#usr/share/man/man1/domainname.1
+#usr/share/man/man1/nisdomainname.1
+#usr/share/man/man1/ypdomainname.1
index cb57182fab910f5e384efcce1be081469e9e6003..27d824372342511ef7fdf133343629cad5b61885 100644 (file)
@@ -7,7 +7,6 @@ sbin/dracut-catimages
 sbin/dracut-gencmdline
 sbin/lsinitrd
 sbin/mkinitrd
-sbin/switch_root
 usr/share/dracut
 usr/share/dracut/dracut-functions
 usr/share/dracut/modules.d
@@ -52,6 +51,7 @@ usr/share/dracut/modules.d/99base/check
 usr/share/dracut/modules.d/99base/dracut-lib.sh
 usr/share/dracut/modules.d/99base/init
 usr/share/dracut/modules.d/99base/initqueue
+#usr/share/dracut/modules.d/99base/init~
 usr/share/dracut/modules.d/99base/install
 usr/share/dracut/modules.d/99base/loginit
 usr/share/dracut/modules.d/99base/parse-blacklist.sh
@@ -60,3 +60,4 @@ usr/share/dracut/modules.d/99base/parse-root-opts.sh
 #usr/share/man/man8/dracut-catimages.8
 #usr/share/man/man8/dracut-gencmdline.8
 #usr/share/man/man8/dracut.8
+sbin/switch_root
index d17d7dadd63b944cb8745b52f006e7f21839b149..b4335a50338d7f73ea5a33d9379d9401bd17b1bc 100644 (file)
@@ -48,8 +48,8 @@ sbin/ldconfig
 #sbin/sln
 #usr/bin/catchsegv
 #usr/bin/gencat
-#usr/bin/getconf
-#usr/bin/getent
+usr/bin/getconf
+usr/bin/getent
 #usr/bin/iconv
 usr/bin/ldd
 #usr/bin/lddlibc4
@@ -776,8 +776,5943 @@ usr/lib/gconv
 #usr/lib/libthread_db.so
 #usr/lib/libutil.a
 #usr/lib/libutil.so
-#usr/lib/locale
-usr/lib/locale/locale-archive
+usr/lib/locale
+#usr/lib/locale/aa_DJ
+#usr/lib/locale/aa_DJ.utf8
+#usr/lib/locale/aa_DJ.utf8/LC_ADDRESS
+#usr/lib/locale/aa_DJ.utf8/LC_COLLATE
+#usr/lib/locale/aa_DJ.utf8/LC_CTYPE
+#usr/lib/locale/aa_DJ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/aa_DJ.utf8/LC_MEASUREMENT
+#usr/lib/locale/aa_DJ.utf8/LC_MESSAGES
+#usr/lib/locale/aa_DJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/aa_DJ.utf8/LC_MONETARY
+#usr/lib/locale/aa_DJ.utf8/LC_NAME
+#usr/lib/locale/aa_DJ.utf8/LC_NUMERIC
+#usr/lib/locale/aa_DJ.utf8/LC_PAPER
+#usr/lib/locale/aa_DJ.utf8/LC_TELEPHONE
+#usr/lib/locale/aa_DJ.utf8/LC_TIME
+#usr/lib/locale/aa_DJ/LC_ADDRESS
+#usr/lib/locale/aa_DJ/LC_COLLATE
+#usr/lib/locale/aa_DJ/LC_CTYPE
+#usr/lib/locale/aa_DJ/LC_IDENTIFICATION
+#usr/lib/locale/aa_DJ/LC_MEASUREMENT
+#usr/lib/locale/aa_DJ/LC_MESSAGES
+#usr/lib/locale/aa_DJ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/aa_DJ/LC_MONETARY
+#usr/lib/locale/aa_DJ/LC_NAME
+#usr/lib/locale/aa_DJ/LC_NUMERIC
+#usr/lib/locale/aa_DJ/LC_PAPER
+#usr/lib/locale/aa_DJ/LC_TELEPHONE
+#usr/lib/locale/aa_DJ/LC_TIME
+#usr/lib/locale/aa_ER
+#usr/lib/locale/aa_ER/LC_ADDRESS
+#usr/lib/locale/aa_ER/LC_COLLATE
+#usr/lib/locale/aa_ER/LC_CTYPE
+#usr/lib/locale/aa_ER/LC_IDENTIFICATION
+#usr/lib/locale/aa_ER/LC_MEASUREMENT
+#usr/lib/locale/aa_ER/LC_MESSAGES
+#usr/lib/locale/aa_ER/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/aa_ER/LC_MONETARY
+#usr/lib/locale/aa_ER/LC_NAME
+#usr/lib/locale/aa_ER/LC_NUMERIC
+#usr/lib/locale/aa_ER/LC_PAPER
+#usr/lib/locale/aa_ER/LC_TELEPHONE
+#usr/lib/locale/aa_ER/LC_TIME
+#usr/lib/locale/aa_ER@saaho
+#usr/lib/locale/aa_ER@saaho/LC_ADDRESS
+#usr/lib/locale/aa_ER@saaho/LC_COLLATE
+#usr/lib/locale/aa_ER@saaho/LC_CTYPE
+#usr/lib/locale/aa_ER@saaho/LC_IDENTIFICATION
+#usr/lib/locale/aa_ER@saaho/LC_MEASUREMENT
+#usr/lib/locale/aa_ER@saaho/LC_MESSAGES
+#usr/lib/locale/aa_ER@saaho/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/aa_ER@saaho/LC_MONETARY
+#usr/lib/locale/aa_ER@saaho/LC_NAME
+#usr/lib/locale/aa_ER@saaho/LC_NUMERIC
+#usr/lib/locale/aa_ER@saaho/LC_PAPER
+#usr/lib/locale/aa_ER@saaho/LC_TELEPHONE
+#usr/lib/locale/aa_ER@saaho/LC_TIME
+#usr/lib/locale/aa_ET
+#usr/lib/locale/aa_ET/LC_ADDRESS
+#usr/lib/locale/aa_ET/LC_COLLATE
+#usr/lib/locale/aa_ET/LC_CTYPE
+#usr/lib/locale/aa_ET/LC_IDENTIFICATION
+#usr/lib/locale/aa_ET/LC_MEASUREMENT
+#usr/lib/locale/aa_ET/LC_MESSAGES
+#usr/lib/locale/aa_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/aa_ET/LC_MONETARY
+#usr/lib/locale/aa_ET/LC_NAME
+#usr/lib/locale/aa_ET/LC_NUMERIC
+#usr/lib/locale/aa_ET/LC_PAPER
+#usr/lib/locale/aa_ET/LC_TELEPHONE
+#usr/lib/locale/aa_ET/LC_TIME
+#usr/lib/locale/af_ZA
+#usr/lib/locale/af_ZA.utf8
+#usr/lib/locale/af_ZA.utf8/LC_ADDRESS
+#usr/lib/locale/af_ZA.utf8/LC_COLLATE
+#usr/lib/locale/af_ZA.utf8/LC_CTYPE
+#usr/lib/locale/af_ZA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/af_ZA.utf8/LC_MEASUREMENT
+#usr/lib/locale/af_ZA.utf8/LC_MESSAGES
+#usr/lib/locale/af_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/af_ZA.utf8/LC_MONETARY
+#usr/lib/locale/af_ZA.utf8/LC_NAME
+#usr/lib/locale/af_ZA.utf8/LC_NUMERIC
+#usr/lib/locale/af_ZA.utf8/LC_PAPER
+#usr/lib/locale/af_ZA.utf8/LC_TELEPHONE
+#usr/lib/locale/af_ZA.utf8/LC_TIME
+#usr/lib/locale/af_ZA/LC_ADDRESS
+#usr/lib/locale/af_ZA/LC_COLLATE
+#usr/lib/locale/af_ZA/LC_CTYPE
+#usr/lib/locale/af_ZA/LC_IDENTIFICATION
+#usr/lib/locale/af_ZA/LC_MEASUREMENT
+#usr/lib/locale/af_ZA/LC_MESSAGES
+#usr/lib/locale/af_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/af_ZA/LC_MONETARY
+#usr/lib/locale/af_ZA/LC_NAME
+#usr/lib/locale/af_ZA/LC_NUMERIC
+#usr/lib/locale/af_ZA/LC_PAPER
+#usr/lib/locale/af_ZA/LC_TELEPHONE
+#usr/lib/locale/af_ZA/LC_TIME
+#usr/lib/locale/am_ET
+#usr/lib/locale/am_ET/LC_ADDRESS
+#usr/lib/locale/am_ET/LC_COLLATE
+#usr/lib/locale/am_ET/LC_CTYPE
+#usr/lib/locale/am_ET/LC_IDENTIFICATION
+#usr/lib/locale/am_ET/LC_MEASUREMENT
+#usr/lib/locale/am_ET/LC_MESSAGES
+#usr/lib/locale/am_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/am_ET/LC_MONETARY
+#usr/lib/locale/am_ET/LC_NAME
+#usr/lib/locale/am_ET/LC_NUMERIC
+#usr/lib/locale/am_ET/LC_PAPER
+#usr/lib/locale/am_ET/LC_TELEPHONE
+#usr/lib/locale/am_ET/LC_TIME
+#usr/lib/locale/an_ES
+#usr/lib/locale/an_ES.utf8
+#usr/lib/locale/an_ES.utf8/LC_ADDRESS
+#usr/lib/locale/an_ES.utf8/LC_COLLATE
+#usr/lib/locale/an_ES.utf8/LC_CTYPE
+#usr/lib/locale/an_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/an_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/an_ES.utf8/LC_MESSAGES
+#usr/lib/locale/an_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/an_ES.utf8/LC_MONETARY
+#usr/lib/locale/an_ES.utf8/LC_NAME
+#usr/lib/locale/an_ES.utf8/LC_NUMERIC
+#usr/lib/locale/an_ES.utf8/LC_PAPER
+#usr/lib/locale/an_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/an_ES.utf8/LC_TIME
+#usr/lib/locale/an_ES/LC_ADDRESS
+#usr/lib/locale/an_ES/LC_COLLATE
+#usr/lib/locale/an_ES/LC_CTYPE
+#usr/lib/locale/an_ES/LC_IDENTIFICATION
+#usr/lib/locale/an_ES/LC_MEASUREMENT
+#usr/lib/locale/an_ES/LC_MESSAGES
+#usr/lib/locale/an_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/an_ES/LC_MONETARY
+#usr/lib/locale/an_ES/LC_NAME
+#usr/lib/locale/an_ES/LC_NUMERIC
+#usr/lib/locale/an_ES/LC_PAPER
+#usr/lib/locale/an_ES/LC_TELEPHONE
+#usr/lib/locale/an_ES/LC_TIME
+#usr/lib/locale/ar_AE
+#usr/lib/locale/ar_AE.utf8
+#usr/lib/locale/ar_AE.utf8/LC_ADDRESS
+#usr/lib/locale/ar_AE.utf8/LC_COLLATE
+#usr/lib/locale/ar_AE.utf8/LC_CTYPE
+#usr/lib/locale/ar_AE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_AE.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_AE.utf8/LC_MESSAGES
+#usr/lib/locale/ar_AE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_AE.utf8/LC_MONETARY
+#usr/lib/locale/ar_AE.utf8/LC_NAME
+#usr/lib/locale/ar_AE.utf8/LC_NUMERIC
+#usr/lib/locale/ar_AE.utf8/LC_PAPER
+#usr/lib/locale/ar_AE.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_AE.utf8/LC_TIME
+#usr/lib/locale/ar_AE/LC_ADDRESS
+#usr/lib/locale/ar_AE/LC_COLLATE
+#usr/lib/locale/ar_AE/LC_CTYPE
+#usr/lib/locale/ar_AE/LC_IDENTIFICATION
+#usr/lib/locale/ar_AE/LC_MEASUREMENT
+#usr/lib/locale/ar_AE/LC_MESSAGES
+#usr/lib/locale/ar_AE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_AE/LC_MONETARY
+#usr/lib/locale/ar_AE/LC_NAME
+#usr/lib/locale/ar_AE/LC_NUMERIC
+#usr/lib/locale/ar_AE/LC_PAPER
+#usr/lib/locale/ar_AE/LC_TELEPHONE
+#usr/lib/locale/ar_AE/LC_TIME
+#usr/lib/locale/ar_BH
+#usr/lib/locale/ar_BH.utf8
+#usr/lib/locale/ar_BH.utf8/LC_ADDRESS
+#usr/lib/locale/ar_BH.utf8/LC_COLLATE
+#usr/lib/locale/ar_BH.utf8/LC_CTYPE
+#usr/lib/locale/ar_BH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_BH.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_BH.utf8/LC_MESSAGES
+#usr/lib/locale/ar_BH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_BH.utf8/LC_MONETARY
+#usr/lib/locale/ar_BH.utf8/LC_NAME
+#usr/lib/locale/ar_BH.utf8/LC_NUMERIC
+#usr/lib/locale/ar_BH.utf8/LC_PAPER
+#usr/lib/locale/ar_BH.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_BH.utf8/LC_TIME
+#usr/lib/locale/ar_BH/LC_ADDRESS
+#usr/lib/locale/ar_BH/LC_COLLATE
+#usr/lib/locale/ar_BH/LC_CTYPE
+#usr/lib/locale/ar_BH/LC_IDENTIFICATION
+#usr/lib/locale/ar_BH/LC_MEASUREMENT
+#usr/lib/locale/ar_BH/LC_MESSAGES
+#usr/lib/locale/ar_BH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_BH/LC_MONETARY
+#usr/lib/locale/ar_BH/LC_NAME
+#usr/lib/locale/ar_BH/LC_NUMERIC
+#usr/lib/locale/ar_BH/LC_PAPER
+#usr/lib/locale/ar_BH/LC_TELEPHONE
+#usr/lib/locale/ar_BH/LC_TIME
+#usr/lib/locale/ar_DZ
+#usr/lib/locale/ar_DZ.utf8
+#usr/lib/locale/ar_DZ.utf8/LC_ADDRESS
+#usr/lib/locale/ar_DZ.utf8/LC_COLLATE
+#usr/lib/locale/ar_DZ.utf8/LC_CTYPE
+#usr/lib/locale/ar_DZ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_DZ.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_DZ.utf8/LC_MESSAGES
+#usr/lib/locale/ar_DZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_DZ.utf8/LC_MONETARY
+#usr/lib/locale/ar_DZ.utf8/LC_NAME
+#usr/lib/locale/ar_DZ.utf8/LC_NUMERIC
+#usr/lib/locale/ar_DZ.utf8/LC_PAPER
+#usr/lib/locale/ar_DZ.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_DZ.utf8/LC_TIME
+#usr/lib/locale/ar_DZ/LC_ADDRESS
+#usr/lib/locale/ar_DZ/LC_COLLATE
+#usr/lib/locale/ar_DZ/LC_CTYPE
+#usr/lib/locale/ar_DZ/LC_IDENTIFICATION
+#usr/lib/locale/ar_DZ/LC_MEASUREMENT
+#usr/lib/locale/ar_DZ/LC_MESSAGES
+#usr/lib/locale/ar_DZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_DZ/LC_MONETARY
+#usr/lib/locale/ar_DZ/LC_NAME
+#usr/lib/locale/ar_DZ/LC_NUMERIC
+#usr/lib/locale/ar_DZ/LC_PAPER
+#usr/lib/locale/ar_DZ/LC_TELEPHONE
+#usr/lib/locale/ar_DZ/LC_TIME
+#usr/lib/locale/ar_EG
+#usr/lib/locale/ar_EG.utf8
+#usr/lib/locale/ar_EG.utf8/LC_ADDRESS
+#usr/lib/locale/ar_EG.utf8/LC_COLLATE
+#usr/lib/locale/ar_EG.utf8/LC_CTYPE
+#usr/lib/locale/ar_EG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_EG.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_EG.utf8/LC_MESSAGES
+#usr/lib/locale/ar_EG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_EG.utf8/LC_MONETARY
+#usr/lib/locale/ar_EG.utf8/LC_NAME
+#usr/lib/locale/ar_EG.utf8/LC_NUMERIC
+#usr/lib/locale/ar_EG.utf8/LC_PAPER
+#usr/lib/locale/ar_EG.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_EG.utf8/LC_TIME
+#usr/lib/locale/ar_EG/LC_ADDRESS
+#usr/lib/locale/ar_EG/LC_COLLATE
+#usr/lib/locale/ar_EG/LC_CTYPE
+#usr/lib/locale/ar_EG/LC_IDENTIFICATION
+#usr/lib/locale/ar_EG/LC_MEASUREMENT
+#usr/lib/locale/ar_EG/LC_MESSAGES
+#usr/lib/locale/ar_EG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_EG/LC_MONETARY
+#usr/lib/locale/ar_EG/LC_NAME
+#usr/lib/locale/ar_EG/LC_NUMERIC
+#usr/lib/locale/ar_EG/LC_PAPER
+#usr/lib/locale/ar_EG/LC_TELEPHONE
+#usr/lib/locale/ar_EG/LC_TIME
+#usr/lib/locale/ar_IN
+#usr/lib/locale/ar_IN/LC_ADDRESS
+#usr/lib/locale/ar_IN/LC_COLLATE
+#usr/lib/locale/ar_IN/LC_CTYPE
+#usr/lib/locale/ar_IN/LC_IDENTIFICATION
+#usr/lib/locale/ar_IN/LC_MEASUREMENT
+#usr/lib/locale/ar_IN/LC_MESSAGES
+#usr/lib/locale/ar_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_IN/LC_MONETARY
+#usr/lib/locale/ar_IN/LC_NAME
+#usr/lib/locale/ar_IN/LC_NUMERIC
+#usr/lib/locale/ar_IN/LC_PAPER
+#usr/lib/locale/ar_IN/LC_TELEPHONE
+#usr/lib/locale/ar_IN/LC_TIME
+#usr/lib/locale/ar_IQ
+#usr/lib/locale/ar_IQ.utf8
+#usr/lib/locale/ar_IQ.utf8/LC_ADDRESS
+#usr/lib/locale/ar_IQ.utf8/LC_COLLATE
+#usr/lib/locale/ar_IQ.utf8/LC_CTYPE
+#usr/lib/locale/ar_IQ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_IQ.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_IQ.utf8/LC_MESSAGES
+#usr/lib/locale/ar_IQ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_IQ.utf8/LC_MONETARY
+#usr/lib/locale/ar_IQ.utf8/LC_NAME
+#usr/lib/locale/ar_IQ.utf8/LC_NUMERIC
+#usr/lib/locale/ar_IQ.utf8/LC_PAPER
+#usr/lib/locale/ar_IQ.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_IQ.utf8/LC_TIME
+#usr/lib/locale/ar_IQ/LC_ADDRESS
+#usr/lib/locale/ar_IQ/LC_COLLATE
+#usr/lib/locale/ar_IQ/LC_CTYPE
+#usr/lib/locale/ar_IQ/LC_IDENTIFICATION
+#usr/lib/locale/ar_IQ/LC_MEASUREMENT
+#usr/lib/locale/ar_IQ/LC_MESSAGES
+#usr/lib/locale/ar_IQ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_IQ/LC_MONETARY
+#usr/lib/locale/ar_IQ/LC_NAME
+#usr/lib/locale/ar_IQ/LC_NUMERIC
+#usr/lib/locale/ar_IQ/LC_PAPER
+#usr/lib/locale/ar_IQ/LC_TELEPHONE
+#usr/lib/locale/ar_IQ/LC_TIME
+#usr/lib/locale/ar_JO
+#usr/lib/locale/ar_JO.utf8
+#usr/lib/locale/ar_JO.utf8/LC_ADDRESS
+#usr/lib/locale/ar_JO.utf8/LC_COLLATE
+#usr/lib/locale/ar_JO.utf8/LC_CTYPE
+#usr/lib/locale/ar_JO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_JO.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_JO.utf8/LC_MESSAGES
+#usr/lib/locale/ar_JO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_JO.utf8/LC_MONETARY
+#usr/lib/locale/ar_JO.utf8/LC_NAME
+#usr/lib/locale/ar_JO.utf8/LC_NUMERIC
+#usr/lib/locale/ar_JO.utf8/LC_PAPER
+#usr/lib/locale/ar_JO.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_JO.utf8/LC_TIME
+#usr/lib/locale/ar_JO/LC_ADDRESS
+#usr/lib/locale/ar_JO/LC_COLLATE
+#usr/lib/locale/ar_JO/LC_CTYPE
+#usr/lib/locale/ar_JO/LC_IDENTIFICATION
+#usr/lib/locale/ar_JO/LC_MEASUREMENT
+#usr/lib/locale/ar_JO/LC_MESSAGES
+#usr/lib/locale/ar_JO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_JO/LC_MONETARY
+#usr/lib/locale/ar_JO/LC_NAME
+#usr/lib/locale/ar_JO/LC_NUMERIC
+#usr/lib/locale/ar_JO/LC_PAPER
+#usr/lib/locale/ar_JO/LC_TELEPHONE
+#usr/lib/locale/ar_JO/LC_TIME
+#usr/lib/locale/ar_KW
+#usr/lib/locale/ar_KW.utf8
+#usr/lib/locale/ar_KW.utf8/LC_ADDRESS
+#usr/lib/locale/ar_KW.utf8/LC_COLLATE
+#usr/lib/locale/ar_KW.utf8/LC_CTYPE
+#usr/lib/locale/ar_KW.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_KW.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_KW.utf8/LC_MESSAGES
+#usr/lib/locale/ar_KW.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_KW.utf8/LC_MONETARY
+#usr/lib/locale/ar_KW.utf8/LC_NAME
+#usr/lib/locale/ar_KW.utf8/LC_NUMERIC
+#usr/lib/locale/ar_KW.utf8/LC_PAPER
+#usr/lib/locale/ar_KW.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_KW.utf8/LC_TIME
+#usr/lib/locale/ar_KW/LC_ADDRESS
+#usr/lib/locale/ar_KW/LC_COLLATE
+#usr/lib/locale/ar_KW/LC_CTYPE
+#usr/lib/locale/ar_KW/LC_IDENTIFICATION
+#usr/lib/locale/ar_KW/LC_MEASUREMENT
+#usr/lib/locale/ar_KW/LC_MESSAGES
+#usr/lib/locale/ar_KW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_KW/LC_MONETARY
+#usr/lib/locale/ar_KW/LC_NAME
+#usr/lib/locale/ar_KW/LC_NUMERIC
+#usr/lib/locale/ar_KW/LC_PAPER
+#usr/lib/locale/ar_KW/LC_TELEPHONE
+#usr/lib/locale/ar_KW/LC_TIME
+#usr/lib/locale/ar_LB
+#usr/lib/locale/ar_LB.utf8
+#usr/lib/locale/ar_LB.utf8/LC_ADDRESS
+#usr/lib/locale/ar_LB.utf8/LC_COLLATE
+#usr/lib/locale/ar_LB.utf8/LC_CTYPE
+#usr/lib/locale/ar_LB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_LB.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_LB.utf8/LC_MESSAGES
+#usr/lib/locale/ar_LB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_LB.utf8/LC_MONETARY
+#usr/lib/locale/ar_LB.utf8/LC_NAME
+#usr/lib/locale/ar_LB.utf8/LC_NUMERIC
+#usr/lib/locale/ar_LB.utf8/LC_PAPER
+#usr/lib/locale/ar_LB.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_LB.utf8/LC_TIME
+#usr/lib/locale/ar_LB/LC_ADDRESS
+#usr/lib/locale/ar_LB/LC_COLLATE
+#usr/lib/locale/ar_LB/LC_CTYPE
+#usr/lib/locale/ar_LB/LC_IDENTIFICATION
+#usr/lib/locale/ar_LB/LC_MEASUREMENT
+#usr/lib/locale/ar_LB/LC_MESSAGES
+#usr/lib/locale/ar_LB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_LB/LC_MONETARY
+#usr/lib/locale/ar_LB/LC_NAME
+#usr/lib/locale/ar_LB/LC_NUMERIC
+#usr/lib/locale/ar_LB/LC_PAPER
+#usr/lib/locale/ar_LB/LC_TELEPHONE
+#usr/lib/locale/ar_LB/LC_TIME
+#usr/lib/locale/ar_LY
+#usr/lib/locale/ar_LY.utf8
+#usr/lib/locale/ar_LY.utf8/LC_ADDRESS
+#usr/lib/locale/ar_LY.utf8/LC_COLLATE
+#usr/lib/locale/ar_LY.utf8/LC_CTYPE
+#usr/lib/locale/ar_LY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_LY.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_LY.utf8/LC_MESSAGES
+#usr/lib/locale/ar_LY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_LY.utf8/LC_MONETARY
+#usr/lib/locale/ar_LY.utf8/LC_NAME
+#usr/lib/locale/ar_LY.utf8/LC_NUMERIC
+#usr/lib/locale/ar_LY.utf8/LC_PAPER
+#usr/lib/locale/ar_LY.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_LY.utf8/LC_TIME
+#usr/lib/locale/ar_LY/LC_ADDRESS
+#usr/lib/locale/ar_LY/LC_COLLATE
+#usr/lib/locale/ar_LY/LC_CTYPE
+#usr/lib/locale/ar_LY/LC_IDENTIFICATION
+#usr/lib/locale/ar_LY/LC_MEASUREMENT
+#usr/lib/locale/ar_LY/LC_MESSAGES
+#usr/lib/locale/ar_LY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_LY/LC_MONETARY
+#usr/lib/locale/ar_LY/LC_NAME
+#usr/lib/locale/ar_LY/LC_NUMERIC
+#usr/lib/locale/ar_LY/LC_PAPER
+#usr/lib/locale/ar_LY/LC_TELEPHONE
+#usr/lib/locale/ar_LY/LC_TIME
+#usr/lib/locale/ar_MA
+#usr/lib/locale/ar_MA.utf8
+#usr/lib/locale/ar_MA.utf8/LC_ADDRESS
+#usr/lib/locale/ar_MA.utf8/LC_COLLATE
+#usr/lib/locale/ar_MA.utf8/LC_CTYPE
+#usr/lib/locale/ar_MA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_MA.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_MA.utf8/LC_MESSAGES
+#usr/lib/locale/ar_MA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_MA.utf8/LC_MONETARY
+#usr/lib/locale/ar_MA.utf8/LC_NAME
+#usr/lib/locale/ar_MA.utf8/LC_NUMERIC
+#usr/lib/locale/ar_MA.utf8/LC_PAPER
+#usr/lib/locale/ar_MA.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_MA.utf8/LC_TIME
+#usr/lib/locale/ar_MA/LC_ADDRESS
+#usr/lib/locale/ar_MA/LC_COLLATE
+#usr/lib/locale/ar_MA/LC_CTYPE
+#usr/lib/locale/ar_MA/LC_IDENTIFICATION
+#usr/lib/locale/ar_MA/LC_MEASUREMENT
+#usr/lib/locale/ar_MA/LC_MESSAGES
+#usr/lib/locale/ar_MA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_MA/LC_MONETARY
+#usr/lib/locale/ar_MA/LC_NAME
+#usr/lib/locale/ar_MA/LC_NUMERIC
+#usr/lib/locale/ar_MA/LC_PAPER
+#usr/lib/locale/ar_MA/LC_TELEPHONE
+#usr/lib/locale/ar_MA/LC_TIME
+#usr/lib/locale/ar_OM
+#usr/lib/locale/ar_OM.utf8
+#usr/lib/locale/ar_OM.utf8/LC_ADDRESS
+#usr/lib/locale/ar_OM.utf8/LC_COLLATE
+#usr/lib/locale/ar_OM.utf8/LC_CTYPE
+#usr/lib/locale/ar_OM.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_OM.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_OM.utf8/LC_MESSAGES
+#usr/lib/locale/ar_OM.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_OM.utf8/LC_MONETARY
+#usr/lib/locale/ar_OM.utf8/LC_NAME
+#usr/lib/locale/ar_OM.utf8/LC_NUMERIC
+#usr/lib/locale/ar_OM.utf8/LC_PAPER
+#usr/lib/locale/ar_OM.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_OM.utf8/LC_TIME
+#usr/lib/locale/ar_OM/LC_ADDRESS
+#usr/lib/locale/ar_OM/LC_COLLATE
+#usr/lib/locale/ar_OM/LC_CTYPE
+#usr/lib/locale/ar_OM/LC_IDENTIFICATION
+#usr/lib/locale/ar_OM/LC_MEASUREMENT
+#usr/lib/locale/ar_OM/LC_MESSAGES
+#usr/lib/locale/ar_OM/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_OM/LC_MONETARY
+#usr/lib/locale/ar_OM/LC_NAME
+#usr/lib/locale/ar_OM/LC_NUMERIC
+#usr/lib/locale/ar_OM/LC_PAPER
+#usr/lib/locale/ar_OM/LC_TELEPHONE
+#usr/lib/locale/ar_OM/LC_TIME
+#usr/lib/locale/ar_QA
+#usr/lib/locale/ar_QA.utf8
+#usr/lib/locale/ar_QA.utf8/LC_ADDRESS
+#usr/lib/locale/ar_QA.utf8/LC_COLLATE
+#usr/lib/locale/ar_QA.utf8/LC_CTYPE
+#usr/lib/locale/ar_QA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_QA.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_QA.utf8/LC_MESSAGES
+#usr/lib/locale/ar_QA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_QA.utf8/LC_MONETARY
+#usr/lib/locale/ar_QA.utf8/LC_NAME
+#usr/lib/locale/ar_QA.utf8/LC_NUMERIC
+#usr/lib/locale/ar_QA.utf8/LC_PAPER
+#usr/lib/locale/ar_QA.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_QA.utf8/LC_TIME
+#usr/lib/locale/ar_QA/LC_ADDRESS
+#usr/lib/locale/ar_QA/LC_COLLATE
+#usr/lib/locale/ar_QA/LC_CTYPE
+#usr/lib/locale/ar_QA/LC_IDENTIFICATION
+#usr/lib/locale/ar_QA/LC_MEASUREMENT
+#usr/lib/locale/ar_QA/LC_MESSAGES
+#usr/lib/locale/ar_QA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_QA/LC_MONETARY
+#usr/lib/locale/ar_QA/LC_NAME
+#usr/lib/locale/ar_QA/LC_NUMERIC
+#usr/lib/locale/ar_QA/LC_PAPER
+#usr/lib/locale/ar_QA/LC_TELEPHONE
+#usr/lib/locale/ar_QA/LC_TIME
+#usr/lib/locale/ar_SA
+#usr/lib/locale/ar_SA.utf8
+#usr/lib/locale/ar_SA.utf8/LC_ADDRESS
+#usr/lib/locale/ar_SA.utf8/LC_COLLATE
+#usr/lib/locale/ar_SA.utf8/LC_CTYPE
+#usr/lib/locale/ar_SA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_SA.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_SA.utf8/LC_MESSAGES
+#usr/lib/locale/ar_SA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SA.utf8/LC_MONETARY
+#usr/lib/locale/ar_SA.utf8/LC_NAME
+#usr/lib/locale/ar_SA.utf8/LC_NUMERIC
+#usr/lib/locale/ar_SA.utf8/LC_PAPER
+#usr/lib/locale/ar_SA.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_SA.utf8/LC_TIME
+#usr/lib/locale/ar_SA/LC_ADDRESS
+#usr/lib/locale/ar_SA/LC_COLLATE
+#usr/lib/locale/ar_SA/LC_CTYPE
+#usr/lib/locale/ar_SA/LC_IDENTIFICATION
+#usr/lib/locale/ar_SA/LC_MEASUREMENT
+#usr/lib/locale/ar_SA/LC_MESSAGES
+#usr/lib/locale/ar_SA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SA/LC_MONETARY
+#usr/lib/locale/ar_SA/LC_NAME
+#usr/lib/locale/ar_SA/LC_NUMERIC
+#usr/lib/locale/ar_SA/LC_PAPER
+#usr/lib/locale/ar_SA/LC_TELEPHONE
+#usr/lib/locale/ar_SA/LC_TIME
+#usr/lib/locale/ar_SD
+#usr/lib/locale/ar_SD.utf8
+#usr/lib/locale/ar_SD.utf8/LC_ADDRESS
+#usr/lib/locale/ar_SD.utf8/LC_COLLATE
+#usr/lib/locale/ar_SD.utf8/LC_CTYPE
+#usr/lib/locale/ar_SD.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_SD.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_SD.utf8/LC_MESSAGES
+#usr/lib/locale/ar_SD.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SD.utf8/LC_MONETARY
+#usr/lib/locale/ar_SD.utf8/LC_NAME
+#usr/lib/locale/ar_SD.utf8/LC_NUMERIC
+#usr/lib/locale/ar_SD.utf8/LC_PAPER
+#usr/lib/locale/ar_SD.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_SD.utf8/LC_TIME
+#usr/lib/locale/ar_SD/LC_ADDRESS
+#usr/lib/locale/ar_SD/LC_COLLATE
+#usr/lib/locale/ar_SD/LC_CTYPE
+#usr/lib/locale/ar_SD/LC_IDENTIFICATION
+#usr/lib/locale/ar_SD/LC_MEASUREMENT
+#usr/lib/locale/ar_SD/LC_MESSAGES
+#usr/lib/locale/ar_SD/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SD/LC_MONETARY
+#usr/lib/locale/ar_SD/LC_NAME
+#usr/lib/locale/ar_SD/LC_NUMERIC
+#usr/lib/locale/ar_SD/LC_PAPER
+#usr/lib/locale/ar_SD/LC_TELEPHONE
+#usr/lib/locale/ar_SD/LC_TIME
+#usr/lib/locale/ar_SY
+#usr/lib/locale/ar_SY.utf8
+#usr/lib/locale/ar_SY.utf8/LC_ADDRESS
+#usr/lib/locale/ar_SY.utf8/LC_COLLATE
+#usr/lib/locale/ar_SY.utf8/LC_CTYPE
+#usr/lib/locale/ar_SY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_SY.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_SY.utf8/LC_MESSAGES
+#usr/lib/locale/ar_SY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SY.utf8/LC_MONETARY
+#usr/lib/locale/ar_SY.utf8/LC_NAME
+#usr/lib/locale/ar_SY.utf8/LC_NUMERIC
+#usr/lib/locale/ar_SY.utf8/LC_PAPER
+#usr/lib/locale/ar_SY.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_SY.utf8/LC_TIME
+#usr/lib/locale/ar_SY/LC_ADDRESS
+#usr/lib/locale/ar_SY/LC_COLLATE
+#usr/lib/locale/ar_SY/LC_CTYPE
+#usr/lib/locale/ar_SY/LC_IDENTIFICATION
+#usr/lib/locale/ar_SY/LC_MEASUREMENT
+#usr/lib/locale/ar_SY/LC_MESSAGES
+#usr/lib/locale/ar_SY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_SY/LC_MONETARY
+#usr/lib/locale/ar_SY/LC_NAME
+#usr/lib/locale/ar_SY/LC_NUMERIC
+#usr/lib/locale/ar_SY/LC_PAPER
+#usr/lib/locale/ar_SY/LC_TELEPHONE
+#usr/lib/locale/ar_SY/LC_TIME
+#usr/lib/locale/ar_TN
+#usr/lib/locale/ar_TN.utf8
+#usr/lib/locale/ar_TN.utf8/LC_ADDRESS
+#usr/lib/locale/ar_TN.utf8/LC_COLLATE
+#usr/lib/locale/ar_TN.utf8/LC_CTYPE
+#usr/lib/locale/ar_TN.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_TN.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_TN.utf8/LC_MESSAGES
+#usr/lib/locale/ar_TN.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_TN.utf8/LC_MONETARY
+#usr/lib/locale/ar_TN.utf8/LC_NAME
+#usr/lib/locale/ar_TN.utf8/LC_NUMERIC
+#usr/lib/locale/ar_TN.utf8/LC_PAPER
+#usr/lib/locale/ar_TN.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_TN.utf8/LC_TIME
+#usr/lib/locale/ar_TN/LC_ADDRESS
+#usr/lib/locale/ar_TN/LC_COLLATE
+#usr/lib/locale/ar_TN/LC_CTYPE
+#usr/lib/locale/ar_TN/LC_IDENTIFICATION
+#usr/lib/locale/ar_TN/LC_MEASUREMENT
+#usr/lib/locale/ar_TN/LC_MESSAGES
+#usr/lib/locale/ar_TN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_TN/LC_MONETARY
+#usr/lib/locale/ar_TN/LC_NAME
+#usr/lib/locale/ar_TN/LC_NUMERIC
+#usr/lib/locale/ar_TN/LC_PAPER
+#usr/lib/locale/ar_TN/LC_TELEPHONE
+#usr/lib/locale/ar_TN/LC_TIME
+#usr/lib/locale/ar_YE
+#usr/lib/locale/ar_YE.utf8
+#usr/lib/locale/ar_YE.utf8/LC_ADDRESS
+#usr/lib/locale/ar_YE.utf8/LC_COLLATE
+#usr/lib/locale/ar_YE.utf8/LC_CTYPE
+#usr/lib/locale/ar_YE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ar_YE.utf8/LC_MEASUREMENT
+#usr/lib/locale/ar_YE.utf8/LC_MESSAGES
+#usr/lib/locale/ar_YE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_YE.utf8/LC_MONETARY
+#usr/lib/locale/ar_YE.utf8/LC_NAME
+#usr/lib/locale/ar_YE.utf8/LC_NUMERIC
+#usr/lib/locale/ar_YE.utf8/LC_PAPER
+#usr/lib/locale/ar_YE.utf8/LC_TELEPHONE
+#usr/lib/locale/ar_YE.utf8/LC_TIME
+#usr/lib/locale/ar_YE/LC_ADDRESS
+#usr/lib/locale/ar_YE/LC_COLLATE
+#usr/lib/locale/ar_YE/LC_CTYPE
+#usr/lib/locale/ar_YE/LC_IDENTIFICATION
+#usr/lib/locale/ar_YE/LC_MEASUREMENT
+#usr/lib/locale/ar_YE/LC_MESSAGES
+#usr/lib/locale/ar_YE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ar_YE/LC_MONETARY
+#usr/lib/locale/ar_YE/LC_NAME
+#usr/lib/locale/ar_YE/LC_NUMERIC
+#usr/lib/locale/ar_YE/LC_PAPER
+#usr/lib/locale/ar_YE/LC_TELEPHONE
+#usr/lib/locale/ar_YE/LC_TIME
+#usr/lib/locale/as_IN
+#usr/lib/locale/as_IN/LC_ADDRESS
+#usr/lib/locale/as_IN/LC_COLLATE
+#usr/lib/locale/as_IN/LC_CTYPE
+#usr/lib/locale/as_IN/LC_IDENTIFICATION
+#usr/lib/locale/as_IN/LC_MEASUREMENT
+#usr/lib/locale/as_IN/LC_MESSAGES
+#usr/lib/locale/as_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/as_IN/LC_MONETARY
+#usr/lib/locale/as_IN/LC_NAME
+#usr/lib/locale/as_IN/LC_NUMERIC
+#usr/lib/locale/as_IN/LC_PAPER
+#usr/lib/locale/as_IN/LC_TELEPHONE
+#usr/lib/locale/as_IN/LC_TIME
+#usr/lib/locale/ast_ES
+#usr/lib/locale/ast_ES.utf8
+#usr/lib/locale/ast_ES.utf8/LC_ADDRESS
+#usr/lib/locale/ast_ES.utf8/LC_COLLATE
+#usr/lib/locale/ast_ES.utf8/LC_CTYPE
+#usr/lib/locale/ast_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ast_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/ast_ES.utf8/LC_MESSAGES
+#usr/lib/locale/ast_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ast_ES.utf8/LC_MONETARY
+#usr/lib/locale/ast_ES.utf8/LC_NAME
+#usr/lib/locale/ast_ES.utf8/LC_NUMERIC
+#usr/lib/locale/ast_ES.utf8/LC_PAPER
+#usr/lib/locale/ast_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/ast_ES.utf8/LC_TIME
+#usr/lib/locale/ast_ES/LC_ADDRESS
+#usr/lib/locale/ast_ES/LC_COLLATE
+#usr/lib/locale/ast_ES/LC_CTYPE
+#usr/lib/locale/ast_ES/LC_IDENTIFICATION
+#usr/lib/locale/ast_ES/LC_MEASUREMENT
+#usr/lib/locale/ast_ES/LC_MESSAGES
+#usr/lib/locale/ast_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ast_ES/LC_MONETARY
+#usr/lib/locale/ast_ES/LC_NAME
+#usr/lib/locale/ast_ES/LC_NUMERIC
+#usr/lib/locale/ast_ES/LC_PAPER
+#usr/lib/locale/ast_ES/LC_TELEPHONE
+#usr/lib/locale/ast_ES/LC_TIME
+#usr/lib/locale/az_AZ
+#usr/lib/locale/az_AZ/LC_ADDRESS
+#usr/lib/locale/az_AZ/LC_COLLATE
+#usr/lib/locale/az_AZ/LC_CTYPE
+#usr/lib/locale/az_AZ/LC_IDENTIFICATION
+#usr/lib/locale/az_AZ/LC_MEASUREMENT
+#usr/lib/locale/az_AZ/LC_MESSAGES
+#usr/lib/locale/az_AZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/az_AZ/LC_MONETARY
+#usr/lib/locale/az_AZ/LC_NAME
+#usr/lib/locale/az_AZ/LC_NUMERIC
+#usr/lib/locale/az_AZ/LC_PAPER
+#usr/lib/locale/az_AZ/LC_TELEPHONE
+#usr/lib/locale/az_AZ/LC_TIME
+#usr/lib/locale/be_BY
+#usr/lib/locale/be_BY.utf8
+#usr/lib/locale/be_BY.utf8/LC_ADDRESS
+#usr/lib/locale/be_BY.utf8/LC_COLLATE
+#usr/lib/locale/be_BY.utf8/LC_CTYPE
+#usr/lib/locale/be_BY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/be_BY.utf8/LC_MEASUREMENT
+#usr/lib/locale/be_BY.utf8/LC_MESSAGES
+#usr/lib/locale/be_BY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/be_BY.utf8/LC_MONETARY
+#usr/lib/locale/be_BY.utf8/LC_NAME
+#usr/lib/locale/be_BY.utf8/LC_NUMERIC
+#usr/lib/locale/be_BY.utf8/LC_PAPER
+#usr/lib/locale/be_BY.utf8/LC_TELEPHONE
+#usr/lib/locale/be_BY.utf8/LC_TIME
+#usr/lib/locale/be_BY/LC_ADDRESS
+#usr/lib/locale/be_BY/LC_COLLATE
+#usr/lib/locale/be_BY/LC_CTYPE
+#usr/lib/locale/be_BY/LC_IDENTIFICATION
+#usr/lib/locale/be_BY/LC_MEASUREMENT
+#usr/lib/locale/be_BY/LC_MESSAGES
+#usr/lib/locale/be_BY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/be_BY/LC_MONETARY
+#usr/lib/locale/be_BY/LC_NAME
+#usr/lib/locale/be_BY/LC_NUMERIC
+#usr/lib/locale/be_BY/LC_PAPER
+#usr/lib/locale/be_BY/LC_TELEPHONE
+#usr/lib/locale/be_BY/LC_TIME
+#usr/lib/locale/be_BY@latin
+#usr/lib/locale/be_BY@latin/LC_ADDRESS
+#usr/lib/locale/be_BY@latin/LC_COLLATE
+#usr/lib/locale/be_BY@latin/LC_CTYPE
+#usr/lib/locale/be_BY@latin/LC_IDENTIFICATION
+#usr/lib/locale/be_BY@latin/LC_MEASUREMENT
+#usr/lib/locale/be_BY@latin/LC_MESSAGES
+#usr/lib/locale/be_BY@latin/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/be_BY@latin/LC_MONETARY
+#usr/lib/locale/be_BY@latin/LC_NAME
+#usr/lib/locale/be_BY@latin/LC_NUMERIC
+#usr/lib/locale/be_BY@latin/LC_PAPER
+#usr/lib/locale/be_BY@latin/LC_TELEPHONE
+#usr/lib/locale/be_BY@latin/LC_TIME
+#usr/lib/locale/ber_DZ
+#usr/lib/locale/ber_DZ/LC_ADDRESS
+#usr/lib/locale/ber_DZ/LC_COLLATE
+#usr/lib/locale/ber_DZ/LC_CTYPE
+#usr/lib/locale/ber_DZ/LC_IDENTIFICATION
+#usr/lib/locale/ber_DZ/LC_MEASUREMENT
+#usr/lib/locale/ber_DZ/LC_MESSAGES
+#usr/lib/locale/ber_DZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ber_DZ/LC_MONETARY
+#usr/lib/locale/ber_DZ/LC_NAME
+#usr/lib/locale/ber_DZ/LC_NUMERIC
+#usr/lib/locale/ber_DZ/LC_PAPER
+#usr/lib/locale/ber_DZ/LC_TELEPHONE
+#usr/lib/locale/ber_DZ/LC_TIME
+#usr/lib/locale/ber_MA
+#usr/lib/locale/ber_MA/LC_ADDRESS
+#usr/lib/locale/ber_MA/LC_COLLATE
+#usr/lib/locale/ber_MA/LC_CTYPE
+#usr/lib/locale/ber_MA/LC_IDENTIFICATION
+#usr/lib/locale/ber_MA/LC_MEASUREMENT
+#usr/lib/locale/ber_MA/LC_MESSAGES
+#usr/lib/locale/ber_MA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ber_MA/LC_MONETARY
+#usr/lib/locale/ber_MA/LC_NAME
+#usr/lib/locale/ber_MA/LC_NUMERIC
+#usr/lib/locale/ber_MA/LC_PAPER
+#usr/lib/locale/ber_MA/LC_TELEPHONE
+#usr/lib/locale/ber_MA/LC_TIME
+#usr/lib/locale/bg_BG
+#usr/lib/locale/bg_BG.utf8
+#usr/lib/locale/bg_BG.utf8/LC_ADDRESS
+#usr/lib/locale/bg_BG.utf8/LC_COLLATE
+#usr/lib/locale/bg_BG.utf8/LC_CTYPE
+#usr/lib/locale/bg_BG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/bg_BG.utf8/LC_MEASUREMENT
+#usr/lib/locale/bg_BG.utf8/LC_MESSAGES
+#usr/lib/locale/bg_BG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bg_BG.utf8/LC_MONETARY
+#usr/lib/locale/bg_BG.utf8/LC_NAME
+#usr/lib/locale/bg_BG.utf8/LC_NUMERIC
+#usr/lib/locale/bg_BG.utf8/LC_PAPER
+#usr/lib/locale/bg_BG.utf8/LC_TELEPHONE
+#usr/lib/locale/bg_BG.utf8/LC_TIME
+#usr/lib/locale/bg_BG/LC_ADDRESS
+#usr/lib/locale/bg_BG/LC_COLLATE
+#usr/lib/locale/bg_BG/LC_CTYPE
+#usr/lib/locale/bg_BG/LC_IDENTIFICATION
+#usr/lib/locale/bg_BG/LC_MEASUREMENT
+#usr/lib/locale/bg_BG/LC_MESSAGES
+#usr/lib/locale/bg_BG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bg_BG/LC_MONETARY
+#usr/lib/locale/bg_BG/LC_NAME
+#usr/lib/locale/bg_BG/LC_NUMERIC
+#usr/lib/locale/bg_BG/LC_PAPER
+#usr/lib/locale/bg_BG/LC_TELEPHONE
+#usr/lib/locale/bg_BG/LC_TIME
+#usr/lib/locale/bn_BD
+#usr/lib/locale/bn_BD/LC_ADDRESS
+#usr/lib/locale/bn_BD/LC_COLLATE
+#usr/lib/locale/bn_BD/LC_CTYPE
+#usr/lib/locale/bn_BD/LC_IDENTIFICATION
+#usr/lib/locale/bn_BD/LC_MEASUREMENT
+#usr/lib/locale/bn_BD/LC_MESSAGES
+#usr/lib/locale/bn_BD/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bn_BD/LC_MONETARY
+#usr/lib/locale/bn_BD/LC_NAME
+#usr/lib/locale/bn_BD/LC_NUMERIC
+#usr/lib/locale/bn_BD/LC_PAPER
+#usr/lib/locale/bn_BD/LC_TELEPHONE
+#usr/lib/locale/bn_BD/LC_TIME
+#usr/lib/locale/bn_IN
+#usr/lib/locale/bn_IN/LC_ADDRESS
+#usr/lib/locale/bn_IN/LC_COLLATE
+#usr/lib/locale/bn_IN/LC_CTYPE
+#usr/lib/locale/bn_IN/LC_IDENTIFICATION
+#usr/lib/locale/bn_IN/LC_MEASUREMENT
+#usr/lib/locale/bn_IN/LC_MESSAGES
+#usr/lib/locale/bn_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bn_IN/LC_MONETARY
+#usr/lib/locale/bn_IN/LC_NAME
+#usr/lib/locale/bn_IN/LC_NUMERIC
+#usr/lib/locale/bn_IN/LC_PAPER
+#usr/lib/locale/bn_IN/LC_TELEPHONE
+#usr/lib/locale/bn_IN/LC_TIME
+#usr/lib/locale/bo_CN
+#usr/lib/locale/bo_CN/LC_ADDRESS
+#usr/lib/locale/bo_CN/LC_COLLATE
+#usr/lib/locale/bo_CN/LC_CTYPE
+#usr/lib/locale/bo_CN/LC_IDENTIFICATION
+#usr/lib/locale/bo_CN/LC_MEASUREMENT
+#usr/lib/locale/bo_CN/LC_MESSAGES
+#usr/lib/locale/bo_CN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bo_CN/LC_MONETARY
+#usr/lib/locale/bo_CN/LC_NAME
+#usr/lib/locale/bo_CN/LC_NUMERIC
+#usr/lib/locale/bo_CN/LC_PAPER
+#usr/lib/locale/bo_CN/LC_TELEPHONE
+#usr/lib/locale/bo_CN/LC_TIME
+#usr/lib/locale/bo_IN
+#usr/lib/locale/bo_IN/LC_ADDRESS
+#usr/lib/locale/bo_IN/LC_COLLATE
+#usr/lib/locale/bo_IN/LC_CTYPE
+#usr/lib/locale/bo_IN/LC_IDENTIFICATION
+#usr/lib/locale/bo_IN/LC_MEASUREMENT
+#usr/lib/locale/bo_IN/LC_MESSAGES
+#usr/lib/locale/bo_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bo_IN/LC_MONETARY
+#usr/lib/locale/bo_IN/LC_NAME
+#usr/lib/locale/bo_IN/LC_NUMERIC
+#usr/lib/locale/bo_IN/LC_PAPER
+#usr/lib/locale/bo_IN/LC_TELEPHONE
+#usr/lib/locale/bo_IN/LC_TIME
+#usr/lib/locale/br_FR
+#usr/lib/locale/br_FR.utf8
+#usr/lib/locale/br_FR.utf8/LC_ADDRESS
+#usr/lib/locale/br_FR.utf8/LC_COLLATE
+#usr/lib/locale/br_FR.utf8/LC_CTYPE
+#usr/lib/locale/br_FR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/br_FR.utf8/LC_MEASUREMENT
+#usr/lib/locale/br_FR.utf8/LC_MESSAGES
+#usr/lib/locale/br_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/br_FR.utf8/LC_MONETARY
+#usr/lib/locale/br_FR.utf8/LC_NAME
+#usr/lib/locale/br_FR.utf8/LC_NUMERIC
+#usr/lib/locale/br_FR.utf8/LC_PAPER
+#usr/lib/locale/br_FR.utf8/LC_TELEPHONE
+#usr/lib/locale/br_FR.utf8/LC_TIME
+#usr/lib/locale/br_FR/LC_ADDRESS
+#usr/lib/locale/br_FR/LC_COLLATE
+#usr/lib/locale/br_FR/LC_CTYPE
+#usr/lib/locale/br_FR/LC_IDENTIFICATION
+#usr/lib/locale/br_FR/LC_MEASUREMENT
+#usr/lib/locale/br_FR/LC_MESSAGES
+#usr/lib/locale/br_FR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/br_FR/LC_MONETARY
+#usr/lib/locale/br_FR/LC_NAME
+#usr/lib/locale/br_FR/LC_NUMERIC
+#usr/lib/locale/br_FR/LC_PAPER
+#usr/lib/locale/br_FR/LC_TELEPHONE
+#usr/lib/locale/br_FR/LC_TIME
+#usr/lib/locale/br_FR@euro
+#usr/lib/locale/br_FR@euro/LC_ADDRESS
+#usr/lib/locale/br_FR@euro/LC_COLLATE
+#usr/lib/locale/br_FR@euro/LC_CTYPE
+#usr/lib/locale/br_FR@euro/LC_IDENTIFICATION
+#usr/lib/locale/br_FR@euro/LC_MEASUREMENT
+#usr/lib/locale/br_FR@euro/LC_MESSAGES
+#usr/lib/locale/br_FR@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/br_FR@euro/LC_MONETARY
+#usr/lib/locale/br_FR@euro/LC_NAME
+#usr/lib/locale/br_FR@euro/LC_NUMERIC
+#usr/lib/locale/br_FR@euro/LC_PAPER
+#usr/lib/locale/br_FR@euro/LC_TELEPHONE
+#usr/lib/locale/br_FR@euro/LC_TIME
+#usr/lib/locale/bs_BA
+#usr/lib/locale/bs_BA.utf8
+#usr/lib/locale/bs_BA.utf8/LC_ADDRESS
+#usr/lib/locale/bs_BA.utf8/LC_COLLATE
+#usr/lib/locale/bs_BA.utf8/LC_CTYPE
+#usr/lib/locale/bs_BA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/bs_BA.utf8/LC_MEASUREMENT
+#usr/lib/locale/bs_BA.utf8/LC_MESSAGES
+#usr/lib/locale/bs_BA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bs_BA.utf8/LC_MONETARY
+#usr/lib/locale/bs_BA.utf8/LC_NAME
+#usr/lib/locale/bs_BA.utf8/LC_NUMERIC
+#usr/lib/locale/bs_BA.utf8/LC_PAPER
+#usr/lib/locale/bs_BA.utf8/LC_TELEPHONE
+#usr/lib/locale/bs_BA.utf8/LC_TIME
+#usr/lib/locale/bs_BA/LC_ADDRESS
+#usr/lib/locale/bs_BA/LC_COLLATE
+#usr/lib/locale/bs_BA/LC_CTYPE
+#usr/lib/locale/bs_BA/LC_IDENTIFICATION
+#usr/lib/locale/bs_BA/LC_MEASUREMENT
+#usr/lib/locale/bs_BA/LC_MESSAGES
+#usr/lib/locale/bs_BA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/bs_BA/LC_MONETARY
+#usr/lib/locale/bs_BA/LC_NAME
+#usr/lib/locale/bs_BA/LC_NUMERIC
+#usr/lib/locale/bs_BA/LC_PAPER
+#usr/lib/locale/bs_BA/LC_TELEPHONE
+#usr/lib/locale/bs_BA/LC_TIME
+#usr/lib/locale/byn_ER
+#usr/lib/locale/byn_ER/LC_ADDRESS
+#usr/lib/locale/byn_ER/LC_COLLATE
+#usr/lib/locale/byn_ER/LC_CTYPE
+#usr/lib/locale/byn_ER/LC_IDENTIFICATION
+#usr/lib/locale/byn_ER/LC_MEASUREMENT
+#usr/lib/locale/byn_ER/LC_MESSAGES
+#usr/lib/locale/byn_ER/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/byn_ER/LC_MONETARY
+#usr/lib/locale/byn_ER/LC_NAME
+#usr/lib/locale/byn_ER/LC_NUMERIC
+#usr/lib/locale/byn_ER/LC_PAPER
+#usr/lib/locale/byn_ER/LC_TELEPHONE
+#usr/lib/locale/byn_ER/LC_TIME
+#usr/lib/locale/ca_AD
+#usr/lib/locale/ca_AD.utf8
+#usr/lib/locale/ca_AD.utf8/LC_ADDRESS
+#usr/lib/locale/ca_AD.utf8/LC_COLLATE
+#usr/lib/locale/ca_AD.utf8/LC_CTYPE
+#usr/lib/locale/ca_AD.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ca_AD.utf8/LC_MEASUREMENT
+#usr/lib/locale/ca_AD.utf8/LC_MESSAGES
+#usr/lib/locale/ca_AD.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_AD.utf8/LC_MONETARY
+#usr/lib/locale/ca_AD.utf8/LC_NAME
+#usr/lib/locale/ca_AD.utf8/LC_NUMERIC
+#usr/lib/locale/ca_AD.utf8/LC_PAPER
+#usr/lib/locale/ca_AD.utf8/LC_TELEPHONE
+#usr/lib/locale/ca_AD.utf8/LC_TIME
+#usr/lib/locale/ca_AD/LC_ADDRESS
+#usr/lib/locale/ca_AD/LC_COLLATE
+#usr/lib/locale/ca_AD/LC_CTYPE
+#usr/lib/locale/ca_AD/LC_IDENTIFICATION
+#usr/lib/locale/ca_AD/LC_MEASUREMENT
+#usr/lib/locale/ca_AD/LC_MESSAGES
+#usr/lib/locale/ca_AD/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_AD/LC_MONETARY
+#usr/lib/locale/ca_AD/LC_NAME
+#usr/lib/locale/ca_AD/LC_NUMERIC
+#usr/lib/locale/ca_AD/LC_PAPER
+#usr/lib/locale/ca_AD/LC_TELEPHONE
+#usr/lib/locale/ca_AD/LC_TIME
+#usr/lib/locale/ca_ES
+#usr/lib/locale/ca_ES.utf8
+#usr/lib/locale/ca_ES.utf8/LC_ADDRESS
+#usr/lib/locale/ca_ES.utf8/LC_COLLATE
+#usr/lib/locale/ca_ES.utf8/LC_CTYPE
+#usr/lib/locale/ca_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ca_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/ca_ES.utf8/LC_MESSAGES
+#usr/lib/locale/ca_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_ES.utf8/LC_MONETARY
+#usr/lib/locale/ca_ES.utf8/LC_NAME
+#usr/lib/locale/ca_ES.utf8/LC_NUMERIC
+#usr/lib/locale/ca_ES.utf8/LC_PAPER
+#usr/lib/locale/ca_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/ca_ES.utf8/LC_TIME
+#usr/lib/locale/ca_ES/LC_ADDRESS
+#usr/lib/locale/ca_ES/LC_COLLATE
+#usr/lib/locale/ca_ES/LC_CTYPE
+#usr/lib/locale/ca_ES/LC_IDENTIFICATION
+#usr/lib/locale/ca_ES/LC_MEASUREMENT
+#usr/lib/locale/ca_ES/LC_MESSAGES
+#usr/lib/locale/ca_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_ES/LC_MONETARY
+#usr/lib/locale/ca_ES/LC_NAME
+#usr/lib/locale/ca_ES/LC_NUMERIC
+#usr/lib/locale/ca_ES/LC_PAPER
+#usr/lib/locale/ca_ES/LC_TELEPHONE
+#usr/lib/locale/ca_ES/LC_TIME
+#usr/lib/locale/ca_ES@euro
+#usr/lib/locale/ca_ES@euro/LC_ADDRESS
+#usr/lib/locale/ca_ES@euro/LC_COLLATE
+#usr/lib/locale/ca_ES@euro/LC_CTYPE
+#usr/lib/locale/ca_ES@euro/LC_IDENTIFICATION
+#usr/lib/locale/ca_ES@euro/LC_MEASUREMENT
+#usr/lib/locale/ca_ES@euro/LC_MESSAGES
+#usr/lib/locale/ca_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_ES@euro/LC_MONETARY
+#usr/lib/locale/ca_ES@euro/LC_NAME
+#usr/lib/locale/ca_ES@euro/LC_NUMERIC
+#usr/lib/locale/ca_ES@euro/LC_PAPER
+#usr/lib/locale/ca_ES@euro/LC_TELEPHONE
+#usr/lib/locale/ca_ES@euro/LC_TIME
+#usr/lib/locale/ca_FR
+#usr/lib/locale/ca_FR.utf8
+#usr/lib/locale/ca_FR.utf8/LC_ADDRESS
+#usr/lib/locale/ca_FR.utf8/LC_COLLATE
+#usr/lib/locale/ca_FR.utf8/LC_CTYPE
+#usr/lib/locale/ca_FR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ca_FR.utf8/LC_MEASUREMENT
+#usr/lib/locale/ca_FR.utf8/LC_MESSAGES
+#usr/lib/locale/ca_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_FR.utf8/LC_MONETARY
+#usr/lib/locale/ca_FR.utf8/LC_NAME
+#usr/lib/locale/ca_FR.utf8/LC_NUMERIC
+#usr/lib/locale/ca_FR.utf8/LC_PAPER
+#usr/lib/locale/ca_FR.utf8/LC_TELEPHONE
+#usr/lib/locale/ca_FR.utf8/LC_TIME
+#usr/lib/locale/ca_FR/LC_ADDRESS
+#usr/lib/locale/ca_FR/LC_COLLATE
+#usr/lib/locale/ca_FR/LC_CTYPE
+#usr/lib/locale/ca_FR/LC_IDENTIFICATION
+#usr/lib/locale/ca_FR/LC_MEASUREMENT
+#usr/lib/locale/ca_FR/LC_MESSAGES
+#usr/lib/locale/ca_FR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_FR/LC_MONETARY
+#usr/lib/locale/ca_FR/LC_NAME
+#usr/lib/locale/ca_FR/LC_NUMERIC
+#usr/lib/locale/ca_FR/LC_PAPER
+#usr/lib/locale/ca_FR/LC_TELEPHONE
+#usr/lib/locale/ca_FR/LC_TIME
+#usr/lib/locale/ca_IT
+#usr/lib/locale/ca_IT.utf8
+#usr/lib/locale/ca_IT.utf8/LC_ADDRESS
+#usr/lib/locale/ca_IT.utf8/LC_COLLATE
+#usr/lib/locale/ca_IT.utf8/LC_CTYPE
+#usr/lib/locale/ca_IT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ca_IT.utf8/LC_MEASUREMENT
+#usr/lib/locale/ca_IT.utf8/LC_MESSAGES
+#usr/lib/locale/ca_IT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_IT.utf8/LC_MONETARY
+#usr/lib/locale/ca_IT.utf8/LC_NAME
+#usr/lib/locale/ca_IT.utf8/LC_NUMERIC
+#usr/lib/locale/ca_IT.utf8/LC_PAPER
+#usr/lib/locale/ca_IT.utf8/LC_TELEPHONE
+#usr/lib/locale/ca_IT.utf8/LC_TIME
+#usr/lib/locale/ca_IT/LC_ADDRESS
+#usr/lib/locale/ca_IT/LC_COLLATE
+#usr/lib/locale/ca_IT/LC_CTYPE
+#usr/lib/locale/ca_IT/LC_IDENTIFICATION
+#usr/lib/locale/ca_IT/LC_MEASUREMENT
+#usr/lib/locale/ca_IT/LC_MESSAGES
+#usr/lib/locale/ca_IT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ca_IT/LC_MONETARY
+#usr/lib/locale/ca_IT/LC_NAME
+#usr/lib/locale/ca_IT/LC_NUMERIC
+#usr/lib/locale/ca_IT/LC_PAPER
+#usr/lib/locale/ca_IT/LC_TELEPHONE
+#usr/lib/locale/ca_IT/LC_TIME
+#usr/lib/locale/crh_UA
+#usr/lib/locale/crh_UA/LC_ADDRESS
+#usr/lib/locale/crh_UA/LC_COLLATE
+#usr/lib/locale/crh_UA/LC_CTYPE
+#usr/lib/locale/crh_UA/LC_IDENTIFICATION
+#usr/lib/locale/crh_UA/LC_MEASUREMENT
+#usr/lib/locale/crh_UA/LC_MESSAGES
+#usr/lib/locale/crh_UA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/crh_UA/LC_MONETARY
+#usr/lib/locale/crh_UA/LC_NAME
+#usr/lib/locale/crh_UA/LC_NUMERIC
+#usr/lib/locale/crh_UA/LC_PAPER
+#usr/lib/locale/crh_UA/LC_TELEPHONE
+#usr/lib/locale/crh_UA/LC_TIME
+#usr/lib/locale/cs_CZ
+#usr/lib/locale/cs_CZ.utf8
+#usr/lib/locale/cs_CZ.utf8/LC_ADDRESS
+#usr/lib/locale/cs_CZ.utf8/LC_COLLATE
+#usr/lib/locale/cs_CZ.utf8/LC_CTYPE
+#usr/lib/locale/cs_CZ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/cs_CZ.utf8/LC_MEASUREMENT
+#usr/lib/locale/cs_CZ.utf8/LC_MESSAGES
+#usr/lib/locale/cs_CZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/cs_CZ.utf8/LC_MONETARY
+#usr/lib/locale/cs_CZ.utf8/LC_NAME
+#usr/lib/locale/cs_CZ.utf8/LC_NUMERIC
+#usr/lib/locale/cs_CZ.utf8/LC_PAPER
+#usr/lib/locale/cs_CZ.utf8/LC_TELEPHONE
+#usr/lib/locale/cs_CZ.utf8/LC_TIME
+#usr/lib/locale/cs_CZ/LC_ADDRESS
+#usr/lib/locale/cs_CZ/LC_COLLATE
+#usr/lib/locale/cs_CZ/LC_CTYPE
+#usr/lib/locale/cs_CZ/LC_IDENTIFICATION
+#usr/lib/locale/cs_CZ/LC_MEASUREMENT
+#usr/lib/locale/cs_CZ/LC_MESSAGES
+#usr/lib/locale/cs_CZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/cs_CZ/LC_MONETARY
+#usr/lib/locale/cs_CZ/LC_NAME
+#usr/lib/locale/cs_CZ/LC_NUMERIC
+#usr/lib/locale/cs_CZ/LC_PAPER
+#usr/lib/locale/cs_CZ/LC_TELEPHONE
+#usr/lib/locale/cs_CZ/LC_TIME
+#usr/lib/locale/csb_PL
+#usr/lib/locale/csb_PL/LC_ADDRESS
+#usr/lib/locale/csb_PL/LC_COLLATE
+#usr/lib/locale/csb_PL/LC_CTYPE
+#usr/lib/locale/csb_PL/LC_IDENTIFICATION
+#usr/lib/locale/csb_PL/LC_MEASUREMENT
+#usr/lib/locale/csb_PL/LC_MESSAGES
+#usr/lib/locale/csb_PL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/csb_PL/LC_MONETARY
+#usr/lib/locale/csb_PL/LC_NAME
+#usr/lib/locale/csb_PL/LC_NUMERIC
+#usr/lib/locale/csb_PL/LC_PAPER
+#usr/lib/locale/csb_PL/LC_TELEPHONE
+#usr/lib/locale/csb_PL/LC_TIME
+#usr/lib/locale/cv_RU
+#usr/lib/locale/cv_RU/LC_ADDRESS
+#usr/lib/locale/cv_RU/LC_COLLATE
+#usr/lib/locale/cv_RU/LC_CTYPE
+#usr/lib/locale/cv_RU/LC_IDENTIFICATION
+#usr/lib/locale/cv_RU/LC_MEASUREMENT
+#usr/lib/locale/cv_RU/LC_MESSAGES
+#usr/lib/locale/cv_RU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/cv_RU/LC_MONETARY
+#usr/lib/locale/cv_RU/LC_NAME
+#usr/lib/locale/cv_RU/LC_NUMERIC
+#usr/lib/locale/cv_RU/LC_PAPER
+#usr/lib/locale/cv_RU/LC_TELEPHONE
+#usr/lib/locale/cv_RU/LC_TIME
+#usr/lib/locale/cy_GB
+#usr/lib/locale/cy_GB.utf8
+#usr/lib/locale/cy_GB.utf8/LC_ADDRESS
+#usr/lib/locale/cy_GB.utf8/LC_COLLATE
+#usr/lib/locale/cy_GB.utf8/LC_CTYPE
+#usr/lib/locale/cy_GB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/cy_GB.utf8/LC_MEASUREMENT
+#usr/lib/locale/cy_GB.utf8/LC_MESSAGES
+#usr/lib/locale/cy_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/cy_GB.utf8/LC_MONETARY
+#usr/lib/locale/cy_GB.utf8/LC_NAME
+#usr/lib/locale/cy_GB.utf8/LC_NUMERIC
+#usr/lib/locale/cy_GB.utf8/LC_PAPER
+#usr/lib/locale/cy_GB.utf8/LC_TELEPHONE
+#usr/lib/locale/cy_GB.utf8/LC_TIME
+#usr/lib/locale/cy_GB/LC_ADDRESS
+#usr/lib/locale/cy_GB/LC_COLLATE
+#usr/lib/locale/cy_GB/LC_CTYPE
+#usr/lib/locale/cy_GB/LC_IDENTIFICATION
+#usr/lib/locale/cy_GB/LC_MEASUREMENT
+#usr/lib/locale/cy_GB/LC_MESSAGES
+#usr/lib/locale/cy_GB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/cy_GB/LC_MONETARY
+#usr/lib/locale/cy_GB/LC_NAME
+#usr/lib/locale/cy_GB/LC_NUMERIC
+#usr/lib/locale/cy_GB/LC_PAPER
+#usr/lib/locale/cy_GB/LC_TELEPHONE
+#usr/lib/locale/cy_GB/LC_TIME
+#usr/lib/locale/da_DK
+#usr/lib/locale/da_DK.iso885915
+#usr/lib/locale/da_DK.iso885915/LC_ADDRESS
+#usr/lib/locale/da_DK.iso885915/LC_COLLATE
+#usr/lib/locale/da_DK.iso885915/LC_CTYPE
+#usr/lib/locale/da_DK.iso885915/LC_IDENTIFICATION
+#usr/lib/locale/da_DK.iso885915/LC_MEASUREMENT
+#usr/lib/locale/da_DK.iso885915/LC_MESSAGES
+#usr/lib/locale/da_DK.iso885915/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/da_DK.iso885915/LC_MONETARY
+#usr/lib/locale/da_DK.iso885915/LC_NAME
+#usr/lib/locale/da_DK.iso885915/LC_NUMERIC
+#usr/lib/locale/da_DK.iso885915/LC_PAPER
+#usr/lib/locale/da_DK.iso885915/LC_TELEPHONE
+#usr/lib/locale/da_DK.iso885915/LC_TIME
+#usr/lib/locale/da_DK.utf8
+#usr/lib/locale/da_DK.utf8/LC_ADDRESS
+#usr/lib/locale/da_DK.utf8/LC_COLLATE
+#usr/lib/locale/da_DK.utf8/LC_CTYPE
+#usr/lib/locale/da_DK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/da_DK.utf8/LC_MEASUREMENT
+#usr/lib/locale/da_DK.utf8/LC_MESSAGES
+#usr/lib/locale/da_DK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/da_DK.utf8/LC_MONETARY
+#usr/lib/locale/da_DK.utf8/LC_NAME
+#usr/lib/locale/da_DK.utf8/LC_NUMERIC
+#usr/lib/locale/da_DK.utf8/LC_PAPER
+#usr/lib/locale/da_DK.utf8/LC_TELEPHONE
+#usr/lib/locale/da_DK.utf8/LC_TIME
+#usr/lib/locale/da_DK/LC_ADDRESS
+#usr/lib/locale/da_DK/LC_COLLATE
+#usr/lib/locale/da_DK/LC_CTYPE
+#usr/lib/locale/da_DK/LC_IDENTIFICATION
+#usr/lib/locale/da_DK/LC_MEASUREMENT
+#usr/lib/locale/da_DK/LC_MESSAGES
+#usr/lib/locale/da_DK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/da_DK/LC_MONETARY
+#usr/lib/locale/da_DK/LC_NAME
+#usr/lib/locale/da_DK/LC_NUMERIC
+#usr/lib/locale/da_DK/LC_PAPER
+#usr/lib/locale/da_DK/LC_TELEPHONE
+#usr/lib/locale/da_DK/LC_TIME
+#usr/lib/locale/de_AT
+#usr/lib/locale/de_AT.utf8
+#usr/lib/locale/de_AT.utf8/LC_ADDRESS
+#usr/lib/locale/de_AT.utf8/LC_COLLATE
+#usr/lib/locale/de_AT.utf8/LC_CTYPE
+#usr/lib/locale/de_AT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/de_AT.utf8/LC_MEASUREMENT
+#usr/lib/locale/de_AT.utf8/LC_MESSAGES
+#usr/lib/locale/de_AT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_AT.utf8/LC_MONETARY
+#usr/lib/locale/de_AT.utf8/LC_NAME
+#usr/lib/locale/de_AT.utf8/LC_NUMERIC
+#usr/lib/locale/de_AT.utf8/LC_PAPER
+#usr/lib/locale/de_AT.utf8/LC_TELEPHONE
+#usr/lib/locale/de_AT.utf8/LC_TIME
+#usr/lib/locale/de_AT/LC_ADDRESS
+#usr/lib/locale/de_AT/LC_COLLATE
+#usr/lib/locale/de_AT/LC_CTYPE
+#usr/lib/locale/de_AT/LC_IDENTIFICATION
+#usr/lib/locale/de_AT/LC_MEASUREMENT
+#usr/lib/locale/de_AT/LC_MESSAGES
+#usr/lib/locale/de_AT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_AT/LC_MONETARY
+#usr/lib/locale/de_AT/LC_NAME
+#usr/lib/locale/de_AT/LC_NUMERIC
+#usr/lib/locale/de_AT/LC_PAPER
+#usr/lib/locale/de_AT/LC_TELEPHONE
+#usr/lib/locale/de_AT/LC_TIME
+#usr/lib/locale/de_AT@euro
+#usr/lib/locale/de_AT@euro/LC_ADDRESS
+#usr/lib/locale/de_AT@euro/LC_COLLATE
+#usr/lib/locale/de_AT@euro/LC_CTYPE
+#usr/lib/locale/de_AT@euro/LC_IDENTIFICATION
+#usr/lib/locale/de_AT@euro/LC_MEASUREMENT
+#usr/lib/locale/de_AT@euro/LC_MESSAGES
+#usr/lib/locale/de_AT@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_AT@euro/LC_MONETARY
+#usr/lib/locale/de_AT@euro/LC_NAME
+#usr/lib/locale/de_AT@euro/LC_NUMERIC
+#usr/lib/locale/de_AT@euro/LC_PAPER
+#usr/lib/locale/de_AT@euro/LC_TELEPHONE
+#usr/lib/locale/de_AT@euro/LC_TIME
+#usr/lib/locale/de_BE
+#usr/lib/locale/de_BE.utf8
+#usr/lib/locale/de_BE.utf8/LC_ADDRESS
+#usr/lib/locale/de_BE.utf8/LC_COLLATE
+#usr/lib/locale/de_BE.utf8/LC_CTYPE
+#usr/lib/locale/de_BE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/de_BE.utf8/LC_MEASUREMENT
+#usr/lib/locale/de_BE.utf8/LC_MESSAGES
+#usr/lib/locale/de_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_BE.utf8/LC_MONETARY
+#usr/lib/locale/de_BE.utf8/LC_NAME
+#usr/lib/locale/de_BE.utf8/LC_NUMERIC
+#usr/lib/locale/de_BE.utf8/LC_PAPER
+#usr/lib/locale/de_BE.utf8/LC_TELEPHONE
+#usr/lib/locale/de_BE.utf8/LC_TIME
+#usr/lib/locale/de_BE/LC_ADDRESS
+#usr/lib/locale/de_BE/LC_COLLATE
+#usr/lib/locale/de_BE/LC_CTYPE
+#usr/lib/locale/de_BE/LC_IDENTIFICATION
+#usr/lib/locale/de_BE/LC_MEASUREMENT
+#usr/lib/locale/de_BE/LC_MESSAGES
+#usr/lib/locale/de_BE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_BE/LC_MONETARY
+#usr/lib/locale/de_BE/LC_NAME
+#usr/lib/locale/de_BE/LC_NUMERIC
+#usr/lib/locale/de_BE/LC_PAPER
+#usr/lib/locale/de_BE/LC_TELEPHONE
+#usr/lib/locale/de_BE/LC_TIME
+#usr/lib/locale/de_BE@euro
+#usr/lib/locale/de_BE@euro/LC_ADDRESS
+#usr/lib/locale/de_BE@euro/LC_COLLATE
+#usr/lib/locale/de_BE@euro/LC_CTYPE
+#usr/lib/locale/de_BE@euro/LC_IDENTIFICATION
+#usr/lib/locale/de_BE@euro/LC_MEASUREMENT
+#usr/lib/locale/de_BE@euro/LC_MESSAGES
+#usr/lib/locale/de_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_BE@euro/LC_MONETARY
+#usr/lib/locale/de_BE@euro/LC_NAME
+#usr/lib/locale/de_BE@euro/LC_NUMERIC
+#usr/lib/locale/de_BE@euro/LC_PAPER
+#usr/lib/locale/de_BE@euro/LC_TELEPHONE
+#usr/lib/locale/de_BE@euro/LC_TIME
+#usr/lib/locale/de_CH
+#usr/lib/locale/de_CH.utf8
+#usr/lib/locale/de_CH.utf8/LC_ADDRESS
+#usr/lib/locale/de_CH.utf8/LC_COLLATE
+#usr/lib/locale/de_CH.utf8/LC_CTYPE
+#usr/lib/locale/de_CH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/de_CH.utf8/LC_MEASUREMENT
+#usr/lib/locale/de_CH.utf8/LC_MESSAGES
+#usr/lib/locale/de_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_CH.utf8/LC_MONETARY
+#usr/lib/locale/de_CH.utf8/LC_NAME
+#usr/lib/locale/de_CH.utf8/LC_NUMERIC
+#usr/lib/locale/de_CH.utf8/LC_PAPER
+#usr/lib/locale/de_CH.utf8/LC_TELEPHONE
+#usr/lib/locale/de_CH.utf8/LC_TIME
+#usr/lib/locale/de_CH/LC_ADDRESS
+#usr/lib/locale/de_CH/LC_COLLATE
+#usr/lib/locale/de_CH/LC_CTYPE
+#usr/lib/locale/de_CH/LC_IDENTIFICATION
+#usr/lib/locale/de_CH/LC_MEASUREMENT
+#usr/lib/locale/de_CH/LC_MESSAGES
+#usr/lib/locale/de_CH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_CH/LC_MONETARY
+#usr/lib/locale/de_CH/LC_NAME
+#usr/lib/locale/de_CH/LC_NUMERIC
+#usr/lib/locale/de_CH/LC_PAPER
+#usr/lib/locale/de_CH/LC_TELEPHONE
+#usr/lib/locale/de_CH/LC_TIME
+#usr/lib/locale/de_DE
+#usr/lib/locale/de_DE.utf8
+#usr/lib/locale/de_DE.utf8/LC_ADDRESS
+#usr/lib/locale/de_DE.utf8/LC_COLLATE
+#usr/lib/locale/de_DE.utf8/LC_CTYPE
+#usr/lib/locale/de_DE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/de_DE.utf8/LC_MEASUREMENT
+#usr/lib/locale/de_DE.utf8/LC_MESSAGES
+#usr/lib/locale/de_DE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_DE.utf8/LC_MONETARY
+#usr/lib/locale/de_DE.utf8/LC_NAME
+#usr/lib/locale/de_DE.utf8/LC_NUMERIC
+#usr/lib/locale/de_DE.utf8/LC_PAPER
+#usr/lib/locale/de_DE.utf8/LC_TELEPHONE
+#usr/lib/locale/de_DE.utf8/LC_TIME
+#usr/lib/locale/de_DE/LC_ADDRESS
+#usr/lib/locale/de_DE/LC_COLLATE
+#usr/lib/locale/de_DE/LC_CTYPE
+#usr/lib/locale/de_DE/LC_IDENTIFICATION
+#usr/lib/locale/de_DE/LC_MEASUREMENT
+#usr/lib/locale/de_DE/LC_MESSAGES
+#usr/lib/locale/de_DE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_DE/LC_MONETARY
+#usr/lib/locale/de_DE/LC_NAME
+#usr/lib/locale/de_DE/LC_NUMERIC
+#usr/lib/locale/de_DE/LC_PAPER
+#usr/lib/locale/de_DE/LC_TELEPHONE
+#usr/lib/locale/de_DE/LC_TIME
+#usr/lib/locale/de_DE@euro
+#usr/lib/locale/de_DE@euro/LC_ADDRESS
+#usr/lib/locale/de_DE@euro/LC_COLLATE
+#usr/lib/locale/de_DE@euro/LC_CTYPE
+#usr/lib/locale/de_DE@euro/LC_IDENTIFICATION
+#usr/lib/locale/de_DE@euro/LC_MEASUREMENT
+#usr/lib/locale/de_DE@euro/LC_MESSAGES
+#usr/lib/locale/de_DE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_DE@euro/LC_MONETARY
+#usr/lib/locale/de_DE@euro/LC_NAME
+#usr/lib/locale/de_DE@euro/LC_NUMERIC
+#usr/lib/locale/de_DE@euro/LC_PAPER
+#usr/lib/locale/de_DE@euro/LC_TELEPHONE
+#usr/lib/locale/de_DE@euro/LC_TIME
+#usr/lib/locale/de_LU
+#usr/lib/locale/de_LU.utf8
+#usr/lib/locale/de_LU.utf8/LC_ADDRESS
+#usr/lib/locale/de_LU.utf8/LC_COLLATE
+#usr/lib/locale/de_LU.utf8/LC_CTYPE
+#usr/lib/locale/de_LU.utf8/LC_IDENTIFICATION
+#usr/lib/locale/de_LU.utf8/LC_MEASUREMENT
+#usr/lib/locale/de_LU.utf8/LC_MESSAGES
+#usr/lib/locale/de_LU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_LU.utf8/LC_MONETARY
+#usr/lib/locale/de_LU.utf8/LC_NAME
+#usr/lib/locale/de_LU.utf8/LC_NUMERIC
+#usr/lib/locale/de_LU.utf8/LC_PAPER
+#usr/lib/locale/de_LU.utf8/LC_TELEPHONE
+#usr/lib/locale/de_LU.utf8/LC_TIME
+#usr/lib/locale/de_LU/LC_ADDRESS
+#usr/lib/locale/de_LU/LC_COLLATE
+#usr/lib/locale/de_LU/LC_CTYPE
+#usr/lib/locale/de_LU/LC_IDENTIFICATION
+#usr/lib/locale/de_LU/LC_MEASUREMENT
+#usr/lib/locale/de_LU/LC_MESSAGES
+#usr/lib/locale/de_LU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_LU/LC_MONETARY
+#usr/lib/locale/de_LU/LC_NAME
+#usr/lib/locale/de_LU/LC_NUMERIC
+#usr/lib/locale/de_LU/LC_PAPER
+#usr/lib/locale/de_LU/LC_TELEPHONE
+#usr/lib/locale/de_LU/LC_TIME
+#usr/lib/locale/de_LU@euro
+#usr/lib/locale/de_LU@euro/LC_ADDRESS
+#usr/lib/locale/de_LU@euro/LC_COLLATE
+#usr/lib/locale/de_LU@euro/LC_CTYPE
+#usr/lib/locale/de_LU@euro/LC_IDENTIFICATION
+#usr/lib/locale/de_LU@euro/LC_MEASUREMENT
+#usr/lib/locale/de_LU@euro/LC_MESSAGES
+#usr/lib/locale/de_LU@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/de_LU@euro/LC_MONETARY
+#usr/lib/locale/de_LU@euro/LC_NAME
+#usr/lib/locale/de_LU@euro/LC_NUMERIC
+#usr/lib/locale/de_LU@euro/LC_PAPER
+#usr/lib/locale/de_LU@euro/LC_TELEPHONE
+#usr/lib/locale/de_LU@euro/LC_TIME
+#usr/lib/locale/dv_MV
+#usr/lib/locale/dv_MV/LC_ADDRESS
+#usr/lib/locale/dv_MV/LC_COLLATE
+#usr/lib/locale/dv_MV/LC_CTYPE
+#usr/lib/locale/dv_MV/LC_IDENTIFICATION
+#usr/lib/locale/dv_MV/LC_MEASUREMENT
+#usr/lib/locale/dv_MV/LC_MESSAGES
+#usr/lib/locale/dv_MV/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/dv_MV/LC_MONETARY
+#usr/lib/locale/dv_MV/LC_NAME
+#usr/lib/locale/dv_MV/LC_NUMERIC
+#usr/lib/locale/dv_MV/LC_PAPER
+#usr/lib/locale/dv_MV/LC_TELEPHONE
+#usr/lib/locale/dv_MV/LC_TIME
+#usr/lib/locale/dz_BT
+#usr/lib/locale/dz_BT/LC_ADDRESS
+#usr/lib/locale/dz_BT/LC_COLLATE
+#usr/lib/locale/dz_BT/LC_CTYPE
+#usr/lib/locale/dz_BT/LC_IDENTIFICATION
+#usr/lib/locale/dz_BT/LC_MEASUREMENT
+#usr/lib/locale/dz_BT/LC_MESSAGES
+#usr/lib/locale/dz_BT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/dz_BT/LC_MONETARY
+#usr/lib/locale/dz_BT/LC_NAME
+#usr/lib/locale/dz_BT/LC_NUMERIC
+#usr/lib/locale/dz_BT/LC_PAPER
+#usr/lib/locale/dz_BT/LC_TELEPHONE
+#usr/lib/locale/dz_BT/LC_TIME
+#usr/lib/locale/el_CY
+#usr/lib/locale/el_CY.utf8
+#usr/lib/locale/el_CY.utf8/LC_ADDRESS
+#usr/lib/locale/el_CY.utf8/LC_COLLATE
+#usr/lib/locale/el_CY.utf8/LC_CTYPE
+#usr/lib/locale/el_CY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/el_CY.utf8/LC_MEASUREMENT
+#usr/lib/locale/el_CY.utf8/LC_MESSAGES
+#usr/lib/locale/el_CY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/el_CY.utf8/LC_MONETARY
+#usr/lib/locale/el_CY.utf8/LC_NAME
+#usr/lib/locale/el_CY.utf8/LC_NUMERIC
+#usr/lib/locale/el_CY.utf8/LC_PAPER
+#usr/lib/locale/el_CY.utf8/LC_TELEPHONE
+#usr/lib/locale/el_CY.utf8/LC_TIME
+#usr/lib/locale/el_CY/LC_ADDRESS
+#usr/lib/locale/el_CY/LC_COLLATE
+#usr/lib/locale/el_CY/LC_CTYPE
+#usr/lib/locale/el_CY/LC_IDENTIFICATION
+#usr/lib/locale/el_CY/LC_MEASUREMENT
+#usr/lib/locale/el_CY/LC_MESSAGES
+#usr/lib/locale/el_CY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/el_CY/LC_MONETARY
+#usr/lib/locale/el_CY/LC_NAME
+#usr/lib/locale/el_CY/LC_NUMERIC
+#usr/lib/locale/el_CY/LC_PAPER
+#usr/lib/locale/el_CY/LC_TELEPHONE
+#usr/lib/locale/el_CY/LC_TIME
+#usr/lib/locale/el_GR
+#usr/lib/locale/el_GR.utf8
+#usr/lib/locale/el_GR.utf8/LC_ADDRESS
+#usr/lib/locale/el_GR.utf8/LC_COLLATE
+#usr/lib/locale/el_GR.utf8/LC_CTYPE
+#usr/lib/locale/el_GR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/el_GR.utf8/LC_MEASUREMENT
+#usr/lib/locale/el_GR.utf8/LC_MESSAGES
+#usr/lib/locale/el_GR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/el_GR.utf8/LC_MONETARY
+#usr/lib/locale/el_GR.utf8/LC_NAME
+#usr/lib/locale/el_GR.utf8/LC_NUMERIC
+#usr/lib/locale/el_GR.utf8/LC_PAPER
+#usr/lib/locale/el_GR.utf8/LC_TELEPHONE
+#usr/lib/locale/el_GR.utf8/LC_TIME
+#usr/lib/locale/el_GR/LC_ADDRESS
+#usr/lib/locale/el_GR/LC_COLLATE
+#usr/lib/locale/el_GR/LC_CTYPE
+#usr/lib/locale/el_GR/LC_IDENTIFICATION
+#usr/lib/locale/el_GR/LC_MEASUREMENT
+#usr/lib/locale/el_GR/LC_MESSAGES
+#usr/lib/locale/el_GR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/el_GR/LC_MONETARY
+#usr/lib/locale/el_GR/LC_NAME
+#usr/lib/locale/el_GR/LC_NUMERIC
+#usr/lib/locale/el_GR/LC_PAPER
+#usr/lib/locale/el_GR/LC_TELEPHONE
+#usr/lib/locale/el_GR/LC_TIME
+#usr/lib/locale/en_AG
+#usr/lib/locale/en_AG/LC_ADDRESS
+#usr/lib/locale/en_AG/LC_COLLATE
+#usr/lib/locale/en_AG/LC_CTYPE
+#usr/lib/locale/en_AG/LC_IDENTIFICATION
+#usr/lib/locale/en_AG/LC_MEASUREMENT
+#usr/lib/locale/en_AG/LC_MESSAGES
+#usr/lib/locale/en_AG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_AG/LC_MONETARY
+#usr/lib/locale/en_AG/LC_NAME
+#usr/lib/locale/en_AG/LC_NUMERIC
+#usr/lib/locale/en_AG/LC_PAPER
+#usr/lib/locale/en_AG/LC_TELEPHONE
+#usr/lib/locale/en_AG/LC_TIME
+#usr/lib/locale/en_AU
+#usr/lib/locale/en_AU.utf8
+#usr/lib/locale/en_AU.utf8/LC_ADDRESS
+#usr/lib/locale/en_AU.utf8/LC_COLLATE
+#usr/lib/locale/en_AU.utf8/LC_CTYPE
+#usr/lib/locale/en_AU.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_AU.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_AU.utf8/LC_MESSAGES
+#usr/lib/locale/en_AU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_AU.utf8/LC_MONETARY
+#usr/lib/locale/en_AU.utf8/LC_NAME
+#usr/lib/locale/en_AU.utf8/LC_NUMERIC
+#usr/lib/locale/en_AU.utf8/LC_PAPER
+#usr/lib/locale/en_AU.utf8/LC_TELEPHONE
+#usr/lib/locale/en_AU.utf8/LC_TIME
+#usr/lib/locale/en_AU/LC_ADDRESS
+#usr/lib/locale/en_AU/LC_COLLATE
+#usr/lib/locale/en_AU/LC_CTYPE
+#usr/lib/locale/en_AU/LC_IDENTIFICATION
+#usr/lib/locale/en_AU/LC_MEASUREMENT
+#usr/lib/locale/en_AU/LC_MESSAGES
+#usr/lib/locale/en_AU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_AU/LC_MONETARY
+#usr/lib/locale/en_AU/LC_NAME
+#usr/lib/locale/en_AU/LC_NUMERIC
+#usr/lib/locale/en_AU/LC_PAPER
+#usr/lib/locale/en_AU/LC_TELEPHONE
+#usr/lib/locale/en_AU/LC_TIME
+#usr/lib/locale/en_BW
+#usr/lib/locale/en_BW.utf8
+#usr/lib/locale/en_BW.utf8/LC_ADDRESS
+#usr/lib/locale/en_BW.utf8/LC_COLLATE
+#usr/lib/locale/en_BW.utf8/LC_CTYPE
+#usr/lib/locale/en_BW.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_BW.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_BW.utf8/LC_MESSAGES
+#usr/lib/locale/en_BW.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_BW.utf8/LC_MONETARY
+#usr/lib/locale/en_BW.utf8/LC_NAME
+#usr/lib/locale/en_BW.utf8/LC_NUMERIC
+#usr/lib/locale/en_BW.utf8/LC_PAPER
+#usr/lib/locale/en_BW.utf8/LC_TELEPHONE
+#usr/lib/locale/en_BW.utf8/LC_TIME
+#usr/lib/locale/en_BW/LC_ADDRESS
+#usr/lib/locale/en_BW/LC_COLLATE
+#usr/lib/locale/en_BW/LC_CTYPE
+#usr/lib/locale/en_BW/LC_IDENTIFICATION
+#usr/lib/locale/en_BW/LC_MEASUREMENT
+#usr/lib/locale/en_BW/LC_MESSAGES
+#usr/lib/locale/en_BW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_BW/LC_MONETARY
+#usr/lib/locale/en_BW/LC_NAME
+#usr/lib/locale/en_BW/LC_NUMERIC
+#usr/lib/locale/en_BW/LC_PAPER
+#usr/lib/locale/en_BW/LC_TELEPHONE
+#usr/lib/locale/en_BW/LC_TIME
+#usr/lib/locale/en_CA
+#usr/lib/locale/en_CA.utf8
+#usr/lib/locale/en_CA.utf8/LC_ADDRESS
+#usr/lib/locale/en_CA.utf8/LC_COLLATE
+#usr/lib/locale/en_CA.utf8/LC_CTYPE
+#usr/lib/locale/en_CA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_CA.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_CA.utf8/LC_MESSAGES
+#usr/lib/locale/en_CA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_CA.utf8/LC_MONETARY
+#usr/lib/locale/en_CA.utf8/LC_NAME
+#usr/lib/locale/en_CA.utf8/LC_NUMERIC
+#usr/lib/locale/en_CA.utf8/LC_PAPER
+#usr/lib/locale/en_CA.utf8/LC_TELEPHONE
+#usr/lib/locale/en_CA.utf8/LC_TIME
+#usr/lib/locale/en_CA/LC_ADDRESS
+#usr/lib/locale/en_CA/LC_COLLATE
+#usr/lib/locale/en_CA/LC_CTYPE
+#usr/lib/locale/en_CA/LC_IDENTIFICATION
+#usr/lib/locale/en_CA/LC_MEASUREMENT
+#usr/lib/locale/en_CA/LC_MESSAGES
+#usr/lib/locale/en_CA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_CA/LC_MONETARY
+#usr/lib/locale/en_CA/LC_NAME
+#usr/lib/locale/en_CA/LC_NUMERIC
+#usr/lib/locale/en_CA/LC_PAPER
+#usr/lib/locale/en_CA/LC_TELEPHONE
+#usr/lib/locale/en_CA/LC_TIME
+#usr/lib/locale/en_DK
+#usr/lib/locale/en_DK.utf8
+#usr/lib/locale/en_DK.utf8/LC_ADDRESS
+#usr/lib/locale/en_DK.utf8/LC_COLLATE
+#usr/lib/locale/en_DK.utf8/LC_CTYPE
+#usr/lib/locale/en_DK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_DK.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_DK.utf8/LC_MESSAGES
+#usr/lib/locale/en_DK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_DK.utf8/LC_MONETARY
+#usr/lib/locale/en_DK.utf8/LC_NAME
+#usr/lib/locale/en_DK.utf8/LC_NUMERIC
+#usr/lib/locale/en_DK.utf8/LC_PAPER
+#usr/lib/locale/en_DK.utf8/LC_TELEPHONE
+#usr/lib/locale/en_DK.utf8/LC_TIME
+#usr/lib/locale/en_DK/LC_ADDRESS
+#usr/lib/locale/en_DK/LC_COLLATE
+#usr/lib/locale/en_DK/LC_CTYPE
+#usr/lib/locale/en_DK/LC_IDENTIFICATION
+#usr/lib/locale/en_DK/LC_MEASUREMENT
+#usr/lib/locale/en_DK/LC_MESSAGES
+#usr/lib/locale/en_DK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_DK/LC_MONETARY
+#usr/lib/locale/en_DK/LC_NAME
+#usr/lib/locale/en_DK/LC_NUMERIC
+#usr/lib/locale/en_DK/LC_PAPER
+#usr/lib/locale/en_DK/LC_TELEPHONE
+#usr/lib/locale/en_DK/LC_TIME
+#usr/lib/locale/en_GB
+#usr/lib/locale/en_GB.iso885915
+#usr/lib/locale/en_GB.iso885915/LC_ADDRESS
+#usr/lib/locale/en_GB.iso885915/LC_COLLATE
+#usr/lib/locale/en_GB.iso885915/LC_CTYPE
+#usr/lib/locale/en_GB.iso885915/LC_IDENTIFICATION
+#usr/lib/locale/en_GB.iso885915/LC_MEASUREMENT
+#usr/lib/locale/en_GB.iso885915/LC_MESSAGES
+#usr/lib/locale/en_GB.iso885915/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_GB.iso885915/LC_MONETARY
+#usr/lib/locale/en_GB.iso885915/LC_NAME
+#usr/lib/locale/en_GB.iso885915/LC_NUMERIC
+#usr/lib/locale/en_GB.iso885915/LC_PAPER
+#usr/lib/locale/en_GB.iso885915/LC_TELEPHONE
+#usr/lib/locale/en_GB.iso885915/LC_TIME
+#usr/lib/locale/en_GB.utf8
+#usr/lib/locale/en_GB.utf8/LC_ADDRESS
+#usr/lib/locale/en_GB.utf8/LC_COLLATE
+#usr/lib/locale/en_GB.utf8/LC_CTYPE
+#usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_GB.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_GB.utf8/LC_MESSAGES
+#usr/lib/locale/en_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_GB.utf8/LC_MONETARY
+#usr/lib/locale/en_GB.utf8/LC_NAME
+#usr/lib/locale/en_GB.utf8/LC_NUMERIC
+#usr/lib/locale/en_GB.utf8/LC_PAPER
+#usr/lib/locale/en_GB.utf8/LC_TELEPHONE
+#usr/lib/locale/en_GB.utf8/LC_TIME
+#usr/lib/locale/en_GB/LC_ADDRESS
+#usr/lib/locale/en_GB/LC_COLLATE
+#usr/lib/locale/en_GB/LC_CTYPE
+#usr/lib/locale/en_GB/LC_IDENTIFICATION
+#usr/lib/locale/en_GB/LC_MEASUREMENT
+#usr/lib/locale/en_GB/LC_MESSAGES
+#usr/lib/locale/en_GB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_GB/LC_MONETARY
+#usr/lib/locale/en_GB/LC_NAME
+#usr/lib/locale/en_GB/LC_NUMERIC
+#usr/lib/locale/en_GB/LC_PAPER
+#usr/lib/locale/en_GB/LC_TELEPHONE
+#usr/lib/locale/en_GB/LC_TIME
+#usr/lib/locale/en_HK
+#usr/lib/locale/en_HK.utf8
+#usr/lib/locale/en_HK.utf8/LC_ADDRESS
+#usr/lib/locale/en_HK.utf8/LC_COLLATE
+#usr/lib/locale/en_HK.utf8/LC_CTYPE
+#usr/lib/locale/en_HK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_HK.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_HK.utf8/LC_MESSAGES
+#usr/lib/locale/en_HK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_HK.utf8/LC_MONETARY
+#usr/lib/locale/en_HK.utf8/LC_NAME
+#usr/lib/locale/en_HK.utf8/LC_NUMERIC
+#usr/lib/locale/en_HK.utf8/LC_PAPER
+#usr/lib/locale/en_HK.utf8/LC_TELEPHONE
+#usr/lib/locale/en_HK.utf8/LC_TIME
+#usr/lib/locale/en_HK/LC_ADDRESS
+#usr/lib/locale/en_HK/LC_COLLATE
+#usr/lib/locale/en_HK/LC_CTYPE
+#usr/lib/locale/en_HK/LC_IDENTIFICATION
+#usr/lib/locale/en_HK/LC_MEASUREMENT
+#usr/lib/locale/en_HK/LC_MESSAGES
+#usr/lib/locale/en_HK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_HK/LC_MONETARY
+#usr/lib/locale/en_HK/LC_NAME
+#usr/lib/locale/en_HK/LC_NUMERIC
+#usr/lib/locale/en_HK/LC_PAPER
+#usr/lib/locale/en_HK/LC_TELEPHONE
+#usr/lib/locale/en_HK/LC_TIME
+#usr/lib/locale/en_IE
+#usr/lib/locale/en_IE.utf8
+#usr/lib/locale/en_IE.utf8/LC_ADDRESS
+#usr/lib/locale/en_IE.utf8/LC_COLLATE
+#usr/lib/locale/en_IE.utf8/LC_CTYPE
+#usr/lib/locale/en_IE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_IE.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_IE.utf8/LC_MESSAGES
+#usr/lib/locale/en_IE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_IE.utf8/LC_MONETARY
+#usr/lib/locale/en_IE.utf8/LC_NAME
+#usr/lib/locale/en_IE.utf8/LC_NUMERIC
+#usr/lib/locale/en_IE.utf8/LC_PAPER
+#usr/lib/locale/en_IE.utf8/LC_TELEPHONE
+#usr/lib/locale/en_IE.utf8/LC_TIME
+#usr/lib/locale/en_IE/LC_ADDRESS
+#usr/lib/locale/en_IE/LC_COLLATE
+#usr/lib/locale/en_IE/LC_CTYPE
+#usr/lib/locale/en_IE/LC_IDENTIFICATION
+#usr/lib/locale/en_IE/LC_MEASUREMENT
+#usr/lib/locale/en_IE/LC_MESSAGES
+#usr/lib/locale/en_IE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_IE/LC_MONETARY
+#usr/lib/locale/en_IE/LC_NAME
+#usr/lib/locale/en_IE/LC_NUMERIC
+#usr/lib/locale/en_IE/LC_PAPER
+#usr/lib/locale/en_IE/LC_TELEPHONE
+#usr/lib/locale/en_IE/LC_TIME
+#usr/lib/locale/en_IE@euro
+#usr/lib/locale/en_IE@euro/LC_ADDRESS
+#usr/lib/locale/en_IE@euro/LC_COLLATE
+#usr/lib/locale/en_IE@euro/LC_CTYPE
+#usr/lib/locale/en_IE@euro/LC_IDENTIFICATION
+#usr/lib/locale/en_IE@euro/LC_MEASUREMENT
+#usr/lib/locale/en_IE@euro/LC_MESSAGES
+#usr/lib/locale/en_IE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_IE@euro/LC_MONETARY
+#usr/lib/locale/en_IE@euro/LC_NAME
+#usr/lib/locale/en_IE@euro/LC_NUMERIC
+#usr/lib/locale/en_IE@euro/LC_PAPER
+#usr/lib/locale/en_IE@euro/LC_TELEPHONE
+#usr/lib/locale/en_IE@euro/LC_TIME
+#usr/lib/locale/en_IN
+#usr/lib/locale/en_IN/LC_ADDRESS
+#usr/lib/locale/en_IN/LC_COLLATE
+#usr/lib/locale/en_IN/LC_CTYPE
+#usr/lib/locale/en_IN/LC_IDENTIFICATION
+#usr/lib/locale/en_IN/LC_MEASUREMENT
+#usr/lib/locale/en_IN/LC_MESSAGES
+#usr/lib/locale/en_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_IN/LC_MONETARY
+#usr/lib/locale/en_IN/LC_NAME
+#usr/lib/locale/en_IN/LC_NUMERIC
+#usr/lib/locale/en_IN/LC_PAPER
+#usr/lib/locale/en_IN/LC_TELEPHONE
+#usr/lib/locale/en_IN/LC_TIME
+#usr/lib/locale/en_NG
+#usr/lib/locale/en_NG/LC_ADDRESS
+#usr/lib/locale/en_NG/LC_COLLATE
+#usr/lib/locale/en_NG/LC_CTYPE
+#usr/lib/locale/en_NG/LC_IDENTIFICATION
+#usr/lib/locale/en_NG/LC_MEASUREMENT
+#usr/lib/locale/en_NG/LC_MESSAGES
+#usr/lib/locale/en_NG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_NG/LC_MONETARY
+#usr/lib/locale/en_NG/LC_NAME
+#usr/lib/locale/en_NG/LC_NUMERIC
+#usr/lib/locale/en_NG/LC_PAPER
+#usr/lib/locale/en_NG/LC_TELEPHONE
+#usr/lib/locale/en_NG/LC_TIME
+#usr/lib/locale/en_NZ
+#usr/lib/locale/en_NZ.utf8
+#usr/lib/locale/en_NZ.utf8/LC_ADDRESS
+#usr/lib/locale/en_NZ.utf8/LC_COLLATE
+#usr/lib/locale/en_NZ.utf8/LC_CTYPE
+#usr/lib/locale/en_NZ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_NZ.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_NZ.utf8/LC_MESSAGES
+#usr/lib/locale/en_NZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_NZ.utf8/LC_MONETARY
+#usr/lib/locale/en_NZ.utf8/LC_NAME
+#usr/lib/locale/en_NZ.utf8/LC_NUMERIC
+#usr/lib/locale/en_NZ.utf8/LC_PAPER
+#usr/lib/locale/en_NZ.utf8/LC_TELEPHONE
+#usr/lib/locale/en_NZ.utf8/LC_TIME
+#usr/lib/locale/en_NZ/LC_ADDRESS
+#usr/lib/locale/en_NZ/LC_COLLATE
+#usr/lib/locale/en_NZ/LC_CTYPE
+#usr/lib/locale/en_NZ/LC_IDENTIFICATION
+#usr/lib/locale/en_NZ/LC_MEASUREMENT
+#usr/lib/locale/en_NZ/LC_MESSAGES
+#usr/lib/locale/en_NZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_NZ/LC_MONETARY
+#usr/lib/locale/en_NZ/LC_NAME
+#usr/lib/locale/en_NZ/LC_NUMERIC
+#usr/lib/locale/en_NZ/LC_PAPER
+#usr/lib/locale/en_NZ/LC_TELEPHONE
+#usr/lib/locale/en_NZ/LC_TIME
+#usr/lib/locale/en_PH
+#usr/lib/locale/en_PH.utf8
+#usr/lib/locale/en_PH.utf8/LC_ADDRESS
+#usr/lib/locale/en_PH.utf8/LC_COLLATE
+#usr/lib/locale/en_PH.utf8/LC_CTYPE
+#usr/lib/locale/en_PH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_PH.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_PH.utf8/LC_MESSAGES
+#usr/lib/locale/en_PH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_PH.utf8/LC_MONETARY
+#usr/lib/locale/en_PH.utf8/LC_NAME
+#usr/lib/locale/en_PH.utf8/LC_NUMERIC
+#usr/lib/locale/en_PH.utf8/LC_PAPER
+#usr/lib/locale/en_PH.utf8/LC_TELEPHONE
+#usr/lib/locale/en_PH.utf8/LC_TIME
+#usr/lib/locale/en_PH/LC_ADDRESS
+#usr/lib/locale/en_PH/LC_COLLATE
+#usr/lib/locale/en_PH/LC_CTYPE
+#usr/lib/locale/en_PH/LC_IDENTIFICATION
+#usr/lib/locale/en_PH/LC_MEASUREMENT
+#usr/lib/locale/en_PH/LC_MESSAGES
+#usr/lib/locale/en_PH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_PH/LC_MONETARY
+#usr/lib/locale/en_PH/LC_NAME
+#usr/lib/locale/en_PH/LC_NUMERIC
+#usr/lib/locale/en_PH/LC_PAPER
+#usr/lib/locale/en_PH/LC_TELEPHONE
+#usr/lib/locale/en_PH/LC_TIME
+#usr/lib/locale/en_SG
+#usr/lib/locale/en_SG.utf8
+#usr/lib/locale/en_SG.utf8/LC_ADDRESS
+#usr/lib/locale/en_SG.utf8/LC_COLLATE
+#usr/lib/locale/en_SG.utf8/LC_CTYPE
+#usr/lib/locale/en_SG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_SG.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_SG.utf8/LC_MESSAGES
+#usr/lib/locale/en_SG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_SG.utf8/LC_MONETARY
+#usr/lib/locale/en_SG.utf8/LC_NAME
+#usr/lib/locale/en_SG.utf8/LC_NUMERIC
+#usr/lib/locale/en_SG.utf8/LC_PAPER
+#usr/lib/locale/en_SG.utf8/LC_TELEPHONE
+#usr/lib/locale/en_SG.utf8/LC_TIME
+#usr/lib/locale/en_SG/LC_ADDRESS
+#usr/lib/locale/en_SG/LC_COLLATE
+#usr/lib/locale/en_SG/LC_CTYPE
+#usr/lib/locale/en_SG/LC_IDENTIFICATION
+#usr/lib/locale/en_SG/LC_MEASUREMENT
+#usr/lib/locale/en_SG/LC_MESSAGES
+#usr/lib/locale/en_SG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_SG/LC_MONETARY
+#usr/lib/locale/en_SG/LC_NAME
+#usr/lib/locale/en_SG/LC_NUMERIC
+#usr/lib/locale/en_SG/LC_PAPER
+#usr/lib/locale/en_SG/LC_TELEPHONE
+#usr/lib/locale/en_SG/LC_TIME
+#usr/lib/locale/en_US
+#usr/lib/locale/en_US.iso885915
+#usr/lib/locale/en_US.iso885915/LC_ADDRESS
+#usr/lib/locale/en_US.iso885915/LC_COLLATE
+#usr/lib/locale/en_US.iso885915/LC_CTYPE
+#usr/lib/locale/en_US.iso885915/LC_IDENTIFICATION
+#usr/lib/locale/en_US.iso885915/LC_MEASUREMENT
+#usr/lib/locale/en_US.iso885915/LC_MESSAGES
+#usr/lib/locale/en_US.iso885915/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_US.iso885915/LC_MONETARY
+#usr/lib/locale/en_US.iso885915/LC_NAME
+#usr/lib/locale/en_US.iso885915/LC_NUMERIC
+#usr/lib/locale/en_US.iso885915/LC_PAPER
+#usr/lib/locale/en_US.iso885915/LC_TELEPHONE
+#usr/lib/locale/en_US.iso885915/LC_TIME
+#usr/lib/locale/en_US.utf8
+#usr/lib/locale/en_US.utf8/LC_ADDRESS
+#usr/lib/locale/en_US.utf8/LC_COLLATE
+#usr/lib/locale/en_US.utf8/LC_CTYPE
+#usr/lib/locale/en_US.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_US.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_US.utf8/LC_MESSAGES
+#usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_US.utf8/LC_MONETARY
+#usr/lib/locale/en_US.utf8/LC_NAME
+#usr/lib/locale/en_US.utf8/LC_NUMERIC
+#usr/lib/locale/en_US.utf8/LC_PAPER
+#usr/lib/locale/en_US.utf8/LC_TELEPHONE
+#usr/lib/locale/en_US.utf8/LC_TIME
+#usr/lib/locale/en_US/LC_ADDRESS
+#usr/lib/locale/en_US/LC_COLLATE
+#usr/lib/locale/en_US/LC_CTYPE
+#usr/lib/locale/en_US/LC_IDENTIFICATION
+#usr/lib/locale/en_US/LC_MEASUREMENT
+#usr/lib/locale/en_US/LC_MESSAGES
+#usr/lib/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_US/LC_MONETARY
+#usr/lib/locale/en_US/LC_NAME
+#usr/lib/locale/en_US/LC_NUMERIC
+#usr/lib/locale/en_US/LC_PAPER
+#usr/lib/locale/en_US/LC_TELEPHONE
+#usr/lib/locale/en_US/LC_TIME
+#usr/lib/locale/en_ZA
+#usr/lib/locale/en_ZA.utf8
+#usr/lib/locale/en_ZA.utf8/LC_ADDRESS
+#usr/lib/locale/en_ZA.utf8/LC_COLLATE
+#usr/lib/locale/en_ZA.utf8/LC_CTYPE
+#usr/lib/locale/en_ZA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_ZA.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_ZA.utf8/LC_MESSAGES
+#usr/lib/locale/en_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_ZA.utf8/LC_MONETARY
+#usr/lib/locale/en_ZA.utf8/LC_NAME
+#usr/lib/locale/en_ZA.utf8/LC_NUMERIC
+#usr/lib/locale/en_ZA.utf8/LC_PAPER
+#usr/lib/locale/en_ZA.utf8/LC_TELEPHONE
+#usr/lib/locale/en_ZA.utf8/LC_TIME
+#usr/lib/locale/en_ZA/LC_ADDRESS
+#usr/lib/locale/en_ZA/LC_COLLATE
+#usr/lib/locale/en_ZA/LC_CTYPE
+#usr/lib/locale/en_ZA/LC_IDENTIFICATION
+#usr/lib/locale/en_ZA/LC_MEASUREMENT
+#usr/lib/locale/en_ZA/LC_MESSAGES
+#usr/lib/locale/en_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_ZA/LC_MONETARY
+#usr/lib/locale/en_ZA/LC_NAME
+#usr/lib/locale/en_ZA/LC_NUMERIC
+#usr/lib/locale/en_ZA/LC_PAPER
+#usr/lib/locale/en_ZA/LC_TELEPHONE
+#usr/lib/locale/en_ZA/LC_TIME
+#usr/lib/locale/en_ZW
+#usr/lib/locale/en_ZW.utf8
+#usr/lib/locale/en_ZW.utf8/LC_ADDRESS
+#usr/lib/locale/en_ZW.utf8/LC_COLLATE
+#usr/lib/locale/en_ZW.utf8/LC_CTYPE
+#usr/lib/locale/en_ZW.utf8/LC_IDENTIFICATION
+#usr/lib/locale/en_ZW.utf8/LC_MEASUREMENT
+#usr/lib/locale/en_ZW.utf8/LC_MESSAGES
+#usr/lib/locale/en_ZW.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_ZW.utf8/LC_MONETARY
+#usr/lib/locale/en_ZW.utf8/LC_NAME
+#usr/lib/locale/en_ZW.utf8/LC_NUMERIC
+#usr/lib/locale/en_ZW.utf8/LC_PAPER
+#usr/lib/locale/en_ZW.utf8/LC_TELEPHONE
+#usr/lib/locale/en_ZW.utf8/LC_TIME
+#usr/lib/locale/en_ZW/LC_ADDRESS
+#usr/lib/locale/en_ZW/LC_COLLATE
+#usr/lib/locale/en_ZW/LC_CTYPE
+#usr/lib/locale/en_ZW/LC_IDENTIFICATION
+#usr/lib/locale/en_ZW/LC_MEASUREMENT
+#usr/lib/locale/en_ZW/LC_MESSAGES
+#usr/lib/locale/en_ZW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/en_ZW/LC_MONETARY
+#usr/lib/locale/en_ZW/LC_NAME
+#usr/lib/locale/en_ZW/LC_NUMERIC
+#usr/lib/locale/en_ZW/LC_PAPER
+#usr/lib/locale/en_ZW/LC_TELEPHONE
+#usr/lib/locale/en_ZW/LC_TIME
+#usr/lib/locale/es_AR
+#usr/lib/locale/es_AR.utf8
+#usr/lib/locale/es_AR.utf8/LC_ADDRESS
+#usr/lib/locale/es_AR.utf8/LC_COLLATE
+#usr/lib/locale/es_AR.utf8/LC_CTYPE
+#usr/lib/locale/es_AR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_AR.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_AR.utf8/LC_MESSAGES
+#usr/lib/locale/es_AR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_AR.utf8/LC_MONETARY
+#usr/lib/locale/es_AR.utf8/LC_NAME
+#usr/lib/locale/es_AR.utf8/LC_NUMERIC
+#usr/lib/locale/es_AR.utf8/LC_PAPER
+#usr/lib/locale/es_AR.utf8/LC_TELEPHONE
+#usr/lib/locale/es_AR.utf8/LC_TIME
+#usr/lib/locale/es_AR/LC_ADDRESS
+#usr/lib/locale/es_AR/LC_COLLATE
+#usr/lib/locale/es_AR/LC_CTYPE
+#usr/lib/locale/es_AR/LC_IDENTIFICATION
+#usr/lib/locale/es_AR/LC_MEASUREMENT
+#usr/lib/locale/es_AR/LC_MESSAGES
+#usr/lib/locale/es_AR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_AR/LC_MONETARY
+#usr/lib/locale/es_AR/LC_NAME
+#usr/lib/locale/es_AR/LC_NUMERIC
+#usr/lib/locale/es_AR/LC_PAPER
+#usr/lib/locale/es_AR/LC_TELEPHONE
+#usr/lib/locale/es_AR/LC_TIME
+#usr/lib/locale/es_BO
+#usr/lib/locale/es_BO.utf8
+#usr/lib/locale/es_BO.utf8/LC_ADDRESS
+#usr/lib/locale/es_BO.utf8/LC_COLLATE
+#usr/lib/locale/es_BO.utf8/LC_CTYPE
+#usr/lib/locale/es_BO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_BO.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_BO.utf8/LC_MESSAGES
+#usr/lib/locale/es_BO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_BO.utf8/LC_MONETARY
+#usr/lib/locale/es_BO.utf8/LC_NAME
+#usr/lib/locale/es_BO.utf8/LC_NUMERIC
+#usr/lib/locale/es_BO.utf8/LC_PAPER
+#usr/lib/locale/es_BO.utf8/LC_TELEPHONE
+#usr/lib/locale/es_BO.utf8/LC_TIME
+#usr/lib/locale/es_BO/LC_ADDRESS
+#usr/lib/locale/es_BO/LC_COLLATE
+#usr/lib/locale/es_BO/LC_CTYPE
+#usr/lib/locale/es_BO/LC_IDENTIFICATION
+#usr/lib/locale/es_BO/LC_MEASUREMENT
+#usr/lib/locale/es_BO/LC_MESSAGES
+#usr/lib/locale/es_BO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_BO/LC_MONETARY
+#usr/lib/locale/es_BO/LC_NAME
+#usr/lib/locale/es_BO/LC_NUMERIC
+#usr/lib/locale/es_BO/LC_PAPER
+#usr/lib/locale/es_BO/LC_TELEPHONE
+#usr/lib/locale/es_BO/LC_TIME
+#usr/lib/locale/es_CL
+#usr/lib/locale/es_CL.utf8
+#usr/lib/locale/es_CL.utf8/LC_ADDRESS
+#usr/lib/locale/es_CL.utf8/LC_COLLATE
+#usr/lib/locale/es_CL.utf8/LC_CTYPE
+#usr/lib/locale/es_CL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_CL.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_CL.utf8/LC_MESSAGES
+#usr/lib/locale/es_CL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CL.utf8/LC_MONETARY
+#usr/lib/locale/es_CL.utf8/LC_NAME
+#usr/lib/locale/es_CL.utf8/LC_NUMERIC
+#usr/lib/locale/es_CL.utf8/LC_PAPER
+#usr/lib/locale/es_CL.utf8/LC_TELEPHONE
+#usr/lib/locale/es_CL.utf8/LC_TIME
+#usr/lib/locale/es_CL/LC_ADDRESS
+#usr/lib/locale/es_CL/LC_COLLATE
+#usr/lib/locale/es_CL/LC_CTYPE
+#usr/lib/locale/es_CL/LC_IDENTIFICATION
+#usr/lib/locale/es_CL/LC_MEASUREMENT
+#usr/lib/locale/es_CL/LC_MESSAGES
+#usr/lib/locale/es_CL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CL/LC_MONETARY
+#usr/lib/locale/es_CL/LC_NAME
+#usr/lib/locale/es_CL/LC_NUMERIC
+#usr/lib/locale/es_CL/LC_PAPER
+#usr/lib/locale/es_CL/LC_TELEPHONE
+#usr/lib/locale/es_CL/LC_TIME
+#usr/lib/locale/es_CO
+#usr/lib/locale/es_CO.utf8
+#usr/lib/locale/es_CO.utf8/LC_ADDRESS
+#usr/lib/locale/es_CO.utf8/LC_COLLATE
+#usr/lib/locale/es_CO.utf8/LC_CTYPE
+#usr/lib/locale/es_CO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_CO.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_CO.utf8/LC_MESSAGES
+#usr/lib/locale/es_CO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CO.utf8/LC_MONETARY
+#usr/lib/locale/es_CO.utf8/LC_NAME
+#usr/lib/locale/es_CO.utf8/LC_NUMERIC
+#usr/lib/locale/es_CO.utf8/LC_PAPER
+#usr/lib/locale/es_CO.utf8/LC_TELEPHONE
+#usr/lib/locale/es_CO.utf8/LC_TIME
+#usr/lib/locale/es_CO/LC_ADDRESS
+#usr/lib/locale/es_CO/LC_COLLATE
+#usr/lib/locale/es_CO/LC_CTYPE
+#usr/lib/locale/es_CO/LC_IDENTIFICATION
+#usr/lib/locale/es_CO/LC_MEASUREMENT
+#usr/lib/locale/es_CO/LC_MESSAGES
+#usr/lib/locale/es_CO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CO/LC_MONETARY
+#usr/lib/locale/es_CO/LC_NAME
+#usr/lib/locale/es_CO/LC_NUMERIC
+#usr/lib/locale/es_CO/LC_PAPER
+#usr/lib/locale/es_CO/LC_TELEPHONE
+#usr/lib/locale/es_CO/LC_TIME
+#usr/lib/locale/es_CR
+#usr/lib/locale/es_CR.utf8
+#usr/lib/locale/es_CR.utf8/LC_ADDRESS
+#usr/lib/locale/es_CR.utf8/LC_COLLATE
+#usr/lib/locale/es_CR.utf8/LC_CTYPE
+#usr/lib/locale/es_CR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_CR.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_CR.utf8/LC_MESSAGES
+#usr/lib/locale/es_CR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CR.utf8/LC_MONETARY
+#usr/lib/locale/es_CR.utf8/LC_NAME
+#usr/lib/locale/es_CR.utf8/LC_NUMERIC
+#usr/lib/locale/es_CR.utf8/LC_PAPER
+#usr/lib/locale/es_CR.utf8/LC_TELEPHONE
+#usr/lib/locale/es_CR.utf8/LC_TIME
+#usr/lib/locale/es_CR/LC_ADDRESS
+#usr/lib/locale/es_CR/LC_COLLATE
+#usr/lib/locale/es_CR/LC_CTYPE
+#usr/lib/locale/es_CR/LC_IDENTIFICATION
+#usr/lib/locale/es_CR/LC_MEASUREMENT
+#usr/lib/locale/es_CR/LC_MESSAGES
+#usr/lib/locale/es_CR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_CR/LC_MONETARY
+#usr/lib/locale/es_CR/LC_NAME
+#usr/lib/locale/es_CR/LC_NUMERIC
+#usr/lib/locale/es_CR/LC_PAPER
+#usr/lib/locale/es_CR/LC_TELEPHONE
+#usr/lib/locale/es_CR/LC_TIME
+#usr/lib/locale/es_DO
+#usr/lib/locale/es_DO.utf8
+#usr/lib/locale/es_DO.utf8/LC_ADDRESS
+#usr/lib/locale/es_DO.utf8/LC_COLLATE
+#usr/lib/locale/es_DO.utf8/LC_CTYPE
+#usr/lib/locale/es_DO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_DO.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_DO.utf8/LC_MESSAGES
+#usr/lib/locale/es_DO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_DO.utf8/LC_MONETARY
+#usr/lib/locale/es_DO.utf8/LC_NAME
+#usr/lib/locale/es_DO.utf8/LC_NUMERIC
+#usr/lib/locale/es_DO.utf8/LC_PAPER
+#usr/lib/locale/es_DO.utf8/LC_TELEPHONE
+#usr/lib/locale/es_DO.utf8/LC_TIME
+#usr/lib/locale/es_DO/LC_ADDRESS
+#usr/lib/locale/es_DO/LC_COLLATE
+#usr/lib/locale/es_DO/LC_CTYPE
+#usr/lib/locale/es_DO/LC_IDENTIFICATION
+#usr/lib/locale/es_DO/LC_MEASUREMENT
+#usr/lib/locale/es_DO/LC_MESSAGES
+#usr/lib/locale/es_DO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_DO/LC_MONETARY
+#usr/lib/locale/es_DO/LC_NAME
+#usr/lib/locale/es_DO/LC_NUMERIC
+#usr/lib/locale/es_DO/LC_PAPER
+#usr/lib/locale/es_DO/LC_TELEPHONE
+#usr/lib/locale/es_DO/LC_TIME
+#usr/lib/locale/es_EC
+#usr/lib/locale/es_EC.utf8
+#usr/lib/locale/es_EC.utf8/LC_ADDRESS
+#usr/lib/locale/es_EC.utf8/LC_COLLATE
+#usr/lib/locale/es_EC.utf8/LC_CTYPE
+#usr/lib/locale/es_EC.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_EC.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_EC.utf8/LC_MESSAGES
+#usr/lib/locale/es_EC.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_EC.utf8/LC_MONETARY
+#usr/lib/locale/es_EC.utf8/LC_NAME
+#usr/lib/locale/es_EC.utf8/LC_NUMERIC
+#usr/lib/locale/es_EC.utf8/LC_PAPER
+#usr/lib/locale/es_EC.utf8/LC_TELEPHONE
+#usr/lib/locale/es_EC.utf8/LC_TIME
+#usr/lib/locale/es_EC/LC_ADDRESS
+#usr/lib/locale/es_EC/LC_COLLATE
+#usr/lib/locale/es_EC/LC_CTYPE
+#usr/lib/locale/es_EC/LC_IDENTIFICATION
+#usr/lib/locale/es_EC/LC_MEASUREMENT
+#usr/lib/locale/es_EC/LC_MESSAGES
+#usr/lib/locale/es_EC/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_EC/LC_MONETARY
+#usr/lib/locale/es_EC/LC_NAME
+#usr/lib/locale/es_EC/LC_NUMERIC
+#usr/lib/locale/es_EC/LC_PAPER
+#usr/lib/locale/es_EC/LC_TELEPHONE
+#usr/lib/locale/es_EC/LC_TIME
+#usr/lib/locale/es_ES
+#usr/lib/locale/es_ES.utf8
+#usr/lib/locale/es_ES.utf8/LC_ADDRESS
+#usr/lib/locale/es_ES.utf8/LC_COLLATE
+#usr/lib/locale/es_ES.utf8/LC_CTYPE
+#usr/lib/locale/es_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_ES.utf8/LC_MESSAGES
+#usr/lib/locale/es_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_ES.utf8/LC_MONETARY
+#usr/lib/locale/es_ES.utf8/LC_NAME
+#usr/lib/locale/es_ES.utf8/LC_NUMERIC
+#usr/lib/locale/es_ES.utf8/LC_PAPER
+#usr/lib/locale/es_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/es_ES.utf8/LC_TIME
+#usr/lib/locale/es_ES/LC_ADDRESS
+#usr/lib/locale/es_ES/LC_COLLATE
+#usr/lib/locale/es_ES/LC_CTYPE
+#usr/lib/locale/es_ES/LC_IDENTIFICATION
+#usr/lib/locale/es_ES/LC_MEASUREMENT
+#usr/lib/locale/es_ES/LC_MESSAGES
+#usr/lib/locale/es_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_ES/LC_MONETARY
+#usr/lib/locale/es_ES/LC_NAME
+#usr/lib/locale/es_ES/LC_NUMERIC
+#usr/lib/locale/es_ES/LC_PAPER
+#usr/lib/locale/es_ES/LC_TELEPHONE
+#usr/lib/locale/es_ES/LC_TIME
+#usr/lib/locale/es_ES@euro
+#usr/lib/locale/es_ES@euro/LC_ADDRESS
+#usr/lib/locale/es_ES@euro/LC_COLLATE
+#usr/lib/locale/es_ES@euro/LC_CTYPE
+#usr/lib/locale/es_ES@euro/LC_IDENTIFICATION
+#usr/lib/locale/es_ES@euro/LC_MEASUREMENT
+#usr/lib/locale/es_ES@euro/LC_MESSAGES
+#usr/lib/locale/es_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_ES@euro/LC_MONETARY
+#usr/lib/locale/es_ES@euro/LC_NAME
+#usr/lib/locale/es_ES@euro/LC_NUMERIC
+#usr/lib/locale/es_ES@euro/LC_PAPER
+#usr/lib/locale/es_ES@euro/LC_TELEPHONE
+#usr/lib/locale/es_ES@euro/LC_TIME
+#usr/lib/locale/es_GT
+#usr/lib/locale/es_GT.utf8
+#usr/lib/locale/es_GT.utf8/LC_ADDRESS
+#usr/lib/locale/es_GT.utf8/LC_COLLATE
+#usr/lib/locale/es_GT.utf8/LC_CTYPE
+#usr/lib/locale/es_GT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_GT.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_GT.utf8/LC_MESSAGES
+#usr/lib/locale/es_GT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_GT.utf8/LC_MONETARY
+#usr/lib/locale/es_GT.utf8/LC_NAME
+#usr/lib/locale/es_GT.utf8/LC_NUMERIC
+#usr/lib/locale/es_GT.utf8/LC_PAPER
+#usr/lib/locale/es_GT.utf8/LC_TELEPHONE
+#usr/lib/locale/es_GT.utf8/LC_TIME
+#usr/lib/locale/es_GT/LC_ADDRESS
+#usr/lib/locale/es_GT/LC_COLLATE
+#usr/lib/locale/es_GT/LC_CTYPE
+#usr/lib/locale/es_GT/LC_IDENTIFICATION
+#usr/lib/locale/es_GT/LC_MEASUREMENT
+#usr/lib/locale/es_GT/LC_MESSAGES
+#usr/lib/locale/es_GT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_GT/LC_MONETARY
+#usr/lib/locale/es_GT/LC_NAME
+#usr/lib/locale/es_GT/LC_NUMERIC
+#usr/lib/locale/es_GT/LC_PAPER
+#usr/lib/locale/es_GT/LC_TELEPHONE
+#usr/lib/locale/es_GT/LC_TIME
+#usr/lib/locale/es_HN
+#usr/lib/locale/es_HN.utf8
+#usr/lib/locale/es_HN.utf8/LC_ADDRESS
+#usr/lib/locale/es_HN.utf8/LC_COLLATE
+#usr/lib/locale/es_HN.utf8/LC_CTYPE
+#usr/lib/locale/es_HN.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_HN.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_HN.utf8/LC_MESSAGES
+#usr/lib/locale/es_HN.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_HN.utf8/LC_MONETARY
+#usr/lib/locale/es_HN.utf8/LC_NAME
+#usr/lib/locale/es_HN.utf8/LC_NUMERIC
+#usr/lib/locale/es_HN.utf8/LC_PAPER
+#usr/lib/locale/es_HN.utf8/LC_TELEPHONE
+#usr/lib/locale/es_HN.utf8/LC_TIME
+#usr/lib/locale/es_HN/LC_ADDRESS
+#usr/lib/locale/es_HN/LC_COLLATE
+#usr/lib/locale/es_HN/LC_CTYPE
+#usr/lib/locale/es_HN/LC_IDENTIFICATION
+#usr/lib/locale/es_HN/LC_MEASUREMENT
+#usr/lib/locale/es_HN/LC_MESSAGES
+#usr/lib/locale/es_HN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_HN/LC_MONETARY
+#usr/lib/locale/es_HN/LC_NAME
+#usr/lib/locale/es_HN/LC_NUMERIC
+#usr/lib/locale/es_HN/LC_PAPER
+#usr/lib/locale/es_HN/LC_TELEPHONE
+#usr/lib/locale/es_HN/LC_TIME
+#usr/lib/locale/es_MX
+#usr/lib/locale/es_MX.utf8
+#usr/lib/locale/es_MX.utf8/LC_ADDRESS
+#usr/lib/locale/es_MX.utf8/LC_COLLATE
+#usr/lib/locale/es_MX.utf8/LC_CTYPE
+#usr/lib/locale/es_MX.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_MX.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_MX.utf8/LC_MESSAGES
+#usr/lib/locale/es_MX.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_MX.utf8/LC_MONETARY
+#usr/lib/locale/es_MX.utf8/LC_NAME
+#usr/lib/locale/es_MX.utf8/LC_NUMERIC
+#usr/lib/locale/es_MX.utf8/LC_PAPER
+#usr/lib/locale/es_MX.utf8/LC_TELEPHONE
+#usr/lib/locale/es_MX.utf8/LC_TIME
+#usr/lib/locale/es_MX/LC_ADDRESS
+#usr/lib/locale/es_MX/LC_COLLATE
+#usr/lib/locale/es_MX/LC_CTYPE
+#usr/lib/locale/es_MX/LC_IDENTIFICATION
+#usr/lib/locale/es_MX/LC_MEASUREMENT
+#usr/lib/locale/es_MX/LC_MESSAGES
+#usr/lib/locale/es_MX/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_MX/LC_MONETARY
+#usr/lib/locale/es_MX/LC_NAME
+#usr/lib/locale/es_MX/LC_NUMERIC
+#usr/lib/locale/es_MX/LC_PAPER
+#usr/lib/locale/es_MX/LC_TELEPHONE
+#usr/lib/locale/es_MX/LC_TIME
+#usr/lib/locale/es_NI
+#usr/lib/locale/es_NI.utf8
+#usr/lib/locale/es_NI.utf8/LC_ADDRESS
+#usr/lib/locale/es_NI.utf8/LC_COLLATE
+#usr/lib/locale/es_NI.utf8/LC_CTYPE
+#usr/lib/locale/es_NI.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_NI.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_NI.utf8/LC_MESSAGES
+#usr/lib/locale/es_NI.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_NI.utf8/LC_MONETARY
+#usr/lib/locale/es_NI.utf8/LC_NAME
+#usr/lib/locale/es_NI.utf8/LC_NUMERIC
+#usr/lib/locale/es_NI.utf8/LC_PAPER
+#usr/lib/locale/es_NI.utf8/LC_TELEPHONE
+#usr/lib/locale/es_NI.utf8/LC_TIME
+#usr/lib/locale/es_NI/LC_ADDRESS
+#usr/lib/locale/es_NI/LC_COLLATE
+#usr/lib/locale/es_NI/LC_CTYPE
+#usr/lib/locale/es_NI/LC_IDENTIFICATION
+#usr/lib/locale/es_NI/LC_MEASUREMENT
+#usr/lib/locale/es_NI/LC_MESSAGES
+#usr/lib/locale/es_NI/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_NI/LC_MONETARY
+#usr/lib/locale/es_NI/LC_NAME
+#usr/lib/locale/es_NI/LC_NUMERIC
+#usr/lib/locale/es_NI/LC_PAPER
+#usr/lib/locale/es_NI/LC_TELEPHONE
+#usr/lib/locale/es_NI/LC_TIME
+#usr/lib/locale/es_PA
+#usr/lib/locale/es_PA.utf8
+#usr/lib/locale/es_PA.utf8/LC_ADDRESS
+#usr/lib/locale/es_PA.utf8/LC_COLLATE
+#usr/lib/locale/es_PA.utf8/LC_CTYPE
+#usr/lib/locale/es_PA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_PA.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_PA.utf8/LC_MESSAGES
+#usr/lib/locale/es_PA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PA.utf8/LC_MONETARY
+#usr/lib/locale/es_PA.utf8/LC_NAME
+#usr/lib/locale/es_PA.utf8/LC_NUMERIC
+#usr/lib/locale/es_PA.utf8/LC_PAPER
+#usr/lib/locale/es_PA.utf8/LC_TELEPHONE
+#usr/lib/locale/es_PA.utf8/LC_TIME
+#usr/lib/locale/es_PA/LC_ADDRESS
+#usr/lib/locale/es_PA/LC_COLLATE
+#usr/lib/locale/es_PA/LC_CTYPE
+#usr/lib/locale/es_PA/LC_IDENTIFICATION
+#usr/lib/locale/es_PA/LC_MEASUREMENT
+#usr/lib/locale/es_PA/LC_MESSAGES
+#usr/lib/locale/es_PA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PA/LC_MONETARY
+#usr/lib/locale/es_PA/LC_NAME
+#usr/lib/locale/es_PA/LC_NUMERIC
+#usr/lib/locale/es_PA/LC_PAPER
+#usr/lib/locale/es_PA/LC_TELEPHONE
+#usr/lib/locale/es_PA/LC_TIME
+#usr/lib/locale/es_PE
+#usr/lib/locale/es_PE.utf8
+#usr/lib/locale/es_PE.utf8/LC_ADDRESS
+#usr/lib/locale/es_PE.utf8/LC_COLLATE
+#usr/lib/locale/es_PE.utf8/LC_CTYPE
+#usr/lib/locale/es_PE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_PE.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_PE.utf8/LC_MESSAGES
+#usr/lib/locale/es_PE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PE.utf8/LC_MONETARY
+#usr/lib/locale/es_PE.utf8/LC_NAME
+#usr/lib/locale/es_PE.utf8/LC_NUMERIC
+#usr/lib/locale/es_PE.utf8/LC_PAPER
+#usr/lib/locale/es_PE.utf8/LC_TELEPHONE
+#usr/lib/locale/es_PE.utf8/LC_TIME
+#usr/lib/locale/es_PE/LC_ADDRESS
+#usr/lib/locale/es_PE/LC_COLLATE
+#usr/lib/locale/es_PE/LC_CTYPE
+#usr/lib/locale/es_PE/LC_IDENTIFICATION
+#usr/lib/locale/es_PE/LC_MEASUREMENT
+#usr/lib/locale/es_PE/LC_MESSAGES
+#usr/lib/locale/es_PE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PE/LC_MONETARY
+#usr/lib/locale/es_PE/LC_NAME
+#usr/lib/locale/es_PE/LC_NUMERIC
+#usr/lib/locale/es_PE/LC_PAPER
+#usr/lib/locale/es_PE/LC_TELEPHONE
+#usr/lib/locale/es_PE/LC_TIME
+#usr/lib/locale/es_PR
+#usr/lib/locale/es_PR.utf8
+#usr/lib/locale/es_PR.utf8/LC_ADDRESS
+#usr/lib/locale/es_PR.utf8/LC_COLLATE
+#usr/lib/locale/es_PR.utf8/LC_CTYPE
+#usr/lib/locale/es_PR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_PR.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_PR.utf8/LC_MESSAGES
+#usr/lib/locale/es_PR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PR.utf8/LC_MONETARY
+#usr/lib/locale/es_PR.utf8/LC_NAME
+#usr/lib/locale/es_PR.utf8/LC_NUMERIC
+#usr/lib/locale/es_PR.utf8/LC_PAPER
+#usr/lib/locale/es_PR.utf8/LC_TELEPHONE
+#usr/lib/locale/es_PR.utf8/LC_TIME
+#usr/lib/locale/es_PR/LC_ADDRESS
+#usr/lib/locale/es_PR/LC_COLLATE
+#usr/lib/locale/es_PR/LC_CTYPE
+#usr/lib/locale/es_PR/LC_IDENTIFICATION
+#usr/lib/locale/es_PR/LC_MEASUREMENT
+#usr/lib/locale/es_PR/LC_MESSAGES
+#usr/lib/locale/es_PR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PR/LC_MONETARY
+#usr/lib/locale/es_PR/LC_NAME
+#usr/lib/locale/es_PR/LC_NUMERIC
+#usr/lib/locale/es_PR/LC_PAPER
+#usr/lib/locale/es_PR/LC_TELEPHONE
+#usr/lib/locale/es_PR/LC_TIME
+#usr/lib/locale/es_PY
+#usr/lib/locale/es_PY.utf8
+#usr/lib/locale/es_PY.utf8/LC_ADDRESS
+#usr/lib/locale/es_PY.utf8/LC_COLLATE
+#usr/lib/locale/es_PY.utf8/LC_CTYPE
+#usr/lib/locale/es_PY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_PY.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_PY.utf8/LC_MESSAGES
+#usr/lib/locale/es_PY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PY.utf8/LC_MONETARY
+#usr/lib/locale/es_PY.utf8/LC_NAME
+#usr/lib/locale/es_PY.utf8/LC_NUMERIC
+#usr/lib/locale/es_PY.utf8/LC_PAPER
+#usr/lib/locale/es_PY.utf8/LC_TELEPHONE
+#usr/lib/locale/es_PY.utf8/LC_TIME
+#usr/lib/locale/es_PY/LC_ADDRESS
+#usr/lib/locale/es_PY/LC_COLLATE
+#usr/lib/locale/es_PY/LC_CTYPE
+#usr/lib/locale/es_PY/LC_IDENTIFICATION
+#usr/lib/locale/es_PY/LC_MEASUREMENT
+#usr/lib/locale/es_PY/LC_MESSAGES
+#usr/lib/locale/es_PY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_PY/LC_MONETARY
+#usr/lib/locale/es_PY/LC_NAME
+#usr/lib/locale/es_PY/LC_NUMERIC
+#usr/lib/locale/es_PY/LC_PAPER
+#usr/lib/locale/es_PY/LC_TELEPHONE
+#usr/lib/locale/es_PY/LC_TIME
+#usr/lib/locale/es_SV
+#usr/lib/locale/es_SV.utf8
+#usr/lib/locale/es_SV.utf8/LC_ADDRESS
+#usr/lib/locale/es_SV.utf8/LC_COLLATE
+#usr/lib/locale/es_SV.utf8/LC_CTYPE
+#usr/lib/locale/es_SV.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_SV.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_SV.utf8/LC_MESSAGES
+#usr/lib/locale/es_SV.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_SV.utf8/LC_MONETARY
+#usr/lib/locale/es_SV.utf8/LC_NAME
+#usr/lib/locale/es_SV.utf8/LC_NUMERIC
+#usr/lib/locale/es_SV.utf8/LC_PAPER
+#usr/lib/locale/es_SV.utf8/LC_TELEPHONE
+#usr/lib/locale/es_SV.utf8/LC_TIME
+#usr/lib/locale/es_SV/LC_ADDRESS
+#usr/lib/locale/es_SV/LC_COLLATE
+#usr/lib/locale/es_SV/LC_CTYPE
+#usr/lib/locale/es_SV/LC_IDENTIFICATION
+#usr/lib/locale/es_SV/LC_MEASUREMENT
+#usr/lib/locale/es_SV/LC_MESSAGES
+#usr/lib/locale/es_SV/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_SV/LC_MONETARY
+#usr/lib/locale/es_SV/LC_NAME
+#usr/lib/locale/es_SV/LC_NUMERIC
+#usr/lib/locale/es_SV/LC_PAPER
+#usr/lib/locale/es_SV/LC_TELEPHONE
+#usr/lib/locale/es_SV/LC_TIME
+#usr/lib/locale/es_US
+#usr/lib/locale/es_US.utf8
+#usr/lib/locale/es_US.utf8/LC_ADDRESS
+#usr/lib/locale/es_US.utf8/LC_COLLATE
+#usr/lib/locale/es_US.utf8/LC_CTYPE
+#usr/lib/locale/es_US.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_US.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_US.utf8/LC_MESSAGES
+#usr/lib/locale/es_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_US.utf8/LC_MONETARY
+#usr/lib/locale/es_US.utf8/LC_NAME
+#usr/lib/locale/es_US.utf8/LC_NUMERIC
+#usr/lib/locale/es_US.utf8/LC_PAPER
+#usr/lib/locale/es_US.utf8/LC_TELEPHONE
+#usr/lib/locale/es_US.utf8/LC_TIME
+#usr/lib/locale/es_US/LC_ADDRESS
+#usr/lib/locale/es_US/LC_COLLATE
+#usr/lib/locale/es_US/LC_CTYPE
+#usr/lib/locale/es_US/LC_IDENTIFICATION
+#usr/lib/locale/es_US/LC_MEASUREMENT
+#usr/lib/locale/es_US/LC_MESSAGES
+#usr/lib/locale/es_US/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_US/LC_MONETARY
+#usr/lib/locale/es_US/LC_NAME
+#usr/lib/locale/es_US/LC_NUMERIC
+#usr/lib/locale/es_US/LC_PAPER
+#usr/lib/locale/es_US/LC_TELEPHONE
+#usr/lib/locale/es_US/LC_TIME
+#usr/lib/locale/es_UY
+#usr/lib/locale/es_UY.utf8
+#usr/lib/locale/es_UY.utf8/LC_ADDRESS
+#usr/lib/locale/es_UY.utf8/LC_COLLATE
+#usr/lib/locale/es_UY.utf8/LC_CTYPE
+#usr/lib/locale/es_UY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_UY.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_UY.utf8/LC_MESSAGES
+#usr/lib/locale/es_UY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_UY.utf8/LC_MONETARY
+#usr/lib/locale/es_UY.utf8/LC_NAME
+#usr/lib/locale/es_UY.utf8/LC_NUMERIC
+#usr/lib/locale/es_UY.utf8/LC_PAPER
+#usr/lib/locale/es_UY.utf8/LC_TELEPHONE
+#usr/lib/locale/es_UY.utf8/LC_TIME
+#usr/lib/locale/es_UY/LC_ADDRESS
+#usr/lib/locale/es_UY/LC_COLLATE
+#usr/lib/locale/es_UY/LC_CTYPE
+#usr/lib/locale/es_UY/LC_IDENTIFICATION
+#usr/lib/locale/es_UY/LC_MEASUREMENT
+#usr/lib/locale/es_UY/LC_MESSAGES
+#usr/lib/locale/es_UY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_UY/LC_MONETARY
+#usr/lib/locale/es_UY/LC_NAME
+#usr/lib/locale/es_UY/LC_NUMERIC
+#usr/lib/locale/es_UY/LC_PAPER
+#usr/lib/locale/es_UY/LC_TELEPHONE
+#usr/lib/locale/es_UY/LC_TIME
+#usr/lib/locale/es_VE
+#usr/lib/locale/es_VE.utf8
+#usr/lib/locale/es_VE.utf8/LC_ADDRESS
+#usr/lib/locale/es_VE.utf8/LC_COLLATE
+#usr/lib/locale/es_VE.utf8/LC_CTYPE
+#usr/lib/locale/es_VE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/es_VE.utf8/LC_MEASUREMENT
+#usr/lib/locale/es_VE.utf8/LC_MESSAGES
+#usr/lib/locale/es_VE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_VE.utf8/LC_MONETARY
+#usr/lib/locale/es_VE.utf8/LC_NAME
+#usr/lib/locale/es_VE.utf8/LC_NUMERIC
+#usr/lib/locale/es_VE.utf8/LC_PAPER
+#usr/lib/locale/es_VE.utf8/LC_TELEPHONE
+#usr/lib/locale/es_VE.utf8/LC_TIME
+#usr/lib/locale/es_VE/LC_ADDRESS
+#usr/lib/locale/es_VE/LC_COLLATE
+#usr/lib/locale/es_VE/LC_CTYPE
+#usr/lib/locale/es_VE/LC_IDENTIFICATION
+#usr/lib/locale/es_VE/LC_MEASUREMENT
+#usr/lib/locale/es_VE/LC_MESSAGES
+#usr/lib/locale/es_VE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/es_VE/LC_MONETARY
+#usr/lib/locale/es_VE/LC_NAME
+#usr/lib/locale/es_VE/LC_NUMERIC
+#usr/lib/locale/es_VE/LC_PAPER
+#usr/lib/locale/es_VE/LC_TELEPHONE
+#usr/lib/locale/es_VE/LC_TIME
+#usr/lib/locale/et_EE
+#usr/lib/locale/et_EE.iso885915
+#usr/lib/locale/et_EE.iso885915/LC_ADDRESS
+#usr/lib/locale/et_EE.iso885915/LC_COLLATE
+#usr/lib/locale/et_EE.iso885915/LC_CTYPE
+#usr/lib/locale/et_EE.iso885915/LC_IDENTIFICATION
+#usr/lib/locale/et_EE.iso885915/LC_MEASUREMENT
+#usr/lib/locale/et_EE.iso885915/LC_MESSAGES
+#usr/lib/locale/et_EE.iso885915/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/et_EE.iso885915/LC_MONETARY
+#usr/lib/locale/et_EE.iso885915/LC_NAME
+#usr/lib/locale/et_EE.iso885915/LC_NUMERIC
+#usr/lib/locale/et_EE.iso885915/LC_PAPER
+#usr/lib/locale/et_EE.iso885915/LC_TELEPHONE
+#usr/lib/locale/et_EE.iso885915/LC_TIME
+#usr/lib/locale/et_EE.utf8
+#usr/lib/locale/et_EE.utf8/LC_ADDRESS
+#usr/lib/locale/et_EE.utf8/LC_COLLATE
+#usr/lib/locale/et_EE.utf8/LC_CTYPE
+#usr/lib/locale/et_EE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/et_EE.utf8/LC_MEASUREMENT
+#usr/lib/locale/et_EE.utf8/LC_MESSAGES
+#usr/lib/locale/et_EE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/et_EE.utf8/LC_MONETARY
+#usr/lib/locale/et_EE.utf8/LC_NAME
+#usr/lib/locale/et_EE.utf8/LC_NUMERIC
+#usr/lib/locale/et_EE.utf8/LC_PAPER
+#usr/lib/locale/et_EE.utf8/LC_TELEPHONE
+#usr/lib/locale/et_EE.utf8/LC_TIME
+#usr/lib/locale/et_EE/LC_ADDRESS
+#usr/lib/locale/et_EE/LC_COLLATE
+#usr/lib/locale/et_EE/LC_CTYPE
+#usr/lib/locale/et_EE/LC_IDENTIFICATION
+#usr/lib/locale/et_EE/LC_MEASUREMENT
+#usr/lib/locale/et_EE/LC_MESSAGES
+#usr/lib/locale/et_EE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/et_EE/LC_MONETARY
+#usr/lib/locale/et_EE/LC_NAME
+#usr/lib/locale/et_EE/LC_NUMERIC
+#usr/lib/locale/et_EE/LC_PAPER
+#usr/lib/locale/et_EE/LC_TELEPHONE
+#usr/lib/locale/et_EE/LC_TIME
+#usr/lib/locale/eu_ES
+#usr/lib/locale/eu_ES.utf8
+#usr/lib/locale/eu_ES.utf8/LC_ADDRESS
+#usr/lib/locale/eu_ES.utf8/LC_COLLATE
+#usr/lib/locale/eu_ES.utf8/LC_CTYPE
+#usr/lib/locale/eu_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/eu_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/eu_ES.utf8/LC_MESSAGES
+#usr/lib/locale/eu_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/eu_ES.utf8/LC_MONETARY
+#usr/lib/locale/eu_ES.utf8/LC_NAME
+#usr/lib/locale/eu_ES.utf8/LC_NUMERIC
+#usr/lib/locale/eu_ES.utf8/LC_PAPER
+#usr/lib/locale/eu_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/eu_ES.utf8/LC_TIME
+#usr/lib/locale/eu_ES/LC_ADDRESS
+#usr/lib/locale/eu_ES/LC_COLLATE
+#usr/lib/locale/eu_ES/LC_CTYPE
+#usr/lib/locale/eu_ES/LC_IDENTIFICATION
+#usr/lib/locale/eu_ES/LC_MEASUREMENT
+#usr/lib/locale/eu_ES/LC_MESSAGES
+#usr/lib/locale/eu_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/eu_ES/LC_MONETARY
+#usr/lib/locale/eu_ES/LC_NAME
+#usr/lib/locale/eu_ES/LC_NUMERIC
+#usr/lib/locale/eu_ES/LC_PAPER
+#usr/lib/locale/eu_ES/LC_TELEPHONE
+#usr/lib/locale/eu_ES/LC_TIME
+#usr/lib/locale/eu_ES@euro
+#usr/lib/locale/eu_ES@euro/LC_ADDRESS
+#usr/lib/locale/eu_ES@euro/LC_COLLATE
+#usr/lib/locale/eu_ES@euro/LC_CTYPE
+#usr/lib/locale/eu_ES@euro/LC_IDENTIFICATION
+#usr/lib/locale/eu_ES@euro/LC_MEASUREMENT
+#usr/lib/locale/eu_ES@euro/LC_MESSAGES
+#usr/lib/locale/eu_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/eu_ES@euro/LC_MONETARY
+#usr/lib/locale/eu_ES@euro/LC_NAME
+#usr/lib/locale/eu_ES@euro/LC_NUMERIC
+#usr/lib/locale/eu_ES@euro/LC_PAPER
+#usr/lib/locale/eu_ES@euro/LC_TELEPHONE
+#usr/lib/locale/eu_ES@euro/LC_TIME
+#usr/lib/locale/fa_IR
+#usr/lib/locale/fa_IR/LC_ADDRESS
+#usr/lib/locale/fa_IR/LC_COLLATE
+#usr/lib/locale/fa_IR/LC_CTYPE
+#usr/lib/locale/fa_IR/LC_IDENTIFICATION
+#usr/lib/locale/fa_IR/LC_MEASUREMENT
+#usr/lib/locale/fa_IR/LC_MESSAGES
+#usr/lib/locale/fa_IR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fa_IR/LC_MONETARY
+#usr/lib/locale/fa_IR/LC_NAME
+#usr/lib/locale/fa_IR/LC_NUMERIC
+#usr/lib/locale/fa_IR/LC_PAPER
+#usr/lib/locale/fa_IR/LC_TELEPHONE
+#usr/lib/locale/fa_IR/LC_TIME
+#usr/lib/locale/fi_FI
+#usr/lib/locale/fi_FI.utf8
+#usr/lib/locale/fi_FI.utf8/LC_ADDRESS
+#usr/lib/locale/fi_FI.utf8/LC_COLLATE
+#usr/lib/locale/fi_FI.utf8/LC_CTYPE
+#usr/lib/locale/fi_FI.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fi_FI.utf8/LC_MEASUREMENT
+#usr/lib/locale/fi_FI.utf8/LC_MESSAGES
+#usr/lib/locale/fi_FI.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fi_FI.utf8/LC_MONETARY
+#usr/lib/locale/fi_FI.utf8/LC_NAME
+#usr/lib/locale/fi_FI.utf8/LC_NUMERIC
+#usr/lib/locale/fi_FI.utf8/LC_PAPER
+#usr/lib/locale/fi_FI.utf8/LC_TELEPHONE
+#usr/lib/locale/fi_FI.utf8/LC_TIME
+#usr/lib/locale/fi_FI/LC_ADDRESS
+#usr/lib/locale/fi_FI/LC_COLLATE
+#usr/lib/locale/fi_FI/LC_CTYPE
+#usr/lib/locale/fi_FI/LC_IDENTIFICATION
+#usr/lib/locale/fi_FI/LC_MEASUREMENT
+#usr/lib/locale/fi_FI/LC_MESSAGES
+#usr/lib/locale/fi_FI/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fi_FI/LC_MONETARY
+#usr/lib/locale/fi_FI/LC_NAME
+#usr/lib/locale/fi_FI/LC_NUMERIC
+#usr/lib/locale/fi_FI/LC_PAPER
+#usr/lib/locale/fi_FI/LC_TELEPHONE
+#usr/lib/locale/fi_FI/LC_TIME
+#usr/lib/locale/fi_FI@euro
+#usr/lib/locale/fi_FI@euro/LC_ADDRESS
+#usr/lib/locale/fi_FI@euro/LC_COLLATE
+#usr/lib/locale/fi_FI@euro/LC_CTYPE
+#usr/lib/locale/fi_FI@euro/LC_IDENTIFICATION
+#usr/lib/locale/fi_FI@euro/LC_MEASUREMENT
+#usr/lib/locale/fi_FI@euro/LC_MESSAGES
+#usr/lib/locale/fi_FI@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fi_FI@euro/LC_MONETARY
+#usr/lib/locale/fi_FI@euro/LC_NAME
+#usr/lib/locale/fi_FI@euro/LC_NUMERIC
+#usr/lib/locale/fi_FI@euro/LC_PAPER
+#usr/lib/locale/fi_FI@euro/LC_TELEPHONE
+#usr/lib/locale/fi_FI@euro/LC_TIME
+#usr/lib/locale/fil_PH
+#usr/lib/locale/fil_PH/LC_ADDRESS
+#usr/lib/locale/fil_PH/LC_COLLATE
+#usr/lib/locale/fil_PH/LC_CTYPE
+#usr/lib/locale/fil_PH/LC_IDENTIFICATION
+#usr/lib/locale/fil_PH/LC_MEASUREMENT
+#usr/lib/locale/fil_PH/LC_MESSAGES
+#usr/lib/locale/fil_PH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fil_PH/LC_MONETARY
+#usr/lib/locale/fil_PH/LC_NAME
+#usr/lib/locale/fil_PH/LC_NUMERIC
+#usr/lib/locale/fil_PH/LC_PAPER
+#usr/lib/locale/fil_PH/LC_TELEPHONE
+#usr/lib/locale/fil_PH/LC_TIME
+#usr/lib/locale/fo_FO
+#usr/lib/locale/fo_FO.utf8
+#usr/lib/locale/fo_FO.utf8/LC_ADDRESS
+#usr/lib/locale/fo_FO.utf8/LC_COLLATE
+#usr/lib/locale/fo_FO.utf8/LC_CTYPE
+#usr/lib/locale/fo_FO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fo_FO.utf8/LC_MEASUREMENT
+#usr/lib/locale/fo_FO.utf8/LC_MESSAGES
+#usr/lib/locale/fo_FO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fo_FO.utf8/LC_MONETARY
+#usr/lib/locale/fo_FO.utf8/LC_NAME
+#usr/lib/locale/fo_FO.utf8/LC_NUMERIC
+#usr/lib/locale/fo_FO.utf8/LC_PAPER
+#usr/lib/locale/fo_FO.utf8/LC_TELEPHONE
+#usr/lib/locale/fo_FO.utf8/LC_TIME
+#usr/lib/locale/fo_FO/LC_ADDRESS
+#usr/lib/locale/fo_FO/LC_COLLATE
+#usr/lib/locale/fo_FO/LC_CTYPE
+#usr/lib/locale/fo_FO/LC_IDENTIFICATION
+#usr/lib/locale/fo_FO/LC_MEASUREMENT
+#usr/lib/locale/fo_FO/LC_MESSAGES
+#usr/lib/locale/fo_FO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fo_FO/LC_MONETARY
+#usr/lib/locale/fo_FO/LC_NAME
+#usr/lib/locale/fo_FO/LC_NUMERIC
+#usr/lib/locale/fo_FO/LC_PAPER
+#usr/lib/locale/fo_FO/LC_TELEPHONE
+#usr/lib/locale/fo_FO/LC_TIME
+#usr/lib/locale/fr_BE
+#usr/lib/locale/fr_BE.utf8
+#usr/lib/locale/fr_BE.utf8/LC_ADDRESS
+#usr/lib/locale/fr_BE.utf8/LC_COLLATE
+#usr/lib/locale/fr_BE.utf8/LC_CTYPE
+#usr/lib/locale/fr_BE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fr_BE.utf8/LC_MEASUREMENT
+#usr/lib/locale/fr_BE.utf8/LC_MESSAGES
+#usr/lib/locale/fr_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_BE.utf8/LC_MONETARY
+#usr/lib/locale/fr_BE.utf8/LC_NAME
+#usr/lib/locale/fr_BE.utf8/LC_NUMERIC
+#usr/lib/locale/fr_BE.utf8/LC_PAPER
+#usr/lib/locale/fr_BE.utf8/LC_TELEPHONE
+#usr/lib/locale/fr_BE.utf8/LC_TIME
+#usr/lib/locale/fr_BE/LC_ADDRESS
+#usr/lib/locale/fr_BE/LC_COLLATE
+#usr/lib/locale/fr_BE/LC_CTYPE
+#usr/lib/locale/fr_BE/LC_IDENTIFICATION
+#usr/lib/locale/fr_BE/LC_MEASUREMENT
+#usr/lib/locale/fr_BE/LC_MESSAGES
+#usr/lib/locale/fr_BE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_BE/LC_MONETARY
+#usr/lib/locale/fr_BE/LC_NAME
+#usr/lib/locale/fr_BE/LC_NUMERIC
+#usr/lib/locale/fr_BE/LC_PAPER
+#usr/lib/locale/fr_BE/LC_TELEPHONE
+#usr/lib/locale/fr_BE/LC_TIME
+#usr/lib/locale/fr_BE@euro
+#usr/lib/locale/fr_BE@euro/LC_ADDRESS
+#usr/lib/locale/fr_BE@euro/LC_COLLATE
+#usr/lib/locale/fr_BE@euro/LC_CTYPE
+#usr/lib/locale/fr_BE@euro/LC_IDENTIFICATION
+#usr/lib/locale/fr_BE@euro/LC_MEASUREMENT
+#usr/lib/locale/fr_BE@euro/LC_MESSAGES
+#usr/lib/locale/fr_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_BE@euro/LC_MONETARY
+#usr/lib/locale/fr_BE@euro/LC_NAME
+#usr/lib/locale/fr_BE@euro/LC_NUMERIC
+#usr/lib/locale/fr_BE@euro/LC_PAPER
+#usr/lib/locale/fr_BE@euro/LC_TELEPHONE
+#usr/lib/locale/fr_BE@euro/LC_TIME
+#usr/lib/locale/fr_CA
+#usr/lib/locale/fr_CA.utf8
+#usr/lib/locale/fr_CA.utf8/LC_ADDRESS
+#usr/lib/locale/fr_CA.utf8/LC_COLLATE
+#usr/lib/locale/fr_CA.utf8/LC_CTYPE
+#usr/lib/locale/fr_CA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fr_CA.utf8/LC_MEASUREMENT
+#usr/lib/locale/fr_CA.utf8/LC_MESSAGES
+#usr/lib/locale/fr_CA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_CA.utf8/LC_MONETARY
+#usr/lib/locale/fr_CA.utf8/LC_NAME
+#usr/lib/locale/fr_CA.utf8/LC_NUMERIC
+#usr/lib/locale/fr_CA.utf8/LC_PAPER
+#usr/lib/locale/fr_CA.utf8/LC_TELEPHONE
+#usr/lib/locale/fr_CA.utf8/LC_TIME
+#usr/lib/locale/fr_CA/LC_ADDRESS
+#usr/lib/locale/fr_CA/LC_COLLATE
+#usr/lib/locale/fr_CA/LC_CTYPE
+#usr/lib/locale/fr_CA/LC_IDENTIFICATION
+#usr/lib/locale/fr_CA/LC_MEASUREMENT
+#usr/lib/locale/fr_CA/LC_MESSAGES
+#usr/lib/locale/fr_CA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_CA/LC_MONETARY
+#usr/lib/locale/fr_CA/LC_NAME
+#usr/lib/locale/fr_CA/LC_NUMERIC
+#usr/lib/locale/fr_CA/LC_PAPER
+#usr/lib/locale/fr_CA/LC_TELEPHONE
+#usr/lib/locale/fr_CA/LC_TIME
+#usr/lib/locale/fr_CH
+#usr/lib/locale/fr_CH.utf8
+#usr/lib/locale/fr_CH.utf8/LC_ADDRESS
+#usr/lib/locale/fr_CH.utf8/LC_COLLATE
+#usr/lib/locale/fr_CH.utf8/LC_CTYPE
+#usr/lib/locale/fr_CH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fr_CH.utf8/LC_MEASUREMENT
+#usr/lib/locale/fr_CH.utf8/LC_MESSAGES
+#usr/lib/locale/fr_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_CH.utf8/LC_MONETARY
+#usr/lib/locale/fr_CH.utf8/LC_NAME
+#usr/lib/locale/fr_CH.utf8/LC_NUMERIC
+#usr/lib/locale/fr_CH.utf8/LC_PAPER
+#usr/lib/locale/fr_CH.utf8/LC_TELEPHONE
+#usr/lib/locale/fr_CH.utf8/LC_TIME
+#usr/lib/locale/fr_CH/LC_ADDRESS
+#usr/lib/locale/fr_CH/LC_COLLATE
+#usr/lib/locale/fr_CH/LC_CTYPE
+#usr/lib/locale/fr_CH/LC_IDENTIFICATION
+#usr/lib/locale/fr_CH/LC_MEASUREMENT
+#usr/lib/locale/fr_CH/LC_MESSAGES
+#usr/lib/locale/fr_CH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_CH/LC_MONETARY
+#usr/lib/locale/fr_CH/LC_NAME
+#usr/lib/locale/fr_CH/LC_NUMERIC
+#usr/lib/locale/fr_CH/LC_PAPER
+#usr/lib/locale/fr_CH/LC_TELEPHONE
+#usr/lib/locale/fr_CH/LC_TIME
+#usr/lib/locale/fr_FR
+#usr/lib/locale/fr_FR.utf8
+#usr/lib/locale/fr_FR.utf8/LC_ADDRESS
+#usr/lib/locale/fr_FR.utf8/LC_COLLATE
+#usr/lib/locale/fr_FR.utf8/LC_CTYPE
+#usr/lib/locale/fr_FR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fr_FR.utf8/LC_MEASUREMENT
+#usr/lib/locale/fr_FR.utf8/LC_MESSAGES
+#usr/lib/locale/fr_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_FR.utf8/LC_MONETARY
+#usr/lib/locale/fr_FR.utf8/LC_NAME
+#usr/lib/locale/fr_FR.utf8/LC_NUMERIC
+#usr/lib/locale/fr_FR.utf8/LC_PAPER
+#usr/lib/locale/fr_FR.utf8/LC_TELEPHONE
+#usr/lib/locale/fr_FR.utf8/LC_TIME
+#usr/lib/locale/fr_FR/LC_ADDRESS
+#usr/lib/locale/fr_FR/LC_COLLATE
+#usr/lib/locale/fr_FR/LC_CTYPE
+#usr/lib/locale/fr_FR/LC_IDENTIFICATION
+#usr/lib/locale/fr_FR/LC_MEASUREMENT
+#usr/lib/locale/fr_FR/LC_MESSAGES
+#usr/lib/locale/fr_FR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_FR/LC_MONETARY
+#usr/lib/locale/fr_FR/LC_NAME
+#usr/lib/locale/fr_FR/LC_NUMERIC
+#usr/lib/locale/fr_FR/LC_PAPER
+#usr/lib/locale/fr_FR/LC_TELEPHONE
+#usr/lib/locale/fr_FR/LC_TIME
+#usr/lib/locale/fr_FR@euro
+#usr/lib/locale/fr_FR@euro/LC_ADDRESS
+#usr/lib/locale/fr_FR@euro/LC_COLLATE
+#usr/lib/locale/fr_FR@euro/LC_CTYPE
+#usr/lib/locale/fr_FR@euro/LC_IDENTIFICATION
+#usr/lib/locale/fr_FR@euro/LC_MEASUREMENT
+#usr/lib/locale/fr_FR@euro/LC_MESSAGES
+#usr/lib/locale/fr_FR@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_FR@euro/LC_MONETARY
+#usr/lib/locale/fr_FR@euro/LC_NAME
+#usr/lib/locale/fr_FR@euro/LC_NUMERIC
+#usr/lib/locale/fr_FR@euro/LC_PAPER
+#usr/lib/locale/fr_FR@euro/LC_TELEPHONE
+#usr/lib/locale/fr_FR@euro/LC_TIME
+#usr/lib/locale/fr_LU
+#usr/lib/locale/fr_LU.utf8
+#usr/lib/locale/fr_LU.utf8/LC_ADDRESS
+#usr/lib/locale/fr_LU.utf8/LC_COLLATE
+#usr/lib/locale/fr_LU.utf8/LC_CTYPE
+#usr/lib/locale/fr_LU.utf8/LC_IDENTIFICATION
+#usr/lib/locale/fr_LU.utf8/LC_MEASUREMENT
+#usr/lib/locale/fr_LU.utf8/LC_MESSAGES
+#usr/lib/locale/fr_LU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_LU.utf8/LC_MONETARY
+#usr/lib/locale/fr_LU.utf8/LC_NAME
+#usr/lib/locale/fr_LU.utf8/LC_NUMERIC
+#usr/lib/locale/fr_LU.utf8/LC_PAPER
+#usr/lib/locale/fr_LU.utf8/LC_TELEPHONE
+#usr/lib/locale/fr_LU.utf8/LC_TIME
+#usr/lib/locale/fr_LU/LC_ADDRESS
+#usr/lib/locale/fr_LU/LC_COLLATE
+#usr/lib/locale/fr_LU/LC_CTYPE
+#usr/lib/locale/fr_LU/LC_IDENTIFICATION
+#usr/lib/locale/fr_LU/LC_MEASUREMENT
+#usr/lib/locale/fr_LU/LC_MESSAGES
+#usr/lib/locale/fr_LU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_LU/LC_MONETARY
+#usr/lib/locale/fr_LU/LC_NAME
+#usr/lib/locale/fr_LU/LC_NUMERIC
+#usr/lib/locale/fr_LU/LC_PAPER
+#usr/lib/locale/fr_LU/LC_TELEPHONE
+#usr/lib/locale/fr_LU/LC_TIME
+#usr/lib/locale/fr_LU@euro
+#usr/lib/locale/fr_LU@euro/LC_ADDRESS
+#usr/lib/locale/fr_LU@euro/LC_COLLATE
+#usr/lib/locale/fr_LU@euro/LC_CTYPE
+#usr/lib/locale/fr_LU@euro/LC_IDENTIFICATION
+#usr/lib/locale/fr_LU@euro/LC_MEASUREMENT
+#usr/lib/locale/fr_LU@euro/LC_MESSAGES
+#usr/lib/locale/fr_LU@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fr_LU@euro/LC_MONETARY
+#usr/lib/locale/fr_LU@euro/LC_NAME
+#usr/lib/locale/fr_LU@euro/LC_NUMERIC
+#usr/lib/locale/fr_LU@euro/LC_PAPER
+#usr/lib/locale/fr_LU@euro/LC_TELEPHONE
+#usr/lib/locale/fr_LU@euro/LC_TIME
+#usr/lib/locale/fur_IT
+#usr/lib/locale/fur_IT/LC_ADDRESS
+#usr/lib/locale/fur_IT/LC_COLLATE
+#usr/lib/locale/fur_IT/LC_CTYPE
+#usr/lib/locale/fur_IT/LC_IDENTIFICATION
+#usr/lib/locale/fur_IT/LC_MEASUREMENT
+#usr/lib/locale/fur_IT/LC_MESSAGES
+#usr/lib/locale/fur_IT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fur_IT/LC_MONETARY
+#usr/lib/locale/fur_IT/LC_NAME
+#usr/lib/locale/fur_IT/LC_NUMERIC
+#usr/lib/locale/fur_IT/LC_PAPER
+#usr/lib/locale/fur_IT/LC_TELEPHONE
+#usr/lib/locale/fur_IT/LC_TIME
+#usr/lib/locale/fy_DE
+#usr/lib/locale/fy_DE/LC_ADDRESS
+#usr/lib/locale/fy_DE/LC_COLLATE
+#usr/lib/locale/fy_DE/LC_CTYPE
+#usr/lib/locale/fy_DE/LC_IDENTIFICATION
+#usr/lib/locale/fy_DE/LC_MEASUREMENT
+#usr/lib/locale/fy_DE/LC_MESSAGES
+#usr/lib/locale/fy_DE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fy_DE/LC_MONETARY
+#usr/lib/locale/fy_DE/LC_NAME
+#usr/lib/locale/fy_DE/LC_NUMERIC
+#usr/lib/locale/fy_DE/LC_PAPER
+#usr/lib/locale/fy_DE/LC_TELEPHONE
+#usr/lib/locale/fy_DE/LC_TIME
+#usr/lib/locale/fy_NL
+#usr/lib/locale/fy_NL/LC_ADDRESS
+#usr/lib/locale/fy_NL/LC_COLLATE
+#usr/lib/locale/fy_NL/LC_CTYPE
+#usr/lib/locale/fy_NL/LC_IDENTIFICATION
+#usr/lib/locale/fy_NL/LC_MEASUREMENT
+#usr/lib/locale/fy_NL/LC_MESSAGES
+#usr/lib/locale/fy_NL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/fy_NL/LC_MONETARY
+#usr/lib/locale/fy_NL/LC_NAME
+#usr/lib/locale/fy_NL/LC_NUMERIC
+#usr/lib/locale/fy_NL/LC_PAPER
+#usr/lib/locale/fy_NL/LC_TELEPHONE
+#usr/lib/locale/fy_NL/LC_TIME
+#usr/lib/locale/ga_IE
+#usr/lib/locale/ga_IE.utf8
+#usr/lib/locale/ga_IE.utf8/LC_ADDRESS
+#usr/lib/locale/ga_IE.utf8/LC_COLLATE
+#usr/lib/locale/ga_IE.utf8/LC_CTYPE
+#usr/lib/locale/ga_IE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ga_IE.utf8/LC_MEASUREMENT
+#usr/lib/locale/ga_IE.utf8/LC_MESSAGES
+#usr/lib/locale/ga_IE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ga_IE.utf8/LC_MONETARY
+#usr/lib/locale/ga_IE.utf8/LC_NAME
+#usr/lib/locale/ga_IE.utf8/LC_NUMERIC
+#usr/lib/locale/ga_IE.utf8/LC_PAPER
+#usr/lib/locale/ga_IE.utf8/LC_TELEPHONE
+#usr/lib/locale/ga_IE.utf8/LC_TIME
+#usr/lib/locale/ga_IE/LC_ADDRESS
+#usr/lib/locale/ga_IE/LC_COLLATE
+#usr/lib/locale/ga_IE/LC_CTYPE
+#usr/lib/locale/ga_IE/LC_IDENTIFICATION
+#usr/lib/locale/ga_IE/LC_MEASUREMENT
+#usr/lib/locale/ga_IE/LC_MESSAGES
+#usr/lib/locale/ga_IE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ga_IE/LC_MONETARY
+#usr/lib/locale/ga_IE/LC_NAME
+#usr/lib/locale/ga_IE/LC_NUMERIC
+#usr/lib/locale/ga_IE/LC_PAPER
+#usr/lib/locale/ga_IE/LC_TELEPHONE
+#usr/lib/locale/ga_IE/LC_TIME
+#usr/lib/locale/ga_IE@euro
+#usr/lib/locale/ga_IE@euro/LC_ADDRESS
+#usr/lib/locale/ga_IE@euro/LC_COLLATE
+#usr/lib/locale/ga_IE@euro/LC_CTYPE
+#usr/lib/locale/ga_IE@euro/LC_IDENTIFICATION
+#usr/lib/locale/ga_IE@euro/LC_MEASUREMENT
+#usr/lib/locale/ga_IE@euro/LC_MESSAGES
+#usr/lib/locale/ga_IE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ga_IE@euro/LC_MONETARY
+#usr/lib/locale/ga_IE@euro/LC_NAME
+#usr/lib/locale/ga_IE@euro/LC_NUMERIC
+#usr/lib/locale/ga_IE@euro/LC_PAPER
+#usr/lib/locale/ga_IE@euro/LC_TELEPHONE
+#usr/lib/locale/ga_IE@euro/LC_TIME
+#usr/lib/locale/gd_GB
+#usr/lib/locale/gd_GB.utf8
+#usr/lib/locale/gd_GB.utf8/LC_ADDRESS
+#usr/lib/locale/gd_GB.utf8/LC_COLLATE
+#usr/lib/locale/gd_GB.utf8/LC_CTYPE
+#usr/lib/locale/gd_GB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/gd_GB.utf8/LC_MEASUREMENT
+#usr/lib/locale/gd_GB.utf8/LC_MESSAGES
+#usr/lib/locale/gd_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gd_GB.utf8/LC_MONETARY
+#usr/lib/locale/gd_GB.utf8/LC_NAME
+#usr/lib/locale/gd_GB.utf8/LC_NUMERIC
+#usr/lib/locale/gd_GB.utf8/LC_PAPER
+#usr/lib/locale/gd_GB.utf8/LC_TELEPHONE
+#usr/lib/locale/gd_GB.utf8/LC_TIME
+#usr/lib/locale/gd_GB/LC_ADDRESS
+#usr/lib/locale/gd_GB/LC_COLLATE
+#usr/lib/locale/gd_GB/LC_CTYPE
+#usr/lib/locale/gd_GB/LC_IDENTIFICATION
+#usr/lib/locale/gd_GB/LC_MEASUREMENT
+#usr/lib/locale/gd_GB/LC_MESSAGES
+#usr/lib/locale/gd_GB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gd_GB/LC_MONETARY
+#usr/lib/locale/gd_GB/LC_NAME
+#usr/lib/locale/gd_GB/LC_NUMERIC
+#usr/lib/locale/gd_GB/LC_PAPER
+#usr/lib/locale/gd_GB/LC_TELEPHONE
+#usr/lib/locale/gd_GB/LC_TIME
+#usr/lib/locale/gez_ER
+#usr/lib/locale/gez_ER/LC_ADDRESS
+#usr/lib/locale/gez_ER/LC_COLLATE
+#usr/lib/locale/gez_ER/LC_CTYPE
+#usr/lib/locale/gez_ER/LC_IDENTIFICATION
+#usr/lib/locale/gez_ER/LC_MEASUREMENT
+#usr/lib/locale/gez_ER/LC_MESSAGES
+#usr/lib/locale/gez_ER/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gez_ER/LC_MONETARY
+#usr/lib/locale/gez_ER/LC_NAME
+#usr/lib/locale/gez_ER/LC_NUMERIC
+#usr/lib/locale/gez_ER/LC_PAPER
+#usr/lib/locale/gez_ER/LC_TELEPHONE
+#usr/lib/locale/gez_ER/LC_TIME
+#usr/lib/locale/gez_ER@abegede
+#usr/lib/locale/gez_ER@abegede/LC_ADDRESS
+#usr/lib/locale/gez_ER@abegede/LC_COLLATE
+#usr/lib/locale/gez_ER@abegede/LC_CTYPE
+#usr/lib/locale/gez_ER@abegede/LC_IDENTIFICATION
+#usr/lib/locale/gez_ER@abegede/LC_MEASUREMENT
+#usr/lib/locale/gez_ER@abegede/LC_MESSAGES
+#usr/lib/locale/gez_ER@abegede/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gez_ER@abegede/LC_MONETARY
+#usr/lib/locale/gez_ER@abegede/LC_NAME
+#usr/lib/locale/gez_ER@abegede/LC_NUMERIC
+#usr/lib/locale/gez_ER@abegede/LC_PAPER
+#usr/lib/locale/gez_ER@abegede/LC_TELEPHONE
+#usr/lib/locale/gez_ER@abegede/LC_TIME
+#usr/lib/locale/gez_ET
+#usr/lib/locale/gez_ET/LC_ADDRESS
+#usr/lib/locale/gez_ET/LC_COLLATE
+#usr/lib/locale/gez_ET/LC_CTYPE
+#usr/lib/locale/gez_ET/LC_IDENTIFICATION
+#usr/lib/locale/gez_ET/LC_MEASUREMENT
+#usr/lib/locale/gez_ET/LC_MESSAGES
+#usr/lib/locale/gez_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gez_ET/LC_MONETARY
+#usr/lib/locale/gez_ET/LC_NAME
+#usr/lib/locale/gez_ET/LC_NUMERIC
+#usr/lib/locale/gez_ET/LC_PAPER
+#usr/lib/locale/gez_ET/LC_TELEPHONE
+#usr/lib/locale/gez_ET/LC_TIME
+#usr/lib/locale/gez_ET@abegede
+#usr/lib/locale/gez_ET@abegede/LC_ADDRESS
+#usr/lib/locale/gez_ET@abegede/LC_COLLATE
+#usr/lib/locale/gez_ET@abegede/LC_CTYPE
+#usr/lib/locale/gez_ET@abegede/LC_IDENTIFICATION
+#usr/lib/locale/gez_ET@abegede/LC_MEASUREMENT
+#usr/lib/locale/gez_ET@abegede/LC_MESSAGES
+#usr/lib/locale/gez_ET@abegede/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gez_ET@abegede/LC_MONETARY
+#usr/lib/locale/gez_ET@abegede/LC_NAME
+#usr/lib/locale/gez_ET@abegede/LC_NUMERIC
+#usr/lib/locale/gez_ET@abegede/LC_PAPER
+#usr/lib/locale/gez_ET@abegede/LC_TELEPHONE
+#usr/lib/locale/gez_ET@abegede/LC_TIME
+#usr/lib/locale/gl_ES
+#usr/lib/locale/gl_ES.utf8
+#usr/lib/locale/gl_ES.utf8/LC_ADDRESS
+#usr/lib/locale/gl_ES.utf8/LC_COLLATE
+#usr/lib/locale/gl_ES.utf8/LC_CTYPE
+#usr/lib/locale/gl_ES.utf8/LC_IDENTIFICATION
+#usr/lib/locale/gl_ES.utf8/LC_MEASUREMENT
+#usr/lib/locale/gl_ES.utf8/LC_MESSAGES
+#usr/lib/locale/gl_ES.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gl_ES.utf8/LC_MONETARY
+#usr/lib/locale/gl_ES.utf8/LC_NAME
+#usr/lib/locale/gl_ES.utf8/LC_NUMERIC
+#usr/lib/locale/gl_ES.utf8/LC_PAPER
+#usr/lib/locale/gl_ES.utf8/LC_TELEPHONE
+#usr/lib/locale/gl_ES.utf8/LC_TIME
+#usr/lib/locale/gl_ES/LC_ADDRESS
+#usr/lib/locale/gl_ES/LC_COLLATE
+#usr/lib/locale/gl_ES/LC_CTYPE
+#usr/lib/locale/gl_ES/LC_IDENTIFICATION
+#usr/lib/locale/gl_ES/LC_MEASUREMENT
+#usr/lib/locale/gl_ES/LC_MESSAGES
+#usr/lib/locale/gl_ES/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gl_ES/LC_MONETARY
+#usr/lib/locale/gl_ES/LC_NAME
+#usr/lib/locale/gl_ES/LC_NUMERIC
+#usr/lib/locale/gl_ES/LC_PAPER
+#usr/lib/locale/gl_ES/LC_TELEPHONE
+#usr/lib/locale/gl_ES/LC_TIME
+#usr/lib/locale/gl_ES@euro
+#usr/lib/locale/gl_ES@euro/LC_ADDRESS
+#usr/lib/locale/gl_ES@euro/LC_COLLATE
+#usr/lib/locale/gl_ES@euro/LC_CTYPE
+#usr/lib/locale/gl_ES@euro/LC_IDENTIFICATION
+#usr/lib/locale/gl_ES@euro/LC_MEASUREMENT
+#usr/lib/locale/gl_ES@euro/LC_MESSAGES
+#usr/lib/locale/gl_ES@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gl_ES@euro/LC_MONETARY
+#usr/lib/locale/gl_ES@euro/LC_NAME
+#usr/lib/locale/gl_ES@euro/LC_NUMERIC
+#usr/lib/locale/gl_ES@euro/LC_PAPER
+#usr/lib/locale/gl_ES@euro/LC_TELEPHONE
+#usr/lib/locale/gl_ES@euro/LC_TIME
+#usr/lib/locale/gu_IN
+#usr/lib/locale/gu_IN/LC_ADDRESS
+#usr/lib/locale/gu_IN/LC_COLLATE
+#usr/lib/locale/gu_IN/LC_CTYPE
+#usr/lib/locale/gu_IN/LC_IDENTIFICATION
+#usr/lib/locale/gu_IN/LC_MEASUREMENT
+#usr/lib/locale/gu_IN/LC_MESSAGES
+#usr/lib/locale/gu_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gu_IN/LC_MONETARY
+#usr/lib/locale/gu_IN/LC_NAME
+#usr/lib/locale/gu_IN/LC_NUMERIC
+#usr/lib/locale/gu_IN/LC_PAPER
+#usr/lib/locale/gu_IN/LC_TELEPHONE
+#usr/lib/locale/gu_IN/LC_TIME
+#usr/lib/locale/gv_GB
+#usr/lib/locale/gv_GB.utf8
+#usr/lib/locale/gv_GB.utf8/LC_ADDRESS
+#usr/lib/locale/gv_GB.utf8/LC_COLLATE
+#usr/lib/locale/gv_GB.utf8/LC_CTYPE
+#usr/lib/locale/gv_GB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/gv_GB.utf8/LC_MEASUREMENT
+#usr/lib/locale/gv_GB.utf8/LC_MESSAGES
+#usr/lib/locale/gv_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gv_GB.utf8/LC_MONETARY
+#usr/lib/locale/gv_GB.utf8/LC_NAME
+#usr/lib/locale/gv_GB.utf8/LC_NUMERIC
+#usr/lib/locale/gv_GB.utf8/LC_PAPER
+#usr/lib/locale/gv_GB.utf8/LC_TELEPHONE
+#usr/lib/locale/gv_GB.utf8/LC_TIME
+#usr/lib/locale/gv_GB/LC_ADDRESS
+#usr/lib/locale/gv_GB/LC_COLLATE
+#usr/lib/locale/gv_GB/LC_CTYPE
+#usr/lib/locale/gv_GB/LC_IDENTIFICATION
+#usr/lib/locale/gv_GB/LC_MEASUREMENT
+#usr/lib/locale/gv_GB/LC_MESSAGES
+#usr/lib/locale/gv_GB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/gv_GB/LC_MONETARY
+#usr/lib/locale/gv_GB/LC_NAME
+#usr/lib/locale/gv_GB/LC_NUMERIC
+#usr/lib/locale/gv_GB/LC_PAPER
+#usr/lib/locale/gv_GB/LC_TELEPHONE
+#usr/lib/locale/gv_GB/LC_TIME
+#usr/lib/locale/ha_NG
+#usr/lib/locale/ha_NG/LC_ADDRESS
+#usr/lib/locale/ha_NG/LC_COLLATE
+#usr/lib/locale/ha_NG/LC_CTYPE
+#usr/lib/locale/ha_NG/LC_IDENTIFICATION
+#usr/lib/locale/ha_NG/LC_MEASUREMENT
+#usr/lib/locale/ha_NG/LC_MESSAGES
+#usr/lib/locale/ha_NG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ha_NG/LC_MONETARY
+#usr/lib/locale/ha_NG/LC_NAME
+#usr/lib/locale/ha_NG/LC_NUMERIC
+#usr/lib/locale/ha_NG/LC_PAPER
+#usr/lib/locale/ha_NG/LC_TELEPHONE
+#usr/lib/locale/ha_NG/LC_TIME
+#usr/lib/locale/he_IL
+#usr/lib/locale/he_IL.utf8
+#usr/lib/locale/he_IL.utf8/LC_ADDRESS
+#usr/lib/locale/he_IL.utf8/LC_COLLATE
+#usr/lib/locale/he_IL.utf8/LC_CTYPE
+#usr/lib/locale/he_IL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/he_IL.utf8/LC_MEASUREMENT
+#usr/lib/locale/he_IL.utf8/LC_MESSAGES
+#usr/lib/locale/he_IL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/he_IL.utf8/LC_MONETARY
+#usr/lib/locale/he_IL.utf8/LC_NAME
+#usr/lib/locale/he_IL.utf8/LC_NUMERIC
+#usr/lib/locale/he_IL.utf8/LC_PAPER
+#usr/lib/locale/he_IL.utf8/LC_TELEPHONE
+#usr/lib/locale/he_IL.utf8/LC_TIME
+#usr/lib/locale/he_IL/LC_ADDRESS
+#usr/lib/locale/he_IL/LC_COLLATE
+#usr/lib/locale/he_IL/LC_CTYPE
+#usr/lib/locale/he_IL/LC_IDENTIFICATION
+#usr/lib/locale/he_IL/LC_MEASUREMENT
+#usr/lib/locale/he_IL/LC_MESSAGES
+#usr/lib/locale/he_IL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/he_IL/LC_MONETARY
+#usr/lib/locale/he_IL/LC_NAME
+#usr/lib/locale/he_IL/LC_NUMERIC
+#usr/lib/locale/he_IL/LC_PAPER
+#usr/lib/locale/he_IL/LC_TELEPHONE
+#usr/lib/locale/he_IL/LC_TIME
+#usr/lib/locale/hi_IN
+#usr/lib/locale/hi_IN/LC_ADDRESS
+#usr/lib/locale/hi_IN/LC_COLLATE
+#usr/lib/locale/hi_IN/LC_CTYPE
+#usr/lib/locale/hi_IN/LC_IDENTIFICATION
+#usr/lib/locale/hi_IN/LC_MEASUREMENT
+#usr/lib/locale/hi_IN/LC_MESSAGES
+#usr/lib/locale/hi_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hi_IN/LC_MONETARY
+#usr/lib/locale/hi_IN/LC_NAME
+#usr/lib/locale/hi_IN/LC_NUMERIC
+#usr/lib/locale/hi_IN/LC_PAPER
+#usr/lib/locale/hi_IN/LC_TELEPHONE
+#usr/lib/locale/hi_IN/LC_TIME
+#usr/lib/locale/hne_IN
+#usr/lib/locale/hne_IN/LC_ADDRESS
+#usr/lib/locale/hne_IN/LC_COLLATE
+#usr/lib/locale/hne_IN/LC_CTYPE
+#usr/lib/locale/hne_IN/LC_IDENTIFICATION
+#usr/lib/locale/hne_IN/LC_MEASUREMENT
+#usr/lib/locale/hne_IN/LC_MESSAGES
+#usr/lib/locale/hne_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hne_IN/LC_MONETARY
+#usr/lib/locale/hne_IN/LC_NAME
+#usr/lib/locale/hne_IN/LC_NUMERIC
+#usr/lib/locale/hne_IN/LC_PAPER
+#usr/lib/locale/hne_IN/LC_TELEPHONE
+#usr/lib/locale/hne_IN/LC_TIME
+#usr/lib/locale/hr_HR
+#usr/lib/locale/hr_HR.utf8
+#usr/lib/locale/hr_HR.utf8/LC_ADDRESS
+#usr/lib/locale/hr_HR.utf8/LC_COLLATE
+#usr/lib/locale/hr_HR.utf8/LC_CTYPE
+#usr/lib/locale/hr_HR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/hr_HR.utf8/LC_MEASUREMENT
+#usr/lib/locale/hr_HR.utf8/LC_MESSAGES
+#usr/lib/locale/hr_HR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hr_HR.utf8/LC_MONETARY
+#usr/lib/locale/hr_HR.utf8/LC_NAME
+#usr/lib/locale/hr_HR.utf8/LC_NUMERIC
+#usr/lib/locale/hr_HR.utf8/LC_PAPER
+#usr/lib/locale/hr_HR.utf8/LC_TELEPHONE
+#usr/lib/locale/hr_HR.utf8/LC_TIME
+#usr/lib/locale/hr_HR/LC_ADDRESS
+#usr/lib/locale/hr_HR/LC_COLLATE
+#usr/lib/locale/hr_HR/LC_CTYPE
+#usr/lib/locale/hr_HR/LC_IDENTIFICATION
+#usr/lib/locale/hr_HR/LC_MEASUREMENT
+#usr/lib/locale/hr_HR/LC_MESSAGES
+#usr/lib/locale/hr_HR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hr_HR/LC_MONETARY
+#usr/lib/locale/hr_HR/LC_NAME
+#usr/lib/locale/hr_HR/LC_NUMERIC
+#usr/lib/locale/hr_HR/LC_PAPER
+#usr/lib/locale/hr_HR/LC_TELEPHONE
+#usr/lib/locale/hr_HR/LC_TIME
+#usr/lib/locale/hsb_DE
+#usr/lib/locale/hsb_DE.utf8
+#usr/lib/locale/hsb_DE.utf8/LC_ADDRESS
+#usr/lib/locale/hsb_DE.utf8/LC_COLLATE
+#usr/lib/locale/hsb_DE.utf8/LC_CTYPE
+#usr/lib/locale/hsb_DE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/hsb_DE.utf8/LC_MEASUREMENT
+#usr/lib/locale/hsb_DE.utf8/LC_MESSAGES
+#usr/lib/locale/hsb_DE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hsb_DE.utf8/LC_MONETARY
+#usr/lib/locale/hsb_DE.utf8/LC_NAME
+#usr/lib/locale/hsb_DE.utf8/LC_NUMERIC
+#usr/lib/locale/hsb_DE.utf8/LC_PAPER
+#usr/lib/locale/hsb_DE.utf8/LC_TELEPHONE
+#usr/lib/locale/hsb_DE.utf8/LC_TIME
+#usr/lib/locale/hsb_DE/LC_ADDRESS
+#usr/lib/locale/hsb_DE/LC_COLLATE
+#usr/lib/locale/hsb_DE/LC_CTYPE
+#usr/lib/locale/hsb_DE/LC_IDENTIFICATION
+#usr/lib/locale/hsb_DE/LC_MEASUREMENT
+#usr/lib/locale/hsb_DE/LC_MESSAGES
+#usr/lib/locale/hsb_DE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hsb_DE/LC_MONETARY
+#usr/lib/locale/hsb_DE/LC_NAME
+#usr/lib/locale/hsb_DE/LC_NUMERIC
+#usr/lib/locale/hsb_DE/LC_PAPER
+#usr/lib/locale/hsb_DE/LC_TELEPHONE
+#usr/lib/locale/hsb_DE/LC_TIME
+#usr/lib/locale/ht_HT
+#usr/lib/locale/ht_HT/LC_ADDRESS
+#usr/lib/locale/ht_HT/LC_COLLATE
+#usr/lib/locale/ht_HT/LC_CTYPE
+#usr/lib/locale/ht_HT/LC_IDENTIFICATION
+#usr/lib/locale/ht_HT/LC_MEASUREMENT
+#usr/lib/locale/ht_HT/LC_MESSAGES
+#usr/lib/locale/ht_HT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ht_HT/LC_MONETARY
+#usr/lib/locale/ht_HT/LC_NAME
+#usr/lib/locale/ht_HT/LC_NUMERIC
+#usr/lib/locale/ht_HT/LC_PAPER
+#usr/lib/locale/ht_HT/LC_TELEPHONE
+#usr/lib/locale/ht_HT/LC_TIME
+#usr/lib/locale/hu_HU
+#usr/lib/locale/hu_HU.utf8
+#usr/lib/locale/hu_HU.utf8/LC_ADDRESS
+#usr/lib/locale/hu_HU.utf8/LC_COLLATE
+#usr/lib/locale/hu_HU.utf8/LC_CTYPE
+#usr/lib/locale/hu_HU.utf8/LC_IDENTIFICATION
+#usr/lib/locale/hu_HU.utf8/LC_MEASUREMENT
+#usr/lib/locale/hu_HU.utf8/LC_MESSAGES
+#usr/lib/locale/hu_HU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hu_HU.utf8/LC_MONETARY
+#usr/lib/locale/hu_HU.utf8/LC_NAME
+#usr/lib/locale/hu_HU.utf8/LC_NUMERIC
+#usr/lib/locale/hu_HU.utf8/LC_PAPER
+#usr/lib/locale/hu_HU.utf8/LC_TELEPHONE
+#usr/lib/locale/hu_HU.utf8/LC_TIME
+#usr/lib/locale/hu_HU/LC_ADDRESS
+#usr/lib/locale/hu_HU/LC_COLLATE
+#usr/lib/locale/hu_HU/LC_CTYPE
+#usr/lib/locale/hu_HU/LC_IDENTIFICATION
+#usr/lib/locale/hu_HU/LC_MEASUREMENT
+#usr/lib/locale/hu_HU/LC_MESSAGES
+#usr/lib/locale/hu_HU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hu_HU/LC_MONETARY
+#usr/lib/locale/hu_HU/LC_NAME
+#usr/lib/locale/hu_HU/LC_NUMERIC
+#usr/lib/locale/hu_HU/LC_PAPER
+#usr/lib/locale/hu_HU/LC_TELEPHONE
+#usr/lib/locale/hu_HU/LC_TIME
+#usr/lib/locale/hy_AM
+#usr/lib/locale/hy_AM.armscii8
+#usr/lib/locale/hy_AM.armscii8/LC_ADDRESS
+#usr/lib/locale/hy_AM.armscii8/LC_COLLATE
+#usr/lib/locale/hy_AM.armscii8/LC_CTYPE
+#usr/lib/locale/hy_AM.armscii8/LC_IDENTIFICATION
+#usr/lib/locale/hy_AM.armscii8/LC_MEASUREMENT
+#usr/lib/locale/hy_AM.armscii8/LC_MESSAGES
+#usr/lib/locale/hy_AM.armscii8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hy_AM.armscii8/LC_MONETARY
+#usr/lib/locale/hy_AM.armscii8/LC_NAME
+#usr/lib/locale/hy_AM.armscii8/LC_NUMERIC
+#usr/lib/locale/hy_AM.armscii8/LC_PAPER
+#usr/lib/locale/hy_AM.armscii8/LC_TELEPHONE
+#usr/lib/locale/hy_AM.armscii8/LC_TIME
+#usr/lib/locale/hy_AM/LC_ADDRESS
+#usr/lib/locale/hy_AM/LC_COLLATE
+#usr/lib/locale/hy_AM/LC_CTYPE
+#usr/lib/locale/hy_AM/LC_IDENTIFICATION
+#usr/lib/locale/hy_AM/LC_MEASUREMENT
+#usr/lib/locale/hy_AM/LC_MESSAGES
+#usr/lib/locale/hy_AM/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/hy_AM/LC_MONETARY
+#usr/lib/locale/hy_AM/LC_NAME
+#usr/lib/locale/hy_AM/LC_NUMERIC
+#usr/lib/locale/hy_AM/LC_PAPER
+#usr/lib/locale/hy_AM/LC_TELEPHONE
+#usr/lib/locale/hy_AM/LC_TIME
+#usr/lib/locale/id_ID
+#usr/lib/locale/id_ID.utf8
+#usr/lib/locale/id_ID.utf8/LC_ADDRESS
+#usr/lib/locale/id_ID.utf8/LC_COLLATE
+#usr/lib/locale/id_ID.utf8/LC_CTYPE
+#usr/lib/locale/id_ID.utf8/LC_IDENTIFICATION
+#usr/lib/locale/id_ID.utf8/LC_MEASUREMENT
+#usr/lib/locale/id_ID.utf8/LC_MESSAGES
+#usr/lib/locale/id_ID.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/id_ID.utf8/LC_MONETARY
+#usr/lib/locale/id_ID.utf8/LC_NAME
+#usr/lib/locale/id_ID.utf8/LC_NUMERIC
+#usr/lib/locale/id_ID.utf8/LC_PAPER
+#usr/lib/locale/id_ID.utf8/LC_TELEPHONE
+#usr/lib/locale/id_ID.utf8/LC_TIME
+#usr/lib/locale/id_ID/LC_ADDRESS
+#usr/lib/locale/id_ID/LC_COLLATE
+#usr/lib/locale/id_ID/LC_CTYPE
+#usr/lib/locale/id_ID/LC_IDENTIFICATION
+#usr/lib/locale/id_ID/LC_MEASUREMENT
+#usr/lib/locale/id_ID/LC_MESSAGES
+#usr/lib/locale/id_ID/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/id_ID/LC_MONETARY
+#usr/lib/locale/id_ID/LC_NAME
+#usr/lib/locale/id_ID/LC_NUMERIC
+#usr/lib/locale/id_ID/LC_PAPER
+#usr/lib/locale/id_ID/LC_TELEPHONE
+#usr/lib/locale/id_ID/LC_TIME
+#usr/lib/locale/ig_NG
+#usr/lib/locale/ig_NG/LC_ADDRESS
+#usr/lib/locale/ig_NG/LC_COLLATE
+#usr/lib/locale/ig_NG/LC_CTYPE
+#usr/lib/locale/ig_NG/LC_IDENTIFICATION
+#usr/lib/locale/ig_NG/LC_MEASUREMENT
+#usr/lib/locale/ig_NG/LC_MESSAGES
+#usr/lib/locale/ig_NG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ig_NG/LC_MONETARY
+#usr/lib/locale/ig_NG/LC_NAME
+#usr/lib/locale/ig_NG/LC_NUMERIC
+#usr/lib/locale/ig_NG/LC_PAPER
+#usr/lib/locale/ig_NG/LC_TELEPHONE
+#usr/lib/locale/ig_NG/LC_TIME
+#usr/lib/locale/ik_CA
+#usr/lib/locale/ik_CA/LC_ADDRESS
+#usr/lib/locale/ik_CA/LC_COLLATE
+#usr/lib/locale/ik_CA/LC_CTYPE
+#usr/lib/locale/ik_CA/LC_IDENTIFICATION
+#usr/lib/locale/ik_CA/LC_MEASUREMENT
+#usr/lib/locale/ik_CA/LC_MESSAGES
+#usr/lib/locale/ik_CA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ik_CA/LC_MONETARY
+#usr/lib/locale/ik_CA/LC_NAME
+#usr/lib/locale/ik_CA/LC_NUMERIC
+#usr/lib/locale/ik_CA/LC_PAPER
+#usr/lib/locale/ik_CA/LC_TELEPHONE
+#usr/lib/locale/ik_CA/LC_TIME
+#usr/lib/locale/is_IS
+#usr/lib/locale/is_IS.utf8
+#usr/lib/locale/is_IS.utf8/LC_ADDRESS
+#usr/lib/locale/is_IS.utf8/LC_COLLATE
+#usr/lib/locale/is_IS.utf8/LC_CTYPE
+#usr/lib/locale/is_IS.utf8/LC_IDENTIFICATION
+#usr/lib/locale/is_IS.utf8/LC_MEASUREMENT
+#usr/lib/locale/is_IS.utf8/LC_MESSAGES
+#usr/lib/locale/is_IS.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/is_IS.utf8/LC_MONETARY
+#usr/lib/locale/is_IS.utf8/LC_NAME
+#usr/lib/locale/is_IS.utf8/LC_NUMERIC
+#usr/lib/locale/is_IS.utf8/LC_PAPER
+#usr/lib/locale/is_IS.utf8/LC_TELEPHONE
+#usr/lib/locale/is_IS.utf8/LC_TIME
+#usr/lib/locale/is_IS/LC_ADDRESS
+#usr/lib/locale/is_IS/LC_COLLATE
+#usr/lib/locale/is_IS/LC_CTYPE
+#usr/lib/locale/is_IS/LC_IDENTIFICATION
+#usr/lib/locale/is_IS/LC_MEASUREMENT
+#usr/lib/locale/is_IS/LC_MESSAGES
+#usr/lib/locale/is_IS/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/is_IS/LC_MONETARY
+#usr/lib/locale/is_IS/LC_NAME
+#usr/lib/locale/is_IS/LC_NUMERIC
+#usr/lib/locale/is_IS/LC_PAPER
+#usr/lib/locale/is_IS/LC_TELEPHONE
+#usr/lib/locale/is_IS/LC_TIME
+#usr/lib/locale/it_CH
+#usr/lib/locale/it_CH.utf8
+#usr/lib/locale/it_CH.utf8/LC_ADDRESS
+#usr/lib/locale/it_CH.utf8/LC_COLLATE
+#usr/lib/locale/it_CH.utf8/LC_CTYPE
+#usr/lib/locale/it_CH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/it_CH.utf8/LC_MEASUREMENT
+#usr/lib/locale/it_CH.utf8/LC_MESSAGES
+#usr/lib/locale/it_CH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/it_CH.utf8/LC_MONETARY
+#usr/lib/locale/it_CH.utf8/LC_NAME
+#usr/lib/locale/it_CH.utf8/LC_NUMERIC
+#usr/lib/locale/it_CH.utf8/LC_PAPER
+#usr/lib/locale/it_CH.utf8/LC_TELEPHONE
+#usr/lib/locale/it_CH.utf8/LC_TIME
+#usr/lib/locale/it_CH/LC_ADDRESS
+#usr/lib/locale/it_CH/LC_COLLATE
+#usr/lib/locale/it_CH/LC_CTYPE
+#usr/lib/locale/it_CH/LC_IDENTIFICATION
+#usr/lib/locale/it_CH/LC_MEASUREMENT
+#usr/lib/locale/it_CH/LC_MESSAGES
+#usr/lib/locale/it_CH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/it_CH/LC_MONETARY
+#usr/lib/locale/it_CH/LC_NAME
+#usr/lib/locale/it_CH/LC_NUMERIC
+#usr/lib/locale/it_CH/LC_PAPER
+#usr/lib/locale/it_CH/LC_TELEPHONE
+#usr/lib/locale/it_CH/LC_TIME
+#usr/lib/locale/it_IT
+#usr/lib/locale/it_IT.utf8
+#usr/lib/locale/it_IT.utf8/LC_ADDRESS
+#usr/lib/locale/it_IT.utf8/LC_COLLATE
+#usr/lib/locale/it_IT.utf8/LC_CTYPE
+#usr/lib/locale/it_IT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/it_IT.utf8/LC_MEASUREMENT
+#usr/lib/locale/it_IT.utf8/LC_MESSAGES
+#usr/lib/locale/it_IT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/it_IT.utf8/LC_MONETARY
+#usr/lib/locale/it_IT.utf8/LC_NAME
+#usr/lib/locale/it_IT.utf8/LC_NUMERIC
+#usr/lib/locale/it_IT.utf8/LC_PAPER
+#usr/lib/locale/it_IT.utf8/LC_TELEPHONE
+#usr/lib/locale/it_IT.utf8/LC_TIME
+#usr/lib/locale/it_IT/LC_ADDRESS
+#usr/lib/locale/it_IT/LC_COLLATE
+#usr/lib/locale/it_IT/LC_CTYPE
+#usr/lib/locale/it_IT/LC_IDENTIFICATION
+#usr/lib/locale/it_IT/LC_MEASUREMENT
+#usr/lib/locale/it_IT/LC_MESSAGES
+#usr/lib/locale/it_IT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/it_IT/LC_MONETARY
+#usr/lib/locale/it_IT/LC_NAME
+#usr/lib/locale/it_IT/LC_NUMERIC
+#usr/lib/locale/it_IT/LC_PAPER
+#usr/lib/locale/it_IT/LC_TELEPHONE
+#usr/lib/locale/it_IT/LC_TIME
+#usr/lib/locale/it_IT@euro
+#usr/lib/locale/it_IT@euro/LC_ADDRESS
+#usr/lib/locale/it_IT@euro/LC_COLLATE
+#usr/lib/locale/it_IT@euro/LC_CTYPE
+#usr/lib/locale/it_IT@euro/LC_IDENTIFICATION
+#usr/lib/locale/it_IT@euro/LC_MEASUREMENT
+#usr/lib/locale/it_IT@euro/LC_MESSAGES
+#usr/lib/locale/it_IT@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/it_IT@euro/LC_MONETARY
+#usr/lib/locale/it_IT@euro/LC_NAME
+#usr/lib/locale/it_IT@euro/LC_NUMERIC
+#usr/lib/locale/it_IT@euro/LC_PAPER
+#usr/lib/locale/it_IT@euro/LC_TELEPHONE
+#usr/lib/locale/it_IT@euro/LC_TIME
+#usr/lib/locale/iu_CA
+#usr/lib/locale/iu_CA/LC_ADDRESS
+#usr/lib/locale/iu_CA/LC_COLLATE
+#usr/lib/locale/iu_CA/LC_CTYPE
+#usr/lib/locale/iu_CA/LC_IDENTIFICATION
+#usr/lib/locale/iu_CA/LC_MEASUREMENT
+#usr/lib/locale/iu_CA/LC_MESSAGES
+#usr/lib/locale/iu_CA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/iu_CA/LC_MONETARY
+#usr/lib/locale/iu_CA/LC_NAME
+#usr/lib/locale/iu_CA/LC_NUMERIC
+#usr/lib/locale/iu_CA/LC_PAPER
+#usr/lib/locale/iu_CA/LC_TELEPHONE
+#usr/lib/locale/iu_CA/LC_TIME
+#usr/lib/locale/iw_IL
+#usr/lib/locale/iw_IL.utf8
+#usr/lib/locale/iw_IL.utf8/LC_ADDRESS
+#usr/lib/locale/iw_IL.utf8/LC_COLLATE
+#usr/lib/locale/iw_IL.utf8/LC_CTYPE
+#usr/lib/locale/iw_IL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/iw_IL.utf8/LC_MEASUREMENT
+#usr/lib/locale/iw_IL.utf8/LC_MESSAGES
+#usr/lib/locale/iw_IL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/iw_IL.utf8/LC_MONETARY
+#usr/lib/locale/iw_IL.utf8/LC_NAME
+#usr/lib/locale/iw_IL.utf8/LC_NUMERIC
+#usr/lib/locale/iw_IL.utf8/LC_PAPER
+#usr/lib/locale/iw_IL.utf8/LC_TELEPHONE
+#usr/lib/locale/iw_IL.utf8/LC_TIME
+#usr/lib/locale/iw_IL/LC_ADDRESS
+#usr/lib/locale/iw_IL/LC_COLLATE
+#usr/lib/locale/iw_IL/LC_CTYPE
+#usr/lib/locale/iw_IL/LC_IDENTIFICATION
+#usr/lib/locale/iw_IL/LC_MEASUREMENT
+#usr/lib/locale/iw_IL/LC_MESSAGES
+#usr/lib/locale/iw_IL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/iw_IL/LC_MONETARY
+#usr/lib/locale/iw_IL/LC_NAME
+#usr/lib/locale/iw_IL/LC_NUMERIC
+#usr/lib/locale/iw_IL/LC_PAPER
+#usr/lib/locale/iw_IL/LC_TELEPHONE
+#usr/lib/locale/iw_IL/LC_TIME
+#usr/lib/locale/ja_JP.eucjp
+#usr/lib/locale/ja_JP.eucjp/LC_ADDRESS
+#usr/lib/locale/ja_JP.eucjp/LC_COLLATE
+#usr/lib/locale/ja_JP.eucjp/LC_CTYPE
+#usr/lib/locale/ja_JP.eucjp/LC_IDENTIFICATION
+#usr/lib/locale/ja_JP.eucjp/LC_MEASUREMENT
+#usr/lib/locale/ja_JP.eucjp/LC_MESSAGES
+#usr/lib/locale/ja_JP.eucjp/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ja_JP.eucjp/LC_MONETARY
+#usr/lib/locale/ja_JP.eucjp/LC_NAME
+#usr/lib/locale/ja_JP.eucjp/LC_NUMERIC
+#usr/lib/locale/ja_JP.eucjp/LC_PAPER
+#usr/lib/locale/ja_JP.eucjp/LC_TELEPHONE
+#usr/lib/locale/ja_JP.eucjp/LC_TIME
+#usr/lib/locale/ja_JP.utf8
+#usr/lib/locale/ja_JP.utf8/LC_ADDRESS
+#usr/lib/locale/ja_JP.utf8/LC_COLLATE
+#usr/lib/locale/ja_JP.utf8/LC_CTYPE
+#usr/lib/locale/ja_JP.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ja_JP.utf8/LC_MEASUREMENT
+#usr/lib/locale/ja_JP.utf8/LC_MESSAGES
+#usr/lib/locale/ja_JP.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ja_JP.utf8/LC_MONETARY
+#usr/lib/locale/ja_JP.utf8/LC_NAME
+#usr/lib/locale/ja_JP.utf8/LC_NUMERIC
+#usr/lib/locale/ja_JP.utf8/LC_PAPER
+#usr/lib/locale/ja_JP.utf8/LC_TELEPHONE
+#usr/lib/locale/ja_JP.utf8/LC_TIME
+#usr/lib/locale/ka_GE
+#usr/lib/locale/ka_GE.utf8
+#usr/lib/locale/ka_GE.utf8/LC_ADDRESS
+#usr/lib/locale/ka_GE.utf8/LC_COLLATE
+#usr/lib/locale/ka_GE.utf8/LC_CTYPE
+#usr/lib/locale/ka_GE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ka_GE.utf8/LC_MEASUREMENT
+#usr/lib/locale/ka_GE.utf8/LC_MESSAGES
+#usr/lib/locale/ka_GE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ka_GE.utf8/LC_MONETARY
+#usr/lib/locale/ka_GE.utf8/LC_NAME
+#usr/lib/locale/ka_GE.utf8/LC_NUMERIC
+#usr/lib/locale/ka_GE.utf8/LC_PAPER
+#usr/lib/locale/ka_GE.utf8/LC_TELEPHONE
+#usr/lib/locale/ka_GE.utf8/LC_TIME
+#usr/lib/locale/ka_GE/LC_ADDRESS
+#usr/lib/locale/ka_GE/LC_COLLATE
+#usr/lib/locale/ka_GE/LC_CTYPE
+#usr/lib/locale/ka_GE/LC_IDENTIFICATION
+#usr/lib/locale/ka_GE/LC_MEASUREMENT
+#usr/lib/locale/ka_GE/LC_MESSAGES
+#usr/lib/locale/ka_GE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ka_GE/LC_MONETARY
+#usr/lib/locale/ka_GE/LC_NAME
+#usr/lib/locale/ka_GE/LC_NUMERIC
+#usr/lib/locale/ka_GE/LC_PAPER
+#usr/lib/locale/ka_GE/LC_TELEPHONE
+#usr/lib/locale/ka_GE/LC_TIME
+#usr/lib/locale/kk_KZ
+#usr/lib/locale/kk_KZ.utf8
+#usr/lib/locale/kk_KZ.utf8/LC_ADDRESS
+#usr/lib/locale/kk_KZ.utf8/LC_COLLATE
+#usr/lib/locale/kk_KZ.utf8/LC_CTYPE
+#usr/lib/locale/kk_KZ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/kk_KZ.utf8/LC_MEASUREMENT
+#usr/lib/locale/kk_KZ.utf8/LC_MESSAGES
+#usr/lib/locale/kk_KZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kk_KZ.utf8/LC_MONETARY
+#usr/lib/locale/kk_KZ.utf8/LC_NAME
+#usr/lib/locale/kk_KZ.utf8/LC_NUMERIC
+#usr/lib/locale/kk_KZ.utf8/LC_PAPER
+#usr/lib/locale/kk_KZ.utf8/LC_TELEPHONE
+#usr/lib/locale/kk_KZ.utf8/LC_TIME
+#usr/lib/locale/kk_KZ/LC_ADDRESS
+#usr/lib/locale/kk_KZ/LC_COLLATE
+#usr/lib/locale/kk_KZ/LC_CTYPE
+#usr/lib/locale/kk_KZ/LC_IDENTIFICATION
+#usr/lib/locale/kk_KZ/LC_MEASUREMENT
+#usr/lib/locale/kk_KZ/LC_MESSAGES
+#usr/lib/locale/kk_KZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kk_KZ/LC_MONETARY
+#usr/lib/locale/kk_KZ/LC_NAME
+#usr/lib/locale/kk_KZ/LC_NUMERIC
+#usr/lib/locale/kk_KZ/LC_PAPER
+#usr/lib/locale/kk_KZ/LC_TELEPHONE
+#usr/lib/locale/kk_KZ/LC_TIME
+#usr/lib/locale/kl_GL
+#usr/lib/locale/kl_GL.utf8
+#usr/lib/locale/kl_GL.utf8/LC_ADDRESS
+#usr/lib/locale/kl_GL.utf8/LC_COLLATE
+#usr/lib/locale/kl_GL.utf8/LC_CTYPE
+#usr/lib/locale/kl_GL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/kl_GL.utf8/LC_MEASUREMENT
+#usr/lib/locale/kl_GL.utf8/LC_MESSAGES
+#usr/lib/locale/kl_GL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kl_GL.utf8/LC_MONETARY
+#usr/lib/locale/kl_GL.utf8/LC_NAME
+#usr/lib/locale/kl_GL.utf8/LC_NUMERIC
+#usr/lib/locale/kl_GL.utf8/LC_PAPER
+#usr/lib/locale/kl_GL.utf8/LC_TELEPHONE
+#usr/lib/locale/kl_GL.utf8/LC_TIME
+#usr/lib/locale/kl_GL/LC_ADDRESS
+#usr/lib/locale/kl_GL/LC_COLLATE
+#usr/lib/locale/kl_GL/LC_CTYPE
+#usr/lib/locale/kl_GL/LC_IDENTIFICATION
+#usr/lib/locale/kl_GL/LC_MEASUREMENT
+#usr/lib/locale/kl_GL/LC_MESSAGES
+#usr/lib/locale/kl_GL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kl_GL/LC_MONETARY
+#usr/lib/locale/kl_GL/LC_NAME
+#usr/lib/locale/kl_GL/LC_NUMERIC
+#usr/lib/locale/kl_GL/LC_PAPER
+#usr/lib/locale/kl_GL/LC_TELEPHONE
+#usr/lib/locale/kl_GL/LC_TIME
+#usr/lib/locale/km_KH
+#usr/lib/locale/km_KH/LC_ADDRESS
+#usr/lib/locale/km_KH/LC_COLLATE
+#usr/lib/locale/km_KH/LC_CTYPE
+#usr/lib/locale/km_KH/LC_IDENTIFICATION
+#usr/lib/locale/km_KH/LC_MEASUREMENT
+#usr/lib/locale/km_KH/LC_MESSAGES
+#usr/lib/locale/km_KH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/km_KH/LC_MONETARY
+#usr/lib/locale/km_KH/LC_NAME
+#usr/lib/locale/km_KH/LC_NUMERIC
+#usr/lib/locale/km_KH/LC_PAPER
+#usr/lib/locale/km_KH/LC_TELEPHONE
+#usr/lib/locale/km_KH/LC_TIME
+#usr/lib/locale/kn_IN
+#usr/lib/locale/kn_IN/LC_ADDRESS
+#usr/lib/locale/kn_IN/LC_COLLATE
+#usr/lib/locale/kn_IN/LC_CTYPE
+#usr/lib/locale/kn_IN/LC_IDENTIFICATION
+#usr/lib/locale/kn_IN/LC_MEASUREMENT
+#usr/lib/locale/kn_IN/LC_MESSAGES
+#usr/lib/locale/kn_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kn_IN/LC_MONETARY
+#usr/lib/locale/kn_IN/LC_NAME
+#usr/lib/locale/kn_IN/LC_NUMERIC
+#usr/lib/locale/kn_IN/LC_PAPER
+#usr/lib/locale/kn_IN/LC_TELEPHONE
+#usr/lib/locale/kn_IN/LC_TIME
+#usr/lib/locale/ko_KR.euckr
+#usr/lib/locale/ko_KR.euckr/LC_ADDRESS
+#usr/lib/locale/ko_KR.euckr/LC_COLLATE
+#usr/lib/locale/ko_KR.euckr/LC_CTYPE
+#usr/lib/locale/ko_KR.euckr/LC_IDENTIFICATION
+#usr/lib/locale/ko_KR.euckr/LC_MEASUREMENT
+#usr/lib/locale/ko_KR.euckr/LC_MESSAGES
+#usr/lib/locale/ko_KR.euckr/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ko_KR.euckr/LC_MONETARY
+#usr/lib/locale/ko_KR.euckr/LC_NAME
+#usr/lib/locale/ko_KR.euckr/LC_NUMERIC
+#usr/lib/locale/ko_KR.euckr/LC_PAPER
+#usr/lib/locale/ko_KR.euckr/LC_TELEPHONE
+#usr/lib/locale/ko_KR.euckr/LC_TIME
+#usr/lib/locale/ko_KR.utf8
+#usr/lib/locale/ko_KR.utf8/LC_ADDRESS
+#usr/lib/locale/ko_KR.utf8/LC_COLLATE
+#usr/lib/locale/ko_KR.utf8/LC_CTYPE
+#usr/lib/locale/ko_KR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ko_KR.utf8/LC_MEASUREMENT
+#usr/lib/locale/ko_KR.utf8/LC_MESSAGES
+#usr/lib/locale/ko_KR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ko_KR.utf8/LC_MONETARY
+#usr/lib/locale/ko_KR.utf8/LC_NAME
+#usr/lib/locale/ko_KR.utf8/LC_NUMERIC
+#usr/lib/locale/ko_KR.utf8/LC_PAPER
+#usr/lib/locale/ko_KR.utf8/LC_TELEPHONE
+#usr/lib/locale/ko_KR.utf8/LC_TIME
+#usr/lib/locale/kok_IN
+#usr/lib/locale/kok_IN/LC_ADDRESS
+#usr/lib/locale/kok_IN/LC_COLLATE
+#usr/lib/locale/kok_IN/LC_CTYPE
+#usr/lib/locale/kok_IN/LC_IDENTIFICATION
+#usr/lib/locale/kok_IN/LC_MEASUREMENT
+#usr/lib/locale/kok_IN/LC_MESSAGES
+#usr/lib/locale/kok_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kok_IN/LC_MONETARY
+#usr/lib/locale/kok_IN/LC_NAME
+#usr/lib/locale/kok_IN/LC_NUMERIC
+#usr/lib/locale/kok_IN/LC_PAPER
+#usr/lib/locale/kok_IN/LC_TELEPHONE
+#usr/lib/locale/kok_IN/LC_TIME
+#usr/lib/locale/ks_IN
+#usr/lib/locale/ks_IN/LC_ADDRESS
+#usr/lib/locale/ks_IN/LC_COLLATE
+#usr/lib/locale/ks_IN/LC_CTYPE
+#usr/lib/locale/ks_IN/LC_IDENTIFICATION
+#usr/lib/locale/ks_IN/LC_MEASUREMENT
+#usr/lib/locale/ks_IN/LC_MESSAGES
+#usr/lib/locale/ks_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ks_IN/LC_MONETARY
+#usr/lib/locale/ks_IN/LC_NAME
+#usr/lib/locale/ks_IN/LC_NUMERIC
+#usr/lib/locale/ks_IN/LC_PAPER
+#usr/lib/locale/ks_IN/LC_TELEPHONE
+#usr/lib/locale/ks_IN/LC_TIME
+#usr/lib/locale/ks_IN@devanagari
+#usr/lib/locale/ks_IN@devanagari/LC_ADDRESS
+#usr/lib/locale/ks_IN@devanagari/LC_COLLATE
+#usr/lib/locale/ks_IN@devanagari/LC_CTYPE
+#usr/lib/locale/ks_IN@devanagari/LC_IDENTIFICATION
+#usr/lib/locale/ks_IN@devanagari/LC_MEASUREMENT
+#usr/lib/locale/ks_IN@devanagari/LC_MESSAGES
+#usr/lib/locale/ks_IN@devanagari/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ks_IN@devanagari/LC_MONETARY
+#usr/lib/locale/ks_IN@devanagari/LC_NAME
+#usr/lib/locale/ks_IN@devanagari/LC_NUMERIC
+#usr/lib/locale/ks_IN@devanagari/LC_PAPER
+#usr/lib/locale/ks_IN@devanagari/LC_TELEPHONE
+#usr/lib/locale/ks_IN@devanagari/LC_TIME
+#usr/lib/locale/ku_TR
+#usr/lib/locale/ku_TR.utf8
+#usr/lib/locale/ku_TR.utf8/LC_ADDRESS
+#usr/lib/locale/ku_TR.utf8/LC_COLLATE
+#usr/lib/locale/ku_TR.utf8/LC_CTYPE
+#usr/lib/locale/ku_TR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ku_TR.utf8/LC_MEASUREMENT
+#usr/lib/locale/ku_TR.utf8/LC_MESSAGES
+#usr/lib/locale/ku_TR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ku_TR.utf8/LC_MONETARY
+#usr/lib/locale/ku_TR.utf8/LC_NAME
+#usr/lib/locale/ku_TR.utf8/LC_NUMERIC
+#usr/lib/locale/ku_TR.utf8/LC_PAPER
+#usr/lib/locale/ku_TR.utf8/LC_TELEPHONE
+#usr/lib/locale/ku_TR.utf8/LC_TIME
+#usr/lib/locale/ku_TR/LC_ADDRESS
+#usr/lib/locale/ku_TR/LC_COLLATE
+#usr/lib/locale/ku_TR/LC_CTYPE
+#usr/lib/locale/ku_TR/LC_IDENTIFICATION
+#usr/lib/locale/ku_TR/LC_MEASUREMENT
+#usr/lib/locale/ku_TR/LC_MESSAGES
+#usr/lib/locale/ku_TR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ku_TR/LC_MONETARY
+#usr/lib/locale/ku_TR/LC_NAME
+#usr/lib/locale/ku_TR/LC_NUMERIC
+#usr/lib/locale/ku_TR/LC_PAPER
+#usr/lib/locale/ku_TR/LC_TELEPHONE
+#usr/lib/locale/ku_TR/LC_TIME
+#usr/lib/locale/kw_GB
+#usr/lib/locale/kw_GB.utf8
+#usr/lib/locale/kw_GB.utf8/LC_ADDRESS
+#usr/lib/locale/kw_GB.utf8/LC_COLLATE
+#usr/lib/locale/kw_GB.utf8/LC_CTYPE
+#usr/lib/locale/kw_GB.utf8/LC_IDENTIFICATION
+#usr/lib/locale/kw_GB.utf8/LC_MEASUREMENT
+#usr/lib/locale/kw_GB.utf8/LC_MESSAGES
+#usr/lib/locale/kw_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kw_GB.utf8/LC_MONETARY
+#usr/lib/locale/kw_GB.utf8/LC_NAME
+#usr/lib/locale/kw_GB.utf8/LC_NUMERIC
+#usr/lib/locale/kw_GB.utf8/LC_PAPER
+#usr/lib/locale/kw_GB.utf8/LC_TELEPHONE
+#usr/lib/locale/kw_GB.utf8/LC_TIME
+#usr/lib/locale/kw_GB/LC_ADDRESS
+#usr/lib/locale/kw_GB/LC_COLLATE
+#usr/lib/locale/kw_GB/LC_CTYPE
+#usr/lib/locale/kw_GB/LC_IDENTIFICATION
+#usr/lib/locale/kw_GB/LC_MEASUREMENT
+#usr/lib/locale/kw_GB/LC_MESSAGES
+#usr/lib/locale/kw_GB/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/kw_GB/LC_MONETARY
+#usr/lib/locale/kw_GB/LC_NAME
+#usr/lib/locale/kw_GB/LC_NUMERIC
+#usr/lib/locale/kw_GB/LC_PAPER
+#usr/lib/locale/kw_GB/LC_TELEPHONE
+#usr/lib/locale/kw_GB/LC_TIME
+#usr/lib/locale/ky_KG
+#usr/lib/locale/ky_KG/LC_ADDRESS
+#usr/lib/locale/ky_KG/LC_COLLATE
+#usr/lib/locale/ky_KG/LC_CTYPE
+#usr/lib/locale/ky_KG/LC_IDENTIFICATION
+#usr/lib/locale/ky_KG/LC_MEASUREMENT
+#usr/lib/locale/ky_KG/LC_MESSAGES
+#usr/lib/locale/ky_KG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ky_KG/LC_MONETARY
+#usr/lib/locale/ky_KG/LC_NAME
+#usr/lib/locale/ky_KG/LC_NUMERIC
+#usr/lib/locale/ky_KG/LC_PAPER
+#usr/lib/locale/ky_KG/LC_TELEPHONE
+#usr/lib/locale/ky_KG/LC_TIME
+#usr/lib/locale/lg_UG
+#usr/lib/locale/lg_UG.utf8
+#usr/lib/locale/lg_UG.utf8/LC_ADDRESS
+#usr/lib/locale/lg_UG.utf8/LC_COLLATE
+#usr/lib/locale/lg_UG.utf8/LC_CTYPE
+#usr/lib/locale/lg_UG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/lg_UG.utf8/LC_MEASUREMENT
+#usr/lib/locale/lg_UG.utf8/LC_MESSAGES
+#usr/lib/locale/lg_UG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lg_UG.utf8/LC_MONETARY
+#usr/lib/locale/lg_UG.utf8/LC_NAME
+#usr/lib/locale/lg_UG.utf8/LC_NUMERIC
+#usr/lib/locale/lg_UG.utf8/LC_PAPER
+#usr/lib/locale/lg_UG.utf8/LC_TELEPHONE
+#usr/lib/locale/lg_UG.utf8/LC_TIME
+#usr/lib/locale/lg_UG/LC_ADDRESS
+#usr/lib/locale/lg_UG/LC_COLLATE
+#usr/lib/locale/lg_UG/LC_CTYPE
+#usr/lib/locale/lg_UG/LC_IDENTIFICATION
+#usr/lib/locale/lg_UG/LC_MEASUREMENT
+#usr/lib/locale/lg_UG/LC_MESSAGES
+#usr/lib/locale/lg_UG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lg_UG/LC_MONETARY
+#usr/lib/locale/lg_UG/LC_NAME
+#usr/lib/locale/lg_UG/LC_NUMERIC
+#usr/lib/locale/lg_UG/LC_PAPER
+#usr/lib/locale/lg_UG/LC_TELEPHONE
+#usr/lib/locale/lg_UG/LC_TIME
+#usr/lib/locale/li_BE
+#usr/lib/locale/li_BE/LC_ADDRESS
+#usr/lib/locale/li_BE/LC_COLLATE
+#usr/lib/locale/li_BE/LC_CTYPE
+#usr/lib/locale/li_BE/LC_IDENTIFICATION
+#usr/lib/locale/li_BE/LC_MEASUREMENT
+#usr/lib/locale/li_BE/LC_MESSAGES
+#usr/lib/locale/li_BE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/li_BE/LC_MONETARY
+#usr/lib/locale/li_BE/LC_NAME
+#usr/lib/locale/li_BE/LC_NUMERIC
+#usr/lib/locale/li_BE/LC_PAPER
+#usr/lib/locale/li_BE/LC_TELEPHONE
+#usr/lib/locale/li_BE/LC_TIME
+#usr/lib/locale/li_NL
+#usr/lib/locale/li_NL/LC_ADDRESS
+#usr/lib/locale/li_NL/LC_COLLATE
+#usr/lib/locale/li_NL/LC_CTYPE
+#usr/lib/locale/li_NL/LC_IDENTIFICATION
+#usr/lib/locale/li_NL/LC_MEASUREMENT
+#usr/lib/locale/li_NL/LC_MESSAGES
+#usr/lib/locale/li_NL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/li_NL/LC_MONETARY
+#usr/lib/locale/li_NL/LC_NAME
+#usr/lib/locale/li_NL/LC_NUMERIC
+#usr/lib/locale/li_NL/LC_PAPER
+#usr/lib/locale/li_NL/LC_TELEPHONE
+#usr/lib/locale/li_NL/LC_TIME
+#usr/lib/locale/lo_LA
+#usr/lib/locale/lo_LA/LC_ADDRESS
+#usr/lib/locale/lo_LA/LC_COLLATE
+#usr/lib/locale/lo_LA/LC_CTYPE
+#usr/lib/locale/lo_LA/LC_IDENTIFICATION
+#usr/lib/locale/lo_LA/LC_MEASUREMENT
+#usr/lib/locale/lo_LA/LC_MESSAGES
+#usr/lib/locale/lo_LA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lo_LA/LC_MONETARY
+#usr/lib/locale/lo_LA/LC_NAME
+#usr/lib/locale/lo_LA/LC_NUMERIC
+#usr/lib/locale/lo_LA/LC_PAPER
+#usr/lib/locale/lo_LA/LC_TELEPHONE
+#usr/lib/locale/lo_LA/LC_TIME
+#usr/lib/locale/lt_LT
+#usr/lib/locale/lt_LT.utf8
+#usr/lib/locale/lt_LT.utf8/LC_ADDRESS
+#usr/lib/locale/lt_LT.utf8/LC_COLLATE
+#usr/lib/locale/lt_LT.utf8/LC_CTYPE
+#usr/lib/locale/lt_LT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/lt_LT.utf8/LC_MEASUREMENT
+#usr/lib/locale/lt_LT.utf8/LC_MESSAGES
+#usr/lib/locale/lt_LT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lt_LT.utf8/LC_MONETARY
+#usr/lib/locale/lt_LT.utf8/LC_NAME
+#usr/lib/locale/lt_LT.utf8/LC_NUMERIC
+#usr/lib/locale/lt_LT.utf8/LC_PAPER
+#usr/lib/locale/lt_LT.utf8/LC_TELEPHONE
+#usr/lib/locale/lt_LT.utf8/LC_TIME
+#usr/lib/locale/lt_LT/LC_ADDRESS
+#usr/lib/locale/lt_LT/LC_COLLATE
+#usr/lib/locale/lt_LT/LC_CTYPE
+#usr/lib/locale/lt_LT/LC_IDENTIFICATION
+#usr/lib/locale/lt_LT/LC_MEASUREMENT
+#usr/lib/locale/lt_LT/LC_MESSAGES
+#usr/lib/locale/lt_LT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lt_LT/LC_MONETARY
+#usr/lib/locale/lt_LT/LC_NAME
+#usr/lib/locale/lt_LT/LC_NUMERIC
+#usr/lib/locale/lt_LT/LC_PAPER
+#usr/lib/locale/lt_LT/LC_TELEPHONE
+#usr/lib/locale/lt_LT/LC_TIME
+#usr/lib/locale/lv_LV
+#usr/lib/locale/lv_LV.utf8
+#usr/lib/locale/lv_LV.utf8/LC_ADDRESS
+#usr/lib/locale/lv_LV.utf8/LC_COLLATE
+#usr/lib/locale/lv_LV.utf8/LC_CTYPE
+#usr/lib/locale/lv_LV.utf8/LC_IDENTIFICATION
+#usr/lib/locale/lv_LV.utf8/LC_MEASUREMENT
+#usr/lib/locale/lv_LV.utf8/LC_MESSAGES
+#usr/lib/locale/lv_LV.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lv_LV.utf8/LC_MONETARY
+#usr/lib/locale/lv_LV.utf8/LC_NAME
+#usr/lib/locale/lv_LV.utf8/LC_NUMERIC
+#usr/lib/locale/lv_LV.utf8/LC_PAPER
+#usr/lib/locale/lv_LV.utf8/LC_TELEPHONE
+#usr/lib/locale/lv_LV.utf8/LC_TIME
+#usr/lib/locale/lv_LV/LC_ADDRESS
+#usr/lib/locale/lv_LV/LC_COLLATE
+#usr/lib/locale/lv_LV/LC_CTYPE
+#usr/lib/locale/lv_LV/LC_IDENTIFICATION
+#usr/lib/locale/lv_LV/LC_MEASUREMENT
+#usr/lib/locale/lv_LV/LC_MESSAGES
+#usr/lib/locale/lv_LV/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/lv_LV/LC_MONETARY
+#usr/lib/locale/lv_LV/LC_NAME
+#usr/lib/locale/lv_LV/LC_NUMERIC
+#usr/lib/locale/lv_LV/LC_PAPER
+#usr/lib/locale/lv_LV/LC_TELEPHONE
+#usr/lib/locale/lv_LV/LC_TIME
+#usr/lib/locale/mai_IN
+#usr/lib/locale/mai_IN/LC_ADDRESS
+#usr/lib/locale/mai_IN/LC_COLLATE
+#usr/lib/locale/mai_IN/LC_CTYPE
+#usr/lib/locale/mai_IN/LC_IDENTIFICATION
+#usr/lib/locale/mai_IN/LC_MEASUREMENT
+#usr/lib/locale/mai_IN/LC_MESSAGES
+#usr/lib/locale/mai_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mai_IN/LC_MONETARY
+#usr/lib/locale/mai_IN/LC_NAME
+#usr/lib/locale/mai_IN/LC_NUMERIC
+#usr/lib/locale/mai_IN/LC_PAPER
+#usr/lib/locale/mai_IN/LC_TELEPHONE
+#usr/lib/locale/mai_IN/LC_TIME
+#usr/lib/locale/mg_MG
+#usr/lib/locale/mg_MG.utf8
+#usr/lib/locale/mg_MG.utf8/LC_ADDRESS
+#usr/lib/locale/mg_MG.utf8/LC_COLLATE
+#usr/lib/locale/mg_MG.utf8/LC_CTYPE
+#usr/lib/locale/mg_MG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/mg_MG.utf8/LC_MEASUREMENT
+#usr/lib/locale/mg_MG.utf8/LC_MESSAGES
+#usr/lib/locale/mg_MG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mg_MG.utf8/LC_MONETARY
+#usr/lib/locale/mg_MG.utf8/LC_NAME
+#usr/lib/locale/mg_MG.utf8/LC_NUMERIC
+#usr/lib/locale/mg_MG.utf8/LC_PAPER
+#usr/lib/locale/mg_MG.utf8/LC_TELEPHONE
+#usr/lib/locale/mg_MG.utf8/LC_TIME
+#usr/lib/locale/mg_MG/LC_ADDRESS
+#usr/lib/locale/mg_MG/LC_COLLATE
+#usr/lib/locale/mg_MG/LC_CTYPE
+#usr/lib/locale/mg_MG/LC_IDENTIFICATION
+#usr/lib/locale/mg_MG/LC_MEASUREMENT
+#usr/lib/locale/mg_MG/LC_MESSAGES
+#usr/lib/locale/mg_MG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mg_MG/LC_MONETARY
+#usr/lib/locale/mg_MG/LC_NAME
+#usr/lib/locale/mg_MG/LC_NUMERIC
+#usr/lib/locale/mg_MG/LC_PAPER
+#usr/lib/locale/mg_MG/LC_TELEPHONE
+#usr/lib/locale/mg_MG/LC_TIME
+#usr/lib/locale/mi_NZ
+#usr/lib/locale/mi_NZ.utf8
+#usr/lib/locale/mi_NZ.utf8/LC_ADDRESS
+#usr/lib/locale/mi_NZ.utf8/LC_COLLATE
+#usr/lib/locale/mi_NZ.utf8/LC_CTYPE
+#usr/lib/locale/mi_NZ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/mi_NZ.utf8/LC_MEASUREMENT
+#usr/lib/locale/mi_NZ.utf8/LC_MESSAGES
+#usr/lib/locale/mi_NZ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mi_NZ.utf8/LC_MONETARY
+#usr/lib/locale/mi_NZ.utf8/LC_NAME
+#usr/lib/locale/mi_NZ.utf8/LC_NUMERIC
+#usr/lib/locale/mi_NZ.utf8/LC_PAPER
+#usr/lib/locale/mi_NZ.utf8/LC_TELEPHONE
+#usr/lib/locale/mi_NZ.utf8/LC_TIME
+#usr/lib/locale/mi_NZ/LC_ADDRESS
+#usr/lib/locale/mi_NZ/LC_COLLATE
+#usr/lib/locale/mi_NZ/LC_CTYPE
+#usr/lib/locale/mi_NZ/LC_IDENTIFICATION
+#usr/lib/locale/mi_NZ/LC_MEASUREMENT
+#usr/lib/locale/mi_NZ/LC_MESSAGES
+#usr/lib/locale/mi_NZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mi_NZ/LC_MONETARY
+#usr/lib/locale/mi_NZ/LC_NAME
+#usr/lib/locale/mi_NZ/LC_NUMERIC
+#usr/lib/locale/mi_NZ/LC_PAPER
+#usr/lib/locale/mi_NZ/LC_TELEPHONE
+#usr/lib/locale/mi_NZ/LC_TIME
+#usr/lib/locale/mk_MK
+#usr/lib/locale/mk_MK.utf8
+#usr/lib/locale/mk_MK.utf8/LC_ADDRESS
+#usr/lib/locale/mk_MK.utf8/LC_COLLATE
+#usr/lib/locale/mk_MK.utf8/LC_CTYPE
+#usr/lib/locale/mk_MK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/mk_MK.utf8/LC_MEASUREMENT
+#usr/lib/locale/mk_MK.utf8/LC_MESSAGES
+#usr/lib/locale/mk_MK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mk_MK.utf8/LC_MONETARY
+#usr/lib/locale/mk_MK.utf8/LC_NAME
+#usr/lib/locale/mk_MK.utf8/LC_NUMERIC
+#usr/lib/locale/mk_MK.utf8/LC_PAPER
+#usr/lib/locale/mk_MK.utf8/LC_TELEPHONE
+#usr/lib/locale/mk_MK.utf8/LC_TIME
+#usr/lib/locale/mk_MK/LC_ADDRESS
+#usr/lib/locale/mk_MK/LC_COLLATE
+#usr/lib/locale/mk_MK/LC_CTYPE
+#usr/lib/locale/mk_MK/LC_IDENTIFICATION
+#usr/lib/locale/mk_MK/LC_MEASUREMENT
+#usr/lib/locale/mk_MK/LC_MESSAGES
+#usr/lib/locale/mk_MK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mk_MK/LC_MONETARY
+#usr/lib/locale/mk_MK/LC_NAME
+#usr/lib/locale/mk_MK/LC_NUMERIC
+#usr/lib/locale/mk_MK/LC_PAPER
+#usr/lib/locale/mk_MK/LC_TELEPHONE
+#usr/lib/locale/mk_MK/LC_TIME
+#usr/lib/locale/ml_IN
+#usr/lib/locale/ml_IN/LC_ADDRESS
+#usr/lib/locale/ml_IN/LC_COLLATE
+#usr/lib/locale/ml_IN/LC_CTYPE
+#usr/lib/locale/ml_IN/LC_IDENTIFICATION
+#usr/lib/locale/ml_IN/LC_MEASUREMENT
+#usr/lib/locale/ml_IN/LC_MESSAGES
+#usr/lib/locale/ml_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ml_IN/LC_MONETARY
+#usr/lib/locale/ml_IN/LC_NAME
+#usr/lib/locale/ml_IN/LC_NUMERIC
+#usr/lib/locale/ml_IN/LC_PAPER
+#usr/lib/locale/ml_IN/LC_TELEPHONE
+#usr/lib/locale/ml_IN/LC_TIME
+#usr/lib/locale/mn_MN
+#usr/lib/locale/mn_MN/LC_ADDRESS
+#usr/lib/locale/mn_MN/LC_COLLATE
+#usr/lib/locale/mn_MN/LC_CTYPE
+#usr/lib/locale/mn_MN/LC_IDENTIFICATION
+#usr/lib/locale/mn_MN/LC_MEASUREMENT
+#usr/lib/locale/mn_MN/LC_MESSAGES
+#usr/lib/locale/mn_MN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mn_MN/LC_MONETARY
+#usr/lib/locale/mn_MN/LC_NAME
+#usr/lib/locale/mn_MN/LC_NUMERIC
+#usr/lib/locale/mn_MN/LC_PAPER
+#usr/lib/locale/mn_MN/LC_TELEPHONE
+#usr/lib/locale/mn_MN/LC_TIME
+#usr/lib/locale/mr_IN
+#usr/lib/locale/mr_IN/LC_ADDRESS
+#usr/lib/locale/mr_IN/LC_COLLATE
+#usr/lib/locale/mr_IN/LC_CTYPE
+#usr/lib/locale/mr_IN/LC_IDENTIFICATION
+#usr/lib/locale/mr_IN/LC_MEASUREMENT
+#usr/lib/locale/mr_IN/LC_MESSAGES
+#usr/lib/locale/mr_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mr_IN/LC_MONETARY
+#usr/lib/locale/mr_IN/LC_NAME
+#usr/lib/locale/mr_IN/LC_NUMERIC
+#usr/lib/locale/mr_IN/LC_PAPER
+#usr/lib/locale/mr_IN/LC_TELEPHONE
+#usr/lib/locale/mr_IN/LC_TIME
+#usr/lib/locale/ms_MY
+#usr/lib/locale/ms_MY.utf8
+#usr/lib/locale/ms_MY.utf8/LC_ADDRESS
+#usr/lib/locale/ms_MY.utf8/LC_COLLATE
+#usr/lib/locale/ms_MY.utf8/LC_CTYPE
+#usr/lib/locale/ms_MY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ms_MY.utf8/LC_MEASUREMENT
+#usr/lib/locale/ms_MY.utf8/LC_MESSAGES
+#usr/lib/locale/ms_MY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ms_MY.utf8/LC_MONETARY
+#usr/lib/locale/ms_MY.utf8/LC_NAME
+#usr/lib/locale/ms_MY.utf8/LC_NUMERIC
+#usr/lib/locale/ms_MY.utf8/LC_PAPER
+#usr/lib/locale/ms_MY.utf8/LC_TELEPHONE
+#usr/lib/locale/ms_MY.utf8/LC_TIME
+#usr/lib/locale/ms_MY/LC_ADDRESS
+#usr/lib/locale/ms_MY/LC_COLLATE
+#usr/lib/locale/ms_MY/LC_CTYPE
+#usr/lib/locale/ms_MY/LC_IDENTIFICATION
+#usr/lib/locale/ms_MY/LC_MEASUREMENT
+#usr/lib/locale/ms_MY/LC_MESSAGES
+#usr/lib/locale/ms_MY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ms_MY/LC_MONETARY
+#usr/lib/locale/ms_MY/LC_NAME
+#usr/lib/locale/ms_MY/LC_NUMERIC
+#usr/lib/locale/ms_MY/LC_PAPER
+#usr/lib/locale/ms_MY/LC_TELEPHONE
+#usr/lib/locale/ms_MY/LC_TIME
+#usr/lib/locale/mt_MT
+#usr/lib/locale/mt_MT.utf8
+#usr/lib/locale/mt_MT.utf8/LC_ADDRESS
+#usr/lib/locale/mt_MT.utf8/LC_COLLATE
+#usr/lib/locale/mt_MT.utf8/LC_CTYPE
+#usr/lib/locale/mt_MT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/mt_MT.utf8/LC_MEASUREMENT
+#usr/lib/locale/mt_MT.utf8/LC_MESSAGES
+#usr/lib/locale/mt_MT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mt_MT.utf8/LC_MONETARY
+#usr/lib/locale/mt_MT.utf8/LC_NAME
+#usr/lib/locale/mt_MT.utf8/LC_NUMERIC
+#usr/lib/locale/mt_MT.utf8/LC_PAPER
+#usr/lib/locale/mt_MT.utf8/LC_TELEPHONE
+#usr/lib/locale/mt_MT.utf8/LC_TIME
+#usr/lib/locale/mt_MT/LC_ADDRESS
+#usr/lib/locale/mt_MT/LC_COLLATE
+#usr/lib/locale/mt_MT/LC_CTYPE
+#usr/lib/locale/mt_MT/LC_IDENTIFICATION
+#usr/lib/locale/mt_MT/LC_MEASUREMENT
+#usr/lib/locale/mt_MT/LC_MESSAGES
+#usr/lib/locale/mt_MT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/mt_MT/LC_MONETARY
+#usr/lib/locale/mt_MT/LC_NAME
+#usr/lib/locale/mt_MT/LC_NUMERIC
+#usr/lib/locale/mt_MT/LC_PAPER
+#usr/lib/locale/mt_MT/LC_TELEPHONE
+#usr/lib/locale/mt_MT/LC_TIME
+#usr/lib/locale/my_MM
+#usr/lib/locale/my_MM/LC_ADDRESS
+#usr/lib/locale/my_MM/LC_COLLATE
+#usr/lib/locale/my_MM/LC_CTYPE
+#usr/lib/locale/my_MM/LC_IDENTIFICATION
+#usr/lib/locale/my_MM/LC_MEASUREMENT
+#usr/lib/locale/my_MM/LC_MESSAGES
+#usr/lib/locale/my_MM/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/my_MM/LC_MONETARY
+#usr/lib/locale/my_MM/LC_NAME
+#usr/lib/locale/my_MM/LC_NUMERIC
+#usr/lib/locale/my_MM/LC_PAPER
+#usr/lib/locale/my_MM/LC_TELEPHONE
+#usr/lib/locale/my_MM/LC_TIME
+#usr/lib/locale/nan_TW@latin
+#usr/lib/locale/nan_TW@latin/LC_ADDRESS
+#usr/lib/locale/nan_TW@latin/LC_COLLATE
+#usr/lib/locale/nan_TW@latin/LC_CTYPE
+#usr/lib/locale/nan_TW@latin/LC_IDENTIFICATION
+#usr/lib/locale/nan_TW@latin/LC_MEASUREMENT
+#usr/lib/locale/nan_TW@latin/LC_MESSAGES
+#usr/lib/locale/nan_TW@latin/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nan_TW@latin/LC_MONETARY
+#usr/lib/locale/nan_TW@latin/LC_NAME
+#usr/lib/locale/nan_TW@latin/LC_NUMERIC
+#usr/lib/locale/nan_TW@latin/LC_PAPER
+#usr/lib/locale/nan_TW@latin/LC_TELEPHONE
+#usr/lib/locale/nan_TW@latin/LC_TIME
+#usr/lib/locale/nb_NO
+#usr/lib/locale/nb_NO.utf8
+#usr/lib/locale/nb_NO.utf8/LC_ADDRESS
+#usr/lib/locale/nb_NO.utf8/LC_COLLATE
+#usr/lib/locale/nb_NO.utf8/LC_CTYPE
+#usr/lib/locale/nb_NO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/nb_NO.utf8/LC_MEASUREMENT
+#usr/lib/locale/nb_NO.utf8/LC_MESSAGES
+#usr/lib/locale/nb_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nb_NO.utf8/LC_MONETARY
+#usr/lib/locale/nb_NO.utf8/LC_NAME
+#usr/lib/locale/nb_NO.utf8/LC_NUMERIC
+#usr/lib/locale/nb_NO.utf8/LC_PAPER
+#usr/lib/locale/nb_NO.utf8/LC_TELEPHONE
+#usr/lib/locale/nb_NO.utf8/LC_TIME
+#usr/lib/locale/nb_NO/LC_ADDRESS
+#usr/lib/locale/nb_NO/LC_COLLATE
+#usr/lib/locale/nb_NO/LC_CTYPE
+#usr/lib/locale/nb_NO/LC_IDENTIFICATION
+#usr/lib/locale/nb_NO/LC_MEASUREMENT
+#usr/lib/locale/nb_NO/LC_MESSAGES
+#usr/lib/locale/nb_NO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nb_NO/LC_MONETARY
+#usr/lib/locale/nb_NO/LC_NAME
+#usr/lib/locale/nb_NO/LC_NUMERIC
+#usr/lib/locale/nb_NO/LC_PAPER
+#usr/lib/locale/nb_NO/LC_TELEPHONE
+#usr/lib/locale/nb_NO/LC_TIME
+#usr/lib/locale/nds_DE
+#usr/lib/locale/nds_DE/LC_ADDRESS
+#usr/lib/locale/nds_DE/LC_COLLATE
+#usr/lib/locale/nds_DE/LC_CTYPE
+#usr/lib/locale/nds_DE/LC_IDENTIFICATION
+#usr/lib/locale/nds_DE/LC_MEASUREMENT
+#usr/lib/locale/nds_DE/LC_MESSAGES
+#usr/lib/locale/nds_DE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nds_DE/LC_MONETARY
+#usr/lib/locale/nds_DE/LC_NAME
+#usr/lib/locale/nds_DE/LC_NUMERIC
+#usr/lib/locale/nds_DE/LC_PAPER
+#usr/lib/locale/nds_DE/LC_TELEPHONE
+#usr/lib/locale/nds_DE/LC_TIME
+#usr/lib/locale/nds_NL
+#usr/lib/locale/nds_NL/LC_ADDRESS
+#usr/lib/locale/nds_NL/LC_COLLATE
+#usr/lib/locale/nds_NL/LC_CTYPE
+#usr/lib/locale/nds_NL/LC_IDENTIFICATION
+#usr/lib/locale/nds_NL/LC_MEASUREMENT
+#usr/lib/locale/nds_NL/LC_MESSAGES
+#usr/lib/locale/nds_NL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nds_NL/LC_MONETARY
+#usr/lib/locale/nds_NL/LC_NAME
+#usr/lib/locale/nds_NL/LC_NUMERIC
+#usr/lib/locale/nds_NL/LC_PAPER
+#usr/lib/locale/nds_NL/LC_TELEPHONE
+#usr/lib/locale/nds_NL/LC_TIME
+#usr/lib/locale/ne_NP
+#usr/lib/locale/ne_NP/LC_ADDRESS
+#usr/lib/locale/ne_NP/LC_COLLATE
+#usr/lib/locale/ne_NP/LC_CTYPE
+#usr/lib/locale/ne_NP/LC_IDENTIFICATION
+#usr/lib/locale/ne_NP/LC_MEASUREMENT
+#usr/lib/locale/ne_NP/LC_MESSAGES
+#usr/lib/locale/ne_NP/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ne_NP/LC_MONETARY
+#usr/lib/locale/ne_NP/LC_NAME
+#usr/lib/locale/ne_NP/LC_NUMERIC
+#usr/lib/locale/ne_NP/LC_PAPER
+#usr/lib/locale/ne_NP/LC_TELEPHONE
+#usr/lib/locale/ne_NP/LC_TIME
+#usr/lib/locale/nl_AW
+#usr/lib/locale/nl_AW/LC_ADDRESS
+#usr/lib/locale/nl_AW/LC_COLLATE
+#usr/lib/locale/nl_AW/LC_CTYPE
+#usr/lib/locale/nl_AW/LC_IDENTIFICATION
+#usr/lib/locale/nl_AW/LC_MEASUREMENT
+#usr/lib/locale/nl_AW/LC_MESSAGES
+#usr/lib/locale/nl_AW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_AW/LC_MONETARY
+#usr/lib/locale/nl_AW/LC_NAME
+#usr/lib/locale/nl_AW/LC_NUMERIC
+#usr/lib/locale/nl_AW/LC_PAPER
+#usr/lib/locale/nl_AW/LC_TELEPHONE
+#usr/lib/locale/nl_AW/LC_TIME
+#usr/lib/locale/nl_BE
+#usr/lib/locale/nl_BE.utf8
+#usr/lib/locale/nl_BE.utf8/LC_ADDRESS
+#usr/lib/locale/nl_BE.utf8/LC_COLLATE
+#usr/lib/locale/nl_BE.utf8/LC_CTYPE
+#usr/lib/locale/nl_BE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/nl_BE.utf8/LC_MEASUREMENT
+#usr/lib/locale/nl_BE.utf8/LC_MESSAGES
+#usr/lib/locale/nl_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_BE.utf8/LC_MONETARY
+#usr/lib/locale/nl_BE.utf8/LC_NAME
+#usr/lib/locale/nl_BE.utf8/LC_NUMERIC
+#usr/lib/locale/nl_BE.utf8/LC_PAPER
+#usr/lib/locale/nl_BE.utf8/LC_TELEPHONE
+#usr/lib/locale/nl_BE.utf8/LC_TIME
+#usr/lib/locale/nl_BE/LC_ADDRESS
+#usr/lib/locale/nl_BE/LC_COLLATE
+#usr/lib/locale/nl_BE/LC_CTYPE
+#usr/lib/locale/nl_BE/LC_IDENTIFICATION
+#usr/lib/locale/nl_BE/LC_MEASUREMENT
+#usr/lib/locale/nl_BE/LC_MESSAGES
+#usr/lib/locale/nl_BE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_BE/LC_MONETARY
+#usr/lib/locale/nl_BE/LC_NAME
+#usr/lib/locale/nl_BE/LC_NUMERIC
+#usr/lib/locale/nl_BE/LC_PAPER
+#usr/lib/locale/nl_BE/LC_TELEPHONE
+#usr/lib/locale/nl_BE/LC_TIME
+#usr/lib/locale/nl_BE@euro
+#usr/lib/locale/nl_BE@euro/LC_ADDRESS
+#usr/lib/locale/nl_BE@euro/LC_COLLATE
+#usr/lib/locale/nl_BE@euro/LC_CTYPE
+#usr/lib/locale/nl_BE@euro/LC_IDENTIFICATION
+#usr/lib/locale/nl_BE@euro/LC_MEASUREMENT
+#usr/lib/locale/nl_BE@euro/LC_MESSAGES
+#usr/lib/locale/nl_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_BE@euro/LC_MONETARY
+#usr/lib/locale/nl_BE@euro/LC_NAME
+#usr/lib/locale/nl_BE@euro/LC_NUMERIC
+#usr/lib/locale/nl_BE@euro/LC_PAPER
+#usr/lib/locale/nl_BE@euro/LC_TELEPHONE
+#usr/lib/locale/nl_BE@euro/LC_TIME
+#usr/lib/locale/nl_NL
+#usr/lib/locale/nl_NL.utf8
+#usr/lib/locale/nl_NL.utf8/LC_ADDRESS
+#usr/lib/locale/nl_NL.utf8/LC_COLLATE
+#usr/lib/locale/nl_NL.utf8/LC_CTYPE
+#usr/lib/locale/nl_NL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/nl_NL.utf8/LC_MEASUREMENT
+#usr/lib/locale/nl_NL.utf8/LC_MESSAGES
+#usr/lib/locale/nl_NL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_NL.utf8/LC_MONETARY
+#usr/lib/locale/nl_NL.utf8/LC_NAME
+#usr/lib/locale/nl_NL.utf8/LC_NUMERIC
+#usr/lib/locale/nl_NL.utf8/LC_PAPER
+#usr/lib/locale/nl_NL.utf8/LC_TELEPHONE
+#usr/lib/locale/nl_NL.utf8/LC_TIME
+#usr/lib/locale/nl_NL/LC_ADDRESS
+#usr/lib/locale/nl_NL/LC_COLLATE
+#usr/lib/locale/nl_NL/LC_CTYPE
+#usr/lib/locale/nl_NL/LC_IDENTIFICATION
+#usr/lib/locale/nl_NL/LC_MEASUREMENT
+#usr/lib/locale/nl_NL/LC_MESSAGES
+#usr/lib/locale/nl_NL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_NL/LC_MONETARY
+#usr/lib/locale/nl_NL/LC_NAME
+#usr/lib/locale/nl_NL/LC_NUMERIC
+#usr/lib/locale/nl_NL/LC_PAPER
+#usr/lib/locale/nl_NL/LC_TELEPHONE
+#usr/lib/locale/nl_NL/LC_TIME
+#usr/lib/locale/nl_NL@euro
+#usr/lib/locale/nl_NL@euro/LC_ADDRESS
+#usr/lib/locale/nl_NL@euro/LC_COLLATE
+#usr/lib/locale/nl_NL@euro/LC_CTYPE
+#usr/lib/locale/nl_NL@euro/LC_IDENTIFICATION
+#usr/lib/locale/nl_NL@euro/LC_MEASUREMENT
+#usr/lib/locale/nl_NL@euro/LC_MESSAGES
+#usr/lib/locale/nl_NL@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nl_NL@euro/LC_MONETARY
+#usr/lib/locale/nl_NL@euro/LC_NAME
+#usr/lib/locale/nl_NL@euro/LC_NUMERIC
+#usr/lib/locale/nl_NL@euro/LC_PAPER
+#usr/lib/locale/nl_NL@euro/LC_TELEPHONE
+#usr/lib/locale/nl_NL@euro/LC_TIME
+#usr/lib/locale/nn_NO
+#usr/lib/locale/nn_NO.utf8
+#usr/lib/locale/nn_NO.utf8/LC_ADDRESS
+#usr/lib/locale/nn_NO.utf8/LC_COLLATE
+#usr/lib/locale/nn_NO.utf8/LC_CTYPE
+#usr/lib/locale/nn_NO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/nn_NO.utf8/LC_MEASUREMENT
+#usr/lib/locale/nn_NO.utf8/LC_MESSAGES
+#usr/lib/locale/nn_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nn_NO.utf8/LC_MONETARY
+#usr/lib/locale/nn_NO.utf8/LC_NAME
+#usr/lib/locale/nn_NO.utf8/LC_NUMERIC
+#usr/lib/locale/nn_NO.utf8/LC_PAPER
+#usr/lib/locale/nn_NO.utf8/LC_TELEPHONE
+#usr/lib/locale/nn_NO.utf8/LC_TIME
+#usr/lib/locale/nn_NO/LC_ADDRESS
+#usr/lib/locale/nn_NO/LC_COLLATE
+#usr/lib/locale/nn_NO/LC_CTYPE
+#usr/lib/locale/nn_NO/LC_IDENTIFICATION
+#usr/lib/locale/nn_NO/LC_MEASUREMENT
+#usr/lib/locale/nn_NO/LC_MESSAGES
+#usr/lib/locale/nn_NO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nn_NO/LC_MONETARY
+#usr/lib/locale/nn_NO/LC_NAME
+#usr/lib/locale/nn_NO/LC_NUMERIC
+#usr/lib/locale/nn_NO/LC_PAPER
+#usr/lib/locale/nn_NO/LC_TELEPHONE
+#usr/lib/locale/nn_NO/LC_TIME
+#usr/lib/locale/no_NO
+#usr/lib/locale/no_NO.utf8
+#usr/lib/locale/no_NO.utf8/LC_ADDRESS
+#usr/lib/locale/no_NO.utf8/LC_COLLATE
+#usr/lib/locale/no_NO.utf8/LC_CTYPE
+#usr/lib/locale/no_NO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/no_NO.utf8/LC_MEASUREMENT
+#usr/lib/locale/no_NO.utf8/LC_MESSAGES
+#usr/lib/locale/no_NO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/no_NO.utf8/LC_MONETARY
+#usr/lib/locale/no_NO.utf8/LC_NAME
+#usr/lib/locale/no_NO.utf8/LC_NUMERIC
+#usr/lib/locale/no_NO.utf8/LC_PAPER
+#usr/lib/locale/no_NO.utf8/LC_TELEPHONE
+#usr/lib/locale/no_NO.utf8/LC_TIME
+#usr/lib/locale/no_NO/LC_ADDRESS
+#usr/lib/locale/no_NO/LC_COLLATE
+#usr/lib/locale/no_NO/LC_CTYPE
+#usr/lib/locale/no_NO/LC_IDENTIFICATION
+#usr/lib/locale/no_NO/LC_MEASUREMENT
+#usr/lib/locale/no_NO/LC_MESSAGES
+#usr/lib/locale/no_NO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/no_NO/LC_MONETARY
+#usr/lib/locale/no_NO/LC_NAME
+#usr/lib/locale/no_NO/LC_NUMERIC
+#usr/lib/locale/no_NO/LC_PAPER
+#usr/lib/locale/no_NO/LC_TELEPHONE
+#usr/lib/locale/no_NO/LC_TIME
+#usr/lib/locale/nr_ZA
+#usr/lib/locale/nr_ZA/LC_ADDRESS
+#usr/lib/locale/nr_ZA/LC_COLLATE
+#usr/lib/locale/nr_ZA/LC_CTYPE
+#usr/lib/locale/nr_ZA/LC_IDENTIFICATION
+#usr/lib/locale/nr_ZA/LC_MEASUREMENT
+#usr/lib/locale/nr_ZA/LC_MESSAGES
+#usr/lib/locale/nr_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nr_ZA/LC_MONETARY
+#usr/lib/locale/nr_ZA/LC_NAME
+#usr/lib/locale/nr_ZA/LC_NUMERIC
+#usr/lib/locale/nr_ZA/LC_PAPER
+#usr/lib/locale/nr_ZA/LC_TELEPHONE
+#usr/lib/locale/nr_ZA/LC_TIME
+#usr/lib/locale/nso_ZA
+#usr/lib/locale/nso_ZA/LC_ADDRESS
+#usr/lib/locale/nso_ZA/LC_COLLATE
+#usr/lib/locale/nso_ZA/LC_CTYPE
+#usr/lib/locale/nso_ZA/LC_IDENTIFICATION
+#usr/lib/locale/nso_ZA/LC_MEASUREMENT
+#usr/lib/locale/nso_ZA/LC_MESSAGES
+#usr/lib/locale/nso_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/nso_ZA/LC_MONETARY
+#usr/lib/locale/nso_ZA/LC_NAME
+#usr/lib/locale/nso_ZA/LC_NUMERIC
+#usr/lib/locale/nso_ZA/LC_PAPER
+#usr/lib/locale/nso_ZA/LC_TELEPHONE
+#usr/lib/locale/nso_ZA/LC_TIME
+#usr/lib/locale/oc_FR
+#usr/lib/locale/oc_FR.utf8
+#usr/lib/locale/oc_FR.utf8/LC_ADDRESS
+#usr/lib/locale/oc_FR.utf8/LC_COLLATE
+#usr/lib/locale/oc_FR.utf8/LC_CTYPE
+#usr/lib/locale/oc_FR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/oc_FR.utf8/LC_MEASUREMENT
+#usr/lib/locale/oc_FR.utf8/LC_MESSAGES
+#usr/lib/locale/oc_FR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/oc_FR.utf8/LC_MONETARY
+#usr/lib/locale/oc_FR.utf8/LC_NAME
+#usr/lib/locale/oc_FR.utf8/LC_NUMERIC
+#usr/lib/locale/oc_FR.utf8/LC_PAPER
+#usr/lib/locale/oc_FR.utf8/LC_TELEPHONE
+#usr/lib/locale/oc_FR.utf8/LC_TIME
+#usr/lib/locale/oc_FR/LC_ADDRESS
+#usr/lib/locale/oc_FR/LC_COLLATE
+#usr/lib/locale/oc_FR/LC_CTYPE
+#usr/lib/locale/oc_FR/LC_IDENTIFICATION
+#usr/lib/locale/oc_FR/LC_MEASUREMENT
+#usr/lib/locale/oc_FR/LC_MESSAGES
+#usr/lib/locale/oc_FR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/oc_FR/LC_MONETARY
+#usr/lib/locale/oc_FR/LC_NAME
+#usr/lib/locale/oc_FR/LC_NUMERIC
+#usr/lib/locale/oc_FR/LC_PAPER
+#usr/lib/locale/oc_FR/LC_TELEPHONE
+#usr/lib/locale/oc_FR/LC_TIME
+#usr/lib/locale/om_ET
+#usr/lib/locale/om_ET/LC_ADDRESS
+#usr/lib/locale/om_ET/LC_COLLATE
+#usr/lib/locale/om_ET/LC_CTYPE
+#usr/lib/locale/om_ET/LC_IDENTIFICATION
+#usr/lib/locale/om_ET/LC_MEASUREMENT
+#usr/lib/locale/om_ET/LC_MESSAGES
+#usr/lib/locale/om_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/om_ET/LC_MONETARY
+#usr/lib/locale/om_ET/LC_NAME
+#usr/lib/locale/om_ET/LC_NUMERIC
+#usr/lib/locale/om_ET/LC_PAPER
+#usr/lib/locale/om_ET/LC_TELEPHONE
+#usr/lib/locale/om_ET/LC_TIME
+#usr/lib/locale/om_KE
+#usr/lib/locale/om_KE.utf8
+#usr/lib/locale/om_KE.utf8/LC_ADDRESS
+#usr/lib/locale/om_KE.utf8/LC_COLLATE
+#usr/lib/locale/om_KE.utf8/LC_CTYPE
+#usr/lib/locale/om_KE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/om_KE.utf8/LC_MEASUREMENT
+#usr/lib/locale/om_KE.utf8/LC_MESSAGES
+#usr/lib/locale/om_KE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/om_KE.utf8/LC_MONETARY
+#usr/lib/locale/om_KE.utf8/LC_NAME
+#usr/lib/locale/om_KE.utf8/LC_NUMERIC
+#usr/lib/locale/om_KE.utf8/LC_PAPER
+#usr/lib/locale/om_KE.utf8/LC_TELEPHONE
+#usr/lib/locale/om_KE.utf8/LC_TIME
+#usr/lib/locale/om_KE/LC_ADDRESS
+#usr/lib/locale/om_KE/LC_COLLATE
+#usr/lib/locale/om_KE/LC_CTYPE
+#usr/lib/locale/om_KE/LC_IDENTIFICATION
+#usr/lib/locale/om_KE/LC_MEASUREMENT
+#usr/lib/locale/om_KE/LC_MESSAGES
+#usr/lib/locale/om_KE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/om_KE/LC_MONETARY
+#usr/lib/locale/om_KE/LC_NAME
+#usr/lib/locale/om_KE/LC_NUMERIC
+#usr/lib/locale/om_KE/LC_PAPER
+#usr/lib/locale/om_KE/LC_TELEPHONE
+#usr/lib/locale/om_KE/LC_TIME
+#usr/lib/locale/or_IN
+#usr/lib/locale/or_IN/LC_ADDRESS
+#usr/lib/locale/or_IN/LC_COLLATE
+#usr/lib/locale/or_IN/LC_CTYPE
+#usr/lib/locale/or_IN/LC_IDENTIFICATION
+#usr/lib/locale/or_IN/LC_MEASUREMENT
+#usr/lib/locale/or_IN/LC_MESSAGES
+#usr/lib/locale/or_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/or_IN/LC_MONETARY
+#usr/lib/locale/or_IN/LC_NAME
+#usr/lib/locale/or_IN/LC_NUMERIC
+#usr/lib/locale/or_IN/LC_PAPER
+#usr/lib/locale/or_IN/LC_TELEPHONE
+#usr/lib/locale/or_IN/LC_TIME
+#usr/lib/locale/pa_IN
+#usr/lib/locale/pa_IN/LC_ADDRESS
+#usr/lib/locale/pa_IN/LC_COLLATE
+#usr/lib/locale/pa_IN/LC_CTYPE
+#usr/lib/locale/pa_IN/LC_IDENTIFICATION
+#usr/lib/locale/pa_IN/LC_MEASUREMENT
+#usr/lib/locale/pa_IN/LC_MESSAGES
+#usr/lib/locale/pa_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pa_IN/LC_MONETARY
+#usr/lib/locale/pa_IN/LC_NAME
+#usr/lib/locale/pa_IN/LC_NUMERIC
+#usr/lib/locale/pa_IN/LC_PAPER
+#usr/lib/locale/pa_IN/LC_TELEPHONE
+#usr/lib/locale/pa_IN/LC_TIME
+#usr/lib/locale/pa_PK
+#usr/lib/locale/pa_PK/LC_ADDRESS
+#usr/lib/locale/pa_PK/LC_COLLATE
+#usr/lib/locale/pa_PK/LC_CTYPE
+#usr/lib/locale/pa_PK/LC_IDENTIFICATION
+#usr/lib/locale/pa_PK/LC_MEASUREMENT
+#usr/lib/locale/pa_PK/LC_MESSAGES
+#usr/lib/locale/pa_PK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pa_PK/LC_MONETARY
+#usr/lib/locale/pa_PK/LC_NAME
+#usr/lib/locale/pa_PK/LC_NUMERIC
+#usr/lib/locale/pa_PK/LC_PAPER
+#usr/lib/locale/pa_PK/LC_TELEPHONE
+#usr/lib/locale/pa_PK/LC_TIME
+#usr/lib/locale/pap_AN
+#usr/lib/locale/pap_AN/LC_ADDRESS
+#usr/lib/locale/pap_AN/LC_COLLATE
+#usr/lib/locale/pap_AN/LC_CTYPE
+#usr/lib/locale/pap_AN/LC_IDENTIFICATION
+#usr/lib/locale/pap_AN/LC_MEASUREMENT
+#usr/lib/locale/pap_AN/LC_MESSAGES
+#usr/lib/locale/pap_AN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pap_AN/LC_MONETARY
+#usr/lib/locale/pap_AN/LC_NAME
+#usr/lib/locale/pap_AN/LC_NUMERIC
+#usr/lib/locale/pap_AN/LC_PAPER
+#usr/lib/locale/pap_AN/LC_TELEPHONE
+#usr/lib/locale/pap_AN/LC_TIME
+#usr/lib/locale/pl_PL
+#usr/lib/locale/pl_PL.utf8
+#usr/lib/locale/pl_PL.utf8/LC_ADDRESS
+#usr/lib/locale/pl_PL.utf8/LC_COLLATE
+#usr/lib/locale/pl_PL.utf8/LC_CTYPE
+#usr/lib/locale/pl_PL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/pl_PL.utf8/LC_MEASUREMENT
+#usr/lib/locale/pl_PL.utf8/LC_MESSAGES
+#usr/lib/locale/pl_PL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pl_PL.utf8/LC_MONETARY
+#usr/lib/locale/pl_PL.utf8/LC_NAME
+#usr/lib/locale/pl_PL.utf8/LC_NUMERIC
+#usr/lib/locale/pl_PL.utf8/LC_PAPER
+#usr/lib/locale/pl_PL.utf8/LC_TELEPHONE
+#usr/lib/locale/pl_PL.utf8/LC_TIME
+#usr/lib/locale/pl_PL/LC_ADDRESS
+#usr/lib/locale/pl_PL/LC_COLLATE
+#usr/lib/locale/pl_PL/LC_CTYPE
+#usr/lib/locale/pl_PL/LC_IDENTIFICATION
+#usr/lib/locale/pl_PL/LC_MEASUREMENT
+#usr/lib/locale/pl_PL/LC_MESSAGES
+#usr/lib/locale/pl_PL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pl_PL/LC_MONETARY
+#usr/lib/locale/pl_PL/LC_NAME
+#usr/lib/locale/pl_PL/LC_NUMERIC
+#usr/lib/locale/pl_PL/LC_PAPER
+#usr/lib/locale/pl_PL/LC_TELEPHONE
+#usr/lib/locale/pl_PL/LC_TIME
+#usr/lib/locale/ps_AF
+#usr/lib/locale/ps_AF/LC_ADDRESS
+#usr/lib/locale/ps_AF/LC_COLLATE
+#usr/lib/locale/ps_AF/LC_CTYPE
+#usr/lib/locale/ps_AF/LC_IDENTIFICATION
+#usr/lib/locale/ps_AF/LC_MEASUREMENT
+#usr/lib/locale/ps_AF/LC_MESSAGES
+#usr/lib/locale/ps_AF/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ps_AF/LC_MONETARY
+#usr/lib/locale/ps_AF/LC_NAME
+#usr/lib/locale/ps_AF/LC_NUMERIC
+#usr/lib/locale/ps_AF/LC_PAPER
+#usr/lib/locale/ps_AF/LC_TELEPHONE
+#usr/lib/locale/ps_AF/LC_TIME
+#usr/lib/locale/pt_BR
+#usr/lib/locale/pt_BR.utf8
+#usr/lib/locale/pt_BR.utf8/LC_ADDRESS
+#usr/lib/locale/pt_BR.utf8/LC_COLLATE
+#usr/lib/locale/pt_BR.utf8/LC_CTYPE
+#usr/lib/locale/pt_BR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/pt_BR.utf8/LC_MEASUREMENT
+#usr/lib/locale/pt_BR.utf8/LC_MESSAGES
+#usr/lib/locale/pt_BR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pt_BR.utf8/LC_MONETARY
+#usr/lib/locale/pt_BR.utf8/LC_NAME
+#usr/lib/locale/pt_BR.utf8/LC_NUMERIC
+#usr/lib/locale/pt_BR.utf8/LC_PAPER
+#usr/lib/locale/pt_BR.utf8/LC_TELEPHONE
+#usr/lib/locale/pt_BR.utf8/LC_TIME
+#usr/lib/locale/pt_BR/LC_ADDRESS
+#usr/lib/locale/pt_BR/LC_COLLATE
+#usr/lib/locale/pt_BR/LC_CTYPE
+#usr/lib/locale/pt_BR/LC_IDENTIFICATION
+#usr/lib/locale/pt_BR/LC_MEASUREMENT
+#usr/lib/locale/pt_BR/LC_MESSAGES
+#usr/lib/locale/pt_BR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pt_BR/LC_MONETARY
+#usr/lib/locale/pt_BR/LC_NAME
+#usr/lib/locale/pt_BR/LC_NUMERIC
+#usr/lib/locale/pt_BR/LC_PAPER
+#usr/lib/locale/pt_BR/LC_TELEPHONE
+#usr/lib/locale/pt_BR/LC_TIME
+#usr/lib/locale/pt_PT
+#usr/lib/locale/pt_PT.utf8
+#usr/lib/locale/pt_PT.utf8/LC_ADDRESS
+#usr/lib/locale/pt_PT.utf8/LC_COLLATE
+#usr/lib/locale/pt_PT.utf8/LC_CTYPE
+#usr/lib/locale/pt_PT.utf8/LC_IDENTIFICATION
+#usr/lib/locale/pt_PT.utf8/LC_MEASUREMENT
+#usr/lib/locale/pt_PT.utf8/LC_MESSAGES
+#usr/lib/locale/pt_PT.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pt_PT.utf8/LC_MONETARY
+#usr/lib/locale/pt_PT.utf8/LC_NAME
+#usr/lib/locale/pt_PT.utf8/LC_NUMERIC
+#usr/lib/locale/pt_PT.utf8/LC_PAPER
+#usr/lib/locale/pt_PT.utf8/LC_TELEPHONE
+#usr/lib/locale/pt_PT.utf8/LC_TIME
+#usr/lib/locale/pt_PT/LC_ADDRESS
+#usr/lib/locale/pt_PT/LC_COLLATE
+#usr/lib/locale/pt_PT/LC_CTYPE
+#usr/lib/locale/pt_PT/LC_IDENTIFICATION
+#usr/lib/locale/pt_PT/LC_MEASUREMENT
+#usr/lib/locale/pt_PT/LC_MESSAGES
+#usr/lib/locale/pt_PT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pt_PT/LC_MONETARY
+#usr/lib/locale/pt_PT/LC_NAME
+#usr/lib/locale/pt_PT/LC_NUMERIC
+#usr/lib/locale/pt_PT/LC_PAPER
+#usr/lib/locale/pt_PT/LC_TELEPHONE
+#usr/lib/locale/pt_PT/LC_TIME
+#usr/lib/locale/pt_PT@euro
+#usr/lib/locale/pt_PT@euro/LC_ADDRESS
+#usr/lib/locale/pt_PT@euro/LC_COLLATE
+#usr/lib/locale/pt_PT@euro/LC_CTYPE
+#usr/lib/locale/pt_PT@euro/LC_IDENTIFICATION
+#usr/lib/locale/pt_PT@euro/LC_MEASUREMENT
+#usr/lib/locale/pt_PT@euro/LC_MESSAGES
+#usr/lib/locale/pt_PT@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/pt_PT@euro/LC_MONETARY
+#usr/lib/locale/pt_PT@euro/LC_NAME
+#usr/lib/locale/pt_PT@euro/LC_NUMERIC
+#usr/lib/locale/pt_PT@euro/LC_PAPER
+#usr/lib/locale/pt_PT@euro/LC_TELEPHONE
+#usr/lib/locale/pt_PT@euro/LC_TIME
+#usr/lib/locale/ro_RO
+#usr/lib/locale/ro_RO.utf8
+#usr/lib/locale/ro_RO.utf8/LC_ADDRESS
+#usr/lib/locale/ro_RO.utf8/LC_COLLATE
+#usr/lib/locale/ro_RO.utf8/LC_CTYPE
+#usr/lib/locale/ro_RO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ro_RO.utf8/LC_MEASUREMENT
+#usr/lib/locale/ro_RO.utf8/LC_MESSAGES
+#usr/lib/locale/ro_RO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ro_RO.utf8/LC_MONETARY
+#usr/lib/locale/ro_RO.utf8/LC_NAME
+#usr/lib/locale/ro_RO.utf8/LC_NUMERIC
+#usr/lib/locale/ro_RO.utf8/LC_PAPER
+#usr/lib/locale/ro_RO.utf8/LC_TELEPHONE
+#usr/lib/locale/ro_RO.utf8/LC_TIME
+#usr/lib/locale/ro_RO/LC_ADDRESS
+#usr/lib/locale/ro_RO/LC_COLLATE
+#usr/lib/locale/ro_RO/LC_CTYPE
+#usr/lib/locale/ro_RO/LC_IDENTIFICATION
+#usr/lib/locale/ro_RO/LC_MEASUREMENT
+#usr/lib/locale/ro_RO/LC_MESSAGES
+#usr/lib/locale/ro_RO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ro_RO/LC_MONETARY
+#usr/lib/locale/ro_RO/LC_NAME
+#usr/lib/locale/ro_RO/LC_NUMERIC
+#usr/lib/locale/ro_RO/LC_PAPER
+#usr/lib/locale/ro_RO/LC_TELEPHONE
+#usr/lib/locale/ro_RO/LC_TIME
+#usr/lib/locale/ru_RU
+#usr/lib/locale/ru_RU.koi8r
+#usr/lib/locale/ru_RU.koi8r/LC_ADDRESS
+#usr/lib/locale/ru_RU.koi8r/LC_COLLATE
+#usr/lib/locale/ru_RU.koi8r/LC_CTYPE
+#usr/lib/locale/ru_RU.koi8r/LC_IDENTIFICATION
+#usr/lib/locale/ru_RU.koi8r/LC_MEASUREMENT
+#usr/lib/locale/ru_RU.koi8r/LC_MESSAGES
+#usr/lib/locale/ru_RU.koi8r/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ru_RU.koi8r/LC_MONETARY
+#usr/lib/locale/ru_RU.koi8r/LC_NAME
+#usr/lib/locale/ru_RU.koi8r/LC_NUMERIC
+#usr/lib/locale/ru_RU.koi8r/LC_PAPER
+#usr/lib/locale/ru_RU.koi8r/LC_TELEPHONE
+#usr/lib/locale/ru_RU.koi8r/LC_TIME
+#usr/lib/locale/ru_RU.utf8
+#usr/lib/locale/ru_RU.utf8/LC_ADDRESS
+#usr/lib/locale/ru_RU.utf8/LC_COLLATE
+#usr/lib/locale/ru_RU.utf8/LC_CTYPE
+#usr/lib/locale/ru_RU.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ru_RU.utf8/LC_MEASUREMENT
+#usr/lib/locale/ru_RU.utf8/LC_MESSAGES
+#usr/lib/locale/ru_RU.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ru_RU.utf8/LC_MONETARY
+#usr/lib/locale/ru_RU.utf8/LC_NAME
+#usr/lib/locale/ru_RU.utf8/LC_NUMERIC
+#usr/lib/locale/ru_RU.utf8/LC_PAPER
+#usr/lib/locale/ru_RU.utf8/LC_TELEPHONE
+#usr/lib/locale/ru_RU.utf8/LC_TIME
+#usr/lib/locale/ru_RU/LC_ADDRESS
+#usr/lib/locale/ru_RU/LC_COLLATE
+#usr/lib/locale/ru_RU/LC_CTYPE
+#usr/lib/locale/ru_RU/LC_IDENTIFICATION
+#usr/lib/locale/ru_RU/LC_MEASUREMENT
+#usr/lib/locale/ru_RU/LC_MESSAGES
+#usr/lib/locale/ru_RU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ru_RU/LC_MONETARY
+#usr/lib/locale/ru_RU/LC_NAME
+#usr/lib/locale/ru_RU/LC_NUMERIC
+#usr/lib/locale/ru_RU/LC_PAPER
+#usr/lib/locale/ru_RU/LC_TELEPHONE
+#usr/lib/locale/ru_RU/LC_TIME
+#usr/lib/locale/ru_UA
+#usr/lib/locale/ru_UA.utf8
+#usr/lib/locale/ru_UA.utf8/LC_ADDRESS
+#usr/lib/locale/ru_UA.utf8/LC_COLLATE
+#usr/lib/locale/ru_UA.utf8/LC_CTYPE
+#usr/lib/locale/ru_UA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/ru_UA.utf8/LC_MEASUREMENT
+#usr/lib/locale/ru_UA.utf8/LC_MESSAGES
+#usr/lib/locale/ru_UA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ru_UA.utf8/LC_MONETARY
+#usr/lib/locale/ru_UA.utf8/LC_NAME
+#usr/lib/locale/ru_UA.utf8/LC_NUMERIC
+#usr/lib/locale/ru_UA.utf8/LC_PAPER
+#usr/lib/locale/ru_UA.utf8/LC_TELEPHONE
+#usr/lib/locale/ru_UA.utf8/LC_TIME
+#usr/lib/locale/ru_UA/LC_ADDRESS
+#usr/lib/locale/ru_UA/LC_COLLATE
+#usr/lib/locale/ru_UA/LC_CTYPE
+#usr/lib/locale/ru_UA/LC_IDENTIFICATION
+#usr/lib/locale/ru_UA/LC_MEASUREMENT
+#usr/lib/locale/ru_UA/LC_MESSAGES
+#usr/lib/locale/ru_UA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ru_UA/LC_MONETARY
+#usr/lib/locale/ru_UA/LC_NAME
+#usr/lib/locale/ru_UA/LC_NUMERIC
+#usr/lib/locale/ru_UA/LC_PAPER
+#usr/lib/locale/ru_UA/LC_TELEPHONE
+#usr/lib/locale/ru_UA/LC_TIME
+#usr/lib/locale/rw_RW
+#usr/lib/locale/rw_RW/LC_ADDRESS
+#usr/lib/locale/rw_RW/LC_COLLATE
+#usr/lib/locale/rw_RW/LC_CTYPE
+#usr/lib/locale/rw_RW/LC_IDENTIFICATION
+#usr/lib/locale/rw_RW/LC_MEASUREMENT
+#usr/lib/locale/rw_RW/LC_MESSAGES
+#usr/lib/locale/rw_RW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/rw_RW/LC_MONETARY
+#usr/lib/locale/rw_RW/LC_NAME
+#usr/lib/locale/rw_RW/LC_NUMERIC
+#usr/lib/locale/rw_RW/LC_PAPER
+#usr/lib/locale/rw_RW/LC_TELEPHONE
+#usr/lib/locale/rw_RW/LC_TIME
+#usr/lib/locale/sa_IN
+#usr/lib/locale/sa_IN/LC_ADDRESS
+#usr/lib/locale/sa_IN/LC_COLLATE
+#usr/lib/locale/sa_IN/LC_CTYPE
+#usr/lib/locale/sa_IN/LC_IDENTIFICATION
+#usr/lib/locale/sa_IN/LC_MEASUREMENT
+#usr/lib/locale/sa_IN/LC_MESSAGES
+#usr/lib/locale/sa_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sa_IN/LC_MONETARY
+#usr/lib/locale/sa_IN/LC_NAME
+#usr/lib/locale/sa_IN/LC_NUMERIC
+#usr/lib/locale/sa_IN/LC_PAPER
+#usr/lib/locale/sa_IN/LC_TELEPHONE
+#usr/lib/locale/sa_IN/LC_TIME
+#usr/lib/locale/sc_IT
+#usr/lib/locale/sc_IT/LC_ADDRESS
+#usr/lib/locale/sc_IT/LC_COLLATE
+#usr/lib/locale/sc_IT/LC_CTYPE
+#usr/lib/locale/sc_IT/LC_IDENTIFICATION
+#usr/lib/locale/sc_IT/LC_MEASUREMENT
+#usr/lib/locale/sc_IT/LC_MESSAGES
+#usr/lib/locale/sc_IT/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sc_IT/LC_MONETARY
+#usr/lib/locale/sc_IT/LC_NAME
+#usr/lib/locale/sc_IT/LC_NUMERIC
+#usr/lib/locale/sc_IT/LC_PAPER
+#usr/lib/locale/sc_IT/LC_TELEPHONE
+#usr/lib/locale/sc_IT/LC_TIME
+#usr/lib/locale/sd_IN
+#usr/lib/locale/sd_IN/LC_ADDRESS
+#usr/lib/locale/sd_IN/LC_COLLATE
+#usr/lib/locale/sd_IN/LC_CTYPE
+#usr/lib/locale/sd_IN/LC_IDENTIFICATION
+#usr/lib/locale/sd_IN/LC_MEASUREMENT
+#usr/lib/locale/sd_IN/LC_MESSAGES
+#usr/lib/locale/sd_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sd_IN/LC_MONETARY
+#usr/lib/locale/sd_IN/LC_NAME
+#usr/lib/locale/sd_IN/LC_NUMERIC
+#usr/lib/locale/sd_IN/LC_PAPER
+#usr/lib/locale/sd_IN/LC_TELEPHONE
+#usr/lib/locale/sd_IN/LC_TIME
+#usr/lib/locale/sd_IN@devanagari
+#usr/lib/locale/sd_IN@devanagari/LC_ADDRESS
+#usr/lib/locale/sd_IN@devanagari/LC_COLLATE
+#usr/lib/locale/sd_IN@devanagari/LC_CTYPE
+#usr/lib/locale/sd_IN@devanagari/LC_IDENTIFICATION
+#usr/lib/locale/sd_IN@devanagari/LC_MEASUREMENT
+#usr/lib/locale/sd_IN@devanagari/LC_MESSAGES
+#usr/lib/locale/sd_IN@devanagari/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sd_IN@devanagari/LC_MONETARY
+#usr/lib/locale/sd_IN@devanagari/LC_NAME
+#usr/lib/locale/sd_IN@devanagari/LC_NUMERIC
+#usr/lib/locale/sd_IN@devanagari/LC_PAPER
+#usr/lib/locale/sd_IN@devanagari/LC_TELEPHONE
+#usr/lib/locale/sd_IN@devanagari/LC_TIME
+#usr/lib/locale/se_NO
+#usr/lib/locale/se_NO/LC_ADDRESS
+#usr/lib/locale/se_NO/LC_COLLATE
+#usr/lib/locale/se_NO/LC_CTYPE
+#usr/lib/locale/se_NO/LC_IDENTIFICATION
+#usr/lib/locale/se_NO/LC_MEASUREMENT
+#usr/lib/locale/se_NO/LC_MESSAGES
+#usr/lib/locale/se_NO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/se_NO/LC_MONETARY
+#usr/lib/locale/se_NO/LC_NAME
+#usr/lib/locale/se_NO/LC_NUMERIC
+#usr/lib/locale/se_NO/LC_PAPER
+#usr/lib/locale/se_NO/LC_TELEPHONE
+#usr/lib/locale/se_NO/LC_TIME
+#usr/lib/locale/shs_CA
+#usr/lib/locale/shs_CA/LC_ADDRESS
+#usr/lib/locale/shs_CA/LC_COLLATE
+#usr/lib/locale/shs_CA/LC_CTYPE
+#usr/lib/locale/shs_CA/LC_IDENTIFICATION
+#usr/lib/locale/shs_CA/LC_MEASUREMENT
+#usr/lib/locale/shs_CA/LC_MESSAGES
+#usr/lib/locale/shs_CA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/shs_CA/LC_MONETARY
+#usr/lib/locale/shs_CA/LC_NAME
+#usr/lib/locale/shs_CA/LC_NUMERIC
+#usr/lib/locale/shs_CA/LC_PAPER
+#usr/lib/locale/shs_CA/LC_TELEPHONE
+#usr/lib/locale/shs_CA/LC_TIME
+#usr/lib/locale/si_LK
+#usr/lib/locale/si_LK/LC_ADDRESS
+#usr/lib/locale/si_LK/LC_COLLATE
+#usr/lib/locale/si_LK/LC_CTYPE
+#usr/lib/locale/si_LK/LC_IDENTIFICATION
+#usr/lib/locale/si_LK/LC_MEASUREMENT
+#usr/lib/locale/si_LK/LC_MESSAGES
+#usr/lib/locale/si_LK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/si_LK/LC_MONETARY
+#usr/lib/locale/si_LK/LC_NAME
+#usr/lib/locale/si_LK/LC_NUMERIC
+#usr/lib/locale/si_LK/LC_PAPER
+#usr/lib/locale/si_LK/LC_TELEPHONE
+#usr/lib/locale/si_LK/LC_TIME
+#usr/lib/locale/sid_ET
+#usr/lib/locale/sid_ET/LC_ADDRESS
+#usr/lib/locale/sid_ET/LC_COLLATE
+#usr/lib/locale/sid_ET/LC_CTYPE
+#usr/lib/locale/sid_ET/LC_IDENTIFICATION
+#usr/lib/locale/sid_ET/LC_MEASUREMENT
+#usr/lib/locale/sid_ET/LC_MESSAGES
+#usr/lib/locale/sid_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sid_ET/LC_MONETARY
+#usr/lib/locale/sid_ET/LC_NAME
+#usr/lib/locale/sid_ET/LC_NUMERIC
+#usr/lib/locale/sid_ET/LC_PAPER
+#usr/lib/locale/sid_ET/LC_TELEPHONE
+#usr/lib/locale/sid_ET/LC_TIME
+#usr/lib/locale/sk_SK
+#usr/lib/locale/sk_SK.utf8
+#usr/lib/locale/sk_SK.utf8/LC_ADDRESS
+#usr/lib/locale/sk_SK.utf8/LC_COLLATE
+#usr/lib/locale/sk_SK.utf8/LC_CTYPE
+#usr/lib/locale/sk_SK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/sk_SK.utf8/LC_MEASUREMENT
+#usr/lib/locale/sk_SK.utf8/LC_MESSAGES
+#usr/lib/locale/sk_SK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sk_SK.utf8/LC_MONETARY
+#usr/lib/locale/sk_SK.utf8/LC_NAME
+#usr/lib/locale/sk_SK.utf8/LC_NUMERIC
+#usr/lib/locale/sk_SK.utf8/LC_PAPER
+#usr/lib/locale/sk_SK.utf8/LC_TELEPHONE
+#usr/lib/locale/sk_SK.utf8/LC_TIME
+#usr/lib/locale/sk_SK/LC_ADDRESS
+#usr/lib/locale/sk_SK/LC_COLLATE
+#usr/lib/locale/sk_SK/LC_CTYPE
+#usr/lib/locale/sk_SK/LC_IDENTIFICATION
+#usr/lib/locale/sk_SK/LC_MEASUREMENT
+#usr/lib/locale/sk_SK/LC_MESSAGES
+#usr/lib/locale/sk_SK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sk_SK/LC_MONETARY
+#usr/lib/locale/sk_SK/LC_NAME
+#usr/lib/locale/sk_SK/LC_NUMERIC
+#usr/lib/locale/sk_SK/LC_PAPER
+#usr/lib/locale/sk_SK/LC_TELEPHONE
+#usr/lib/locale/sk_SK/LC_TIME
+#usr/lib/locale/sl_SI
+#usr/lib/locale/sl_SI.utf8
+#usr/lib/locale/sl_SI.utf8/LC_ADDRESS
+#usr/lib/locale/sl_SI.utf8/LC_COLLATE
+#usr/lib/locale/sl_SI.utf8/LC_CTYPE
+#usr/lib/locale/sl_SI.utf8/LC_IDENTIFICATION
+#usr/lib/locale/sl_SI.utf8/LC_MEASUREMENT
+#usr/lib/locale/sl_SI.utf8/LC_MESSAGES
+#usr/lib/locale/sl_SI.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sl_SI.utf8/LC_MONETARY
+#usr/lib/locale/sl_SI.utf8/LC_NAME
+#usr/lib/locale/sl_SI.utf8/LC_NUMERIC
+#usr/lib/locale/sl_SI.utf8/LC_PAPER
+#usr/lib/locale/sl_SI.utf8/LC_TELEPHONE
+#usr/lib/locale/sl_SI.utf8/LC_TIME
+#usr/lib/locale/sl_SI/LC_ADDRESS
+#usr/lib/locale/sl_SI/LC_COLLATE
+#usr/lib/locale/sl_SI/LC_CTYPE
+#usr/lib/locale/sl_SI/LC_IDENTIFICATION
+#usr/lib/locale/sl_SI/LC_MEASUREMENT
+#usr/lib/locale/sl_SI/LC_MESSAGES
+#usr/lib/locale/sl_SI/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sl_SI/LC_MONETARY
+#usr/lib/locale/sl_SI/LC_NAME
+#usr/lib/locale/sl_SI/LC_NUMERIC
+#usr/lib/locale/sl_SI/LC_PAPER
+#usr/lib/locale/sl_SI/LC_TELEPHONE
+#usr/lib/locale/sl_SI/LC_TIME
+#usr/lib/locale/so_DJ
+#usr/lib/locale/so_DJ.utf8
+#usr/lib/locale/so_DJ.utf8/LC_ADDRESS
+#usr/lib/locale/so_DJ.utf8/LC_COLLATE
+#usr/lib/locale/so_DJ.utf8/LC_CTYPE
+#usr/lib/locale/so_DJ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/so_DJ.utf8/LC_MEASUREMENT
+#usr/lib/locale/so_DJ.utf8/LC_MESSAGES
+#usr/lib/locale/so_DJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_DJ.utf8/LC_MONETARY
+#usr/lib/locale/so_DJ.utf8/LC_NAME
+#usr/lib/locale/so_DJ.utf8/LC_NUMERIC
+#usr/lib/locale/so_DJ.utf8/LC_PAPER
+#usr/lib/locale/so_DJ.utf8/LC_TELEPHONE
+#usr/lib/locale/so_DJ.utf8/LC_TIME
+#usr/lib/locale/so_DJ/LC_ADDRESS
+#usr/lib/locale/so_DJ/LC_COLLATE
+#usr/lib/locale/so_DJ/LC_CTYPE
+#usr/lib/locale/so_DJ/LC_IDENTIFICATION
+#usr/lib/locale/so_DJ/LC_MEASUREMENT
+#usr/lib/locale/so_DJ/LC_MESSAGES
+#usr/lib/locale/so_DJ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_DJ/LC_MONETARY
+#usr/lib/locale/so_DJ/LC_NAME
+#usr/lib/locale/so_DJ/LC_NUMERIC
+#usr/lib/locale/so_DJ/LC_PAPER
+#usr/lib/locale/so_DJ/LC_TELEPHONE
+#usr/lib/locale/so_DJ/LC_TIME
+#usr/lib/locale/so_ET
+#usr/lib/locale/so_ET/LC_ADDRESS
+#usr/lib/locale/so_ET/LC_COLLATE
+#usr/lib/locale/so_ET/LC_CTYPE
+#usr/lib/locale/so_ET/LC_IDENTIFICATION
+#usr/lib/locale/so_ET/LC_MEASUREMENT
+#usr/lib/locale/so_ET/LC_MESSAGES
+#usr/lib/locale/so_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_ET/LC_MONETARY
+#usr/lib/locale/so_ET/LC_NAME
+#usr/lib/locale/so_ET/LC_NUMERIC
+#usr/lib/locale/so_ET/LC_PAPER
+#usr/lib/locale/so_ET/LC_TELEPHONE
+#usr/lib/locale/so_ET/LC_TIME
+#usr/lib/locale/so_KE
+#usr/lib/locale/so_KE.utf8
+#usr/lib/locale/so_KE.utf8/LC_ADDRESS
+#usr/lib/locale/so_KE.utf8/LC_COLLATE
+#usr/lib/locale/so_KE.utf8/LC_CTYPE
+#usr/lib/locale/so_KE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/so_KE.utf8/LC_MEASUREMENT
+#usr/lib/locale/so_KE.utf8/LC_MESSAGES
+#usr/lib/locale/so_KE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_KE.utf8/LC_MONETARY
+#usr/lib/locale/so_KE.utf8/LC_NAME
+#usr/lib/locale/so_KE.utf8/LC_NUMERIC
+#usr/lib/locale/so_KE.utf8/LC_PAPER
+#usr/lib/locale/so_KE.utf8/LC_TELEPHONE
+#usr/lib/locale/so_KE.utf8/LC_TIME
+#usr/lib/locale/so_KE/LC_ADDRESS
+#usr/lib/locale/so_KE/LC_COLLATE
+#usr/lib/locale/so_KE/LC_CTYPE
+#usr/lib/locale/so_KE/LC_IDENTIFICATION
+#usr/lib/locale/so_KE/LC_MEASUREMENT
+#usr/lib/locale/so_KE/LC_MESSAGES
+#usr/lib/locale/so_KE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_KE/LC_MONETARY
+#usr/lib/locale/so_KE/LC_NAME
+#usr/lib/locale/so_KE/LC_NUMERIC
+#usr/lib/locale/so_KE/LC_PAPER
+#usr/lib/locale/so_KE/LC_TELEPHONE
+#usr/lib/locale/so_KE/LC_TIME
+#usr/lib/locale/so_SO
+#usr/lib/locale/so_SO.utf8
+#usr/lib/locale/so_SO.utf8/LC_ADDRESS
+#usr/lib/locale/so_SO.utf8/LC_COLLATE
+#usr/lib/locale/so_SO.utf8/LC_CTYPE
+#usr/lib/locale/so_SO.utf8/LC_IDENTIFICATION
+#usr/lib/locale/so_SO.utf8/LC_MEASUREMENT
+#usr/lib/locale/so_SO.utf8/LC_MESSAGES
+#usr/lib/locale/so_SO.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_SO.utf8/LC_MONETARY
+#usr/lib/locale/so_SO.utf8/LC_NAME
+#usr/lib/locale/so_SO.utf8/LC_NUMERIC
+#usr/lib/locale/so_SO.utf8/LC_PAPER
+#usr/lib/locale/so_SO.utf8/LC_TELEPHONE
+#usr/lib/locale/so_SO.utf8/LC_TIME
+#usr/lib/locale/so_SO/LC_ADDRESS
+#usr/lib/locale/so_SO/LC_COLLATE
+#usr/lib/locale/so_SO/LC_CTYPE
+#usr/lib/locale/so_SO/LC_IDENTIFICATION
+#usr/lib/locale/so_SO/LC_MEASUREMENT
+#usr/lib/locale/so_SO/LC_MESSAGES
+#usr/lib/locale/so_SO/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/so_SO/LC_MONETARY
+#usr/lib/locale/so_SO/LC_NAME
+#usr/lib/locale/so_SO/LC_NUMERIC
+#usr/lib/locale/so_SO/LC_PAPER
+#usr/lib/locale/so_SO/LC_TELEPHONE
+#usr/lib/locale/so_SO/LC_TIME
+#usr/lib/locale/sq_AL
+#usr/lib/locale/sq_AL.utf8
+#usr/lib/locale/sq_AL.utf8/LC_ADDRESS
+#usr/lib/locale/sq_AL.utf8/LC_COLLATE
+#usr/lib/locale/sq_AL.utf8/LC_CTYPE
+#usr/lib/locale/sq_AL.utf8/LC_IDENTIFICATION
+#usr/lib/locale/sq_AL.utf8/LC_MEASUREMENT
+#usr/lib/locale/sq_AL.utf8/LC_MESSAGES
+#usr/lib/locale/sq_AL.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sq_AL.utf8/LC_MONETARY
+#usr/lib/locale/sq_AL.utf8/LC_NAME
+#usr/lib/locale/sq_AL.utf8/LC_NUMERIC
+#usr/lib/locale/sq_AL.utf8/LC_PAPER
+#usr/lib/locale/sq_AL.utf8/LC_TELEPHONE
+#usr/lib/locale/sq_AL.utf8/LC_TIME
+#usr/lib/locale/sq_AL/LC_ADDRESS
+#usr/lib/locale/sq_AL/LC_COLLATE
+#usr/lib/locale/sq_AL/LC_CTYPE
+#usr/lib/locale/sq_AL/LC_IDENTIFICATION
+#usr/lib/locale/sq_AL/LC_MEASUREMENT
+#usr/lib/locale/sq_AL/LC_MESSAGES
+#usr/lib/locale/sq_AL/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sq_AL/LC_MONETARY
+#usr/lib/locale/sq_AL/LC_NAME
+#usr/lib/locale/sq_AL/LC_NUMERIC
+#usr/lib/locale/sq_AL/LC_PAPER
+#usr/lib/locale/sq_AL/LC_TELEPHONE
+#usr/lib/locale/sq_AL/LC_TIME
+#usr/lib/locale/sq_MK
+#usr/lib/locale/sq_MK/LC_ADDRESS
+#usr/lib/locale/sq_MK/LC_COLLATE
+#usr/lib/locale/sq_MK/LC_CTYPE
+#usr/lib/locale/sq_MK/LC_IDENTIFICATION
+#usr/lib/locale/sq_MK/LC_MEASUREMENT
+#usr/lib/locale/sq_MK/LC_MESSAGES
+#usr/lib/locale/sq_MK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sq_MK/LC_MONETARY
+#usr/lib/locale/sq_MK/LC_NAME
+#usr/lib/locale/sq_MK/LC_NUMERIC
+#usr/lib/locale/sq_MK/LC_PAPER
+#usr/lib/locale/sq_MK/LC_TELEPHONE
+#usr/lib/locale/sq_MK/LC_TIME
+#usr/lib/locale/sr_ME
+#usr/lib/locale/sr_ME/LC_ADDRESS
+#usr/lib/locale/sr_ME/LC_COLLATE
+#usr/lib/locale/sr_ME/LC_CTYPE
+#usr/lib/locale/sr_ME/LC_IDENTIFICATION
+#usr/lib/locale/sr_ME/LC_MEASUREMENT
+#usr/lib/locale/sr_ME/LC_MESSAGES
+#usr/lib/locale/sr_ME/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sr_ME/LC_MONETARY
+#usr/lib/locale/sr_ME/LC_NAME
+#usr/lib/locale/sr_ME/LC_NUMERIC
+#usr/lib/locale/sr_ME/LC_PAPER
+#usr/lib/locale/sr_ME/LC_TELEPHONE
+#usr/lib/locale/sr_ME/LC_TIME
+#usr/lib/locale/sr_RS
+#usr/lib/locale/sr_RS/LC_ADDRESS
+#usr/lib/locale/sr_RS/LC_COLLATE
+#usr/lib/locale/sr_RS/LC_CTYPE
+#usr/lib/locale/sr_RS/LC_IDENTIFICATION
+#usr/lib/locale/sr_RS/LC_MEASUREMENT
+#usr/lib/locale/sr_RS/LC_MESSAGES
+#usr/lib/locale/sr_RS/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sr_RS/LC_MONETARY
+#usr/lib/locale/sr_RS/LC_NAME
+#usr/lib/locale/sr_RS/LC_NUMERIC
+#usr/lib/locale/sr_RS/LC_PAPER
+#usr/lib/locale/sr_RS/LC_TELEPHONE
+#usr/lib/locale/sr_RS/LC_TIME
+#usr/lib/locale/sr_RS@latin
+#usr/lib/locale/sr_RS@latin/LC_ADDRESS
+#usr/lib/locale/sr_RS@latin/LC_COLLATE
+#usr/lib/locale/sr_RS@latin/LC_CTYPE
+#usr/lib/locale/sr_RS@latin/LC_IDENTIFICATION
+#usr/lib/locale/sr_RS@latin/LC_MEASUREMENT
+#usr/lib/locale/sr_RS@latin/LC_MESSAGES
+#usr/lib/locale/sr_RS@latin/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sr_RS@latin/LC_MONETARY
+#usr/lib/locale/sr_RS@latin/LC_NAME
+#usr/lib/locale/sr_RS@latin/LC_NUMERIC
+#usr/lib/locale/sr_RS@latin/LC_PAPER
+#usr/lib/locale/sr_RS@latin/LC_TELEPHONE
+#usr/lib/locale/sr_RS@latin/LC_TIME
+#usr/lib/locale/ss_ZA
+#usr/lib/locale/ss_ZA/LC_ADDRESS
+#usr/lib/locale/ss_ZA/LC_COLLATE
+#usr/lib/locale/ss_ZA/LC_CTYPE
+#usr/lib/locale/ss_ZA/LC_IDENTIFICATION
+#usr/lib/locale/ss_ZA/LC_MEASUREMENT
+#usr/lib/locale/ss_ZA/LC_MESSAGES
+#usr/lib/locale/ss_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ss_ZA/LC_MONETARY
+#usr/lib/locale/ss_ZA/LC_NAME
+#usr/lib/locale/ss_ZA/LC_NUMERIC
+#usr/lib/locale/ss_ZA/LC_PAPER
+#usr/lib/locale/ss_ZA/LC_TELEPHONE
+#usr/lib/locale/ss_ZA/LC_TIME
+#usr/lib/locale/st_ZA
+#usr/lib/locale/st_ZA.utf8
+#usr/lib/locale/st_ZA.utf8/LC_ADDRESS
+#usr/lib/locale/st_ZA.utf8/LC_COLLATE
+#usr/lib/locale/st_ZA.utf8/LC_CTYPE
+#usr/lib/locale/st_ZA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/st_ZA.utf8/LC_MEASUREMENT
+#usr/lib/locale/st_ZA.utf8/LC_MESSAGES
+#usr/lib/locale/st_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/st_ZA.utf8/LC_MONETARY
+#usr/lib/locale/st_ZA.utf8/LC_NAME
+#usr/lib/locale/st_ZA.utf8/LC_NUMERIC
+#usr/lib/locale/st_ZA.utf8/LC_PAPER
+#usr/lib/locale/st_ZA.utf8/LC_TELEPHONE
+#usr/lib/locale/st_ZA.utf8/LC_TIME
+#usr/lib/locale/st_ZA/LC_ADDRESS
+#usr/lib/locale/st_ZA/LC_COLLATE
+#usr/lib/locale/st_ZA/LC_CTYPE
+#usr/lib/locale/st_ZA/LC_IDENTIFICATION
+#usr/lib/locale/st_ZA/LC_MEASUREMENT
+#usr/lib/locale/st_ZA/LC_MESSAGES
+#usr/lib/locale/st_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/st_ZA/LC_MONETARY
+#usr/lib/locale/st_ZA/LC_NAME
+#usr/lib/locale/st_ZA/LC_NUMERIC
+#usr/lib/locale/st_ZA/LC_PAPER
+#usr/lib/locale/st_ZA/LC_TELEPHONE
+#usr/lib/locale/st_ZA/LC_TIME
+#usr/lib/locale/sv_FI
+#usr/lib/locale/sv_FI.utf8
+#usr/lib/locale/sv_FI.utf8/LC_ADDRESS
+#usr/lib/locale/sv_FI.utf8/LC_COLLATE
+#usr/lib/locale/sv_FI.utf8/LC_CTYPE
+#usr/lib/locale/sv_FI.utf8/LC_IDENTIFICATION
+#usr/lib/locale/sv_FI.utf8/LC_MEASUREMENT
+#usr/lib/locale/sv_FI.utf8/LC_MESSAGES
+#usr/lib/locale/sv_FI.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_FI.utf8/LC_MONETARY
+#usr/lib/locale/sv_FI.utf8/LC_NAME
+#usr/lib/locale/sv_FI.utf8/LC_NUMERIC
+#usr/lib/locale/sv_FI.utf8/LC_PAPER
+#usr/lib/locale/sv_FI.utf8/LC_TELEPHONE
+#usr/lib/locale/sv_FI.utf8/LC_TIME
+#usr/lib/locale/sv_FI/LC_ADDRESS
+#usr/lib/locale/sv_FI/LC_COLLATE
+#usr/lib/locale/sv_FI/LC_CTYPE
+#usr/lib/locale/sv_FI/LC_IDENTIFICATION
+#usr/lib/locale/sv_FI/LC_MEASUREMENT
+#usr/lib/locale/sv_FI/LC_MESSAGES
+#usr/lib/locale/sv_FI/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_FI/LC_MONETARY
+#usr/lib/locale/sv_FI/LC_NAME
+#usr/lib/locale/sv_FI/LC_NUMERIC
+#usr/lib/locale/sv_FI/LC_PAPER
+#usr/lib/locale/sv_FI/LC_TELEPHONE
+#usr/lib/locale/sv_FI/LC_TIME
+#usr/lib/locale/sv_FI@euro
+#usr/lib/locale/sv_FI@euro/LC_ADDRESS
+#usr/lib/locale/sv_FI@euro/LC_COLLATE
+#usr/lib/locale/sv_FI@euro/LC_CTYPE
+#usr/lib/locale/sv_FI@euro/LC_IDENTIFICATION
+#usr/lib/locale/sv_FI@euro/LC_MEASUREMENT
+#usr/lib/locale/sv_FI@euro/LC_MESSAGES
+#usr/lib/locale/sv_FI@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_FI@euro/LC_MONETARY
+#usr/lib/locale/sv_FI@euro/LC_NAME
+#usr/lib/locale/sv_FI@euro/LC_NUMERIC
+#usr/lib/locale/sv_FI@euro/LC_PAPER
+#usr/lib/locale/sv_FI@euro/LC_TELEPHONE
+#usr/lib/locale/sv_FI@euro/LC_TIME
+#usr/lib/locale/sv_SE
+#usr/lib/locale/sv_SE.iso885915
+#usr/lib/locale/sv_SE.iso885915/LC_ADDRESS
+#usr/lib/locale/sv_SE.iso885915/LC_COLLATE
+#usr/lib/locale/sv_SE.iso885915/LC_CTYPE
+#usr/lib/locale/sv_SE.iso885915/LC_IDENTIFICATION
+#usr/lib/locale/sv_SE.iso885915/LC_MEASUREMENT
+#usr/lib/locale/sv_SE.iso885915/LC_MESSAGES
+#usr/lib/locale/sv_SE.iso885915/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_SE.iso885915/LC_MONETARY
+#usr/lib/locale/sv_SE.iso885915/LC_NAME
+#usr/lib/locale/sv_SE.iso885915/LC_NUMERIC
+#usr/lib/locale/sv_SE.iso885915/LC_PAPER
+#usr/lib/locale/sv_SE.iso885915/LC_TELEPHONE
+#usr/lib/locale/sv_SE.iso885915/LC_TIME
+#usr/lib/locale/sv_SE.utf8
+#usr/lib/locale/sv_SE.utf8/LC_ADDRESS
+#usr/lib/locale/sv_SE.utf8/LC_COLLATE
+#usr/lib/locale/sv_SE.utf8/LC_CTYPE
+#usr/lib/locale/sv_SE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/sv_SE.utf8/LC_MEASUREMENT
+#usr/lib/locale/sv_SE.utf8/LC_MESSAGES
+#usr/lib/locale/sv_SE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_SE.utf8/LC_MONETARY
+#usr/lib/locale/sv_SE.utf8/LC_NAME
+#usr/lib/locale/sv_SE.utf8/LC_NUMERIC
+#usr/lib/locale/sv_SE.utf8/LC_PAPER
+#usr/lib/locale/sv_SE.utf8/LC_TELEPHONE
+#usr/lib/locale/sv_SE.utf8/LC_TIME
+#usr/lib/locale/sv_SE/LC_ADDRESS
+#usr/lib/locale/sv_SE/LC_COLLATE
+#usr/lib/locale/sv_SE/LC_CTYPE
+#usr/lib/locale/sv_SE/LC_IDENTIFICATION
+#usr/lib/locale/sv_SE/LC_MEASUREMENT
+#usr/lib/locale/sv_SE/LC_MESSAGES
+#usr/lib/locale/sv_SE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/sv_SE/LC_MONETARY
+#usr/lib/locale/sv_SE/LC_NAME
+#usr/lib/locale/sv_SE/LC_NUMERIC
+#usr/lib/locale/sv_SE/LC_PAPER
+#usr/lib/locale/sv_SE/LC_TELEPHONE
+#usr/lib/locale/sv_SE/LC_TIME
+#usr/lib/locale/ta_IN
+#usr/lib/locale/ta_IN/LC_ADDRESS
+#usr/lib/locale/ta_IN/LC_COLLATE
+#usr/lib/locale/ta_IN/LC_CTYPE
+#usr/lib/locale/ta_IN/LC_IDENTIFICATION
+#usr/lib/locale/ta_IN/LC_MEASUREMENT
+#usr/lib/locale/ta_IN/LC_MESSAGES
+#usr/lib/locale/ta_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ta_IN/LC_MONETARY
+#usr/lib/locale/ta_IN/LC_NAME
+#usr/lib/locale/ta_IN/LC_NUMERIC
+#usr/lib/locale/ta_IN/LC_PAPER
+#usr/lib/locale/ta_IN/LC_TELEPHONE
+#usr/lib/locale/ta_IN/LC_TIME
+#usr/lib/locale/te_IN
+#usr/lib/locale/te_IN/LC_ADDRESS
+#usr/lib/locale/te_IN/LC_COLLATE
+#usr/lib/locale/te_IN/LC_CTYPE
+#usr/lib/locale/te_IN/LC_IDENTIFICATION
+#usr/lib/locale/te_IN/LC_MEASUREMENT
+#usr/lib/locale/te_IN/LC_MESSAGES
+#usr/lib/locale/te_IN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/te_IN/LC_MONETARY
+#usr/lib/locale/te_IN/LC_NAME
+#usr/lib/locale/te_IN/LC_NUMERIC
+#usr/lib/locale/te_IN/LC_PAPER
+#usr/lib/locale/te_IN/LC_TELEPHONE
+#usr/lib/locale/te_IN/LC_TIME
+#usr/lib/locale/tg_TJ
+#usr/lib/locale/tg_TJ.utf8
+#usr/lib/locale/tg_TJ.utf8/LC_ADDRESS
+#usr/lib/locale/tg_TJ.utf8/LC_COLLATE
+#usr/lib/locale/tg_TJ.utf8/LC_CTYPE
+#usr/lib/locale/tg_TJ.utf8/LC_IDENTIFICATION
+#usr/lib/locale/tg_TJ.utf8/LC_MEASUREMENT
+#usr/lib/locale/tg_TJ.utf8/LC_MESSAGES
+#usr/lib/locale/tg_TJ.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tg_TJ.utf8/LC_MONETARY
+#usr/lib/locale/tg_TJ.utf8/LC_NAME
+#usr/lib/locale/tg_TJ.utf8/LC_NUMERIC
+#usr/lib/locale/tg_TJ.utf8/LC_PAPER
+#usr/lib/locale/tg_TJ.utf8/LC_TELEPHONE
+#usr/lib/locale/tg_TJ.utf8/LC_TIME
+#usr/lib/locale/tg_TJ/LC_ADDRESS
+#usr/lib/locale/tg_TJ/LC_COLLATE
+#usr/lib/locale/tg_TJ/LC_CTYPE
+#usr/lib/locale/tg_TJ/LC_IDENTIFICATION
+#usr/lib/locale/tg_TJ/LC_MEASUREMENT
+#usr/lib/locale/tg_TJ/LC_MESSAGES
+#usr/lib/locale/tg_TJ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tg_TJ/LC_MONETARY
+#usr/lib/locale/tg_TJ/LC_NAME
+#usr/lib/locale/tg_TJ/LC_NUMERIC
+#usr/lib/locale/tg_TJ/LC_PAPER
+#usr/lib/locale/tg_TJ/LC_TELEPHONE
+#usr/lib/locale/tg_TJ/LC_TIME
+#usr/lib/locale/th_TH
+#usr/lib/locale/th_TH.utf8
+#usr/lib/locale/th_TH.utf8/LC_ADDRESS
+#usr/lib/locale/th_TH.utf8/LC_COLLATE
+#usr/lib/locale/th_TH.utf8/LC_CTYPE
+#usr/lib/locale/th_TH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/th_TH.utf8/LC_MEASUREMENT
+#usr/lib/locale/th_TH.utf8/LC_MESSAGES
+#usr/lib/locale/th_TH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/th_TH.utf8/LC_MONETARY
+#usr/lib/locale/th_TH.utf8/LC_NAME
+#usr/lib/locale/th_TH.utf8/LC_NUMERIC
+#usr/lib/locale/th_TH.utf8/LC_PAPER
+#usr/lib/locale/th_TH.utf8/LC_TELEPHONE
+#usr/lib/locale/th_TH.utf8/LC_TIME
+#usr/lib/locale/th_TH/LC_ADDRESS
+#usr/lib/locale/th_TH/LC_COLLATE
+#usr/lib/locale/th_TH/LC_CTYPE
+#usr/lib/locale/th_TH/LC_IDENTIFICATION
+#usr/lib/locale/th_TH/LC_MEASUREMENT
+#usr/lib/locale/th_TH/LC_MESSAGES
+#usr/lib/locale/th_TH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/th_TH/LC_MONETARY
+#usr/lib/locale/th_TH/LC_NAME
+#usr/lib/locale/th_TH/LC_NUMERIC
+#usr/lib/locale/th_TH/LC_PAPER
+#usr/lib/locale/th_TH/LC_TELEPHONE
+#usr/lib/locale/th_TH/LC_TIME
+#usr/lib/locale/ti_ER
+#usr/lib/locale/ti_ER/LC_ADDRESS
+#usr/lib/locale/ti_ER/LC_COLLATE
+#usr/lib/locale/ti_ER/LC_CTYPE
+#usr/lib/locale/ti_ER/LC_IDENTIFICATION
+#usr/lib/locale/ti_ER/LC_MEASUREMENT
+#usr/lib/locale/ti_ER/LC_MESSAGES
+#usr/lib/locale/ti_ER/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ti_ER/LC_MONETARY
+#usr/lib/locale/ti_ER/LC_NAME
+#usr/lib/locale/ti_ER/LC_NUMERIC
+#usr/lib/locale/ti_ER/LC_PAPER
+#usr/lib/locale/ti_ER/LC_TELEPHONE
+#usr/lib/locale/ti_ER/LC_TIME
+#usr/lib/locale/ti_ET
+#usr/lib/locale/ti_ET/LC_ADDRESS
+#usr/lib/locale/ti_ET/LC_COLLATE
+#usr/lib/locale/ti_ET/LC_CTYPE
+#usr/lib/locale/ti_ET/LC_IDENTIFICATION
+#usr/lib/locale/ti_ET/LC_MEASUREMENT
+#usr/lib/locale/ti_ET/LC_MESSAGES
+#usr/lib/locale/ti_ET/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ti_ET/LC_MONETARY
+#usr/lib/locale/ti_ET/LC_NAME
+#usr/lib/locale/ti_ET/LC_NUMERIC
+#usr/lib/locale/ti_ET/LC_PAPER
+#usr/lib/locale/ti_ET/LC_TELEPHONE
+#usr/lib/locale/ti_ET/LC_TIME
+#usr/lib/locale/tig_ER
+#usr/lib/locale/tig_ER/LC_ADDRESS
+#usr/lib/locale/tig_ER/LC_COLLATE
+#usr/lib/locale/tig_ER/LC_CTYPE
+#usr/lib/locale/tig_ER/LC_IDENTIFICATION
+#usr/lib/locale/tig_ER/LC_MEASUREMENT
+#usr/lib/locale/tig_ER/LC_MESSAGES
+#usr/lib/locale/tig_ER/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tig_ER/LC_MONETARY
+#usr/lib/locale/tig_ER/LC_NAME
+#usr/lib/locale/tig_ER/LC_NUMERIC
+#usr/lib/locale/tig_ER/LC_PAPER
+#usr/lib/locale/tig_ER/LC_TELEPHONE
+#usr/lib/locale/tig_ER/LC_TIME
+#usr/lib/locale/tk_TM
+#usr/lib/locale/tk_TM/LC_ADDRESS
+#usr/lib/locale/tk_TM/LC_COLLATE
+#usr/lib/locale/tk_TM/LC_CTYPE
+#usr/lib/locale/tk_TM/LC_IDENTIFICATION
+#usr/lib/locale/tk_TM/LC_MEASUREMENT
+#usr/lib/locale/tk_TM/LC_MESSAGES
+#usr/lib/locale/tk_TM/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tk_TM/LC_MONETARY
+#usr/lib/locale/tk_TM/LC_NAME
+#usr/lib/locale/tk_TM/LC_NUMERIC
+#usr/lib/locale/tk_TM/LC_PAPER
+#usr/lib/locale/tk_TM/LC_TELEPHONE
+#usr/lib/locale/tk_TM/LC_TIME
+#usr/lib/locale/tl_PH
+#usr/lib/locale/tl_PH.utf8
+#usr/lib/locale/tl_PH.utf8/LC_ADDRESS
+#usr/lib/locale/tl_PH.utf8/LC_COLLATE
+#usr/lib/locale/tl_PH.utf8/LC_CTYPE
+#usr/lib/locale/tl_PH.utf8/LC_IDENTIFICATION
+#usr/lib/locale/tl_PH.utf8/LC_MEASUREMENT
+#usr/lib/locale/tl_PH.utf8/LC_MESSAGES
+#usr/lib/locale/tl_PH.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tl_PH.utf8/LC_MONETARY
+#usr/lib/locale/tl_PH.utf8/LC_NAME
+#usr/lib/locale/tl_PH.utf8/LC_NUMERIC
+#usr/lib/locale/tl_PH.utf8/LC_PAPER
+#usr/lib/locale/tl_PH.utf8/LC_TELEPHONE
+#usr/lib/locale/tl_PH.utf8/LC_TIME
+#usr/lib/locale/tl_PH/LC_ADDRESS
+#usr/lib/locale/tl_PH/LC_COLLATE
+#usr/lib/locale/tl_PH/LC_CTYPE
+#usr/lib/locale/tl_PH/LC_IDENTIFICATION
+#usr/lib/locale/tl_PH/LC_MEASUREMENT
+#usr/lib/locale/tl_PH/LC_MESSAGES
+#usr/lib/locale/tl_PH/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tl_PH/LC_MONETARY
+#usr/lib/locale/tl_PH/LC_NAME
+#usr/lib/locale/tl_PH/LC_NUMERIC
+#usr/lib/locale/tl_PH/LC_PAPER
+#usr/lib/locale/tl_PH/LC_TELEPHONE
+#usr/lib/locale/tl_PH/LC_TIME
+#usr/lib/locale/tn_ZA
+#usr/lib/locale/tn_ZA/LC_ADDRESS
+#usr/lib/locale/tn_ZA/LC_COLLATE
+#usr/lib/locale/tn_ZA/LC_CTYPE
+#usr/lib/locale/tn_ZA/LC_IDENTIFICATION
+#usr/lib/locale/tn_ZA/LC_MEASUREMENT
+#usr/lib/locale/tn_ZA/LC_MESSAGES
+#usr/lib/locale/tn_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tn_ZA/LC_MONETARY
+#usr/lib/locale/tn_ZA/LC_NAME
+#usr/lib/locale/tn_ZA/LC_NUMERIC
+#usr/lib/locale/tn_ZA/LC_PAPER
+#usr/lib/locale/tn_ZA/LC_TELEPHONE
+#usr/lib/locale/tn_ZA/LC_TIME
+#usr/lib/locale/tr_CY
+#usr/lib/locale/tr_CY.utf8
+#usr/lib/locale/tr_CY.utf8/LC_ADDRESS
+#usr/lib/locale/tr_CY.utf8/LC_COLLATE
+#usr/lib/locale/tr_CY.utf8/LC_CTYPE
+#usr/lib/locale/tr_CY.utf8/LC_IDENTIFICATION
+#usr/lib/locale/tr_CY.utf8/LC_MEASUREMENT
+#usr/lib/locale/tr_CY.utf8/LC_MESSAGES
+#usr/lib/locale/tr_CY.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tr_CY.utf8/LC_MONETARY
+#usr/lib/locale/tr_CY.utf8/LC_NAME
+#usr/lib/locale/tr_CY.utf8/LC_NUMERIC
+#usr/lib/locale/tr_CY.utf8/LC_PAPER
+#usr/lib/locale/tr_CY.utf8/LC_TELEPHONE
+#usr/lib/locale/tr_CY.utf8/LC_TIME
+#usr/lib/locale/tr_CY/LC_ADDRESS
+#usr/lib/locale/tr_CY/LC_COLLATE
+#usr/lib/locale/tr_CY/LC_CTYPE
+#usr/lib/locale/tr_CY/LC_IDENTIFICATION
+#usr/lib/locale/tr_CY/LC_MEASUREMENT
+#usr/lib/locale/tr_CY/LC_MESSAGES
+#usr/lib/locale/tr_CY/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tr_CY/LC_MONETARY
+#usr/lib/locale/tr_CY/LC_NAME
+#usr/lib/locale/tr_CY/LC_NUMERIC
+#usr/lib/locale/tr_CY/LC_PAPER
+#usr/lib/locale/tr_CY/LC_TELEPHONE
+#usr/lib/locale/tr_CY/LC_TIME
+#usr/lib/locale/tr_TR
+#usr/lib/locale/tr_TR.utf8
+#usr/lib/locale/tr_TR.utf8/LC_ADDRESS
+#usr/lib/locale/tr_TR.utf8/LC_COLLATE
+#usr/lib/locale/tr_TR.utf8/LC_CTYPE
+#usr/lib/locale/tr_TR.utf8/LC_IDENTIFICATION
+#usr/lib/locale/tr_TR.utf8/LC_MEASUREMENT
+#usr/lib/locale/tr_TR.utf8/LC_MESSAGES
+#usr/lib/locale/tr_TR.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tr_TR.utf8/LC_MONETARY
+#usr/lib/locale/tr_TR.utf8/LC_NAME
+#usr/lib/locale/tr_TR.utf8/LC_NUMERIC
+#usr/lib/locale/tr_TR.utf8/LC_PAPER
+#usr/lib/locale/tr_TR.utf8/LC_TELEPHONE
+#usr/lib/locale/tr_TR.utf8/LC_TIME
+#usr/lib/locale/tr_TR/LC_ADDRESS
+#usr/lib/locale/tr_TR/LC_COLLATE
+#usr/lib/locale/tr_TR/LC_CTYPE
+#usr/lib/locale/tr_TR/LC_IDENTIFICATION
+#usr/lib/locale/tr_TR/LC_MEASUREMENT
+#usr/lib/locale/tr_TR/LC_MESSAGES
+#usr/lib/locale/tr_TR/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tr_TR/LC_MONETARY
+#usr/lib/locale/tr_TR/LC_NAME
+#usr/lib/locale/tr_TR/LC_NUMERIC
+#usr/lib/locale/tr_TR/LC_PAPER
+#usr/lib/locale/tr_TR/LC_TELEPHONE
+#usr/lib/locale/tr_TR/LC_TIME
+#usr/lib/locale/ts_ZA
+#usr/lib/locale/ts_ZA/LC_ADDRESS
+#usr/lib/locale/ts_ZA/LC_COLLATE
+#usr/lib/locale/ts_ZA/LC_CTYPE
+#usr/lib/locale/ts_ZA/LC_IDENTIFICATION
+#usr/lib/locale/ts_ZA/LC_MEASUREMENT
+#usr/lib/locale/ts_ZA/LC_MESSAGES
+#usr/lib/locale/ts_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ts_ZA/LC_MONETARY
+#usr/lib/locale/ts_ZA/LC_NAME
+#usr/lib/locale/ts_ZA/LC_NUMERIC
+#usr/lib/locale/ts_ZA/LC_PAPER
+#usr/lib/locale/ts_ZA/LC_TELEPHONE
+#usr/lib/locale/ts_ZA/LC_TIME
+#usr/lib/locale/tt_RU
+#usr/lib/locale/tt_RU/LC_ADDRESS
+#usr/lib/locale/tt_RU/LC_COLLATE
+#usr/lib/locale/tt_RU/LC_CTYPE
+#usr/lib/locale/tt_RU/LC_IDENTIFICATION
+#usr/lib/locale/tt_RU/LC_MEASUREMENT
+#usr/lib/locale/tt_RU/LC_MESSAGES
+#usr/lib/locale/tt_RU/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tt_RU/LC_MONETARY
+#usr/lib/locale/tt_RU/LC_NAME
+#usr/lib/locale/tt_RU/LC_NUMERIC
+#usr/lib/locale/tt_RU/LC_PAPER
+#usr/lib/locale/tt_RU/LC_TELEPHONE
+#usr/lib/locale/tt_RU/LC_TIME
+#usr/lib/locale/tt_RU@iqtelif
+#usr/lib/locale/tt_RU@iqtelif/LC_ADDRESS
+#usr/lib/locale/tt_RU@iqtelif/LC_COLLATE
+#usr/lib/locale/tt_RU@iqtelif/LC_CTYPE
+#usr/lib/locale/tt_RU@iqtelif/LC_IDENTIFICATION
+#usr/lib/locale/tt_RU@iqtelif/LC_MEASUREMENT
+#usr/lib/locale/tt_RU@iqtelif/LC_MESSAGES
+#usr/lib/locale/tt_RU@iqtelif/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/tt_RU@iqtelif/LC_MONETARY
+#usr/lib/locale/tt_RU@iqtelif/LC_NAME
+#usr/lib/locale/tt_RU@iqtelif/LC_NUMERIC
+#usr/lib/locale/tt_RU@iqtelif/LC_PAPER
+#usr/lib/locale/tt_RU@iqtelif/LC_TELEPHONE
+#usr/lib/locale/tt_RU@iqtelif/LC_TIME
+#usr/lib/locale/ug_CN
+#usr/lib/locale/ug_CN/LC_ADDRESS
+#usr/lib/locale/ug_CN/LC_COLLATE
+#usr/lib/locale/ug_CN/LC_CTYPE
+#usr/lib/locale/ug_CN/LC_IDENTIFICATION
+#usr/lib/locale/ug_CN/LC_MEASUREMENT
+#usr/lib/locale/ug_CN/LC_MESSAGES
+#usr/lib/locale/ug_CN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ug_CN/LC_MONETARY
+#usr/lib/locale/ug_CN/LC_NAME
+#usr/lib/locale/ug_CN/LC_NUMERIC
+#usr/lib/locale/ug_CN/LC_PAPER
+#usr/lib/locale/ug_CN/LC_TELEPHONE
+#usr/lib/locale/ug_CN/LC_TIME
+#usr/lib/locale/uk_UA
+#usr/lib/locale/uk_UA.utf8
+#usr/lib/locale/uk_UA.utf8/LC_ADDRESS
+#usr/lib/locale/uk_UA.utf8/LC_COLLATE
+#usr/lib/locale/uk_UA.utf8/LC_CTYPE
+#usr/lib/locale/uk_UA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/uk_UA.utf8/LC_MEASUREMENT
+#usr/lib/locale/uk_UA.utf8/LC_MESSAGES
+#usr/lib/locale/uk_UA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/uk_UA.utf8/LC_MONETARY
+#usr/lib/locale/uk_UA.utf8/LC_NAME
+#usr/lib/locale/uk_UA.utf8/LC_NUMERIC
+#usr/lib/locale/uk_UA.utf8/LC_PAPER
+#usr/lib/locale/uk_UA.utf8/LC_TELEPHONE
+#usr/lib/locale/uk_UA.utf8/LC_TIME
+#usr/lib/locale/uk_UA/LC_ADDRESS
+#usr/lib/locale/uk_UA/LC_COLLATE
+#usr/lib/locale/uk_UA/LC_CTYPE
+#usr/lib/locale/uk_UA/LC_IDENTIFICATION
+#usr/lib/locale/uk_UA/LC_MEASUREMENT
+#usr/lib/locale/uk_UA/LC_MESSAGES
+#usr/lib/locale/uk_UA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/uk_UA/LC_MONETARY
+#usr/lib/locale/uk_UA/LC_NAME
+#usr/lib/locale/uk_UA/LC_NUMERIC
+#usr/lib/locale/uk_UA/LC_PAPER
+#usr/lib/locale/uk_UA/LC_TELEPHONE
+#usr/lib/locale/uk_UA/LC_TIME
+#usr/lib/locale/ur_PK
+#usr/lib/locale/ur_PK/LC_ADDRESS
+#usr/lib/locale/ur_PK/LC_COLLATE
+#usr/lib/locale/ur_PK/LC_CTYPE
+#usr/lib/locale/ur_PK/LC_IDENTIFICATION
+#usr/lib/locale/ur_PK/LC_MEASUREMENT
+#usr/lib/locale/ur_PK/LC_MESSAGES
+#usr/lib/locale/ur_PK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ur_PK/LC_MONETARY
+#usr/lib/locale/ur_PK/LC_NAME
+#usr/lib/locale/ur_PK/LC_NUMERIC
+#usr/lib/locale/ur_PK/LC_PAPER
+#usr/lib/locale/ur_PK/LC_TELEPHONE
+#usr/lib/locale/ur_PK/LC_TIME
+#usr/lib/locale/uz_UZ
+#usr/lib/locale/uz_UZ/LC_ADDRESS
+#usr/lib/locale/uz_UZ/LC_COLLATE
+#usr/lib/locale/uz_UZ/LC_CTYPE
+#usr/lib/locale/uz_UZ/LC_IDENTIFICATION
+#usr/lib/locale/uz_UZ/LC_MEASUREMENT
+#usr/lib/locale/uz_UZ/LC_MESSAGES
+#usr/lib/locale/uz_UZ/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/uz_UZ/LC_MONETARY
+#usr/lib/locale/uz_UZ/LC_NAME
+#usr/lib/locale/uz_UZ/LC_NUMERIC
+#usr/lib/locale/uz_UZ/LC_PAPER
+#usr/lib/locale/uz_UZ/LC_TELEPHONE
+#usr/lib/locale/uz_UZ/LC_TIME
+#usr/lib/locale/uz_UZ@cyrillic
+#usr/lib/locale/uz_UZ@cyrillic/LC_ADDRESS
+#usr/lib/locale/uz_UZ@cyrillic/LC_COLLATE
+#usr/lib/locale/uz_UZ@cyrillic/LC_CTYPE
+#usr/lib/locale/uz_UZ@cyrillic/LC_IDENTIFICATION
+#usr/lib/locale/uz_UZ@cyrillic/LC_MEASUREMENT
+#usr/lib/locale/uz_UZ@cyrillic/LC_MESSAGES
+#usr/lib/locale/uz_UZ@cyrillic/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/uz_UZ@cyrillic/LC_MONETARY
+#usr/lib/locale/uz_UZ@cyrillic/LC_NAME
+#usr/lib/locale/uz_UZ@cyrillic/LC_NUMERIC
+#usr/lib/locale/uz_UZ@cyrillic/LC_PAPER
+#usr/lib/locale/uz_UZ@cyrillic/LC_TELEPHONE
+#usr/lib/locale/uz_UZ@cyrillic/LC_TIME
+#usr/lib/locale/ve_ZA
+#usr/lib/locale/ve_ZA/LC_ADDRESS
+#usr/lib/locale/ve_ZA/LC_COLLATE
+#usr/lib/locale/ve_ZA/LC_CTYPE
+#usr/lib/locale/ve_ZA/LC_IDENTIFICATION
+#usr/lib/locale/ve_ZA/LC_MEASUREMENT
+#usr/lib/locale/ve_ZA/LC_MESSAGES
+#usr/lib/locale/ve_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/ve_ZA/LC_MONETARY
+#usr/lib/locale/ve_ZA/LC_NAME
+#usr/lib/locale/ve_ZA/LC_NUMERIC
+#usr/lib/locale/ve_ZA/LC_PAPER
+#usr/lib/locale/ve_ZA/LC_TELEPHONE
+#usr/lib/locale/ve_ZA/LC_TIME
+#usr/lib/locale/vi_VN
+#usr/lib/locale/vi_VN.tcvn
+#usr/lib/locale/vi_VN.tcvn/LC_ADDRESS
+#usr/lib/locale/vi_VN.tcvn/LC_COLLATE
+#usr/lib/locale/vi_VN.tcvn/LC_CTYPE
+#usr/lib/locale/vi_VN.tcvn/LC_IDENTIFICATION
+#usr/lib/locale/vi_VN.tcvn/LC_MEASUREMENT
+#usr/lib/locale/vi_VN.tcvn/LC_MESSAGES
+#usr/lib/locale/vi_VN.tcvn/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/vi_VN.tcvn/LC_MONETARY
+#usr/lib/locale/vi_VN.tcvn/LC_NAME
+#usr/lib/locale/vi_VN.tcvn/LC_NUMERIC
+#usr/lib/locale/vi_VN.tcvn/LC_PAPER
+#usr/lib/locale/vi_VN.tcvn/LC_TELEPHONE
+#usr/lib/locale/vi_VN.tcvn/LC_TIME
+#usr/lib/locale/vi_VN/LC_ADDRESS
+#usr/lib/locale/vi_VN/LC_COLLATE
+#usr/lib/locale/vi_VN/LC_CTYPE
+#usr/lib/locale/vi_VN/LC_IDENTIFICATION
+#usr/lib/locale/vi_VN/LC_MEASUREMENT
+#usr/lib/locale/vi_VN/LC_MESSAGES
+#usr/lib/locale/vi_VN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/vi_VN/LC_MONETARY
+#usr/lib/locale/vi_VN/LC_NAME
+#usr/lib/locale/vi_VN/LC_NUMERIC
+#usr/lib/locale/vi_VN/LC_PAPER
+#usr/lib/locale/vi_VN/LC_TELEPHONE
+#usr/lib/locale/vi_VN/LC_TIME
+#usr/lib/locale/wa_BE
+#usr/lib/locale/wa_BE.utf8
+#usr/lib/locale/wa_BE.utf8/LC_ADDRESS
+#usr/lib/locale/wa_BE.utf8/LC_COLLATE
+#usr/lib/locale/wa_BE.utf8/LC_CTYPE
+#usr/lib/locale/wa_BE.utf8/LC_IDENTIFICATION
+#usr/lib/locale/wa_BE.utf8/LC_MEASUREMENT
+#usr/lib/locale/wa_BE.utf8/LC_MESSAGES
+#usr/lib/locale/wa_BE.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/wa_BE.utf8/LC_MONETARY
+#usr/lib/locale/wa_BE.utf8/LC_NAME
+#usr/lib/locale/wa_BE.utf8/LC_NUMERIC
+#usr/lib/locale/wa_BE.utf8/LC_PAPER
+#usr/lib/locale/wa_BE.utf8/LC_TELEPHONE
+#usr/lib/locale/wa_BE.utf8/LC_TIME
+#usr/lib/locale/wa_BE/LC_ADDRESS
+#usr/lib/locale/wa_BE/LC_COLLATE
+#usr/lib/locale/wa_BE/LC_CTYPE
+#usr/lib/locale/wa_BE/LC_IDENTIFICATION
+#usr/lib/locale/wa_BE/LC_MEASUREMENT
+#usr/lib/locale/wa_BE/LC_MESSAGES
+#usr/lib/locale/wa_BE/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/wa_BE/LC_MONETARY
+#usr/lib/locale/wa_BE/LC_NAME
+#usr/lib/locale/wa_BE/LC_NUMERIC
+#usr/lib/locale/wa_BE/LC_PAPER
+#usr/lib/locale/wa_BE/LC_TELEPHONE
+#usr/lib/locale/wa_BE/LC_TIME
+#usr/lib/locale/wa_BE@euro
+#usr/lib/locale/wa_BE@euro/LC_ADDRESS
+#usr/lib/locale/wa_BE@euro/LC_COLLATE
+#usr/lib/locale/wa_BE@euro/LC_CTYPE
+#usr/lib/locale/wa_BE@euro/LC_IDENTIFICATION
+#usr/lib/locale/wa_BE@euro/LC_MEASUREMENT
+#usr/lib/locale/wa_BE@euro/LC_MESSAGES
+#usr/lib/locale/wa_BE@euro/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/wa_BE@euro/LC_MONETARY
+#usr/lib/locale/wa_BE@euro/LC_NAME
+#usr/lib/locale/wa_BE@euro/LC_NUMERIC
+#usr/lib/locale/wa_BE@euro/LC_PAPER
+#usr/lib/locale/wa_BE@euro/LC_TELEPHONE
+#usr/lib/locale/wa_BE@euro/LC_TIME
+#usr/lib/locale/wo_SN
+#usr/lib/locale/wo_SN/LC_ADDRESS
+#usr/lib/locale/wo_SN/LC_COLLATE
+#usr/lib/locale/wo_SN/LC_CTYPE
+#usr/lib/locale/wo_SN/LC_IDENTIFICATION
+#usr/lib/locale/wo_SN/LC_MEASUREMENT
+#usr/lib/locale/wo_SN/LC_MESSAGES
+#usr/lib/locale/wo_SN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/wo_SN/LC_MONETARY
+#usr/lib/locale/wo_SN/LC_NAME
+#usr/lib/locale/wo_SN/LC_NUMERIC
+#usr/lib/locale/wo_SN/LC_PAPER
+#usr/lib/locale/wo_SN/LC_TELEPHONE
+#usr/lib/locale/wo_SN/LC_TIME
+#usr/lib/locale/xh_ZA
+#usr/lib/locale/xh_ZA.utf8
+#usr/lib/locale/xh_ZA.utf8/LC_ADDRESS
+#usr/lib/locale/xh_ZA.utf8/LC_COLLATE
+#usr/lib/locale/xh_ZA.utf8/LC_CTYPE
+#usr/lib/locale/xh_ZA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/xh_ZA.utf8/LC_MEASUREMENT
+#usr/lib/locale/xh_ZA.utf8/LC_MESSAGES
+#usr/lib/locale/xh_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/xh_ZA.utf8/LC_MONETARY
+#usr/lib/locale/xh_ZA.utf8/LC_NAME
+#usr/lib/locale/xh_ZA.utf8/LC_NUMERIC
+#usr/lib/locale/xh_ZA.utf8/LC_PAPER
+#usr/lib/locale/xh_ZA.utf8/LC_TELEPHONE
+#usr/lib/locale/xh_ZA.utf8/LC_TIME
+#usr/lib/locale/xh_ZA/LC_ADDRESS
+#usr/lib/locale/xh_ZA/LC_COLLATE
+#usr/lib/locale/xh_ZA/LC_CTYPE
+#usr/lib/locale/xh_ZA/LC_IDENTIFICATION
+#usr/lib/locale/xh_ZA/LC_MEASUREMENT
+#usr/lib/locale/xh_ZA/LC_MESSAGES
+#usr/lib/locale/xh_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/xh_ZA/LC_MONETARY
+#usr/lib/locale/xh_ZA/LC_NAME
+#usr/lib/locale/xh_ZA/LC_NUMERIC
+#usr/lib/locale/xh_ZA/LC_PAPER
+#usr/lib/locale/xh_ZA/LC_TELEPHONE
+#usr/lib/locale/xh_ZA/LC_TIME
+#usr/lib/locale/yi_US
+#usr/lib/locale/yi_US.utf8
+#usr/lib/locale/yi_US.utf8/LC_ADDRESS
+#usr/lib/locale/yi_US.utf8/LC_COLLATE
+#usr/lib/locale/yi_US.utf8/LC_CTYPE
+#usr/lib/locale/yi_US.utf8/LC_IDENTIFICATION
+#usr/lib/locale/yi_US.utf8/LC_MEASUREMENT
+#usr/lib/locale/yi_US.utf8/LC_MESSAGES
+#usr/lib/locale/yi_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/yi_US.utf8/LC_MONETARY
+#usr/lib/locale/yi_US.utf8/LC_NAME
+#usr/lib/locale/yi_US.utf8/LC_NUMERIC
+#usr/lib/locale/yi_US.utf8/LC_PAPER
+#usr/lib/locale/yi_US.utf8/LC_TELEPHONE
+#usr/lib/locale/yi_US.utf8/LC_TIME
+#usr/lib/locale/yi_US/LC_ADDRESS
+#usr/lib/locale/yi_US/LC_COLLATE
+#usr/lib/locale/yi_US/LC_CTYPE
+#usr/lib/locale/yi_US/LC_IDENTIFICATION
+#usr/lib/locale/yi_US/LC_MEASUREMENT
+#usr/lib/locale/yi_US/LC_MESSAGES
+#usr/lib/locale/yi_US/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/yi_US/LC_MONETARY
+#usr/lib/locale/yi_US/LC_NAME
+#usr/lib/locale/yi_US/LC_NUMERIC
+#usr/lib/locale/yi_US/LC_PAPER
+#usr/lib/locale/yi_US/LC_TELEPHONE
+#usr/lib/locale/yi_US/LC_TIME
+#usr/lib/locale/yo_NG
+#usr/lib/locale/yo_NG/LC_ADDRESS
+#usr/lib/locale/yo_NG/LC_COLLATE
+#usr/lib/locale/yo_NG/LC_CTYPE
+#usr/lib/locale/yo_NG/LC_IDENTIFICATION
+#usr/lib/locale/yo_NG/LC_MEASUREMENT
+#usr/lib/locale/yo_NG/LC_MESSAGES
+#usr/lib/locale/yo_NG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/yo_NG/LC_MONETARY
+#usr/lib/locale/yo_NG/LC_NAME
+#usr/lib/locale/yo_NG/LC_NUMERIC
+#usr/lib/locale/yo_NG/LC_PAPER
+#usr/lib/locale/yo_NG/LC_TELEPHONE
+#usr/lib/locale/yo_NG/LC_TIME
+#usr/lib/locale/zh_CN
+#usr/lib/locale/zh_CN.gb18030
+#usr/lib/locale/zh_CN.gb18030/LC_ADDRESS
+#usr/lib/locale/zh_CN.gb18030/LC_COLLATE
+#usr/lib/locale/zh_CN.gb18030/LC_CTYPE
+#usr/lib/locale/zh_CN.gb18030/LC_IDENTIFICATION
+#usr/lib/locale/zh_CN.gb18030/LC_MEASUREMENT
+#usr/lib/locale/zh_CN.gb18030/LC_MESSAGES
+#usr/lib/locale/zh_CN.gb18030/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_CN.gb18030/LC_MONETARY
+#usr/lib/locale/zh_CN.gb18030/LC_NAME
+#usr/lib/locale/zh_CN.gb18030/LC_NUMERIC
+#usr/lib/locale/zh_CN.gb18030/LC_PAPER
+#usr/lib/locale/zh_CN.gb18030/LC_TELEPHONE
+#usr/lib/locale/zh_CN.gb18030/LC_TIME
+#usr/lib/locale/zh_CN.gbk
+#usr/lib/locale/zh_CN.gbk/LC_ADDRESS
+#usr/lib/locale/zh_CN.gbk/LC_COLLATE
+#usr/lib/locale/zh_CN.gbk/LC_CTYPE
+#usr/lib/locale/zh_CN.gbk/LC_IDENTIFICATION
+#usr/lib/locale/zh_CN.gbk/LC_MEASUREMENT
+#usr/lib/locale/zh_CN.gbk/LC_MESSAGES
+#usr/lib/locale/zh_CN.gbk/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_CN.gbk/LC_MONETARY
+#usr/lib/locale/zh_CN.gbk/LC_NAME
+#usr/lib/locale/zh_CN.gbk/LC_NUMERIC
+#usr/lib/locale/zh_CN.gbk/LC_PAPER
+#usr/lib/locale/zh_CN.gbk/LC_TELEPHONE
+#usr/lib/locale/zh_CN.gbk/LC_TIME
+#usr/lib/locale/zh_CN.utf8
+#usr/lib/locale/zh_CN.utf8/LC_ADDRESS
+#usr/lib/locale/zh_CN.utf8/LC_COLLATE
+#usr/lib/locale/zh_CN.utf8/LC_CTYPE
+#usr/lib/locale/zh_CN.utf8/LC_IDENTIFICATION
+#usr/lib/locale/zh_CN.utf8/LC_MEASUREMENT
+#usr/lib/locale/zh_CN.utf8/LC_MESSAGES
+#usr/lib/locale/zh_CN.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_CN.utf8/LC_MONETARY
+#usr/lib/locale/zh_CN.utf8/LC_NAME
+#usr/lib/locale/zh_CN.utf8/LC_NUMERIC
+#usr/lib/locale/zh_CN.utf8/LC_PAPER
+#usr/lib/locale/zh_CN.utf8/LC_TELEPHONE
+#usr/lib/locale/zh_CN.utf8/LC_TIME
+#usr/lib/locale/zh_CN/LC_ADDRESS
+#usr/lib/locale/zh_CN/LC_COLLATE
+#usr/lib/locale/zh_CN/LC_CTYPE
+#usr/lib/locale/zh_CN/LC_IDENTIFICATION
+#usr/lib/locale/zh_CN/LC_MEASUREMENT
+#usr/lib/locale/zh_CN/LC_MESSAGES
+#usr/lib/locale/zh_CN/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_CN/LC_MONETARY
+#usr/lib/locale/zh_CN/LC_NAME
+#usr/lib/locale/zh_CN/LC_NUMERIC
+#usr/lib/locale/zh_CN/LC_PAPER
+#usr/lib/locale/zh_CN/LC_TELEPHONE
+#usr/lib/locale/zh_CN/LC_TIME
+#usr/lib/locale/zh_HK
+#usr/lib/locale/zh_HK.utf8
+#usr/lib/locale/zh_HK.utf8/LC_ADDRESS
+#usr/lib/locale/zh_HK.utf8/LC_COLLATE
+#usr/lib/locale/zh_HK.utf8/LC_CTYPE
+#usr/lib/locale/zh_HK.utf8/LC_IDENTIFICATION
+#usr/lib/locale/zh_HK.utf8/LC_MEASUREMENT
+#usr/lib/locale/zh_HK.utf8/LC_MESSAGES
+#usr/lib/locale/zh_HK.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_HK.utf8/LC_MONETARY
+#usr/lib/locale/zh_HK.utf8/LC_NAME
+#usr/lib/locale/zh_HK.utf8/LC_NUMERIC
+#usr/lib/locale/zh_HK.utf8/LC_PAPER
+#usr/lib/locale/zh_HK.utf8/LC_TELEPHONE
+#usr/lib/locale/zh_HK.utf8/LC_TIME
+#usr/lib/locale/zh_HK/LC_ADDRESS
+#usr/lib/locale/zh_HK/LC_COLLATE
+#usr/lib/locale/zh_HK/LC_CTYPE
+#usr/lib/locale/zh_HK/LC_IDENTIFICATION
+#usr/lib/locale/zh_HK/LC_MEASUREMENT
+#usr/lib/locale/zh_HK/LC_MESSAGES
+#usr/lib/locale/zh_HK/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_HK/LC_MONETARY
+#usr/lib/locale/zh_HK/LC_NAME
+#usr/lib/locale/zh_HK/LC_NUMERIC
+#usr/lib/locale/zh_HK/LC_PAPER
+#usr/lib/locale/zh_HK/LC_TELEPHONE
+#usr/lib/locale/zh_HK/LC_TIME
+#usr/lib/locale/zh_SG
+#usr/lib/locale/zh_SG.gbk
+#usr/lib/locale/zh_SG.gbk/LC_ADDRESS
+#usr/lib/locale/zh_SG.gbk/LC_COLLATE
+#usr/lib/locale/zh_SG.gbk/LC_CTYPE
+#usr/lib/locale/zh_SG.gbk/LC_IDENTIFICATION
+#usr/lib/locale/zh_SG.gbk/LC_MEASUREMENT
+#usr/lib/locale/zh_SG.gbk/LC_MESSAGES
+#usr/lib/locale/zh_SG.gbk/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_SG.gbk/LC_MONETARY
+#usr/lib/locale/zh_SG.gbk/LC_NAME
+#usr/lib/locale/zh_SG.gbk/LC_NUMERIC
+#usr/lib/locale/zh_SG.gbk/LC_PAPER
+#usr/lib/locale/zh_SG.gbk/LC_TELEPHONE
+#usr/lib/locale/zh_SG.gbk/LC_TIME
+#usr/lib/locale/zh_SG.utf8
+#usr/lib/locale/zh_SG.utf8/LC_ADDRESS
+#usr/lib/locale/zh_SG.utf8/LC_COLLATE
+#usr/lib/locale/zh_SG.utf8/LC_CTYPE
+#usr/lib/locale/zh_SG.utf8/LC_IDENTIFICATION
+#usr/lib/locale/zh_SG.utf8/LC_MEASUREMENT
+#usr/lib/locale/zh_SG.utf8/LC_MESSAGES
+#usr/lib/locale/zh_SG.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_SG.utf8/LC_MONETARY
+#usr/lib/locale/zh_SG.utf8/LC_NAME
+#usr/lib/locale/zh_SG.utf8/LC_NUMERIC
+#usr/lib/locale/zh_SG.utf8/LC_PAPER
+#usr/lib/locale/zh_SG.utf8/LC_TELEPHONE
+#usr/lib/locale/zh_SG.utf8/LC_TIME
+#usr/lib/locale/zh_SG/LC_ADDRESS
+#usr/lib/locale/zh_SG/LC_COLLATE
+#usr/lib/locale/zh_SG/LC_CTYPE
+#usr/lib/locale/zh_SG/LC_IDENTIFICATION
+#usr/lib/locale/zh_SG/LC_MEASUREMENT
+#usr/lib/locale/zh_SG/LC_MESSAGES
+#usr/lib/locale/zh_SG/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_SG/LC_MONETARY
+#usr/lib/locale/zh_SG/LC_NAME
+#usr/lib/locale/zh_SG/LC_NUMERIC
+#usr/lib/locale/zh_SG/LC_PAPER
+#usr/lib/locale/zh_SG/LC_TELEPHONE
+#usr/lib/locale/zh_SG/LC_TIME
+#usr/lib/locale/zh_TW
+#usr/lib/locale/zh_TW.euctw
+#usr/lib/locale/zh_TW.euctw/LC_ADDRESS
+#usr/lib/locale/zh_TW.euctw/LC_COLLATE
+#usr/lib/locale/zh_TW.euctw/LC_CTYPE
+#usr/lib/locale/zh_TW.euctw/LC_IDENTIFICATION
+#usr/lib/locale/zh_TW.euctw/LC_MEASUREMENT
+#usr/lib/locale/zh_TW.euctw/LC_MESSAGES
+#usr/lib/locale/zh_TW.euctw/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_TW.euctw/LC_MONETARY
+#usr/lib/locale/zh_TW.euctw/LC_NAME
+#usr/lib/locale/zh_TW.euctw/LC_NUMERIC
+#usr/lib/locale/zh_TW.euctw/LC_PAPER
+#usr/lib/locale/zh_TW.euctw/LC_TELEPHONE
+#usr/lib/locale/zh_TW.euctw/LC_TIME
+#usr/lib/locale/zh_TW.utf8
+#usr/lib/locale/zh_TW.utf8/LC_ADDRESS
+#usr/lib/locale/zh_TW.utf8/LC_COLLATE
+#usr/lib/locale/zh_TW.utf8/LC_CTYPE
+#usr/lib/locale/zh_TW.utf8/LC_IDENTIFICATION
+#usr/lib/locale/zh_TW.utf8/LC_MEASUREMENT
+#usr/lib/locale/zh_TW.utf8/LC_MESSAGES
+#usr/lib/locale/zh_TW.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_TW.utf8/LC_MONETARY
+#usr/lib/locale/zh_TW.utf8/LC_NAME
+#usr/lib/locale/zh_TW.utf8/LC_NUMERIC
+#usr/lib/locale/zh_TW.utf8/LC_PAPER
+#usr/lib/locale/zh_TW.utf8/LC_TELEPHONE
+#usr/lib/locale/zh_TW.utf8/LC_TIME
+#usr/lib/locale/zh_TW/LC_ADDRESS
+#usr/lib/locale/zh_TW/LC_COLLATE
+#usr/lib/locale/zh_TW/LC_CTYPE
+#usr/lib/locale/zh_TW/LC_IDENTIFICATION
+#usr/lib/locale/zh_TW/LC_MEASUREMENT
+#usr/lib/locale/zh_TW/LC_MESSAGES
+#usr/lib/locale/zh_TW/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zh_TW/LC_MONETARY
+#usr/lib/locale/zh_TW/LC_NAME
+#usr/lib/locale/zh_TW/LC_NUMERIC
+#usr/lib/locale/zh_TW/LC_PAPER
+#usr/lib/locale/zh_TW/LC_TELEPHONE
+#usr/lib/locale/zh_TW/LC_TIME
+#usr/lib/locale/zu_ZA
+#usr/lib/locale/zu_ZA.utf8
+#usr/lib/locale/zu_ZA.utf8/LC_ADDRESS
+#usr/lib/locale/zu_ZA.utf8/LC_COLLATE
+#usr/lib/locale/zu_ZA.utf8/LC_CTYPE
+#usr/lib/locale/zu_ZA.utf8/LC_IDENTIFICATION
+#usr/lib/locale/zu_ZA.utf8/LC_MEASUREMENT
+#usr/lib/locale/zu_ZA.utf8/LC_MESSAGES
+#usr/lib/locale/zu_ZA.utf8/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zu_ZA.utf8/LC_MONETARY
+#usr/lib/locale/zu_ZA.utf8/LC_NAME
+#usr/lib/locale/zu_ZA.utf8/LC_NUMERIC
+#usr/lib/locale/zu_ZA.utf8/LC_PAPER
+#usr/lib/locale/zu_ZA.utf8/LC_TELEPHONE
+#usr/lib/locale/zu_ZA.utf8/LC_TIME
+#usr/lib/locale/zu_ZA/LC_ADDRESS
+#usr/lib/locale/zu_ZA/LC_COLLATE
+#usr/lib/locale/zu_ZA/LC_CTYPE
+#usr/lib/locale/zu_ZA/LC_IDENTIFICATION
+#usr/lib/locale/zu_ZA/LC_MEASUREMENT
+#usr/lib/locale/zu_ZA/LC_MESSAGES
+#usr/lib/locale/zu_ZA/LC_MESSAGES/SYS_LC_MESSAGES
+#usr/lib/locale/zu_ZA/LC_MONETARY
+#usr/lib/locale/zu_ZA/LC_NAME
+#usr/lib/locale/zu_ZA/LC_NUMERIC
+#usr/lib/locale/zu_ZA/LC_PAPER
+#usr/lib/locale/zu_ZA/LC_TELEPHONE
+#usr/lib/locale/zu_ZA/LC_TIME
 #usr/sbin/iconvconfig
 #usr/sbin/nscd
 #usr/sbin/rpcinfo
index f26e2446dc815aa78b4be6134e5e5723bfca0bda..fa3dbcdb8c279fde9251a03f510b031f61a49a7d 100644 (file)
@@ -36,10 +36,11 @@ etc/rc.d/init.d/functions
 #etc/rc.d/init.d/gnump3d
 etc/rc.d/init.d/halt
 #etc/rc.d/init.d/hostapd
-#etc/rc.d/init.d/icecream
 #etc/rc.d/init.d/imspector
 etc/rc.d/init.d/ipsec
+#etc/rc.d/init.d/keepalived
 #etc/rc.d/init.d/lcd4linux
+#etc/rc.d/init.d/lcdproc
 #etc/rc.d/init.d/lcr
 etc/rc.d/init.d/leds
 etc/rc.d/init.d/localnet
@@ -64,6 +65,7 @@ etc/rc.d/init.d/network-vlans
 etc/rc.d/init.d/networking/any
 etc/rc.d/init.d/networking/blue
 etc/rc.d/init.d/networking/dhcpcd.exe
+etc/rc.d/init.d/networking/functions.network
 etc/rc.d/init.d/networking/green
 etc/rc.d/init.d/networking/orange
 etc/rc.d/init.d/networking/red
@@ -73,27 +75,23 @@ etc/rc.d/init.d/networking/red.down/10-ipsec
 etc/rc.d/init.d/networking/red.down/10-miniupnpd
 etc/rc.d/init.d/networking/red.down/10-ovpn
 etc/rc.d/init.d/networking/red.down/20-RL-firewall
-etc/rc.d/init.d/networking/red.down/99-D-dialctrl.pl
 #etc/rc.d/init.d/networking/red.up
 etc/rc.d/init.d/networking/red.up/01-conntrack-cleanup
 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/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
 etc/rc.d/init.d/networking/red.up/50-ipsec
 etc/rc.d/init.d/networking/red.up/50-ovpn
 etc/rc.d/init.d/networking/red.up/98-leds
-etc/rc.d/init.d/networking/red.up/99-U-dialctrl.pl
 etc/rc.d/init.d/networking/red.up/99-fireinfo
 etc/rc.d/init.d/networking/red.up/99-pakfire-update
+etc/rc.d/init.d/networking/wpa_supplicant.exe
 #etc/rc.d/init.d/nfs-server
 etc/rc.d/init.d/ntp
 #etc/rc.d/init.d/nut
@@ -106,6 +104,7 @@ etc/rc.d/init.d/fsresize
 etc/rc.d/init.d/random
 etc/rc.d/init.d/rc
 etc/rc.d/init.d/reboot
+etc/rc.d/init.d/rngd
 #etc/rc.d/init.d/samba
 #etc/rc.d/init.d/sane
 etc/rc.d/init.d/sendsignals
@@ -117,6 +116,7 @@ etc/rc.d/init.d/squid
 etc/rc.d/init.d/sshd
 #etc/rc.d/init.d/sslh
 etc/rc.d/init.d/static-routes
+#etc/rc.d/init.d/stunnel
 etc/rc.d/init.d/swap
 etc/rc.d/init.d/sysctl
 etc/rc.d/init.d/sysklogd
@@ -124,6 +124,7 @@ etc/rc.d/init.d/teamspeak
 etc/rc.d/init.d/template
 #etc/rc.d/init.d/tftpd
 etc/rc.d/init.d/tmpfs
+#etc/rc.d/init.d/tor
 #etc/rc.d/init.d/transmission
 etc/rc.d/init.d/udev
 etc/rc.d/init.d/udev_retry
@@ -133,6 +134,7 @@ etc/rc.d/init.d/upnpd
 #etc/rc.d/init.d/vsftpd
 #etc/rc.d/init.d/watchdog
 #etc/rc.d/init.d/winbind
+etc/rc.d/init.d/wlanclient
 #etc/rc.d/init.d/xinetd
 #etc/rc.d/rc0.d
 #etc/rc.d/rc0.d/K01imspetor
@@ -150,6 +152,7 @@ etc/rc.d/rc0.d/K49cyrus-sasl
 etc/rc.d/rc0.d/K78snort
 etc/rc.d/rc0.d/K79leds
 etc/rc.d/rc0.d/K80network
+etc/rc.d/rc0.d/K82wlanclient
 #etc/rc.d/rc0.d/K84bluetooth
 #etc/rc.d/rc0.d/K85messagebus
 etc/rc.d/rc0.d/K85tmpfs
@@ -168,6 +171,7 @@ etc/rc.d/rc3.d/S12acpid
 #etc/rc.d/rc3.d/S16bluetooth
 #etc/rc.d/rc3.d/S18cpufreq
 etc/rc.d/rc3.d/S19smartenabler
+etc/rc.d/rc3.d/S19wlanclient
 etc/rc.d/rc3.d/S20network
 etc/rc.d/rc3.d/S21leds
 etc/rc.d/rc3.d/S24cyrus-sasl
@@ -198,6 +202,7 @@ etc/rc.d/rc6.d/K49cyrus-sasl
 etc/rc.d/rc6.d/K78snort
 etc/rc.d/rc6.d/K79leds
 etc/rc.d/rc6.d/K80network
+etc/rc.d/rc6.d/K82wlanclient
 #etc/rc.d/rc6.d/K84bluetooth
 #etc/rc.d/rc6.d/K85messagebus
 etc/rc.d/rc6.d/K85tmpfs
@@ -210,6 +215,7 @@ etc/rc.d/rc6.d/S90localnet
 etc/rc.d/rc6.d/S99reboot
 #etc/rc.d/rcsysinit.d
 etc/rc.d/rcsysinit.d/S00mountkernfs
+etc/rc.d/rcsysinit.d/S01sysctl
 etc/rc.d/rcsysinit.d/S05modules
 etc/rc.d/rcsysinit.d/S10udev
 etc/rc.d/rcsysinit.d/S19checkfstab
@@ -223,8 +229,9 @@ etc/rc.d/rcsysinit.d/S60setclock
 etc/rc.d/rcsysinit.d/S70console
 etc/rc.d/rcsysinit.d/S75firstsetup
 etc/rc.d/rcsysinit.d/S80localnet
-etc/rc.d/rcsysinit.d/S90sysctl
+etc/rc.d/rcsysinit.d/S85firewall
 etc/rc.d/rcsysinit.d/S91network-vlans
+etc/rc.d/rcsysinit.d/S92rngd
 etc/rc.d/rc3.d/S15fireinfo
 #etc/sysconfig
 etc/sysconfig/createfiles
diff --git a/config/rootfiles/common/i586/ipfire-netboot b/config/rootfiles/common/i586/ipfire-netboot
new file mode 100644 (file)
index 0000000..b73261f
--- /dev/null
@@ -0,0 +1,2 @@
+#usr/share/ipfire-netboot
+#usr/share/ipfire-netboot/ipxe.lkrn
index 750b61e377d009b13ad20d613389f3f25b51a78d..3f364aed55e54ad1ee68f0f475c1291b7bb1abc2 100644 (file)
@@ -3,42 +3,40 @@ boot/System.map-ipfire
 boot/config-KVER-ipfire
 boot/vmlinuz-KVER-ipfire
 boot/vmlinuz-ipfire
-etc/modprobe.d/framebuffer
-etc/modprobe.d/ipv6
-etc/modprobe.d/isdn
+etc/modprobe.d/framebuffer.conf
+etc/modprobe.d/ipv6.conf
+etc/modprobe.d/isdn.conf
 lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/build
 #lib/modules/KVER-ipfire/kernel
 #lib/modules/KVER-ipfire/kernel/arch
 #lib/modules/KVER-ipfire/kernel/arch/x86
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto
-#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/aes-i586.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/aesni-intel.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/crc32c-intel.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/salsa20-i586.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/crc32-pclmul.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/glue_helper.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/crypto/serpent-sse2-i586.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/twofish-i586.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kernel
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/apm.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/mcheck
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kernel/microcode.ko
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/msr.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/test_nx.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm-amd.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm-intel.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/platform
+#lib/modules/KVER-ipfire/kernel/arch/x86/platform/iris
+#lib/modules/KVER-ipfire/kernel/arch/x86/platform/iris/iris.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/platform/scx200
 #lib/modules/KVER-ipfire/kernel/arch/x86/platform/scx200/scx200.ko
 #lib/modules/KVER-ipfire/kernel/crypto
-#lib/modules/KVER-ipfire/kernel/crypto/aes_generic.ko
-#lib/modules/KVER-ipfire/kernel/crypto/af_alg.ko
-#lib/modules/KVER-ipfire/kernel/crypto/algif_hash.ko
-#lib/modules/KVER-ipfire/kernel/crypto/algif_skcipher.ko
 #lib/modules/KVER-ipfire/kernel/crypto/ansi_cprng.ko
 #lib/modules/KVER-ipfire/kernel/crypto/anubis.ko
 #lib/modules/KVER-ipfire/kernel/crypto/arc4.ko
+#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys
+#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
+#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/public_key.ko
+#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/rsa.ko
+#lib/modules/KVER-ipfire/kernel/crypto/asymmetric_keys/x509_key_parser.ko
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_memcpy.ko
 #lib/modules/KVER-ipfire/kernel/crypto/async_tx/async_pq.ko
@@ -50,27 +48,22 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/crypto/authencesn.ko
 #lib/modules/KVER-ipfire/kernel/crypto/blowfish_common.ko
 #lib/modules/KVER-ipfire/kernel/crypto/blowfish_generic.ko
-#lib/modules/KVER-ipfire/kernel/crypto/camellia.ko
-#lib/modules/KVER-ipfire/kernel/crypto/cast5.ko
-#lib/modules/KVER-ipfire/kernel/crypto/cast6.ko
-#lib/modules/KVER-ipfire/kernel/crypto/cbc.ko
+#lib/modules/KVER-ipfire/kernel/crypto/camellia_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/cast5_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/cast6_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/cast_common.ko
 #lib/modules/KVER-ipfire/kernel/crypto/ccm.ko
-#lib/modules/KVER-ipfire/kernel/crypto/crc32c.ko
-#lib/modules/KVER-ipfire/kernel/crypto/cryptd.ko
-#lib/modules/KVER-ipfire/kernel/crypto/crypto_user.ko
-#lib/modules/KVER-ipfire/kernel/crypto/ctr.ko
+#lib/modules/KVER-ipfire/kernel/crypto/cmac.ko
+#lib/modules/KVER-ipfire/kernel/crypto/crypto_null.ko
 #lib/modules/KVER-ipfire/kernel/crypto/cts.ko
+#lib/modules/KVER-ipfire/kernel/crypto/deflate.ko
 #lib/modules/KVER-ipfire/kernel/crypto/des_generic.ko
-#lib/modules/KVER-ipfire/kernel/crypto/ecb.ko
 #lib/modules/KVER-ipfire/kernel/crypto/fcrypt.ko
 #lib/modules/KVER-ipfire/kernel/crypto/gcm.ko
-#lib/modules/KVER-ipfire/kernel/crypto/gf128mul.ko
 #lib/modules/KVER-ipfire/kernel/crypto/ghash-generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/khazad.ko
-#lib/modules/KVER-ipfire/kernel/crypto/lrw.ko
 #lib/modules/KVER-ipfire/kernel/crypto/lzo.ko
 #lib/modules/KVER-ipfire/kernel/crypto/md4.ko
-#lib/modules/KVER-ipfire/kernel/crypto/md5.ko
 #lib/modules/KVER-ipfire/kernel/crypto/michael_mic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/pcbc.ko
 #lib/modules/KVER-ipfire/kernel/crypto/pcrypt.ko
@@ -80,11 +73,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/crypto/rmd320.ko
 #lib/modules/KVER-ipfire/kernel/crypto/salsa20_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/seed.ko
-#lib/modules/KVER-ipfire/kernel/crypto/seqiv.ko
-#lib/modules/KVER-ipfire/kernel/crypto/serpent.ko
+#lib/modules/KVER-ipfire/kernel/crypto/serpent_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/sha1_generic.ko
-#lib/modules/KVER-ipfire/kernel/crypto/sha256_generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/sha512_generic.ko
+#lib/modules/KVER-ipfire/kernel/crypto/tcrypt.ko
 #lib/modules/KVER-ipfire/kernel/crypto/tea.ko
 #lib/modules/KVER-ipfire/kernel/crypto/tgr192.ko
 #lib/modules/KVER-ipfire/kernel/crypto/twofish_common.ko
@@ -93,32 +85,21 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/crypto/wp512.ko
 #lib/modules/KVER-ipfire/kernel/crypto/xcbc.ko
 #lib/modules/KVER-ipfire/kernel/crypto/xor.ko
-#lib/modules/KVER-ipfire/kernel/crypto/xts.ko
 #lib/modules/KVER-ipfire/kernel/crypto/zlib.ko
 #lib/modules/KVER-ipfire/kernel/drivers
 #lib/modules/KVER-ipfire/kernel/drivers/acpi
-#lib/modules/KVER-ipfire/kernel/drivers/acpi/ac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_i2c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_ipmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_pad.ko
-#lib/modules/KVER-ipfire/kernel/drivers/acpi/battery.ko
-#lib/modules/KVER-ipfire/kernel/drivers/acpi/button.ko
-#lib/modules/KVER-ipfire/kernel/drivers/acpi/container.ko
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/custom_method.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/ec_sys.ko
-#lib/modules/KVER-ipfire/kernel/drivers/acpi/fan.ko
-#lib/modules/KVER-ipfire/kernel/drivers/acpi/pci_slot.ko
-#lib/modules/KVER-ipfire/kernel/drivers/acpi/processor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/sbs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/sbshc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/acpi/thermal.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/video.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata
 #lib/modules/KVER-ipfire/kernel/drivers/ata/acard-ahci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/ahci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/ahci_platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/ata_generic.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/ata_piix.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/libahci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/libata.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_acpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_ali.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_amd.ko
@@ -130,7 +111,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cmd64x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cs5520.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cs5530.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cs5535.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cs5536.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_cypress.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_efar.ko
@@ -156,6 +136,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_pdc2027x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_pdc202xx_old.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_piccolo.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/pata_platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_radisys.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_rdc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_rz1000.ko
@@ -168,6 +149,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_triflex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pata_via.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/pdc_adma.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_highbank.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_inic162x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_mv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_nv.ko
@@ -189,7 +171,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/atm/fore_200e.ko
 #lib/modules/KVER-ipfire/kernel/drivers/atm/he.ko
 #lib/modules/KVER-ipfire/kernel/drivers/atm/horizon.ko
-#lib/modules/KVER-ipfire/kernel/drivers/atm/idt77105.ko
 #lib/modules/KVER-ipfire/kernel/drivers/atm/idt77252.ko
 #lib/modules/KVER-ipfire/kernel/drivers/atm/iphase.ko
 #lib/modules/KVER-ipfire/kernel/drivers/atm/lanai.ko
@@ -201,20 +182,19 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/base
 #lib/modules/KVER-ipfire/kernel/drivers/base/regmap
 #lib/modules/KVER-ipfire/kernel/drivers/base/regmap/regmap-i2c.ko
-#lib/modules/KVER-ipfire/kernel/drivers/bcma
-#lib/modules/KVER-ipfire/kernel/drivers/bcma/bcma.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block
 #lib/modules/KVER-ipfire/kernel/drivers/block/DAC960.ko
-#lib/modules/KVER-ipfire/kernel/drivers/block/aoe
-#lib/modules/KVER-ipfire/kernel/drivers/block/aoe/aoe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/cciss.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/cpqarray.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/cryptoloop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/floppy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/block/nbd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/block/osdblk.ko
-#lib/modules/KVER-ipfire/kernel/drivers/block/rbd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx
+#lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx/mtip32xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/block/nvme.ko
+#lib/modules/KVER-ipfire/kernel/drivers/block/rsxx
+#lib/modules/KVER-ipfire/kernel/drivers/block/rsxx/rsxx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/sx8.ko
+#lib/modules/KVER-ipfire/kernel/drivers/block/umem.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/virtio_blk.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/ath3k.ko
@@ -222,38 +202,22 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bfusb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bluecard_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bpa10x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/bt3c_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btmrvl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btmrvl_sdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btsdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btuart_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btusb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/btwilink.ko
-#lib/modules/KVER-ipfire/kernel/drivers/bluetooth/dtl1_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/hci_uart.ko
 #lib/modules/KVER-ipfire/kernel/drivers/bluetooth/hci_vhci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cdrom
-#lib/modules/KVER-ipfire/kernel/drivers/cdrom/cdrom.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/agpgart.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/ali-agp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/amd-k7-agp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/amd64-agp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/ati-agp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/efficeon-agp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/intel-agp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/intel-gtt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/nvidia-agp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/sis-agp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/sworks-agp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/agp/via-agp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hangcheck-timer.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/amd-rng.ko
+#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/atmel-rng.ko
+#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/exynos-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/geode-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/intel-rng.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/rng-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/timeriomem-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/via-rng.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/hw_random/virtio-rng.ko
@@ -268,26 +232,21 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/char/mwave
 #lib/modules/KVER-ipfire/kernel/drivers/char/mwave/mwave.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/nsc_gpio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/nvram.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/pc8736x_gpio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/pcmcia
-#lib/modules/KVER-ipfire/kernel/drivers/char/pcmcia/synclink_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/ppdev.ko
-#lib/modules/KVER-ipfire/kernel/drivers/char/scx200_gpio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/char/sonypi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/char/toshiba.ko
 #lib/modules/KVER-ipfire/kernel/drivers/clocksource
 #lib/modules/KVER-ipfire/kernel/drivers/clocksource/cs5535-clockevt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/clocksource/scx200_hrt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/connector
-#lib/modules/KVER-ipfire/kernel/drivers/connector/cn.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/acpi-cpufreq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/amd_freq_sensitivity.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq-nforce2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_conservative.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_ondemand.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_powersave.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_userspace.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/e_powersaver.ko
+#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_stats.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/gx-suspmod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/longhaul.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/longrun.ko
@@ -297,62 +256,78 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/powernow-k6.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/powernow-k7.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/powernow-k8.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/speedstep-centrino.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/speedstep-ich.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/speedstep-lib.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/speedstep-smi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto
-#lib/modules/KVER-ipfire/kernel/drivers/crypto/geode-aes.ko.off
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/geode-aes.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/hifn_795x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-aes.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-sha.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dca
 #lib/modules/KVER-ipfire/kernel/drivers/dca/dca.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma
-#lib/modules/KVER-ipfire/kernel/drivers/dma/dmatest.ko
-#lib/modules/KVER-ipfire/kernel/drivers/dma/intel_mid_dma.ko
+#lib/modules/KVER-ipfire/kernel/drivers/dma/dw_dmac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma/ioat
 #lib/modules/KVER-ipfire/kernel/drivers/dma/ioat/ioatdma.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma/pch_dma.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma/timb_dma.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac
+#lib/modules/KVER-ipfire/kernel/drivers/edac/e752x_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/edac_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/edac_mce_amd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/i3000_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/i3200_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/i5000_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/i5100_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/i5400_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/i7300_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/i7core_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/i82975x_edac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/mce_amd_inj.ko
+#lib/modules/KVER-ipfire/kernel/drivers/edac/x38_edac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firewire
 #lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-net.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-ohci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firewire/firewire-sbp2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firmware
-#lib/modules/KVER-ipfire/kernel/drivers/firmware/dmi-sysfs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/firmware/dcdbas.ko
+#lib/modules/KVER-ipfire/kernel/drivers/firmware/dell_rbu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/firmware/edd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/firmware/iscsi_ibft.ko
-#lib/modules/KVER-ipfire/kernel/drivers/firmware/sigma.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-adp5588.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-cs5535.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-generic.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-it8761e.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-janz-ttl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-max7300.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-max730x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-max732x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-mcp23s08.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ml-ioh.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-pca953x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-pcf857x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-pch.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-rdc321x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ich.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-sch.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-vx855.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-ts5500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-viperboard.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast/ast.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus/cirrus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm_kms_helper.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/gma500
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/gma500/gma500_gfx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/ch7006.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/sil164.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i2c/tda998x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i810
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i810/i810.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i915
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/i915/i915.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mga
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mga/mga.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mgag200
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/mgag200/mgag200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/nouveau
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/nouveau/nouveau.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/qxl
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/qxl/qxl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/r128
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/r128/r128.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/radeon
@@ -365,68 +340,51 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/tdfx/tdfx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ttm
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ttm/ttm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/udl
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/udl/udl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/via
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/via/via.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vmwgfx
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/stub
-#lib/modules/KVER-ipfire/kernel/drivers/gpu/stub/poulsbo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-a4tech.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-apple.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-axff.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-belkin.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-cherry.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-chicony.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-cypress.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-dr.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-elecom.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-ezkey.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gaff.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-aureal.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-gyration.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-holtekff.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-kensington.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-keytouch.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-kye.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lcpower.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-lenovo-tpkbd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-logitech-dj.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-logitech.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-magicmouse.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-microsoft.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-monterey.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-multitouch.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-ntrig.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-ortek.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-petalynx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-picolcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-pl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-primax.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-prodikeys.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-quanta.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-arvo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-isku.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-kone.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-koneplus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-konepure.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-kovaplus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-lua.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-pyra.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-savu.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-saitek.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-samsung.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sjoy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sony.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sensor-hub.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-speedlink.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-tmff.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-thingm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-tivo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-topseed.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-twinhan.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-uclogic.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-wacom.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-waltop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-wiimote.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-zpff.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-zydacron.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hid/usbhid
-#lib/modules/KVER-ipfire/kernel/drivers/hid/usbhid/usbhid.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/i2c-hid
+#lib/modules/KVER-ipfire/kernel/drivers/hid/i2c-hid/i2c-hid.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hsi
+#lib/modules/KVER-ipfire/kernel/drivers/hsi/clients
+#lib/modules/KVER-ipfire/kernel/drivers/hsi/clients/hsi_char.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hsi/hsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hv
+#lib/modules/KVER-ipfire/kernel/drivers/hv/hv_balloon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hv/hv_utils.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hv/hv_vmbus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon
@@ -443,10 +401,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adm9240.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ads1015.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ads7828.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adt7410.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adt7411.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adt7462.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adt7470.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/adt7475.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/adt7x10.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/amc6821.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/applesmc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/asb100.ko
@@ -458,7 +418,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ds1621.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ds620.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/emc1403.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/emc2103.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/emc6w201.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/f71805f.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/f71882fg.ko
@@ -468,14 +427,14 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/g760a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl518sm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl520sm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/gpio-fan.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/hih6130.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/hwmon-vid.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/hwmon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/i5k_amb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmaem.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmpex.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina209.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/ina2xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/it87.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/jc42.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/k10temp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/k8temp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lineage-pem.ko
@@ -491,6 +450,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm90.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm92.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm93.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95234.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95241.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/lm95245.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ltc4151.ko
@@ -500,9 +460,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max16065.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max1619.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max1668.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max197.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6639.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6642.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6650.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/max6697.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/nct6775.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ntc_thermistor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pc87360.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pc87427.ko
@@ -510,7 +474,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/adm1275.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/lm25066.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ltc2978.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max16064.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max34440.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/max8688.ko
@@ -518,14 +481,12 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/pmbus_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ucd9000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/ucd9200.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/pmbus/zl6100.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch5627.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch5636.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sch56xx-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht15.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sht21.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/sis5595.ko
-#lib/modules/KVER-ipfire/kernel/drivers/hwmon/smm665.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47b397.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47m1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/smsc47m192.ko
@@ -557,20 +518,17 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-amd756-s4882.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-amd756.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-amd8111.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-cbus-gpio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-designware-platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-eg20t.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-gpio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-i801.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-intel-mid.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-isch.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-ismt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-nforce2-s4985.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-nforce2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-ocores.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-parport-light.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-parport.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-pca-isa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-pca-platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-piix4.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-scmi.ko
@@ -578,66 +536,55 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-sis5595.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-sis630.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-sis96x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-stub.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-taos-evm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-tiny-usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-via.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-viapro.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-xiic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-viperboard.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/scx200_acb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-dev.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-mux.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-smbus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/gpio-i2cmux.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/pca9541.ko
-#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/pca954x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/ieee802154
-#lib/modules/KVER-ipfire/kernel/drivers/ieee802154/fakehard.ko
+#lib/modules/KVER-ipfire/kernel/drivers/iio
+#lib/modules/KVER-ipfire/kernel/drivers/iio/common
+#lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors
+#lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors/hid-sensor-trigger.ko
+#lib/modules/KVER-ipfire/kernel/drivers/iio/industrialio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/iio/kfifo_buf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input
-#lib/modules/KVER-ipfire/kernel/drivers/input/ff-memless.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/input-polldev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/adp5588-keys.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/adp5589-keys.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/gpio_keys.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/gpio_keys_polled.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/lkkbd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/lm8323.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/matrix_keypad.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/max7359_keypad.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/mcs_touchkey.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/mpr121_touchkey.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/newtonkbd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/opencores-kbd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/qt1070.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/qt2160.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/stowaway.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/sunkbd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/tca6416-keypad.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/xtkbd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/keyboard/lm8333.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/matrix-keymap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc
-#lib/modules/KVER-ipfire/kernel/drivers/input/misc/ad714x-i2c.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/misc/ad714x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/apanel.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/ati_remote2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/misc/bma150.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/misc/atlas_btns.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/cm109.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/keyspan_remote.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/misc/pcf50633-input.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/misc/pcf8574_keypad.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/pcspkr.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/powermate.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/misc/retu-pwrbutton.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/rotary_encoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/misc/uinput.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/yealink.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/appletouch.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/bcm5974.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/cyapa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/psmouse.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/sermouse.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/synaptics_i2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/synaptics_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/mouse/vsxxxaa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/serio
 #lib/modules/KVER-ipfire/kernel/drivers/input/serio/altera_ps2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/input/serio/ps2mult.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/serio/arc_ps2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/serio/serio_raw.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/sparse-keymap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/act2000
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/act2000/act2000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/capi
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/capi/capi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/capi/capidrv.ko
@@ -651,14 +598,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/gigaset/usb_gigaset.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/avm
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/avm/avm_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/avm/b1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/avm/b1dma.ko
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/avm/b1isa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/avm/b1pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/avm/b1pcmcia.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/avm/c4.ko
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/avm/t1isa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/avm/t1pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/eicon
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/eicon/diva_idi.ko
@@ -678,77 +621,72 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/mISDN/speedfax.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hardware/mISDN/w6692.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax/avma1_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax/elsa_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax/hfc4s8s_l1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax/hfc_usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax/hisax.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax/hisax_fcpcipnp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax/hisax_isac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax/hisax_st5481.ko
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax/sedlbauer_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/hisax/teles_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hysdn
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/hysdn/hysdn.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/i4l
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/i4l/isdn.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/i4l/isdn_bsdcomp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/i4l/isdnhdlc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/icn
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/icn/icn.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN/l1oip.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN/mISDN_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/pcbit
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/pcbit/pcbit.ko
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/sc
-#lib/modules/KVER-ipfire/kernel/drivers/isdn/sc/sc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds
 #lib/modules/KVER-ipfire/kernel/drivers/leds/dell-led.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-bd2802.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-blinkm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-clevo-mail.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-gpio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lm3530.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lm3533.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lm355x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lm3642.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp3944.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5521.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5523.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5562.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp55xx-common.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lt3593.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-net48xx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-net5501.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ot200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9532.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca955x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-regulator.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9633.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ss4200.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-wrap.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/ledtrig-backlight.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/ledtrig-default-on.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/ledtrig-gpio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/ledtrig-heartbeat.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/ledtrig-netdev.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/ledtrig-timer.ko
-#lib/modules/KVER-ipfire/kernel/drivers/lguest
-#lib/modules/KVER-ipfire/kernel/drivers/lguest/lg.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-tca6507.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger
+#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-backlight.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-camera.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-default-on.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-gpio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-heartbeat.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-netdev.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-timer.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/trigger/ledtrig-transient.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md
+#lib/modules/KVER-ipfire/kernel/drivers/md/bcache
+#lib/modules/KVER-ipfire/kernel/drivers/md/bcache/bcache.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-bio-prison.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-bufio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-cleaner.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-crypt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-delay.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-flakey.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-log-userspace.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-log.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-mirror.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-mod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-multipath.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-queue-length.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-raid.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-region-hash.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-round-robin.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-service-time.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-snapshot.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-thin-pool.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-zero.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-verity.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/faulty.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/linear.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/md-mod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/multipath.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/persistent-data
 #lib/modules/KVER-ipfire/kernel/drivers/md/persistent-data/dm-persistent-data.ko
@@ -758,31 +696,272 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/md/raid456.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media
 #lib/modules/KVER-ipfire/kernel/drivers/media/common
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/mc44s803.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/mt20xx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/tda18271.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/tda827x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/tda8290.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/tda9887.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/tea5761.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/tea5767.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/tuner-simple.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/tuner-types.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/xc4000.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/common/tuners/xc5000.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb/dvb-core
-#lib/modules/KVER-ipfire/kernel/drivers/media/dvb/dvb-core/dvb-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/b2c2
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/btcx-risc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/cx2341x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/cypress_firmware.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/saa7146
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/saa7146/saa7146.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/saa7146/saa7146_vv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/siano
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/siano/smsdvb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/siano/smsmdtv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/common/tveeprom.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-core
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-core/dvb-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/a8293.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/af9013.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/atbm8830.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/au8522_dig.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/bcm3510.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx22700.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx22702.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24110.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24113.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24116.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24123.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cxd2820r.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib0070.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib0090.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib3000mb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib3000mc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib7000m.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib7000p.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib8000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxk.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ds3000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvb-pll.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6405.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6421.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6423.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/it913x-fe.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/itd1000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ix2505v.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/l64781.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lg2160.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgdt330x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lnbp21.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/lnbp22.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88dc2800.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88ds3103.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/m88rs2000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mb86a16.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mt312.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/mt352.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/nxt200x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/nxt6000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/or51132.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/or51211.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/rtl2830.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/rtl2832.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1409.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1411.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s5h1420.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp8870.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/sp887x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb0899.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb6000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stb6100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv0288.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv0297.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv0299.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv0367.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv0900.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv090x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv6110.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10021.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10023.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10048.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda1004x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10071.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda10086.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda18271c2dd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda665x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda8083.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda8261.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tda826x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ts2020.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/tua6100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ves1820.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ves1x93.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/zl10036.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/zl10039.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/zl10353.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/firewire
+#lib/modules/KVER-ipfire/kernel/drivers/media/firewire/firedtv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7170.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7175.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/adv7180.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt819.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt856.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/bt866.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs5345.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cs53l32a.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cx25840
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/cx25840/cx25840.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ir-kbd-i2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ks0127.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/m52790.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ov7670.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6588.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa7110.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa7115.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa7127.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa717x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa7185.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/imx074.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9m001.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9m111.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9t031.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9t112.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/mt9v022.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/ov2640.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/ov5642.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/ov6650.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/ov772x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/ov9640.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/ov9740.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/rj54n1cb0c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/soc_camera/tw9910.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tda7432.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tda9840.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tea6415c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tea6420.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tvaudio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/upd64031a.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/upd64083.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/vp27smpx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/vpx3220.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/wm8739.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/wm8775.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/media.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/b2c2
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/bt878.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/bttv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dst.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dst_ca.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/bt8xx/dvb-bt8xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18/cx18-alsa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx18/cx18.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx23885
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx23885/altera-ci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx23885/cx23885.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx25821
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx25821/cx25821-alsa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx25821/cx25821.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx88
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx88/cx88-alsa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx88/cx88-blackbird.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx88/cx88-dvb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx88/cx88-vp3054-i2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx88/cx8800.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx88/cx8802.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/cx88/cx88xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ddbridge
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ddbridge/ddbridge.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dm1105
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/dm1105/dm1105.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtv-alsa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ivtv/ivtvfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/mantis
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/mantis/hopper.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/mantis/mantis.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/mantis/mantis_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/meye
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/meye/meye.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ngene
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ngene/ngene.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pluto2
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pluto2/pluto2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1/earth-pt1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa6752hs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/hexium_gemini.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/hexium_orion.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7146/mxb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7164
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7164/saa7164.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-av.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-ci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget-patch.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/budget.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/videocodec.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/zr36016.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/zr36050.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/zr36060.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/pci/zoran/zr36067.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/m2m-deinterlace.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/marvell-ccic
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/sh_veu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/timblogiw.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ati_remote.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ene_ir.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/fintek-cir.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/iguanair.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-jvc-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-lirc-codec.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-nec-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc5-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-rc6-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ir-sony-decoder.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ite-cir.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-alink-dtu-m.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-anysee.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-apac-viewcomp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-asus-pc39.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-asus-ps3-100.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-ati-tv-wonder-hd-600.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-ati-x10.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-avermedia-a16d.ko
@@ -806,6 +985,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-encore-enltv.ko
@@ -822,13 +1002,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-imon-mce.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-imon-pad.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-iodata-bctv7e.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-it913x-v1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-it913x-v2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-kaiomy.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-kworld-315u.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-kworld-pc150u.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-kworld-plus-tv-analog.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-leadtek-y04g0051.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-lirc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-lme2510.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-manli.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-medion-x10-digitainer.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-medion-x10-or2x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-medion-x10.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-msi-digivox-ii.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-msi-digivox-iii.ko
@@ -852,6 +1037,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-pv951.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-rc6-mce.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-real-audio-220-32-keys.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-reddo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-snapstream-firefly.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
@@ -861,6 +1047,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tevii-nec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tivo.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand-02.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
@@ -871,12 +1058,203 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-winfast-usbii-deluxe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-winfast.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/lirc_dev.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/mceusb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/nuvoton-cir.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/rc-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/video
-#lib/modules/KVER-ipfire/kernel/drivers/media/video/ir-kbd-i2c.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/video/v4l2-common.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/video/v4l2-int-device.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/video/videodev.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/rc-loopback.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/redrat3.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/streamzap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/ttusbir.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/winbond-cir.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/e4000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0011.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0012.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0013.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc2580.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/max2165.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mc44s803.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2060.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2063.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt20xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2131.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl5005s.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/qt1010.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18212.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18218.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda18271.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda827x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda8290.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tda9887.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tua9001.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-simple.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-types.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner-xc2028.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/tuner_it913x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/xc4000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/xc5000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/au0828
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/au0828/au0828.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/b2c2
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/b2c2/b2c2-flexcop-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/cpia2
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/cpia2/cpia2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/cx231xx
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/cx231xx/cx231xx-alsa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/cx231xx/cx231xx-dvb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/cx231xx/cx231xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-af9015.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-af9035.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-anysee.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-au6610.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-az6007.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ce6230.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/dvb_usb_v2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/mxl111sf-demod.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb-v2/mxl111sf-tuner.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-a800.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-af9005-remote.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-af9005.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-az6027.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-cinergyT2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-cxusb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtv5100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-dw2102.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-friio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-gp8psk.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-m920x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-nova-t-usb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-opera.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-pctv452e.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-technisat-usb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-ttusb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-umt-010.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-vp702x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb-vp7045.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/dvb-usb/dvb-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-dvb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_benq.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_conex.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_etoms.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_finepix.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_jl2005bcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_kinect.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_konica.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_main.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_mars.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_mr97310a.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_nw80x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_ov519.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_ov534.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_ov534_9.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_pac207.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_pac7302.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_pac7311.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_se401.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sn9c2028.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sn9c20x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sonixb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sonixj.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_spca1528.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_spca500.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_spca501.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_spca505.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_spca506.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_spca508.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_spca561.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sq905.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sq905c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sq930x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_stk014.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_stv0680.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_t613.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_topro.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_vicam.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_xirlink_cit.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_zc3xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/m5602
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/m5602/gspca_m5602.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/stv06xx
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/stv06xx/gspca_stv06xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/hdpvr
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/hdpvr/hdpvr.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/pvrusb2
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/pvrusb2/pvrusb2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/pwc
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/pwc/pwc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/s2255
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/s2255/s2255drv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/siano
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/siano/smsusb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/sn9c102
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/sn9c102/sn9c102.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/stk1160
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/stk1160/stk1160.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tlg2300
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tlg2300/poseidon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/tm6000/tm6000.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/ttusb-budget
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/ttusb-dec
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/ttusb-dec/ttusb_dec.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/ttusb-dec/ttusbdecfe.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/usbvision
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/usbvision/usbvision.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/uvc
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/uvc/uvcvideo.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/zr364xx
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/zr364xx/zr364xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/tuner.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-int-device.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videodev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/memstick
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/core
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/core/memstick.ko
@@ -884,6 +1262,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/host
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/host/jmb38x_ms.ko
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/host/r592.ko
+#lib/modules/KVER-ipfire/kernel/drivers/memstick/host/rtsx_pci_ms.ko
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/host/tifm_ms.ko
 #lib/modules/KVER-ipfire/kernel/drivers/message
 #lib/modules/KVER-ipfire/kernel/drivers/message/fusion
@@ -893,38 +1272,35 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptsas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptscsih.ko
 #lib/modules/KVER-ipfire/kernel/drivers/message/fusion/mptspi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/message/i2o
+#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_block.ko
+#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_bus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_config.ko
+#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_proc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/message/i2o/i2o_scsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/cs5535-mfd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/htc-pasic3.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/janz-cmodio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/lm3533-core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/lm3533-ctrlbank.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/lpc_ich.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/lpc_sch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/mfd-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/pcf50633-adc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/pcf50633-gpio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/pcf50633.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/rdc321x-southbridge.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/retu-mfd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/rtsx_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/sm501.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/timberdale.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/tps6105x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/tps65010.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/tps6507x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/ucb1400_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mfd/viperboard.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/vx855.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mfd/wl1273-core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mfd/wm8400-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc
-#lib/modules/KVER-ipfire/kernel/drivers/misc/apds9802als.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/apds990x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bh1770glc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bh1780gli.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/bmp085.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/c2port
-#lib/modules/KVER-ipfire/kernel/drivers/misc/c2port/c2port-duramar2150.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/c2port/core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/misc/altera-stapl
+#lib/modules/KVER-ipfire/kernel/drivers/misc/altera-stapl/altera-stapl.ko
+#lib/modules/KVER-ipfire/kernel/drivers/misc/bmp085-i2c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/cb710
 #lib/modules/KVER-ipfire/kernel/drivers/misc/cb710/cb710.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/cs5535-mfgpt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/ds1682.ko
+#lib/modules/KVER-ipfire/kernel/drivers/misc/dummy-irq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom
 #lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/at24.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/eeprom.ko
@@ -932,76 +1308,45 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/misc/eeprom/max6875.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/enclosure.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/fsa9480.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/hmc6352.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/hpilo.ko
+#lib/modules/KVER-ipfire/kernel/drivers/misc/ibmasm
+#lib/modules/KVER-ipfire/kernel/drivers/misc/ibmasm/ibmasm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/ics932s401.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/isl29003.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/isl29020.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/iwmc3200top
-#lib/modules/KVER-ipfire/kernel/drivers/misc/iwmc3200top/iwmc3200top.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/lis3lv02d
 #lib/modules/KVER-ipfire/kernel/drivers/misc/lis3lv02d/lis3lv02d.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/lis3lv02d/lis3lv02d_i2c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/pch_phub.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/ti-st
 #lib/modules/KVER-ipfire/kernel/drivers/misc/ti-st/st_drv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/tifm_7xx1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/tifm_core.ko
-#lib/modules/KVER-ipfire/kernel/drivers/misc/tsl2550.ko
 #lib/modules/KVER-ipfire/kernel/drivers/misc/vmw_balloon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/misc/vmw_vmci
+#lib/modules/KVER-ipfire/kernel/drivers/misc/vmw_vmci/vmw_vmci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/card
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/card/mmc_block.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/card/mmc_test.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/card/sdio_uart.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/core
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/core/mmc_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/cb710-mmc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-acpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pltfm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pxav2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci-pxav3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdhci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mmc/host/sdricoh_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/tifm_sd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/ushc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/via-sdmmc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/vub300.ko
 #lib/modules/KVER-ipfire/kernel/drivers/mmc/host/wbsd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/ar7part.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/chips
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/chips/chipreg.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/lpddr
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/lpddr/lpddr_cmds.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/lpddr/qinfo_probe.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/maps
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/maps/physmap.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/mtd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/mtd_blkdevs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/mtdblock.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/mtdchar.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/nand
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/nand/nand_ecc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/sm_ftl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/tests
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/tests/mtd_nandecctest.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/tests/mtd_oobtest.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/tests/mtd_pagetest.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/tests/mtd_readtest.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/tests/mtd_speedtest.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/tests/mtd_stresstest.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/tests/mtd_subpagetest.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/tests/mtd_torturetest.ko
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/ubi
-#lib/modules/KVER-ipfire/kernel/drivers/mtd/ubi/ubi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net
 #lib/modules/KVER-ipfire/kernel/drivers/net/bonding
 #lib/modules/KVER-ipfire/kernel/drivers/net/bonding/bonding.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/dummy.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/eql.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com/3c501.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com/3c509.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com/3c515.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com/3c574_cs.ko
@@ -1009,24 +1354,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com/3c59x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/3com/typhoon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/3c503.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/8390.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/8390p.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/ac3200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/axnet_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/e2100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/es3210.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/hp-plus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/hp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/lne390.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/ne.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/ne2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/ne2k-pci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/ne3210.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/pcnet_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/smc-mca.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/smc-ultra.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/smc-ultra32.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/8390/wd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/adaptec
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/adaptec/starfire.ko
@@ -1034,12 +1368,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/alteon/acenic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/amd8111e.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/depca.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/lance.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/ni65.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/nmclan_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/amd/pcnet32.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/alx
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/alx/alx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atl1c
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atl1c/atl1c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/atheros/atl1e
@@ -1057,6 +1392,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade/bna
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/brocade/bna/bna.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence/at91_ether.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cadence/macb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/calxeda
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/calxeda/xgmac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
@@ -1072,7 +1412,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cisco/enic
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/cisco/enic/enic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dec
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dec/ewrk3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dec/tulip
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dec/tulip/de2104x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dec/tulip/de4x5.ko
@@ -1082,8 +1421,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dec/tulip/winbond-840.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dec/tulip/xircom_cb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/de600.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/de620.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/dl2k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dlink/sundance.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/dnet.ko
@@ -1093,22 +1430,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/ethoc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/fealnx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/fujitsu
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/fujitsu/at1700.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/fujitsu/eth16i.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/fujitsu/fmvj18x_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/hp
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/hp/hp100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx/3c505.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx/3c507.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx/3c523.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx/3c527.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx/82596.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx/eepro.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx/eexpress.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx/lp486e.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx/ni52.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/i825xx/znet.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/icplus
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/icplus/ipg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel
@@ -1129,6 +1453,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/jme.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/marvell
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/marvell/mvmdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/marvell/skge.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/marvell/sky2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/mellanox
@@ -1143,7 +1468,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/myricom/myri10ge
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/myricom/myri10ge/myri10ge.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/natsemi
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/natsemi/ibmlana.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/natsemi/natsemi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/natsemi/ns83820.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/neterion
@@ -1155,9 +1479,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi/pch_gbe
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/packetengines
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/packetengines/hamachi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/packetengines/yellowfin.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/netxen
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
@@ -1173,8 +1494,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/8139too.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/atp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/r8169.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/seeq
-#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/seeq/seeq8005.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc/sfc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/silan
@@ -1202,41 +1521,32 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via/via-rhine.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/via/via-velocity.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/wiznet
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/wiznet/w5100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/wiznet/w5300.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/xircom
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/xircom/xirc2ps_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/hyperv
+#lib/modules/KVER-ipfire/kernel/drivers/net/hyperv/hv_netvsc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ifb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/imq.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/ali-ircc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/donauboe.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/irda-usb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/irtty-sir.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/kingsun-sir.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/ks959-sir.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/ksdazzle-sir.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/mcs7780.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/nsc-ircc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/sir-dev.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/smsc-ircc2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/stir4200.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/via-ircc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/vlsi_ir.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/irda/w83977af_ir.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/macvlan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/macvtap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/mdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/mii.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/netconsole.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/phy/bcm87xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/broadcom.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/cicada.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/davicom.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/phy/dp83640.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/et1011c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/icplus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/lxt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/marvell.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-bitbang.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/phy/mdio-gpio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/micrel.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/national.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/qsemi.ko
@@ -1254,17 +1564,17 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp/pppoe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp/pppox.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ppp/pptp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/sb1000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/slip
 #lib/modules/KVER-ipfire/kernel/drivers/net/slip/slhc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/slip/slip.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/sungem_phy.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/tun.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/asix.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/ax88179_178a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/catc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_eem.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_ether.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_mbim.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_ncm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cdc_subset.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/cx82310_eth.ko
@@ -1272,6 +1582,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/gl620a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/hso.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/int51x1.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/ipheth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/kalmia.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/kaweth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/lg-vl600.ko
@@ -1279,6 +1590,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/net1080.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/pegasus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/plusb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/qmi_wwan.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/r8152.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/rndis_host.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/rtl8150.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/sierra_net.ko
@@ -1290,45 +1603,137 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/virtio_net.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/vmxnet3
 #lib/modules/KVER-ipfire/kernel/drivers/net/vmxnet3/vmxnet3.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/c101.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/cosa.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/dlci.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/dscc4.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/farsync.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/hdlc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/hdlc_cisco.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/hdlc_fr.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/hdlc_ppp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/hdlc_raw.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/hdlc_raw_eth.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/hostess_sv11.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/lmc
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/lmc/lmc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/n2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/pc300too.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/pci200syn.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/sbni.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/sdla.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/sealevel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/wanxl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wan/z85230.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/vxlan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/adm8211.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/airo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/airo_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath5k
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath9k
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/carl9170
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43/b43.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43legacy
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ray_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ipw2x00/libipw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlegacy/iwlegacy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/dvm
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/mvm
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/iwlwifi/mvm/iwlmvm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_uap
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/libertas_uap/uap8xxx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mac80211_hwsim.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_pcie.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/mwl8k.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/p54/p54usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rndis_wlan.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8188ee
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192de
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251/wl1251_sdio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl12xx
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl12xx/wl12xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl18xx
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl18xx/wl18xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/wl3501_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1201.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1211rw
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
 #lib/modules/KVER-ipfire/kernel/drivers/parport
 #lib/modules/KVER-ipfire/kernel/drivers/parport/parport.ko
 #lib/modules/KVER-ipfire/kernel/drivers/parport/parport_ax88796.ko
@@ -1336,7 +1741,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/parport/parport_pc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/parport/parport_serial.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pci
-#lib/modules/KVER-ipfire/kernel/drivers/pci/pci-stub.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pci/hotplug
+#lib/modules/KVER-ipfire/kernel/drivers/pci/hotplug/acpiphp_ibm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/pci/pcie
+#lib/modules/KVER-ipfire/kernel/drivers/pci/pcie/aer
+#lib/modules/KVER-ipfire/kernel/drivers/pci/pcie/aer/aer_inject.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pcmcia
 #lib/modules/KVER-ipfire/kernel/drivers/pcmcia/i82092.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pcmcia/i82365.ko
@@ -1350,25 +1759,30 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/acer-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/acerhdf.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/amilo-rfkill.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-laptop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus_acpi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-nb-wmi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-wmi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/chromeos_laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/classmate-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/compal-laptop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-wmi-aio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-wmi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/eeepc-laptop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/eeepc-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/fujitsu-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/hdaps.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/hp-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/hp_accel.ko
-#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/ibm_rtl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/ideapad-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_ips.ko
-#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_menlow.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_oaktrail.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/msi-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/msi-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/mxm-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/panasonic-laptop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/pvpanic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/samsung-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/samsung-q10.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/sony-laptop.ko
@@ -1378,14 +1792,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba_acpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/toshiba_bluetooth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/wmi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/xo15-ebook.ko
+#lib/modules/KVER-ipfire/kernel/drivers/power
+#lib/modules/KVER-ipfire/kernel/drivers/power/generic-adc-battery.ko
 #lib/modules/KVER-ipfire/kernel/drivers/pps
 #lib/modules/KVER-ipfire/kernel/drivers/pps/pps_core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ptp
 #lib/modules/KVER-ipfire/kernel/drivers/ptp/ptp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/regulator
-#lib/modules/KVER-ipfire/kernel/drivers/regulator/fixed.ko
-#lib/modules/KVER-ipfire/kernel/drivers/regulator/gpio-regulator.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ptp/ptp_pch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-bq32k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-bq4802.ko
@@ -1396,18 +1809,19 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1553.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1672.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds1742.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds2404.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-ds3232.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-em3027.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-fm3130.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-hid-sensor-time.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12022.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl1208.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m41t80.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t35.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t59.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t86.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-max6900.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-msm6242.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf50633.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8523.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8563.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8583.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rp5c01.ko
@@ -1415,7 +1829,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rv3029c2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8025.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-rx8581.ko
-#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-s35390a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-stk17ta8.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-v3020.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-x1205.ko
@@ -1426,8 +1839,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/53c700.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/BusLogic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/NCR53c406a.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/NCR_D700.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/NCR_Q720_mod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/a100u2w.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/aacraid
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/aacraid/aacraid.ko
@@ -1452,6 +1863,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/bnx2i
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/bnx2i/bnx2i.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ch.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/csiostor
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/csiostor/csiostor.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/cxgbi
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/cxgbi/cxgb3i
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/cxgbi/cxgb3i/cxgb3i.ko
@@ -1460,7 +1873,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/cxgbi/libcxgbi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/dc395x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/device_handler
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/device_handler/scsi_dh.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/device_handler/scsi_dh_alua.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/device_handler/scsi_dh_emc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/device_handler/scsi_dh_hp_sw.ko
@@ -1472,7 +1884,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/fcoe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/libfcoe.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/fd_mcs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fdomain.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fnic
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fnic/fnic.ko
@@ -1481,7 +1892,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/gdth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/hpsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/hptiop.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/ibmmca.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/hv_storvsc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/imm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/in2000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/initio.ko
@@ -1506,6 +1917,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/megaraid/megaraid_sas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt2sas
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt3sas
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mvsas
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mvsas/mvsas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/mvumi.ko
@@ -1513,6 +1926,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/osd
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/osd/libosd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/osd/osd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/osst.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/pas16.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/pcmcia
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/pcmcia/aha152x_cs.ko
@@ -1521,7 +1935,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/pcmcia/qlogic_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/pcmcia/sym53c500_cs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/pm8001
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/pm8001/pm8001.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/pm8001/pm80xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/pmcraid.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ppa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/qla1280.ko
@@ -1532,18 +1946,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/qlogicfas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/qlogicfas408.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/raid_class.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_mod.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_tgt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_fc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_iscsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_sas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_spi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_transport_srp.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/scsi_wait_scan.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/sd_mod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ses.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/sg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/sim710.ko
-#lib/modules/KVER-ipfire/kernel/drivers/scsi/sr_mod.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/st.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/stex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c416.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/sym53c8xx_2
@@ -1551,55 +1962,53 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/t128.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/tmscsim.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/u14-34f.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/ufs/ufshcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/ultrastor.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/virtio_scsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/vmw_pvscsi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/wd7000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ssb
 #lib/modules/KVER-ipfire/kernel/drivers/ssb/ssb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging
+#lib/modules/KVER-ipfire/kernel/drivers/staging/echo
+#lib/modules/KVER-ipfire/kernel/drivers/staging/echo/echo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/et131x
 #lib/modules/KVER-ipfire/kernel/drivers/staging/et131x/et131x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/hv
-#lib/modules/KVER-ipfire/kernel/drivers/staging/hv/hv_mouse.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/hv/hv_netvsc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/hv/hv_storvsc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/mei
-#lib/modules/KVER-ipfire/kernel/drivers/staging/mei/mei.ko
-#lib/modules/KVER-ipfire/kernel/drivers/staging/phison
-#lib/modules/KVER-ipfire/kernel/drivers/staging/phison/phison.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139
+#lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139/rts5139.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss
 #lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss/slicoss.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/usbip
 #lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-host.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/vhci-hcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_powerclamp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty
-#lib/modules/KVER-ipfire/kernel/drivers/tty/ipwireless
-#lib/modules/KVER-ipfire/kernel/drivers/tty/ipwireless/ipwireless.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/cyclades.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/n_gsm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/n_hdlc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/n_r3964.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/nozomi.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/rocket.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250_accent.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250_boca.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250_exar_st16c554.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250_fourport.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250_hub6.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/altera_jtaguart.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/altera_uart.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/mfd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/pch_uart.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/serial_cs.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/timbuart.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/uartlite.ko
-#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/xilinx_uartps.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250/8250_dw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/arc_uart.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/jsm
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/jsm/jsm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/rp2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/sccnxp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/synclink.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/synclink_gt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/synclinkmp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/uio
 #lib/modules/KVER-ipfire/kernel/drivers/uio/uio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/uio/uio_aec.ko
-#lib/modules/KVER-ipfire/kernel/drivers/uio/uio_cif.ko
-#lib/modules/KVER-ipfire/kernel/drivers/uio/uio_netx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/uio/uio_pci_generic.ko
-#lib/modules/KVER-ipfire/kernel/drivers/uio/uio_pdrv.ko
-#lib/modules/KVER-ipfire/kernel/drivers/uio/uio_pdrv_genirq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/uio/uio_sercos3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb
 #lib/modules/KVER-ipfire/kernel/drivers/usb/atm
@@ -1608,44 +2017,47 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/atm/ueagle-atm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/atm/usbatm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/atm/xusbatm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci13xxx_msm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci13xxx_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-acm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-wdm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/usblp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/usbtmc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3
+#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-exynos.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-omap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/hwa-hc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/host/isp116x-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/isp1362-hcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/host/oxu210hp-hcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/host/r8a66597-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/sl811-hcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/host/u132-hcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/host/ssb-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/whci
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/whci/whci-hcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/host/xhci-hcd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/image
+#lib/modules/KVER-ipfire/kernel/drivers/usb/image/mdc800.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/image/microtek.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc
-#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/cypress_cy7c63.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/cytherm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/adutux.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/emi26.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/emi62.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/ezusb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/ftdi-elan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/iowarrior.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/isight_firmware.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/sisusbvga
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usb3503.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usblcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usbled.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/usbsevseg.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/uss720.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/yurex.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/otg
-#lib/modules/KVER-ipfire/kernel/drivers/usb/otg/gpio_vbus.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/otg/nop-usb-xceiv.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/mon
+#lib/modules/KVER-ipfire/kernel/drivers/usb/mon/usbmon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/aircable.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ark3116.ko
@@ -1654,11 +2066,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/cp210x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/cypress_m8.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/digi_acceleport.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/empeg.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/f81232.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ftdi_sio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/funsoft.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/garmin_gps.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/hp4x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/io_edgeport.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/io_ti.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ipaq.ko
@@ -1666,31 +2076,27 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ir-usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/iuu_phoenix.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/keyspan_pda.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/kl5kusb105.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/mct_u232.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/mos7720.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/mos7840.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/moto_modem.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/opticon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/option.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/oti6858.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/pl2303.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/qcaux.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/qcserial.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/safe_serial.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/quatech2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/siemens_mpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/sierra.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/spcp8x5.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ssu100.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/symbolserial.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ti_usb_3410_5052.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/usb_wwan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/usbserial.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/visor.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/vivopay-serial.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/zio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/zte_ev.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage
-#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/uas.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-alauda.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-cypress.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-datafab.ko
@@ -1704,7 +2110,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-sddr09.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-sddr55.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/storage/ums-usbat.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/storage/usb-storage.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore
 #lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/wusbcore/wusb-wa.ko
@@ -1721,53 +2126,38 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/uwb/whci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/vhost
 #lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost_net.ko
+#lib/modules/KVER-ipfire/kernel/drivers/vhost/vringh.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video
+#lib/modules/KVER-ipfire/kernel/drivers/video/arcfb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/arkfb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/aty
-#lib/modules/KVER-ipfire/kernel/drivers/video/aty/aty128fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/aty/atyfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/aty/radeonfb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight
-#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/adp8860_bl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/adp8870_bl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight/apple_bl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/cr_bllcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/generic_bl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/kb3886_bl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight/lcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/pcf50633-backlight.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/backlight/platform_lcd.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/backlight/progear_bl.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/cirrusfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/console
+#lib/modules/KVER-ipfire/kernel/drivers/video/console/mdacon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/display
-#lib/modules/KVER-ipfire/kernel/drivers/video/display/display.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/fb_ddc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/fb_sys_fops.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/geode
 #lib/modules/KVER-ipfire/kernel/drivers/video/geode/gx1fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/geode/gxfb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/geode/lxfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/i810
-#lib/modules/KVER-ipfire/kernel/drivers/video/i810/i810fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/hgafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/hyperv_fb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/i740fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/kyro
 #lib/modules/KVER-ipfire/kernel/drivers/video/kyro/kyrofb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/macmodes.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/matrox
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/g450_pll.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/i2c-matroxfb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_accel.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_crtc2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_g450.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_maven.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/metronomefb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/neofb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/nvidia
-#lib/modules/KVER-ipfire/kernel/drivers/video/nvidia/nvidiafb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/output.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/pm2fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/pm3fb.ko
@@ -1776,22 +2166,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/video/s3fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/savage
 #lib/modules/KVER-ipfire/kernel/drivers/video/savage/savagefb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sis
-#lib/modules/KVER-ipfire/kernel/drivers/video/sis/sisfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/sm501fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/smscufx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/sstfb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/svgalib.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/syscopyarea.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/sysfillrect.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/tdfxfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/tmiofb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/tridentfb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/video/uvesafb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/udlfb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/vermilion
 #lib/modules/KVER-ipfire/kernel/drivers/video/vermilion/crvml.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/vermilion/vmlfb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/vga16fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/vgastate.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/via
 #lib/modules/KVER-ipfire/kernel/drivers/video/via/viafb.ko
@@ -1799,22 +2185,22 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/virtio
 #lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_balloon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_mmio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/virtio/virtio_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1
 #lib/modules/KVER-ipfire/kernel/drivers/w1/masters
 #lib/modules/KVER-ipfire/kernel/drivers/w1/masters/ds1wm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/masters/ds2482.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/masters/ds2490.ko
-#lib/modules/KVER-ipfire/kernel/drivers/w1/masters/matrox_w1.ko
-#lib/modules/KVER-ipfire/kernel/drivers/w1/masters/w1-gpio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_bq27000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2408.ko
+#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2413.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2423.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2431.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2433.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2760.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2780.ko
+#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds2781.ko
+#lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_ds28e04.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_smem.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/slaves/w1_therm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/w1/wire.ko
@@ -1829,9 +2215,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/geodewdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/hpwdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/i6300esb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/iTCO_vendor_support.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/iTCO_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/ib700wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/ibmasr.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/ie6xx_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/it8712f_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/it87_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/machzwd.ko
@@ -1839,6 +2227,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pc87413_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_usb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/retu_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc60xxwdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc7240_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sbc8360.ko
@@ -1851,6 +2240,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/smsc37b787_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/softdog.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/sp5100_tco.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/via_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83627hf_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83697hf_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/w83697ug_wdt.ko
@@ -1859,69 +2249,125 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/wafer5823wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/wdt_pci.ko
 #lib/modules/KVER-ipfire/kernel/fs
-#lib/modules/KVER-ipfire/kernel/fs/autofs4
-#lib/modules/KVER-ipfire/kernel/fs/autofs4/autofs4.ko
+#lib/modules/KVER-ipfire/kernel/fs/btrfs
+#lib/modules/KVER-ipfire/kernel/fs/btrfs/btrfs.ko
 #lib/modules/KVER-ipfire/kernel/fs/cachefiles
 #lib/modules/KVER-ipfire/kernel/fs/cachefiles/cachefiles.ko
 #lib/modules/KVER-ipfire/kernel/fs/cifs
 #lib/modules/KVER-ipfire/kernel/fs/cifs/cifs.ko
-#lib/modules/KVER-ipfire/kernel/fs/ecryptfs
-#lib/modules/KVER-ipfire/kernel/fs/ecryptfs/ecryptfs.ko
-#lib/modules/KVER-ipfire/kernel/fs/exportfs
-#lib/modules/KVER-ipfire/kernel/fs/exportfs/exportfs.ko
+#lib/modules/KVER-ipfire/kernel/fs/configfs
+#lib/modules/KVER-ipfire/kernel/fs/configfs/configfs.ko
+#lib/modules/KVER-ipfire/kernel/fs/dlm
+#lib/modules/KVER-ipfire/kernel/fs/dlm/dlm.ko
+#lib/modules/KVER-ipfire/kernel/fs/efivarfs
+#lib/modules/KVER-ipfire/kernel/fs/efivarfs/efivarfs.ko
+#lib/modules/KVER-ipfire/kernel/fs/exofs
+#lib/modules/KVER-ipfire/kernel/fs/exofs/libore.ko
 #lib/modules/KVER-ipfire/kernel/fs/fat
 #lib/modules/KVER-ipfire/kernel/fs/fat/fat.ko
+#lib/modules/KVER-ipfire/kernel/fs/fat/msdos.ko
 #lib/modules/KVER-ipfire/kernel/fs/fat/vfat.ko
 #lib/modules/KVER-ipfire/kernel/fs/fscache
 #lib/modules/KVER-ipfire/kernel/fs/fscache/fscache.ko
 #lib/modules/KVER-ipfire/kernel/fs/fuse
 #lib/modules/KVER-ipfire/kernel/fs/fuse/cuse.ko
 #lib/modules/KVER-ipfire/kernel/fs/fuse/fuse.ko
-#lib/modules/KVER-ipfire/kernel/fs/isofs
-#lib/modules/KVER-ipfire/kernel/fs/isofs/isofs.ko
-#lib/modules/KVER-ipfire/kernel/fs/jffs2
-#lib/modules/KVER-ipfire/kernel/fs/jffs2/jffs2.ko
-#lib/modules/KVER-ipfire/kernel/fs/jfs
-#lib/modules/KVER-ipfire/kernel/fs/jfs/jfs.ko
 #lib/modules/KVER-ipfire/kernel/fs/lockd
 #lib/modules/KVER-ipfire/kernel/fs/lockd/lockd.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs
+#lib/modules/KVER-ipfire/kernel/fs/nfs/blocklayout
+#lib/modules/KVER-ipfire/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs/nfs.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/nfs_layout_nfsv41_files.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv2.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv3.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/nfsv4.ko
+#lib/modules/KVER-ipfire/kernel/fs/nfs/objlayout
+#lib/modules/KVER-ipfire/kernel/fs/nfs/objlayout/objlayoutdriver.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfs_common
 #lib/modules/KVER-ipfire/kernel/fs/nfs_common/nfs_acl.ko
 #lib/modules/KVER-ipfire/kernel/fs/nfsd
 #lib/modules/KVER-ipfire/kernel/fs/nfsd/nfsd.ko
-#lib/modules/KVER-ipfire/kernel/fs/quota
-#lib/modules/KVER-ipfire/kernel/fs/quota/quota_tree.ko
-#lib/modules/KVER-ipfire/kernel/fs/quota/quota_v1.ko
-#lib/modules/KVER-ipfire/kernel/fs/quota/quota_v2.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-celtic.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-centeuro.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-croatian.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-cyrillic.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-gaelic.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-greek.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-iceland.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-inuit.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-roman.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-romanian.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/mac-turkish.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp1250.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp1251.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp1255.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp737.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp775.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp850.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp852.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp855.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp857.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp860.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp861.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp862.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp863.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp864.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp865.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp866.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp869.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp874.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp932.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp936.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp949.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_cp950.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_euc-jp.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-1.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-13.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-14.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-15.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-2.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-3.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-4.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-5.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-6.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-7.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_iso8859-9.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_koi8-r.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_koi8-ru.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_koi8-u.ko
+#lib/modules/KVER-ipfire/kernel/fs/nls/nls_utf8.ko
 #lib/modules/KVER-ipfire/kernel/fs/reiserfs
 #lib/modules/KVER-ipfire/kernel/fs/reiserfs/reiserfs.ko
 #lib/modules/KVER-ipfire/kernel/fs/udf
 #lib/modules/KVER-ipfire/kernel/fs/udf/udf.ko
-#lib/modules/KVER-ipfire/kernel/fs/ufs
-#lib/modules/KVER-ipfire/kernel/fs/ufs/ufs.ko
 #lib/modules/KVER-ipfire/kernel/fs/xfs
 #lib/modules/KVER-ipfire/kernel/fs/xfs/xfs.ko
+#lib/modules/KVER-ipfire/kernel/kernel
+#lib/modules/KVER-ipfire/kernel/kernel/trace
+#lib/modules/KVER-ipfire/kernel/kernel/trace/ring_buffer_benchmark.ko
 #lib/modules/KVER-ipfire/kernel/lib
+#lib/modules/KVER-ipfire/kernel/lib/asn1_decoder.ko
 #lib/modules/KVER-ipfire/kernel/lib/cordic.ko
-#lib/modules/KVER-ipfire/kernel/lib/crc-ccitt.ko
 #lib/modules/KVER-ipfire/kernel/lib/crc-itu-t.ko
-#lib/modules/KVER-ipfire/kernel/lib/crc-t10dif.ko
 #lib/modules/KVER-ipfire/kernel/lib/crc7.ko
 #lib/modules/KVER-ipfire/kernel/lib/crc8.ko
 #lib/modules/KVER-ipfire/kernel/lib/libcrc32c.ko
+#lib/modules/KVER-ipfire/kernel/lib/mpi
+#lib/modules/KVER-ipfire/kernel/lib/mpi/mpi.ko
+#lib/modules/KVER-ipfire/kernel/lib/oid_registry.ko
 #lib/modules/KVER-ipfire/kernel/lib/raid6
 #lib/modules/KVER-ipfire/kernel/lib/raid6/raid6_pq.ko
+#lib/modules/KVER-ipfire/kernel/lib/rbtree_test.ko
 #lib/modules/KVER-ipfire/kernel/lib/ts_bm.ko
 #lib/modules/KVER-ipfire/kernel/lib/ts_fsm.ko
 #lib/modules/KVER-ipfire/kernel/lib/ts_kmp.ko
+#lib/modules/KVER-ipfire/kernel/lib/zlib_deflate
+#lib/modules/KVER-ipfire/kernel/lib/zlib_deflate/zlib_deflate.ko
 #lib/modules/KVER-ipfire/kernel/net
 #lib/modules/KVER-ipfire/kernel/net/802
 #lib/modules/KVER-ipfire/kernel/net/802/garp.ko
-#lib/modules/KVER-ipfire/kernel/net/802/p8022.ko
-#lib/modules/KVER-ipfire/kernel/net/802/psnap.ko
-#lib/modules/KVER-ipfire/kernel/net/802/stp.ko
 #lib/modules/KVER-ipfire/kernel/net/8021q
 #lib/modules/KVER-ipfire/kernel/net/8021q/8021q.ko
 #lib/modules/KVER-ipfire/kernel/net/atm
@@ -1942,7 +2388,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/bluetooth/rfcomm
 #lib/modules/KVER-ipfire/kernel/net/bluetooth/rfcomm/rfcomm.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge
-#lib/modules/KVER-ipfire/kernel/net/bridge/bridge.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebt_802_3.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebt_among.ko
@@ -1960,64 +2405,45 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebt_redirect.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebt_snat.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebt_stp.ko
-#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebt_ulog.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebt_vlan.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_broute.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_filter.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtables.ko
-#lib/modules/KVER-ipfire/kernel/net/ceph
-#lib/modules/KVER-ipfire/kernel/net/ceph/libceph.ko
-#lib/modules/KVER-ipfire/kernel/net/ieee802154
-#lib/modules/KVER-ipfire/kernel/net/ieee802154/6lowpan.ko
-#lib/modules/KVER-ipfire/kernel/net/ieee802154/af_802154.ko
-#lib/modules/KVER-ipfire/kernel/net/ieee802154/ieee802154.ko
+#lib/modules/KVER-ipfire/kernel/net/core
+#lib/modules/KVER-ipfire/kernel/net/core/netprio_cgroup.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4
 #lib/modules/KVER-ipfire/kernel/net/ipv4/ah4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/esp4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/gre.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/inet_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/ip_gre.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/ip_tunnel.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/ip_vti.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/ipcomp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/ipip.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/arp_tables.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/arpt_mangle.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/arptable_filter.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ip_queue.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ip_tables.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_CLUSTERIP.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ECN.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_LOG.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_NETMAP.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_REJECT.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ULOG.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ecn.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_filter.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_mangle.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_raw.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_amanda.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_ftp.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/iptable_security.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_h323.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_irc.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_proto_dccp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_proto_sctp.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_proto_udplite.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_sip.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_bic.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_cubic.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_highspeed.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_htcp.ko
@@ -2030,17 +2456,21 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_westwood.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_yeah.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tunnel4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/udp_diag.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_beet.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_transport.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_mode_tunnel.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/xfrm4_tunnel.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ah6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_gre.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_tunnel.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ipcomp6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/mip6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter
-#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6_queue.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6_tables.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_LOG.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_MASQUERADE.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_NPT.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_ah.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_eui64.ko
@@ -2048,12 +2478,14 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_hbh.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_ipv6header.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_mh.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_rpfilter.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_rt.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_filter.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_mangle.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_raw.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_conntrack_ipv6.ko
-#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_defrag_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_security.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/sit.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/tunnel6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/xfrm6_mode_beet.ko
@@ -2061,31 +2493,45 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv6/xfrm6_mode_transport.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/xfrm6_mode_tunnel.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/xfrm6_tunnel.ko
-#lib/modules/KVER-ipfire/kernel/net/irda
-#lib/modules/KVER-ipfire/kernel/net/irda/ircomm
-#lib/modules/KVER-ipfire/kernel/net/irda/ircomm/ircomm-tty.ko
-#lib/modules/KVER-ipfire/kernel/net/irda/ircomm/ircomm.ko
-#lib/modules/KVER-ipfire/kernel/net/irda/irda.ko
-#lib/modules/KVER-ipfire/kernel/net/irda/irlan
-#lib/modules/KVER-ipfire/kernel/net/irda/irlan/irlan.ko
-#lib/modules/KVER-ipfire/kernel/net/irda/irnet
-#lib/modules/KVER-ipfire/kernel/net/irda/irnet/irnet.ko
 #lib/modules/KVER-ipfire/kernel/net/key
 #lib/modules/KVER-ipfire/kernel/net/key/af_key.ko
 #lib/modules/KVER-ipfire/kernel/net/l2tp
 #lib/modules/KVER-ipfire/kernel/net/l2tp/l2tp_core.ko
 #lib/modules/KVER-ipfire/kernel/net/l2tp/l2tp_eth.ko
 #lib/modules/KVER-ipfire/kernel/net/l2tp/l2tp_ip.ko
+#lib/modules/KVER-ipfire/kernel/net/l2tp/l2tp_ip6.ko
 #lib/modules/KVER-ipfire/kernel/net/l2tp/l2tp_netlink.ko
 #lib/modules/KVER-ipfire/kernel/net/l2tp/l2tp_ppp.ko
-#lib/modules/KVER-ipfire/kernel/net/llc
-#lib/modules/KVER-ipfire/kernel/net/llc/llc.ko
 #lib/modules/KVER-ipfire/kernel/net/mac80211
 #lib/modules/KVER-ipfire/kernel/net/mac80211/mac80211.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_ip.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_bitmap_port.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ip.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipport.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportip.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_net.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netport.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_list_set.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_lc.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_rr.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_sed.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_sh.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_wlc.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs_wrr.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_amanda.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_broadcast.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_ftp.ko
@@ -2102,33 +2548,51 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_sip.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_snmp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_amanda.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_ftp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_irc.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_dccp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_sctp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_sip.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tproxy_core.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_acct.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cthelper.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cttimeout.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_log.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_queue.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/x_tables.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_AUDIT.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CHECKSUM.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CLASSIFY.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CONNSECMARK.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CT.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_DSCP.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_HL.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_HMARK.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_IDLETIMER.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_IMQ.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_LED.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_LOG.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_NETMAP.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_NFLOG.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_NFQUEUE.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_NOTRACK.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_RATEEST.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_REDIRECT.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_SECMARK.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_TCPMSS.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_TCPOPTSTRIP.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_TEE.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_TPROXY.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_TRACE.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_addrtype.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_bpf.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_cluster.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_comment.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_connbytes.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_connlabel.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_connlimit.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_connmark.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_conntrack.ko
@@ -2136,18 +2600,20 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_dccp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_devgroup.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_dscp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_ecn.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_esp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_hashlimit.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_helper.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_hl.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_iprange.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_ipvs.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_layer7.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_length.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_limit.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_mac.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_mark.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_multiport.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_nat.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_nfacct.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_osf.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_owner.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_physdev.ko
@@ -2158,20 +2624,21 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_realm.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_recent.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_sctp.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_set.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_socket.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_state.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_statistic.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_string.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_tcpmss.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_tcpudp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_time.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_u32.ko
+#lib/modules/KVER-ipfire/kernel/net/netlink
+#lib/modules/KVER-ipfire/kernel/net/netlink/netlink_diag.ko
+#lib/modules/KVER-ipfire/kernel/net/openvswitch
+#lib/modules/KVER-ipfire/kernel/net/openvswitch/openvswitch.ko
 #lib/modules/KVER-ipfire/kernel/net/rfkill
-#lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill-regulator.ko
+#lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill-gpio.ko
 #lib/modules/KVER-ipfire/kernel/net/rfkill/rfkill.ko
-#lib/modules/KVER-ipfire/kernel/net/rxrpc
-#lib/modules/KVER-ipfire/kernel/net/rxrpc/af-rxrpc.ko
-#lib/modules/KVER-ipfire/kernel/net/rxrpc/rxkad.ko
 #lib/modules/KVER-ipfire/kernel/net/sched
 #lib/modules/KVER-ipfire/kernel/net/sched/act_csum.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_gact.ko
@@ -2183,6 +2650,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/sched/act_simple.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_skbedit.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_basic.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/cls_cgroup.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_flow.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_fw.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_route.ko
@@ -2191,6 +2659,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_tcindex.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_u32.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/em_cmp.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/em_ipset.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/em_meta.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/em_nbyte.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/em_text.ko
@@ -2198,8 +2667,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_atm.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_cbq.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_choke.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/sch_codel.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_drr.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_dsmark.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/sch_fq_codel.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_gred.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_hfsc.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_htb.ko
@@ -2207,6 +2678,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_mqprio.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_multiq.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_netem.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/sch_pie.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/sch_plug.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_prio.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_qfq.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_red.ko
@@ -2214,11 +2687,18 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_sfq.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_tbf.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_teql.ko
+#lib/modules/KVER-ipfire/kernel/net/sctp
+#lib/modules/KVER-ipfire/kernel/net/sctp/sctp.ko
 #lib/modules/KVER-ipfire/kernel/net/sunrpc
 #lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss
 #lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
 #lib/modules/KVER-ipfire/kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
 #lib/modules/KVER-ipfire/kernel/net/sunrpc/sunrpc.ko
+#lib/modules/KVER-ipfire/kernel/net/unix
+#lib/modules/KVER-ipfire/kernel/net/unix/unix_diag.ko
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko
+#lib/modules/KVER-ipfire/kernel/net/vmw_vsock/vsock.ko
 #lib/modules/KVER-ipfire/kernel/net/wireless
 #lib/modules/KVER-ipfire/kernel/net/wireless/cfg80211.ko
 #lib/modules/KVER-ipfire/kernel/net/wireless/lib80211.ko
@@ -2227,7 +2707,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/wireless/lib80211_crypt_wep.ko
 #lib/modules/KVER-ipfire/kernel/net/xfrm
 #lib/modules/KVER-ipfire/kernel/net/xfrm/xfrm_ipcomp.ko
-#lib/modules/KVER-ipfire/kernel/net/xfrm/xfrm_user.ko
 #lib/modules/KVER-ipfire/kernel/sound
 #lib/modules/KVER-ipfire/kernel/sound/ac97_bus.ko
 #lib/modules/KVER-ipfire/kernel/sound/core
@@ -2261,6 +2740,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/drivers/opl4
 #lib/modules/KVER-ipfire/kernel/sound/drivers/opl4/snd-opl4-lib.ko
 #lib/modules/KVER-ipfire/kernel/sound/drivers/opl4/snd-opl4-synth.ko
+#lib/modules/KVER-ipfire/kernel/sound/drivers/pcsp
+#lib/modules/KVER-ipfire/kernel/sound/drivers/pcsp/snd-pcsp.ko
 #lib/modules/KVER-ipfire/kernel/sound/drivers/snd-aloop.ko
 #lib/modules/KVER-ipfire/kernel/sound/drivers/snd-dummy.ko
 #lib/modules/KVER-ipfire/kernel/sound/drivers/snd-mtpav.ko
@@ -2273,12 +2754,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/firewire
 #lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-lib.ko
 #lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-speakers.ko
-#lib/modules/KVER-ipfire/kernel/sound/firewire/snd-isight.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-ak4113.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-ak4114.ko
-#lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-ak4117.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-ak4xxx-adda.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-pt2258.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-tea575x-tuner.ko
@@ -2328,6 +2807,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/isa/snd-adlib.ko
 #lib/modules/KVER-ipfire/kernel/sound/isa/snd-als100.ko
 #lib/modules/KVER-ipfire/kernel/sound/isa/snd-azt2320.ko
+#lib/modules/KVER-ipfire/kernel/sound/isa/snd-cmi8328.ko
 #lib/modules/KVER-ipfire/kernel/sound/isa/snd-cmi8330.ko
 #lib/modules/KVER-ipfire/kernel/sound/isa/snd-es18xx.ko
 #lib/modules/KVER-ipfire/kernel/sound/isa/snd-opl3sa2.ko
@@ -2348,8 +2828,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/pci/au88x0/snd-au8810.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/au88x0/snd-au8820.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/au88x0/snd-au8830.ko
-#lib/modules/KVER-ipfire/kernel/sound/pci/aw2
-#lib/modules/KVER-ipfire/kernel/sound/pci/aw2/snd-aw2.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/ca0106
 #lib/modules/KVER-ipfire/kernel/sound/pci/ca0106/snd-ca0106.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/cs46xx
@@ -2437,7 +2915,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-maestro3.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-rme32.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-rme96.ko
-#lib/modules/KVER-ipfire/kernel/sound/pci/snd-sis7019.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-sonicvibes.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-via82xx-modem.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/snd-via82xx.ko
@@ -2447,11 +2924,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/pci/vx222/snd-vx222.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/ymfpci
 #lib/modules/KVER-ipfire/kernel/sound/pci/ymfpci/snd-ymfpci.ko
-#lib/modules/KVER-ipfire/kernel/sound/pcmcia
-#lib/modules/KVER-ipfire/kernel/sound/pcmcia/pdaudiocf
-#lib/modules/KVER-ipfire/kernel/sound/pcmcia/pdaudiocf/snd-pdaudiocf.ko
-#lib/modules/KVER-ipfire/kernel/sound/pcmcia/vx
-#lib/modules/KVER-ipfire/kernel/sound/pcmcia/vx/snd-vxpocket.ko
 #lib/modules/KVER-ipfire/kernel/sound/soundcore.ko
 #lib/modules/KVER-ipfire/kernel/sound/synth
 #lib/modules/KVER-ipfire/kernel/sound/synth/emux
@@ -2472,19 +2944,14 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/modules.alias
 #lib/modules/KVER-ipfire/modules.alias.bin
 #lib/modules/KVER-ipfire/modules.builtin
-#lib/modules/KVER-ipfire/modules.ccwmap
+#lib/modules/KVER-ipfire/modules.builtin.bin
 #lib/modules/KVER-ipfire/modules.dep
 #lib/modules/KVER-ipfire/modules.dep.bin
-#lib/modules/KVER-ipfire/modules.ieee1394map
-#lib/modules/KVER-ipfire/modules.inputmap
-#lib/modules/KVER-ipfire/modules.isapnpmap
-#lib/modules/KVER-ipfire/modules.ofmap
+#lib/modules/KVER-ipfire/modules.devname
 #lib/modules/KVER-ipfire/modules.order
-#lib/modules/KVER-ipfire/modules.pcimap
-#lib/modules/KVER-ipfire/modules.seriomap
+#lib/modules/KVER-ipfire/modules.softdep
 #lib/modules/KVER-ipfire/modules.symbols
 #lib/modules/KVER-ipfire/modules.symbols.bin
-#lib/modules/KVER-ipfire/modules.usbmap
 #lib/modules/KVER-ipfire/source
 sbin/gen_init_cpio
 boot/ipfirerd-KVER.img
index e518ab3df559f98581244b2313af7f6d22fc95fb..deaa97f4019b3ee57d104c21913a7a194b56853d 100644 (file)
@@ -10,6 +10,7 @@
 #usr/include/asm-generic/ioctl.h
 #usr/include/asm-generic/ioctls.h
 #usr/include/asm-generic/ipcbuf.h
+#usr/include/asm-generic/kvm_para.h
 #usr/include/asm-generic/mman-common.h
 #usr/include/asm-generic/mman.h
 #usr/include/asm-generic/msgbuf.h
 #usr/include/asm/msr.h
 #usr/include/asm/mtrr.h
 #usr/include/asm/param.h
+#usr/include/asm/perf_regs.h
 #usr/include/asm/poll.h
 #usr/include/asm/posix_types.h
 #usr/include/asm/posix_types_32.h
 #usr/include/asm/posix_types_64.h
+#usr/include/asm/posix_types_x32.h
 #usr/include/asm/prctl.h
 #usr/include/asm/processor-flags.h
 #usr/include/asm/ptrace-abi.h
@@ -80,6 +83,7 @@
 #usr/include/asm/sockios.h
 #usr/include/asm/stat.h
 #usr/include/asm/statfs.h
+#usr/include/asm/svm.h
 #usr/include/asm/swab.h
 #usr/include/asm/termbits.h
 #usr/include/asm/termios.h
 #usr/include/asm/unistd.h
 #usr/include/asm/unistd_32.h
 #usr/include/asm/unistd_64.h
+#usr/include/asm/unistd_x32.h
 #usr/include/asm/vm86.h
+#usr/include/asm/vmx.h
 #usr/include/asm/vsyscall.h
 #usr/include/drm
 #usr/include/drm/drm.h
+#usr/include/drm/drm_fourcc.h
 #usr/include/drm/drm_mode.h
 #usr/include/drm/drm_sarea.h
+#usr/include/drm/exynos_drm.h
 #usr/include/drm/i810_drm.h
 #usr/include/drm/i915_drm.h
 #usr/include/drm/mga_drm.h
 #usr/include/drm/nouveau_drm.h
+#usr/include/drm/qxl_drm.h
 #usr/include/drm/r128_drm.h
 #usr/include/drm/radeon_drm.h
 #usr/include/drm/savage_drm.h
 #usr/include/drm/sis_drm.h
+#usr/include/drm/tegra_drm.h
 #usr/include/drm/via_drm.h
 #usr/include/drm/vmwgfx_drm.h
 #usr/include/linux
 #usr/include/linux/baycom.h
 #usr/include/linux/bfs_fs.h
 #usr/include/linux/binfmts.h
-#usr/include/linux/blk_types.h
 #usr/include/linux/blkpg.h
 #usr/include/linux/blktrace_api.h
 #usr/include/linux/bpqether.h
 #usr/include/linux/bsg.h
+#usr/include/linux/btrfs.h
 #usr/include/linux/byteorder
 #usr/include/linux/byteorder/big_endian.h
 #usr/include/linux/byteorder/little_endian.h
 #usr/include/linux/capi.h
 #usr/include/linux/cciss_defs.h
 #usr/include/linux/cciss_ioctl.h
-#usr/include/linux/cdk.h
 #usr/include/linux/cdrom.h
 #usr/include/linux/cgroupstats.h
 #usr/include/linux/chio.h
 #usr/include/linux/coda.h
 #usr/include/linux/coda_psdev.h
 #usr/include/linux/coff.h
-#usr/include/linux/comstats.h
 #usr/include/linux/connector.h
 #usr/include/linux/const.h
 #usr/include/linux/cramfs_fs.h
 #usr/include/linux/errqueue.h
 #usr/include/linux/ethtool.h
 #usr/include/linux/eventpoll.h
-#usr/include/linux/ext2_fs.h
 #usr/include/linux/fadvise.h
 #usr/include/linux/falloc.h
 #usr/include/linux/fanotify.h
 #usr/include/linux/futex.h
 #usr/include/linux/gameport.h
 #usr/include/linux/gen_stats.h
-#usr/include/linux/generic_serial.h
 #usr/include/linux/genetlink.h
 #usr/include/linux/gfs2_ondisk.h
 #usr/include/linux/gigaset_dev.h
 #usr/include/linux/hiddev.h
 #usr/include/linux/hidraw.h
 #usr/include/linux/hpet.h
+#usr/include/linux/hsi
+#usr/include/linux/hsi/hsi_char.h
+#usr/include/linux/hw_breakpoint.h
 #usr/include/linux/hysdn_if.h
 #usr/include/linux/i2c-dev.h
 #usr/include/linux/i2c.h
 #usr/include/linux/if_bonding.h
 #usr/include/linux/if_bridge.h
 #usr/include/linux/if_cablemodem.h
-#usr/include/linux/if_ec.h
 #usr/include/linux/if_eql.h
 #usr/include/linux/if_ether.h
 #usr/include/linux/if_fc.h
 #usr/include/linux/if_pppol2tp.h
 #usr/include/linux/if_pppox.h
 #usr/include/linux/if_slip.h
-#usr/include/linux/if_strip.h
-#usr/include/linux/if_tr.h
+#usr/include/linux/if_team.h
 #usr/include/linux/if_tun.h
 #usr/include/linux/if_tunnel.h
 #usr/include/linux/if_vlan.h
 #usr/include/linux/kernel-page-flags.h
 #usr/include/linux/kernel.h
 #usr/include/linux/kernelcapi.h
+#usr/include/linux/kexec.h
 #usr/include/linux/keyboard.h
 #usr/include/linux/keyctl.h
 #usr/include/linux/kvm.h
 #usr/include/linux/major.h
 #usr/include/linux/map_to_7segment.h
 #usr/include/linux/matroxfb.h
+#usr/include/linux/mdio.h
 #usr/include/linux/media.h
+#usr/include/linux/mei.h
 #usr/include/linux/mempolicy.h
 #usr/include/linux/meye.h
 #usr/include/linux/mii.h
 #usr/include/linux/net.h
 #usr/include/linux/net_dropmon.h
 #usr/include/linux/net_tstamp.h
+#usr/include/linux/netconf.h
 #usr/include/linux/netdevice.h
 #usr/include/linux/netfilter
 #usr/include/linux/netfilter.h
 #usr/include/linux/netfilter/nf_conntrack_sctp.h
 #usr/include/linux/netfilter/nf_conntrack_tcp.h
 #usr/include/linux/netfilter/nf_conntrack_tuple_common.h
+#usr/include/linux/netfilter/nf_nat.h
 #usr/include/linux/netfilter/nfnetlink.h
+#usr/include/linux/netfilter/nfnetlink_acct.h
 #usr/include/linux/netfilter/nfnetlink_compat.h
 #usr/include/linux/netfilter/nfnetlink_conntrack.h
+#usr/include/linux/netfilter/nfnetlink_cthelper.h
+#usr/include/linux/netfilter/nfnetlink_cttimeout.h
 #usr/include/linux/netfilter/nfnetlink_log.h
 #usr/include/linux/netfilter/nfnetlink_queue.h
 #usr/include/linux/netfilter/x_tables.h
 #usr/include/linux/netfilter/xt_DSCP.h
 #usr/include/linux/netfilter/xt_IDLETIMER.h
 #usr/include/linux/netfilter/xt_LED.h
+#usr/include/linux/netfilter/xt_LOG.h
 #usr/include/linux/netfilter/xt_MARK.h
 #usr/include/linux/netfilter/xt_NFLOG.h
 #usr/include/linux/netfilter/xt_NFQUEUE.h
 #usr/include/linux/netfilter/xt_TEE.h
 #usr/include/linux/netfilter/xt_TPROXY.h
 #usr/include/linux/netfilter/xt_addrtype.h
+#usr/include/linux/netfilter/xt_bpf.h
 #usr/include/linux/netfilter/xt_cluster.h
 #usr/include/linux/netfilter/xt_comment.h
 #usr/include/linux/netfilter/xt_connbytes.h
+#usr/include/linux/netfilter/xt_connlabel.h
 #usr/include/linux/netfilter/xt_connlimit.h
 #usr/include/linux/netfilter/xt_connmark.h
 #usr/include/linux/netfilter/xt_conntrack.h
 #usr/include/linux/netfilter/xt_dccp.h
 #usr/include/linux/netfilter/xt_devgroup.h
 #usr/include/linux/netfilter/xt_dscp.h
+#usr/include/linux/netfilter/xt_ecn.h
 #usr/include/linux/netfilter/xt_esp.h
 #usr/include/linux/netfilter/xt_hashlimit.h
 #usr/include/linux/netfilter/xt_helper.h
 #usr/include/linux/netfilter/xt_iprange.h
 #usr/include/linux/netfilter/xt_ipvs.h
+#usr/include/linux/netfilter/xt_layer7.h
 #usr/include/linux/netfilter/xt_length.h
 #usr/include/linux/netfilter/xt_limit.h
 #usr/include/linux/netfilter/xt_mac.h
 #usr/include/linux/netfilter/xt_mark.h
 #usr/include/linux/netfilter/xt_multiport.h
+#usr/include/linux/netfilter/xt_nfacct.h
 #usr/include/linux/netfilter/xt_osf.h
 #usr/include/linux/netfilter/xt_owner.h
 #usr/include/linux/netfilter/xt_physdev.h
 #usr/include/linux/netfilter_decnet.h
 #usr/include/linux/netfilter_ipv4
 #usr/include/linux/netfilter_ipv4.h
-#usr/include/linux/netfilter_ipv4/ip_queue.h
 #usr/include/linux/netfilter_ipv4/ip_tables.h
 #usr/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
 #usr/include/linux/netfilter_ipv4/ipt_ECN.h
 #usr/include/linux/netfilter_ipv4/ipt_LOG.h
 #usr/include/linux/netfilter_ipv4/ipt_REJECT.h
-#usr/include/linux/netfilter_ipv4/ipt_SAME.h
 #usr/include/linux/netfilter_ipv4/ipt_TTL.h
 #usr/include/linux/netfilter_ipv4/ipt_ULOG.h
-#usr/include/linux/netfilter_ipv4/ipt_addrtype.h
 #usr/include/linux/netfilter_ipv4/ipt_ah.h
 #usr/include/linux/netfilter_ipv4/ipt_ecn.h
-#usr/include/linux/netfilter_ipv4/ipt_realm.h
 #usr/include/linux/netfilter_ipv4/ipt_ttl.h
-#usr/include/linux/netfilter_ipv4/nf_nat.h
 #usr/include/linux/netfilter_ipv6
 #usr/include/linux/netfilter_ipv6.h
 #usr/include/linux/netfilter_ipv6/ip6_tables.h
 #usr/include/linux/netfilter_ipv6/ip6t_HL.h
 #usr/include/linux/netfilter_ipv6/ip6t_LOG.h
+#usr/include/linux/netfilter_ipv6/ip6t_NPT.h
 #usr/include/linux/netfilter_ipv6/ip6t_REJECT.h
 #usr/include/linux/netfilter_ipv6/ip6t_ah.h
 #usr/include/linux/netfilter_ipv6/ip6t_frag.h
 #usr/include/linux/netfilter_ipv6/ip6t_opts.h
 #usr/include/linux/netfilter_ipv6/ip6t_rt.h
 #usr/include/linux/netlink.h
+#usr/include/linux/netlink_diag.h
 #usr/include/linux/netrom.h
 #usr/include/linux/nfc.h
 #usr/include/linux/nfs.h
 #usr/include/linux/nfs_mount.h
 #usr/include/linux/nfsacl.h
 #usr/include/linux/nfsd
+#usr/include/linux/nfsd/cld.h
 #usr/include/linux/nfsd/debug.h
 #usr/include/linux/nfsd/export.h
 #usr/include/linux/nfsd/nfsfh.h
 #usr/include/linux/omap3isp.h
 #usr/include/linux/omapfb.h
 #usr/include/linux/oom.h
+#usr/include/linux/openvswitch.h
+#usr/include/linux/packet_diag.h
 #usr/include/linux/param.h
 #usr/include/linux/parport.h
 #usr/include/linux/patchkey.h
 #usr/include/linux/posix_types.h
 #usr/include/linux/ppdev.h
 #usr/include/linux/ppp-comp.h
+#usr/include/linux/ppp-ioctl.h
 #usr/include/linux/ppp_defs.h
 #usr/include/linux/pps.h
 #usr/include/linux/prctl.h
 #usr/include/linux/scc.h
 #usr/include/linux/sched.h
 #usr/include/linux/screen_info.h
+#usr/include/linux/sctp.h
 #usr/include/linux/sdla.h
+#usr/include/linux/seccomp.h
 #usr/include/linux/securebits.h
 #usr/include/linux/selinux_netlink.h
 #usr/include/linux/sem.h
 #usr/include/linux/signal.h
 #usr/include/linux/signalfd.h
 #usr/include/linux/snmp.h
+#usr/include/linux/sock_diag.h
 #usr/include/linux/socket.h
 #usr/include/linux/sockios.h
 #usr/include/linux/som.h
 #usr/include/linux/swab.h
 #usr/include/linux/synclink.h
 #usr/include/linux/sysctl.h
+#usr/include/linux/sysinfo.h
 #usr/include/linux/taskstats.h
 #usr/include/linux/tc_act
 #usr/include/linux/tc_act/tc_csum.h
 #usr/include/linux/tc_ematch/tc_em_nbyte.h
 #usr/include/linux/tc_ematch/tc_em_text.h
 #usr/include/linux/tcp.h
+#usr/include/linux/tcp_metrics.h
 #usr/include/linux/telephony.h
 #usr/include/linux/termios.h
 #usr/include/linux/time.h
 #usr/include/linux/tipc_config.h
 #usr/include/linux/toshiba.h
 #usr/include/linux/tty.h
+#usr/include/linux/tty_flags.h
 #usr/include/linux/types.h
 #usr/include/linux/udf_fs_i.h
 #usr/include/linux/udp.h
+#usr/include/linux/uhid.h
 #usr/include/linux/uinput.h
 #usr/include/linux/uio.h
 #usr/include/linux/ultrasound.h
 #usr/include/linux/un.h
 #usr/include/linux/unistd.h
+#usr/include/linux/unix_diag.h
 #usr/include/linux/usb
 #usr/include/linux/usb/audio.h
+#usr/include/linux/usb/cdc-wdm.h
 #usr/include/linux/usb/cdc.h
 #usr/include/linux/usb/ch11.h
 #usr/include/linux/usb/ch9.h
 #usr/include/linux/usbdevice_fs.h
 #usr/include/linux/utime.h
 #usr/include/linux/utsname.h
+#usr/include/linux/uuid.h
 #usr/include/linux/uvcvideo.h
+#usr/include/linux/v4l2-common.h
+#usr/include/linux/v4l2-controls.h
+#usr/include/linux/v4l2-dv-timings.h
 #usr/include/linux/v4l2-mediabus.h
 #usr/include/linux/v4l2-subdev.h
 #usr/include/linux/version.h
 #usr/include/linux/veth.h
+#usr/include/linux/vfio.h
 #usr/include/linux/vhost.h
 #usr/include/linux/videodev2.h
 #usr/include/linux/virtio_9p.h
 #usr/include/sound/asequencer.h
 #usr/include/sound/asound.h
 #usr/include/sound/asound_fm.h
+#usr/include/sound/compress_offload.h
+#usr/include/sound/compress_params.h
 #usr/include/sound/emu10k1.h
 #usr/include/sound/hdsp.h
 #usr/include/sound/hdspm.h
 #usr/include/sound/sb16_csp.h
 #usr/include/sound/sfnt_info.h
+#usr/include/uapi
 #usr/include/video
 #usr/include/video/edid.h
 #usr/include/video/sisfb.h
index 217ac549d3f1040dad3aefa89e18d044589bb3ca..f23b97c2b0fb07bd872e5c99db68c7244b412d3e 100644 (file)
@@ -8,7 +8,7 @@ usr/bin/sensors-conf-convert
 #usr/lib/libsensors.a
 usr/lib/libsensors.so
 usr/lib/libsensors.so.4
-usr/lib/libsensors.so.4.3.1
+usr/lib/libsensors.so.4.3.2
 #usr/man/man1/sensors.1
 #usr/man/man3/libsensors.3
 #usr/man/man5/sensors.conf.5
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 02aa457d31559086586f188971b2c516e1fba7cb..952e7ae8f625883bba6b071a867b3b150b52b7d9 100644 (file)
@@ -1 +1,2 @@
+etc/strongswan.d/charon/padlock.conf
 usr/lib/ipsec/plugins/libstrongswan-padlock.so
index 0c43b88be008a70aed3b4cc098ce0e5231b99de9..89cf5c844921b5230a663d6518381db95779498b 100644 (file)
@@ -1,6 +1,6 @@
 #sbin/extlinux
 #usr/bin/gethostip
-#usr/bin/isohybrid
+usr/bin/isohybrid
 #usr/bin/isohybrid.pl
 #usr/bin/keytab-lilo
 #usr/bin/lss16toppm
index f0a2b2b4bec0041ecc7379f812333fd8355b1c9a..6f31cf6a8381f7d28e924a344c6f44118a7f01d7 100644 (file)
@@ -1,17 +1,27 @@
-#bin/arch
 bin/dmesg
+bin/findmnt
+bin/lsblk
 bin/more
 bin/mount
 bin/umount
-etc/fdprm
+bin/wdctl
+#etc/fcron.daily
+etc/fcron.daily/trim
+lib/libblkid.so.1.1.0
+lib/libmount.so.1
+lib/libmount.so.1.1.0
+lib/libuuid.so.1.3.0
 sbin/agetty
+sbin/blkdiscard
 sbin/blockdev
 sbin/cfdisk
+sbin/chcpu
 sbin/ctrlaltdel
-#sbin/elvtune
 sbin/fdisk
 #sbin/fsck.cramfs
 sbin/fsck.minix
+sbin/fsfreeze
+sbin/fstrim
 sbin/hwclock
 sbin/losetup
 sbin/mkfs
@@ -19,50 +29,161 @@ sbin/mkfs
 #sbin/mkfs.cramfs
 sbin/mkfs.minix
 sbin/mkswap
+sbin/nologin
 #sbin/pivot_root
+sbin/raw
 sbin/sfdisk
+sbin/swaplabel
 sbin/swapoff
 sbin/swapon
+sbin/switch_root
+sbin/wipefs
 #usr/bin/cal
-#usr/bin/chkdupexe
+#usr/bin/chrt
 #usr/bin/col
 #usr/bin/colcrt
 #usr/bin/colrm
 #usr/bin/column
 #usr/bin/cytune
-#usr/bin/ddate
-usr/bin/fdformat
+usr/bin/eject
+usr/bin/fallocate
 usr/bin/flock
 usr/bin/getopt
 #usr/bin/hexdump
+#usr/bin/i386
+usr/bin/ionice
+#usr/bin/ipcmk
 #usr/bin/ipcrm
 #usr/bin/ipcs
 #usr/bin/isosize
-#usr/bin/line
+#usr/bin/linux32
+#usr/bin/linux64
 usr/bin/logger
 #usr/bin/look
+usr/bin/lscpu
+usr/bin/lslocks
 #usr/bin/mcookie
 #usr/bin/namei
+#usr/bin/nsenter
 usr/bin/pg
-#usr/bin/raw
+usr/bin/prlimit
 usr/bin/rename
 usr/bin/renice
 #usr/bin/rev
 #usr/bin/script
-#usr/bin/setfdprm
+#usr/bin/scriptreplay
+#usr/bin/setarch
 #usr/bin/setsid
 #usr/bin/setterm
 #usr/bin/tailf
+#usr/bin/taskset
 #usr/bin/ul
+#usr/bin/unshare
 #usr/bin/whereis
-#usr/bin/write
-#usr/sbin/ramsize
-usr/sbin/rdev
+#usr/include/libmount
+#usr/include/libmount/libmount.h
+#usr/lib/libblkid.la
+#usr/lib/libmount.a
+#usr/lib/libmount.la
+#usr/lib/libmount.so
+#usr/lib/libuuid.la
+#usr/lib/pkgconfig/mount.pc
+usr/sbin/addpart
+usr/sbin/delpart
+usr/sbin/fdformat
+usr/sbin/ldattach
+usr/sbin/partx
 #usr/sbin/readprofile
-#usr/sbin/rootflags
-#usr/sbin/tunelp
-#usr/sbin/vidmode
-#usr/share/info/ipc.info
+usr/sbin/resizepart
+usr/sbin/rtcwake
+usr/share/bash-completion
+#usr/share/bash-completion/completions
+#usr/share/bash-completion/completions/addpart
+#usr/share/bash-completion/completions/blkdiscard
+#usr/share/bash-completion/completions/blkid
+#usr/share/bash-completion/completions/blockdev
+#usr/share/bash-completion/completions/cal
+#usr/share/bash-completion/completions/cfdisk
+#usr/share/bash-completion/completions/chcpu
+#usr/share/bash-completion/completions/chrt
+#usr/share/bash-completion/completions/col
+#usr/share/bash-completion/completions/colcrt
+#usr/share/bash-completion/completions/colrm
+#usr/share/bash-completion/completions/column
+#usr/share/bash-completion/completions/ctrlaltdel
+#usr/share/bash-completion/completions/cytune
+#usr/share/bash-completion/completions/delpart
+#usr/share/bash-completion/completions/dmesg
+#usr/share/bash-completion/completions/eject
+#usr/share/bash-completion/completions/fallocate
+#usr/share/bash-completion/completions/fdformat
+#usr/share/bash-completion/completions/fdisk
+#usr/share/bash-completion/completions/findmnt
+#usr/share/bash-completion/completions/flock
+#usr/share/bash-completion/completions/fsck
+#usr/share/bash-completion/completions/fsck.cramfs
+#usr/share/bash-completion/completions/fsck.minix
+#usr/share/bash-completion/completions/fsfreeze
+#usr/share/bash-completion/completions/fstrim
+#usr/share/bash-completion/completions/getopt
+#usr/share/bash-completion/completions/hexdump
+#usr/share/bash-completion/completions/hwclock
+#usr/share/bash-completion/completions/ionice
+#usr/share/bash-completion/completions/ipcrm
+#usr/share/bash-completion/completions/ipcs
+#usr/share/bash-completion/completions/isosize
+#usr/share/bash-completion/completions/ldattach
+#usr/share/bash-completion/completions/logger
+#usr/share/bash-completion/completions/look
+#usr/share/bash-completion/completions/losetup
+#usr/share/bash-completion/completions/lsblk
+#usr/share/bash-completion/completions/lscpu
+#usr/share/bash-completion/completions/lslocks
+#usr/share/bash-completion/completions/mcookie
+#usr/share/bash-completion/completions/mesg
+#usr/share/bash-completion/completions/mkfs
+#usr/share/bash-completion/completions/mkfs.bfs
+#usr/share/bash-completion/completions/mkfs.cramfs
+#usr/share/bash-completion/completions/mkfs.minix
+#usr/share/bash-completion/completions/mkswap
+#usr/share/bash-completion/completions/more
+#usr/share/bash-completion/completions/mountpoint
+#usr/share/bash-completion/completions/namei
+#usr/share/bash-completion/completions/nsenter
+#usr/share/bash-completion/completions/partx
+#usr/share/bash-completion/completions/pg
+#usr/share/bash-completion/completions/pivot_root
+#usr/share/bash-completion/completions/prlimit
+#usr/share/bash-completion/completions/raw
+#usr/share/bash-completion/completions/readprofile
+#usr/share/bash-completion/completions/rename
+#usr/share/bash-completion/completions/renice
+#usr/share/bash-completion/completions/resizepart
+#usr/share/bash-completion/completions/rev
+#usr/share/bash-completion/completions/rtcwake
+#usr/share/bash-completion/completions/script
+#usr/share/bash-completion/completions/scriptreplay
+#usr/share/bash-completion/completions/setarch
+#usr/share/bash-completion/completions/setsid
+#usr/share/bash-completion/completions/setterm
+#usr/share/bash-completion/completions/sfdisk
+#usr/share/bash-completion/completions/swaplabel
+#usr/share/bash-completion/completions/swapon
+#usr/share/bash-completion/completions/tailf
+#usr/share/bash-completion/completions/taskset
+#usr/share/bash-completion/completions/ul
+#usr/share/bash-completion/completions/unshare
+#usr/share/bash-completion/completions/utmpdump
+#usr/share/bash-completion/completions/uuidd
+#usr/share/bash-completion/completions/uuidgen
+#usr/share/bash-completion/completions/wall
+#usr/share/bash-completion/completions/wdctl
+#usr/share/bash-completion/completions/whereis
+#usr/share/bash-completion/completions/wipefs
+#usr/share/doc/util-linux
+#usr/share/doc/util-linux/getopt
+#usr/share/doc/util-linux/getopt/getopt-parse.bash
+#usr/share/doc/util-linux/getopt/getopt-parse.tcsh
 #usr/share/locale/ca/LC_MESSAGES/util-linux.mo
 #usr/share/locale/cs/LC_MESSAGES/util-linux.mo
 #usr/share/locale/da/LC_MESSAGES/util-linux.mo
@@ -71,12 +192,21 @@ usr/sbin/rdev
 #usr/share/locale/et
 #usr/share/locale/et/LC_MESSAGES
 #usr/share/locale/et/LC_MESSAGES/util-linux.mo
+#usr/share/locale/eu
+#usr/share/locale/eu/LC_MESSAGES
+#usr/share/locale/eu/LC_MESSAGES/util-linux.mo
 #usr/share/locale/fi/LC_MESSAGES/util-linux.mo
 #usr/share/locale/fr/LC_MESSAGES/util-linux.mo
+#usr/share/locale/gl/LC_MESSAGES/util-linux.mo
+#usr/share/locale/hr/LC_MESSAGES/util-linux.mo
+#usr/share/locale/hu/LC_MESSAGES/util-linux.mo
+#usr/share/locale/id/LC_MESSAGES/util-linux.mo
 #usr/share/locale/it/LC_MESSAGES/util-linux.mo
 #usr/share/locale/ja/LC_MESSAGES/util-linux.mo
 #usr/share/locale/nl/LC_MESSAGES/util-linux.mo
+#usr/share/locale/pl/LC_MESSAGES/util-linux.mo
 #usr/share/locale/pt_BR/LC_MESSAGES/util-linux.mo
+#usr/share/locale/ru/LC_MESSAGES/util-linux.mo
 #usr/share/locale/sl
 #usr/share/locale/sl/LC_MESSAGES
 #usr/share/locale/sl/LC_MESSAGES/util-linux.mo
@@ -85,72 +215,92 @@ usr/sbin/rdev
 #usr/share/locale/uk
 #usr/share/locale/uk/LC_MESSAGES
 #usr/share/locale/uk/LC_MESSAGES/util-linux.mo
-#usr/share/man/man1/arch.1
+#usr/share/locale/vi/LC_MESSAGES/util-linux.mo
+#usr/share/locale/zh_CN/LC_MESSAGES/util-linux.mo
+#usr/share/locale/zh_TW/LC_MESSAGES/util-linux.mo
 #usr/share/man/man1/cal.1
-#usr/share/man/man1/chkdupexe.1
+#usr/share/man/man1/chrt.1
 #usr/share/man/man1/col.1
 #usr/share/man/man1/colcrt.1
 #usr/share/man/man1/colrm.1
 #usr/share/man/man1/column.1
-#usr/share/man/man1/ddate.1
+#usr/share/man/man1/dmesg.1
+#usr/share/man/man1/eject.1
+#usr/share/man/man1/fallocate.1
 #usr/share/man/man1/flock.1
 #usr/share/man/man1/getopt.1
 #usr/share/man/man1/hexdump.1
-#usr/share/man/man1/line.1
+#usr/share/man/man1/ionice.1
+#usr/share/man/man1/ipcmk.1
+#usr/share/man/man1/ipcrm.1
+#usr/share/man/man1/ipcs.1
+#usr/share/man/man1/logger.1
 #usr/share/man/man1/look.1
+#usr/share/man/man1/lscpu.1
 #usr/share/man/man1/mcookie.1
 #usr/share/man/man1/more.1
 #usr/share/man/man1/namei.1
+#usr/share/man/man1/nsenter.1
 #usr/share/man/man1/pg.1
-#usr/share/man/man1/readprofile.1
+#usr/share/man/man1/prlimit.1
 #usr/share/man/man1/rename.1
+#usr/share/man/man1/renice.1
 #usr/share/man/man1/rev.1
 #usr/share/man/man1/script.1
+#usr/share/man/man1/scriptreplay.1
+#usr/share/man/man1/setsid.1
 #usr/share/man/man1/setterm.1
 #usr/share/man/man1/tailf.1
+#usr/share/man/man1/taskset.1
 #usr/share/man/man1/ul.1
+#usr/share/man/man1/unshare.1
 #usr/share/man/man1/whereis.1
-#usr/share/man/man1/write.1
+#usr/share/man/man3/uuid_generate_time_safe.3
 #usr/share/man/man5/fstab.5
-#usr/share/man/man5/nfs.5
+#usr/share/man/man8/addpart.8
 #usr/share/man/man8/agetty.8
+#usr/share/man/man8/blkdiscard.8
 #usr/share/man/man8/blockdev.8
 #usr/share/man/man8/cfdisk.8
+#usr/share/man/man8/chcpu.8
 #usr/share/man/man8/ctrlaltdel.8
 #usr/share/man/man8/cytune.8
-#usr/share/man/man8/dmesg.8
-#usr/share/man/man8/elvtune.8
+#usr/share/man/man8/delpart.8
 #usr/share/man/man8/fdformat.8
 #usr/share/man/man8/fdisk.8
+#usr/share/man/man8/findmnt.8
+#usr/share/man/man8/fsck.cramfs.8
 #usr/share/man/man8/fsck.minix.8
+#usr/share/man/man8/fsfreeze.8
+#usr/share/man/man8/fstrim.8
 #usr/share/man/man8/hwclock.8
-#usr/share/man/man8/ipcrm.8
-#usr/share/man/man8/ipcs.8
+#usr/share/man/man8/i386.8
 #usr/share/man/man8/isosize.8
+#usr/share/man/man8/ldattach.8
+#usr/share/man/man8/linux32.8
+#usr/share/man/man8/linux64.8
 #usr/share/man/man8/losetup.8
+#usr/share/man/man8/lsblk.8
+#usr/share/man/man8/lslocks.8
 #usr/share/man/man8/mkfs.8
 #usr/share/man/man8/mkfs.bfs.8
+#usr/share/man/man8/mkfs.cramfs.8
 #usr/share/man/man8/mkfs.minix.8
 #usr/share/man/man8/mkswap.8
 #usr/share/man/man8/mount.8
+#usr/share/man/man8/nologin.8
+#usr/share/man/man8/partx.8
 #usr/share/man/man8/pivot_root.8
-#usr/share/man/man8/ramsize.8
 #usr/share/man/man8/raw.8
-#usr/share/man/man8/rdev.8
-#usr/share/man/man8/renice.8
-#usr/share/man/man8/rootflags.8
-#usr/share/man/man8/setfdprm.8
-#usr/share/man/man8/setsid.8
+#usr/share/man/man8/readprofile.8
+#usr/share/man/man8/resizepart.8
+#usr/share/man/man8/rtcwake.8
+#usr/share/man/man8/setarch.8
 #usr/share/man/man8/sfdisk.8
-#usr/share/man/man8/sln.8
+#usr/share/man/man8/swaplabel.8
 #usr/share/man/man8/swapoff.8
 #usr/share/man/man8/swapon.8
-#usr/share/man/man8/tunelp.8
+#usr/share/man/man8/switch_root.8
 #usr/share/man/man8/umount.8
-#usr/share/man/man8/vidmode.8
-#usr/share/misc/getopt
-#usr/share/misc/getopt/getopt-parse.bash
-#usr/share/misc/getopt/getopt-parse.tcsh
-#usr/share/misc/getopt/getopt-test.bash
-#usr/share/misc/getopt/getopt-test.tcsh
-var/lib/hwclock
+#usr/share/man/man8/wdctl.8
+#usr/share/man/man8/wipefs.8
diff --git a/config/rootfiles/common/inetutils b/config/rootfiles/common/inetutils
deleted file mode 100644 (file)
index 3cea63c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-bin/ping
-#usr/bin/ftp
-#usr/bin/rcp
-#usr/bin/rlogin
-#usr/bin/rsh
-#usr/bin/talk
-#usr/bin/tftp
-usr/bin/whois
-#usr/sbin/ftpd
-#usr/sbin/inetd
-#usr/sbin/rexecd
-#usr/sbin/rlogind
-#usr/sbin/rshd
-#usr/sbin/talkd
-#usr/sbin/tftpd
-#usr/sbin/uucpd
-#usr/share/info/inetutils.info
-#usr/share/info/inetutils.info-1
-#usr/share/info/inetutils.info-2
-#usr/share/info/inetutils.info-3
-#usr/share/man/man1/ftp.1
-#usr/share/man/man1/logger.1
-#usr/share/man/man1/rcp.1
-#usr/share/man/man1/rlogin.1
-#usr/share/man/man1/rsh.1
-#usr/share/man/man1/talk.1
-#usr/share/man/man1/telnet.1
-#usr/share/man/man1/tftp.1
-#usr/share/man/man5/syslog.conf.5
-#usr/share/man/man8/ftpd.8
-#usr/share/man/man8/inetd.8
-#usr/share/man/man8/ping.8
-#usr/share/man/man8/rexecd.8
-#usr/share/man/man8/rlogind.8
-#usr/share/man/man8/rshd.8
-#usr/share/man/man8/syslogd.8
-#usr/share/man/man8/talkd.8
-#usr/share/man/man8/telnetd.8
-#usr/share/man/man8/tftpd.8
index 39225a43ba69a572c16b273ce89ae9a6724c344d..a0f12900800373654797bce70bdcd1447fda4698 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
@@ -68,6 +76,7 @@ lib/xtables
 #lib/xtables/libxt_RATEEST.so
 #lib/xtables/libxt_SECMARK.so
 #lib/xtables/libxt_SET.so
+#lib/xtables/libxt_SYNPROXY.so
 #lib/xtables/libxt_TCPMSS.so
 #lib/xtables/libxt_TCPOPTSTRIP.so
 #lib/xtables/libxt_TEE.so
@@ -75,6 +84,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 +138,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 +145,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 +158,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 +174,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 +207,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
index 12bab801dea1f90217ad9b154f6a6db72d5c5c9b..7fb0426750b66e718fbcf4a589513b9d81228480 100644 (file)
@@ -1 +1,2 @@
+bin/ping
 usr/bin/ping
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
diff --git a/config/rootfiles/common/jwhois b/config/rootfiles/common/jwhois
new file mode 100644 (file)
index 0000000..135b453
--- /dev/null
@@ -0,0 +1,25 @@
+etc/jwhois.conf
+usr/bin/jwhois
+usr/bin/whois
+#usr/share/info/jwhois.info
+#usr/share/locale/es/LC_MESSAGES/jwhois.mo
+#usr/share/locale/fr/LC_MESSAGES/jwhois.mo
+#usr/share/locale/hu/LC_MESSAGES/jwhois.mo
+#usr/share/locale/id/LC_MESSAGES/jwhois.mo
+#usr/share/locale/it/LC_MESSAGES/jwhois.mo
+#usr/share/locale/nl/LC_MESSAGES/jwhois.mo
+#usr/share/locale/pl/LC_MESSAGES/jwhois.mo
+#usr/share/locale/pt_BR/LC_MESSAGES/jwhois.mo
+#usr/share/locale/ro
+#usr/share/locale/ro/LC_MESSAGES
+#usr/share/locale/ro/LC_MESSAGES/jwhois.mo
+#usr/share/locale/ru/LC_MESSAGES/jwhois.mo
+#usr/share/locale/rw/LC_MESSAGES/jwhois.mo
+#usr/share/locale/sv/LC_MESSAGES/jwhois.mo
+#usr/share/locale/tr/LC_MESSAGES/jwhois.mo
+#usr/share/locale/vi/LC_MESSAGES/jwhois.mo
+#usr/share/locale/zh_TW/LC_MESSAGES/jwhois.mo
+#usr/share/man/man1/jwhois.1
+#usr/share/man/sv
+#usr/share/man/sv/man1
+#usr/share/man/sv/man1/jwhois.1
diff --git a/config/rootfiles/common/kmod b/config/rootfiles/common/kmod
new file mode 100644 (file)
index 0000000..14e7654
--- /dev/null
@@ -0,0 +1,13 @@
+bin/kmod
+sbin/depmod
+sbin/insmod
+sbin/lsmod
+sbin/modinfo
+sbin/modprobe
+sbin/rmmod
+#usr/include/libkmod.h
+#usr/lib/libkmod.la
+usr/lib/libkmod.so
+usr/lib/libkmod.so.2
+usr/lib/libkmod.so.2.2.3
+#usr/lib/pkgconfig/libkmod.pc
index 770185f2aa1549f1ac74318793837ad77e20829c..7ceb697d991cc08dda8097fd2bc06fff968a0bee 100644 (file)
@@ -2,18 +2,32 @@
 #usr/bin/djpeg
 #usr/bin/jpegtran
 #usr/bin/rdjpgcom
+#usr/bin/tjbench
 #usr/bin/wrjpgcom
 #usr/include/jconfig.h
 #usr/include/jerror.h
 #usr/include/jmorecfg.h
 #usr/include/jpeglib.h
+#usr/include/turbojpeg.h
 #usr/lib/libjpeg.a
 #usr/lib/libjpeg.la
-usr/lib/libjpeg.so
+#usr/lib/libjpeg.so
 usr/lib/libjpeg.so.62
-usr/lib/libjpeg.so.62.0.0
+usr/lib/libjpeg.so.62.1.0
+#usr/lib/libturbojpeg.a
+#usr/lib/libturbojpeg.la
+#usr/lib/libturbojpeg.so
+usr/lib/libturbojpeg.so.0
+usr/lib/libturbojpeg.so.0.0.0
 #usr/man/man1/cjpeg.1
 #usr/man/man1/djpeg.1
 #usr/man/man1/jpegtran.1
 #usr/man/man1/rdjpgcom.1
 #usr/man/man1/wrjpgcom.1
+#usr/share/doc/README
+#usr/share/doc/README-turbo.txt
+#usr/share/doc/example.c
+#usr/share/doc/libjpeg.txt
+#usr/share/doc/structure.txt
+#usr/share/doc/usage.txt
+#usr/share/doc/wizard.txt
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 0fc7c0090b74074e4e5b641b3be77899ab6705d6..52169a74a94b2f53f2d3ed60453ace0ffa3d7be7 100644 (file)
@@ -1,7 +1,9 @@
 #usr/bin/pcap-config
 #usr/include/pcap
+#usr/include/pcap/bluetooth.h
 #usr/include/pcap-bpf.h
 #usr/include/pcap-int.h
+#usr/include/pcap/ipnet.h
 #usr/include/pcap-namedb.h
 #usr/include/pcap.h
 #usr/include/pcap/bpf.h
 #usr/include/pcap/pcap.h
 #usr/include/pcap/sll.h
 #usr/include/pcap/usb.h
+#usr/include/pcap/vlan.h
 #usr/lib/libpcap.a
 usr/lib/libpcap.so
 usr/lib/libpcap.so.1
-usr/lib/libpcap.so.1.0
-usr/lib/libpcap.so.1.0.0
+usr/lib/libpcap.so.1.4.0
 #usr/share/man/man1/pcap-config.1
 #usr/share/man/man3/pcap.3pcap
 #usr/share/man/man3/pcap_activate.3pcap
@@ -39,6 +41,7 @@ usr/lib/libpcap.so.1.0.0
 #usr/share/man/man3/pcap_findalldevs.3pcap
 #usr/share/man/man3/pcap_fopen_offline.3pcap
 #usr/share/man/man3/pcap_free_datalinks.3pcap
+#usr/share/man/man3/pcap_free_tstamp_types.3pcap
 #usr/share/man/man3/pcap_freealldevs.3pcap
 #usr/share/man/man3/pcap_freecode.3pcap
 #usr/share/man/man3/pcap_get_selectable_fd.3pcap
@@ -48,6 +51,7 @@ usr/lib/libpcap.so.1.0.0
 #usr/share/man/man3/pcap_is_swapped.3pcap
 #usr/share/man/man3/pcap_lib_version.3pcap
 #usr/share/man/man3/pcap_list_datalinks.3pcap
+#usr/share/man/man3/pcap_list_tstamp_types.3pcap
 #usr/share/man/man3/pcap_lookupdev.3pcap
 #usr/share/man/man3/pcap_lookupnet.3pcap
 #usr/share/man/man3/pcap_loop.3pcap
@@ -67,6 +71,7 @@ usr/lib/libpcap.so.1.0.0
 #usr/share/man/man3/pcap_set_rfmon.3pcap
 #usr/share/man/man3/pcap_set_snaplen.3pcap
 #usr/share/man/man3/pcap_set_timeout.3pcap
+#usr/share/man/man3/pcap_set_tstamp_type.3pcap
 #usr/share/man/man3/pcap_setdirection.3pcap
 #usr/share/man/man3/pcap_setfilter.3pcap
 #usr/share/man/man3/pcap_setnonblock.3pcap
@@ -74,6 +79,9 @@ usr/lib/libpcap.so.1.0.0
 #usr/share/man/man3/pcap_stats.3pcap
 #usr/share/man/man3/pcap_statustostr.3pcap
 #usr/share/man/man3/pcap_strerror.3pcap
+#usr/share/man/man3/pcap_tstamp_type_name_to_val.3pcap
+#usr/share/man/man3/pcap_tstamp_type_val_to_name.3pcap
 #usr/share/man/man5/pcap-savefile.5
 #usr/share/man/man7/pcap-filter.7
 #usr/share/man/man7/pcap-linktype.7
+#usr/share/man/man7/pcap-tstamp.7
diff --git a/config/rootfiles/common/libsigc++ b/config/rootfiles/common/libsigc++
deleted file mode 100644 (file)
index a05b64b..0000000
+++ /dev/null
@@ -1,1368 +0,0 @@
-#usr/include/sigc++-2.0
-#usr/include/sigc++-2.0/sigc++
-#usr/include/sigc++-2.0/sigc++/adaptors
-#usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h
-#usr/include/sigc++-2.0/sigc++/adaptors/adaptors.h
-#usr/include/sigc++-2.0/sigc++/adaptors/bind.h
-#usr/include/sigc++-2.0/sigc++/adaptors/bind_return.h
-#usr/include/sigc++-2.0/sigc++/adaptors/bound_argument.h
-#usr/include/sigc++-2.0/sigc++/adaptors/compose.h
-#usr/include/sigc++-2.0/sigc++/adaptors/deduce_result_type.h
-#usr/include/sigc++-2.0/sigc++/adaptors/exception_catch.h
-#usr/include/sigc++-2.0/sigc++/adaptors/hide.h
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/base.h
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/group.h
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/lambda.h
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros/base.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros/group.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros/lambda.cc.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros/operator.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros/select.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/operator.h
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/select.h
-#usr/include/sigc++-2.0/sigc++/adaptors/macros
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/adaptor_trait.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/bind.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/bind_return.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/compose.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/deduce_result_type.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/exception_catch.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/hide.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/retype.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/retype_return.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/retype.h
-#usr/include/sigc++-2.0/sigc++/adaptors/retype_return.h
-#usr/include/sigc++-2.0/sigc++/bind.h
-#usr/include/sigc++-2.0/sigc++/bind_return.h
-#usr/include/sigc++-2.0/sigc++/class_slot.h
-#usr/include/sigc++-2.0/sigc++/compatibility.h
-#usr/include/sigc++-2.0/sigc++/connection.h
-#usr/include/sigc++-2.0/sigc++/functors
-#usr/include/sigc++-2.0/sigc++/functors/functor_trait.h
-#usr/include/sigc++-2.0/sigc++/functors/functors.h
-#usr/include/sigc++-2.0/sigc++/functors/macros
-#usr/include/sigc++-2.0/sigc++/functors/macros/functor_trait.h.m4
-#usr/include/sigc++-2.0/sigc++/functors/macros/mem_fun.h.m4
-#usr/include/sigc++-2.0/sigc++/functors/macros/ptr_fun.h.m4
-#usr/include/sigc++-2.0/sigc++/functors/macros/slot.h.m4
-#usr/include/sigc++-2.0/sigc++/functors/mem_fun.h
-#usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h
-#usr/include/sigc++-2.0/sigc++/functors/slot.h
-#usr/include/sigc++-2.0/sigc++/functors/slot_base.h
-#usr/include/sigc++-2.0/sigc++/hide.h
-#usr/include/sigc++-2.0/sigc++/limit_reference.h
-#usr/include/sigc++-2.0/sigc++/macros
-#usr/include/sigc++-2.0/sigc++/macros/class_slot.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/hide.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/limit_reference.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/method_slot.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/object_slot.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/retype.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/signal.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/slot.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/template.macros.m4
-#usr/include/sigc++-2.0/sigc++/method_slot.h
-#usr/include/sigc++-2.0/sigc++/object.h
-#usr/include/sigc++-2.0/sigc++/object_slot.h
-#usr/include/sigc++-2.0/sigc++/reference_wrapper.h
-#usr/include/sigc++-2.0/sigc++/retype.h
-#usr/include/sigc++-2.0/sigc++/retype_return.h
-#usr/include/sigc++-2.0/sigc++/sigc++.h
-#usr/include/sigc++-2.0/sigc++/signal.h
-#usr/include/sigc++-2.0/sigc++/signal_base.h
-#usr/include/sigc++-2.0/sigc++/slot.h
-#usr/include/sigc++-2.0/sigc++/trackable.h
-#usr/include/sigc++-2.0/sigc++/type_traits.h
-#usr/include/sigc++-2.0/sigc++/visit_each.h
-#usr/lib/libsigc-2.0.a
-#usr/lib/libsigc-2.0.la
-#usr/lib/libsigc-2.0.so
-usr/lib/libsigc-2.0.so.0
-usr/lib/libsigc-2.0.so.0.0.0
-#usr/lib/pkgconfig/sigc++-2.0.pc
-#usr/lib/sigc++-2.0
-#usr/lib/sigc++-2.0/include
-#usr/lib/sigc++-2.0/include/sigc++config.h
-#usr/share/doc/libsigc-2.0
-#usr/share/doc/libsigc-2.0/docs
-#usr/share/doc/libsigc-2.0/docs/images
-#usr/share/doc/libsigc-2.0/docs/images/libsigc_logo.gif
-#usr/share/doc/libsigc-2.0/docs/images/top.gif
-#usr/share/doc/libsigc-2.0/docs/index.html
-#usr/share/doc/libsigc-2.0/docs/reference
-#usr/share/doc/libsigc-2.0/docs/reference/html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptor__trait_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_2bind_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_2bind__return_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_2hide_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_2retype_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_2retype__return_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/annotated.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/base_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/bind_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/bind__return_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/bound__argument_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/class__slot_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classes.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classinternal_1_1lambda__core.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classinternal_1_1lambda__core__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classnil.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument_3_01const__reference__wrapper_3_01T__wrapped_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument_3_01const__reference__wrapper_3_01T__wrapped_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument_3_01reference__wrapper_3_01T__wrapped_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument_3_01reference__wrapper_3_01T__wrapped_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__limit__reference-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__limit__reference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__limit__reference_3_01T__type_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__limit__reference_3_01T__type_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__limit__reference-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__limit__reference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__limit__reference_3_01T__type_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__limit__reference_3_01T__type_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1limit__reference-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1limit__reference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1limit__reference_3_01T__type_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1limit__reference_3_01T__type_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal_1_1accumulated-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal_1_1accumulated.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal_1_1accumulated__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot__base-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot__base.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot__base__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__limit__reference-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__limit__reference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__limit__reference_3_01T__type_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__limit__reference_3_01T__type_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/compatibility_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/compose_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/connection_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/deduce__result__type_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/deprecated.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/doxygen.css
-#usr/share/doc/libsigc-2.0/docs/reference/html/doxygen.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/exception__catch_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/files.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x61.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x62.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x63.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x64.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x65.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x66.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x67.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x68.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x69.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x6c.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x6d.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x6e.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x6f.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x70.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x72.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x73.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x74.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x75.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x76.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x7e.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x62.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x63.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x64.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x65.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x66.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x68.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x69.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x6c.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x6d.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x6e.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x6f.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x70.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x72.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x73.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x74.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x75.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x76.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x7e.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_rela.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x63.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x64.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x65.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x66.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x67.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x69.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x6c.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x6f.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x70.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x72.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x73.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x74.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type_0x76.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x61.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x62.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x63.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x64.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x65.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x66.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x67.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x69.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x6c.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x6f.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x70.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x72.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x73.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x74.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars_0x76.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functor__trait_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functors_2slot_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functors_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/globals.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/globals_defs.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.dot
-#usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__adaptors.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__adaptors.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__bind.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__bind.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__compat.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__compose.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__compose.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__exception__catch.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__exception__catch.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__functors.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__functors.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__group__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__group__.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__hide.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__hide.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__lambdas.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__lambdas.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__mem__fun.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__mem__fun.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__ptr__fun.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__ptr__fun.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__retype.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__retype.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__signal.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__slot.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__slot.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/hide_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/hierarchy.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/index.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__0.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__1.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__10.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__100.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__101.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__102.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__103.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__104.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__105.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__106.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__107.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__108.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__109.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__11.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__110.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__111.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__112.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__113.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__114.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__115.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__116.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__117.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__118.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__119.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__12.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__120.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__121.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__122.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__123.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__124.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__125.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__126.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__127.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__128.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__129.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__13.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__130.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__131.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__132.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__133.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__134.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__135.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__136.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__137.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__138.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__139.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__14.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__140.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__141.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__142.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__143.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__144.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__145.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__146.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__147.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__148.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__149.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__15.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__150.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__151.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__152.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__153.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__154.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__155.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__156.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__157.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__158.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__159.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__16.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__160.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__161.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__162.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__163.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__164.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__165.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__166.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__167.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__168.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__169.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__17.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__170.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__171.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__172.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__173.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__174.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__175.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__176.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__177.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__178.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__179.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__18.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__180.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__181.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__182.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__183.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__184.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__185.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__186.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__187.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__188.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__189.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__19.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__190.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__191.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__192.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__193.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__194.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__195.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__196.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__197.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__198.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__199.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__2.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__20.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__200.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__201.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__202.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__203.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__204.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__205.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__206.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__207.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__208.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__209.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__21.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__210.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__211.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__212.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__213.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__214.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__215.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__216.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__217.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__218.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__219.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__22.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__220.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__221.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__222.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__223.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__224.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__225.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__226.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__227.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__228.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__229.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__23.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__230.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__231.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__232.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__233.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__234.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__235.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__236.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__237.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__238.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__239.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__24.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__240.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__241.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__242.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__243.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__244.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__245.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__246.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__247.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__248.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__249.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__25.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__250.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__251.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__252.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__253.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__254.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__255.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__256.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__257.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__258.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__259.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__26.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__260.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__261.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__262.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__263.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__27.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__28.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__29.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__3.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__30.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__31.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__32.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__33.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__34.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__35.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__36.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__37.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__38.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__39.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__4.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__40.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__41.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__42.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__43.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__44.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__45.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__46.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__47.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__48.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__49.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__5.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__50.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__51.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__52.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__53.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__54.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__55.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__56.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__57.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__58.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__59.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__6.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__60.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__61.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__62.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__63.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__64.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__65.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__66.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__67.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__68.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__69.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__7.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__70.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__71.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__72.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__73.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__74.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__75.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__76.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__77.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__78.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__79.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__8.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__80.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__81.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__82.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__83.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__84.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__85.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__86.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__87.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__88.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__89.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__9.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__90.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__91.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__92.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__93.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__94.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__95.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__96.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__97.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__98.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__99.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherits.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/lambda_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/limit__reference_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/mem__fun_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/method__slot_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/modules.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespaceSigC.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x62.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x63.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x64.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x65.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x66.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x67.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x68.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x6d.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x6f.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x70.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x72.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x73.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x75.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_0x76.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x63.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x64.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x65.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x67.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x68.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x6d.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x6f.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x70.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x72.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x73.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x75.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func_0x76.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_vars.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespaces.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacesigc.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacesigc_1_1internal.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/object_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/object__slot_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/operator_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/pages.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/ptr__fun_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/reference__wrapper_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/retype_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/retype__return_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/select_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/sigc++_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/signal_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/signal__base_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/slot_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/slot__base_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structSigC_1_1retype__slot__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structSigC_1_1retype__slot__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structSigC_1_1retype__slot__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structSigC_1_1retype__slot__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structSigC_1_1retype__slot__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__base.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__base__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__trait_3_01T__functor_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__trait_3_01T__functor_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__trait_3_01T__functor_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__trait_3_01T__functor_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adapts-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adapts.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adapts__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1address.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1and__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1arithmetic.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1arithmetic__assign.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1assign.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bind__return__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bind__return__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bind__return__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bind__return__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bind__return__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bitwise.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bitwise__assign.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1cast__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose1__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose1__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose1__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose1__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose1__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose2__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose2__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose2__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose2__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose2__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1connection-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1connection.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1const__reference__wrapper-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1const__reference__wrapper.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5const_01_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5const_01_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5const_01_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5const_01_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1divides.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dynamic__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1equal__to.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor_3_01T__functor_00_01T__catcher_00_01void_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor_3_01T__functor_00_01T__catcher_00_01void_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__base.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__base__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__functor_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__functor_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)()_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)()_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)()_01const_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)()_01const_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)(T__arg1)_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)(T__arg1)_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)(T__arg1)_01const_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)(T__arg1_00_01T__arg2)_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)()_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)()_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)(T__arg1)_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)(T__arg1)_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)(T__arg1_00_01T__arg2)_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)(T__arg1_00_01T__arg2)_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1greater.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1greater__equal.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3-1_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3-1_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3-1_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3-1_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3-1_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_010_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_010_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_010_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_010_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_010_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_011_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_011_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_011_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_011_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_011_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_012_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_012_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_012_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_012_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_012_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_013_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_013_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_013_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_013_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_013_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_014_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_014_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_014_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_014_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_014_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_015_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_015_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_015_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_015_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_015_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_016_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_016_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_016_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_016_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_016_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01false_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01false_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01true_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01true_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select1_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select1_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select2_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select2_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select3_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select3_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select5_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select5_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select6_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select6_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select7_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select7_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1limit__derived__target-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1limit__derived__target.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1limit__derived__target_3_01T__target_01_5_00_01T__action_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1limit__derived__target_3_01T__target_01_5_00_01T__action_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0_3_01T__return_00_01nil_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0_3_01T__return_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0_3_01void_00_01nil_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0_3_01void_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1_3_01T__return_00_01T__arg1_00_01nil_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1_3_01T__return_00_01T__arg1_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1_3_01void_00_01T__arg1_00_01nil_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1_3_01void_00_01T__arg1_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit2_3_01T__return_00_01T__arg1_00_01T__arg2_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit2_3_01void_00_01T__arg1_00_01T__arg2_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__exec-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__exec.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__impl-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__impl.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__do__bind-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__do__bind.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__do__unbind-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__do__unbind.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__iterator__buf-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__iterator__buf.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__iterator__buf_3_01T__emitter_00_01void_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__iterator__buf_3_01T__emitter_00_01void_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__rep-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__rep.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__rep__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1temp__slot__list-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1temp__slot__list.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1trackable__callback-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1trackable__callback.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1trackable__callback__list-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1trackable__callback__list.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1typed__slot__rep-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1typed__slot__rep.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1typed__slot__rep__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type_3_01false_00_01T__type_00_01T__limit_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type_3_01false_00_01T__type_00_01T__limit_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type_3_01true_00_01T__type_00_01T__limit_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type_3_01true_00_01T__type_00_01T__limit_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type__pointer_3_01false_00_01T__type_00_01T__limit_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type__pointer_3_01false_00_01T__type_00_01T__limit_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type__pointer_3_01true_00_01T__type_00_01T__limit_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type__pointer_3_01true_00_01T__type_00_01T__limit_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1is__base__and__derived-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1is__base__and__derived.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1is__base__and__derived_3_01T__base_00_01T__base_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1is__base__and__derived_3_01T__base_00_01T__base_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01divides_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01divides_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01minus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01minus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01modulus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01modulus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01multiplies_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01multiplies_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01plus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01plus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01divides_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01divides_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01minus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01minus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01modulus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01modulus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01multiplies_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01multiplies_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01plus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01plus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01and___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01and___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01leftshift_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01leftshift_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01or___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01or___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01rightshift_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01rightshift_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01xor___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01xor___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01and___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01and___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01leftshift_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01leftshift_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01or___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01or___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01rightshift_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01rightshift_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01xor___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01xor___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01logical_3_01and___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01logical_3_01and___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01logical_3_01or___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01logical_3_01or___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01other_3_01assign_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01other_3_01assign_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01other_3_01subscript_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01other_3_01subscript_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01equal__to_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01equal__to_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01greater_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01greater_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01greater__equal_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01greater__equal_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01less_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01less_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01less__equal_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01less__equal_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01not__equal__to_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01not__equal__to_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert_3_01cast___3_01dynamic___01_4_00_01T__type_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert_3_01cast___3_01dynamic___01_4_00_01T__type_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert_3_01cast___3_01reinterpret___01_4_00_01T__type_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert_3_01cast___3_01static___01_4_00_01T__type_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert_3_01cast___3_01static___01_4_00_01T__type_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert__deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert__deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01negate_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01negate_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01pre__decrement_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01pre__decrement_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01pre__increment_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01pre__increment_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__bitwise_3_01not___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__bitwise_3_01not___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__logical_3_01not___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__logical_3_01not___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__other_3_01address_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__other_3_01address_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__other_3_01dereference_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__other_3_01dereference_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary__deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary__deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__base.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__base__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group1_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group1_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group2_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group2_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group3_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group3_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__convert-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__convert.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__convert_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__convert_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__convert__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__unary-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__unary.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__unary_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__unary_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__unary__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1leftshift.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1less.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1less__equal.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1logical.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1minus.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1modulus.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1multiplies.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1negate.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1not__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1not__equal__to.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1or__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1other.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1plus.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1pre__decrement.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1pre__increment.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1reference__wrapper-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1reference__wrapper.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1reinterpret__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1relational.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_3_01void_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_3_01void_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_3_01void_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_3_01void_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1rightshift.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1signal__base-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1signal__base.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1signal__base__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__const__iterator-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__const__iterator.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__iterator-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__iterator.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__list-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__list.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1static__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1subscript.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1trackable-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1trackable.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1trackable__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01T__type[N]_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01T__type[N]_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01T__type_01_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01T__type_01_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01const_01T__type_01_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01const_01T__type_01_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01void_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01void_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unary__arithmetic.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unary__bitwise.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unary__logical.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unary__other.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__lambda__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__lambda__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__lambda__type_3_01lambda_3_01T__type_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__lambda__type_3_01lambda_3_01T__type_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference_3_01const__reference__wrapper_3_01T__type_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference_3_01const__reference__wrapper_3_01T__type_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference_3_01reference__wrapper_3_01T__type_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference_3_01reference__wrapper_3_01T__type_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1xor__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/tabs.css
-#usr/share/doc/libsigc-2.0/docs/reference/html/trackable_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/type__traits_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/visit__each_8h.html
-#usr/share/doc/libsigc-2.0/docs/tutorial
-#usr/share/doc/libsigc-2.0/docs/tutorial/html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch01.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch02.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch02s02.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch02s03.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch02s04.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch03.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch03s02.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch04.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch04s02.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch04s03.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch05.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/index.html
diff --git a/config/rootfiles/common/libtorrent b/config/rootfiles/common/libtorrent
deleted file mode 100644 (file)
index 7e249a1..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#usr/include/torrent
-#usr/include/torrent/bitfield.h
-#usr/include/torrent/chunk_manager.h
-#usr/include/torrent/common.h
-#usr/include/torrent/connection_manager.h
-#usr/include/torrent/data
-#usr/include/torrent/data/block.h
-#usr/include/torrent/data/block_list.h
-#usr/include/torrent/data/block_transfer.h
-#usr/include/torrent/data/file.h
-#usr/include/torrent/data/file_list.h
-#usr/include/torrent/data/file_list_iterator.h
-#usr/include/torrent/data/file_manager.h
-#usr/include/torrent/data/file_utils.h
-#usr/include/torrent/data/piece.h
-#usr/include/torrent/data/transfer_list.h
-#usr/include/torrent/download.h
-#usr/include/torrent/error.h
-#usr/include/torrent/event.h
-#usr/include/torrent/exceptions.h
-#usr/include/torrent/hash_string.h
-#usr/include/torrent/http.h
-#usr/include/torrent/object.h
-#usr/include/torrent/object_stream.h
-#usr/include/torrent/path.h
-#usr/include/torrent/peer
-#usr/include/torrent/peer/client_info.h
-#usr/include/torrent/peer/client_list.h
-#usr/include/torrent/peer/peer.h
-#usr/include/torrent/peer/peer_info.h
-#usr/include/torrent/peer/peer_list.h
-#usr/include/torrent/poll.h
-#usr/include/torrent/poll_epoll.h
-#usr/include/torrent/poll_kqueue.h
-#usr/include/torrent/poll_select.h
-#usr/include/torrent/rate.h
-#usr/include/torrent/resume.h
-#usr/include/torrent/torrent.h
-#usr/include/torrent/tracker.h
-#usr/include/torrent/tracker_list.h
-#usr/lib/libtorrent.la
-#usr/lib/libtorrent.so
-#usr/lib/libtorrent.so.11
-#usr/lib/libtorrent.so.11.0.6
-#usr/lib/pkgconfig/libtorrent.pc
-#usr/include/torrent/dht_manager.h
-#usr/include/torrent/peer/connection_list.h
-#usr/include/torrent/throttle.h
diff --git a/config/rootfiles/common/libusbx b/config/rootfiles/common/libusbx
new file mode 100644 (file)
index 0000000..62d6492
--- /dev/null
@@ -0,0 +1,8 @@
+#usr/include/libusb-1.0
+#usr/include/libusb-1.0/libusb.h
+#usr/lib/libusb-1.0.a
+#usr/lib/libusb-1.0.la
+#usr/lib/libusb-1.0.so
+usr/lib/libusb-1.0.so.0
+usr/lib/libusb-1.0.so.0.1.0
+#usr/lib/pkgconfig/libusb-1.0.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 78bcc64d3964e71ebe4b2066561dba4d7f33719c..d828b8dced63a1a107645b5448a5399e4dad0c76 100644 (file)
@@ -7,21 +7,28 @@ lib/firmware/LICENCE.OLPC
 lib/firmware/LICENCE.agere
 lib/firmware/LICENCE.atheros_firmware
 lib/firmware/LICENCE.broadcom_bcm43xx
+lib/firmware/LICENCE.ca0132
 lib/firmware/LICENCE.chelsio_firmware
+lib/firmware/LICENCE.cw1200
 lib/firmware/LICENCE.ene_firmware
+lib/firmware/LICENCE.go7007
 lib/firmware/LICENCE.i2400m
+lib/firmware/LICENCE.ibt_firmware
 lib/firmware/LICENCE.iwlwifi_firmware
 lib/firmware/LICENCE.mwl8335
 lib/firmware/LICENCE.myri10ge_firmware
 lib/firmware/LICENCE.phanfw
 lib/firmware/LICENCE.qla2xxx
 lib/firmware/LICENCE.ralink-firmware.txt
+lib/firmware/LICENCE.ralink_a_mediatek_company_firmware
 lib/firmware/LICENCE.rtlwifi_firmware.txt
 lib/firmware/LICENCE.tda7706-firmware.txt
 lib/firmware/LICENCE.ti-connectivity
 lib/firmware/LICENCE.ueagle-atm4-firmware
 lib/firmware/LICENCE.via_vt6656
+lib/firmware/LICENCE.wl1251
 lib/firmware/LICENCE.xc5000
+lib/firmware/LICENSE.amd-ucode
 lib/firmware/LICENSE.dib0700
 lib/firmware/LICENSE.radeon
 #lib/firmware/Makefile
@@ -46,6 +53,11 @@ lib/firmware/advansys/38C1600.bin
 lib/firmware/advansys/mcode.bin
 lib/firmware/agere_ap_fw.bin
 lib/firmware/agere_sta_fw.bin
+#lib/firmware/amd-ucode
+lib/firmware/amd-ucode/microcode_amd.bin
+lib/firmware/amd-ucode/microcode_amd.bin.asc
+lib/firmware/amd-ucode/microcode_amd_fam15h.bin
+lib/firmware/amd-ucode/microcode_amd_fam15h.bin.asc
 #lib/firmware/ar3k
 #lib/firmware/ar3k/1020200
 lib/firmware/ar3k/1020200/PS_ASIC.pst
@@ -73,6 +85,7 @@ lib/firmware/ar3k/AthrBT_0x01020200.dfu
 lib/firmware/ar3k/AthrBT_0x01020201.dfu
 lib/firmware/ar3k/AthrBT_0x11020000.dfu
 lib/firmware/ar3k/AthrBT_0x31010000.dfu
+lib/firmware/ar3k/AthrBT_0x41020000.dfu
 lib/firmware/ar3k/ramps_0x01020001_26.dfu
 lib/firmware/ar3k/ramps_0x01020200_26.dfu
 lib/firmware/ar3k/ramps_0x01020200_40.dfu
@@ -80,6 +93,8 @@ lib/firmware/ar3k/ramps_0x01020201_26.dfu
 lib/firmware/ar3k/ramps_0x01020201_40.dfu
 lib/firmware/ar3k/ramps_0x11020000_40.dfu
 lib/firmware/ar3k/ramps_0x31010000_40.dfu
+lib/firmware/ar3k/ramps_0x41020000_40.dfu
+lib/firmware/ar5523.bin
 lib/firmware/ar7010.fw
 lib/firmware/ar7010_1_1.fw
 lib/firmware/ar9170-1.fw
@@ -178,6 +193,7 @@ lib/firmware/bnx2x/bnx2x-e1-7.0.23.0.fw
 lib/firmware/bnx2x/bnx2x-e1-7.0.29.0.fw
 lib/firmware/bnx2x/bnx2x-e1-7.2.16.0.fw
 lib/firmware/bnx2x/bnx2x-e1-7.2.51.0.fw
+lib/firmware/bnx2x/bnx2x-e1-7.8.17.0.fw
 lib/firmware/bnx2x/bnx2x-e1-7.8.2.0.fw
 lib/firmware/bnx2x/bnx2x-e1h-6.0.34.0.fw
 lib/firmware/bnx2x/bnx2x-e1h-6.2.5.0.fw
@@ -187,6 +203,7 @@ lib/firmware/bnx2x/bnx2x-e1h-7.0.23.0.fw
 lib/firmware/bnx2x/bnx2x-e1h-7.0.29.0.fw
 lib/firmware/bnx2x/bnx2x-e1h-7.2.16.0.fw
 lib/firmware/bnx2x/bnx2x-e1h-7.2.51.0.fw
+lib/firmware/bnx2x/bnx2x-e1h-7.8.17.0.fw
 lib/firmware/bnx2x/bnx2x-e1h-7.8.2.0.fw
 lib/firmware/bnx2x/bnx2x-e2-6.0.34.0.fw
 lib/firmware/bnx2x/bnx2x-e2-6.2.5.0.fw
@@ -196,15 +213,152 @@ lib/firmware/bnx2x/bnx2x-e2-7.0.23.0.fw
 lib/firmware/bnx2x/bnx2x-e2-7.0.29.0.fw
 lib/firmware/bnx2x/bnx2x-e2-7.2.16.0.fw
 lib/firmware/bnx2x/bnx2x-e2-7.2.51.0.fw
+lib/firmware/bnx2x/bnx2x-e2-7.8.17.0.fw
 lib/firmware/bnx2x/bnx2x-e2-7.8.2.0.fw
 #lib/firmware/brcm
 lib/firmware/brcm/bcm4329-fullmac-4.bin
 lib/firmware/brcm/bcm43xx-0.fw
 lib/firmware/brcm/bcm43xx_hdr-0.fw
 lib/firmware/brcm/brcmfmac43236b.bin
-lib/firmware/brcm/brcmfmac4329.bin
-lib/firmware/brcm/brcmfmac4330.bin
-lib/firmware/brcm/brcmfmac4334.bin
+lib/firmware/brcm/brcmfmac43241b0-sdio.bin
+lib/firmware/brcm/brcmfmac43241b4-sdio.bin
+lib/firmware/brcm/brcmfmac4329-sdio.bin
+lib/firmware/brcm/brcmfmac4330-sdio.bin
+lib/firmware/brcm/brcmfmac4334-sdio.bin
+lib/firmware/brcm/brcmfmac4335-sdio.bin
+lib/firmware/carl9170-1.fw
+#lib/firmware/carl9170fw
+#lib/firmware/carl9170fw/CMakeLists.txt
+#lib/firmware/carl9170fw/COPYRIGHT
+#lib/firmware/carl9170fw/GPL
+#lib/firmware/carl9170fw/Kconfig
+#lib/firmware/carl9170fw/README
+#lib/firmware/carl9170fw/autogen.sh
+#lib/firmware/carl9170fw/carlfw
+#lib/firmware/carl9170fw/carlfw/CMakeLists.txt
+#lib/firmware/carl9170fw/carlfw/Kconfig
+#lib/firmware/carl9170fw/carlfw/carl9170.lds
+#lib/firmware/carl9170fw/carlfw/include
+#lib/firmware/carl9170fw/carlfw/include/cam.h
+#lib/firmware/carl9170fw/carlfw/include/carl9170.h
+#lib/firmware/carl9170fw/carlfw/include/cmd.h
+#lib/firmware/carl9170fw/carlfw/include/config.h
+#lib/firmware/carl9170fw/carlfw/include/dma.h
+#lib/firmware/carl9170fw/carlfw/include/fwdsc.h
+#lib/firmware/carl9170fw/carlfw/include/gpio.h
+#lib/firmware/carl9170fw/carlfw/include/hostif.h
+#lib/firmware/carl9170fw/carlfw/include/io.h
+#lib/firmware/carl9170fw/carlfw/include/printf.h
+#lib/firmware/carl9170fw/carlfw/include/rf.h
+#lib/firmware/carl9170fw/carlfw/include/rom.h
+#lib/firmware/carl9170fw/carlfw/include/timer.h
+#lib/firmware/carl9170fw/carlfw/include/uart.h
+#lib/firmware/carl9170fw/carlfw/include/usb.h
+#lib/firmware/carl9170fw/carlfw/include/usb_fifo.h
+#lib/firmware/carl9170fw/carlfw/include/wl.h
+#lib/firmware/carl9170fw/carlfw/include/wol.h
+#lib/firmware/carl9170fw/carlfw/src
+#lib/firmware/carl9170fw/carlfw/src/ashlsi3.S
+#lib/firmware/carl9170fw/carlfw/src/cam.c
+#lib/firmware/carl9170fw/carlfw/src/cmd.c
+#lib/firmware/carl9170fw/carlfw/src/dma.c
+#lib/firmware/carl9170fw/carlfw/src/fw.c
+#lib/firmware/carl9170fw/carlfw/src/gpio.c
+#lib/firmware/carl9170fw/carlfw/src/hostif.c
+#lib/firmware/carl9170fw/carlfw/src/main.c
+#lib/firmware/carl9170fw/carlfw/src/memcpy.S
+#lib/firmware/carl9170fw/carlfw/src/memset.S
+#lib/firmware/carl9170fw/carlfw/src/printf.c
+#lib/firmware/carl9170fw/carlfw/src/reboot.S
+#lib/firmware/carl9170fw/carlfw/src/rf.c
+#lib/firmware/carl9170fw/carlfw/src/uart.c
+#lib/firmware/carl9170fw/carlfw/src/udivsi3_i4i-Os.S
+#lib/firmware/carl9170fw/carlfw/src/wlan.c
+#lib/firmware/carl9170fw/carlfw/src/wol.c
+#lib/firmware/carl9170fw/carlfw/usb
+#lib/firmware/carl9170fw/carlfw/usb/Kconfig
+#lib/firmware/carl9170fw/carlfw/usb/fifo.c
+#lib/firmware/carl9170fw/carlfw/usb/main.c
+#lib/firmware/carl9170fw/carlfw/usb/usb.c
+#lib/firmware/carl9170fw/config
+#lib/firmware/carl9170fw/config/CMakeLists.txt
+#lib/firmware/carl9170fw/config/conf.c
+#lib/firmware/carl9170fw/config/confdata.c
+#lib/firmware/carl9170fw/config/expr.c
+#lib/firmware/carl9170fw/config/expr.h
+#lib/firmware/carl9170fw/config/lkc.h
+#lib/firmware/carl9170fw/config/lkc_proto.h
+#lib/firmware/carl9170fw/config/menu.c
+#lib/firmware/carl9170fw/config/symbol.c
+#lib/firmware/carl9170fw/config/util.c
+#lib/firmware/carl9170fw/config/zconf.gperf
+#lib/firmware/carl9170fw/config/zconf.l
+#lib/firmware/carl9170fw/config/zconf.y
+#lib/firmware/carl9170fw/extra
+#lib/firmware/carl9170fw/extra/FindGPERF.cmake
+#lib/firmware/carl9170fw/extra/FindPackageHandleStandardArgs.cmake
+#lib/firmware/carl9170fw/extra/FindUSB-1.0.cmake
+#lib/firmware/carl9170fw/extra/GCCVersion.cmake
+#lib/firmware/carl9170fw/extra/libusb-zeropacket.diff
+#lib/firmware/carl9170fw/extra/sh-elf-linux.cmake
+#lib/firmware/carl9170fw/genapi.sh
+#lib/firmware/carl9170fw/include
+#lib/firmware/carl9170fw/include/linux
+#lib/firmware/carl9170fw/include/linux/ch9.h
+#lib/firmware/carl9170fw/include/linux/compiler.h
+#lib/firmware/carl9170fw/include/linux/ieee80211.h
+#lib/firmware/carl9170fw/include/linux/types.h
+#lib/firmware/carl9170fw/include/shared
+#lib/firmware/carl9170fw/include/shared/eeprom.h
+#lib/firmware/carl9170fw/include/shared/fwcmd.h
+#lib/firmware/carl9170fw/include/shared/fwdesc.h
+#lib/firmware/carl9170fw/include/shared/hw.h
+#lib/firmware/carl9170fw/include/shared/phy.h
+#lib/firmware/carl9170fw/include/shared/version.h
+#lib/firmware/carl9170fw/include/shared/wlan.h
+#lib/firmware/carl9170fw/minifw
+#lib/firmware/carl9170fw/minifw/CMakeLists.txt
+#lib/firmware/carl9170fw/minifw/Kconfig
+#lib/firmware/carl9170fw/minifw/miniboot.S
+#lib/firmware/carl9170fw/minifw/miniboot.lds
+#lib/firmware/carl9170fw/toolchain
+#lib/firmware/carl9170fw/toolchain/Makefile
+#lib/firmware/carl9170fw/toolchain/SHA256SUMS
+#lib/firmware/carl9170fw/tools
+#lib/firmware/carl9170fw/tools/CMakeLists.txt
+#lib/firmware/carl9170fw/tools/Kconfig
+#lib/firmware/carl9170fw/tools/carlu
+#lib/firmware/carl9170fw/tools/carlu/CMakeLists.txt
+#lib/firmware/carl9170fw/tools/carlu/src
+#lib/firmware/carl9170fw/tools/carlu/src/carlu.h
+#lib/firmware/carl9170fw/tools/carlu/src/cmd.c
+#lib/firmware/carl9170fw/tools/carlu/src/cmd.h
+#lib/firmware/carl9170fw/tools/carlu/src/debug.c
+#lib/firmware/carl9170fw/tools/carlu/src/debug.h
+#lib/firmware/carl9170fw/tools/carlu/src/fw.c
+#lib/firmware/carl9170fw/tools/carlu/src/main.c
+#lib/firmware/carl9170fw/tools/carlu/src/rx.c
+#lib/firmware/carl9170fw/tools/carlu/src/test.c
+#lib/firmware/carl9170fw/tools/carlu/src/test.h
+#lib/firmware/carl9170fw/tools/carlu/src/tx.c
+#lib/firmware/carl9170fw/tools/carlu/src/usb.c
+#lib/firmware/carl9170fw/tools/carlu/src/usb.h
+#lib/firmware/carl9170fw/tools/include
+#lib/firmware/carl9170fw/tools/include/frame.h
+#lib/firmware/carl9170fw/tools/include/list.h
+#lib/firmware/carl9170fw/tools/lib
+#lib/firmware/carl9170fw/tools/lib/CMakeLists.txt
+#lib/firmware/carl9170fw/tools/lib/carlfw.c
+#lib/firmware/carl9170fw/tools/lib/carlfw.h
+#lib/firmware/carl9170fw/tools/src
+#lib/firmware/carl9170fw/tools/src/CMakeLists.txt
+#lib/firmware/carl9170fw/tools/src/checksum.c
+#lib/firmware/carl9170fw/tools/src/eeprom_fix.c
+#lib/firmware/carl9170fw/tools/src/fwinfo.c
+#lib/firmware/carl9170fw/tools/src/miniboot.c
+#lib/firmware/carl9170fw/tools/src/wol.c
+lib/firmware/cbfw-3.2.1.1.bin
+lib/firmware/cbfw-3.2.3.0.bin
 #lib/firmware/cis
 lib/firmware/cis/3CCFEM556.cis
 lib/firmware/cis/3CXEM556.cis
@@ -240,6 +394,12 @@ lib/firmware/cis/tamarack.cis
 #lib/firmware/configure
 #lib/firmware/cpia2
 lib/firmware/cpia2/stv0672_vp4.bin
+lib/firmware/ct2fw-3.2.1.1.bin
+lib/firmware/ct2fw-3.2.3.0.bin
+lib/firmware/ctefx.bin
+lib/firmware/ctfw-3.2.1.1.bin
+lib/firmware/ctfw-3.2.3.0.bin
+lib/firmware/ctspeq.bin
 #lib/firmware/cxgb3
 lib/firmware/cxgb3/ael2005_opt_edc.bin
 lib/firmware/cxgb3/ael2005_twx_edc.bin
@@ -252,8 +412,10 @@ lib/firmware/cxgb3/t3fw-7.10.0.bin
 lib/firmware/cxgb3/t3fw-7.12.0.bin
 lib/firmware/cxgb3/t3fw-7.4.0.bin
 #lib/firmware/cxgb4
-lib/firmware/cxgb4/t4fw-1.4.23.0.bin
+lib/firmware/cxgb4/t4fw-1.9.23.0.bin
 lib/firmware/cxgb4/t4fw.bin
+lib/firmware/cxgb4/t5fw-1.9.23.0.bin
+lib/firmware/cxgb4/t5fw.bin
 #lib/firmware/dabusb
 lib/firmware/dabusb/bitstream.bin
 lib/firmware/dabusb/firmware.fw
@@ -295,11 +457,24 @@ lib/firmware/ene-ub6250/sd_rdwr.bin
 lib/firmware/ess/maestro3_assp_kernel.fw
 lib/firmware/ess/maestro3_assp_minisrc.fw
 lib/firmware/f2255usb.bin
+#lib/firmware/go7007
+lib/firmware/go7007/go7007fw.bin
+lib/firmware/go7007/go7007tv.bin
+lib/firmware/go7007/lr192.fw
+lib/firmware/go7007/px-m402u.fw
+lib/firmware/go7007/px-tv402u.fw
+lib/firmware/go7007/s2250-1.fw
+lib/firmware/go7007/s2250-2.fw
+lib/firmware/go7007/wis-startrek.fw
 lib/firmware/htc_7010.fw
 lib/firmware/htc_9271.fw
 lib/firmware/i2400m-fw-usb-1.4.sbcf
 lib/firmware/i2400m-fw-usb-1.5.sbcf
 lib/firmware/i6050-fw-usb-1.5.sbcf
+#lib/firmware/intel
+lib/firmware/intel/ibt-hw-37.7.10-fw-1.0.2.3.d.bseq
+lib/firmware/intel/ibt-hw-37.7.10-fw-1.80.2.3.d.bseq
+lib/firmware/intel/ibt-hw-37.7.bseq
 lib/firmware/intelliport2.bin
 #lib/firmware/isci
 #lib/firmware/isci/Makefile
@@ -315,6 +490,7 @@ lib/firmware/iwlwifi-105-6.ucode
 lib/firmware/iwlwifi-135-6.ucode
 lib/firmware/iwlwifi-2000-6.ucode
 lib/firmware/iwlwifi-2030-6.ucode
+lib/firmware/iwlwifi-3160-7.ucode
 lib/firmware/iwlwifi-3945-2.ucode
 lib/firmware/iwlwifi-4965-2.ucode
 lib/firmware/iwlwifi-5000-1.ucode
@@ -328,6 +504,7 @@ lib/firmware/iwlwifi-6000g2b-5.ucode
 lib/firmware/iwlwifi-6000g2b-6.ucode
 lib/firmware/iwlwifi-6050-4.ucode
 lib/firmware/iwlwifi-6050-5.ucode
+lib/firmware/iwlwifi-7260-7.ucode
 #lib/firmware/kaweth
 lib/firmware/kaweth/new_code.bin
 lib/firmware/kaweth/new_code_fix.bin
@@ -385,8 +562,25 @@ lib/firmware/libertas/usb8682.bin
 #lib/firmware/matrox
 lib/firmware/matrox/g200_warp.fw
 lib/firmware/matrox/g400_warp.fw
+#lib/firmware/moxa
+lib/firmware/moxa/moxa-1250.fw
+lib/firmware/moxa/moxa-1251.fw
+lib/firmware/moxa/moxa-1410.fw
+lib/firmware/moxa/moxa-1450.fw
+lib/firmware/moxa/moxa-1451.fw
+lib/firmware/moxa/moxa-1613.fw
+lib/firmware/moxa/moxa-1618.fw
+lib/firmware/moxa/moxa-1653.fw
+lib/firmware/moxa/moxa-1658.fw
 #lib/firmware/mrvl
+lib/firmware/mrvl/pcie8897_uapsta.bin
+lib/firmware/mrvl/sd8688.bin
+lib/firmware/mrvl/sd8688_helper.bin
 lib/firmware/mrvl/sd8787_uapsta.bin
+lib/firmware/mrvl/sd8797_uapsta.bin
+lib/firmware/mrvl/sd8897_uapsta.bin
+lib/firmware/mrvl/usb8797_uapsta.bin
+lib/firmware/mt7650.bin
 lib/firmware/mts_cdma.fw
 lib/firmware/mts_edge.fw
 lib/firmware/mts_gsm.fw
@@ -396,7 +590,9 @@ lib/firmware/mts_mt9234zba.fw
 lib/firmware/mwl8k/fmimage_8366.fw
 lib/firmware/mwl8k/fmimage_8366_ap-1.fw
 lib/firmware/mwl8k/fmimage_8366_ap-2.fw
+lib/firmware/mwl8k/fmimage_8366_ap-3.fw
 lib/firmware/mwl8k/fmimage_8687.fw
+lib/firmware/mwl8k/fmimage_8764_ap-1.fw
 lib/firmware/mwl8k/helper_8366.fw
 lib/firmware/mwl8k/helper_8687.fw
 lib/firmware/myri10ge_eth_z8e.dat
@@ -429,23 +625,63 @@ lib/firmware/radeon/ARUBA_rlc.bin
 lib/firmware/radeon/BARTS_mc.bin
 lib/firmware/radeon/BARTS_me.bin
 lib/firmware/radeon/BARTS_pfp.bin
+lib/firmware/radeon/BARTS_smc.bin
+lib/firmware/radeon/BONAIRE_ce.bin
+lib/firmware/radeon/BONAIRE_mc.bin
+lib/firmware/radeon/BONAIRE_me.bin
+lib/firmware/radeon/BONAIRE_mec.bin
+lib/firmware/radeon/BONAIRE_pfp.bin
+lib/firmware/radeon/BONAIRE_rlc.bin
+lib/firmware/radeon/BONAIRE_sdma.bin
+lib/firmware/radeon/BONAIRE_smc.bin
+lib/firmware/radeon/BONAIRE_uvd.bin
 lib/firmware/radeon/BTC_rlc.bin
 lib/firmware/radeon/CAICOS_mc.bin
 lib/firmware/radeon/CAICOS_me.bin
 lib/firmware/radeon/CAICOS_pfp.bin
+lib/firmware/radeon/CAICOS_smc.bin
 lib/firmware/radeon/CAYMAN_mc.bin
 lib/firmware/radeon/CAYMAN_me.bin
 lib/firmware/radeon/CAYMAN_pfp.bin
 lib/firmware/radeon/CAYMAN_rlc.bin
+lib/firmware/radeon/CAYMAN_smc.bin
 lib/firmware/radeon/CEDAR_me.bin
 lib/firmware/radeon/CEDAR_pfp.bin
 lib/firmware/radeon/CEDAR_rlc.bin
+lib/firmware/radeon/CEDAR_smc.bin
 lib/firmware/radeon/CYPRESS_me.bin
 lib/firmware/radeon/CYPRESS_pfp.bin
 lib/firmware/radeon/CYPRESS_rlc.bin
+lib/firmware/radeon/CYPRESS_smc.bin
+lib/firmware/radeon/CYPRESS_uvd.bin
+lib/firmware/radeon/HAINAN_ce.bin
+lib/firmware/radeon/HAINAN_mc.bin
+lib/firmware/radeon/HAINAN_me.bin
+lib/firmware/radeon/HAINAN_pfp.bin
+lib/firmware/radeon/HAINAN_rlc.bin
+lib/firmware/radeon/HAINAN_smc.bin
 lib/firmware/radeon/JUNIPER_me.bin
 lib/firmware/radeon/JUNIPER_pfp.bin
 lib/firmware/radeon/JUNIPER_rlc.bin
+lib/firmware/radeon/JUNIPER_smc.bin
+lib/firmware/radeon/KABINI_ce.bin
+lib/firmware/radeon/KABINI_me.bin
+lib/firmware/radeon/KABINI_mec.bin
+lib/firmware/radeon/KABINI_pfp.bin
+lib/firmware/radeon/KABINI_rlc.bin
+lib/firmware/radeon/KABINI_sdma.bin
+lib/firmware/radeon/KAVERI_ce.bin
+lib/firmware/radeon/KAVERI_me.bin
+lib/firmware/radeon/KAVERI_mec.bin
+lib/firmware/radeon/KAVERI_pfp.bin
+lib/firmware/radeon/KAVERI_rlc.bin
+lib/firmware/radeon/KAVERI_sdma.bin
+lib/firmware/radeon/OLAND_ce.bin
+lib/firmware/radeon/OLAND_mc.bin
+lib/firmware/radeon/OLAND_me.bin
+lib/firmware/radeon/OLAND_pfp.bin
+lib/firmware/radeon/OLAND_rlc.bin
+lib/firmware/radeon/OLAND_smc.bin
 lib/firmware/radeon/PALM_me.bin
 lib/firmware/radeon/PALM_pfp.bin
 lib/firmware/radeon/PITCAIRN_ce.bin
@@ -453,6 +689,7 @@ lib/firmware/radeon/PITCAIRN_mc.bin
 lib/firmware/radeon/PITCAIRN_me.bin
 lib/firmware/radeon/PITCAIRN_pfp.bin
 lib/firmware/radeon/PITCAIRN_rlc.bin
+lib/firmware/radeon/PITCAIRN_smc.bin
 lib/firmware/radeon/R100_cp.bin
 lib/firmware/radeon/R200_cp.bin
 lib/firmware/radeon/R300_cp.bin
@@ -465,6 +702,7 @@ lib/firmware/radeon/R700_rlc.bin
 lib/firmware/radeon/REDWOOD_me.bin
 lib/firmware/radeon/REDWOOD_pfp.bin
 lib/firmware/radeon/REDWOOD_rlc.bin
+lib/firmware/radeon/REDWOOD_smc.bin
 lib/firmware/radeon/RS600_cp.bin
 lib/firmware/radeon/RS690_cp.bin
 lib/firmware/radeon/RS780_me.bin
@@ -481,28 +719,39 @@ lib/firmware/radeon/RV670_me.bin
 lib/firmware/radeon/RV670_pfp.bin
 lib/firmware/radeon/RV710_me.bin
 lib/firmware/radeon/RV710_pfp.bin
+lib/firmware/radeon/RV710_smc.bin
+lib/firmware/radeon/RV710_uvd.bin
 lib/firmware/radeon/RV730_me.bin
 lib/firmware/radeon/RV730_pfp.bin
+lib/firmware/radeon/RV730_smc.bin
+lib/firmware/radeon/RV740_smc.bin
 lib/firmware/radeon/RV770_me.bin
 lib/firmware/radeon/RV770_pfp.bin
+lib/firmware/radeon/RV770_smc.bin
 lib/firmware/radeon/SUMO2_me.bin
 lib/firmware/radeon/SUMO2_pfp.bin
 lib/firmware/radeon/SUMO_me.bin
 lib/firmware/radeon/SUMO_pfp.bin
 lib/firmware/radeon/SUMO_rlc.bin
+lib/firmware/radeon/SUMO_uvd.bin
 lib/firmware/radeon/TAHITI_ce.bin
 lib/firmware/radeon/TAHITI_mc.bin
 lib/firmware/radeon/TAHITI_me.bin
 lib/firmware/radeon/TAHITI_pfp.bin
 lib/firmware/radeon/TAHITI_rlc.bin
+lib/firmware/radeon/TAHITI_smc.bin
+lib/firmware/radeon/TAHITI_uvd.bin
 lib/firmware/radeon/TURKS_mc.bin
 lib/firmware/radeon/TURKS_me.bin
 lib/firmware/radeon/TURKS_pfp.bin
+lib/firmware/radeon/TURKS_smc.bin
 lib/firmware/radeon/VERDE_ce.bin
 lib/firmware/radeon/VERDE_mc.bin
 lib/firmware/radeon/VERDE_me.bin
 lib/firmware/radeon/VERDE_pfp.bin
 lib/firmware/radeon/VERDE_rlc.bin
+lib/firmware/radeon/VERDE_smc.bin
+lib/firmware/rp2.fw
 lib/firmware/rt2561.bin
 lib/firmware/rt2561s.bin
 lib/firmware/rt2661.bin
@@ -516,6 +765,7 @@ lib/firmware/rt73.bin
 #lib/firmware/rtl_nic
 lib/firmware/rtl_nic/rtl8105e-1.fw
 lib/firmware/rtl_nic/rtl8106e-1.fw
+lib/firmware/rtl_nic/rtl8106e-2.fw
 lib/firmware/rtl_nic/rtl8168d-1.fw
 lib/firmware/rtl_nic/rtl8168d-2.fw
 lib/firmware/rtl_nic/rtl8168e-1.fw
@@ -524,13 +774,21 @@ lib/firmware/rtl_nic/rtl8168e-3.fw
 lib/firmware/rtl_nic/rtl8168f-1.fw
 lib/firmware/rtl_nic/rtl8168f-2.fw
 lib/firmware/rtl_nic/rtl8168g-1.fw
+lib/firmware/rtl_nic/rtl8168g-2.fw
+lib/firmware/rtl_nic/rtl8168g-3.fw
 lib/firmware/rtl_nic/rtl8402-1.fw
 lib/firmware/rtl_nic/rtl8411-1.fw
+lib/firmware/rtl_nic/rtl8411-2.fw
 #lib/firmware/rtlwifi
+lib/firmware/rtlwifi/rtl8188efw.bin
+lib/firmware/rtlwifi/rtl8188eufw.bin
 lib/firmware/rtlwifi/rtl8192cfw.bin
 lib/firmware/rtlwifi/rtl8192cfwU.bin
 lib/firmware/rtlwifi/rtl8192cfwU_B.bin
 lib/firmware/rtlwifi/rtl8192cufw.bin
+lib/firmware/rtlwifi/rtl8192cufw_A.bin
+lib/firmware/rtlwifi/rtl8192cufw_B.bin
+lib/firmware/rtlwifi/rtl8192cufw_TMSC.bin
 lib/firmware/rtlwifi/rtl8192defw.bin
 lib/firmware/rtlwifi/rtl8192sefw.bin
 lib/firmware/rtlwifi/rtl8712u.bin
@@ -538,12 +796,16 @@ lib/firmware/rtlwifi/rtl8723fw.bin
 lib/firmware/rtlwifi/rtl8723fw_B.bin
 lib/firmware/s2250.fw
 lib/firmware/s2250_loader.fw
+lib/firmware/s5p-mfc
+lib/firmware/s5p-mfc/s5p-mfc-v6.fw
+lib/firmware/s5p-mfc/s5p-mfc.fw
 #lib/firmware/sb16
 lib/firmware/sb16/alaw_main.csp
 lib/firmware/sb16/ima_adpcm_capture.csp
 lib/firmware/sb16/ima_adpcm_init.csp
 lib/firmware/sb16/ima_adpcm_playback.csp
 lib/firmware/sb16/mulaw_main.csp
+lib/firmware/sdd_sagrad_1091_1098.bin
 #lib/firmware/slicoss
 lib/firmware/slicoss/gbdownload.sys
 lib/firmware/slicoss/gbrcvucode.sys
@@ -559,6 +821,8 @@ lib/firmware/sxg/saharadownloadB.sys
 lib/firmware/tehuti/bdx.bin
 #lib/firmware/ti-connectivity
 lib/firmware/ti-connectivity/TIInit_7.2.31.bts
+lib/firmware/ti-connectivity/wl1251-fw.bin
+lib/firmware/ti-connectivity/wl1251-nvs.bin
 lib/firmware/ti-connectivity/wl1271-fw-2.bin
 lib/firmware/ti-connectivity/wl1271-fw-ap.bin
 lib/firmware/ti-connectivity/wl1271-fw.bin
@@ -584,11 +848,14 @@ lib/firmware/ti-connectivity/wl128x-fw-plt-3.bin
 lib/firmware/ti-connectivity/wl128x-fw.bin
 lib/firmware/ti-connectivity/wl128x-nvs.bin
 lib/firmware/ti-connectivity/wl12xx-nvs.bin
+lib/firmware/ti-connectivity/wl18xx-conf.bin
+lib/firmware/ti-connectivity/wl18xx-fw-2.bin
 lib/firmware/ti-connectivity/wl18xx-fw.bin
 lib/firmware/ti_3410.fw
 lib/firmware/ti_5052.fw
 #lib/firmware/tigon
 lib/firmware/tigon/tg3.bin
+lib/firmware/tigon/tg357766.bin
 lib/firmware/tigon/tg3_tso.bin
 lib/firmware/tigon/tg3_tso5.bin
 lib/firmware/tlg2300_firmware.bin
@@ -635,7 +902,6 @@ lib/firmware/v4l-cx23418-apu.fw
 lib/firmware/v4l-cx23418-cpu.fw
 lib/firmware/v4l-cx23418-dig.fw
 lib/firmware/v4l-cx23885-avcore-01.fw
-lib/firmware/v4l-cx23885-enc.fw
 lib/firmware/v4l-cx25840.fw
 #lib/firmware/vicam
 lib/firmware/vicam/firmware.fw
@@ -645,6 +911,7 @@ lib/firmware/vxge/X3fw-pxe.ncf
 lib/firmware/vxge/X3fw.ncf
 lib/firmware/whiteheat.fw
 lib/firmware/whiteheat_loader.fw
+lib/firmware/wsm_22.bin
 #lib/firmware/yam
 lib/firmware/yam/1200.bin
 lib/firmware/yam/9600.bin
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 d2cf7102c14c1b5c27a8baa1f23df9fba6fd3033..1ab4dec5f1aa5053d5a8a96d798f08cf7c95e870 100644 (file)
@@ -3,6 +3,7 @@ usr/local/bin/addonctrl
 usr/local/bin/backupctrl
 #usr/local/bin/clamavctrl
 usr/local/bin/dhcpctrl
+usr/local/bin/dnsmasqctrl
 usr/local/bin/extrahdctrl
 usr/local/bin/fireinfoctrl
 usr/local/bin/getconntracktable
@@ -14,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
@@ -22,18 +24,17 @@ 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
 usr/local/bin/sshctrl
 usr/local/bin/syslogdctrl
 usr/local/bin/timectrl
+#usr/local/bin/torctrl
 #usr/local/bin/tripwirectrl
 usr/local/bin/updxlratorctrl
 usr/local/bin/upnpctrl
 usr/local/bin/urlfilterctrl
+usr/local/bin/wirelessclient
 usr/local/bin/wirelessctrl
 #usr/local/bin/wlanapctrl
diff --git a/config/rootfiles/common/module-init-tools b/config/rootfiles/common/module-init-tools
deleted file mode 100644 (file)
index 4cffddb..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-bin/lsmod
-sbin/depmod
-sbin/generate-modprobe.conf
-sbin/insmod
-sbin/insmod.static
-sbin/modinfo
-sbin/modprobe
-sbin/rmmod
-#share
-#share/man
-#share/man/man5
-#share/man/man5/depmod.conf.5
-#share/man/man5/modprobe.conf.5
-#share/man/man5/modules.dep.5
-#share/man/man8
-#share/man/man8/depmod.8
-#share/man/man8/insmod.8
-#share/man/man8/lsmod.8
-#share/man/man8/modinfo.8
-#share/man/man8/modprobe.8
-#share/man/man8/rmmod.8
diff --git a/config/rootfiles/common/mpage b/config/rootfiles/common/mpage
new file mode 100644 (file)
index 0000000..9df3083
--- /dev/null
@@ -0,0 +1,9 @@
+#usr/bin/mpage
+#usr/man/man1/mpage.1
+#usr/share/mpage
+#usr/share/mpage/CP850.PC
+#usr/share/mpage/ISO+STD+OTH
+#usr/share/mpage/ISO-8859.1
+#usr/share/mpage/ISO-8859.15
+#usr/share/mpage/ISO-Latin.1
+#usr/share/mpage/ISO-Latin.2
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 3cf72ac400dd22ec0d5745cd26b6c5ceed6e3a7d..4860b2f0a8e8e103f05da8787a22979b4fb2b061 100644 (file)
@@ -1,9 +1,4 @@
-bin/dnsdomainname
-bin/domainname
-bin/hostname
 bin/netstat
-#bin/nisdomainname
-#bin/ypdomainname
 sbin/arp
 sbin/ifconfig
 #sbin/ipmaddr
@@ -14,10 +9,6 @@ sbin/nameif
 sbin/rarp
 sbin/route
 sbin/slattach
-#usr/share/man/man1/dnsdomainname.1
-#usr/share/man/man1/domainname.1
-#usr/share/man/man1/nisdomainname.1
-#usr/share/man/man1/ypdomainname.1
 #usr/share/man/man5/ethers.5
 #usr/share/man/man8/arp.8
 #usr/share/man/man8/ifconfig.8
index 5f21e830f4ad9a4d59c9b44c776b7feae4c5a500..883d4ff7ded74e3c1a95bd491575dcc0fbe9e557 100644 (file)
@@ -1,24 +1,24 @@
 etc/ntp
 etc/ntp.conf
+etc/rc.d/rc0.d/K46ntpd
+etc/rc.d/rc3.d/S26ntpd
+etc/rc.d/rc6.d/K46ntpd
+usr/bin/ntp-keygen
+usr/bin/ntp-wait
 usr/bin/ntpd
 usr/bin/ntpdate
 usr/bin/ntpdc
+usr/bin/ntpq
+usr/bin/ntptime
+usr/bin/ntptrace
 usr/bin/sntp
-#usr/man/man1/ntp-keygen.1
-#usr/man/man1/ntpd.1
-#usr/man/man1/ntpdc.1
-#usr/man/man1/ntpdsim.1
-#usr/man/man1/ntpq.1
-#usr/man/man1/sntp.1
-usr/sbin/ntp-keygen
-usr/sbin/ntp-wait
-usr/sbin/ntpq
-usr/sbin/ntptime
-usr/sbin/ntptrace
-usr/sbin/tickadj
-etc/rc.d/rc0.d/K46ntpd
-etc/rc.d/rc6.d/K46ntpd
-etc/rc.d/rc3.d/S26ntpd
+usr/bin/tickadj
+#usr/share/man/man1/ntp-keygen.1
+#usr/share/man/man1/ntpd.1
+#usr/share/man/man1/ntpdc.1
+#usr/share/man/man1/ntpq.1
+#usr/share/man/man1/ntpsnmpd.1
+#usr/share/man/man1/sntp.1
 var/ipfire/time/counter.conf
 var/ipfire/time/enable
 var/ipfire/time/settime.conf
index 6737b6cca37d08fecf477d2ca289c07e24e68871..1b6ded3bab042a1f13f3542c476defc36f6aa569 100644 (file)
@@ -5,6 +5,8 @@ etc/ssh/ssh_config
 #etc/ssh/ssh_host_dsa_key.pub
 #etc/ssh/ssh_host_ecdsa_key
 #etc/ssh/ssh_host_ecdsa_key.pub
+#etc/ssh/ssh_host_ed25519_key
+#etc/ssh/ssh_host_ed25519_key.pub
 #etc/ssh/ssh_host_key
 #etc/ssh/ssh_host_key.pub
 #etc/ssh/ssh_host_rsa_key
index bc1ac49f0b86720f71602acacfb0d6292dff825b..ec92d1cbcacb1199e4ae1d4bd21637a570059a6c 100644 (file)
@@ -7,6 +7,7 @@
 #etc/ssl/misc/c_info
 #etc/ssl/misc/c_issuer
 #etc/ssl/misc/c_name
+#etc/ssl/misc/tsget
 etc/ssl/openssl.cnf
 #etc/ssl/private
 usr/bin/c_rehash
@@ -20,7 +21,10 @@ usr/bin/openssl
 #usr/include/openssl/blowfish.h
 #usr/include/openssl/bn.h
 #usr/include/openssl/buffer.h
+#usr/include/openssl/camellia.h
 #usr/include/openssl/cast.h
+#usr/include/openssl/cmac.h
+#usr/include/openssl/cms.h
 #usr/include/openssl/comp.h
 #usr/include/openssl/conf.h
 #usr/include/openssl/conf_api.h
@@ -40,13 +44,13 @@ usr/bin/openssl
 #usr/include/openssl/err.h
 #usr/include/openssl/evp.h
 #usr/include/openssl/hmac.h
-#usr/include/openssl/idea.h
 #usr/include/openssl/krb5_asn.h
 #usr/include/openssl/kssl.h
 #usr/include/openssl/lhash.h
 #usr/include/openssl/md2.h
 #usr/include/openssl/md4.h
 #usr/include/openssl/md5.h
+#usr/include/openssl/modes.h
 #usr/include/openssl/obj_mac.h
 #usr/include/openssl/objects.h
 #usr/include/openssl/ocsp.h
@@ -57,7 +61,6 @@ usr/bin/openssl
 #usr/include/openssl/pem2.h
 #usr/include/openssl/pkcs12.h
 #usr/include/openssl/pkcs7.h
-#usr/include/openssl/pq_compat.h
 #usr/include/openssl/pqueue.h
 #usr/include/openssl/rand.h
 #usr/include/openssl/rc2.h
@@ -65,1113 +68,44 @@ usr/bin/openssl
 #usr/include/openssl/ripemd.h
 #usr/include/openssl/rsa.h
 #usr/include/openssl/safestack.h
+#usr/include/openssl/seed.h
 #usr/include/openssl/sha.h
+#usr/include/openssl/srtp.h
 #usr/include/openssl/ssl.h
 #usr/include/openssl/ssl2.h
 #usr/include/openssl/ssl23.h
 #usr/include/openssl/ssl3.h
 #usr/include/openssl/stack.h
-#usr/include/openssl/store.h
 #usr/include/openssl/symhacks.h
 #usr/include/openssl/tls1.h
-#usr/include/openssl/tmdiff.h
+#usr/include/openssl/ts.h
 #usr/include/openssl/txt_db.h
 #usr/include/openssl/ui.h
 #usr/include/openssl/ui_compat.h
+#usr/include/openssl/whrlpool.h
 #usr/include/openssl/x509.h
 #usr/include/openssl/x509_vfy.h
 #usr/include/openssl/x509v3.h
-#usr/lib/engines
-#usr/lib/engines/lib4758cca.so
-#usr/lib/engines/libaep.so
-#usr/lib/engines/libatalla.so
-#usr/lib/engines/libcapi.so
-#usr/lib/engines/libchil.so
-#usr/lib/engines/libcswift.so
-#usr/lib/engines/libgmp.so
-#usr/lib/engines/libnuron.so
-#usr/lib/engines/libsureware.so
-#usr/lib/engines/libubsec.so
 #usr/lib/libcrypto.a
 usr/lib/libcrypto.so
-usr/lib/libcrypto.so.0.9.8
+usr/lib/libcrypto.so.10
 #usr/lib/libssl.a
 usr/lib/libssl.so
-usr/lib/libssl.so.0.9.8
+usr/lib/libssl.so.10
+#usr/lib/openssl
+usr/lib/openssl/engines
+#usr/lib/openssl/engines/lib4758cca.so
+#usr/lib/openssl/engines/libaep.so
+#usr/lib/openssl/engines/libatalla.so
+#usr/lib/openssl/engines/libcapi.so
+#usr/lib/openssl/engines/libchil.so
+#usr/lib/openssl/engines/libcswift.so
+#usr/lib/openssl/engines/libgmp.so
+#usr/lib/openssl/engines/libgost.so
+#usr/lib/openssl/engines/libnuron.so
+#usr/lib/openssl/engines/libpadlock.so
+#usr/lib/openssl/engines/libsureware.so
+#usr/lib/openssl/engines/libubsec.so
 #usr/lib/pkgconfig/libcrypto.pc
 #usr/lib/pkgconfig/libssl.pc
 #usr/lib/pkgconfig/openssl.pc
-#usr/share/man/man1/CA.pl.1
-#usr/share/man/man1/asn1parse.1
-#usr/share/man/man1/ca.1
-#usr/share/man/man1/ciphers.1
-#usr/share/man/man1/crl.1
-#usr/share/man/man1/crl2pkcs7.1
-#usr/share/man/man1/dgst.1
-#usr/share/man/man1/dhparam.1
-#usr/share/man/man1/dsa.1
-#usr/share/man/man1/dsaparam.1
-#usr/share/man/man1/ec.1
-#usr/share/man/man1/ecparam.1
-#usr/share/man/man1/enc.1
-#usr/share/man/man1/errstr.1
-#usr/share/man/man1/gendsa.1
-#usr/share/man/man1/genrsa.1
-#usr/share/man/man1/md2.1
-#usr/share/man/man1/md4.1
-#usr/share/man/man1/md5.1
-#usr/share/man/man1/mdc2.1
-#usr/share/man/man1/nseq.1
-#usr/share/man/man1/ocsp.1
-#usr/share/man/man1/openssl.1
-#usr/share/man/man1/passwd.1
-#usr/share/man/man1/pkcs12.1
-#usr/share/man/man1/pkcs7.1
-#usr/share/man/man1/pkcs8.1
-#usr/share/man/man1/rand.1
-#usr/share/man/man1/req.1
-#usr/share/man/man1/ripemd160.1
-#usr/share/man/man1/rsa.1
-#usr/share/man/man1/rsautl.1
-#usr/share/man/man1/s_client.1
-#usr/share/man/man1/s_server.1
-#usr/share/man/man1/s_time.1
-#usr/share/man/man1/sess_id.1
-#usr/share/man/man1/sha.1
-#usr/share/man/man1/sha1.1
-#usr/share/man/man1/smime.1
-#usr/share/man/man1/speed.1
-#usr/share/man/man1/spkac.1
-#usr/share/man/man1/verify.1
-#usr/share/man/man1/version.1
-#usr/share/man/man1/x509.1
-#usr/share/man/man3/ASN1_OBJECT_free.3
-#usr/share/man/man3/ASN1_OBJECT_new.3
-#usr/share/man/man3/ASN1_STRING_cmp.3
-#usr/share/man/man3/ASN1_STRING_data.3
-#usr/share/man/man3/ASN1_STRING_dup.3
-#usr/share/man/man3/ASN1_STRING_free.3
-#usr/share/man/man3/ASN1_STRING_length.3
-#usr/share/man/man3/ASN1_STRING_length_set.3
-#usr/share/man/man3/ASN1_STRING_new.3
-#usr/share/man/man3/ASN1_STRING_print_ex.3
-#usr/share/man/man3/ASN1_STRING_print_ex_fp.3
-#usr/share/man/man3/ASN1_STRING_set.3
-#usr/share/man/man3/ASN1_STRING_type.3
-#usr/share/man/man3/ASN1_STRING_type_new.3
-#usr/share/man/man3/ASN1_generate_nconf.3
-#usr/share/man/man3/ASN1_generate_v3.3
-#usr/share/man/man3/BF_cbc_encrypt.3
-#usr/share/man/man3/BF_cfb64_encrypt.3
-#usr/share/man/man3/BF_decrypt.3
-#usr/share/man/man3/BF_ecb_encrypt.3
-#usr/share/man/man3/BF_encrypt.3
-#usr/share/man/man3/BF_ofb64_encrypt.3
-#usr/share/man/man3/BF_options.3
-#usr/share/man/man3/BF_set_key.3
-#usr/share/man/man3/BIO_append_filename.3
-#usr/share/man/man3/BIO_callback_ctrl.3
-#usr/share/man/man3/BIO_ctrl.3
-#usr/share/man/man3/BIO_ctrl_get_read_request.3
-#usr/share/man/man3/BIO_ctrl_get_write_guarantee.3
-#usr/share/man/man3/BIO_ctrl_pending.3
-#usr/share/man/man3/BIO_ctrl_reset_read_request.3
-#usr/share/man/man3/BIO_ctrl_wpending.3
-#usr/share/man/man3/BIO_debug_callback.3
-#usr/share/man/man3/BIO_destroy_bio_pair.3
-#usr/share/man/man3/BIO_do_accept.3
-#usr/share/man/man3/BIO_do_connect.3
-#usr/share/man/man3/BIO_eof.3
-#usr/share/man/man3/BIO_f_base64.3
-#usr/share/man/man3/BIO_f_buffer.3
-#usr/share/man/man3/BIO_f_cipher.3
-#usr/share/man/man3/BIO_f_md.3
-#usr/share/man/man3/BIO_f_null.3
-#usr/share/man/man3/BIO_f_ssl.3
-#usr/share/man/man3/BIO_find_type.3
-#usr/share/man/man3/BIO_flush.3
-#usr/share/man/man3/BIO_free.3
-#usr/share/man/man3/BIO_free_all.3
-#usr/share/man/man3/BIO_get_accept_port.3
-#usr/share/man/man3/BIO_get_bind_mode.3
-#usr/share/man/man3/BIO_get_callback.3
-#usr/share/man/man3/BIO_get_callback_arg.3
-#usr/share/man/man3/BIO_get_cipher_ctx.3
-#usr/share/man/man3/BIO_get_cipher_status.3
-#usr/share/man/man3/BIO_get_close.3
-#usr/share/man/man3/BIO_get_conn_hostname.3
-#usr/share/man/man3/BIO_get_conn_int_port.3
-#usr/share/man/man3/BIO_get_conn_ip.3
-#usr/share/man/man3/BIO_get_conn_port.3
-#usr/share/man/man3/BIO_get_fd.3
-#usr/share/man/man3/BIO_get_fp.3
-#usr/share/man/man3/BIO_get_info_callback.3
-#usr/share/man/man3/BIO_get_md.3
-#usr/share/man/man3/BIO_get_md_ctx.3
-#usr/share/man/man3/BIO_get_mem_data.3
-#usr/share/man/man3/BIO_get_mem_ptr.3
-#usr/share/man/man3/BIO_get_num_renegotiates.3
-#usr/share/man/man3/BIO_get_read_request.3
-#usr/share/man/man3/BIO_get_retry_BIO.3
-#usr/share/man/man3/BIO_get_retry_reason.3
-#usr/share/man/man3/BIO_get_ssl.3
-#usr/share/man/man3/BIO_get_write_buf_size.3
-#usr/share/man/man3/BIO_get_write_guarantee.3
-#usr/share/man/man3/BIO_gets.3
-#usr/share/man/man3/BIO_int_ctrl.3
-#usr/share/man/man3/BIO_make_bio_pair.3
-#usr/share/man/man3/BIO_new.3
-#usr/share/man/man3/BIO_new_bio_pair.3
-#usr/share/man/man3/BIO_new_buffer_ssl_connect.3
-#usr/share/man/man3/BIO_new_fd.3
-#usr/share/man/man3/BIO_new_file.3
-#usr/share/man/man3/BIO_new_fp.3
-#usr/share/man/man3/BIO_new_mem_buf.3
-#usr/share/man/man3/BIO_new_socket.3
-#usr/share/man/man3/BIO_new_ssl.3
-#usr/share/man/man3/BIO_new_ssl_connect.3
-#usr/share/man/man3/BIO_next.3
-#usr/share/man/man3/BIO_pending.3
-#usr/share/man/man3/BIO_pop.3
-#usr/share/man/man3/BIO_ptr_ctrl.3
-#usr/share/man/man3/BIO_push.3
-#usr/share/man/man3/BIO_puts.3
-#usr/share/man/man3/BIO_read.3
-#usr/share/man/man3/BIO_read_filename.3
-#usr/share/man/man3/BIO_reset.3
-#usr/share/man/man3/BIO_retry_type.3
-#usr/share/man/man3/BIO_rw_filename.3
-#usr/share/man/man3/BIO_s_accept.3
-#usr/share/man/man3/BIO_s_bio.3
-#usr/share/man/man3/BIO_s_connect.3
-#usr/share/man/man3/BIO_s_fd.3
-#usr/share/man/man3/BIO_s_file.3
-#usr/share/man/man3/BIO_s_mem.3
-#usr/share/man/man3/BIO_s_null.3
-#usr/share/man/man3/BIO_s_socket.3
-#usr/share/man/man3/BIO_seek.3
-#usr/share/man/man3/BIO_set.3
-#usr/share/man/man3/BIO_set_accept_bios.3
-#usr/share/man/man3/BIO_set_accept_port.3
-#usr/share/man/man3/BIO_set_bind_mode.3
-#usr/share/man/man3/BIO_set_callback.3
-#usr/share/man/man3/BIO_set_callback_arg.3
-#usr/share/man/man3/BIO_set_cipher.3
-#usr/share/man/man3/BIO_set_close.3
-#usr/share/man/man3/BIO_set_conn_hostname.3
-#usr/share/man/man3/BIO_set_conn_int_port.3
-#usr/share/man/man3/BIO_set_conn_ip.3
-#usr/share/man/man3/BIO_set_conn_port.3
-#usr/share/man/man3/BIO_set_fd.3
-#usr/share/man/man3/BIO_set_fp.3
-#usr/share/man/man3/BIO_set_info_callback.3
-#usr/share/man/man3/BIO_set_md.3
-#usr/share/man/man3/BIO_set_mem_buf.3
-#usr/share/man/man3/BIO_set_mem_eof_return.3
-#usr/share/man/man3/BIO_set_nbio.3
-#usr/share/man/man3/BIO_set_nbio_accept.3
-#usr/share/man/man3/BIO_set_ssl.3
-#usr/share/man/man3/BIO_set_ssl_mode.3
-#usr/share/man/man3/BIO_set_ssl_renegotiate_bytes.3
-#usr/share/man/man3/BIO_set_ssl_renegotiate_timeout.3
-#usr/share/man/man3/BIO_set_write_buf_size.3
-#usr/share/man/man3/BIO_should_io_special.3
-#usr/share/man/man3/BIO_should_read.3
-#usr/share/man/man3/BIO_should_retry.3
-#usr/share/man/man3/BIO_should_write.3
-#usr/share/man/man3/BIO_shutdown_wr.3
-#usr/share/man/man3/BIO_ssl_copy_session_id.3
-#usr/share/man/man3/BIO_ssl_shutdown.3
-#usr/share/man/man3/BIO_tell.3
-#usr/share/man/man3/BIO_vfree.3
-#usr/share/man/man3/BIO_wpending.3
-#usr/share/man/man3/BIO_write.3
-#usr/share/man/man3/BIO_write_filename.3
-#usr/share/man/man3/BN_BLINDING_convert.3
-#usr/share/man/man3/BN_BLINDING_convert_ex.3
-#usr/share/man/man3/BN_BLINDING_create_param.3
-#usr/share/man/man3/BN_BLINDING_free.3
-#usr/share/man/man3/BN_BLINDING_get_flags.3
-#usr/share/man/man3/BN_BLINDING_get_thread_id.3
-#usr/share/man/man3/BN_BLINDING_invert.3
-#usr/share/man/man3/BN_BLINDING_invert_ex.3
-#usr/share/man/man3/BN_BLINDING_new.3
-#usr/share/man/man3/BN_BLINDING_set_flags.3
-#usr/share/man/man3/BN_BLINDING_set_thread_id.3
-#usr/share/man/man3/BN_BLINDING_update.3
-#usr/share/man/man3/BN_CTX_end.3
-#usr/share/man/man3/BN_CTX_free.3
-#usr/share/man/man3/BN_CTX_get.3
-#usr/share/man/man3/BN_CTX_init.3
-#usr/share/man/man3/BN_CTX_new.3
-#usr/share/man/man3/BN_CTX_start.3
-#usr/share/man/man3/BN_MONT_CTX_copy.3
-#usr/share/man/man3/BN_MONT_CTX_free.3
-#usr/share/man/man3/BN_MONT_CTX_init.3
-#usr/share/man/man3/BN_MONT_CTX_new.3
-#usr/share/man/man3/BN_MONT_CTX_set.3
-#usr/share/man/man3/BN_RECP_CTX_free.3
-#usr/share/man/man3/BN_RECP_CTX_init.3
-#usr/share/man/man3/BN_RECP_CTX_new.3
-#usr/share/man/man3/BN_RECP_CTX_set.3
-#usr/share/man/man3/BN_add.3
-#usr/share/man/man3/BN_add_word.3
-#usr/share/man/man3/BN_bin2bn.3
-#usr/share/man/man3/BN_bn2bin.3
-#usr/share/man/man3/BN_bn2dec.3
-#usr/share/man/man3/BN_bn2hex.3
-#usr/share/man/man3/BN_bn2mpi.3
-#usr/share/man/man3/BN_clear.3
-#usr/share/man/man3/BN_clear_bit.3
-#usr/share/man/man3/BN_clear_free.3
-#usr/share/man/man3/BN_cmp.3
-#usr/share/man/man3/BN_copy.3
-#usr/share/man/man3/BN_dec2bn.3
-#usr/share/man/man3/BN_div.3
-#usr/share/man/man3/BN_div_recp.3
-#usr/share/man/man3/BN_div_word.3
-#usr/share/man/man3/BN_dup.3
-#usr/share/man/man3/BN_exp.3
-#usr/share/man/man3/BN_free.3
-#usr/share/man/man3/BN_from_montgomery.3
-#usr/share/man/man3/BN_gcd.3
-#usr/share/man/man3/BN_generate_prime.3
-#usr/share/man/man3/BN_get_word.3
-#usr/share/man/man3/BN_hex2bn.3
-#usr/share/man/man3/BN_init.3
-#usr/share/man/man3/BN_is_bit_set.3
-#usr/share/man/man3/BN_is_odd.3
-#usr/share/man/man3/BN_is_one.3
-#usr/share/man/man3/BN_is_prime.3
-#usr/share/man/man3/BN_is_prime_fasttest.3
-#usr/share/man/man3/BN_is_word.3
-#usr/share/man/man3/BN_is_zero.3
-#usr/share/man/man3/BN_lshift.3
-#usr/share/man/man3/BN_lshift1.3
-#usr/share/man/man3/BN_mask_bits.3
-#usr/share/man/man3/BN_mod.3
-#usr/share/man/man3/BN_mod_add.3
-#usr/share/man/man3/BN_mod_exp.3
-#usr/share/man/man3/BN_mod_inverse.3
-#usr/share/man/man3/BN_mod_mul.3
-#usr/share/man/man3/BN_mod_mul_montgomery.3
-#usr/share/man/man3/BN_mod_mul_reciprocal.3
-#usr/share/man/man3/BN_mod_sqr.3
-#usr/share/man/man3/BN_mod_sub.3
-#usr/share/man/man3/BN_mod_word.3
-#usr/share/man/man3/BN_mpi2bn.3
-#usr/share/man/man3/BN_mul.3
-#usr/share/man/man3/BN_mul_word.3
-#usr/share/man/man3/BN_new.3
-#usr/share/man/man3/BN_nnmod.3
-#usr/share/man/man3/BN_num_bits.3
-#usr/share/man/man3/BN_num_bits_word.3
-#usr/share/man/man3/BN_num_bytes.3
-#usr/share/man/man3/BN_one.3
-#usr/share/man/man3/BN_print.3
-#usr/share/man/man3/BN_print_fp.3
-#usr/share/man/man3/BN_pseudo_rand.3
-#usr/share/man/man3/BN_rand.3
-#usr/share/man/man3/BN_rshift.3
-#usr/share/man/man3/BN_rshift1.3
-#usr/share/man/man3/BN_set_bit.3
-#usr/share/man/man3/BN_set_word.3
-#usr/share/man/man3/BN_sqr.3
-#usr/share/man/man3/BN_sub.3
-#usr/share/man/man3/BN_sub_word.3
-#usr/share/man/man3/BN_swap.3
-#usr/share/man/man3/BN_to_montgomery.3
-#usr/share/man/man3/BN_ucmp.3
-#usr/share/man/man3/BN_value_one.3
-#usr/share/man/man3/BN_zero.3
-#usr/share/man/man3/BUF_MEM_free.3
-#usr/share/man/man3/BUF_MEM_grow.3
-#usr/share/man/man3/BUF_MEM_new.3
-#usr/share/man/man3/BUF_strdup.3
-#usr/share/man/man3/CONF_modules_finish.3
-#usr/share/man/man3/CONF_modules_free.3
-#usr/share/man/man3/CONF_modules_load.3
-#usr/share/man/man3/CONF_modules_load_file.3
-#usr/share/man/man3/CONF_modules_unload.3
-#usr/share/man/man3/CRYPTO_destroy_dynlockid.3
-#usr/share/man/man3/CRYPTO_get_ex_data.3
-#usr/share/man/man3/CRYPTO_get_new_dynlockid.3
-#usr/share/man/man3/CRYPTO_lock.3
-#usr/share/man/man3/CRYPTO_num_locks.3
-#usr/share/man/man3/CRYPTO_set_dynlock_create_callback.3
-#usr/share/man/man3/CRYPTO_set_dynlock_destroy_callback.3
-#usr/share/man/man3/CRYPTO_set_dynlock_lock_callback.3
-#usr/share/man/man3/CRYPTO_set_ex_data.3
-#usr/share/man/man3/CRYPTO_set_id_callback.3
-#usr/share/man/man3/CRYPTO_set_locking_callback.3
-#usr/share/man/man3/DES_cbc_cksum.3
-#usr/share/man/man3/DES_cfb64_encrypt.3
-#usr/share/man/man3/DES_cfb_encrypt.3
-#usr/share/man/man3/DES_crypt.3
-#usr/share/man/man3/DES_ecb2_encrypt.3
-#usr/share/man/man3/DES_ecb3_encrypt.3
-#usr/share/man/man3/DES_ecb_encrypt.3
-#usr/share/man/man3/DES_ede2_cbc_encrypt.3
-#usr/share/man/man3/DES_ede2_cfb64_encrypt.3
-#usr/share/man/man3/DES_ede2_ofb64_encrypt.3
-#usr/share/man/man3/DES_ede3_cbc_encrypt.3
-#usr/share/man/man3/DES_ede3_cbcm_encrypt.3
-#usr/share/man/man3/DES_ede3_cfb64_encrypt.3
-#usr/share/man/man3/DES_ede3_ofb64_encrypt.3
-#usr/share/man/man3/DES_enc_read.3
-#usr/share/man/man3/DES_enc_write.3
-#usr/share/man/man3/DES_fcrypt.3
-#usr/share/man/man3/DES_is_weak_key.3
-#usr/share/man/man3/DES_key_sched.3
-#usr/share/man/man3/DES_ncbc_encrypt.3
-#usr/share/man/man3/DES_ofb64_encrypt.3
-#usr/share/man/man3/DES_ofb_encrypt.3
-#usr/share/man/man3/DES_pcbc_encrypt.3
-#usr/share/man/man3/DES_quad_cksum.3
-#usr/share/man/man3/DES_random_key.3
-#usr/share/man/man3/DES_set_key.3
-#usr/share/man/man3/DES_set_key_checked.3
-#usr/share/man/man3/DES_set_key_unchecked.3
-#usr/share/man/man3/DES_set_odd_parity.3
-#usr/share/man/man3/DES_string_to_2keys.3
-#usr/share/man/man3/DES_string_to_key.3
-#usr/share/man/man3/DES_xcbc_encrypt.3
-#usr/share/man/man3/DH_OpenSSL.3
-#usr/share/man/man3/DH_check.3
-#usr/share/man/man3/DH_compute_key.3
-#usr/share/man/man3/DH_free.3
-#usr/share/man/man3/DH_generate_key.3
-#usr/share/man/man3/DH_generate_parameters.3
-#usr/share/man/man3/DH_get_default_method.3
-#usr/share/man/man3/DH_get_ex_data.3
-#usr/share/man/man3/DH_get_ex_new_index.3
-#usr/share/man/man3/DH_new.3
-#usr/share/man/man3/DH_new_method.3
-#usr/share/man/man3/DH_set_default_method.3
-#usr/share/man/man3/DH_set_ex_data.3
-#usr/share/man/man3/DH_set_method.3
-#usr/share/man/man3/DH_size.3
-#usr/share/man/man3/DHparams_print.3
-#usr/share/man/man3/DHparams_print_fp.3
-#usr/share/man/man3/DSA_OpenSSL.3
-#usr/share/man/man3/DSA_SIG_free.3
-#usr/share/man/man3/DSA_SIG_new.3
-#usr/share/man/man3/DSA_do_sign.3
-#usr/share/man/man3/DSA_do_verify.3
-#usr/share/man/man3/DSA_dup_DH.3
-#usr/share/man/man3/DSA_free.3
-#usr/share/man/man3/DSA_generate_key.3
-#usr/share/man/man3/DSA_generate_parameters.3
-#usr/share/man/man3/DSA_get_default_method.3
-#usr/share/man/man3/DSA_get_ex_data.3
-#usr/share/man/man3/DSA_get_ex_new_index.3
-#usr/share/man/man3/DSA_new.3
-#usr/share/man/man3/DSA_new_method.3
-#usr/share/man/man3/DSA_print.3
-#usr/share/man/man3/DSA_print_fp.3
-#usr/share/man/man3/DSA_set_default_method.3
-#usr/share/man/man3/DSA_set_ex_data.3
-#usr/share/man/man3/DSA_set_method.3
-#usr/share/man/man3/DSA_sign.3
-#usr/share/man/man3/DSA_sign_setup.3
-#usr/share/man/man3/DSA_size.3
-#usr/share/man/man3/DSA_verify.3
-#usr/share/man/man3/DSAparams_print.3
-#usr/share/man/man3/DSAparams_print_fp.3
-#usr/share/man/man3/ERR_GET_FUNC.3
-#usr/share/man/man3/ERR_GET_LIB.3
-#usr/share/man/man3/ERR_GET_REASON.3
-#usr/share/man/man3/ERR_PACK.3
-#usr/share/man/man3/ERR_add_error_data.3
-#usr/share/man/man3/ERR_clear_error.3
-#usr/share/man/man3/ERR_error_string.3
-#usr/share/man/man3/ERR_error_string_n.3
-#usr/share/man/man3/ERR_free_strings.3
-#usr/share/man/man3/ERR_func_error_string.3
-#usr/share/man/man3/ERR_get_error.3
-#usr/share/man/man3/ERR_get_error_line.3
-#usr/share/man/man3/ERR_get_error_line_data.3
-#usr/share/man/man3/ERR_get_next_error_library.3
-#usr/share/man/man3/ERR_lib_error_string.3
-#usr/share/man/man3/ERR_load_UI_strings.3
-#usr/share/man/man3/ERR_load_crypto_strings.3
-#usr/share/man/man3/ERR_load_strings.3
-#usr/share/man/man3/ERR_peek_error.3
-#usr/share/man/man3/ERR_peek_error_line.3
-#usr/share/man/man3/ERR_peek_error_line_data.3
-#usr/share/man/man3/ERR_peek_last_error.3
-#usr/share/man/man3/ERR_peek_last_error_line.3
-#usr/share/man/man3/ERR_peek_last_error_line_data.3
-#usr/share/man/man3/ERR_pop_to_mark.3
-#usr/share/man/man3/ERR_print_errors.3
-#usr/share/man/man3/ERR_print_errors_fp.3
-#usr/share/man/man3/ERR_put_error.3
-#usr/share/man/man3/ERR_reason_error_string.3
-#usr/share/man/man3/ERR_remove_state.3
-#usr/share/man/man3/ERR_set_mark.3
-#usr/share/man/man3/EVP_BytesToKey.3
-#usr/share/man/man3/EVP_CIPHER_CTX_block_size.3
-#usr/share/man/man3/EVP_CIPHER_CTX_cipher.3
-#usr/share/man/man3/EVP_CIPHER_CTX_cleanup.3
-#usr/share/man/man3/EVP_CIPHER_CTX_ctrl.3
-#usr/share/man/man3/EVP_CIPHER_CTX_flags.3
-#usr/share/man/man3/EVP_CIPHER_CTX_get_app_data.3
-#usr/share/man/man3/EVP_CIPHER_CTX_init.3
-#usr/share/man/man3/EVP_CIPHER_CTX_iv_length.3
-#usr/share/man/man3/EVP_CIPHER_CTX_key_length.3
-#usr/share/man/man3/EVP_CIPHER_CTX_mode.3
-#usr/share/man/man3/EVP_CIPHER_CTX_nid.3
-#usr/share/man/man3/EVP_CIPHER_CTX_set_app_data.3
-#usr/share/man/man3/EVP_CIPHER_CTX_set_key_length.3
-#usr/share/man/man3/EVP_CIPHER_CTX_set_padding.3
-#usr/share/man/man3/EVP_CIPHER_CTX_type.3
-#usr/share/man/man3/EVP_CIPHER_asn1_to_param.3
-#usr/share/man/man3/EVP_CIPHER_block_size.3
-#usr/share/man/man3/EVP_CIPHER_flags.3
-#usr/share/man/man3/EVP_CIPHER_iv_length.3
-#usr/share/man/man3/EVP_CIPHER_key_length.3
-#usr/share/man/man3/EVP_CIPHER_mode.3
-#usr/share/man/man3/EVP_CIPHER_nid.3
-#usr/share/man/man3/EVP_CIPHER_param_to_asn1.3
-#usr/share/man/man3/EVP_CIPHER_type.3
-#usr/share/man/man3/EVP_CipherFinal.3
-#usr/share/man/man3/EVP_CipherFinal_ex.3
-#usr/share/man/man3/EVP_CipherInit.3
-#usr/share/man/man3/EVP_CipherInit_ex.3
-#usr/share/man/man3/EVP_CipherUpdate.3
-#usr/share/man/man3/EVP_DecryptFinal.3
-#usr/share/man/man3/EVP_DecryptFinal_ex.3
-#usr/share/man/man3/EVP_DecryptInit.3
-#usr/share/man/man3/EVP_DecryptInit_ex.3
-#usr/share/man/man3/EVP_DecryptUpdate.3
-#usr/share/man/man3/EVP_DigestFinal_ex.3
-#usr/share/man/man3/EVP_DigestInit.3
-#usr/share/man/man3/EVP_DigestInit_ex.3
-#usr/share/man/man3/EVP_DigestUpdate.3
-#usr/share/man/man3/EVP_EncryptFinal.3
-#usr/share/man/man3/EVP_EncryptFinal_ex.3
-#usr/share/man/man3/EVP_EncryptInit.3
-#usr/share/man/man3/EVP_EncryptInit_ex.3
-#usr/share/man/man3/EVP_EncryptUpdate.3
-#usr/share/man/man3/EVP_MAX_MD_SIZE.3
-#usr/share/man/man3/EVP_MD_CTX_block_size.3
-#usr/share/man/man3/EVP_MD_CTX_cleanup.3
-#usr/share/man/man3/EVP_MD_CTX_copy.3
-#usr/share/man/man3/EVP_MD_CTX_copy_ex.3
-#usr/share/man/man3/EVP_MD_CTX_create.3
-#usr/share/man/man3/EVP_MD_CTX_destroy.3
-#usr/share/man/man3/EVP_MD_CTX_init.3
-#usr/share/man/man3/EVP_MD_CTX_md.3
-#usr/share/man/man3/EVP_MD_CTX_size.3
-#usr/share/man/man3/EVP_MD_CTX_type.3
-#usr/share/man/man3/EVP_MD_block_size.3
-#usr/share/man/man3/EVP_MD_pkey_type.3
-#usr/share/man/man3/EVP_MD_size.3
-#usr/share/man/man3/EVP_MD_type.3
-#usr/share/man/man3/EVP_OpenFinal.3
-#usr/share/man/man3/EVP_OpenInit.3
-#usr/share/man/man3/EVP_OpenUpdate.3
-#usr/share/man/man3/EVP_PKEY_assign_DH.3
-#usr/share/man/man3/EVP_PKEY_assign_DSA.3
-#usr/share/man/man3/EVP_PKEY_assign_EC_KEY.3
-#usr/share/man/man3/EVP_PKEY_assign_RSA.3
-#usr/share/man/man3/EVP_PKEY_free.3
-#usr/share/man/man3/EVP_PKEY_get1_DH.3
-#usr/share/man/man3/EVP_PKEY_get1_DSA.3
-#usr/share/man/man3/EVP_PKEY_get1_EC_KEY.3
-#usr/share/man/man3/EVP_PKEY_get1_RSA.3
-#usr/share/man/man3/EVP_PKEY_new.3
-#usr/share/man/man3/EVP_PKEY_set1_DH.3
-#usr/share/man/man3/EVP_PKEY_set1_DSA.3
-#usr/share/man/man3/EVP_PKEY_set1_EC_KEY.3
-#usr/share/man/man3/EVP_PKEY_set1_RSA.3
-#usr/share/man/man3/EVP_PKEY_type.3
-#usr/share/man/man3/EVP_SealFinal.3
-#usr/share/man/man3/EVP_SealInit.3
-#usr/share/man/man3/EVP_SealUpdate.3
-#usr/share/man/man3/EVP_SignFinal.3
-#usr/share/man/man3/EVP_SignInit.3
-#usr/share/man/man3/EVP_SignUpdate.3
-#usr/share/man/man3/EVP_VerifyFinal.3
-#usr/share/man/man3/EVP_VerifyInit.3
-#usr/share/man/man3/EVP_VerifyUpdate.3
-#usr/share/man/man3/EVP_dss.3
-#usr/share/man/man3/EVP_dss1.3
-#usr/share/man/man3/EVP_get_cipherbyname.3
-#usr/share/man/man3/EVP_get_cipherbynid.3
-#usr/share/man/man3/EVP_get_cipherbyobj.3
-#usr/share/man/man3/EVP_get_digestbyname.3
-#usr/share/man/man3/EVP_get_digestbynid.3
-#usr/share/man/man3/EVP_get_digestbyobj.3
-#usr/share/man/man3/EVP_md2.3
-#usr/share/man/man3/EVP_md5.3
-#usr/share/man/man3/EVP_md_null.3
-#usr/share/man/man3/EVP_mdc2.3
-#usr/share/man/man3/EVP_ripemd160.3
-#usr/share/man/man3/EVP_sha.3
-#usr/share/man/man3/EVP_sha1.3
-#usr/share/man/man3/HMAC.3
-#usr/share/man/man3/HMAC_Final.3
-#usr/share/man/man3/HMAC_Init.3
-#usr/share/man/man3/HMAC_Update.3
-#usr/share/man/man3/HMAC_cleanup.3
-#usr/share/man/man3/MD2.3
-#usr/share/man/man3/MD2_Final.3
-#usr/share/man/man3/MD2_Init.3
-#usr/share/man/man3/MD2_Update.3
-#usr/share/man/man3/MD4.3
-#usr/share/man/man3/MD4_Final.3
-#usr/share/man/man3/MD4_Init.3
-#usr/share/man/man3/MD4_Update.3
-#usr/share/man/man3/MD5.3
-#usr/share/man/man3/MD5_Final.3
-#usr/share/man/man3/MD5_Init.3
-#usr/share/man/man3/MD5_Update.3
-#usr/share/man/man3/MDC2.3
-#usr/share/man/man3/MDC2_Final.3
-#usr/share/man/man3/MDC2_Init.3
-#usr/share/man/man3/MDC2_Update.3
-#usr/share/man/man3/OBJ_cleanup.3
-#usr/share/man/man3/OBJ_cmp.3
-#usr/share/man/man3/OBJ_create.3
-#usr/share/man/man3/OBJ_dup.3
-#usr/share/man/man3/OBJ_ln2nid.3
-#usr/share/man/man3/OBJ_nid2ln.3
-#usr/share/man/man3/OBJ_nid2obj.3
-#usr/share/man/man3/OBJ_nid2sn.3
-#usr/share/man/man3/OBJ_obj2nid.3
-#usr/share/man/man3/OBJ_obj2txt.3
-#usr/share/man/man3/OBJ_sn2nid.3
-#usr/share/man/man3/OBJ_txt2nid.3
-#usr/share/man/man3/OBJ_txt2obj.3
-#usr/share/man/man3/OPENSSL_Applink.3
-#usr/share/man/man3/OPENSSL_VERSION_NUMBER.3
-#usr/share/man/man3/OPENSSL_config.3
-#usr/share/man/man3/OPENSSL_ia32cap.3
-#usr/share/man/man3/OPENSSL_load_builtin_modules.3
-#usr/share/man/man3/OPENSSL_no_config.3
-#usr/share/man/man3/OpenSSL_add_all_algorithms.3
-#usr/share/man/man3/OpenSSL_add_all_ciphers.3
-#usr/share/man/man3/OpenSSL_add_all_digests.3
-#usr/share/man/man3/OpenSSL_add_ssl_algorithms.3
-#usr/share/man/man3/PEM.3
-#usr/share/man/man3/PEM_read_DHparams.3
-#usr/share/man/man3/PEM_read_DSAPrivateKey.3
-#usr/share/man/man3/PEM_read_DSA_PUBKEY.3
-#usr/share/man/man3/PEM_read_DSAparams.3
-#usr/share/man/man3/PEM_read_NETSCAPE_CERT_SEQUENCE.3
-#usr/share/man/man3/PEM_read_PKCS7.3
-#usr/share/man/man3/PEM_read_PUBKEY.3
-#usr/share/man/man3/PEM_read_PrivateKey.3
-#usr/share/man/man3/PEM_read_RSAPrivateKey.3
-#usr/share/man/man3/PEM_read_RSAPublicKey.3
-#usr/share/man/man3/PEM_read_RSA_PUBKEY.3
-#usr/share/man/man3/PEM_read_X509.3
-#usr/share/man/man3/PEM_read_X509_AUX.3
-#usr/share/man/man3/PEM_read_X509_CRL.3
-#usr/share/man/man3/PEM_read_X509_REQ.3
-#usr/share/man/man3/PEM_read_bio_DHparams.3
-#usr/share/man/man3/PEM_read_bio_DSAPrivateKey.3
-#usr/share/man/man3/PEM_read_bio_DSA_PUBKEY.3
-#usr/share/man/man3/PEM_read_bio_DSAparams.3
-#usr/share/man/man3/PEM_read_bio_NETSCAPE_CERT_SEQUENCE.3
-#usr/share/man/man3/PEM_read_bio_PKCS7.3
-#usr/share/man/man3/PEM_read_bio_PUBKEY.3
-#usr/share/man/man3/PEM_read_bio_PrivateKey.3
-#usr/share/man/man3/PEM_read_bio_RSAPrivateKey.3
-#usr/share/man/man3/PEM_read_bio_RSAPublicKey.3
-#usr/share/man/man3/PEM_read_bio_RSA_PUBKEY.3
-#usr/share/man/man3/PEM_read_bio_X509.3
-#usr/share/man/man3/PEM_read_bio_X509_AUX.3
-#usr/share/man/man3/PEM_read_bio_X509_CRL.3
-#usr/share/man/man3/PEM_read_bio_X509_REQ.3
-#usr/share/man/man3/PEM_write_DHparams.3
-#usr/share/man/man3/PEM_write_DSAPrivateKey.3
-#usr/share/man/man3/PEM_write_DSA_PUBKEY.3
-#usr/share/man/man3/PEM_write_DSAparams.3
-#usr/share/man/man3/PEM_write_NETSCAPE_CERT_SEQUENCE.3
-#usr/share/man/man3/PEM_write_PKCS7.3
-#usr/share/man/man3/PEM_write_PKCS8PrivateKey.3
-#usr/share/man/man3/PEM_write_PKCS8PrivateKey_nid.3
-#usr/share/man/man3/PEM_write_PUBKEY.3
-#usr/share/man/man3/PEM_write_PrivateKey.3
-#usr/share/man/man3/PEM_write_RSAPrivateKey.3
-#usr/share/man/man3/PEM_write_RSAPublicKey.3
-#usr/share/man/man3/PEM_write_RSA_PUBKEY.3
-#usr/share/man/man3/PEM_write_X509.3
-#usr/share/man/man3/PEM_write_X509_AUX.3
-#usr/share/man/man3/PEM_write_X509_CRL.3
-#usr/share/man/man3/PEM_write_X509_REQ.3
-#usr/share/man/man3/PEM_write_X509_REQ_NEW.3
-#usr/share/man/man3/PEM_write_bio_DHparams.3
-#usr/share/man/man3/PEM_write_bio_DSAPrivateKey.3
-#usr/share/man/man3/PEM_write_bio_DSA_PUBKEY.3
-#usr/share/man/man3/PEM_write_bio_DSAparams.3
-#usr/share/man/man3/PEM_write_bio_NETSCAPE_CERT_SEQUENCE.3
-#usr/share/man/man3/PEM_write_bio_PKCS7.3
-#usr/share/man/man3/PEM_write_bio_PKCS8PrivateKey.3
-#usr/share/man/man3/PEM_write_bio_PKCS8PrivateKey_nid.3
-#usr/share/man/man3/PEM_write_bio_PUBKEY.3
-#usr/share/man/man3/PEM_write_bio_PrivateKey.3
-#usr/share/man/man3/PEM_write_bio_RSAPrivateKey.3
-#usr/share/man/man3/PEM_write_bio_RSAPublicKey.3
-#usr/share/man/man3/PEM_write_bio_RSA_PUBKEY.3
-#usr/share/man/man3/PEM_write_bio_X509.3
-#usr/share/man/man3/PEM_write_bio_X509_AUX.3
-#usr/share/man/man3/PEM_write_bio_X509_CRL.3
-#usr/share/man/man3/PEM_write_bio_X509_REQ.3
-#usr/share/man/man3/PEM_write_bio_X509_REQ_NEW.3
-#usr/share/man/man3/PKCS12_create.3
-#usr/share/man/man3/PKCS12_parse.3
-#usr/share/man/man3/PKCS7_decrypt.3
-#usr/share/man/man3/PKCS7_encrypt.3
-#usr/share/man/man3/PKCS7_sign.3
-#usr/share/man/man3/PKCS7_verify.3
-#usr/share/man/man3/RAND_SSLeay.3
-#usr/share/man/man3/RAND_add.3
-#usr/share/man/man3/RAND_bytes.3
-#usr/share/man/man3/RAND_cleanup.3
-#usr/share/man/man3/RAND_egd.3
-#usr/share/man/man3/RAND_event.3
-#usr/share/man/man3/RAND_file_name.3
-#usr/share/man/man3/RAND_get_rand_method.3
-#usr/share/man/man3/RAND_load_file.3
-#usr/share/man/man3/RAND_pseudo_bytes.3
-#usr/share/man/man3/RAND_screen.3
-#usr/share/man/man3/RAND_seed.3
-#usr/share/man/man3/RAND_set_rand_method.3
-#usr/share/man/man3/RAND_status.3
-#usr/share/man/man3/RAND_write_file.3
-#usr/share/man/man3/RC4.3
-#usr/share/man/man3/RC4_set_key.3
-#usr/share/man/man3/RIPEMD160.3
-#usr/share/man/man3/RIPEMD160_Final.3
-#usr/share/man/man3/RIPEMD160_Init.3
-#usr/share/man/man3/RIPEMD160_Update.3
-#usr/share/man/man3/RSA_PKCS1_SSLeay.3
-#usr/share/man/man3/RSA_blinding_off.3
-#usr/share/man/man3/RSA_blinding_on.3
-#usr/share/man/man3/RSA_check_key.3
-#usr/share/man/man3/RSA_flags.3
-#usr/share/man/man3/RSA_free.3
-#usr/share/man/man3/RSA_generate_key.3
-#usr/share/man/man3/RSA_get_default_method.3
-#usr/share/man/man3/RSA_get_ex_data.3
-#usr/share/man/man3/RSA_get_ex_new_index.3
-#usr/share/man/man3/RSA_get_method.3
-#usr/share/man/man3/RSA_new.3
-#usr/share/man/man3/RSA_new_method.3
-#usr/share/man/man3/RSA_null_method.3
-#usr/share/man/man3/RSA_padding_add_PKCS1_OAEP.3
-#usr/share/man/man3/RSA_padding_add_PKCS1_type_1.3
-#usr/share/man/man3/RSA_padding_add_PKCS1_type_2.3
-#usr/share/man/man3/RSA_padding_add_SSLv23.3
-#usr/share/man/man3/RSA_padding_add_none.3
-#usr/share/man/man3/RSA_padding_check_PKCS1_OAEP.3
-#usr/share/man/man3/RSA_padding_check_PKCS1_type_1.3
-#usr/share/man/man3/RSA_padding_check_PKCS1_type_2.3
-#usr/share/man/man3/RSA_padding_check_SSLv23.3
-#usr/share/man/man3/RSA_padding_check_none.3
-#usr/share/man/man3/RSA_print.3
-#usr/share/man/man3/RSA_print_fp.3
-#usr/share/man/man3/RSA_private_decrypt.3
-#usr/share/man/man3/RSA_private_encrypt.3
-#usr/share/man/man3/RSA_public_decrypt.3
-#usr/share/man/man3/RSA_public_encrypt.3
-#usr/share/man/man3/RSA_set_default_method.3
-#usr/share/man/man3/RSA_set_ex_data.3
-#usr/share/man/man3/RSA_set_method.3
-#usr/share/man/man3/RSA_sign.3
-#usr/share/man/man3/RSA_sign_ASN1_OCTET_STRING.3
-#usr/share/man/man3/RSA_size.3
-#usr/share/man/man3/RSA_verify.3
-#usr/share/man/man3/RSA_verify_ASN1_OCTET_STRING.3
-#usr/share/man/man3/SHA1.3
-#usr/share/man/man3/SHA1_Final.3
-#usr/share/man/man3/SHA1_Init.3
-#usr/share/man/man3/SHA1_Update.3
-#usr/share/man/man3/SMIME_read_PKCS7.3
-#usr/share/man/man3/SMIME_write_PKCS7.3
-#usr/share/man/man3/SSL.3
-#usr/share/man/man3/SSL_CIPHER_description.3
-#usr/share/man/man3/SSL_CIPHER_get_bits.3
-#usr/share/man/man3/SSL_CIPHER_get_name.3
-#usr/share/man/man3/SSL_CIPHER_get_version.3
-#usr/share/man/man3/SSL_COMP_add_compression_method.3
-#usr/share/man/man3/SSL_CTX_add_client_CA.3
-#usr/share/man/man3/SSL_CTX_add_extra_chain_cert.3
-#usr/share/man/man3/SSL_CTX_add_session.3
-#usr/share/man/man3/SSL_CTX_callback_ctrl.3
-#usr/share/man/man3/SSL_CTX_check_private_key.3
-#usr/share/man/man3/SSL_CTX_clear_options.3
-#usr/share/man/man3/SSL_CTX_ctrl.3
-#usr/share/man/man3/SSL_CTX_flush_sessions.3
-#usr/share/man/man3/SSL_CTX_free.3
-#usr/share/man/man3/SSL_CTX_get_cert_store.3
-#usr/share/man/man3/SSL_CTX_get_client_CA_list.3
-#usr/share/man/man3/SSL_CTX_get_client_cert_cb.3
-#usr/share/man/man3/SSL_CTX_get_ex_data.3
-#usr/share/man/man3/SSL_CTX_get_ex_new_index.3
-#usr/share/man/man3/SSL_CTX_get_info_callback.3
-#usr/share/man/man3/SSL_CTX_get_max_cert_list.3
-#usr/share/man/man3/SSL_CTX_get_mode.3
-#usr/share/man/man3/SSL_CTX_get_options.3
-#usr/share/man/man3/SSL_CTX_get_quiet_shutdown.3
-#usr/share/man/man3/SSL_CTX_get_session_cache_mode.3
-#usr/share/man/man3/SSL_CTX_get_timeout.3
-#usr/share/man/man3/SSL_CTX_get_verify_callback.3
-#usr/share/man/man3/SSL_CTX_get_verify_depth.3
-#usr/share/man/man3/SSL_CTX_get_verify_mode.3
-#usr/share/man/man3/SSL_CTX_load_verify_locations.3
-#usr/share/man/man3/SSL_CTX_need_tmp_rsa.3
-#usr/share/man/man3/SSL_CTX_new.3
-#usr/share/man/man3/SSL_CTX_remove_session.3
-#usr/share/man/man3/SSL_CTX_sess_accept.3
-#usr/share/man/man3/SSL_CTX_sess_accept_good.3
-#usr/share/man/man3/SSL_CTX_sess_accept_renegotiate.3
-#usr/share/man/man3/SSL_CTX_sess_cache_full.3
-#usr/share/man/man3/SSL_CTX_sess_cb_hits.3
-#usr/share/man/man3/SSL_CTX_sess_connect.3
-#usr/share/man/man3/SSL_CTX_sess_connect_good.3
-#usr/share/man/man3/SSL_CTX_sess_connect_renegotiate.3
-#usr/share/man/man3/SSL_CTX_sess_get_cache_size.3
-#usr/share/man/man3/SSL_CTX_sess_get_get_cb.3
-#usr/share/man/man3/SSL_CTX_sess_get_new_cb.3
-#usr/share/man/man3/SSL_CTX_sess_get_remove_cb.3
-#usr/share/man/man3/SSL_CTX_sess_hits.3
-#usr/share/man/man3/SSL_CTX_sess_misses.3
-#usr/share/man/man3/SSL_CTX_sess_number.3
-#usr/share/man/man3/SSL_CTX_sess_set_cache_size.3
-#usr/share/man/man3/SSL_CTX_sess_set_get_cb.3
-#usr/share/man/man3/SSL_CTX_sess_set_new_cb.3
-#usr/share/man/man3/SSL_CTX_sess_set_remove_cb.3
-#usr/share/man/man3/SSL_CTX_sess_timeouts.3
-#usr/share/man/man3/SSL_CTX_sessions.3
-#usr/share/man/man3/SSL_CTX_set_cert_store.3
-#usr/share/man/man3/SSL_CTX_set_cert_verify_callback.3
-#usr/share/man/man3/SSL_CTX_set_cipher_list.3
-#usr/share/man/man3/SSL_CTX_set_client_CA_list.3
-#usr/share/man/man3/SSL_CTX_set_client_cert_cb.3
-#usr/share/man/man3/SSL_CTX_set_default_passwd_cb.3
-#usr/share/man/man3/SSL_CTX_set_default_passwd_cb_userdata.3
-#usr/share/man/man3/SSL_CTX_set_ex_data.3
-#usr/share/man/man3/SSL_CTX_set_generate_session_id.3
-#usr/share/man/man3/SSL_CTX_set_info_callback.3
-#usr/share/man/man3/SSL_CTX_set_max_cert_list.3
-#usr/share/man/man3/SSL_CTX_set_mode.3
-#usr/share/man/man3/SSL_CTX_set_msg_callback.3
-#usr/share/man/man3/SSL_CTX_set_msg_callback_arg.3
-#usr/share/man/man3/SSL_CTX_set_options.3
-#usr/share/man/man3/SSL_CTX_set_quiet_shutdown.3
-#usr/share/man/man3/SSL_CTX_set_session_cache_mode.3
-#usr/share/man/man3/SSL_CTX_set_session_id_context.3
-#usr/share/man/man3/SSL_CTX_set_ssl_version.3
-#usr/share/man/man3/SSL_CTX_set_timeout.3
-#usr/share/man/man3/SSL_CTX_set_tmp_dh.3
-#usr/share/man/man3/SSL_CTX_set_tmp_dh_callback.3
-#usr/share/man/man3/SSL_CTX_set_tmp_rsa.3
-#usr/share/man/man3/SSL_CTX_set_tmp_rsa_callback.3
-#usr/share/man/man3/SSL_CTX_set_verify.3
-#usr/share/man/man3/SSL_CTX_set_verify_depth.3
-#usr/share/man/man3/SSL_CTX_use_PrivateKey.3
-#usr/share/man/man3/SSL_CTX_use_PrivateKey_ASN1.3
-#usr/share/man/man3/SSL_CTX_use_PrivateKey_file.3
-#usr/share/man/man3/SSL_CTX_use_RSAPrivateKey.3
-#usr/share/man/man3/SSL_CTX_use_RSAPrivateKey_ASN1.3
-#usr/share/man/man3/SSL_CTX_use_RSAPrivateKey_file.3
-#usr/share/man/man3/SSL_CTX_use_certificate.3
-#usr/share/man/man3/SSL_CTX_use_certificate_ASN1.3
-#usr/share/man/man3/SSL_CTX_use_certificate_chain_file.3
-#usr/share/man/man3/SSL_CTX_use_certificate_file.3
-#usr/share/man/man3/SSL_SESSION_free.3
-#usr/share/man/man3/SSL_SESSION_get_ex_data.3
-#usr/share/man/man3/SSL_SESSION_get_ex_new_index.3
-#usr/share/man/man3/SSL_SESSION_get_time.3
-#usr/share/man/man3/SSL_SESSION_get_timeout.3
-#usr/share/man/man3/SSL_SESSION_set_ex_data.3
-#usr/share/man/man3/SSL_SESSION_set_time.3
-#usr/share/man/man3/SSL_SESSION_set_timeout.3
-#usr/share/man/man3/SSL_accept.3
-#usr/share/man/man3/SSL_add_client_CA.3
-#usr/share/man/man3/SSL_add_session.3
-#usr/share/man/man3/SSL_alert_desc_string.3
-#usr/share/man/man3/SSL_alert_desc_string_long.3
-#usr/share/man/man3/SSL_alert_type_string.3
-#usr/share/man/man3/SSL_alert_type_string_long.3
-#usr/share/man/man3/SSL_callback_ctrl.3
-#usr/share/man/man3/SSL_check_private_key.3
-#usr/share/man/man3/SSL_clear.3
-#usr/share/man/man3/SSL_clear_options.3
-#usr/share/man/man3/SSL_connect.3
-#usr/share/man/man3/SSL_ctrl.3
-#usr/share/man/man3/SSL_do_handshake.3
-#usr/share/man/man3/SSL_flush_sessions.3
-#usr/share/man/man3/SSL_free.3
-#usr/share/man/man3/SSL_get_SSL_CTX.3
-#usr/share/man/man3/SSL_get_accept_state.3
-#usr/share/man/man3/SSL_get_cipher.3
-#usr/share/man/man3/SSL_get_cipher_bits.3
-#usr/share/man/man3/SSL_get_cipher_list.3
-#usr/share/man/man3/SSL_get_cipher_name.3
-#usr/share/man/man3/SSL_get_cipher_version.3
-#usr/share/man/man3/SSL_get_ciphers.3
-#usr/share/man/man3/SSL_get_client_CA_list.3
-#usr/share/man/man3/SSL_get_current_cipher.3
-#usr/share/man/man3/SSL_get_default_timeout.3
-#usr/share/man/man3/SSL_get_error.3
-#usr/share/man/man3/SSL_get_ex_data.3
-#usr/share/man/man3/SSL_get_ex_data_X509_STORE_CTX_idx.3
-#usr/share/man/man3/SSL_get_ex_new_index.3
-#usr/share/man/man3/SSL_get_fd.3
-#usr/share/man/man3/SSL_get_info_callback.3
-#usr/share/man/man3/SSL_get_max_cert_list.3
-#usr/share/man/man3/SSL_get_mode.3
-#usr/share/man/man3/SSL_get_msg_callback_arg.3
-#usr/share/man/man3/SSL_get_options.3
-#usr/share/man/man3/SSL_get_peer_cert_chain.3
-#usr/share/man/man3/SSL_get_peer_certificate.3
-#usr/share/man/man3/SSL_get_quiet_shutdown.3
-#usr/share/man/man3/SSL_get_rbio.3
-#usr/share/man/man3/SSL_get_secure_renegotiation_support.3
-#usr/share/man/man3/SSL_get_session.3
-#usr/share/man/man3/SSL_get_shutdown.3
-#usr/share/man/man3/SSL_get_ssl_method.3
-#usr/share/man/man3/SSL_get_verify_callback.3
-#usr/share/man/man3/SSL_get_verify_depth.3
-#usr/share/man/man3/SSL_get_verify_mode.3
-#usr/share/man/man3/SSL_get_verify_result.3
-#usr/share/man/man3/SSL_get_version.3
-#usr/share/man/man3/SSL_has_matching_session_id.3
-#usr/share/man/man3/SSL_library_init.3
-#usr/share/man/man3/SSL_load_client_CA_file.3
-#usr/share/man/man3/SSL_load_error_strings.3
-#usr/share/man/man3/SSL_need_tmp_rsa.3
-#usr/share/man/man3/SSL_new.3
-#usr/share/man/man3/SSL_pending.3
-#usr/share/man/man3/SSL_read.3
-#usr/share/man/man3/SSL_remove_session.3
-#usr/share/man/man3/SSL_rstate_string.3
-#usr/share/man/man3/SSL_rstate_string_long.3
-#usr/share/man/man3/SSL_session_reused.3
-#usr/share/man/man3/SSL_set_bio.3
-#usr/share/man/man3/SSL_set_cipher_list.3
-#usr/share/man/man3/SSL_set_client_CA_list.3
-#usr/share/man/man3/SSL_set_connect_state.3
-#usr/share/man/man3/SSL_set_ex_data.3
-#usr/share/man/man3/SSL_set_fd.3
-#usr/share/man/man3/SSL_set_generate_session_id.3
-#usr/share/man/man3/SSL_set_info_callback.3
-#usr/share/man/man3/SSL_set_max_cert_list.3
-#usr/share/man/man3/SSL_set_mode.3
-#usr/share/man/man3/SSL_set_msg_callback.3
-#usr/share/man/man3/SSL_set_options.3
-#usr/share/man/man3/SSL_set_quiet_shutdown.3
-#usr/share/man/man3/SSL_set_session.3
-#usr/share/man/man3/SSL_set_session_id_context.3
-#usr/share/man/man3/SSL_set_shutdown.3
-#usr/share/man/man3/SSL_set_ssl_method.3
-#usr/share/man/man3/SSL_set_tmp_dh.3
-#usr/share/man/man3/SSL_set_tmp_dh_callback.3
-#usr/share/man/man3/SSL_set_tmp_rsa.3
-#usr/share/man/man3/SSL_set_tmp_rsa_callback.3
-#usr/share/man/man3/SSL_set_verify.3
-#usr/share/man/man3/SSL_set_verify_depth.3
-#usr/share/man/man3/SSL_set_verify_result.3
-#usr/share/man/man3/SSL_shutdown.3
-#usr/share/man/man3/SSL_state_string.3
-#usr/share/man/man3/SSL_state_string_long.3
-#usr/share/man/man3/SSL_use_PrivateKey.3
-#usr/share/man/man3/SSL_use_PrivateKey_ASN1.3
-#usr/share/man/man3/SSL_use_PrivateKey_file.3
-#usr/share/man/man3/SSL_use_RSAPrivateKey.3
-#usr/share/man/man3/SSL_use_RSAPrivateKey_ASN1.3
-#usr/share/man/man3/SSL_use_RSAPrivateKey_file.3
-#usr/share/man/man3/SSL_use_certificate.3
-#usr/share/man/man3/SSL_use_certificate_ASN1.3
-#usr/share/man/man3/SSL_use_certificate_file.3
-#usr/share/man/man3/SSL_want.3
-#usr/share/man/man3/SSL_want_nothing.3
-#usr/share/man/man3/SSL_want_read.3
-#usr/share/man/man3/SSL_want_write.3
-#usr/share/man/man3/SSL_want_x509_lookup.3
-#usr/share/man/man3/SSL_write.3
-#usr/share/man/man3/SSLeay.3
-#usr/share/man/man3/SSLeay_add_ssl_algorithms.3
-#usr/share/man/man3/SSLeay_version.3
-#usr/share/man/man3/UI_OpenSSL.3
-#usr/share/man/man3/UI_add_error_string.3
-#usr/share/man/man3/UI_add_info_string.3
-#usr/share/man/man3/UI_add_input_boolean.3
-#usr/share/man/man3/UI_add_input_string.3
-#usr/share/man/man3/UI_add_user_data.3
-#usr/share/man/man3/UI_add_verify_string.3
-#usr/share/man/man3/UI_construct_prompt.3
-#usr/share/man/man3/UI_ctrl.3
-#usr/share/man/man3/UI_dup_error_string.3
-#usr/share/man/man3/UI_dup_info_string.3
-#usr/share/man/man3/UI_dup_input_boolean.3
-#usr/share/man/man3/UI_dup_input_string.3
-#usr/share/man/man3/UI_dup_verify_string.3
-#usr/share/man/man3/UI_free.3
-#usr/share/man/man3/UI_get0_result.3
-#usr/share/man/man3/UI_get0_user_data.3
-#usr/share/man/man3/UI_get_default_method.3
-#usr/share/man/man3/UI_get_method.3
-#usr/share/man/man3/UI_new.3
-#usr/share/man/man3/UI_new_method.3
-#usr/share/man/man3/UI_process.3
-#usr/share/man/man3/UI_set_default_method.3
-#usr/share/man/man3/UI_set_method.3
-#usr/share/man/man3/X509_NAME_ENTRY_create_by_NID.3
-#usr/share/man/man3/X509_NAME_ENTRY_create_by_OBJ.3
-#usr/share/man/man3/X509_NAME_ENTRY_create_by_txt.3
-#usr/share/man/man3/X509_NAME_ENTRY_get_data.3
-#usr/share/man/man3/X509_NAME_ENTRY_get_object.3
-#usr/share/man/man3/X509_NAME_ENTRY_set_data.3
-#usr/share/man/man3/X509_NAME_ENTRY_set_object.3
-#usr/share/man/man3/X509_NAME_add_entry.3
-#usr/share/man/man3/X509_NAME_add_entry_by_NID.3
-#usr/share/man/man3/X509_NAME_add_entry_by_OBJ.3
-#usr/share/man/man3/X509_NAME_add_entry_by_txt.3
-#usr/share/man/man3/X509_NAME_delete_entry.3
-#usr/share/man/man3/X509_NAME_entry_count.3
-#usr/share/man/man3/X509_NAME_get_entry.3
-#usr/share/man/man3/X509_NAME_get_index_by_NID.3
-#usr/share/man/man3/X509_NAME_get_index_by_OBJ.3
-#usr/share/man/man3/X509_NAME_get_text_by_NID.3
-#usr/share/man/man3/X509_NAME_get_text_by_OBJ.3
-#usr/share/man/man3/X509_NAME_oneline.3
-#usr/share/man/man3/X509_NAME_print.3
-#usr/share/man/man3/X509_NAME_print_ex.3
-#usr/share/man/man3/X509_NAME_print_ex_fp.3
-#usr/share/man/man3/X509_free.3
-#usr/share/man/man3/X509_new.3
-#usr/share/man/man3/bio.3
-#usr/share/man/man3/blowfish.3
-#usr/share/man/man3/bn.3
-#usr/share/man/man3/bn_add_words.3
-#usr/share/man/man3/bn_check_top.3
-#usr/share/man/man3/bn_cmp_words.3
-#usr/share/man/man3/bn_div_words.3
-#usr/share/man/man3/bn_dump.3
-#usr/share/man/man3/bn_expand.3
-#usr/share/man/man3/bn_expand2.3
-#usr/share/man/man3/bn_fix_top.3
-#usr/share/man/man3/bn_internal.3
-#usr/share/man/man3/bn_mul_add_words.3
-#usr/share/man/man3/bn_mul_comba4.3
-#usr/share/man/man3/bn_mul_comba8.3
-#usr/share/man/man3/bn_mul_high.3
-#usr/share/man/man3/bn_mul_low_normal.3
-#usr/share/man/man3/bn_mul_low_recursive.3
-#usr/share/man/man3/bn_mul_normal.3
-#usr/share/man/man3/bn_mul_part_recursive.3
-#usr/share/man/man3/bn_mul_recursive.3
-#usr/share/man/man3/bn_mul_words.3
-#usr/share/man/man3/bn_print.3
-#usr/share/man/man3/bn_set_high.3
-#usr/share/man/man3/bn_set_low.3
-#usr/share/man/man3/bn_set_max.3
-#usr/share/man/man3/bn_sqr_comba4.3
-#usr/share/man/man3/bn_sqr_comba8.3
-#usr/share/man/man3/bn_sqr_normal.3
-#usr/share/man/man3/bn_sqr_recursive.3
-#usr/share/man/man3/bn_sqr_words.3
-#usr/share/man/man3/bn_sub_words.3
-#usr/share/man/man3/bn_wexpand.3
-#usr/share/man/man3/buffer.3
-#usr/share/man/man3/crypto.3
-#usr/share/man/man3/d2i_509_CRL_fp.3
-#usr/share/man/man3/d2i_ASN1_OBJECT.3
-#usr/share/man/man3/d2i_DHparams.3
-#usr/share/man/man3/d2i_DSAPrivateKey.3
-#usr/share/man/man3/d2i_DSAPublicKey.3
-#usr/share/man/man3/d2i_DSA_PUBKEY.3
-#usr/share/man/man3/d2i_DSA_SIG.3
-#usr/share/man/man3/d2i_Netscape_RSA.3
-#usr/share/man/man3/d2i_PKCS8PrivateKey.3
-#usr/share/man/man3/d2i_PKCS8PrivateKey_bio.3
-#usr/share/man/man3/d2i_PKCS8PrivateKey_fp.3
-#usr/share/man/man3/d2i_RSAPrivateKey.3
-#usr/share/man/man3/d2i_RSAPublicKey.3
-#usr/share/man/man3/d2i_RSA_PUBKEY.3
-#usr/share/man/man3/d2i_SSL_SESSION.3
-#usr/share/man/man3/d2i_X509.3
-#usr/share/man/man3/d2i_X509_ALGOR.3
-#usr/share/man/man3/d2i_X509_CRL.3
-#usr/share/man/man3/d2i_X509_CRL_bio.3
-#usr/share/man/man3/d2i_X509_NAME.3
-#usr/share/man/man3/d2i_X509_REQ.3
-#usr/share/man/man3/d2i_X509_REQ_bio.3
-#usr/share/man/man3/d2i_X509_REQ_fp.3
-#usr/share/man/man3/d2i_X509_SIG.3
-#usr/share/man/man3/d2i_X509_bio.3
-#usr/share/man/man3/d2i_X509_fp.3
-#usr/share/man/man3/des.3
-#usr/share/man/man3/des_read_2passwords.3
-#usr/share/man/man3/des_read_password.3
-#usr/share/man/man3/des_read_pw.3
-#usr/share/man/man3/des_read_pw_string.3
-#usr/share/man/man3/dh.3
-#usr/share/man/man3/dsa.3
-#usr/share/man/man3/ecdsa.3
-#usr/share/man/man3/engine.3
-#usr/share/man/man3/err.3
-#usr/share/man/man3/evp.3
-#usr/share/man/man3/hmac.3
-#usr/share/man/man3/i2d_ASN1_OBJECT.3
-#usr/share/man/man3/i2d_DHparams.3
-#usr/share/man/man3/i2d_DSAPrivateKey.3
-#usr/share/man/man3/i2d_DSAPublicKey.3
-#usr/share/man/man3/i2d_DSA_PUBKEY.3
-#usr/share/man/man3/i2d_DSA_SIG.3
-#usr/share/man/man3/i2d_Netscape_RSA.3
-#usr/share/man/man3/i2d_PKCS8PrivateKey_bio.3
-#usr/share/man/man3/i2d_PKCS8PrivateKey_fp.3
-#usr/share/man/man3/i2d_PKCS8PrivateKey_nid_bio.3
-#usr/share/man/man3/i2d_PKCS8PrivateKey_nid_fp.3
-#usr/share/man/man3/i2d_RSAPrivateKey.3
-#usr/share/man/man3/i2d_RSAPublicKey.3
-#usr/share/man/man3/i2d_RSA_PUBKEY.3
-#usr/share/man/man3/i2d_SSL_SESSION.3
-#usr/share/man/man3/i2d_X509.3
-#usr/share/man/man3/i2d_X509_ALGOR.3
-#usr/share/man/man3/i2d_X509_CRL.3
-#usr/share/man/man3/i2d_X509_CRL_bio.3
-#usr/share/man/man3/i2d_X509_CRL_fp.3
-#usr/share/man/man3/i2d_X509_NAME.3
-#usr/share/man/man3/i2d_X509_REQ.3
-#usr/share/man/man3/i2d_X509_REQ_bio.3
-#usr/share/man/man3/i2d_X509_REQ_fp.3
-#usr/share/man/man3/i2d_X509_SIG.3
-#usr/share/man/man3/i2d_X509_bio.3
-#usr/share/man/man3/i2d_X509_fp.3
-#usr/share/man/man3/lh_delete.3
-#usr/share/man/man3/lh_doall.3
-#usr/share/man/man3/lh_doall_arg.3
-#usr/share/man/man3/lh_error.3
-#usr/share/man/man3/lh_free.3
-#usr/share/man/man3/lh_insert.3
-#usr/share/man/man3/lh_new.3
-#usr/share/man/man3/lh_node_stats.3
-#usr/share/man/man3/lh_node_stats_bio.3
-#usr/share/man/man3/lh_node_usage_stats.3
-#usr/share/man/man3/lh_node_usage_stats_bio.3
-#usr/share/man/man3/lh_retrieve.3
-#usr/share/man/man3/lh_stats.3
-#usr/share/man/man3/lh_stats_bio.3
-#usr/share/man/man3/lhash.3
-#usr/share/man/man3/md5.3
-#usr/share/man/man3/mdc2.3
-#usr/share/man/man3/pem.3
-#usr/share/man/man3/rc4.3
-#usr/share/man/man3/ripemd.3
-#usr/share/man/man3/rsa.3
-#usr/share/man/man3/sha.3
-#usr/share/man/man3/ssl.3
-#usr/share/man/man3/ui.3
-#usr/share/man/man3/ui_compat.3
-#usr/share/man/man3/x509.3
-#usr/share/man/man5/config.5
-#usr/share/man/man5/x509v3_config.5
-#usr/share/man/man7/des_modes.7
diff --git a/config/rootfiles/common/openssl-compat b/config/rootfiles/common/openssl-compat
new file mode 100644 (file)
index 0000000..ccf89d0
--- /dev/null
@@ -0,0 +1,2 @@
+usr/lib/libcrypto.so.0.9.8
+usr/lib/libssl.so.0.9.8
index 6be9a102a7598252cd358ee484d3f294bf4dd5e3..d1b836a1b4e5f0fd7547bde1d1e1683724541e0e 100644 (file)
@@ -1,8 +1,20 @@
-usr/lib/openvpn
-usr/lib/openvpn/openvpn-auth-pam.so
-usr/lib/openvpn/openvpn-down-root.so
+#usr/include/openvpn-plugin.h
+#usr/lib/openvpn
+#usr/lib/openvpn/plugins
+#usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.la
+usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so
+#usr/lib/openvpn/plugins/openvpn-plugin-down-root.la
+usr/lib/openvpn/plugins/openvpn-plugin-down-root.so
+usr/lib/openvpn/verify
 usr/sbin/openvpn
 #usr/share/doc/openvpn
+#usr/share/doc/openvpn/COPYING
+#usr/share/doc/openvpn/COPYRIGHT.GPL
+#usr/share/doc/openvpn/README
+#usr/share/doc/openvpn/README.IPv6
+#usr/share/doc/openvpn/README.auth-pam
+#usr/share/doc/openvpn/README.down-root
+#usr/share/doc/openvpn/README.polarssl
 #usr/share/doc/openvpn/management-notes.txt
 #usr/share/man/man8/openvpn.8
 var/ipfire/ovpn
@@ -20,4 +32,3 @@ var/ipfire/ovpn/ovpn-leases.db
 var/ipfire/ovpn/ovpnconfig
 var/ipfire/ovpn/scripts
 var/ipfire/ovpn/settings
-var/ipfire/ovpn/verify
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..c9135a8
--- /dev/null
@@ -0,0 +1,2 @@
+sbin/paxctl
+#usr/share/man/man1/paxctl.1
diff --git a/config/rootfiles/common/perl-Device-Modem b/config/rootfiles/common/perl-Device-Modem
new file mode 100644 (file)
index 0000000..9e8da1c
--- /dev/null
@@ -0,0 +1,18 @@
+#usr/lib/perl5/site_perl/5.12.3/Device
+#usr/lib/perl5/site_perl/5.12.3/Device/Modem
+usr/lib/perl5/site_perl/5.12.3/Device/Modem.pm
+#usr/lib/perl5/site_perl/5.12.3/Device/Modem/FAQ.pod
+#usr/lib/perl5/site_perl/5.12.3/Device/Modem/Log
+usr/lib/perl5/site_perl/5.12.3/Device/Modem/Log/File.pm
+usr/lib/perl5/site_perl/5.12.3/Device/Modem/Log/Syslog.pm
+#usr/lib/perl5/site_perl/5.12.3/Device/Modem/Protocol
+usr/lib/perl5/site_perl/5.12.3/Device/Modem/Protocol/Xmodem.pm
+usr/lib/perl5/site_perl/5.12.3/Device/Modem/UsRobotics.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Device/Modem
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Device/Modem/.packlist
+#usr/share/man/man3/Device::Modem.3
+#usr/share/man/man3/Device::Modem::FAQ.3
+#usr/share/man/man3/Device::Modem::Log::File.3
+#usr/share/man/man3/Device::Modem::Log::Syslog.3
+#usr/share/man/man3/Device::Modem::Protocol::Xmodem.3
+#usr/share/man/man3/Device::Modem::UsRobotics.3
diff --git a/config/rootfiles/common/perl-Device-SerialPort b/config/rootfiles/common/perl-Device-SerialPort
new file mode 100644 (file)
index 0000000..dccc425
--- /dev/null
@@ -0,0 +1,10 @@
+#usr/bin/modemtest
+usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Device
+usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Device/SerialPort.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Device
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Device/SerialPort
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Device/SerialPort/.packlist
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Device/SerialPort/SerialPort.bs
+usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Device/SerialPort/SerialPort.so
+#usr/share/man/man1/modemtest.1
+#usr/share/man/man3/Device::SerialPort.3
index 60e6f5b0806a81b8272851f83760d7bdff2d36fd..709e0d0e06498a40042b73e7ff269764d9e671b4 100644 (file)
@@ -14,8 +14,10 @@ etc/ppp/standardloginscript
 #usr/include/pppd/chap_ms.h
 #usr/include/pppd/eap.h
 #usr/include/pppd/ecp.h
+#usr/include/pppd/eui64.h
 #usr/include/pppd/fsm.h
 #usr/include/pppd/ipcp.h
+#usr/include/pppd/ipv6cp.h
 #usr/include/pppd/ipxcp.h
 #usr/include/pppd/lcp.h
 #usr/include/pppd/magic.h
@@ -31,18 +33,18 @@ etc/ppp/standardloginscript
 #usr/include/pppd/tdb.h
 #usr/include/pppd/upap.h
 usr/lib/pppd
-usr/lib/pppd/2.4.5
-usr/lib/pppd/2.4.5/minconn.so
-usr/lib/pppd/2.4.5/openl2tp.so
-usr/lib/pppd/2.4.5/passprompt.so
-usr/lib/pppd/2.4.5/passwordfd.so
-usr/lib/pppd/2.4.5/pppoatm.so
-usr/lib/pppd/2.4.5/pppol2tp.so
-usr/lib/pppd/2.4.5/radattr.so
-usr/lib/pppd/2.4.5/radius.so
-usr/lib/pppd/2.4.5/radrealms.so
-usr/lib/pppd/2.4.5/rp-pppoe.so
-usr/lib/pppd/2.4.5/winbind.so
+usr/lib/pppd/2.4.6
+usr/lib/pppd/2.4.6/minconn.so
+usr/lib/pppd/2.4.6/openl2tp.so
+usr/lib/pppd/2.4.6/passprompt.so
+usr/lib/pppd/2.4.6/passwordfd.so
+usr/lib/pppd/2.4.6/pppoatm.so
+usr/lib/pppd/2.4.6/pppol2tp.so
+usr/lib/pppd/2.4.6/radattr.so
+usr/lib/pppd/2.4.6/radius.so
+usr/lib/pppd/2.4.6/radrealms.so
+usr/lib/pppd/2.4.6/rp-pppoe.so
+usr/lib/pppd/2.4.6/winbind.so
 usr/sbin/chat
 usr/sbin/pppd
 usr/sbin/pppdump
diff --git a/config/rootfiles/common/rng-tools b/config/rootfiles/common/rng-tools
new file mode 100644 (file)
index 0000000..596a911
--- /dev/null
@@ -0,0 +1,4 @@
+usr/bin/rngtest
+usr/sbin/rngd
+#usr/share/man/man1/rngtest.1
+#usr/share/man/man8/rngd.8
index 8404486533e062ffa2da128216971a4afc7880ff..706c5f8523ab72090771ccb169e8ee046f90802c 100644 (file)
@@ -3,6 +3,7 @@ etc/snort/rules
 #etc/snort/rules/classification.config
 #etc/snort/rules/reference.config
 etc/snort/snort.conf
+etc/snort/snort.conf.template
 etc/snort/unicode.map
 usr/bin/u2boat
 usr/bin/u2spewfoo
@@ -29,7 +30,6 @@ usr/bin/u2spewfoo
 #usr/include/snort/dynamic_preproc/bitop.h
 #usr/include/snort/dynamic_preproc/cpuclock.h
 #usr/include/snort/dynamic_preproc/file_api.h
-#usr/include/snort/dynamic_preproc/file_lib.h
 #usr/include/snort/dynamic_preproc/idle_processing.h
 #usr/include/snort/dynamic_preproc/ipv6_port.h
 #usr/include/snort/dynamic_preproc/mempool.h
@@ -180,11 +180,13 @@ usr/sbin/snort
 #usr/share/doc/snort/README.dns
 #usr/share/doc/snort/README.event_queue
 #usr/share/doc/snort/README.file
+#usr/share/doc/snort/README.file_ips
 #usr/share/doc/snort/README.filters
 #usr/share/doc/snort/README.flowbits
 #usr/share/doc/snort/README.frag3
 #usr/share/doc/snort/README.ftptelnet
 #usr/share/doc/snort/README.gre
+#usr/share/doc/snort/README.ha
 #usr/share/doc/snort/README.http_inspect
 #usr/share/doc/snort/README.imap
 #usr/share/doc/snort/README.ipip
index 159161ae594d32b930fa6586d268ea77de0099c5..76abbe8516bf6fdce0e1fe1bcc702e0be92ad719 100644 (file)
@@ -14,10 +14,29 @@ etc/squid/squid.conf
 srv/web/ipfire/cgi-bin/cachemgr.cgi
 srv/web/ipfire/html/proxy.pac
 srv/web/ipfire/html/wpad.dat
+usr/bin/purge
 usr/bin/squidclient
 #usr/lib/squid
 usr/lib/squid/auth
+usr/lib/squid/basic_db_auth
+usr/lib/squid/basic_fake_auth
+usr/lib/squid/basic_getpwnam_auth
+usr/lib/squid/basic_ldap_auth
+usr/lib/squid/basic_msnt_auth
+usr/lib/squid/basic_msnt_multi_domain_auth
+usr/lib/squid/basic_ncsa_auth
+usr/lib/squid/basic_nis_auth
+usr/lib/squid/basic_pam_auth
+usr/lib/squid/basic_pop3_auth
+usr/lib/squid/basic_radius_auth
+usr/lib/squid/basic_sasl_auth
+usr/lib/squid/basic_smb_auth
+usr/lib/squid/basic_smb_auth.sh
 #usr/lib/squid/cachemgr.cgi
+usr/lib/squid/cert_tool
+usr/lib/squid/cert_valid.pl
+usr/lib/squid/digest_file_auth
+usr/lib/squid/digest_ldap_auth
 usr/lib/squid/diskd
 #usr/lib/squid/errors
 #usr/lib/squid/errors/COPYRIGHT
@@ -30,6 +49,7 @@ usr/lib/squid/diskd
 #usr/lib/squid/errors/af/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/af/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/af/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/af/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/af/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/af/ERR_DIR_LISTING
 #usr/lib/squid/errors/af/ERR_DNS_FAIL
@@ -88,6 +108,7 @@ usr/lib/squid/diskd
 #usr/lib/squid/errors/ar/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/ar/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/ar/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/ar/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/ar/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/ar/ERR_DIR_LISTING
 #usr/lib/squid/errors/ar/ERR_DNS_FAIL
@@ -131,6 +152,7 @@ usr/lib/squid/diskd
 #usr/lib/squid/errors/az/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/az/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/az/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/az/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/az/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/az/ERR_DIR_LISTING
 #usr/lib/squid/errors/az/ERR_DNS_FAIL
@@ -174,6 +196,7 @@ usr/lib/squid/diskd
 #usr/lib/squid/errors/bg/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/bg/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/bg/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/bg/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/bg/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/bg/ERR_DIR_LISTING
 #usr/lib/squid/errors/bg/ERR_DNS_FAIL
@@ -216,6 +239,7 @@ usr/lib/squid/diskd
 #usr/lib/squid/errors/ca/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/ca/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/ca/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/ca/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/ca/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/ca/ERR_DIR_LISTING
 #usr/lib/squid/errors/ca/ERR_DNS_FAIL
@@ -259,6 +283,7 @@ usr/lib/squid/diskd
 #usr/lib/squid/errors/cs/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/cs/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/cs/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/cs/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/cs/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/cs/ERR_DIR_LISTING
 #usr/lib/squid/errors/cs/ERR_DNS_FAIL
@@ -302,6 +327,7 @@ usr/lib/squid/diskd
 #usr/lib/squid/errors/da/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/da/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/da/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/da/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/da/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/da/ERR_DIR_LISTING
 #usr/lib/squid/errors/da/ERR_DNS_FAIL
@@ -349,6 +375,7 @@ usr/lib/squid/errors/de/ERR_AGENT_WPAD
 usr/lib/squid/errors/de/ERR_CACHE_ACCESS_DENIED
 usr/lib/squid/errors/de/ERR_CACHE_MGR_ACCESS_DENIED
 usr/lib/squid/errors/de/ERR_CANNOT_FORWARD
+usr/lib/squid/errors/de/ERR_CONFLICT_HOST
 usr/lib/squid/errors/de/ERR_CONNECT_FAIL
 usr/lib/squid/errors/de/ERR_DIR_LISTING
 usr/lib/squid/errors/de/ERR_DNS_FAIL
@@ -392,6 +419,7 @@ usr/lib/squid/errors/de/error-details.txt
 #usr/lib/squid/errors/el/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/el/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/el/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/el/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/el/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/el/ERR_DIR_LISTING
 #usr/lib/squid/errors/el/ERR_DNS_FAIL
@@ -449,6 +477,7 @@ usr/lib/squid/errors/en/ERR_AGENT_WPAD
 usr/lib/squid/errors/en/ERR_CACHE_ACCESS_DENIED
 usr/lib/squid/errors/en/ERR_CACHE_MGR_ACCESS_DENIED
 usr/lib/squid/errors/en/ERR_CANNOT_FORWARD
+usr/lib/squid/errors/en/ERR_CONFLICT_HOST
 usr/lib/squid/errors/en/ERR_CONNECT_FAIL
 usr/lib/squid/errors/en/ERR_DIR_LISTING
 usr/lib/squid/errors/en/ERR_DNS_FAIL
@@ -510,6 +539,7 @@ usr/lib/squid/errors/es/ERR_AGENT_WPAD
 usr/lib/squid/errors/es/ERR_CACHE_ACCESS_DENIED
 usr/lib/squid/errors/es/ERR_CACHE_MGR_ACCESS_DENIED
 usr/lib/squid/errors/es/ERR_CANNOT_FORWARD
+usr/lib/squid/errors/es/ERR_CONFLICT_HOST
 usr/lib/squid/errors/es/ERR_CONNECT_FAIL
 usr/lib/squid/errors/es/ERR_DIR_LISTING
 usr/lib/squid/errors/es/ERR_DNS_FAIL
@@ -553,6 +583,7 @@ usr/lib/squid/errors/es/error-details.txt
 #usr/lib/squid/errors/et/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/et/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/et/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/et/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/et/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/et/ERR_DIR_LISTING
 #usr/lib/squid/errors/et/ERR_DNS_FAIL
@@ -597,6 +628,7 @@ usr/lib/squid/errors/es/error-details.txt
 #usr/lib/squid/errors/fa/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/fa/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/fa/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/fa/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/fa/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/fa/ERR_DIR_LISTING
 #usr/lib/squid/errors/fa/ERR_DNS_FAIL
@@ -640,6 +672,7 @@ usr/lib/squid/errors/es/error-details.txt
 #usr/lib/squid/errors/fi/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/fi/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/fi/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/fi/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/fi/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/fi/ERR_DIR_LISTING
 #usr/lib/squid/errors/fi/ERR_DNS_FAIL
@@ -688,6 +721,7 @@ usr/lib/squid/errors/fr/ERR_AGENT_WPAD
 usr/lib/squid/errors/fr/ERR_CACHE_ACCESS_DENIED
 usr/lib/squid/errors/fr/ERR_CACHE_MGR_ACCESS_DENIED
 usr/lib/squid/errors/fr/ERR_CANNOT_FORWARD
+usr/lib/squid/errors/fr/ERR_CONFLICT_HOST
 usr/lib/squid/errors/fr/ERR_CONNECT_FAIL
 usr/lib/squid/errors/fr/ERR_DIR_LISTING
 usr/lib/squid/errors/fr/ERR_DNS_FAIL
@@ -731,6 +765,7 @@ usr/lib/squid/errors/fr/error-details.txt
 #usr/lib/squid/errors/he/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/he/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/he/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/he/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/he/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/he/ERR_DIR_LISTING
 #usr/lib/squid/errors/he/ERR_DNS_FAIL
@@ -774,6 +809,7 @@ usr/lib/squid/errors/fr/error-details.txt
 #usr/lib/squid/errors/hu/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/hu/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/hu/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/hu/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/hu/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/hu/ERR_DIR_LISTING
 #usr/lib/squid/errors/hu/ERR_DNS_FAIL
@@ -818,6 +854,7 @@ usr/lib/squid/errors/fr/error-details.txt
 #usr/lib/squid/errors/hy/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/hy/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/hy/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/hy/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/hy/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/hy/ERR_DIR_LISTING
 #usr/lib/squid/errors/hy/ERR_DNS_FAIL
@@ -861,6 +898,7 @@ usr/lib/squid/errors/fr/error-details.txt
 #usr/lib/squid/errors/id/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/id/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/id/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/id/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/id/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/id/ERR_DIR_LISTING
 #usr/lib/squid/errors/id/ERR_DNS_FAIL
@@ -905,6 +943,7 @@ usr/lib/squid/errors/fr/error-details.txt
 #usr/lib/squid/errors/it/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/it/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/it/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/it/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/it/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/it/ERR_DIR_LISTING
 #usr/lib/squid/errors/it/ERR_DNS_FAIL
@@ -948,6 +987,7 @@ usr/lib/squid/errors/fr/error-details.txt
 #usr/lib/squid/errors/ja/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/ja/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/ja/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/ja/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/ja/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/ja/ERR_DIR_LISTING
 #usr/lib/squid/errors/ja/ERR_DNS_FAIL
@@ -992,6 +1032,7 @@ usr/lib/squid/errors/fr/error-details.txt
 #usr/lib/squid/errors/ko/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/ko/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/ko/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/ko/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/ko/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/ko/ERR_DIR_LISTING
 #usr/lib/squid/errors/ko/ERR_DNS_FAIL
@@ -1035,6 +1076,7 @@ usr/lib/squid/errors/fr/error-details.txt
 #usr/lib/squid/errors/lt/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/lt/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/lt/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/lt/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/lt/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/lt/ERR_DIR_LISTING
 #usr/lib/squid/errors/lt/ERR_DNS_FAIL
@@ -1078,6 +1120,7 @@ usr/lib/squid/errors/fr/error-details.txt
 #usr/lib/squid/errors/lv/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/lv/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/lv/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/lv/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/lv/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/lv/ERR_DIR_LISTING
 #usr/lib/squid/errors/lv/ERR_DNS_FAIL
@@ -1121,6 +1164,7 @@ usr/lib/squid/errors/fr/error-details.txt
 #usr/lib/squid/errors/ms/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/ms/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/ms/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/ms/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/ms/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/ms/ERR_DIR_LISTING
 #usr/lib/squid/errors/ms/ERR_DNS_FAIL
@@ -1164,6 +1208,7 @@ usr/lib/squid/errors/nl/ERR_AGENT_WPAD
 usr/lib/squid/errors/nl/ERR_CACHE_ACCESS_DENIED
 usr/lib/squid/errors/nl/ERR_CACHE_MGR_ACCESS_DENIED
 usr/lib/squid/errors/nl/ERR_CANNOT_FORWARD
+usr/lib/squid/errors/nl/ERR_CONFLICT_HOST
 usr/lib/squid/errors/nl/ERR_CONNECT_FAIL
 usr/lib/squid/errors/nl/ERR_DIR_LISTING
 usr/lib/squid/errors/nl/ERR_DNS_FAIL
@@ -1206,6 +1251,7 @@ usr/lib/squid/errors/nl/error-details.txt
 #usr/lib/squid/errors/oc/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/oc/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/oc/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/oc/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/oc/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/oc/ERR_DIR_LISTING
 #usr/lib/squid/errors/oc/ERR_DNS_FAIL
@@ -1249,6 +1295,7 @@ usr/lib/squid/errors/pl/ERR_AGENT_WPAD
 usr/lib/squid/errors/pl/ERR_CACHE_ACCESS_DENIED
 usr/lib/squid/errors/pl/ERR_CACHE_MGR_ACCESS_DENIED
 usr/lib/squid/errors/pl/ERR_CANNOT_FORWARD
+usr/lib/squid/errors/pl/ERR_CONFLICT_HOST
 usr/lib/squid/errors/pl/ERR_CONNECT_FAIL
 usr/lib/squid/errors/pl/ERR_DIR_LISTING
 usr/lib/squid/errors/pl/ERR_DNS_FAIL
@@ -1292,6 +1339,7 @@ usr/lib/squid/errors/pl/error-details.txt
 #usr/lib/squid/errors/pt-br/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/pt-br/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/pt-br/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/pt-br/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/pt-br/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/pt-br/ERR_DIR_LISTING
 #usr/lib/squid/errors/pt-br/ERR_DNS_FAIL
@@ -1326,6 +1374,7 @@ usr/lib/squid/errors/pl/error-details.txt
 #usr/lib/squid/errors/pt-br/ERR_WRITE_ERROR
 #usr/lib/squid/errors/pt-br/ERR_ZERO_SIZE_OBJECT
 #usr/lib/squid/errors/pt-br/error-details.txt
+#usr/lib/squid/errors/pt-bz
 #usr/lib/squid/errors/pt-pt
 #usr/lib/squid/errors/pt/ERR_ACCESS_DENIED
 #usr/lib/squid/errors/pt/ERR_ACL_TIME_QUOTA_EXCEEDED
@@ -1334,6 +1383,7 @@ usr/lib/squid/errors/pl/error-details.txt
 #usr/lib/squid/errors/pt/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/pt/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/pt/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/pt/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/pt/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/pt/ERR_DIR_LISTING
 #usr/lib/squid/errors/pt/ERR_DNS_FAIL
@@ -1378,6 +1428,7 @@ usr/lib/squid/errors/pl/error-details.txt
 #usr/lib/squid/errors/ro/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/ro/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/ro/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/ro/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/ro/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/ro/ERR_DIR_LISTING
 #usr/lib/squid/errors/ro/ERR_DNS_FAIL
@@ -1421,6 +1472,7 @@ usr/lib/squid/errors/ru/ERR_AGENT_WPAD
 usr/lib/squid/errors/ru/ERR_CACHE_ACCESS_DENIED
 usr/lib/squid/errors/ru/ERR_CACHE_MGR_ACCESS_DENIED
 usr/lib/squid/errors/ru/ERR_CANNOT_FORWARD
+usr/lib/squid/errors/ru/ERR_CONFLICT_HOST
 usr/lib/squid/errors/ru/ERR_CONNECT_FAIL
 usr/lib/squid/errors/ru/ERR_DIR_LISTING
 usr/lib/squid/errors/ru/ERR_DNS_FAIL
@@ -1464,6 +1516,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/sk/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/sk/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/sk/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/sk/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/sk/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/sk/ERR_DIR_LISTING
 #usr/lib/squid/errors/sk/ERR_DNS_FAIL
@@ -1507,6 +1560,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/sl/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/sl/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/sl/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/sl/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/sl/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/sl/ERR_DIR_LISTING
 #usr/lib/squid/errors/sl/ERR_DNS_FAIL
@@ -1550,6 +1604,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/sr-cyrl/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/sr-cyrl/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/sr-cyrl/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/sr-cyrl/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/sr-cyrl/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/sr-cyrl/ERR_DIR_LISTING
 #usr/lib/squid/errors/sr-cyrl/ERR_DNS_FAIL
@@ -1593,6 +1648,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/sr-latn/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/sr-latn/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/sr-latn/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/sr-latn/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/sr-latn/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/sr-latn/ERR_DIR_LISTING
 #usr/lib/squid/errors/sr-latn/ERR_DNS_FAIL
@@ -1638,6 +1694,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/sv/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/sv/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/sv/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/sv/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/sv/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/sv/ERR_DIR_LISTING
 #usr/lib/squid/errors/sv/ERR_DNS_FAIL
@@ -1680,6 +1737,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/templates/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/templates/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/templates/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/templates/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/templates/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/templates/ERR_DIR_LISTING
 #usr/lib/squid/errors/templates/ERR_DNS_FAIL
@@ -1723,6 +1781,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/th/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/th/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/th/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/th/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/th/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/th/ERR_DIR_LISTING
 #usr/lib/squid/errors/th/ERR_DNS_FAIL
@@ -1759,47 +1818,48 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/th/error-details.txt
 #usr/lib/squid/errors/tr
 #usr/lib/squid/errors/tr-tr
-#usr/lib/squid/errors/tr/ERR_ACCESS_DENIED
-#usr/lib/squid/errors/tr/ERR_ACL_TIME_QUOTA_EXCEEDED
-#usr/lib/squid/errors/tr/ERR_AGENT_CONFIGURE
-#usr/lib/squid/errors/tr/ERR_AGENT_WPAD
-#usr/lib/squid/errors/tr/ERR_CACHE_ACCESS_DENIED
-#usr/lib/squid/errors/tr/ERR_CACHE_MGR_ACCESS_DENIED
-#usr/lib/squid/errors/tr/ERR_CANNOT_FORWARD
-#usr/lib/squid/errors/tr/ERR_CONNECT_FAIL
-#usr/lib/squid/errors/tr/ERR_DIR_LISTING
-#usr/lib/squid/errors/tr/ERR_DNS_FAIL
-#usr/lib/squid/errors/tr/ERR_ESI
-#usr/lib/squid/errors/tr/ERR_FORWARDING_DENIED
-#usr/lib/squid/errors/tr/ERR_FTP_DISABLED
-#usr/lib/squid/errors/tr/ERR_FTP_FAILURE
-#usr/lib/squid/errors/tr/ERR_FTP_FORBIDDEN
-#usr/lib/squid/errors/tr/ERR_FTP_NOT_FOUND
-#usr/lib/squid/errors/tr/ERR_FTP_PUT_CREATED
-#usr/lib/squid/errors/tr/ERR_FTP_PUT_ERROR
-#usr/lib/squid/errors/tr/ERR_FTP_PUT_MODIFIED
-#usr/lib/squid/errors/tr/ERR_FTP_UNAVAILABLE
-#usr/lib/squid/errors/tr/ERR_GATEWAY_FAILURE
-#usr/lib/squid/errors/tr/ERR_ICAP_FAILURE
-#usr/lib/squid/errors/tr/ERR_INVALID_REQ
-#usr/lib/squid/errors/tr/ERR_INVALID_RESP
-#usr/lib/squid/errors/tr/ERR_INVALID_URL
-#usr/lib/squid/errors/tr/ERR_LIFETIME_EXP
-#usr/lib/squid/errors/tr/ERR_NO_RELAY
-#usr/lib/squid/errors/tr/ERR_ONLY_IF_CACHED_MISS
-#usr/lib/squid/errors/tr/ERR_PRECONDITION_FAILED
-#usr/lib/squid/errors/tr/ERR_READ_ERROR
-#usr/lib/squid/errors/tr/ERR_READ_TIMEOUT
-#usr/lib/squid/errors/tr/ERR_SECURE_CONNECT_FAIL
-#usr/lib/squid/errors/tr/ERR_SHUTTING_DOWN
-#usr/lib/squid/errors/tr/ERR_SOCKET_FAILURE
-#usr/lib/squid/errors/tr/ERR_TOO_BIG
-#usr/lib/squid/errors/tr/ERR_UNSUP_HTTPVERSION
-#usr/lib/squid/errors/tr/ERR_UNSUP_REQ
-#usr/lib/squid/errors/tr/ERR_URN_RESOLVE
-#usr/lib/squid/errors/tr/ERR_WRITE_ERROR
-#usr/lib/squid/errors/tr/ERR_ZERO_SIZE_OBJECT
-#usr/lib/squid/errors/tr/error-details.txt
+usr/lib/squid/errors/tr/ERR_ACCESS_DENIED
+usr/lib/squid/errors/tr/ERR_ACL_TIME_QUOTA_EXCEEDED
+usr/lib/squid/errors/tr/ERR_AGENT_CONFIGURE
+usr/lib/squid/errors/tr/ERR_AGENT_WPAD
+usr/lib/squid/errors/tr/ERR_CACHE_ACCESS_DENIED
+usr/lib/squid/errors/tr/ERR_CACHE_MGR_ACCESS_DENIED
+usr/lib/squid/errors/tr/ERR_CANNOT_FORWARD
+usr/lib/squid/errors/tr/ERR_CONFLICT_HOST
+usr/lib/squid/errors/tr/ERR_CONNECT_FAIL
+usr/lib/squid/errors/tr/ERR_DIR_LISTING
+usr/lib/squid/errors/tr/ERR_DNS_FAIL
+usr/lib/squid/errors/tr/ERR_ESI
+usr/lib/squid/errors/tr/ERR_FORWARDING_DENIED
+usr/lib/squid/errors/tr/ERR_FTP_DISABLED
+usr/lib/squid/errors/tr/ERR_FTP_FAILURE
+usr/lib/squid/errors/tr/ERR_FTP_FORBIDDEN
+usr/lib/squid/errors/tr/ERR_FTP_NOT_FOUND
+usr/lib/squid/errors/tr/ERR_FTP_PUT_CREATED
+usr/lib/squid/errors/tr/ERR_FTP_PUT_ERROR
+usr/lib/squid/errors/tr/ERR_FTP_PUT_MODIFIED
+usr/lib/squid/errors/tr/ERR_FTP_UNAVAILABLE
+usr/lib/squid/errors/tr/ERR_GATEWAY_FAILURE
+usr/lib/squid/errors/tr/ERR_ICAP_FAILURE
+usr/lib/squid/errors/tr/ERR_INVALID_REQ
+usr/lib/squid/errors/tr/ERR_INVALID_RESP
+usr/lib/squid/errors/tr/ERR_INVALID_URL
+usr/lib/squid/errors/tr/ERR_LIFETIME_EXP
+usr/lib/squid/errors/tr/ERR_NO_RELAY
+usr/lib/squid/errors/tr/ERR_ONLY_IF_CACHED_MISS
+usr/lib/squid/errors/tr/ERR_PRECONDITION_FAILED
+usr/lib/squid/errors/tr/ERR_READ_ERROR
+usr/lib/squid/errors/tr/ERR_READ_TIMEOUT
+usr/lib/squid/errors/tr/ERR_SECURE_CONNECT_FAIL
+usr/lib/squid/errors/tr/ERR_SHUTTING_DOWN
+usr/lib/squid/errors/tr/ERR_SOCKET_FAILURE
+usr/lib/squid/errors/tr/ERR_TOO_BIG
+usr/lib/squid/errors/tr/ERR_UNSUP_HTTPVERSION
+usr/lib/squid/errors/tr/ERR_UNSUP_REQ
+usr/lib/squid/errors/tr/ERR_URN_RESOLVE
+usr/lib/squid/errors/tr/ERR_WRITE_ERROR
+usr/lib/squid/errors/tr/ERR_ZERO_SIZE_OBJECT
+usr/lib/squid/errors/tr/error-details.txt
 #usr/lib/squid/errors/uk
 #usr/lib/squid/errors/uk-ua
 #usr/lib/squid/errors/uk/ERR_ACCESS_DENIED
@@ -1809,6 +1869,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/uk/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/uk/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/uk/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/uk/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/uk/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/uk/ERR_DIR_LISTING
 #usr/lib/squid/errors/uk/ERR_DNS_FAIL
@@ -1851,6 +1912,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/uz/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/uz/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/uz/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/uz/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/uz/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/uz/ERR_DIR_LISTING
 #usr/lib/squid/errors/uz/ERR_DNS_FAIL
@@ -1894,6 +1956,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/vi/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/vi/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/vi/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/vi/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/vi/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/vi/ERR_DIR_LISTING
 #usr/lib/squid/errors/vi/ERR_DNS_FAIL
@@ -1936,6 +1999,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/zh-cn/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/zh-cn/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/zh-cn/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/zh-cn/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/zh-cn/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/zh-cn/ERR_DIR_LISTING
 #usr/lib/squid/errors/zh-cn/ERR_DNS_FAIL
@@ -1981,6 +2045,7 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/zh-tw/ERR_CACHE_ACCESS_DENIED
 #usr/lib/squid/errors/zh-tw/ERR_CACHE_MGR_ACCESS_DENIED
 #usr/lib/squid/errors/zh-tw/ERR_CANNOT_FORWARD
+#usr/lib/squid/errors/zh-tw/ERR_CONFLICT_HOST
 #usr/lib/squid/errors/zh-tw/ERR_CONNECT_FAIL
 #usr/lib/squid/errors/zh-tw/ERR_DIR_LISTING
 #usr/lib/squid/errors/zh-tw/ERR_DNS_FAIL
@@ -2015,65 +2080,103 @@ usr/lib/squid/errors/ru/error-details.txt
 #usr/lib/squid/errors/zh-tw/ERR_WRITE_ERROR
 #usr/lib/squid/errors/zh-tw/ERR_ZERO_SIZE_OBJECT
 #usr/lib/squid/errors/zh-tw/error-details.txt
-usr/lib/squid/fakeauth_auth
+usr/lib/squid/ext_edirectory_userip_acl
+usr/lib/squid/ext_file_userip_acl
+usr/lib/squid/ext_kerberos_ldap_group_acl
+usr/lib/squid/ext_ldap_group_acl
+usr/lib/squid/ext_session_acl
+usr/lib/squid/ext_sql_session_acl
+usr/lib/squid/ext_time_quota_acl
+usr/lib/squid/ext_unix_group_acl
+usr/lib/squid/ext_wbinfo_group_acl
+usr/lib/squid/helper-mux.pl
 usr/lib/squid/icons
-#usr/lib/squid/icons/anthony-binhex.gif
-#usr/lib/squid/icons/anthony-bomb.gif
-#usr/lib/squid/icons/anthony-box.gif
-#usr/lib/squid/icons/anthony-box2.gif
-#usr/lib/squid/icons/anthony-c.gif
-#usr/lib/squid/icons/anthony-compressed.gif
-#usr/lib/squid/icons/anthony-dir.gif
-#usr/lib/squid/icons/anthony-dirup.gif
-#usr/lib/squid/icons/anthony-dvi.gif
-#usr/lib/squid/icons/anthony-f.gif
-#usr/lib/squid/icons/anthony-image.gif
-#usr/lib/squid/icons/anthony-image2.gif
-#usr/lib/squid/icons/anthony-layout.gif
-#usr/lib/squid/icons/anthony-link.gif
-#usr/lib/squid/icons/anthony-movie.gif
-#usr/lib/squid/icons/anthony-pdf.gif
-#usr/lib/squid/icons/anthony-portal.gif
-#usr/lib/squid/icons/anthony-ps.gif
-#usr/lib/squid/icons/anthony-quill.gif
-#usr/lib/squid/icons/anthony-script.gif
-#usr/lib/squid/icons/anthony-sound.gif
-#usr/lib/squid/icons/anthony-tar.gif
-#usr/lib/squid/icons/anthony-tex.gif
-#usr/lib/squid/icons/anthony-text.gif
-#usr/lib/squid/icons/anthony-unknown.gif
-#usr/lib/squid/icons/anthony-xbm.gif
-#usr/lib/squid/icons/anthony-xpm.gif
-usr/lib/squid/ip_user_check
+usr/lib/squid/icons/SN.png
+usr/lib/squid/icons/silk
+usr/lib/squid/icons/silk/application.png
+usr/lib/squid/icons/silk/arrow_up.png
+usr/lib/squid/icons/silk/bomb.png
+usr/lib/squid/icons/silk/box.png
+usr/lib/squid/icons/silk/bricks.png
+usr/lib/squid/icons/silk/bullet_red.png
+usr/lib/squid/icons/silk/cd.png
+usr/lib/squid/icons/silk/chart_line.png
+usr/lib/squid/icons/silk/compress.png
+usr/lib/squid/icons/silk/computer_link.png
+usr/lib/squid/icons/silk/css.png
+usr/lib/squid/icons/silk/cup.png
+usr/lib/squid/icons/silk/database.png
+usr/lib/squid/icons/silk/database_table.png
+usr/lib/squid/icons/silk/drive_disk.png
+usr/lib/squid/icons/silk/film.png
+usr/lib/squid/icons/silk/film_key.png
+usr/lib/squid/icons/silk/folder.png
+usr/lib/squid/icons/silk/folder_table.png
+usr/lib/squid/icons/silk/image.png
+usr/lib/squid/icons/silk/information.png
+usr/lib/squid/icons/silk/layers.png
+usr/lib/squid/icons/silk/layout.png
+usr/lib/squid/icons/silk/link.png
+usr/lib/squid/icons/silk/music.png
+usr/lib/squid/icons/silk/package.png
+usr/lib/squid/icons/silk/package_go.png
+usr/lib/squid/icons/silk/page_code.png
+usr/lib/squid/icons/silk/page_excel.png
+usr/lib/squid/icons/silk/page_green.png
+usr/lib/squid/icons/silk/page_white.png
+usr/lib/squid/icons/silk/page_white_acrobat.png
+usr/lib/squid/icons/silk/page_white_c.png
+usr/lib/squid/icons/silk/page_white_cplusplus.png
+usr/lib/squid/icons/silk/page_white_flash.png
+usr/lib/squid/icons/silk/page_white_magnify.png
+usr/lib/squid/icons/silk/page_white_picture.png
+usr/lib/squid/icons/silk/page_white_powerpoint.png
+usr/lib/squid/icons/silk/page_white_stack.png
+usr/lib/squid/icons/silk/page_white_text.png
+usr/lib/squid/icons/silk/page_white_word.png
+usr/lib/squid/icons/silk/page_white_zip.png
+usr/lib/squid/icons/silk/page_world.png
+usr/lib/squid/icons/silk/photo.png
+usr/lib/squid/icons/silk/picture.png
+usr/lib/squid/icons/silk/plugin.png
+usr/lib/squid/icons/silk/plugin_add.png
+usr/lib/squid/icons/silk/script.png
+usr/lib/squid/icons/silk/script_gear.png
+usr/lib/squid/icons/silk/script_palette.png
+usr/lib/squid/log_db_daemon
+usr/lib/squid/log_file_daemon
 usr/lib/squid/mib.txt
-usr/lib/squid/msnt_auth
-usr/lib/squid/ncsa_auth
-usr/lib/squid/no_check.pl
+usr/lib/squid/negotiate_wrapper_auth
+usr/lib/squid/ntlm_fake_auth
 usr/lib/squid/ntlm_smb_lm_auth
-usr/lib/squid/pam_auth
-usr/lib/squid/pinger
-usr/lib/squid/smb_auth
-usr/lib/squid/smb_auth.pl
-usr/lib/squid/smb_auth.sh
-usr/lib/squid/squid_ldap_auth
-usr/lib/squid/squid_ldap_group
-usr/lib/squid/squid_radius_auth
-usr/lib/squid/squid_session
-usr/lib/squid/squid_unix_group
+usr/lib/squid/storeid_file_rewrite
 usr/lib/squid/unlinkd
-usr/lib/squid/wbinfo_group.pl
+usr/lib/squid/url_fake_rewrite
+usr/lib/squid/url_fake_rewrite.sh
 usr/sbin/squid
 usr/sbin/updxlrator
 #usr/share/man/man1/squidclient.1
+#usr/share/man/man8/basic_db_auth.8
+#usr/share/man/man8/basic_getpwnam_auth.8
+#usr/share/man/man8/basic_ldap_auth.8
+#usr/share/man/man8/basic_ncsa_auth.8
+#usr/share/man/man8/basic_pam_auth.8
+#usr/share/man/man8/basic_radius_auth.8
+#usr/share/man/man8/basic_sasl_auth.8
 #usr/share/man/man8/cachemgr.cgi.8
-#usr/share/man/man8/ncsa_auth.8
-#usr/share/man/man8/pam_auth.8
+#usr/share/man/man8/digest_file_auth.8
+#usr/share/man/man8/ext_edirectory_userip_acl.8
+#usr/share/man/man8/ext_file_userip_acl.8
+#usr/share/man/man8/ext_ldap_group_acl.8
+#usr/share/man/man8/ext_session_acl.8
+#usr/share/man/man8/ext_sql_session_acl.8
+#usr/share/man/man8/ext_time_quota_acl.8
+#usr/share/man/man8/ext_unix_group_acl.8
+#usr/share/man/man8/ext_wbinfo_group_acl.8
+#usr/share/man/man8/log_db_daemon.8
 #usr/share/man/man8/squid.8
-#usr/share/man/man8/squid_ldap_auth.8
-#usr/share/man/man8/squid_ldap_group.8
-#usr/share/man/man8/squid_radius_auth.8
-#usr/share/man/man8/squid_session.8
-#usr/share/man/man8/squid_unix_group.8
+#usr/share/man/man8/storeid_file_rewrite.8
+#var/cache/squid
 var/ipfire/proxy/errorpage-ipfire.css
 var/ipfire/proxy/errorpage-squid.css
 var/ipfire/updatexlrator/autocheck/cron.daily
index 1e91b37438ca79f0a708841013680160ae77957f..87649e9726b942db11496c458ac754032adf3ba7 100644 (file)
@@ -20,8 +20,8 @@ etc/ld.so.conf
 etc/logrotate.conf
 etc/mime.types
 etc/modprobe.d
-etc/modprobe.d/cfg80211
-etc/modprobe.d/pcspeaker
+etc/modprobe.d/cfg80211.conf
+etc/modprobe.d/pcspeaker.conf
 etc/modules.conf
 etc/mtab
 etc/nsswitch.conf
@@ -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
@@ -61,6 +66,9 @@ root/ipfire
 #usr/bin/perl
 #usr/include
 #usr/lib
+usr/lib/firewall
+usr/lib/firewall/firewall-lib.pl
+usr/lib/firewall/rules.pl
 #usr/lib/libgcc_s.so
 usr/lib/libgcc_s.so.1
 #usr/lib/libstdc++.la
@@ -72,7 +80,7 @@ usr/lib/libstdc++.so.6
 usr/local/bin/backupiso
 usr/local/bin/connscheduler
 usr/local/bin/consort.sh
-usr/local/bin/dialctrl.pl
+usr/local/bin/convert-ovpn
 usr/local/bin/hddshutdown
 usr/local/bin/httpscert
 usr/local/bin/makegraphs
@@ -85,6 +93,7 @@ usr/local/bin/scanhd
 usr/local/bin/setddns.pl
 usr/local/bin/settime
 usr/local/bin/timecheck
+usr/local/bin/timezone-transition
 #usr/local/bin/uname
 usr/local/bin/update-lang-cache
 #usr/local/include
@@ -127,6 +136,7 @@ usr/share/doc/licenses/GPLv3
 #usr/share/misc
 #usr/share/terminfo
 #usr/share/zoneinfo
+run
 #var
 #var/cache
 var/empty
@@ -145,7 +155,6 @@ var/log/wtmp
 var/mail
 #var/opt
 var/run
-var/run/utmp
 #var/spool
 var/tmp
 dev/console
index 2d5d42b43160940adfc6f9de0875f0321b405f4e..6d7bb0de466b4aa9545a6563e1d450bcb94db7ec 100644 (file)
@@ -10,6 +10,59 @@ etc/ipsec.d/private
 etc/ipsec.d/reqs
 etc/ipsec.secrets
 etc/strongswan.conf
+etc/strongswan.d
+etc/strongswan.d/charon
+etc/strongswan.d/charon-logging.conf
+etc/strongswan.d/charon.conf
+etc/strongswan.d/charon/aes.conf
+etc/strongswan.d/charon/attr.conf
+etc/strongswan.d/charon/cmac.conf
+etc/strongswan.d/charon/constraints.conf
+etc/strongswan.d/charon/curl.conf
+etc/strongswan.d/charon/des.conf
+etc/strongswan.d/charon/dhcp.conf
+etc/strongswan.d/charon/dnskey.conf
+etc/strongswan.d/charon/eap-identity.conf
+etc/strongswan.d/charon/eap-mschapv2.conf
+etc/strongswan.d/charon/eap-peap.conf
+etc/strongswan.d/charon/eap-radius.conf
+etc/strongswan.d/charon/eap-tls.conf
+etc/strongswan.d/charon/eap-ttls.conf
+etc/strongswan.d/charon/farp.conf
+etc/strongswan.d/charon/fips-prf.conf
+etc/strongswan.d/charon/gmp.conf
+etc/strongswan.d/charon/hmac.conf
+etc/strongswan.d/charon/kernel-netlink.conf
+etc/strongswan.d/charon/md5.conf
+etc/strongswan.d/charon/nonce.conf
+etc/strongswan.d/charon/openssl.conf
+#etc/strongswan.d/charon/padlock.conf
+etc/strongswan.d/charon/pem.conf
+etc/strongswan.d/charon/pgp.conf
+etc/strongswan.d/charon/pkcs1.conf
+etc/strongswan.d/charon/pkcs12.conf
+etc/strongswan.d/charon/pkcs7.conf
+etc/strongswan.d/charon/pkcs8.conf
+etc/strongswan.d/charon/pubkey.conf
+etc/strongswan.d/charon/random.conf
+etc/strongswan.d/charon/rc2.conf
+etc/strongswan.d/charon/resolve.conf
+etc/strongswan.d/charon/revocation.conf
+etc/strongswan.d/charon/sha1.conf
+etc/strongswan.d/charon/sha2.conf
+etc/strongswan.d/charon/socket-default.conf
+etc/strongswan.d/charon/sshkey.conf
+etc/strongswan.d/charon/stroke.conf
+etc/strongswan.d/charon/unity.conf
+etc/strongswan.d/charon/updown.conf
+etc/strongswan.d/charon/x509.conf
+etc/strongswan.d/charon/xauth-eap.conf
+etc/strongswan.d/charon/xauth-generic.conf
+etc/strongswan.d/charon/xauth-noauth.conf
+etc/strongswan.d/charon/xcbc.conf
+etc/strongswan.d/starter.conf
+etc/strongswan.d/tools.conf
+usr/bin/pki
 #usr/lib/ipsec
 #usr/lib/ipsec/libcharon.a
 #usr/lib/ipsec/libcharon.la
@@ -31,15 +84,27 @@ usr/lib/ipsec/libradius.so.0.0.0
 usr/lib/ipsec/libstrongswan.so
 usr/lib/ipsec/libstrongswan.so.0
 usr/lib/ipsec/libstrongswan.so.0.0.0
+#usr/lib/ipsec/libtls.a
+#usr/lib/ipsec/libtls.la
+usr/lib/ipsec/libtls.so
+usr/lib/ipsec/libtls.so.0
+usr/lib/ipsec/libtls.so.0.0.0
 #usr/lib/ipsec/plugins
 usr/lib/ipsec/plugins/libstrongswan-aes.so
 usr/lib/ipsec/plugins/libstrongswan-attr.so
 usr/lib/ipsec/plugins/libstrongswan-cmac.so
 usr/lib/ipsec/plugins/libstrongswan-constraints.so
 usr/lib/ipsec/plugins/libstrongswan-curl.so
+usr/lib/ipsec/plugins/libstrongswan-dhcp.so
 usr/lib/ipsec/plugins/libstrongswan-des.so
 usr/lib/ipsec/plugins/libstrongswan-dnskey.so
+usr/lib/ipsec/plugins/libstrongswan-eap-identity.so
+usr/lib/ipsec/plugins/libstrongswan-eap-mschapv2.so
+usr/lib/ipsec/plugins/libstrongswan-eap-peap.so
 usr/lib/ipsec/plugins/libstrongswan-eap-radius.so
+usr/lib/ipsec/plugins/libstrongswan-eap-tls.so
+usr/lib/ipsec/plugins/libstrongswan-eap-ttls.so
+usr/lib/ipsec/plugins/libstrongswan-farp.so
 usr/lib/ipsec/plugins/libstrongswan-fips-prf.so
 usr/lib/ipsec/plugins/libstrongswan-gmp.so
 usr/lib/ipsec/plugins/libstrongswan-hmac.so
@@ -51,31 +116,48 @@ usr/lib/ipsec/plugins/libstrongswan-openssl.so
 usr/lib/ipsec/plugins/libstrongswan-pem.so
 usr/lib/ipsec/plugins/libstrongswan-pgp.so
 usr/lib/ipsec/plugins/libstrongswan-pkcs1.so
+usr/lib/ipsec/plugins/libstrongswan-pkcs12.so
 usr/lib/ipsec/plugins/libstrongswan-pkcs7.so
 usr/lib/ipsec/plugins/libstrongswan-pkcs8.so
 usr/lib/ipsec/plugins/libstrongswan-pubkey.so
 usr/lib/ipsec/plugins/libstrongswan-random.so
+usr/lib/ipsec/plugins/libstrongswan-rc2.so
+#usr/lib/ipsec/plugins/libstrongswan-rdrand.so
 usr/lib/ipsec/plugins/libstrongswan-resolve.so
 usr/lib/ipsec/plugins/libstrongswan-revocation.so
 usr/lib/ipsec/plugins/libstrongswan-sha1.so
 usr/lib/ipsec/plugins/libstrongswan-sha2.so
 usr/lib/ipsec/plugins/libstrongswan-socket-default.so
+usr/lib/ipsec/plugins/libstrongswan-sshkey.so
 usr/lib/ipsec/plugins/libstrongswan-stroke.so
+usr/lib/ipsec/plugins/libstrongswan-unity.so
 usr/lib/ipsec/plugins/libstrongswan-updown.so
 usr/lib/ipsec/plugins/libstrongswan-x509.so
+usr/lib/ipsec/plugins/libstrongswan-xauth-eap.so
 usr/lib/ipsec/plugins/libstrongswan-xauth-generic.so
+usr/lib/ipsec/plugins/libstrongswan-xauth-noauth.so
 usr/lib/ipsec/plugins/libstrongswan-xcbc.so
 #usr/libexec/ipsec
 usr/libexec/ipsec/_copyright
 usr/libexec/ipsec/_updown
 usr/libexec/ipsec/_updown_espmark
 usr/libexec/ipsec/charon
-usr/libexec/ipsec/openac
-usr/libexec/ipsec/pki
 usr/libexec/ipsec/scepclient
 usr/libexec/ipsec/starter
 usr/libexec/ipsec/stroke
 usr/sbin/ipsec
+#usr/share/man/man1/pki---acert.1
+#usr/share/man/man1/pki---gen.1
+#usr/share/man/man1/pki---issue.1
+#usr/share/man/man1/pki---keyid.1
+#usr/share/man/man1/pki---pkcs7.1
+#usr/share/man/man1/pki---print.1
+#usr/share/man/man1/pki---pub.1
+#usr/share/man/man1/pki---req.1
+#usr/share/man/man1/pki---self.1
+#usr/share/man/man1/pki---signcrl.1
+#usr/share/man/man1/pki---verify.1
+#usr/share/man/man1/pki.1
 #usr/share/man/man5/ipsec.conf.5
 #usr/share/man/man5/ipsec.secrets.5
 #usr/share/man/man5/strongswan.conf.5
@@ -84,3 +166,59 @@ usr/sbin/ipsec
 #usr/share/man/man8/ipsec.8
 #usr/share/man/man8/openac.8
 #usr/share/man/man8/scepclient.8
+#usr/share/strongswan
+#usr/share/strongswan/templates
+#usr/share/strongswan/templates/config
+#usr/share/strongswan/templates/config/plugins
+#usr/share/strongswan/templates/config/plugins/aes.conf
+#usr/share/strongswan/templates/config/plugins/attr.conf
+#usr/share/strongswan/templates/config/plugins/cmac.conf
+#usr/share/strongswan/templates/config/plugins/constraints.conf
+#usr/share/strongswan/templates/config/plugins/curl.conf
+#usr/share/strongswan/templates/config/plugins/des.conf
+#usr/share/strongswan/templates/config/plugins/dhcp.conf
+#usr/share/strongswan/templates/config/plugins/dnskey.conf
+#usr/share/strongswan/templates/config/plugins/eap-identity.conf
+#usr/share/strongswan/templates/config/plugins/eap-mschapv2.conf
+#usr/share/strongswan/templates/config/plugins/eap-peap.conf
+#usr/share/strongswan/templates/config/plugins/eap-radius.conf
+#usr/share/strongswan/templates/config/plugins/eap-tls.conf
+#usr/share/strongswan/templates/config/plugins/eap-ttls.conf
+#usr/share/strongswan/templates/config/plugins/farp.conf
+#usr/share/strongswan/templates/config/plugins/fips-prf.conf
+#usr/share/strongswan/templates/config/plugins/gmp.conf
+#usr/share/strongswan/templates/config/plugins/hmac.conf
+#usr/share/strongswan/templates/config/plugins/kernel-netlink.conf
+#usr/share/strongswan/templates/config/plugins/md5.conf
+#usr/share/strongswan/templates/config/plugins/nonce.conf
+#usr/share/strongswan/templates/config/plugins/openssl.conf
+#usr/share/strongswan/templates/config/plugins/padlock.conf
+#usr/share/strongswan/templates/config/plugins/pem.conf
+#usr/share/strongswan/templates/config/plugins/pgp.conf
+#usr/share/strongswan/templates/config/plugins/pkcs1.conf
+#usr/share/strongswan/templates/config/plugins/pkcs12.conf
+#usr/share/strongswan/templates/config/plugins/pkcs7.conf
+#usr/share/strongswan/templates/config/plugins/pkcs8.conf
+#usr/share/strongswan/templates/config/plugins/pubkey.conf
+#usr/share/strongswan/templates/config/plugins/random.conf
+#usr/share/strongswan/templates/config/plugins/rc2.conf
+#usr/share/strongswan/templates/config/plugins/resolve.conf
+#usr/share/strongswan/templates/config/plugins/revocation.conf
+#usr/share/strongswan/templates/config/plugins/sha1.conf
+#usr/share/strongswan/templates/config/plugins/sha2.conf
+#usr/share/strongswan/templates/config/plugins/socket-default.conf
+#usr/share/strongswan/templates/config/plugins/sshkey.conf
+#usr/share/strongswan/templates/config/plugins/stroke.conf
+#usr/share/strongswan/templates/config/plugins/unity.conf
+#usr/share/strongswan/templates/config/plugins/updown.conf
+#usr/share/strongswan/templates/config/plugins/x509.conf
+#usr/share/strongswan/templates/config/plugins/xauth-eap.conf
+#usr/share/strongswan/templates/config/plugins/xauth-generic.conf
+#usr/share/strongswan/templates/config/plugins/xauth-noauth.conf
+#usr/share/strongswan/templates/config/plugins/xcbc.conf
+#usr/share/strongswan/templates/config/strongswan.conf
+#usr/share/strongswan/templates/config/strongswan.d
+#usr/share/strongswan/templates/config/strongswan.d/charon-logging.conf
+#usr/share/strongswan/templates/config/strongswan.d/charon.conf
+#usr/share/strongswan/templates/config/strongswan.d/starter.conf
+#usr/share/strongswan/templates/config/strongswan.d/tools.conf
index 4aa763ef79a5cae5811892f47d6fe093741389ce..c904fc337e7ba4c92d17167d6639aea1e0fc63e2 100644 (file)
@@ -1,10 +1,77 @@
 etc/sudoers
+etc/sudoers.d
 usr/bin/sudo
 usr/bin/sudoedit
-usr/lib/sudo_noexec.la
-usr/lib/sudo_noexec.so
-#usr/man/man5/sudoers.5
-#usr/man/man8/sudo.8
-#usr/man/man8/sudoedit.8
-#usr/man/man8/visudo.8
+usr/bin/sudoreplay
+#usr/include/sudo_plugin.h
+usr/lib/sudo
+usr/lib/sudo/group_file.so
+usr/lib/sudo/sudo_noexec.so
+usr/lib/sudo/sudoers.so
+usr/lib/sudo/system_group.so
 usr/sbin/visudo
+#usr/share/doc/sudo
+#usr/share/doc/sudo/CONTRIBUTORS
+#usr/share/doc/sudo/ChangeLog
+#usr/share/doc/sudo/HISTORY
+#usr/share/doc/sudo/LICENSE
+#usr/share/doc/sudo/NEWS
+#usr/share/doc/sudo/README
+#usr/share/doc/sudo/TROUBLESHOOTING
+#usr/share/doc/sudo/UPGRADE
+#usr/share/doc/sudo/sample.pam
+#usr/share/doc/sudo/sample.sudo.conf
+#usr/share/doc/sudo/sample.sudoers
+#usr/share/doc/sudo/sample.syslog.conf
+#usr/share/locale/ca/LC_MESSAGES/sudo.mo
+#usr/share/locale/cs/LC_MESSAGES/sudo.mo
+#usr/share/locale/cs/LC_MESSAGES/sudoers.mo
+#usr/share/locale/da/LC_MESSAGES/sudo.mo
+#usr/share/locale/da/LC_MESSAGES/sudoers.mo
+#usr/share/locale/de/LC_MESSAGES/sudo.mo
+#usr/share/locale/de/LC_MESSAGES/sudoers.mo
+#usr/share/locale/eo/LC_MESSAGES/sudo.mo
+#usr/share/locale/eo/LC_MESSAGES/sudoers.mo
+#usr/share/locale/es/LC_MESSAGES/sudo.mo
+#usr/share/locale/eu/LC_MESSAGES/sudo.mo
+#usr/share/locale/eu/LC_MESSAGES/sudoers.mo
+#usr/share/locale/fi/LC_MESSAGES/sudo.mo
+#usr/share/locale/fi/LC_MESSAGES/sudoers.mo
+#usr/share/locale/fr/LC_MESSAGES/sudo.mo
+#usr/share/locale/gl/LC_MESSAGES/sudo.mo
+#usr/share/locale/hr/LC_MESSAGES/sudo.mo
+#usr/share/locale/hr/LC_MESSAGES/sudoers.mo
+#usr/share/locale/it/LC_MESSAGES/sudo.mo
+#usr/share/locale/it/LC_MESSAGES/sudoers.mo
+#usr/share/locale/ja/LC_MESSAGES/sudo.mo
+#usr/share/locale/ja/LC_MESSAGES/sudoers.mo
+#usr/share/locale/lt/LC_MESSAGES/sudoers.mo
+#usr/share/locale/nl/LC_MESSAGES/sudo.mo
+#usr/share/locale/nl/LC_MESSAGES/sudoers.mo
+#usr/share/locale/pl/LC_MESSAGES/sudo.mo
+#usr/share/locale/pl/LC_MESSAGES/sudoers.mo
+#usr/share/locale/pt_BR/LC_MESSAGES/sudo.mo
+#usr/share/locale/pt_BR/LC_MESSAGES/sudoers.mo
+#usr/share/locale/ru/LC_MESSAGES/sudo.mo
+#usr/share/locale/sl/LC_MESSAGES/sudo.mo
+#usr/share/locale/sl/LC_MESSAGES/sudoers.mo
+#usr/share/locale/sr/LC_MESSAGES/sudo.mo
+#usr/share/locale/sr/LC_MESSAGES/sudoers.mo
+#usr/share/locale/sv/LC_MESSAGES/sudo.mo
+#usr/share/locale/sv/LC_MESSAGES/sudoers.mo
+#usr/share/locale/tr/LC_MESSAGES/sudo.mo
+#usr/share/locale/tr/LC_MESSAGES/sudoers.mo
+#usr/share/locale/uk/LC_MESSAGES/sudo.mo
+#usr/share/locale/uk/LC_MESSAGES/sudoers.mo
+#usr/share/locale/vi/LC_MESSAGES/sudo.mo
+#usr/share/locale/vi/LC_MESSAGES/sudoers.mo
+#usr/share/locale/zh_CN/LC_MESSAGES/sudo.mo
+#usr/share/locale/zh_CN/LC_MESSAGES/sudoers.mo
+#usr/share/man/man5/sudo.conf.5
+#usr/share/man/man5/sudoers.5
+#usr/share/man/man8/sudo.8
+#usr/share/man/man8/sudo_plugin.8
+#usr/share/man/man8/sudoedit.8
+#usr/share/man/man8/sudoreplay.8
+#usr/share/man/man8/visudo.8
+var/lib/sudo
index 7362a0f8a5c7ce023f33cb1617c3bbc1225f323c..4bb0df248efda0b3a621ff09f3e3974d016c66d1 100644 (file)
@@ -281,6 +281,7 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/Asia/Kashgar
 #usr/share/zoneinfo/Asia/Kathmandu
 #usr/share/zoneinfo/Asia/Katmandu
+#usr/share/zoneinfo/Asia/Khandyga
 #usr/share/zoneinfo/Asia/Kolkata
 #usr/share/zoneinfo/Asia/Krasnoyarsk
 #usr/share/zoneinfo/Asia/Kuala_Lumpur
@@ -304,9 +305,6 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/Asia/Qyzylorda
 #usr/share/zoneinfo/Asia/Rangoon
 #usr/share/zoneinfo/Asia/Riyadh
-#usr/share/zoneinfo/Asia/Riyadh87
-#usr/share/zoneinfo/Asia/Riyadh88
-#usr/share/zoneinfo/Asia/Riyadh89
 #usr/share/zoneinfo/Asia/Saigon
 #usr/share/zoneinfo/Asia/Sakhalin
 #usr/share/zoneinfo/Asia/Samarkand
@@ -325,6 +323,7 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/Asia/Ulaanbaatar
 #usr/share/zoneinfo/Asia/Ulan_Bator
 #usr/share/zoneinfo/Asia/Urumqi
+#usr/share/zoneinfo/Asia/Ust-Nera
 #usr/share/zoneinfo/Asia/Vientiane
 #usr/share/zoneinfo/Asia/Vladivostok
 #usr/share/zoneinfo/Asia/Yakutsk
@@ -440,6 +439,7 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/Europe/Brussels
 #usr/share/zoneinfo/Europe/Bucharest
 #usr/share/zoneinfo/Europe/Budapest
+#usr/share/zoneinfo/Europe/Busingen
 #usr/share/zoneinfo/Europe/Chisinau
 #usr/share/zoneinfo/Europe/Copenhagen
 #usr/share/zoneinfo/Europe/Dublin
@@ -524,10 +524,6 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/Mexico/BajaNorte
 #usr/share/zoneinfo/Mexico/BajaSur
 #usr/share/zoneinfo/Mexico/General
-#usr/share/zoneinfo/Mideast
-#usr/share/zoneinfo/Mideast/Riyadh87
-#usr/share/zoneinfo/Mideast/Riyadh88
-#usr/share/zoneinfo/Mideast/Riyadh89
 #usr/share/zoneinfo/NZ
 #usr/share/zoneinfo/NZ-CHAT
 #usr/share/zoneinfo/Navajo
@@ -886,6 +882,7 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/posix/Asia/Kashgar
 #usr/share/zoneinfo/posix/Asia/Kathmandu
 #usr/share/zoneinfo/posix/Asia/Katmandu
+#usr/share/zoneinfo/posix/Asia/Khandyga
 #usr/share/zoneinfo/posix/Asia/Kolkata
 #usr/share/zoneinfo/posix/Asia/Krasnoyarsk
 #usr/share/zoneinfo/posix/Asia/Kuala_Lumpur
@@ -909,9 +906,6 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/posix/Asia/Qyzylorda
 #usr/share/zoneinfo/posix/Asia/Rangoon
 #usr/share/zoneinfo/posix/Asia/Riyadh
-#usr/share/zoneinfo/posix/Asia/Riyadh87
-#usr/share/zoneinfo/posix/Asia/Riyadh88
-#usr/share/zoneinfo/posix/Asia/Riyadh89
 #usr/share/zoneinfo/posix/Asia/Saigon
 #usr/share/zoneinfo/posix/Asia/Sakhalin
 #usr/share/zoneinfo/posix/Asia/Samarkand
@@ -930,6 +924,7 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/posix/Asia/Ulaanbaatar
 #usr/share/zoneinfo/posix/Asia/Ulan_Bator
 #usr/share/zoneinfo/posix/Asia/Urumqi
+#usr/share/zoneinfo/posix/Asia/Ust-Nera
 #usr/share/zoneinfo/posix/Asia/Vientiane
 #usr/share/zoneinfo/posix/Asia/Vladivostok
 #usr/share/zoneinfo/posix/Asia/Yakutsk
@@ -1045,6 +1040,7 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/posix/Europe/Brussels
 #usr/share/zoneinfo/posix/Europe/Bucharest
 #usr/share/zoneinfo/posix/Europe/Budapest
+#usr/share/zoneinfo/posix/Europe/Busingen
 #usr/share/zoneinfo/posix/Europe/Chisinau
 #usr/share/zoneinfo/posix/Europe/Copenhagen
 #usr/share/zoneinfo/posix/Europe/Dublin
@@ -1093,7 +1089,6 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/posix/Europe/Zagreb
 #usr/share/zoneinfo/posix/Europe/Zaporozhye
 #usr/share/zoneinfo/posix/Europe/Zurich
-#usr/share/zoneinfo/posix/Factory
 #usr/share/zoneinfo/posix/GB
 #usr/share/zoneinfo/posix/GB-Eire
 #usr/share/zoneinfo/posix/GMT
@@ -1129,10 +1124,6 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/posix/Mexico/BajaNorte
 #usr/share/zoneinfo/posix/Mexico/BajaSur
 #usr/share/zoneinfo/posix/Mexico/General
-#usr/share/zoneinfo/posix/Mideast
-#usr/share/zoneinfo/posix/Mideast/Riyadh87
-#usr/share/zoneinfo/posix/Mideast/Riyadh88
-#usr/share/zoneinfo/posix/Mideast/Riyadh89
 #usr/share/zoneinfo/posix/NZ
 #usr/share/zoneinfo/posix/NZ-CHAT
 #usr/share/zoneinfo/posix/Navajo
@@ -1491,6 +1482,7 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/right/Asia/Kashgar
 #usr/share/zoneinfo/right/Asia/Kathmandu
 #usr/share/zoneinfo/right/Asia/Katmandu
+#usr/share/zoneinfo/right/Asia/Khandyga
 #usr/share/zoneinfo/right/Asia/Kolkata
 #usr/share/zoneinfo/right/Asia/Krasnoyarsk
 #usr/share/zoneinfo/right/Asia/Kuala_Lumpur
@@ -1514,9 +1506,6 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/right/Asia/Qyzylorda
 #usr/share/zoneinfo/right/Asia/Rangoon
 #usr/share/zoneinfo/right/Asia/Riyadh
-#usr/share/zoneinfo/right/Asia/Riyadh87
-#usr/share/zoneinfo/right/Asia/Riyadh88
-#usr/share/zoneinfo/right/Asia/Riyadh89
 #usr/share/zoneinfo/right/Asia/Saigon
 #usr/share/zoneinfo/right/Asia/Sakhalin
 #usr/share/zoneinfo/right/Asia/Samarkand
@@ -1535,6 +1524,7 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/right/Asia/Ulaanbaatar
 #usr/share/zoneinfo/right/Asia/Ulan_Bator
 #usr/share/zoneinfo/right/Asia/Urumqi
+#usr/share/zoneinfo/right/Asia/Ust-Nera
 #usr/share/zoneinfo/right/Asia/Vientiane
 #usr/share/zoneinfo/right/Asia/Vladivostok
 #usr/share/zoneinfo/right/Asia/Yakutsk
@@ -1650,6 +1640,7 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/right/Europe/Brussels
 #usr/share/zoneinfo/right/Europe/Bucharest
 #usr/share/zoneinfo/right/Europe/Budapest
+#usr/share/zoneinfo/right/Europe/Busingen
 #usr/share/zoneinfo/right/Europe/Chisinau
 #usr/share/zoneinfo/right/Europe/Copenhagen
 #usr/share/zoneinfo/right/Europe/Dublin
@@ -1698,7 +1689,6 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/right/Europe/Zagreb
 #usr/share/zoneinfo/right/Europe/Zaporozhye
 #usr/share/zoneinfo/right/Europe/Zurich
-#usr/share/zoneinfo/right/Factory
 #usr/share/zoneinfo/right/GB
 #usr/share/zoneinfo/right/GB-Eire
 #usr/share/zoneinfo/right/GMT
@@ -1734,10 +1724,6 @@ usr/share/zoneinfo
 #usr/share/zoneinfo/right/Mexico/BajaNorte
 #usr/share/zoneinfo/right/Mexico/BajaSur
 #usr/share/zoneinfo/right/Mexico/General
-#usr/share/zoneinfo/right/Mideast
-#usr/share/zoneinfo/right/Mideast/Riyadh87
-#usr/share/zoneinfo/right/Mideast/Riyadh88
-#usr/share/zoneinfo/right/Mideast/Riyadh89
 #usr/share/zoneinfo/right/NZ
 #usr/share/zoneinfo/right/NZ-CHAT
 #usr/share/zoneinfo/right/Navajo
index bacd0cbbe3c9323379b9cd1f28f169abe8f002ab..bc1cdaa1ff3ba1ceae448a37f13ed5b8314b6e85 100644 (file)
@@ -1,71 +1,99 @@
-etc/modprobe.d/blacklist
-etc/scsi_id.config
+bin/udevadm
+etc/modprobe.d/blacklist.conf
 etc/udev
 #etc/udev/rules.d
 #etc/udev/rules.d/30-persistent-network.rules
+#etc/udev/rules.d/55-lfs.rules
+#etc/udev/rules.d/81-cdrom.rules
+#etc/udev/rules.d/83-cdrom-symlinks.rules
 #etc/udev/udev.conf
 #lib/firmware
-lib/libudev.so.0
-lib/libudev.so.0.2.0
-lib/libvolume_id.so.1
-lib/libvolume_id.so.1.1.0
+lib/libudev.so.1
+lib/libudev.so.1.3.2
 lib/udev
+#lib/udev/accelerometer
 #lib/udev/ata_id
 #lib/udev/cdrom_id
 #lib/udev/collect
-#lib/udev/create_floppy_devices
 #lib/udev/devices
-#lib/udev/devices/core
-#lib/udev/devices/fd
-#lib/udev/devices/null
 #lib/udev/devices/pts
-#lib/udev/devices/shm
-#lib/udev/devices/stderr
-#lib/udev/devices/stdin
-#lib/udev/devices/stdout
-#lib/udev/edd_id
 #lib/udev/enable_codel
-#lib/udev/firmware.sh
-#lib/udev/fstab_import
-#lib/udev/path_id
+#lib/udev/hwdb.d
+#lib/udev/hwdb.d/20-OUI.hwdb
+#lib/udev/hwdb.d/20-acpi-vendor.hwdb
+#lib/udev/hwdb.d/20-bluetooth-vendor-product.hwdb
+#lib/udev/hwdb.d/20-pci-classes.hwdb
+#lib/udev/hwdb.d/20-pci-vendor-model.hwdb
+#lib/udev/hwdb.d/20-usb-classes.hwdb
+#lib/udev/hwdb.d/20-usb-vendor-model.hwdb
+#lib/udev/hwdb.d/60-keyboard.hwdb
+#lib/udev/init-net-rules.sh
+#lib/udev/mtd_probe
 #lib/udev/rule_generator.functions
 #lib/udev/rules.d
 #lib/udev/rules.d/25-alsa.rules
+#lib/udev/rules.d/42-usb-hid-pm.rules
 #lib/udev/rules.d/50-firmware.rules
 #lib/udev/rules.d/50-udev-default.rules
 #lib/udev/rules.d/60-cdrom_id.rules
+#lib/udev/rules.d/60-keyboard.rules
+#lib/udev/rules.d/60-persistent-alsa.rules
 #lib/udev/rules.d/60-persistent-input.rules
 #lib/udev/rules.d/60-persistent-serial.rules
 #lib/udev/rules.d/60-persistent-storage-tape.rules
 #lib/udev/rules.d/60-persistent-storage.rules
 #lib/udev/rules.d/60-persistent-v4l.rules
-#lib/udev/rules.d/61-persistent-storage-edd.rules
-#lib/udev/rules.d/75-cd-aliases-generator.rules
-#lib/udev/rules.d/79-fstab_import.rules
+#lib/udev/rules.d/61-accelerometer.rules
+#lib/udev/rules.d/64-btrfs.rules
+#lib/udev/rules.d/75-net-description.rules
+#lib/udev/rules.d/75-probe_mtd.rules
+#lib/udev/rules.d/75-tty-description.rules
+#lib/udev/rules.d/78-sound-card.rules
 #lib/udev/rules.d/80-drivers.rules
+#lib/udev/rules.d/80-net-name-slot.rules
+#lib/udev/rules.d/90-hwrng.rules
 #lib/udev/rules.d/95-udev-late.rules
 #lib/udev/rules.d/99-codel.rules
 #lib/udev/scsi_id
-#lib/udev/usb_id
-#lib/udev/vol_id
+#lib/udev/udevd
+#lib/udev/v4l_id
 #lib/udev/write_cd_rules
 #lib/udev/write_net_rules
 sbin/udevadm
 sbin/udevd
 #usr/include/libudev.h
-#usr/include/libvolume_id.h
+#usr/lib/firmware
 usr/lib/libudev.so
-usr/lib/libvolume_id.so
 #usr/lib/pkgconfig/libudev.pc
-#usr/lib/pkgconfig/libvolume_id.pc
+#usr/lib/pkgconfig/udev.pc
+#usr/share/doc/udev-208
+#usr/share/doc/udev-208/lfs
+#usr/share/doc/udev-208/lfs/55-lfs.txt
+#usr/share/doc/udev-208/lfs/README
+#usr/share/doc/udev-208/libudev-overrides.txt
+#usr/share/doc/udev-208/libudev-sections.txt
+#usr/share/doc/udev-208/libudev.types
+#usr/share/gtk-doc
+#usr/share/gtk-doc/html
+#usr/share/gtk-doc/html/libudev
+#usr/share/gtk-doc/html/libudev/api-index-full.html
+#usr/share/gtk-doc/html/libudev/ch01.html
+#usr/share/gtk-doc/html/libudev/home.png
+#usr/share/gtk-doc/html/libudev/index.html
+#usr/share/gtk-doc/html/libudev/index.sgml
+#usr/share/gtk-doc/html/libudev/left.png
+#usr/share/gtk-doc/html/libudev/libudev-udev-device.html
+#usr/share/gtk-doc/html/libudev/libudev-udev-enumerate.html
+#usr/share/gtk-doc/html/libudev/libudev-udev-hwdb.html
+#usr/share/gtk-doc/html/libudev/libudev-udev-list.html
+#usr/share/gtk-doc/html/libudev/libudev-udev-monitor.html
+#usr/share/gtk-doc/html/libudev/libudev-udev-queue.html
+#usr/share/gtk-doc/html/libudev/libudev-udev-util.html
+#usr/share/gtk-doc/html/libudev/libudev-udev.html
+#usr/share/gtk-doc/html/libudev/libudev.devhelp2
+#usr/share/gtk-doc/html/libudev/right.png
+#usr/share/gtk-doc/html/libudev/style.css
+#usr/share/gtk-doc/html/libudev/up.png
 #usr/share/man/man7/udev.7
-#usr/share/man/man8/ata_id.8
-#usr/share/man/man8/cdrom_id.8
-#usr/share/man/man8/create_floppy_devices.8
-#usr/share/man/man8/edd_id.8
-#usr/share/man/man8/path_id.8
-#usr/share/man/man8/scsi_id.8
 #usr/share/man/man8/udevadm.8
 #usr/share/man/man8/udevd.8
-#usr/share/man/man8/usb_id.8
-#usr/share/man/man8/vol_id.8
index ab46c4dc451f1918fbcb5d5998ab1be35c0cb3b2..2b386b345931e4e9b62d14b07c562902dbe91802 100644 (file)
@@ -3,4 +3,5 @@ lib/udev/usb_modeswitch
 usr/sbin/usb_modeswitch
 usr/sbin/usb_modeswitch_dispatcher
 #usr/share/man/man1/usb_modeswitch.1
+#usr/share/man/man1/usb_modeswitch_dispatcher.1
 var/lib/usb_modeswitch
index 448a19ea8f8537651a75de74afc948e1f5301c0a..70160f57e3f036bbb9b1385169e58f49b9a8af34 100644 (file)
@@ -2,23 +2,31 @@ etc/usb_modeswitch.d
 lib/udev/rules.d/40-usb_modeswitch.rules
 #usr/share/usb_modeswitch
 usr/share/usb_modeswitch/03f0:002a
+usr/share/usb_modeswitch/0408:ea17
+usr/share/usb_modeswitch/0408:ea25
+usr/share/usb_modeswitch/0408:ea43
 usr/share/usb_modeswitch/0408:f000
 usr/share/usb_modeswitch/0421:060c
 usr/share/usb_modeswitch/0421:0610
+usr/share/usb_modeswitch/0421:0618
 usr/share/usb_modeswitch/0421:061d
 usr/share/usb_modeswitch/0421:0622
 usr/share/usb_modeswitch/0421:0627
 usr/share/usb_modeswitch/0421:062c
+usr/share/usb_modeswitch/0421:0632
 usr/share/usb_modeswitch/0421:0637
 usr/share/usb_modeswitch/0471:1210:uMa=Philips
 usr/share/usb_modeswitch/0471:1210:uMa=Wisue
 usr/share/usb_modeswitch/0471:1237
 usr/share/usb_modeswitch/0482:024d
 usr/share/usb_modeswitch/04bb:bccd
+usr/share/usb_modeswitch/04cc:225c
 usr/share/usb_modeswitch/04e8:680c
 usr/share/usb_modeswitch/04e8:689a
 usr/share/usb_modeswitch/04e8:f000:sMo=U209
+usr/share/usb_modeswitch/057c:62ff
 usr/share/usb_modeswitch/057c:84ff
+usr/share/usb_modeswitch/05c6:0010
 usr/share/usb_modeswitch/05c6:1000:sVe=GT
 usr/share/usb_modeswitch/05c6:1000:sVe=Option
 usr/share/usb_modeswitch/05c6:1000:uMa=AnyDATA
@@ -27,12 +35,15 @@ usr/share/usb_modeswitch/05c6:1000:uMa=DGT
 usr/share/usb_modeswitch/05c6:1000:uMa=Option
 usr/share/usb_modeswitch/05c6:1000:uMa=SAMSUNG
 usr/share/usb_modeswitch/05c6:1000:uMa=SSE
+usr/share/usb_modeswitch/05c6:1000:uMa=StrongRising
 usr/share/usb_modeswitch/05c6:1000:uMa=Vertex
 usr/share/usb_modeswitch/05c6:2000
 usr/share/usb_modeswitch/05c6:2001
 usr/share/usb_modeswitch/05c6:6503
+usr/share/usb_modeswitch/05c6:9024
 usr/share/usb_modeswitch/05c6:f000
 usr/share/usb_modeswitch/05c7:1000
+usr/share/usb_modeswitch/0685:2000
 usr/share/usb_modeswitch/072f:100d
 usr/share/usb_modeswitch/07d1:a800
 usr/share/usb_modeswitch/07d1:a804
@@ -83,6 +94,7 @@ usr/share/usb_modeswitch/0af0:8700
 usr/share/usb_modeswitch/0af0:8800
 usr/share/usb_modeswitch/0af0:8900
 usr/share/usb_modeswitch/0af0:9000
+usr/share/usb_modeswitch/0af0:9200
 usr/share/usb_modeswitch/0af0:c031
 usr/share/usb_modeswitch/0af0:c100
 usr/share/usb_modeswitch/0af0:d001
@@ -104,8 +116,9 @@ usr/share/usb_modeswitch/0cf3:20ff
 usr/share/usb_modeswitch/0d46:45a1
 usr/share/usb_modeswitch/0d46:45a5
 usr/share/usb_modeswitch/0df7:0800
-usr/share/usb_modeswitch/0e8d:0002
+usr/share/usb_modeswitch/0e8d:0002:uPr=MT
 usr/share/usb_modeswitch/0e8d:7109
+usr/share/usb_modeswitch/0fca:8020
 usr/share/usb_modeswitch/0fce:d0cf
 usr/share/usb_modeswitch/0fce:d0e1
 usr/share/usb_modeswitch/0fce:d103
@@ -115,16 +128,22 @@ usr/share/usb_modeswitch/1004:607f
 usr/share/usb_modeswitch/1004:613a
 usr/share/usb_modeswitch/1004:613f
 usr/share/usb_modeswitch/1004:614e
+usr/share/usb_modeswitch/1004:6156
 usr/share/usb_modeswitch/1004:6190
+usr/share/usb_modeswitch/1004:61aa
 usr/share/usb_modeswitch/1004:61dd
 usr/share/usb_modeswitch/1004:61e7
 usr/share/usb_modeswitch/1004:61eb
+usr/share/usb_modeswitch/1004:6327
 usr/share/usb_modeswitch/1033:0035
 usr/share/usb_modeswitch/106c:3b03
 usr/share/usb_modeswitch/106c:3b05
 usr/share/usb_modeswitch/106c:3b06
+usr/share/usb_modeswitch/106c:3b11
+usr/share/usb_modeswitch/106c:3b14
 usr/share/usb_modeswitch/1076:7f40
 usr/share/usb_modeswitch/109b:f009
+usr/share/usb_modeswitch/10a9:6080
 usr/share/usb_modeswitch/1199:0fff
 usr/share/usb_modeswitch/1266:1000
 usr/share/usb_modeswitch/12d1:1001
@@ -139,6 +158,7 @@ usr/share/usb_modeswitch/12d1:1449
 usr/share/usb_modeswitch/12d1:14ad
 usr/share/usb_modeswitch/12d1:14b5
 usr/share/usb_modeswitch/12d1:14b7
+usr/share/usb_modeswitch/12d1:14ba
 usr/share/usb_modeswitch/12d1:14c1
 usr/share/usb_modeswitch/12d1:14c3
 usr/share/usb_modeswitch/12d1:14c4
@@ -146,24 +166,45 @@ usr/share/usb_modeswitch/12d1:14c5
 usr/share/usb_modeswitch/12d1:14d1
 usr/share/usb_modeswitch/12d1:14fe
 usr/share/usb_modeswitch/12d1:1505
+usr/share/usb_modeswitch/12d1:151a
 usr/share/usb_modeswitch/12d1:1520
 usr/share/usb_modeswitch/12d1:1521
 usr/share/usb_modeswitch/12d1:1523
+usr/share/usb_modeswitch/12d1:1526
 usr/share/usb_modeswitch/12d1:1553
 usr/share/usb_modeswitch/12d1:1557
+usr/share/usb_modeswitch/12d1:155b
+usr/share/usb_modeswitch/12d1:156a
+usr/share/usb_modeswitch/12d1:157c
+usr/share/usb_modeswitch/12d1:157d
+usr/share/usb_modeswitch/12d1:1805
 usr/share/usb_modeswitch/12d1:1c0b
+usr/share/usb_modeswitch/12d1:1c1b
 usr/share/usb_modeswitch/12d1:1c24
 usr/share/usb_modeswitch/12d1:1d50
 usr/share/usb_modeswitch/12d1:1da1
 usr/share/usb_modeswitch/12d1:1f01
+usr/share/usb_modeswitch/12d1:1f03
+usr/share/usb_modeswitch/12d1:1f11
+usr/share/usb_modeswitch/12d1:1f15
+usr/share/usb_modeswitch/12d1:1f16
+usr/share/usb_modeswitch/12d1:1f17
+usr/share/usb_modeswitch/12d1:1f18
+usr/share/usb_modeswitch/12d1:1f19
+usr/share/usb_modeswitch/12d1:1f1b
+usr/share/usb_modeswitch/12d1:1f1c
+usr/share/usb_modeswitch/12d1:1f1d
+usr/share/usb_modeswitch/12d1:1f1e
 usr/share/usb_modeswitch/12d1:380b
 usr/share/usb_modeswitch/1307:1169
 usr/share/usb_modeswitch/1410:5010
 usr/share/usb_modeswitch/1410:5020
+usr/share/usb_modeswitch/1410:5023
 usr/share/usb_modeswitch/1410:5030
 usr/share/usb_modeswitch/1410:5031
 usr/share/usb_modeswitch/1410:5041
 usr/share/usb_modeswitch/1410:5059
+usr/share/usb_modeswitch/1410:7001
 usr/share/usb_modeswitch/148e:a000
 usr/share/usb_modeswitch/148f:2578
 usr/share/usb_modeswitch/15eb:7153
@@ -173,12 +214,11 @@ usr/share/usb_modeswitch/16d8:6804
 usr/share/usb_modeswitch/16d8:700a
 usr/share/usb_modeswitch/16d8:700b
 usr/share/usb_modeswitch/16d8:f000
+usr/share/usb_modeswitch/1726:f00e
 usr/share/usb_modeswitch/198a:0003
 usr/share/usb_modeswitch/198f:bccd
 usr/share/usb_modeswitch/19d2:0003
-usr/share/usb_modeswitch/19d2:0013
 usr/share/usb_modeswitch/19d2:0026
-usr/share/usb_modeswitch/19d2:0031
 usr/share/usb_modeswitch/19d2:0040
 usr/share/usb_modeswitch/19d2:0053
 usr/share/usb_modeswitch/19d2:0083:uPr=WCDMA
@@ -186,27 +226,46 @@ usr/share/usb_modeswitch/19d2:0101
 usr/share/usb_modeswitch/19d2:0103
 usr/share/usb_modeswitch/19d2:0110
 usr/share/usb_modeswitch/19d2:0115
+usr/share/usb_modeswitch/19d2:0120
 usr/share/usb_modeswitch/19d2:0146
 usr/share/usb_modeswitch/19d2:0149
+usr/share/usb_modeswitch/19d2:0150
 usr/share/usb_modeswitch/19d2:0154
 usr/share/usb_modeswitch/19d2:0166
 usr/share/usb_modeswitch/19d2:0169
+usr/share/usb_modeswitch/19d2:0266
+usr/share/usb_modeswitch/19d2:0304
+usr/share/usb_modeswitch/19d2:0318
 usr/share/usb_modeswitch/19d2:0325
 usr/share/usb_modeswitch/19d2:1001
 usr/share/usb_modeswitch/19d2:1007
 usr/share/usb_modeswitch/19d2:1009
 usr/share/usb_modeswitch/19d2:1013
 usr/share/usb_modeswitch/19d2:1017
+usr/share/usb_modeswitch/19d2:1030
 usr/share/usb_modeswitch/19d2:1171
 usr/share/usb_modeswitch/19d2:1175
 usr/share/usb_modeswitch/19d2:1179
 usr/share/usb_modeswitch/19d2:1201
+usr/share/usb_modeswitch/19d2:1207
+usr/share/usb_modeswitch/19d2:1210
 usr/share/usb_modeswitch/19d2:1216
+usr/share/usb_modeswitch/19d2:1219
 usr/share/usb_modeswitch/19d2:1224
+usr/share/usb_modeswitch/19d2:1225
+usr/share/usb_modeswitch/19d2:1227
+usr/share/usb_modeswitch/19d2:1233
+usr/share/usb_modeswitch/19d2:1238
+usr/share/usb_modeswitch/19d2:1511
 usr/share/usb_modeswitch/19d2:1514
 usr/share/usb_modeswitch/19d2:1517
 usr/share/usb_modeswitch/19d2:1520
+usr/share/usb_modeswitch/19d2:1523
+usr/share/usb_modeswitch/19d2:1528
+usr/share/usb_modeswitch/19d2:1536
+usr/share/usb_modeswitch/19d2:1542
 usr/share/usb_modeswitch/19d2:2000
+usr/share/usb_modeswitch/19d2:2004
 usr/share/usb_modeswitch/19d2:bccd
 usr/share/usb_modeswitch/19d2:ffde
 usr/share/usb_modeswitch/19d2:ffe6
@@ -216,7 +275,9 @@ usr/share/usb_modeswitch/1a8d:1000
 usr/share/usb_modeswitch/1a8d:2000
 usr/share/usb_modeswitch/1ab7:5700
 usr/share/usb_modeswitch/1b7d:0700
+usr/share/usb_modeswitch/1bbb:000f
 usr/share/usb_modeswitch/1bbb:00ca
+usr/share/usb_modeswitch/1bbb:011f
 usr/share/usb_modeswitch/1bbb:f000
 usr/share/usb_modeswitch/1bbb:f017
 usr/share/usb_modeswitch/1bbb:f052
@@ -226,6 +287,7 @@ usr/share/usb_modeswitch/1c9e:9200
 usr/share/usb_modeswitch/1c9e:9800
 usr/share/usb_modeswitch/1c9e:98ff
 usr/share/usb_modeswitch/1c9e:9e00
+usr/share/usb_modeswitch/1c9e:9e08
 usr/share/usb_modeswitch/1c9e:f000
 usr/share/usb_modeswitch/1da5:f000
 usr/share/usb_modeswitch/1dd6:1000
@@ -237,20 +299,34 @@ usr/share/usb_modeswitch/1ee8:0009
 usr/share/usb_modeswitch/1ee8:0013
 usr/share/usb_modeswitch/1ee8:0040
 usr/share/usb_modeswitch/1ee8:004a
+usr/share/usb_modeswitch/1ee8:0054
 usr/share/usb_modeswitch/1ee8:0060
+usr/share/usb_modeswitch/1ee8:0063
+usr/share/usb_modeswitch/1ee8:0068
 usr/share/usb_modeswitch/1f28:0021
 usr/share/usb_modeswitch/1fac:0032
 usr/share/usb_modeswitch/1fac:0130
+usr/share/usb_modeswitch/1fac:0150
+usr/share/usb_modeswitch/1fac:0151
+usr/share/usb_modeswitch/2001:a706
+usr/share/usb_modeswitch/2001:a707
+usr/share/usb_modeswitch/2001:a708
+usr/share/usb_modeswitch/2001:a805
 usr/share/usb_modeswitch/2001:a80b
 usr/share/usb_modeswitch/201e:1023
 usr/share/usb_modeswitch/201e:2009
+usr/share/usb_modeswitch/2020:0002
 usr/share/usb_modeswitch/2020:f00e
+usr/share/usb_modeswitch/2077:1000
 usr/share/usb_modeswitch/2077:f000
 usr/share/usb_modeswitch/21f5:1000
+usr/share/usb_modeswitch/22de:6801
 usr/share/usb_modeswitch/22de:6803
 usr/share/usb_modeswitch/22f4:0021
 usr/share/usb_modeswitch/230d:0001
 usr/share/usb_modeswitch/230d:0007
 usr/share/usb_modeswitch/230d:0101
+usr/share/usb_modeswitch/230d:0103
 usr/share/usb_modeswitch/2357:0200
+usr/share/usb_modeswitch/2357:f000
 usr/share/usb_modeswitch/8888:6500
index 3858b3964fba81e0cf84cbb0b8a27527053d2f16..1162c3ab12a08f53f05f3c321bb6a8ea441e83e0 100644 (file)
@@ -1,5 +1,12 @@
-#usr/man/man8/lsusb.8
-usr/sbin/lsusb
-usr/sbin/update-usbids
+usr/bin/lsusb
+usr/bin/lsusb.py
+usr/bin/usb-devices
+usr/bin/usbhid-dump
+usr/sbin/update-usbids.sh
 #usr/share/hwdata
 #usr/share/hwdata/usb.ids
+#usr/share/man/man1/usb-devices.1
+#usr/share/man/man8/lsusb.8
+#usr/share/man/man8/usbhid-dump.8
+#usr/share/pkgconfig
+#usr/share/pkgconfig/usbutils.pc
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 57c54dbef6d63c5c189eb2577091ce0e6567beb1..faabf47e8ae2041df0c94028574718e7cd46f1f8 100644 (file)
@@ -2,5 +2,10 @@
 #etc/cron.d/vnstat
 etc/vnstat.conf
 usr/bin/vnstat
+usr/bin/vnstati
+#usr/sbin/vnstatd
+#usr/share/man/man5/vnstat.conf.5
+#usr/share/man/man1/vnstatd.1
+#usr/share/man/man1/vnstati.1
 #usr/share/man/man1/vnstat.1
 #var/lib/vnstat
diff --git a/config/rootfiles/common/vnstati b/config/rootfiles/common/vnstati
deleted file mode 100644 (file)
index a40fc8c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/bin/vnstati
-#usr/share/man/man1/vnstati.1.gz
index a015280e5ce7fb48331af79b6bf33fb88c2c4c92..968ab9faeef25affdc378fee9d1b170283b9b50c 100644 (file)
@@ -1,5 +1,4 @@
+#etc/wgetrc
 usr/bin/wget
-#usr/etc
-#usr/etc/wgetrc
-#usr/info/wget.info
-#usr/man/man1/wget.1
+#usr/share/info/wget.info
+#usr/share/man/man1/wget.1
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/77/exclude b/config/rootfiles/core/77/exclude
new file mode 100644 (file)
index 0000000..18e9b4d
--- /dev/null
@@ -0,0 +1,20 @@
+boot/config.txt
+etc/collectd.custom
+etc/ipsec.conf
+etc/ipsec.secrets
+etc/ipsec.user.conf
+etc/ipsec.user.secrets
+etc/localtime
+etc/shadow
+etc/ssh/ssh_config
+etc/ssh/sshd_config
+etc/ssl/openssl.cnf
+etc/sudoers
+etc/sysconfig/firewall.local
+etc/sysconfig/rc.local
+etc/udev/rules.d/30-persistent-network.rules
+srv/web/ipfire/html/proxy.pac
+var/ipfire/ovpn
+var/log/cache
+var/state/dhcp/dhcpd.leases
+var/updatecache
diff --git a/config/rootfiles/core/77/filelists/Net_SSLeay b/config/rootfiles/core/77/filelists/Net_SSLeay
new file mode 120000 (symlink)
index 0000000..13fe056
--- /dev/null
@@ -0,0 +1 @@
+../../../common/Net_SSLeay
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/apache2 b/config/rootfiles/core/77/filelists/apache2
new file mode 120000 (symlink)
index 0000000..eef95ef
--- /dev/null
@@ -0,0 +1 @@
+../../../common/apache2
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/binutils b/config/rootfiles/core/77/filelists/armv5tel/binutils
new file mode 120000 (symlink)
index 0000000..ac971f9
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/binutils
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/dracut b/config/rootfiles/core/77/filelists/armv5tel/dracut
new file mode 120000 (symlink)
index 0000000..861df3f
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/dracut
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/gcc b/config/rootfiles/core/77/filelists/armv5tel/gcc
new file mode 120000 (symlink)
index 0000000..84f7b93
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/gcc
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/glibc b/config/rootfiles/core/77/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/77/filelists/armv5tel/initscripts b/config/rootfiles/core/77/filelists/armv5tel/initscripts
new file mode 120000 (symlink)
index 0000000..af1d762
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/initscripts
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/linux-kirkwood b/config/rootfiles/core/77/filelists/armv5tel/linux-kirkwood
new file mode 120000 (symlink)
index 0000000..7217107
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-kirkwood
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/linux-multi b/config/rootfiles/core/77/filelists/armv5tel/linux-multi
new file mode 120000 (symlink)
index 0000000..204eb4c
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-multi
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/linux-rpi b/config/rootfiles/core/77/filelists/armv5tel/linux-rpi
new file mode 120000 (symlink)
index 0000000..a651a49
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-rpi
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/lm_sensors b/config/rootfiles/core/77/filelists/armv5tel/lm_sensors
new file mode 120000 (symlink)
index 0000000..eec84cd
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/lm_sensors
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/rpi-firmware b/config/rootfiles/core/77/filelists/armv5tel/rpi-firmware
new file mode 120000 (symlink)
index 0000000..428fdf8
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/rpi-firmware
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/u-boot b/config/rootfiles/core/77/filelists/armv5tel/u-boot
new file mode 120000 (symlink)
index 0000000..3df31a8
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/u-boot
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/armv5tel/util-linux b/config/rootfiles/core/77/filelists/armv5tel/util-linux
new file mode 120000 (symlink)
index 0000000..2596908
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/util-linux
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/beep b/config/rootfiles/core/77/filelists/beep
new file mode 120000 (symlink)
index 0000000..6db094e
--- /dev/null
@@ -0,0 +1 @@
+../../../common/beep
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/bridge-utils b/config/rootfiles/core/77/filelists/bridge-utils
new file mode 120000 (symlink)
index 0000000..3dee211
--- /dev/null
@@ -0,0 +1 @@
+../../../common/bridge-utils
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/coreutils b/config/rootfiles/core/77/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/77/filelists/cyrus-sasl b/config/rootfiles/core/77/filelists/cyrus-sasl
new file mode 120000 (symlink)
index 0000000..bb51b4c
--- /dev/null
@@ -0,0 +1 @@
+../../../common/cyrus-sasl
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/dosfstools b/config/rootfiles/core/77/filelists/dosfstools
new file mode 120000 (symlink)
index 0000000..087ccb0
--- /dev/null
@@ -0,0 +1 @@
+../../../common/dosfstools
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/dvb-firmwares b/config/rootfiles/core/77/filelists/dvb-firmwares
new file mode 120000 (symlink)
index 0000000..69d0cdc
--- /dev/null
@@ -0,0 +1 @@
+../../../common/dvb-firmwares
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/e2fsprogs b/config/rootfiles/core/77/filelists/e2fsprogs
new file mode 120000 (symlink)
index 0000000..37b55de
--- /dev/null
@@ -0,0 +1 @@
+../../../common/e2fsprogs
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/files b/config/rootfiles/core/77/filelists/files
new file mode 100644 (file)
index 0000000..dd35042
--- /dev/null
@@ -0,0 +1,35 @@
+etc/system-release
+etc/issue
+etc/collectd.conf
+etc/rc.d/init.d/network
+etc/sysctl.conf
+run
+srv/web/ipfire/cgi-bin/credits.cgi
+srv/web/ipfire/cgi-bin/gui.cgi
+srv/web/ipfire/cgi-bin/entropy.cgi
+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/urlfilter.cgi
+srv/web/ipfire/cgi-bin/vpnmain.cgi
+srv/web/ipfire/html/themes/darkdos
+srv/web/ipfire/html/themes/ipfire
+srv/web/ipfire/html/themes/ipfire-legacy
+srv/web/ipfire/html/themes/maniac
+usr/lib/firewall
+usr/local/bin/backupiso
+usr/local/bin/timezone-transition
+usr/local/bin/setddns.pl
+usr/sbin/updxlrator
+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/graphs.pl
+var/ipfire/langs
+var/ipfire/menu.d/10-system.menu
+var/ipfire/menu.d/20-status.menu
diff --git a/config/rootfiles/core/77/filelists/firewall b/config/rootfiles/core/77/filelists/firewall
new file mode 100644 (file)
index 0000000..6eeaeae
--- /dev/null
@@ -0,0 +1,14 @@
+etc/rc.d/init.d/firewall
+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/p2protocols
+var/ipfire/fwhosts/icmp-types
+var/ipfire/menu.d/50-firewall.menu
+var/ipfire/fwhosts/customservices.default
diff --git a/config/rootfiles/core/77/filelists/i586/binutils b/config/rootfiles/core/77/filelists/i586/binutils
new file mode 120000 (symlink)
index 0000000..78695d7
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/binutils
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/i586/dracut b/config/rootfiles/core/77/filelists/i586/dracut
new file mode 120000 (symlink)
index 0000000..9a09010
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/dracut
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/i586/gcc b/config/rootfiles/core/77/filelists/i586/gcc
new file mode 120000 (symlink)
index 0000000..ba328e3
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/gcc
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/i586/glibc b/config/rootfiles/core/77/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/77/filelists/i586/grub b/config/rootfiles/core/77/filelists/i586/grub
new file mode 120000 (symlink)
index 0000000..feb236a
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/grub
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/i586/initscripts b/config/rootfiles/core/77/filelists/i586/initscripts
new file mode 120000 (symlink)
index 0000000..12d8770
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/initscripts
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/i586/linux b/config/rootfiles/core/77/filelists/i586/linux
new file mode 120000 (symlink)
index 0000000..693ec4b
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/linux
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/i586/lm_sensors b/config/rootfiles/core/77/filelists/i586/lm_sensors
new file mode 120000 (symlink)
index 0000000..17d6c01
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/lm_sensors
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/i586/strongswan-padlock b/config/rootfiles/core/77/filelists/i586/strongswan-padlock
new file mode 120000 (symlink)
index 0000000..2412824
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/strongswan-padlock
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/i586/util-linux b/config/rootfiles/core/77/filelists/i586/util-linux
new file mode 120000 (symlink)
index 0000000..c973106
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/util-linux
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/iptables b/config/rootfiles/core/77/filelists/iptables
new file mode 120000 (symlink)
index 0000000..8caf12b
--- /dev/null
@@ -0,0 +1 @@
+../../../common/iptables
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/iw b/config/rootfiles/core/77/filelists/iw
new file mode 120000 (symlink)
index 0000000..7c58a20
--- /dev/null
@@ -0,0 +1 @@
+../../../common/iw
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/jquery b/config/rootfiles/core/77/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/77/filelists/kmod b/config/rootfiles/core/77/filelists/kmod
new file mode 120000 (symlink)
index 0000000..0020e19
--- /dev/null
@@ -0,0 +1 @@
+../../../common/kmod
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/libnl b/config/rootfiles/core/77/filelists/libnl
new file mode 120000 (symlink)
index 0000000..7181849
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libnl
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/libusbx b/config/rootfiles/core/77/filelists/libusbx
new file mode 120000 (symlink)
index 0000000..96c9995
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libusbx
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/libxml2 b/config/rootfiles/core/77/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/77/filelists/linux-firmware b/config/rootfiles/core/77/filelists/linux-firmware
new file mode 120000 (symlink)
index 0000000..4bf91bc
--- /dev/null
@@ -0,0 +1 @@
+../../../common/linux-firmware
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/lzo b/config/rootfiles/core/77/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/77/filelists/misc-progs b/config/rootfiles/core/77/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/77/filelists/mysql-libs b/config/rootfiles/core/77/filelists/mysql-libs
new file mode 120000 (symlink)
index 0000000..c63bc7f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/mysql-libs
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/net-tools b/config/rootfiles/core/77/filelists/net-tools
new file mode 120000 (symlink)
index 0000000..bac6b00
--- /dev/null
@@ -0,0 +1 @@
+../../../common/net-tools
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/ntp b/config/rootfiles/core/77/filelists/ntp
new file mode 100644 (file)
index 0000000..6adc47b
--- /dev/null
@@ -0,0 +1,15 @@
+etc/ntp.conf
+usr/bin/ntp-keygen
+usr/bin/ntp-wait
+usr/bin/ntpd
+usr/bin/ntpdate
+usr/bin/ntpdc
+usr/bin/ntpq
+usr/bin/ntptime
+usr/bin/ntptrace
+usr/bin/sntp
+usr/bin/tickadj
+var/ipfire/time/counter.conf
+var/ipfire/time/enable
+var/ipfire/time/settime.conf
+var/ipfire/time/settings
diff --git a/config/rootfiles/core/77/filelists/openssh b/config/rootfiles/core/77/filelists/openssh
new file mode 120000 (symlink)
index 0000000..d8c77fd
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openssh
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/openssl b/config/rootfiles/core/77/filelists/openssl
new file mode 120000 (symlink)
index 0000000..e011a92
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openssl
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/openssl-compat b/config/rootfiles/core/77/filelists/openssl-compat
new file mode 120000 (symlink)
index 0000000..c9fa421
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openssl-compat
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/openvpn b/config/rootfiles/core/77/filelists/openvpn
new file mode 120000 (symlink)
index 0000000..493f3f7
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openvpn
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/pakfire b/config/rootfiles/core/77/filelists/pakfire
new file mode 100644 (file)
index 0000000..fd324bb
--- /dev/null
@@ -0,0 +1,4 @@
+opt/pakfire/etc/pakfire.conf
+opt/pakfire/lib/functions.pl
+opt/pakfire/lib/functions.sh
+opt/pakfire/pakfire
diff --git a/config/rootfiles/core/77/filelists/paxctl b/config/rootfiles/core/77/filelists/paxctl
new file mode 120000 (symlink)
index 0000000..dda8d9f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/paxctl
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/php b/config/rootfiles/core/77/filelists/php
new file mode 120000 (symlink)
index 0000000..1ae48d7
--- /dev/null
@@ -0,0 +1 @@
+../../../common/php
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/rng-tools b/config/rootfiles/core/77/filelists/rng-tools
new file mode 120000 (symlink)
index 0000000..a7853e4
--- /dev/null
@@ -0,0 +1 @@
+../../../common/rng-tools
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/setup b/config/rootfiles/core/77/filelists/setup
new file mode 120000 (symlink)
index 0000000..209374b
--- /dev/null
@@ -0,0 +1 @@
+../../../common/setup
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/tzdata b/config/rootfiles/core/77/filelists/tzdata
new file mode 120000 (symlink)
index 0000000..5a6e325
--- /dev/null
@@ -0,0 +1 @@
+../../../common/tzdata
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/udev b/config/rootfiles/core/77/filelists/udev
new file mode 120000 (symlink)
index 0000000..e967a1c
--- /dev/null
@@ -0,0 +1 @@
+../../../common/udev
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/usb_modeswitch b/config/rootfiles/core/77/filelists/usb_modeswitch
new file mode 120000 (symlink)
index 0000000..acbab6f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/usb_modeswitch
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/usb_modeswitch_data b/config/rootfiles/core/77/filelists/usb_modeswitch_data
new file mode 120000 (symlink)
index 0000000..4cbce46
--- /dev/null
@@ -0,0 +1 @@
+../../../common/usb_modeswitch_data
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/usbutils b/config/rootfiles/core/77/filelists/usbutils
new file mode 120000 (symlink)
index 0000000..31db5a7
--- /dev/null
@@ -0,0 +1 @@
+../../../common/usbutils
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/vim b/config/rootfiles/core/77/filelists/vim
new file mode 120000 (symlink)
index 0000000..9861317
--- /dev/null
@@ -0,0 +1 @@
+../../../common/vim
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/wget b/config/rootfiles/core/77/filelists/wget
new file mode 120000 (symlink)
index 0000000..fcb57df
--- /dev/null
@@ -0,0 +1 @@
+../../../common/wget
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/wpa_supplicant b/config/rootfiles/core/77/filelists/wpa_supplicant
new file mode 120000 (symlink)
index 0000000..1d04c03
--- /dev/null
@@ -0,0 +1 @@
+../../../common/wpa_supplicant
\ No newline at end of file
diff --git a/config/rootfiles/core/77/filelists/xz b/config/rootfiles/core/77/filelists/xz
new file mode 120000 (symlink)
index 0000000..734e926
--- /dev/null
@@ -0,0 +1 @@
+../../../common/xz
\ No newline at end of file
diff --git a/config/rootfiles/core/77/update.sh b/config/rootfiles/core/77/update.sh
new file mode 100644 (file)
index 0000000..e9cf770
--- /dev/null
@@ -0,0 +1,530 @@
+#!/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 3 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) 2014 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+function add_to_backup ()
+{
+       # Add path to ROOTFILES but remove old entries to prevent double
+       # files in the tar
+       grep -v "^$1" /opt/pakfire/tmp/ROOTFILES > /opt/pakfire/tmp/ROOTFILES.tmp
+       mv /opt/pakfire/tmp/ROOTFILES.tmp /opt/pakfire/tmp/ROOTFILES
+       echo $1 >> /opt/pakfire/tmp/ROOTFILES
+}
+
+#
+# Remove old core updates from pakfire cache to save space...
+core=77
+for (( i=1; i<=${core}; i++ ))
+do
+       rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+#
+# Do some sanity checks.
+case $(uname -r) in
+       *-ipfire-versatile )
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: ERROR cannot update. versatile support is dropped."
+               # Report no error to pakfire. So it does not try to install it again.
+               exit 0
+               ;;
+       *-ipfire-xen )
+               BOOTSIZE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f2 | tail -n 1`
+               if [ $BOOTSIZE -lt 28000 ]; then
+                       /usr/bin/logger -p syslog.emerg -t ipfire \
+                               "core-update-${core}: ERROR cannot update because not enough space on boot."
+                       exit 2
+               fi
+               ;;
+       *-ipfire* )
+               # Ok.
+               ;;
+       * )
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: ERROR cannot update. No IPFire Kernel."
+               exit 1
+       ;;
+esac
+
+
+#
+#
+KVER="xxxKVERxxx"
+MOUNT=`grep "kernel" /boot/grub/grub.conf 2>/dev/null | tail -n 1 `
+# Nur den letzten Parameter verwenden
+echo $MOUNT > /dev/null
+MOUNT=$_
+if [ ! $MOUNT == "rw" ]; then
+       MOUNT="ro"
+fi
+
+#
+# check if we the backup file already exist
+if [ -e /var/ipfire/backup/core-upgrade${core}_${KVER}.tar.xz ]; then
+    echo Moving backup to backup-old ...
+    mv -f /var/ipfire/backup/core-upgrade${core}_${KVER}.tar.xz \
+       /var/ipfire/backup/core-upgrade${core}_${KVER}-old.tar.xz
+fi
+echo First we made a backup of all files that was inside of the
+echo update archive. This may take a while ...
+# Add some files that are not in the package to backup
+add_to_backup lib/modules
+add_to_backup etc/udev
+add_to_backup lib/udev
+add_to_backup boot
+add_to_backup etc/sysconfig/lm_sensors
+add_to_backup etc/sysconfig/rc.local
+add_to_backup srv/web/ipfire/html/themes/ipfire
+add_to_backup usr/lib/engines
+add_to_backup etc/rc.d/init.d/networking/red.up/22-outgoingfwctrl
+add_to_backup etc/rc.d/init.d/networking/red.up/25-portfw
+add_to_backup etc/rc.d/init.d/networking/red.up/26-xtaccess
+add_to_backup usr/local/bin/setportfw
+add_to_backup usr/local/bin/setdmzholes
+add_to_backup usr/local/bin/setxtaccess
+add_to_backup usr/local/bin/outgoingfwctrl
+add_to_backup srv/web/ipfire/cgi-bin/{dmzholes,outgoingfw,portfw,xtaccess}.cgi
+add_to_backup var/ipfire/{dmzholes,portfw,outgoing,xtaccess}
+add_to_backup etc/inittab
+add_to_backup etc/fstab
+add_to_backup usr/share/usb_modeswitch
+add_to_backup etc/rc.d/init.d/networking/red.down/99-D-dialctrl.pl
+add_to_backup etc/rc.d/init.d/networking/red.up/99-U-dialctrl.pl
+add_to_backup usr/local/bin/dialctrl.pl
+add_to_backup usr/lib/locale/locale-archive
+
+# Backup the files
+tar cJvf /var/ipfire/backup/core-upgrade${core}_${KVER}.tar.xz \
+    -C / -T /opt/pakfire/tmp/ROOTFILES --exclude='#*' --exclude='/var/cache' > /dev/null 2>&1
+
+# Check diskspace on root
+ROOTSPACE=`df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+
+if [ $ROOTSPACE -lt 100000 ]; then
+       /usr/bin/logger -p syslog.emerg -t ipfire \
+               "core-update-${core}: ERROR cannot update because not enough free space on root."
+       exit 2
+fi
+
+
+echo
+echo Update Kernel to $KVER ...
+#
+# Remove old kernel, configs, initrd, modules ...
+#
+rm -rf /boot/System.map-*
+rm -rf /boot/config-*
+rm -rf /boot/ipfirerd-*
+rm -rf /boot/vmlinuz-*
+rm -rf /boot/uImage-ipfire-*
+rm -rf /boot/uInit-ipfire-*
+rm -rf /lib/modules
+
+# Remove old usb_modeswitch_data
+rm -rf /usr/share/usb_modeswitch
+# Remove old tzdata
+rm -rf /usr/share/zoneinfo
+
+# Remoce old locale-archive
+rm -rf /usr/lib/locale/locale-archive
+
+# Remove dialctrl.pl script
+rm -f \
+       /etc/rc.d/init.d/networking/red.down/99-D-dialctrl.pl \
+       /etc/rc.d/init.d/networking/red.up/99-U-dialctrl.pl \
+       /usr/local/bin/dialctrl.pl
+
+#
+# Remove old udev rules.
+#
+if [ -e /etc/udev/rules.d/29-ct-server-network.rules ]; then
+       cp /etc/udev/rules.d/29-ct-server-network.rules /tmp/
+fi
+cp /etc/udev/rules.d/30-persistent-network.rules /tmp/
+rm -rf /etc/udev
+rm -rf /lib/udev
+mkdir -p /etc/udev/rules.d
+if [ -e /tmp/rules.d/29-ct-server-network.rules ]; then
+       mv /tmp/29-ct-server-network.rules /etc/udev/rules.d/
+fi
+mv /tmp/30-persistent-network.rules /etc/udev/rules.d/
+
+case $(uname -m) in
+       i?86 )
+               #
+               # Backup grub.conf
+               #
+               cp -vf /boot/grub/grub.conf /boot/grub/grub.conf.org
+       ;;
+esac
+#
+#Stop services
+/etc/init.d/snort stop
+/etc/init.d/squid stop
+/etc/init.d/ipsec stop
+/etc/init.d/apache stop
+
+# Remove the old default theme
+rm -rf /srv/web/ipfire/html/themes/ipfire
+
+# rename /etc/modprobe.d files
+for i in $(find /etc/modprobe.d/* | grep -v ".conf"); do
+       mv $i $i.conf
+done
+
+# Move /var/run to /run.
+if [ -L "/run" ]; then
+       rm -f /run
+fi
+
+mkdir -p /run
+if mountpoint /var/run; then
+       mount --move /var/run /run
+       rm -rf /var/run
+fi
+
+ln -svf ../run /var/run
+
+# Creating directories for new firewall.
+mkdir -p /var/ipfire/firewall
+mkdir -p /var/ipfire/fwhosts
+
+# Remove old ntp binaries
+rm -f /usr/sbin/ntp-keygen
+rm -f /usr/sbin/ntp-wait
+rm -f /usr/sbin/ntpq
+rm -f /usr/sbin/ntptime
+rm -f /usr/sbin/ntptrace
+rm -f /usr/sbin/tickadj
+
+# Remove old firewall helper link
+rm -f /etc/rc.d/init.d/networking/red.up/22-forwardfwctrl
+
+#
+#Extract files
+tar xavf /opt/pakfire/tmp/files* --no-overwrite-dir -p --numeric-owner -C /
+
+# Check diskspace on boot
+BOOTSPACE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+
+if [ $BOOTSPACE -lt 1000 ]; then
+       case $(uname -r) in
+               *-ipfire-kirkwood )
+                       # Special handling for old kirkwood images.
+                       # (install only kirkwood kernel)
+                       rm -rf /boot/*
+                       tar xavf /opt/pakfire/tmp/files* --no-overwrite-dir -p \
+                               --numeric-owner -C / --wildcards 'boot/*-kirkwood*'
+                       ;;
+               * )
+                       /usr/bin/logger -p syslog.emerg -t ipfire \
+                               "core-update-${core}: FATAL-ERROR space run out on boot. System is not bootable..."
+                       /etc/init.d/apache start
+                       exit 4
+                       ;;
+       esac
+fi
+
+#
+#Reload init to close old linker/glibc
+telinit u
+
+# Regenerate ipsec configuration files.
+/srv/web/ipfire/cgi-bin/vpnmain.cgi
+
+# Update Language cache
+perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+
+# Remove old openssl engines
+rm -rf /usr/lib/engines
+
+# 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
+rm -f /etc/rc.d/rcsysinit.d/S90sysctl
+
+# Remove old firewallscripts
+rm -f /usr/local/bin/setportfw
+rm -f /usr/local/bin/setdmzholes
+rm -f /usr/local/bin/setxtaccess
+rm -f /usr/local/bin/outgoingfwctrl
+
+# Remove old CGI files
+rm -f /srv/web/ipfire/cgi-bin/{dmzholes,outgoingfw,portfw,xtaccess}.cgi
+
+# Generate chains for new firewall
+/sbin/iptables -N INPUTFW 2>/dev/null
+/sbin/iptables -N FORWARDFW 2>/dev/null
+/sbin/iptables -N POLICYFWD 2>/dev/null
+/sbin/iptables -N POLICYIN 2>/dev/null
+/sbin/iptables -N POLICYOUT 2>/dev/null
+/sbin/iptables -t nat -N NAT_SOURCE 2>/dev/null
+/sbin/iptables -t nat -N NAT_DESTINATION 2>/dev/null
+/sbin/iptables -t mangle -N NAT_DESTINATION 2>/dev/null
+
+# Create config files for firewall and fix permissions.
+touch /var/ipfire/firewall/config
+touch /var/ipfire/firewall/input
+touch /var/ipfire/firewall/outgoing
+touch /var/ipfire/firewall/settings
+touch /var/ipfire/fwhosts/customhosts
+touch /var/ipfire/fwhosts/customnetworks
+touch /var/ipfire/fwhosts/customgroups
+touch /var/ipfire/fwhosts/customservices
+touch /var/ipfire/fwhosts/customservicegrp
+
+if [ ! -s "/var/ipfire/fwhosts/customservices" ];then
+       cp /var/ipfire/fwhosts/customservices.default /var/ipfire/fwhosts/customservices
+fi
+
+# Fix ownership.
+chown -R nobody:nobody /var/ipfire/firewall
+chown -R nobody:nobody /var/ipfire/fwhosts
+
+# Convert firewall configuration
+/usr/sbin/convert-xtaccess
+/usr/sbin/convert-outgoingfw
+/usr/sbin/convert-portfw
+/usr/sbin/convert-dmz
+
+# Remove old firewall configuration files
+rm -rf /var/ipfire/{dmzholes,portfw,outgoing,xtaccess}
+
+# In previously released IPFire versions the DROPOUTPUT and DROPINPUT
+# option have two identical lines in the optionsfw/settings file as long as
+# the user hasn't done any changes on the WUI.
+#
+# To prevent from any kind of side effects we are going to solve this issue now.
+
+# Fix doubble enties of DROPOUTPUT when the default settings are still in use
+# (the save button on the WUI page never has been clicked) or convert to the
+# new option name required by the firewall of IPFire 2.15.
+
+optionsfw_file="/var/ipfire/optionsfw/settings"
+
+if [ $(grep -c "DROPOUTPUT" ${optionsfw_file}) -gt 1 ] ; then
+
+        # Drop all DROPUTPUT entries.
+        sed -e "/DROPOUTPUT/d" -i ${optionsfw_file}
+
+        # Add default line for new option.
+        echo "DROPOUTGOING=on" >> ${optionsfw_file}
+else
+
+        # Convert option name to new format.
+        sed -e "s/DROPOUTPUT/DROPOUTGOING/g" -i ${optionsfw_file}
+fi
+
+# Fix doubble enties of DROPINPUT when the default settings are still in use
+# (the save button on the WUI page never has been clicked).
+if [ $(grep -c "DROPINPUT" ${optionsfw_file}) -gt 1 ] ; then
+
+        # We only can remove all entries with an defined string.
+        sed -e "/DROPINPUT/d" -i ${optionsfw_file}
+
+        # Afterwards we have to add the required string with the default
+        # value again.
+        echo "DROPINPUT=on" >> ${optionsfw_file}
+fi
+
+# Add strings and default values for new options of the firewall.
+echo "DROPFORWARD=on" >> ${optionsfw_file}
+echo "FWPOLICY=DROP" >> ${optionsfw_file}
+echo "FWPOLICY1=DROP" >> ${optionsfw_file}
+echo "FWPOLICY2=DROP" >> ${optionsfw_file}
+echo "DROPSAMBA=off" >> ${optionsfw_file}
+echo "DROPPROXY=off" >> ${optionsfw_file}
+echo "SHOWREMARK=on" >> ${optionsfw_file}
+echo "SHOWCOLORS=on" >> ${optionsfw_file}
+echo "SHOWTABLES=off" >> ${optionsfw_file}
+echo "SHOWDROPDOWN=off" >> ${optionsfw_file}
+echo "DROPWIRELESSINPUT=on" >> ${optionsfw_file}
+echo "DROPWIRELESSFORWARD=on" >> ${optionsfw_file}
+
+unset optionsfw_file
+
+# Convert inittab and fstab
+sed -i -e "s/tty1 9600$/tty1 9600 --noclear/g" /etc/inittab
+sed -i -e "s/xvc0 9600$/xvc0 9600 --noclear/g" /etc/inittab
+sed -i -e "s/^proc/#proc/g" /etc/fstab
+sed -i -e "s/^sysfs/#sysfs/g" /etc/fstab
+sed -i -e "s/^devpts/#devpts/g" /etc/fstab
+sed -i -e "s|^none\s/var/run|#none     /var/run|g" /etc/fstab
+
+# Convert udev persistent network rules
+sed -i -e "s/SYSFS{/ATTR{/g" /etc/udev/rules.d/30-persistent-network.rules
+
+# Firstsetup was already run
+touch /var/ipfire/main/firstsetup_ok
+
+#
+# Start services
+#
+/etc/init.d/apache start
+/etc/init.d/squid start
+/etc/init.d/snort start
+if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then
+       /etc/init.d/ipsec start
+fi
+
+#
+# Rebuild qosscript if enabled
+#
+if [ -e /var/ipfire/qos/enable ]; then
+       /usr/local/bin/qosctrl stop
+       /usr/local/bin/qosctrl generate
+       /usr/local/bin/qosctrl start
+fi
+
+chown cron:cron /var/spool/cron
+# Update crontab
+grep -q timezone-transition /var/spool/cron/root.orig || cat <<EOF >> /var/spool/cron/root.orig
+
+# Re-read firewall rules every Sunday in March, October and November to take care of daylight saving time
+00 3 * 3 0          /usr/local/bin/timezone-transition /usr/local/bin/firewallctrl
+00 2 * 10-11 0      /usr/local/bin/timezone-transition /usr/local/bin/firewallctrl
+EOF
+
+# Remove dialctrl script.
+sed -i /var/spool/cron/root.orig -e "/Dialup/,/dialctrl.pl/d"
+fcrontab -z &>/dev/null
+
+
+case $(uname -m) in
+       i?86 )
+               #
+               # Modify grub.conf
+               #
+               echo
+               echo Update grub configuration ...
+               ROOT=`mount | grep " / " | cut -d" " -f1`
+
+               if [ ! -z $ROOT ]; then
+                       ROOTUUID=`blkid -c /dev/null -sUUID $ROOT | cut -d'"' -f2`
+               fi
+
+               if [ ! -z $ROOTUUID ]; then
+                       sed -i "s|ROOT|UUID=$ROOTUUID|g" /boot/grub/grub.conf
+               else
+                       sed -i "s|ROOT|$ROOT|g" /boot/grub/grub.conf
+               fi
+               sed -i "s|KVER|$KVER|g" /boot/grub/grub.conf
+               sed -i "s|MOUNT|$MOUNT|g" /boot/grub/grub.conf
+
+               if [ "$(grep "^serial" /boot/grub/grub.conf.org)" == "" ]; then
+                       echo "grub use default console ..."
+               else
+                       echo "grub use serial console ..."
+                       sed -i -e "s|splashimage|#splashimage|g" /boot/grub/grub.conf
+                       sed -i -e "s|#serial|serial|g" /boot/grub/grub.conf
+                       sed -i -e "s|#terminal|terminal|g" /boot/grub/grub.conf
+                       sed -i -e "s| panic=10 | console=ttyS0,115200n8 panic=10 |g" /boot/grub/grub.conf
+               fi
+
+               #
+               # ReInstall grub
+               #
+                       echo "(hd0) ${ROOT::`expr length $ROOT`-1}" > /boot/grub/device.map
+                       grub-install --no-floppy ${ROOT::`expr length $ROOT`-1}
+       ;;
+esac
+#
+# Delete old lm-sensor modullist to force search at next boot
+#
+rm -rf /etc/sysconfig/lm_sensors
+
+
+# Force (re)install pae kernel if pae is supported
+rm -rf /opt/pakfire/db/*/meta-linux-pae
+if [ ! "$(grep "^flags.* pae " /proc/cpuinfo)" == "" ]; then
+       ROOTSPACE=`df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+       BOOTSPACE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+       if [ $BOOTSPACE -lt 12000 -o $ROOTSPACE -lt 90000 ]; then
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: WARNING not enough space for pae kernel."
+       else
+               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
+               echo "Name: linux-pae" > /opt/pakfire/db/meta/meta-linux-pae
+               echo "ProgVersion: 0" >> /opt/pakfire/db/meta/meta-linux-pae
+               echo "Release: 0"     >> /opt/pakfire/db/meta/meta-linux-pae
+       fi
+fi
+
+# Force reinstall xen kernel if it was installed
+if [ -e "/opt/pakfire/db/installed/meta-linux-xen" ]; then
+       echo "Name: linux-xen" > /opt/pakfire/db/installed/meta-linux-xen
+       echo "ProgVersion: 0" >> /opt/pakfire/db/installed/meta-linux-xen
+       echo "Release: 0"     >> /opt/pakfire/db/installed/meta-linux-xen
+       echo "Name: linux-xen" > /opt/pakfire/db/meta/meta-linux-xen
+       echo "ProgVersion: 0" >> /opt/pakfire/db/meta/meta-linux-xen
+       echo "Release: 0"     >> /opt/pakfire/db/meta/meta-linux-xen
+       # Add xvc0 to /etc/securetty
+       echo "xvc0" >> /etc/securetty
+fi
+
+#
+# After pakfire has ended run it again and update the lists and do upgrade
+#
+echo '#!/bin/bash'                                        >  /tmp/pak_update
+echo 'while [ "$(ps -A | grep " update.sh")" != "" ]; do' >> /tmp/pak_update
+echo '    sleep 1'                                        >> /tmp/pak_update
+echo 'done'                                               >> /tmp/pak_update
+echo 'while [ "$(ps -A | grep " pakfire")" != "" ]; do'   >> /tmp/pak_update
+echo '    sleep 1'                                        >> /tmp/pak_update
+echo 'done'                                               >> /tmp/pak_update
+echo '/opt/pakfire/pakfire update -y --force'             >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire "Core-upgrade finished. If you use a customized grub.cfg"' >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire "Check it before reboot !!!"' >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire " *** Please reboot... *** "' >> /tmp/pak_update
+echo 'touch /var/run/need_reboot ' >> /tmp/pak_update
+#
+killall -KILL pak_update
+chmod +x /tmp/pak_update
+/tmp/pak_update &
+
+sync
+
+#
+#Finish
+(
+       /etc/init.d/fireinfo start
+       sendprofile
+) >/dev/null 2>&1 &
+
+# Update Package list for addon installation
+/opt/pakfire/pakfire update -y --force
+
+echo
+echo Please wait until pakfire has ended...
+echo
+#Don't report the exitcode last command
+exit 0
+
diff --git a/config/rootfiles/core/79/exclude b/config/rootfiles/core/79/exclude
new file mode 100644 (file)
index 0000000..18e9b4d
--- /dev/null
@@ -0,0 +1,20 @@
+boot/config.txt
+etc/collectd.custom
+etc/ipsec.conf
+etc/ipsec.secrets
+etc/ipsec.user.conf
+etc/ipsec.user.secrets
+etc/localtime
+etc/shadow
+etc/ssh/ssh_config
+etc/ssh/sshd_config
+etc/ssl/openssl.cnf
+etc/sudoers
+etc/sysconfig/firewall.local
+etc/sysconfig/rc.local
+etc/udev/rules.d/30-persistent-network.rules
+srv/web/ipfire/html/proxy.pac
+var/ipfire/ovpn
+var/log/cache
+var/state/dhcp/dhcpd.leases
+var/updatecache
diff --git a/config/rootfiles/core/79/filelists/armv5tel/linux-kirkwood b/config/rootfiles/core/79/filelists/armv5tel/linux-kirkwood
new file mode 120000 (symlink)
index 0000000..7217107
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-kirkwood
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/armv5tel/linux-multi b/config/rootfiles/core/79/filelists/armv5tel/linux-multi
new file mode 120000 (symlink)
index 0000000..204eb4c
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-multi
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/armv5tel/linux-rpi b/config/rootfiles/core/79/filelists/armv5tel/linux-rpi
new file mode 120000 (symlink)
index 0000000..a651a49
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-rpi
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/daq b/config/rootfiles/core/79/filelists/daq
new file mode 120000 (symlink)
index 0000000..d0e0956
--- /dev/null
@@ -0,0 +1 @@
+../../../common/daq
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/files b/config/rootfiles/core/79/filelists/files
new file mode 100644 (file)
index 0000000..4a557d2
--- /dev/null
@@ -0,0 +1,26 @@
+etc/system-release
+etc/issue
+etc/rc.d/init.d/leds
+etc/rc.d/init.d/sshd
+etc/rc.d/init.d/udev
+srv/web/ipfire/cgi-bin/ddns.cgi
+srv/web/ipfire/cgi-bin/ids.cgi
+srv/web/ipfire/cgi-bin/logs.cgi/firewalllogcountry.dat
+srv/web/ipfire/cgi-bin/logs.cgi/showrequestfromcountry.dat
+srv/web/ipfire/cgi-bin/modem-status.cgi
+srv/web/ipfire/cgi-bin/ovpnmain.cgi
+srv/web/ipfire/cgi-bin/pppsetup.cgi
+srv/web/ipfire/cgi-bin/proxy.cgi
+srv/web/ipfire/cgi-bin/traffic.cgi
+srv/web/ipfire/html/themes/ipfire/include/functions.pl
+usr/bin/squidGuard
+usr/sbin/firewall-policy
+usr/sbin/redirect_wrapper
+usr/sbin/updxlrator
+usr/local/bin/setddns.pl
+var/ipfire/header.pl
+var/ipfire/langs
+var/ipfire/menu.d/20-status.menu
+var/ipfire/menu.d/70-log.menu
+var/ipfire/modem-lib.pl
+var/ipfire/ovpn/openssl/ovpn.cnf
diff --git a/config/rootfiles/core/79/filelists/hostname b/config/rootfiles/core/79/filelists/hostname
new file mode 120000 (symlink)
index 0000000..2a96fdd
--- /dev/null
@@ -0,0 +1 @@
+../../../common/hostname
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/i586/grub b/config/rootfiles/core/79/filelists/i586/grub
new file mode 120000 (symlink)
index 0000000..feb236a
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/grub
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/i586/linux b/config/rootfiles/core/79/filelists/i586/linux
new file mode 120000 (symlink)
index 0000000..693ec4b
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/linux
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/i586/syslinux b/config/rootfiles/core/79/filelists/i586/syslinux
new file mode 120000 (symlink)
index 0000000..74a776d
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/syslinux
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/libpcap b/config/rootfiles/core/79/filelists/libpcap
new file mode 120000 (symlink)
index 0000000..c7f9f52
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libpcap
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/openssh b/config/rootfiles/core/79/filelists/openssh
new file mode 120000 (symlink)
index 0000000..d8c77fd
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openssh
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/openssl b/config/rootfiles/core/79/filelists/openssl
new file mode 120000 (symlink)
index 0000000..e011a92
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openssl
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/openvpn b/config/rootfiles/core/79/filelists/openvpn
new file mode 120000 (symlink)
index 0000000..493f3f7
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openvpn
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/perl-Device-Modem b/config/rootfiles/core/79/filelists/perl-Device-Modem
new file mode 120000 (symlink)
index 0000000..ea70f08
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Device-Modem
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/perl-Device-SerialPort b/config/rootfiles/core/79/filelists/perl-Device-SerialPort
new file mode 120000 (symlink)
index 0000000..2eb1527
--- /dev/null
@@ -0,0 +1 @@
+../../../common/perl-Device-SerialPort
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/ppp b/config/rootfiles/core/79/filelists/ppp
new file mode 120000 (symlink)
index 0000000..4844a9b
--- /dev/null
@@ -0,0 +1 @@
+../../../common/ppp
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/snort b/config/rootfiles/core/79/filelists/snort
new file mode 120000 (symlink)
index 0000000..9406ce0
--- /dev/null
@@ -0,0 +1 @@
+../../../common/snort
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/sudo b/config/rootfiles/core/79/filelists/sudo
new file mode 120000 (symlink)
index 0000000..0d3c45e
--- /dev/null
@@ -0,0 +1 @@
+../../../common/sudo
\ No newline at end of file
diff --git a/config/rootfiles/core/79/filelists/vnstat b/config/rootfiles/core/79/filelists/vnstat
new file mode 120000 (symlink)
index 0000000..2e2e610
--- /dev/null
@@ -0,0 +1 @@
+../../../common/vnstat
\ No newline at end of file
diff --git a/config/rootfiles/core/79/update.sh b/config/rootfiles/core/79/update.sh
new file mode 100644 (file)
index 0000000..2085d43
--- /dev/null
@@ -0,0 +1,299 @@
+#!/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 3 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) 2014 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+function add_to_backup ()
+{
+       # Add path to ROOTFILES but remove old entries to prevent double
+       # files in the tar
+       grep -v "^$1" /opt/pakfire/tmp/ROOTFILES > /opt/pakfire/tmp/ROOTFILES.tmp
+       mv /opt/pakfire/tmp/ROOTFILES.tmp /opt/pakfire/tmp/ROOTFILES
+       echo $1 >> /opt/pakfire/tmp/ROOTFILES
+}
+
+#
+# Remove old core updates from pakfire cache to save space...
+core=79
+for (( i=1; i<=${core}; i++ ))
+do
+       rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+#
+# Do some sanity checks.
+case $(uname -r) in
+       *-ipfire-versatile )
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: ERROR cannot update. versatile support is dropped."
+               # Report no error to pakfire. So it does not try to install it again.
+               exit 0
+               ;;
+       *-ipfire-xen )
+               BOOTSIZE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f2 | tail -n 1`
+               if [ $BOOTSIZE -lt 28000 ]; then
+                       /usr/bin/logger -p syslog.emerg -t ipfire \
+                               "core-update-${core}: ERROR cannot update because not enough space on boot."
+                       exit 2
+               fi
+               ;;
+       *-ipfire* )
+               # Ok.
+               ;;
+       * )
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: ERROR cannot update. No IPFire Kernel."
+               exit 1
+       ;;
+esac
+
+
+#
+#
+KVER="xxxKVERxxx"
+MOUNT=`grep "kernel" /boot/grub/grub.conf 2>/dev/null | tail -n 1 `
+# Nur den letzten Parameter verwenden
+echo $MOUNT > /dev/null
+MOUNT=$_
+if [ ! $MOUNT == "rw" ]; then
+       MOUNT="ro"
+fi
+
+#
+# check if we the backup file already exist
+if [ -e /var/ipfire/backup/core-upgrade${core}_${KVER}.tar.xz ]; then
+    echo Moving backup to backup-old ...
+    mv -f /var/ipfire/backup/core-upgrade${core}_${KVER}.tar.xz \
+       /var/ipfire/backup/core-upgrade${core}_${KVER}-old.tar.xz
+fi
+echo First we made a backup of all files that was inside of the
+echo update archive. This may take a while ...
+# Add some files that are not in the package to backup
+add_to_backup lib/modules
+add_to_backup boot
+
+# Backup the files
+tar cJvf /var/ipfire/backup/core-upgrade${core}_${KVER}.tar.xz \
+    -C / -T /opt/pakfire/tmp/ROOTFILES --exclude='#*' --exclude='/var/cache' > /dev/null 2>&1
+
+# Check diskspace on root
+ROOTSPACE=`df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+
+if [ $ROOTSPACE -lt 100000 ]; then
+       /usr/bin/logger -p syslog.emerg -t ipfire \
+               "core-update-${core}: ERROR cannot update because not enough free space on root."
+       exit 2
+fi
+
+
+echo
+echo Update Kernel to $KVER ...
+#
+# Remove old kernel, configs, initrd, modules ...
+#
+rm -rf /boot/System.map-*
+rm -rf /boot/config-*
+rm -rf /boot/ipfirerd-*
+rm -rf /boot/vmlinuz-*
+rm -rf /boot/uImage-ipfire-*
+rm -rf /boot/uInit-ipfire-*
+rm -rf /lib/modules
+
+case $(uname -m) in
+       i?86 )
+               #
+               # Backup grub.conf
+               #
+               cp -vf /boot/grub/grub.conf /boot/grub/grub.conf.org
+       ;;
+esac
+#
+#Stop services
+/etc/init.d/snort stop
+/etc/init.d/squid stop
+/etc/init.d/ipsec stop
+/etc/init.d/apache stop
+
+# rename /etc/modprobe.d files
+for i in $(find /etc/modprobe.d/* | grep -v ".conf"); do
+       mv $i $i.conf
+done
+
+#
+#Extract files
+tar xavf /opt/pakfire/tmp/files* --no-overwrite-dir -p --numeric-owner -C /
+
+# Check diskspace on boot
+BOOTSPACE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+
+if [ $BOOTSPACE -lt 1000 ]; then
+       case $(uname -r) in
+               *-ipfire-kirkwood )
+                       # Special handling for old kirkwood images.
+                       # (install only kirkwood kernel)
+                       rm -rf /boot/*
+                       tar xavf /opt/pakfire/tmp/files* --no-overwrite-dir -p \
+                               --numeric-owner -C / --wildcards 'boot/*-kirkwood*'
+                       ;;
+               * )
+                       /usr/bin/logger -p syslog.emerg -t ipfire \
+                               "core-update-${core}: FATAL-ERROR space run out on boot. System is not bootable..."
+                       /etc/init.d/apache start
+                       exit 4
+                       ;;
+       esac
+fi
+
+# Update ping
+rm -f /bin/ping
+ln -sf ../usr/bin/ping /bin/ping
+chmod 4755 /usr/bin/ping
+
+# Update Language cache
+perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+
+# Add nobody to group dialout
+usermod -a -G dialout nobody
+
+#
+# Start services
+#
+/etc/init.d/apache start
+/etc/init.d/squid start
+/etc/init.d/snort start
+if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then
+       /etc/init.d/ipsec start
+fi
+
+case $(uname -m) in
+       i?86 )
+               #
+               # Modify grub.conf
+               #
+               echo
+               echo Update grub configuration ...
+               ROOT=`mount | grep " / " | cut -d" " -f1`
+
+               if [ ! -z $ROOT ]; then
+                       ROOTUUID=`blkid -c /dev/null -sUUID $ROOT | cut -d'"' -f2`
+               fi
+
+               if [ ! -z $ROOTUUID ]; then
+                       sed -i "s|ROOT|UUID=$ROOTUUID|g" /boot/grub/grub.conf
+               else
+                       sed -i "s|ROOT|$ROOT|g" /boot/grub/grub.conf
+               fi
+               sed -i "s|KVER|$KVER|g" /boot/grub/grub.conf
+               sed -i "s|MOUNT|$MOUNT|g" /boot/grub/grub.conf
+
+               if [ "$(grep "^serial" /boot/grub/grub.conf.org)" == "" ]; then
+                       echo "grub use default console ..."
+               else
+                       echo "grub use serial console ..."
+                       sed -i -e "s|splashimage|#splashimage|g" /boot/grub/grub.conf
+                       sed -i -e "s|#serial|serial|g" /boot/grub/grub.conf
+                       sed -i -e "s|#terminal|terminal|g" /boot/grub/grub.conf
+                       sed -i -e "s| panic=10 | console=ttyS0,115200n8 panic=10 |g" /boot/grub/grub.conf
+               fi
+
+               #
+               # ReInstall grub
+               #
+                       echo "(hd0) ${ROOT::`expr length $ROOT`-1}" > /boot/grub/device.map
+                       grub-install --no-floppy ${ROOT::`expr length $ROOT`-1}
+       ;;
+esac
+
+
+# Force (re)install pae kernel if pae is supported
+rm -rf /opt/pakfire/db/*/meta-linux-pae
+if [ ! "$(grep "^flags.* pae " /proc/cpuinfo)" == "" ]; then
+       ROOTSPACE=`df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+       BOOTSPACE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+       if [ $BOOTSPACE -lt 12000 -o $ROOTSPACE -lt 90000 ]; then
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: WARNING not enough space for pae kernel."
+       else
+               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
+               echo "Name: linux-pae" > /opt/pakfire/db/meta/meta-linux-pae
+               echo "ProgVersion: 0" >> /opt/pakfire/db/meta/meta-linux-pae
+               echo "Release: 0"     >> /opt/pakfire/db/meta/meta-linux-pae
+       fi
+fi
+
+# Force reinstall xen kernel if it was installed
+if [ -e "/opt/pakfire/db/installed/meta-linux-xen" ]; then
+       echo "Name: linux-xen" > /opt/pakfire/db/installed/meta-linux-xen
+       echo "ProgVersion: 0" >> /opt/pakfire/db/installed/meta-linux-xen
+       echo "Release: 0"     >> /opt/pakfire/db/installed/meta-linux-xen
+       echo "Name: linux-xen" > /opt/pakfire/db/meta/meta-linux-xen
+       echo "ProgVersion: 0" >> /opt/pakfire/db/meta/meta-linux-xen
+       echo "Release: 0"     >> /opt/pakfire/db/meta/meta-linux-xen
+       # Add xvc0 to /etc/securetty
+       echo "xvc0" >> /etc/securetty
+fi
+
+#
+# After pakfire has ended run it again and update the lists and do upgrade
+#
+echo '#!/bin/bash'                                        >  /tmp/pak_update
+echo 'while [ "$(ps -A | grep " update.sh")" != "" ]; do' >> /tmp/pak_update
+echo '    sleep 1'                                        >> /tmp/pak_update
+echo 'done'                                               >> /tmp/pak_update
+echo 'while [ "$(ps -A | grep " pakfire")" != "" ]; do'   >> /tmp/pak_update
+echo '    sleep 1'                                        >> /tmp/pak_update
+echo 'done'                                               >> /tmp/pak_update
+echo '/opt/pakfire/pakfire update -y --force'             >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire "Core-upgrade finished. If you use a customized grub.cfg"' >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire "Check it before reboot !!!"' >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire " *** Please reboot... *** "' >> /tmp/pak_update
+echo 'touch /var/run/need_reboot ' >> /tmp/pak_update
+#
+killall -KILL pak_update
+chmod +x /tmp/pak_update
+/tmp/pak_update &
+
+sync
+
+#
+#Finish
+(
+       /etc/init.d/fireinfo start
+       sendprofile
+) >/dev/null 2>&1 &
+
+# Update Package list for addon installation
+/opt/pakfire/pakfire update -y --force
+
+echo
+echo Please wait until pakfire has ended...
+echo
+#Don't report the exitcode last command
+exit 0
+
diff --git a/config/rootfiles/installer/eject b/config/rootfiles/installer/eject
deleted file mode 120000 (symlink)
index 54928be..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../common/eject
\ No newline at end of file
diff --git a/config/rootfiles/installer/libidn b/config/rootfiles/installer/libidn
new file mode 120000 (symlink)
index 0000000..9750546
--- /dev/null
@@ -0,0 +1 @@
+../common/libidn
\ No newline at end of file
diff --git a/config/rootfiles/installer/parted b/config/rootfiles/installer/parted
new file mode 120000 (symlink)
index 0000000..dc69674
--- /dev/null
@@ -0,0 +1 @@
+../packages/parted
\ No newline at end of file
index 12dcde1d26e6ce5a109a5da892d4dc2befb5dbfb..3b65c4fee8a84d45e2efa499413c6dcb66ebfa31 100644 (file)
@@ -1,4 +1,4 @@
-etc/init.d/squid
+etc/rc.d/init.d/squid
 etc/sysctl.conf
 etc/squid/errors
 usr/bin/squidclient
@@ -32,7 +32,7 @@ srv/web/ipfire/cgi-bin/updatexlrator.cgi
 var/ipfire/langs
 lib/modules/KVER-ipfire/kernel/drivers/net/imq.ko
 var/ipfire/qos/bin/makeqosscripts.pl
-etc/init.d/network
+etc/rc.d/init.d/network
 bin/ntfs-3g
 lib/libntfs-3g.so
 lib/libntfs-3g.so.49
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/67/filelists/fireinfo b/config/rootfiles/oldcore/67/filelists/fireinfo
new file mode 120000 (symlink)
index 0000000..c461155
--- /dev/null
@@ -0,0 +1 @@
+../../../common/fireinfo
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/67/filelists/squid b/config/rootfiles/oldcore/67/filelists/squid
new file mode 120000 (symlink)
index 0000000..2dc8372
--- /dev/null
@@ -0,0 +1 @@
+../../../common/squid
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/67/meta b/config/rootfiles/oldcore/67/meta
new file mode 100644 (file)
index 0000000..d547fa8
--- /dev/null
@@ -0,0 +1 @@
+DEPS=""
diff --git a/config/rootfiles/oldcore/68/filelists/GeoIP b/config/rootfiles/oldcore/68/filelists/GeoIP
new file mode 100644 (file)
index 0000000..0258236
--- /dev/null
@@ -0,0 +1 @@
+usr/local/share/GeoIP/GeoIP.dat
similarity index 94%
rename from config/rootfiles/core/68/filelists/files
rename to config/rootfiles/oldcore/68/filelists/files
index 30874a52245b40fd4e145cd6adee9702205be0e5..328375de0dcebcf3236a14d2073035123a336312 100644 (file)
@@ -5,6 +5,7 @@ srv/web/ipfire/cgi-bin/connections.cgi
 srv/web/ipfire/cgi-bin/credits.cgi
 srv/web/ipfire/cgi-bin/ovpnmain.cgi
 srv/web/ipfire/cgi-bin/services.cgi
+srv/web/ipfire/cgi-bin/urlfilter.cgi
 srv/web/ipfire/cgi-bin/vpnmain.cgi
 srv/web/ipfire/html/themes/ipfire/include/functions.pl
 srv/web/ipfire/html/themes/ipfire/include/style.css
diff --git a/config/rootfiles/oldcore/68/filelists/hwdata b/config/rootfiles/oldcore/68/filelists/hwdata
new file mode 100644 (file)
index 0000000..5a9672f
--- /dev/null
@@ -0,0 +1,2 @@
+usr/share/hwdata/pci.ids
+usr/share/hwdata/usb.ids
diff --git a/config/rootfiles/oldcore/68/filelists/strongswan b/config/rootfiles/oldcore/68/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/68/meta b/config/rootfiles/oldcore/68/meta
new file mode 100644 (file)
index 0000000..d547fa8
--- /dev/null
@@ -0,0 +1 @@
+DEPS=""
diff --git a/config/rootfiles/oldcore/69/exclude b/config/rootfiles/oldcore/69/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/69/filelists/armv5tel/linux-kirkwood b/config/rootfiles/oldcore/69/filelists/armv5tel/linux-kirkwood
new file mode 120000 (symlink)
index 0000000..7217107
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-kirkwood
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/69/filelists/armv5tel/linux-omap b/config/rootfiles/oldcore/69/filelists/armv5tel/linux-omap
new file mode 120000 (symlink)
index 0000000..50bf786
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-omap
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/69/filelists/armv5tel/linux-rpi b/config/rootfiles/oldcore/69/filelists/armv5tel/linux-rpi
new file mode 120000 (symlink)
index 0000000..a651a49
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-rpi
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/69/filelists/files b/config/rootfiles/oldcore/69/filelists/files
new file mode 100644 (file)
index 0000000..2bed42e
--- /dev/null
@@ -0,0 +1,6 @@
+etc/system-release
+etc/issue
+etc/rc.d/init.d/console
+var/ipfire/langs/list
+var/ipfire/langs/tr.pl
+var/ipfire/ovpn/verify
diff --git a/config/rootfiles/oldcore/69/filelists/i586/grub.conf b/config/rootfiles/oldcore/69/filelists/i586/grub.conf
new file mode 100644 (file)
index 0000000..b120cc5
--- /dev/null
@@ -0,0 +1 @@
+boot/grub/grub.conf
diff --git a/config/rootfiles/oldcore/69/filelists/i586/linux b/config/rootfiles/oldcore/69/filelists/i586/linux
new file mode 120000 (symlink)
index 0000000..693ec4b
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/linux
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/69/filelists/openssh b/config/rootfiles/oldcore/69/filelists/openssh
new file mode 120000 (symlink)
index 0000000..d8c77fd
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openssh
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/69/filelists/setup b/config/rootfiles/oldcore/69/filelists/setup
new file mode 120000 (symlink)
index 0000000..209374b
--- /dev/null
@@ -0,0 +1 @@
+../../../common/setup
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/69/meta b/config/rootfiles/oldcore/69/meta
new file mode 100644 (file)
index 0000000..d547fa8
--- /dev/null
@@ -0,0 +1 @@
+DEPS=""
diff --git a/config/rootfiles/oldcore/69/update.sh b/config/rootfiles/oldcore/69/update.sh
new file mode 100644 (file)
index 0000000..984f174
--- /dev/null
@@ -0,0 +1,274 @@
+#!/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 3 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) 2013 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+function add_to_backup ()
+{
+       # Add path to ROOTFILES but remove old entries to prevent double
+       # files in the tar
+       grep -v "^$1" /opt/pakfire/tmp/ROOTFILES > /opt/pakfire/tmp/ROOTFILES.tmp
+       mv /opt/pakfire/tmp/ROOTFILES.tmp /opt/pakfire/tmp/ROOTFILES
+       echo $1 >> /opt/pakfire/tmp/ROOTFILES
+}
+
+#
+# Remove old core updates from pakfire cache to save space...
+core=69
+for (( i=1; i<=$core; i++ ))
+do
+       rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+#
+# Do some sanity checks.
+case $(uname -r) in
+       *-ipfire-versatile )
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: ERROR cannot update. versatile support is dropped."
+               # Report no error to pakfire. So it does not try to install it again.
+               exit 0
+               ;;
+       *-ipfire-xen )
+               BOOTSIZE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f2 | tail -n 1`
+               if [ $BOOTSIZE -lt 28000 ]; then
+                       /usr/bin/logger -p syslog.emerg -t ipfire \
+                               "core-update-${core}: ERROR cannot update because not enough space on boot."
+                       exit 2
+               fi
+               ;;
+       *-ipfire* )
+               # Ok.
+               ;;
+       * )
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: ERROR cannot update. No IPFire Kernel."
+               # Report no error to pakfire. So it does not try to install it again.
+               exit 0
+       ;;
+esac
+
+
+#
+#
+KVER="3.2.46"
+MOUNT=`grep "kernel" /boot/grub/grub.conf 2>/dev/null | tail -n 1 `
+# Nur den letzten Parameter verwenden
+echo $MOUNT > /dev/null
+MOUNT=$_
+if [ ! $MOUNT == "rw" ]; then
+       MOUNT="ro"
+fi
+
+#
+# check if we the backup file already exist
+if [ -e /var/ipfire/backup/core-upgrade${core}_$KVER.tar.xz ]; then
+    echo Moving backup to backup-old ...
+    mv -f /var/ipfire/backup/core-upgrade${core}_$KVER.tar.xz \
+       /var/ipfire/backup/core-upgrade${core}_$KVER-old.tar.xz
+fi
+echo First we made a backup of all files that was inside of the
+echo update archive. This may take a while ...
+# Add some files that are not in the package to backup
+add_to_backup lib/modules
+add_to_backup boot
+add_to_backup etc/sysconfig/lm_sensors
+add_to_backup etc/sysconfig/rc.local
+
+# Backup the files
+tar cJvf /var/ipfire/backup/core-upgrade${core}_$KVER.tar.xz \
+    -C / -T /opt/pakfire/tmp/ROOTFILES --exclude='#*' --exclude='/var/cache' > /dev/null 2>&1
+
+# Check diskspace on root
+ROOTSPACE=`df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+
+if [ $ROOTSPACE -lt 70000 ]; then
+       /usr/bin/logger -p syslog.emerg -t ipfire \
+               "core-update-${core}: ERROR cannot update because not enough free space on root."
+       exit 2
+fi
+
+echo
+echo Update Kernel to $KVER ...
+#
+# Remove old kernel, configs, initrd, modules ...
+#
+rm -rf /boot/System.map-*
+rm -rf /boot/config-*
+rm -rf /boot/ipfirerd-*
+rm -rf /boot/vmlinuz-*
+rm -rf /boot/uImage-ipfire-*
+rm -rf /boot/uInit-ipfire-*
+rm -rf /lib/modules
+
+case $(uname -m) in
+       i?86 )
+               #
+               # Backup grub.conf
+               #
+               cp -vf /boot/grub/grub.conf /boot/grub/grub.conf.org
+       ;;
+esac
+
+#
+# Remove meta's of packages that are now common...
+#
+rm -rf /opt/pakfire/db/*/meta-freefont
+
+#
+#Stop services
+
+#
+#Extract files
+tar xavf /opt/pakfire/tmp/files* --no-overwrite-dir -p --numeric-owner -C /
+
+# Check diskspace on boot
+BOOTSPACE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+
+if [ $BOOTSPACE -lt 1000 ]; then
+       case $(uname -r) in
+               *-ipfire-kirkwood )
+                       # Special handling for old kirkwood images.
+                       # (install only kirkwood kernel)
+                       rm -rf /boot/*
+                       tar xavf /opt/pakfire/tmp/files* --no-overwrite-dir -p \
+                               --numeric-owner -C / --wildcards 'boot/*-kirkwood*'
+                       ;;
+               * )
+                       /usr/bin/logger -p syslog.emerg -t ipfire \
+                               "core-update-${core}: FATAL-ERROR space run out on boot. System is not bootable..."
+                       /etc/init.d/apache start
+                       exit 4
+                       ;;
+       esac
+fi
+
+
+#
+#Start services
+
+case $(uname -m) in
+       i?86 )
+               #
+               # Modify grub.conf
+               #
+               echo
+               echo Update grub configuration ...
+               ROOT=`mount | grep " / " | cut -d" " -f1`
+
+               if [ ! -z $ROOT ]; then
+                       ROOTUUID=`blkid -c /dev/null -sUUID $ROOT | cut -d'"' -f2`
+               fi
+
+               if [ ! -z $ROOTUUID ]; then
+                       sed -i "s|ROOT|UUID=$ROOTUUID|g" /boot/grub/grub.conf
+               else
+                       sed -i "s|ROOT|$ROOT|g" /boot/grub/grub.conf
+               fi
+               sed -i "s|KVER|$KVER|g" /boot/grub/grub.conf
+               sed -i "s|MOUNT|$MOUNT|g" /boot/grub/grub.conf
+
+               if [ "$(grep "^serial" /boot/grub/grub.conf.org)" == "" ]; then
+                       echo "grub use default console ..."
+               else
+                       echo "grub use serial console ..."
+                       sed -i -e "s|splashimage|#splashimage|g" /boot/grub/grub.conf
+                       sed -i -e "s|#serial|serial|g" /boot/grub/grub.conf
+                       sed -i -e "s|#terminal|terminal|g" /boot/grub/grub.conf
+                       sed -i -e "s| panic=10 | console=ttyS0,115200n8 panic=10 |g" /boot/grub/grub.conf
+               fi
+
+               #
+               # ReInstall grub
+               #
+                       echo "(hd0) ${ROOT::`expr length $ROOT`-1}" > /boot/grub/device.map
+                       grub-install --no-floppy ${ROOT::`expr length $ROOT`-1}
+       ;;
+esac
+#
+# Delete old lm-sensor modullist to force search at next boot
+#
+rm -rf /etc/sysconfig/lm_sensors
+
+#
+#Update Language cache
+perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+
+# Force (re)install pae kernel if pae is supported
+rm -rf /opt/pakfire/db/*/meta-linux-pae
+if [ ! "$(grep "^flags.* pae " /proc/cpuinfo)" == "" ]; then
+       ROOTSPACE=`df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+       BOOTSPACE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+       if [ $BOOTSPACE -lt 8000 -o $ROOTSPACE -lt 70000 ]; then
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: WARNING not enough space for pae kernel."
+       else
+               rm -f /boot/grub/grub-backup-*-pae_install.conf
+               echo "Name: linux-pae" > /opt/pakfire/db/installed/meta-linux-pae
+               echo "ProgVersion: 3.2.38" >> /opt/pakfire/db/installed/meta-linux-pae
+               echo "Release: 28"     >> /opt/pakfire/db/installed/meta-linux-pae
+       fi
+fi
+
+# Force reinstall xen kernel if it was installed
+if [ -e "/opt/pakfire/db/installed/meta-linux-xen" ]; then
+       rm -f /boot/grub/grub-backup-*-xen.conf
+       echo "Name: linux-xen" > /opt/pakfire/db/installed/meta-linux-xen
+       echo "ProgVersion: 2.6.32.60" >> /opt/pakfire/db/installed/meta-linux-xen
+       echo "Release: 25"     >> /opt/pakfire/db/installed/meta-linux-xen
+fi
+
+#
+# After pakfire has ended run it again and update the lists and do upgrade
+#
+echo '#!/bin/bash'                                        >  /tmp/pak_update
+echo 'while [ "$(ps -A | grep " update.sh")" != "" ]; do' >> /tmp/pak_update
+echo '    sleep 1'                                        >> /tmp/pak_update
+echo 'done'                                               >> /tmp/pak_update
+echo 'while [ "$(ps -A | grep " pakfire")" != "" ]; do'   >> /tmp/pak_update
+echo '    sleep 1'                                        >> /tmp/pak_update
+echo 'done'                                               >> /tmp/pak_update
+echo '/opt/pakfire/pakfire update -y --force'             >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire "Core-upgrade finished. If you use a customized grub.cfg"' >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire "Check it before reboot !!!"' >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire " *** Please reboot... *** "' >> /tmp/pak_update
+echo 'touch /var/run/need_reboot ' >> /tmp/pak_update
+#
+chmod +x /tmp/pak_update
+/tmp/pak_update &
+
+
+sync
+# This update need a reboot...
+touch /var/run/need_reboot
+
+#
+#Finish
+/etc/init.d/fireinfo start
+sendprofile
+#Don't report the exitcode last command
+exit 0
diff --git a/config/rootfiles/oldcore/70/exclude b/config/rootfiles/oldcore/70/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/70/filelists/armv5tel/linux-kirkwood b/config/rootfiles/oldcore/70/filelists/armv5tel/linux-kirkwood
new file mode 120000 (symlink)
index 0000000..7217107
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-kirkwood
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/70/filelists/armv5tel/linux-omap b/config/rootfiles/oldcore/70/filelists/armv5tel/linux-omap
new file mode 120000 (symlink)
index 0000000..50bf786
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-omap
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/70/filelists/armv5tel/linux-rpi b/config/rootfiles/oldcore/70/filelists/armv5tel/linux-rpi
new file mode 120000 (symlink)
index 0000000..a651a49
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/armv5tel/linux-rpi
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/70/filelists/crda b/config/rootfiles/oldcore/70/filelists/crda
new file mode 120000 (symlink)
index 0000000..d68c46e
--- /dev/null
@@ -0,0 +1 @@
+../../../common/crda
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/70/filelists/files b/config/rootfiles/oldcore/70/filelists/files
new file mode 100644 (file)
index 0000000..1809e77
--- /dev/null
@@ -0,0 +1,52 @@
+etc/system-release
+etc/issue
+etc/rc.d/init.d/firewall
+etc/rc.d/init.d/network-vlans
+etc/rc.d/init.d/squid
+usr/local/bin/openvpnctrl
+srv/web/ipfire/cgi-bin/ddns.cgi
+srv/web/ipfire/cgi-bin/proxy.cgi
+usr/lib/squid/errors/tr/ERR_ACCESS_DENIED
+usr/lib/squid/errors/tr/ERR_ACL_TIME_QUOTA_EXCEEDED
+usr/lib/squid/errors/tr/ERR_AGENT_CONFIGURE
+usr/lib/squid/errors/tr/ERR_AGENT_WPAD
+usr/lib/squid/errors/tr/ERR_CACHE_ACCESS_DENIED
+usr/lib/squid/errors/tr/ERR_CACHE_MGR_ACCESS_DENIED
+usr/lib/squid/errors/tr/ERR_CANNOT_FORWARD
+usr/lib/squid/errors/tr/ERR_CONNECT_FAIL
+usr/lib/squid/errors/tr/ERR_DIR_LISTING
+usr/lib/squid/errors/tr/ERR_DNS_FAIL
+usr/lib/squid/errors/tr/ERR_ESI
+usr/lib/squid/errors/tr/ERR_FORWARDING_DENIED
+usr/lib/squid/errors/tr/ERR_FTP_DISABLED
+usr/lib/squid/errors/tr/ERR_FTP_FAILURE
+usr/lib/squid/errors/tr/ERR_FTP_FORBIDDEN
+usr/lib/squid/errors/tr/ERR_FTP_NOT_FOUND
+usr/lib/squid/errors/tr/ERR_FTP_PUT_CREATED
+usr/lib/squid/errors/tr/ERR_FTP_PUT_ERROR
+usr/lib/squid/errors/tr/ERR_FTP_PUT_MODIFIED
+usr/lib/squid/errors/tr/ERR_FTP_UNAVAILABLE
+usr/lib/squid/errors/tr/ERR_GATEWAY_FAILURE
+usr/lib/squid/errors/tr/ERR_ICAP_FAILURE
+usr/lib/squid/errors/tr/ERR_INVALID_REQ
+usr/lib/squid/errors/tr/ERR_INVALID_RESP
+usr/lib/squid/errors/tr/ERR_INVALID_URL
+usr/lib/squid/errors/tr/ERR_LIFETIME_EXP
+usr/lib/squid/errors/tr/ERR_NO_RELAY
+usr/lib/squid/errors/tr/ERR_ONLY_IF_CACHED_MISS
+usr/lib/squid/errors/tr/ERR_PRECONDITION_FAILED
+usr/lib/squid/errors/tr/ERR_READ_ERROR
+usr/lib/squid/errors/tr/ERR_READ_TIMEOUT
+usr/lib/squid/errors/tr/ERR_SECURE_CONNECT_FAIL
+usr/lib/squid/errors/tr/ERR_SHUTTING_DOWN
+usr/lib/squid/errors/tr/ERR_SOCKET_FAILURE
+usr/lib/squid/errors/tr/ERR_TOO_BIG
+usr/lib/squid/errors/tr/ERR_UNSUP_HTTPVERSION
+usr/lib/squid/errors/tr/ERR_UNSUP_REQ
+usr/lib/squid/errors/tr/ERR_URN_RESOLVE
+usr/lib/squid/errors/tr/ERR_WRITE_ERROR
+usr/lib/squid/errors/tr/ERR_ZERO_SIZE_OBJECT
+usr/lib/squid/errors/tr/error-details.txt
+usr/local/bin/setddns.pl
+var/ipfire/general-functions.pl
+var/ipfire/outgoing/bin/outgoingfw.pl
diff --git a/config/rootfiles/oldcore/70/filelists/i586/grub.conf b/config/rootfiles/oldcore/70/filelists/i586/grub.conf
new file mode 100644 (file)
index 0000000..b120cc5
--- /dev/null
@@ -0,0 +1 @@
+boot/grub/grub.conf
diff --git a/config/rootfiles/oldcore/70/filelists/i586/linux b/config/rootfiles/oldcore/70/filelists/i586/linux
new file mode 120000 (symlink)
index 0000000..693ec4b
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/linux
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/70/filelists/iw b/config/rootfiles/oldcore/70/filelists/iw
new file mode 120000 (symlink)
index 0000000..7c58a20
--- /dev/null
@@ -0,0 +1 @@
+../../../common/iw
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/70/filelists/libjpeg b/config/rootfiles/oldcore/70/filelists/libjpeg
new file mode 120000 (symlink)
index 0000000..3b1a782
--- /dev/null
@@ -0,0 +1 @@
+../../../common/libjpeg
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/70/filelists/wireless-regdb b/config/rootfiles/oldcore/70/filelists/wireless-regdb
new file mode 120000 (symlink)
index 0000000..c9205b3
--- /dev/null
@@ -0,0 +1 @@
+../../../common/wireless-regdb
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/70/meta b/config/rootfiles/oldcore/70/meta
new file mode 100644 (file)
index 0000000..d547fa8
--- /dev/null
@@ -0,0 +1 @@
+DEPS=""
diff --git a/config/rootfiles/oldcore/70/update.sh b/config/rootfiles/oldcore/70/update.sh
new file mode 100644 (file)
index 0000000..4076f06
--- /dev/null
@@ -0,0 +1,274 @@
+#!/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 3 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) 2013 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+function add_to_backup ()
+{
+       # Add path to ROOTFILES but remove old entries to prevent double
+       # files in the tar
+       grep -v "^$1" /opt/pakfire/tmp/ROOTFILES > /opt/pakfire/tmp/ROOTFILES.tmp
+       mv /opt/pakfire/tmp/ROOTFILES.tmp /opt/pakfire/tmp/ROOTFILES
+       echo $1 >> /opt/pakfire/tmp/ROOTFILES
+}
+
+#
+# Remove old core updates from pakfire cache to save space...
+core=70
+for (( i=1; i<=$core; i++ ))
+do
+       rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+#
+# Do some sanity checks.
+case $(uname -r) in
+       *-ipfire-versatile )
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: ERROR cannot update. versatile support is dropped."
+               # Report no error to pakfire. So it does not try to install it again.
+               exit 0
+               ;;
+       *-ipfire-xen )
+               BOOTSIZE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f2 | tail -n 1`
+               if [ $BOOTSIZE -lt 28000 ]; then
+                       /usr/bin/logger -p syslog.emerg -t ipfire \
+                               "core-update-${core}: ERROR cannot update because not enough space on boot."
+                       exit 2
+               fi
+               ;;
+       *-ipfire* )
+               # Ok.
+               ;;
+       * )
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: ERROR cannot update. No IPFire Kernel."
+               # Report no error to pakfire. So it does not try to install it again.
+               exit 0
+       ;;
+esac
+
+
+#
+#
+KVER="3.2.48"
+MOUNT=`grep "kernel" /boot/grub/grub.conf 2>/dev/null | tail -n 1 `
+# Nur den letzten Parameter verwenden
+echo $MOUNT > /dev/null
+MOUNT=$_
+if [ ! $MOUNT == "rw" ]; then
+       MOUNT="ro"
+fi
+
+#
+# check if we the backup file already exist
+if [ -e /var/ipfire/backup/core-upgrade${core}_$KVER.tar.xz ]; then
+    echo Moving backup to backup-old ...
+    mv -f /var/ipfire/backup/core-upgrade${core}_$KVER.tar.xz \
+       /var/ipfire/backup/core-upgrade${core}_$KVER-old.tar.xz
+fi
+echo First we made a backup of all files that was inside of the
+echo update archive. This may take a while ...
+# Add some files that are not in the package to backup
+add_to_backup lib/modules
+add_to_backup boot
+add_to_backup etc/sysconfig/lm_sensors
+add_to_backup etc/sysconfig/rc.local
+
+# Backup the files
+tar cJvf /var/ipfire/backup/core-upgrade${core}_$KVER.tar.xz \
+    -C / -T /opt/pakfire/tmp/ROOTFILES --exclude='#*' --exclude='/var/cache' > /dev/null 2>&1
+
+# Check diskspace on root
+ROOTSPACE=`df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+
+if [ $ROOTSPACE -lt 70000 ]; then
+       /usr/bin/logger -p syslog.emerg -t ipfire \
+               "core-update-${core}: ERROR cannot update because not enough free space on root."
+       exit 2
+fi
+
+echo
+echo Update Kernel to $KVER ...
+#
+# Remove old kernel, configs, initrd, modules ...
+#
+rm -rf /boot/System.map-*
+rm -rf /boot/config-*
+rm -rf /boot/ipfirerd-*
+rm -rf /boot/vmlinuz-*
+rm -rf /boot/uImage-ipfire-*
+rm -rf /boot/uInit-ipfire-*
+rm -rf /lib/modules
+
+case $(uname -m) in
+       i?86 )
+               #
+               # Backup grub.conf
+               #
+               cp -vf /boot/grub/grub.conf /boot/grub/grub.conf.org
+       ;;
+esac
+
+#
+# Remove meta's of packages that are now common...
+#
+rm -rf /opt/pakfire/db/*/meta-freefont
+
+#
+#Stop services
+
+#
+#Extract files
+tar xavf /opt/pakfire/tmp/files* --no-overwrite-dir -p --numeric-owner -C /
+
+# Check diskspace on boot
+BOOTSPACE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+
+if [ $BOOTSPACE -lt 1000 ]; then
+       case $(uname -r) in
+               *-ipfire-kirkwood )
+                       # Special handling for old kirkwood images.
+                       # (install only kirkwood kernel)
+                       rm -rf /boot/*
+                       tar xavf /opt/pakfire/tmp/files* --no-overwrite-dir -p \
+                               --numeric-owner -C / --wildcards 'boot/*-kirkwood*'
+                       ;;
+               * )
+                       /usr/bin/logger -p syslog.emerg -t ipfire \
+                               "core-update-${core}: FATAL-ERROR space run out on boot. System is not bootable..."
+                       /etc/init.d/apache start
+                       exit 4
+                       ;;
+       esac
+fi
+
+
+#
+#Start services
+
+case $(uname -m) in
+       i?86 )
+               #
+               # Modify grub.conf
+               #
+               echo
+               echo Update grub configuration ...
+               ROOT=`mount | grep " / " | cut -d" " -f1`
+
+               if [ ! -z $ROOT ]; then
+                       ROOTUUID=`blkid -c /dev/null -sUUID $ROOT | cut -d'"' -f2`
+               fi
+
+               if [ ! -z $ROOTUUID ]; then
+                       sed -i "s|ROOT|UUID=$ROOTUUID|g" /boot/grub/grub.conf
+               else
+                       sed -i "s|ROOT|$ROOT|g" /boot/grub/grub.conf
+               fi
+               sed -i "s|KVER|$KVER|g" /boot/grub/grub.conf
+               sed -i "s|MOUNT|$MOUNT|g" /boot/grub/grub.conf
+
+               if [ "$(grep "^serial" /boot/grub/grub.conf.org)" == "" ]; then
+                       echo "grub use default console ..."
+               else
+                       echo "grub use serial console ..."
+                       sed -i -e "s|splashimage|#splashimage|g" /boot/grub/grub.conf
+                       sed -i -e "s|#serial|serial|g" /boot/grub/grub.conf
+                       sed -i -e "s|#terminal|terminal|g" /boot/grub/grub.conf
+                       sed -i -e "s| panic=10 | console=ttyS0,115200n8 panic=10 |g" /boot/grub/grub.conf
+               fi
+
+               #
+               # ReInstall grub
+               #
+                       echo "(hd0) ${ROOT::`expr length $ROOT`-1}" > /boot/grub/device.map
+                       grub-install --no-floppy ${ROOT::`expr length $ROOT`-1}
+       ;;
+esac
+#
+# Delete old lm-sensor modullist to force search at next boot
+#
+rm -rf /etc/sysconfig/lm_sensors
+
+#
+#Update Language cache
+perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+
+# Force (re)install pae kernel if pae is supported
+rm -rf /opt/pakfire/db/*/meta-linux-pae
+if [ ! "$(grep "^flags.* pae " /proc/cpuinfo)" == "" ]; then
+       ROOTSPACE=`df / -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+       BOOTSPACE=`df /boot -Pk | sed "s| * | |g" | cut -d" " -f4 | tail -n 1`
+       if [ $BOOTSPACE -lt 8000 -o $ROOTSPACE -lt 70000 ]; then
+               /usr/bin/logger -p syslog.emerg -t ipfire \
+                       "core-update-${core}: WARNING not enough space for pae kernel."
+       else
+               rm -f /boot/grub/grub-backup-*-pae_install.conf
+               echo "Name: linux-pae" > /opt/pakfire/db/installed/meta-linux-pae
+               echo "ProgVersion: 3.2.46" >> /opt/pakfire/db/installed/meta-linux-pae
+               echo "Release: 29"     >> /opt/pakfire/db/installed/meta-linux-pae
+       fi
+fi
+
+# Force reinstall xen kernel if it was installed
+if [ -e "/opt/pakfire/db/installed/meta-linux-xen" ]; then
+       rm -f /boot/grub/grub-backup-*-xen.conf
+       echo "Name: linux-xen" > /opt/pakfire/db/installed/meta-linux-xen
+       echo "ProgVersion: 2.6.32.60" >> /opt/pakfire/db/installed/meta-linux-xen
+       echo "Release: 26"     >> /opt/pakfire/db/installed/meta-linux-xen
+fi
+
+#
+# After pakfire has ended run it again and update the lists and do upgrade
+#
+echo '#!/bin/bash'                                        >  /tmp/pak_update
+echo 'while [ "$(ps -A | grep " update.sh")" != "" ]; do' >> /tmp/pak_update
+echo '    sleep 1'                                        >> /tmp/pak_update
+echo 'done'                                               >> /tmp/pak_update
+echo 'while [ "$(ps -A | grep " pakfire")" != "" ]; do'   >> /tmp/pak_update
+echo '    sleep 1'                                        >> /tmp/pak_update
+echo 'done'                                               >> /tmp/pak_update
+echo '/opt/pakfire/pakfire update -y --force'             >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/opt/pakfire/pakfire upgrade -y'                    >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire "Core-upgrade finished. If you use a customized grub.cfg"' >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire "Check it before reboot !!!"' >> /tmp/pak_update
+echo '/usr/bin/logger -p syslog.emerg -t ipfire " *** Please reboot... *** "' >> /tmp/pak_update
+echo 'touch /var/run/need_reboot ' >> /tmp/pak_update
+#
+chmod +x /tmp/pak_update
+/tmp/pak_update &
+
+
+sync
+# This update need a reboot...
+#touch /var/run/need_reboot
+
+#
+#Finish
+/etc/init.d/fireinfo start
+sendprofile
+#Don't report the exitcode last command
+exit 0
diff --git a/config/rootfiles/oldcore/71/exclude b/config/rootfiles/oldcore/71/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/71/filelists/GeoIP b/config/rootfiles/oldcore/71/filelists/GeoIP
new file mode 100644 (file)
index 0000000..0258236
--- /dev/null
@@ -0,0 +1 @@
+usr/local/share/GeoIP/GeoIP.dat
diff --git a/config/rootfiles/oldcore/71/filelists/curl b/config/rootfiles/oldcore/71/filelists/curl
new file mode 120000 (symlink)
index 0000000..4b84bef
--- /dev/null
@@ -0,0 +1 @@
+../../../common/curl
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/71/filelists/files b/config/rootfiles/oldcore/71/filelists/files
new file mode 100644 (file)
index 0000000..c7df219
--- /dev/null
@@ -0,0 +1,25 @@
+etc/system-release
+etc/issue
+var/ipfire/general-functions.pl
+var/ipfire/header.pl
+var/ipfire/menu.d/10-system.menu
+var/ipfire/menu.d/30-network.menu
+etc/rc.d/init.d/dnsmasq
+etc/rc.d/init.d/wlanclient
+etc/rc.d/init.d/networking/functions.network
+etc/rc.d/init.d/networking/wpa_supplicant.exe
+etc/rc.d/init.d/networking/red
+etc/rc.d/rc0.d/K82wlanclient
+etc/rc.d/rc3.d/S19wlanclient
+etc/rc.d/rc6.d/K82wlanclient
+usr/local/bin/dnsmasqctrl
+usr/local/bin/wirelessclient
+srv/web/ipfire/cgi-bin/dnsforward.cgi
+srv/web/ipfire/cgi-bin/ids.cgi
+srv/web/ipfire/cgi-bin/proxy.cgi
+srv/web/ipfire/cgi-bin/pppsetup.cgi
+srv/web/ipfire/cgi-bin/wirelessclient.cgi
+var/ipfire/dnsforward/config
+var/ipfire/general-functions.pl
+var/ipfire/langs
+var/ipfire/backup/include
diff --git a/config/rootfiles/oldcore/71/filelists/hwdata b/config/rootfiles/oldcore/71/filelists/hwdata
new file mode 100644 (file)
index 0000000..5a9672f
--- /dev/null
@@ -0,0 +1,2 @@
+usr/share/hwdata/pci.ids
+usr/share/hwdata/usb.ids
diff --git a/config/rootfiles/oldcore/71/filelists/jwhois b/config/rootfiles/oldcore/71/filelists/jwhois
new file mode 120000 (symlink)
index 0000000..b984a7f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/jwhois
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/71/filelists/oinkmaster b/config/rootfiles/oldcore/71/filelists/oinkmaster
new file mode 120000 (symlink)
index 0000000..75029e6
--- /dev/null
@@ -0,0 +1 @@
+../../../common/oinkmaster
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/71/filelists/snort b/config/rootfiles/oldcore/71/filelists/snort
new file mode 120000 (symlink)
index 0000000..9406ce0
--- /dev/null
@@ -0,0 +1 @@
+../../../common/snort
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/71/filelists/squid b/config/rootfiles/oldcore/71/filelists/squid
new file mode 120000 (symlink)
index 0000000..2dc8372
--- /dev/null
@@ -0,0 +1 @@
+../../../common/squid
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/71/filelists/usb_modeswitch b/config/rootfiles/oldcore/71/filelists/usb_modeswitch
new file mode 120000 (symlink)
index 0000000..acbab6f
--- /dev/null
@@ -0,0 +1 @@
+../../../common/usb_modeswitch
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/71/filelists/usb_modeswitch_data b/config/rootfiles/oldcore/71/filelists/usb_modeswitch_data
new file mode 120000 (symlink)
index 0000000..4cbce46
--- /dev/null
@@ -0,0 +1 @@
+../../../common/usb_modeswitch_data
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/71/meta b/config/rootfiles/oldcore/71/meta
new file mode 100644 (file)
index 0000000..d547fa8
--- /dev/null
@@ -0,0 +1 @@
+DEPS=""
diff --git a/config/rootfiles/oldcore/71/update.sh b/config/rootfiles/oldcore/71/update.sh
new file mode 100644 (file)
index 0000000..e45ccd8
--- /dev/null
@@ -0,0 +1,80 @@
+#!/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 3 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) 2013 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+#
+# Remove old core updates from pakfire cache to save space...
+core=71
+for (( i=1; i<=$core; i++ ))
+do
+       rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+#
+# Backup snort.conf
+cp -f /etc/snort/snort.conf /etc/snort/snort.conf.backup
+
+#
+#Stop services
+/etc/init.d/snort stop
+/etc/init.d/squid stop
+#
+#Remove old usb-modeswitch file
+rm /usr/share/usb_modeswitch/0e8d:0002
+
+#
+#Extract files
+extract_files
+
+#
+#Create wireless config file...
+touch /var/ipfire/ethernet/wireless
+chown nobody:nobody /var/ipfire/ethernet/wireless
+
+#
+# Import active rules to new snort.conf
+grep "^include $RULE_PATH" /etc/snort/snort.conf.backup >> /etc/snort/snort.conf
+
+#
+#Start services
+/etc/init.d/squid start
+/etc/init.d/snort start
+
+#
+#Update Language cache
+perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+
+sync
+
+# This update need a reboot...
+#touch /var/run/need_reboot
+
+#
+#Finish
+/etc/init.d/fireinfo start
+sendprofile
+#Don't report the exitcode last command
+exit 0
+
diff --git a/config/rootfiles/oldcore/72/exclude b/config/rootfiles/oldcore/72/exclude
new file mode 100644 (file)
index 0000000..e8ae55d
--- /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
+etc/ssh/ssh_config
+etc/ssh/sshd_config
+etc/ssl/openssl.cnf
+var/state/dhcp/dhcpd.leases
+etc/snort/snort.conf
diff --git a/config/rootfiles/oldcore/72/filelists/daq b/config/rootfiles/oldcore/72/filelists/daq
new file mode 120000 (symlink)
index 0000000..d0e0956
--- /dev/null
@@ -0,0 +1 @@
+../../../common/daq
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/72/filelists/files b/config/rootfiles/oldcore/72/filelists/files
new file mode 100644 (file)
index 0000000..e8f90a1
--- /dev/null
@@ -0,0 +1,11 @@
+etc/system-release
+etc/issue
+etc/rc.d/init.d/firewall
+srv/web/ipfire/cgi-bin/ddns.cgi
+srv/web/ipfire/cgi-bin/ids.cgi
+srv/web/ipfire/cgi-bin/vpnmain.cgi
+srv/web/ipfire/cgi-bin/ovpnmain.cgi
+usr/local/bin/openvpnctrl
+usr/local/bin/setddns.pl
+var/ipfire/langs
+var/ipfire/ovpn/verify
diff --git a/config/rootfiles/oldcore/72/filelists/i586/strongswan-padlock b/config/rootfiles/oldcore/72/filelists/i586/strongswan-padlock
new file mode 120000 (symlink)
index 0000000..2412824
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/strongswan-padlock
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/72/filelists/snort b/config/rootfiles/oldcore/72/filelists/snort
new file mode 120000 (symlink)
index 0000000..9406ce0
--- /dev/null
@@ -0,0 +1 @@
+../../../common/snort
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/72/filelists/squid b/config/rootfiles/oldcore/72/filelists/squid
new file mode 120000 (symlink)
index 0000000..2dc8372
--- /dev/null
@@ -0,0 +1 @@
+../../../common/squid
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/72/meta b/config/rootfiles/oldcore/72/meta
new file mode 100644 (file)
index 0000000..d547fa8
--- /dev/null
@@ -0,0 +1 @@
+DEPS=""
diff --git a/config/rootfiles/oldcore/72/update.sh b/config/rootfiles/oldcore/72/update.sh
new file mode 100644 (file)
index 0000000..c3dc20a
--- /dev/null
@@ -0,0 +1,69 @@
+#!/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 3 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) 2013 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+#
+# Remove old core updates from pakfire cache to save space...
+core=72
+for (( i=1; i<=$core; i++ ))
+do
+       rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+#
+#Stop services
+/etc/init.d/ipsec stop
+/etc/init.d/snort stop
+/etc/init.d/squid stop
+
+#
+#Extract files
+extract_files
+
+
+#
+#Start services
+/etc/init.d/squid start
+/etc/init.d/snort start
+if [ `grep "ENABLED=on" /var/ipfire/vpn/settings` ]; then
+       /etc/init.d/ipsec start
+fi
+
+
+#
+#Update Language cache
+perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+
+sync
+
+# This update need a reboot...
+#touch /var/run/need_reboot
+
+#
+#Finish
+/etc/init.d/fireinfo start
+sendprofile
+#Don't report the exitcode last command
+exit 0
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/filelists/GeoIP b/config/rootfiles/oldcore/73/filelists/GeoIP
new file mode 100644 (file)
index 0000000..0258236
--- /dev/null
@@ -0,0 +1 @@
+usr/local/share/GeoIP/GeoIP.dat
diff --git a/config/rootfiles/oldcore/73/filelists/HTML-Template b/config/rootfiles/oldcore/73/filelists/HTML-Template
new file mode 120000 (symlink)
index 0000000..f17c1da
--- /dev/null
@@ -0,0 +1 @@
+../../../common/HTML-Template
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/73/filelists/armv5tel/ath-modul b/config/rootfiles/oldcore/73/filelists/armv5tel/ath-modul
new file mode 100644 (file)
index 0000000..63bcd75
--- /dev/null
@@ -0,0 +1,3 @@
+lib/modules/3.2.48-ipfire-omap/kernel/drivers/net/wireless/ath/ath.ko
+lib/modules/3.2.48-ipfire-kirkwood/kernel/drivers/net/wireless/ath/ath.ko
+lib/modules/3.2.48-ipfire-rpi/kernel/drivers/net/wireless/ath/ath.ko
diff --git a/config/rootfiles/oldcore/73/filelists/files b/config/rootfiles/oldcore/73/filelists/files
new file mode 100644 (file)
index 0000000..8ddb964
--- /dev/null
@@ -0,0 +1,15 @@
+etc/system-release
+etc/issue
+etc/rc.d/init.d/dnsmasq
+etc/rc.d/init.d/squid
+srv/web/ipfire/cgi-bin/logs.cgi/proxylog.dat
+srv/web/ipfire/cgi-bin/netinternal.cgi
+srv/web/ipfire/cgi-bin/proxy.cgi
+srv/web/ipfire/cgi-bin/routing.cgi
+srv/web/ipfire/cgi-bin/wirelessclient.cgi
+srv/web/ipfire/cgi-bin/vpnmain.cgi
+srv/web/ipfire/html/redirect.cgi
+srv/web/ipfire/html/redirect-templates/
+var/ipfire/header.pl
+var/ipfire/langs
+var/ipfire/proxy/advanced/useragents
diff --git a/config/rootfiles/oldcore/73/filelists/hwdata b/config/rootfiles/oldcore/73/filelists/hwdata
new file mode 100644 (file)
index 0000000..5a9672f
--- /dev/null
@@ -0,0 +1,2 @@
+usr/share/hwdata/pci.ids
+usr/share/hwdata/usb.ids
diff --git a/config/rootfiles/oldcore/73/filelists/i586/ath-modul b/config/rootfiles/oldcore/73/filelists/i586/ath-modul
new file mode 100644 (file)
index 0000000..6656dae
--- /dev/null
@@ -0,0 +1,3 @@
+lib/modules/2.6.32.61-ipfire-xen/kernel/drivers/net/wireless/ath/ath.ko
+lib/modules/3.2.48-ipfire/kernel/drivers/net/wireless/ath/ath.ko
+lib/modules/3.2.48-ipfire-pae/kernel/drivers/net/wireless/ath/ath.ko
diff --git a/config/rootfiles/oldcore/73/filelists/openssh b/config/rootfiles/oldcore/73/filelists/openssh
new file mode 120000 (symlink)
index 0000000..d8c77fd
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openssh
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/73/filelists/php b/config/rootfiles/oldcore/73/filelists/php
new file mode 120000 (symlink)
index 0000000..1ae48d7
--- /dev/null
@@ -0,0 +1 @@
+../../../common/php
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/73/filelists/squid b/config/rootfiles/oldcore/73/filelists/squid
new file mode 120000 (symlink)
index 0000000..2dc8372
--- /dev/null
@@ -0,0 +1 @@
+../../../common/squid
\ No newline at end of file
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=""
diff --git a/config/rootfiles/oldcore/73/update.sh b/config/rootfiles/oldcore/73/update.sh
new file mode 100644 (file)
index 0000000..a9fed1b
--- /dev/null
@@ -0,0 +1,81 @@
+#!/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 3 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) 2013 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+#
+# Remove old core updates from pakfire cache to save space...
+core=73
+for (( i=1; i<=$core; i++ ))
+do
+       rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+
+#
+#Stop services
+/etc/init.d/squid stop
+
+
+#
+#Extract files
+extract_files
+
+if [ -e "/var/ipfire/proxy/enable" ] || [ -e "/var/ipfire/proxy/enable_blue" ]; then
+       (
+               eval $(/usr/local/bin/readhash /var/ipfire/proxy/advanced/settings)
+
+               TRANSPARENT_PORT="$(( ${PROXY_PORT} + 1 ))"
+               echo "TRANSPARENT_PORT=${TRANSPARENT_PORT}" >> /var/ipfire/proxy/advanced/settings
+       )
+fi
+
+# Regenerate squid configuration files.
+/srv/web/ipfire/cgi-bin/proxy.cgi
+
+#
+#Start services
+/etc/init.d/squid start
+
+#
+#Update Language cache
+perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+
+# Remove invalid fetchmail symlinks when postfix is installed.
+if [ ! -e "/etc/rc.d/init.d/fetchmail" ]; then
+       rm -f /etc/rc.d/rc*.d/*fetchmail
+fi
+
+sync
+
+# This update need a reboot...
+touch /var/run/need_reboot
+
+#
+#Finish
+/etc/init.d/fireinfo start
+sendprofile
+#Don't report the exitcode last command
+exit 0
+
diff --git a/config/rootfiles/oldcore/74/exclude b/config/rootfiles/oldcore/74/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/74/filelists/files b/config/rootfiles/oldcore/74/filelists/files
new file mode 100644 (file)
index 0000000..52d0178
--- /dev/null
@@ -0,0 +1,7 @@
+etc/system-release
+etc/issue
+srv/web/ipfire/cgi-bin/dnsforward.cgi
+srv/web/ipfire/cgi-bin/proxy.cgi
+usr/local/bin/httpscert
+var/ipfire/header.pl
+var/ipfire/langs
diff --git a/config/rootfiles/oldcore/74/filelists/i586/strongswan-padlock b/config/rootfiles/oldcore/74/filelists/i586/strongswan-padlock
new file mode 120000 (symlink)
index 0000000..2412824
--- /dev/null
@@ -0,0 +1 @@
+../../../../common/i586/strongswan-padlock
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/74/filelists/openvpn b/config/rootfiles/oldcore/74/filelists/openvpn
new file mode 120000 (symlink)
index 0000000..493f3f7
--- /dev/null
@@ -0,0 +1 @@
+../../../common/openvpn
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/74/filelists/squid b/config/rootfiles/oldcore/74/filelists/squid
new file mode 120000 (symlink)
index 0000000..2dc8372
--- /dev/null
@@ -0,0 +1 @@
+../../../common/squid
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/74/filelists/strongswan b/config/rootfiles/oldcore/74/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/74/meta b/config/rootfiles/oldcore/74/meta
new file mode 100644 (file)
index 0000000..d547fa8
--- /dev/null
@@ -0,0 +1 @@
+DEPS=""
diff --git a/config/rootfiles/oldcore/74/update.sh b/config/rootfiles/oldcore/74/update.sh
new file mode 100644 (file)
index 0000000..ca26b51
--- /dev/null
@@ -0,0 +1,84 @@
+#!/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 3 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) 2013 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.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
+/etc/init.d/ipsec stop
+/etc/init.d/squid stop
+
+
+#
+#Extract files
+extract_files
+
+if [ -e "/var/ipfire/proxy/enable" ] || [ -e "/var/ipfire/proxy/enable_blue" ]; then
+       (
+               eval $(/usr/local/bin/readhash /var/ipfire/proxy/advanced/settings)
+
+               if [ "${TRANSPARENT_PORT}" = "81" ]; then
+                       TRANSPARENT_PORT="$(( ${TRANSPARENT_PORT} + 1 ))"
+                       sed -e "s/^TRANSPARENT_PORT=.*/TRANSPARENT_PORT=${TRANSPARENT_PORT}/" \
+                               -i /var/ipfire/proxy/advanced/settings
+               fi
+       )
+fi
+
+# Regenerate squid configuration files.
+/srv/web/ipfire/cgi-bin/proxy.cgi
+chown nobody:nobody /var/ipfire/proxy/squid.conf
+
+#
+#Start services
+/etc/init.d/squid start
+
+if grep -q "ENABLED=on" /var/ipfire/vpn/settings; then
+       /etc/init.d/ipsec start
+fi
+
+#
+#Update Language cache
+perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+
+sync
+
+# This update need a reboot...
+#touch /var/run/need_reboot
+
+#
+#Finish
+/etc/init.d/fireinfo start
+sendprofile
+#Don't report the exitcode last command
+exit 0
diff --git a/config/rootfiles/oldcore/75/exclude b/config/rootfiles/oldcore/75/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/75/filelists/files b/config/rootfiles/oldcore/75/filelists/files
new file mode 100644 (file)
index 0000000..9d4fbe4
--- /dev/null
@@ -0,0 +1,9 @@
+etc/system-release
+etc/issue
+opt/pakfire/lib/functions.pl
+srv/web/ipfire/cgi-bin/ovpnmain.cgi
+usr/lib/openvpn/verify
+usr/local/bin/convert-ovpn
+var/ipfire/backup/bin/backup.pl
+var/ipfire/header.pl
+var/ipfire/langs
diff --git a/config/rootfiles/oldcore/75/meta b/config/rootfiles/oldcore/75/meta
new file mode 100644 (file)
index 0000000..d547fa8
--- /dev/null
@@ -0,0 +1 @@
+DEPS=""
diff --git a/config/rootfiles/oldcore/75/update.sh b/config/rootfiles/oldcore/75/update.sh
new file mode 100644 (file)
index 0000000..94bec74
--- /dev/null
@@ -0,0 +1,63 @@
+#!/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 3 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) 2013 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+# Remove old core updates from pakfire cache to save space...
+core=75
+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
+
+# Replace path to verify script.
+if [ -r "/var/ipfire/ovpn/server.conf" ]; then
+       sed -e "s@^tls-verify.*@tls-verify /usr/lib/openvpn/verify@g" \
+               -i /var/ipfire/ovpn/server.conf
+fi
+
+# Convert CCD files.
+/usr/local/bin/convert-ovpn
+
+# Update Language cache
+perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
+
+sync
+
+# This update need a reboot...
+#touch /var/run/need_reboot
+
+# Finish
+/etc/init.d/fireinfo start
+sendprofile
+
+# Don't report the exitcode last command
+exit 0
index 33e935bc1eaf1fce278ba1f7bf2b4201ebed3024..1c0d744ab642a357a9aa55237f583c7c1c3b56af 100644 (file)
@@ -8,6 +8,8 @@ lib/firmware/asihpi/dsp6400.bin
 lib/firmware/asihpi/dsp6600.bin
 lib/firmware/asihpi/dsp8700.bin
 lib/firmware/asihpi/dsp8900.bin
+lib/firmware/ctefx.bin
+lib/firmware/ctspeq.bin
 lib/firmware/digiface_firmware.bin
 lib/firmware/digiface_firmware_rev11.bin
 #lib/firmware/ea
@@ -40,16 +42,6 @@ lib/firmware/ea/mona_301_dsp.fw
 lib/firmware/ea/mona_361_1_asic_48.fw
 lib/firmware/ea/mona_361_1_asic_96.fw
 lib/firmware/ea/mona_361_dsp.fw
-#lib/firmware/emagic
-lib/firmware/emagic/emi26-bitstream.bin
-lib/firmware/emagic/emi26-firmware.bin
-lib/firmware/emagic/emi26-loader.bin
-lib/firmware/emagic/emi62-bitstream.bin
-lib/firmware/emagic/emi62-firmware-midi.bin
-lib/firmware/emagic/emi62-firmware-spdif.bin
-lib/firmware/emagic/emi62-firmware.bin
-lib/firmware/emagic/emi62-loader.bin
-lib/firmware/emagic/license.txt
 #lib/firmware/emu
 lib/firmware/emu/audio_dock.fw
 lib/firmware/emu/emu0404.fw
@@ -106,7 +98,6 @@ lib/firmware/vx/x1_1_vp4.xlx
 lib/firmware/vx/x1_1_vx2.xlx
 lib/firmware/vx/x1_1_vxp.xlx
 lib/firmware/vx/x1_2_v22.xlx
-lib/udev/rules.d/90-alsa-restore.rules
 usr/bin/aconnect
 usr/bin/alsaloop
 usr/bin/alsamixer
@@ -346,6 +337,36 @@ usr/share/alsa/alsa.conf.d/README
 #usr/share/alsa/sndo-mixer.alisp
 #usr/share/alsa/speaker-test
 #usr/share/alsa/speaker-test/sample_map.csv
+#usr/share/alsa/ucm
+usr/share/alsa/ucm/DAISY-I2S
+usr/share/alsa/ucm/DAISY-I2S/DAISY-I2S.conf
+usr/share/alsa/ucm/DAISY-I2S/HiFi.conf
+#usr/share/alsa/ucm/PandaBoard
+usr/share/alsa/ucm/PandaBoard/FMAnalog
+usr/share/alsa/ucm/PandaBoard/PandaBoard.conf
+usr/share/alsa/ucm/PandaBoard/hifi
+usr/share/alsa/ucm/PandaBoard/hifiLP
+usr/share/alsa/ucm/PandaBoard/record
+usr/share/alsa/ucm/PandaBoard/voice
+usr/share/alsa/ucm/PandaBoard/voiceCall
+#usr/share/alsa/ucm/PandaBoardES
+usr/share/alsa/ucm/PandaBoardES/FMAnalog
+usr/share/alsa/ucm/PandaBoardES/PandaBoardES.conf
+usr/share/alsa/ucm/PandaBoardES/hifi
+usr/share/alsa/ucm/PandaBoardES/hifiLP
+usr/share/alsa/ucm/PandaBoardES/record
+usr/share/alsa/ucm/PandaBoardES/voice
+usr/share/alsa/ucm/PandaBoardES/voiceCall
+#usr/share/alsa/ucm/SDP4430
+usr/share/alsa/ucm/SDP4430/FMAnalog
+usr/share/alsa/ucm/SDP4430/SDP4430.conf
+usr/share/alsa/ucm/SDP4430/hifi
+usr/share/alsa/ucm/SDP4430/hifiLP
+usr/share/alsa/ucm/SDP4430/record
+usr/share/alsa/ucm/SDP4430/voice
+usr/share/alsa/ucm/SDP4430/voiceCall
+#usr/share/alsa/ucm/tegraalc5632
+usr/share/alsa/ucm/tegraalc5632/tegraalc5632.conf
 #usr/share/locale/de/LC_MESSAGES/alsa-utils.mo
 #usr/share/locale/fr/LC_MESSAGES/alsa-utils.mo
 #usr/share/locale/ja/LC_MESSAGES/alsa-utils.mo
diff --git a/config/rootfiles/packages/arm b/config/rootfiles/packages/arm
new file mode 100644 (file)
index 0000000..eb9d128
--- /dev/null
@@ -0,0 +1,166 @@
+usr/bin/arm
+#usr/share/arm
+#usr/share/arm-1.4.5.0-py2.7.egg-info
+usr/share/arm/TorCtl
+usr/share/arm/TorCtl/GeoIPSupport.py
+usr/share/arm/TorCtl/GeoIPSupport.pyc
+usr/share/arm/TorCtl/PathSupport.py
+usr/share/arm/TorCtl/PathSupport.pyc
+usr/share/arm/TorCtl/SQLSupport.py
+usr/share/arm/TorCtl/SQLSupport.pyc
+usr/share/arm/TorCtl/ScanSupport.py
+usr/share/arm/TorCtl/ScanSupport.pyc
+usr/share/arm/TorCtl/StatsSupport.py
+usr/share/arm/TorCtl/StatsSupport.pyc
+usr/share/arm/TorCtl/TorCtl.py
+usr/share/arm/TorCtl/TorCtl.pyc
+usr/share/arm/TorCtl/TorUtil.py
+usr/share/arm/TorCtl/TorUtil.pyc
+usr/share/arm/TorCtl/__init__.py
+usr/share/arm/TorCtl/__init__.pyc
+usr/share/arm/TorCtl/example.py
+usr/share/arm/TorCtl/example.pyc
+usr/share/arm/__init__.py
+usr/share/arm/__init__.pyc
+usr/share/arm/cli
+usr/share/arm/cli/__init__.py
+usr/share/arm/cli/__init__.pyc
+usr/share/arm/cli/configPanel.py
+usr/share/arm/cli/configPanel.pyc
+usr/share/arm/cli/connections
+usr/share/arm/cli/connections/__init__.py
+usr/share/arm/cli/connections/__init__.pyc
+usr/share/arm/cli/connections/circEntry.py
+usr/share/arm/cli/connections/circEntry.pyc
+usr/share/arm/cli/connections/connEntry.py
+usr/share/arm/cli/connections/connEntry.pyc
+usr/share/arm/cli/connections/connPanel.py
+usr/share/arm/cli/connections/connPanel.pyc
+usr/share/arm/cli/connections/countPopup.py
+usr/share/arm/cli/connections/countPopup.pyc
+usr/share/arm/cli/connections/descriptorPopup.py
+usr/share/arm/cli/connections/descriptorPopup.pyc
+usr/share/arm/cli/connections/entries.py
+usr/share/arm/cli/connections/entries.pyc
+usr/share/arm/cli/controller.py
+usr/share/arm/cli/controller.pyc
+usr/share/arm/cli/graphing
+usr/share/arm/cli/graphing/__init__.py
+usr/share/arm/cli/graphing/__init__.pyc
+usr/share/arm/cli/graphing/bandwidthStats.py
+usr/share/arm/cli/graphing/bandwidthStats.pyc
+usr/share/arm/cli/graphing/connStats.py
+usr/share/arm/cli/graphing/connStats.pyc
+usr/share/arm/cli/graphing/graphPanel.py
+usr/share/arm/cli/graphing/graphPanel.pyc
+usr/share/arm/cli/graphing/resourceStats.py
+usr/share/arm/cli/graphing/resourceStats.pyc
+usr/share/arm/cli/headerPanel.py
+usr/share/arm/cli/headerPanel.pyc
+usr/share/arm/cli/interpretorPanel.py
+usr/share/arm/cli/interpretorPanel.pyc
+usr/share/arm/cli/logPanel.py
+usr/share/arm/cli/logPanel.pyc
+usr/share/arm/cli/menu
+usr/share/arm/cli/menu/__init__.py
+usr/share/arm/cli/menu/__init__.pyc
+usr/share/arm/cli/menu/actions.py
+usr/share/arm/cli/menu/actions.pyc
+usr/share/arm/cli/menu/item.py
+usr/share/arm/cli/menu/item.pyc
+usr/share/arm/cli/menu/menu.py
+usr/share/arm/cli/menu/menu.pyc
+usr/share/arm/cli/popups.py
+usr/share/arm/cli/popups.pyc
+usr/share/arm/cli/torrcPanel.py
+usr/share/arm/cli/torrcPanel.pyc
+usr/share/arm/cli/wizard.py
+usr/share/arm/cli/wizard.pyc
+usr/share/arm/gui
+usr/share/arm/gui/__init__.py
+usr/share/arm/gui/__init__.pyc
+usr/share/arm/gui/arm.xml
+usr/share/arm/gui/configPanel.py
+usr/share/arm/gui/configPanel.pyc
+usr/share/arm/gui/connections
+usr/share/arm/gui/connections/__init__.py
+usr/share/arm/gui/connections/__init__.pyc
+usr/share/arm/gui/connections/circEntry.py
+usr/share/arm/gui/connections/circEntry.pyc
+usr/share/arm/gui/connections/connEntry.py
+usr/share/arm/gui/connections/connEntry.pyc
+usr/share/arm/gui/connections/connPanel.py
+usr/share/arm/gui/connections/connPanel.pyc
+usr/share/arm/gui/controller.py
+usr/share/arm/gui/controller.pyc
+usr/share/arm/gui/generalPanel.py
+usr/share/arm/gui/generalPanel.pyc
+usr/share/arm/gui/graphing
+usr/share/arm/gui/graphing/__init__.py
+usr/share/arm/gui/graphing/__init__.pyc
+usr/share/arm/gui/graphing/bandwidthStats.py
+usr/share/arm/gui/graphing/bandwidthStats.pyc
+usr/share/arm/gui/graphing/graphPanel.py
+usr/share/arm/gui/graphing/graphPanel.pyc
+usr/share/arm/gui/logPanel.py
+usr/share/arm/gui/logPanel.pyc
+usr/share/arm/prereq.py
+usr/share/arm/prereq.pyc
+#usr/share/arm/resources
+#usr/share/arm/resources/arm.1
+#usr/share/arm/resources/exitNotice
+#usr/share/arm/resources/exitNotice/how_tor_works_thumb.png
+#usr/share/arm/resources/exitNotice/index.html
+#usr/share/arm/resources/startTor
+#usr/share/arm/resources/tor-arm.desktop
+#usr/share/arm/resources/tor-arm.svg
+#usr/share/arm/resources/torConfigDesc.txt
+#usr/share/arm/resources/torrcOverride
+#usr/share/arm/resources/torrcOverride/override.c
+#usr/share/arm/resources/torrcOverride/override.h
+#usr/share/arm/resources/torrcOverride/override.py
+#usr/share/arm/resources/torrcTemplate.txt
+usr/share/arm/settings.cfg
+usr/share/arm/starter.py
+usr/share/arm/starter.pyc
+usr/share/arm/test.py
+usr/share/arm/test.pyc
+#usr/share/arm/uninstall
+usr/share/arm/util
+usr/share/arm/util/__init__.py
+usr/share/arm/util/__init__.pyc
+usr/share/arm/util/conf.py
+usr/share/arm/util/conf.pyc
+usr/share/arm/util/connections.py
+usr/share/arm/util/connections.pyc
+usr/share/arm/util/enum.py
+usr/share/arm/util/enum.pyc
+usr/share/arm/util/gtkTools.py
+usr/share/arm/util/gtkTools.pyc
+usr/share/arm/util/hostnames.py
+usr/share/arm/util/hostnames.pyc
+usr/share/arm/util/log.py
+usr/share/arm/util/log.pyc
+usr/share/arm/util/panel.py
+usr/share/arm/util/panel.pyc
+usr/share/arm/util/procName.py
+usr/share/arm/util/procName.pyc
+usr/share/arm/util/procTools.py
+usr/share/arm/util/procTools.pyc
+usr/share/arm/util/sysTools.py
+usr/share/arm/util/sysTools.pyc
+usr/share/arm/util/textInput.py
+usr/share/arm/util/textInput.pyc
+usr/share/arm/util/torConfig.py
+usr/share/arm/util/torConfig.pyc
+usr/share/arm/util/torInterpretor.py
+usr/share/arm/util/torInterpretor.pyc
+usr/share/arm/util/torTools.py
+usr/share/arm/util/torTools.pyc
+usr/share/arm/util/uiTools.py
+usr/share/arm/util/uiTools.pyc
+usr/share/arm/version.py
+usr/share/arm/version.pyc
+#usr/share/doc/arm
+#usr/share/doc/arm/armrc.sample
+#usr/share/man/man1/arm.1.gz
diff --git a/config/rootfiles/packages/armv5tel/vdr_dvbapi b/config/rootfiles/packages/armv5tel/vdr_dvbapi
new file mode 100644 (file)
index 0000000..0748137
--- /dev/null
@@ -0,0 +1,3 @@
+etc/sysconfig/vdr-plugins.d/dvbapi.conf
+etc/vdr/plugins/dvbapi
+usr/lib/vdr/libvdr-dvbapi.so.2.0.0
index 2807f77c38a41e7e9a517048bb3ee54452a98e23..de0e2c7734cff2422acc7829bca0ced7ea7a4104 100644 (file)
@@ -1,5 +1,7 @@
 etc/fcron.cyclic/cacti.cron
 etc/httpd/conf/vhosts.d/cacti.conf
+#etc/logrotate.d
+etc/logrotate.d/cacti
 #usr/share/cacti
 #usr/share/cacti/LICENSE
 #usr/share/cacti/README
@@ -27,6 +29,7 @@ usr/share/cacti/cli/poller_graphs_reapply_names.php
 usr/share/cacti/cli/poller_output_empty.php
 usr/share/cacti/cli/poller_reindex_hosts.php
 usr/share/cacti/cli/rebuild_poller_cache.php
+usr/share/cacti/cli/reorder_data_query.php
 usr/share/cacti/cli/repair_database.php
 usr/share/cacti/cli/repair_templates.php
 usr/share/cacti/cli/structure_rra_paths.php
@@ -191,12 +194,17 @@ usr/share/cacti/images/cacti_logo.gif
 usr/share/cacti/images/calendar.gif
 usr/share/cacti/images/delete_icon.gif
 usr/share/cacti/images/delete_icon_large.gif
+usr/share/cacti/images/disable_icon.png
+usr/share/cacti/images/enable_icon.png
+usr/share/cacti/images/enable_icon_disabled.png
 usr/share/cacti/images/favicon.ico
 usr/share/cacti/images/graph_page_top.gif
 usr/share/cacti/images/graph_properties.gif
 usr/share/cacti/images/graph_query.png
 usr/share/cacti/images/graph_zoom.gif
 usr/share/cacti/images/hide.gif
+usr/share/cacti/images/install_icon.png
+usr/share/cacti/images/install_icon_disabled.png
 usr/share/cacti/images/left_border.gif
 usr/share/cacti/images/menu_line.gif
 usr/share/cacti/images/menuarrow.gif
@@ -222,6 +230,8 @@ usr/share/cacti/images/tab_mode_tree_down.gif
 usr/share/cacti/images/tab_settings.gif
 usr/share/cacti/images/tab_settings_down.gif
 usr/share/cacti/images/transparent_line.gif
+usr/share/cacti/images/uninstall_icon.gif
+usr/share/cacti/images/view_none.gif
 #usr/share/cacti/include
 usr/share/cacti/include/auth.php
 usr/share/cacti/include/bottom_footer.php
@@ -231,10 +241,28 @@ usr/share/cacti/include/global_arrays.php
 usr/share/cacti/include/global_constants.php
 usr/share/cacti/include/global_form.php
 usr/share/cacti/include/global_settings.php
-#usr/share/cacti/include/jscalendar
+usr/share/cacti/include/js
+usr/share/cacti/include/js/jquery
+usr/share/cacti/include/js/jquery/colorpicker.js
+usr/share/cacti/include/js/jquery/jquery-ui.js
+usr/share/cacti/include/js/jquery/jquery.cookie.js
+usr/share/cacti/include/js/jquery/jquery.dd.js
+usr/share/cacti/include/js/jquery/jquery.dropdown.js
+usr/share/cacti/include/js/jquery/jquery.js
+usr/share/cacti/include/js/jquery/jquery.jstree.js
+usr/share/cacti/include/js/jquery/jquery.tablednd.js
+usr/share/cacti/include/js/jquery/jquery.timepicker.js
+usr/share/cacti/include/js/jquery/jquery.zoom.js
+usr/share/cacti/include/js/jquery/themes
+usr/share/cacti/include/js/jquery/themes/default
+usr/share/cacti/include/js/jquery/themes/default/d.gif
+usr/share/cacti/include/js/jquery/themes/default/d.png
+usr/share/cacti/include/js/jquery/themes/default/style.css
+usr/share/cacti/include/js/jquery/themes/default/throbber.gif
+usr/share/cacti/include/jscalendar
 usr/share/cacti/include/jscalendar/calendar-setup.js
 usr/share/cacti/include/jscalendar/calendar.js
-#usr/share/cacti/include/jscalendar/lang
+usr/share/cacti/include/jscalendar/lang
 usr/share/cacti/include/jscalendar/lang/calendar-af.js
 usr/share/cacti/include/jscalendar/lang/calendar-al.js
 usr/share/cacti/include/jscalendar/lang/calendar-bg.js
@@ -280,20 +308,9 @@ usr/share/cacti/include/jscalendar/lang/calendar-zh.js
 usr/share/cacti/include/jscalendar/lang/cn_utf8.js
 usr/share/cacti/include/layout.js
 usr/share/cacti/include/main.css
+usr/share/cacti/include/plugins.php
 usr/share/cacti/include/top_graph_header.php
 usr/share/cacti/include/top_header.php
-#usr/share/cacti/include/treeview
-usr/share/cacti/include/treeview/ftiens4.js
-usr/share/cacti/include/treeview/ftiens4_export.js
-usr/share/cacti/include/treeview/ftv2blank.gif
-usr/share/cacti/include/treeview/ftv2lastnode.gif
-usr/share/cacti/include/treeview/ftv2mlastnode.gif
-usr/share/cacti/include/treeview/ftv2mnode.gif
-usr/share/cacti/include/treeview/ftv2node.gif
-usr/share/cacti/include/treeview/ftv2plastnode.gif
-usr/share/cacti/include/treeview/ftv2pnode.gif
-usr/share/cacti/include/treeview/ftv2vertline.gif
-usr/share/cacti/include/treeview/ua.js
 usr/share/cacti/include/zoom.js
 usr/share/cacti/index.php
 #usr/share/cacti/install
@@ -318,6 +335,10 @@ usr/share/cacti/install/0_8_7d_to_0_8_7e.php
 usr/share/cacti/install/0_8_7e_to_0_8_7f.php
 usr/share/cacti/install/0_8_7f_to_0_8_7g.php
 usr/share/cacti/install/0_8_7g_to_0_8_7h.php
+usr/share/cacti/install/0_8_7h_to_0_8_7i.php
+usr/share/cacti/install/0_8_7i_to_0_8_8.php
+usr/share/cacti/install/0_8_8_to_0_8_8a.php
+usr/share/cacti/install/0_8_8_to_0_8_8b.php
 usr/share/cacti/install/0_8_to_0_8_1.php
 usr/share/cacti/install/index.php
 usr/share/cacti/install/install_finish.gif
@@ -338,7 +359,7 @@ usr/share/cacti/lib/adodb/adodb-php4.inc.php
 usr/share/cacti/lib/adodb/adodb-time.inc.php
 usr/share/cacti/lib/adodb/adodb-xmlschema.inc.php
 usr/share/cacti/lib/adodb/adodb.inc.php
-#usr/share/cacti/lib/adodb/datadict
+usr/share/cacti/lib/adodb/datadict
 usr/share/cacti/lib/adodb/datadict/datadict-access.inc.php
 usr/share/cacti/lib/adodb/datadict/datadict-db2.inc.php
 usr/share/cacti/lib/adodb/datadict/datadict-firebird.inc.php
@@ -351,7 +372,7 @@ usr/share/cacti/lib/adodb/datadict/datadict-oci8.inc.php
 usr/share/cacti/lib/adodb/datadict/datadict-postgres.inc.php
 usr/share/cacti/lib/adodb/datadict/datadict-sapdb.inc.php
 usr/share/cacti/lib/adodb/datadict/datadict-sybase.inc.php
-#usr/share/cacti/lib/adodb/drivers
+usr/share/cacti/lib/adodb/drivers
 usr/share/cacti/lib/adodb/drivers/adodb-access.inc.php
 usr/share/cacti/lib/adodb/drivers/adodb-ado.inc.php
 usr/share/cacti/lib/adodb/drivers/adodb-ado5.inc.php
@@ -392,7 +413,7 @@ usr/share/cacti/lib/adodb/drivers/adodb-sqlite.inc.php
 usr/share/cacti/lib/adodb/drivers/adodb-sqlitepo.inc.php
 usr/share/cacti/lib/adodb/drivers/adodb-sybase.inc.php
 usr/share/cacti/lib/adodb/drivers/adodb-vfp.inc.php
-#usr/share/cacti/lib/adodb/lang
+usr/share/cacti/lib/adodb/lang
 usr/share/cacti/lib/adodb/lang/adodb-ar.inc.php
 usr/share/cacti/lib/adodb/lang/adodb-bg.inc.php
 usr/share/cacti/lib/adodb/lang/adodb-bgutf8.inc.php
@@ -437,6 +458,7 @@ usr/share/cacti/lib/html_validate.php
 usr/share/cacti/lib/import.php
 usr/share/cacti/lib/ldap.php
 usr/share/cacti/lib/ping.php
+usr/share/cacti/lib/plugins.php
 usr/share/cacti/lib/poller.php
 usr/share/cacti/lib/rrd.php
 usr/share/cacti/lib/snmp.php
@@ -450,6 +472,9 @@ usr/share/cacti/lib/variables.php
 usr/share/cacti/lib/xml.php
 usr/share/cacti/log
 usr/share/cacti/logout.php
+usr/share/cacti/plugins
+usr/share/cacti/plugins.php
+usr/share/cacti/plugins/index.php
 usr/share/cacti/poller.php
 usr/share/cacti/poller_commands.php
 usr/share/cacti/poller_export.php
index 073b483785453cf2baca0f0e1ab92d8c524de031..1d68f74d61d8ec90ab646c47e4321c5ce3340426 100644 (file)
@@ -1,2 +1,3 @@
 usr/bin/check_mk_agent
+etc/xinetd.d/check_mk_agent
 usr/bin/waitmax
index 1f09b8d55b32a5f90e85862fefbf34161dbf1e03..c2aee7cf5964009e7f416890de833b6eeda37ab0 100644 (file)
@@ -4,21 +4,22 @@ usr/bin/clamconf
 usr/bin/clamdscan
 usr/bin/clamdtop
 usr/bin/clamscan
+usr/bin/clamsubmit
 usr/bin/freshclam
 usr/bin/sigtool
 #usr/include/clamav.h
 #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.23
 #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.23
 #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.23
 #usr/lib/pkgconfig/libclamav.pc
 usr/sbin/clamd
 usr/share/clamav
@@ -27,6 +28,7 @@ usr/share/clamav
 #usr/share/man/man1/clamdscan.1
 #usr/share/man/man1/clamdtop.1
 #usr/share/man/man1/clamscan.1
+#usr/share/man/man1/clamsubmit.1
 #usr/share/man/man1/freshclam.1
 #usr/share/man/man1/sigtool.1
 #usr/share/man/man5/clamav-milter.conf.5
@@ -36,7 +38,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
index 742cd8fbba797e3e7da18edbaf5573327431e9ca..3acbcac37562cbad592ac0eb3a85fc901dd9feb9 100644 (file)
@@ -1,4 +1,6 @@
+#etc/dbus-1/system.d/cups.conf
 etc/pam.d/cups
+etc/rc.d/init.d/cups
 #etc/rc0.d
 #etc/rc0.d/K36cups
 #etc/rc2.d
@@ -14,6 +16,7 @@ usr/bin/cancel
 #usr/bin/cups-config
 usr/bin/cupstestdsc
 usr/bin/cupstestppd
+usr/bin/ipptool
 usr/bin/lp
 usr/bin/lpoptions
 usr/bin/lppasswd
@@ -33,80 +36,67 @@ usr/bin/ppdpo
 #usr/include/cups/cgi.h
 #usr/include/cups/cups.h
 #usr/include/cups/dir.h
-#usr/include/cups/driver.h
 #usr/include/cups/file.h
 #usr/include/cups/help-index.h
 #usr/include/cups/http.h
-#usr/include/cups/image.h
 #usr/include/cups/ipp.h
 #usr/include/cups/language.h
 #usr/include/cups/mime.h
 #usr/include/cups/ppd.h
 #usr/include/cups/ppdc.h
+#usr/include/cups/pwg.h
 #usr/include/cups/raster.h
 #usr/include/cups/sidechannel.h
 #usr/include/cups/transcode.h
 #usr/include/cups/versioning.h
-#usr/lib/cups
-#usr/lib/cups/backend
+usr/lib/cups
+usr/lib/cups/backend
 usr/lib/cups/backend/http
+usr/lib/cups/backend/https
 usr/lib/cups/backend/ipp
+usr/lib/cups/backend/ipps
 usr/lib/cups/backend/lpd
-usr/lib/cups/backend/parallel
-usr/lib/cups/backend/scsi
-usr/lib/cups/backend/serial
 usr/lib/cups/backend/smb
 usr/lib/cups/backend/snmp
 usr/lib/cups/backend/socket
 usr/lib/cups/backend/usb
-#usr/lib/cups/cgi-bin
+usr/lib/cups/cgi-bin
 usr/lib/cups/cgi-bin/admin.cgi
 usr/lib/cups/cgi-bin/classes.cgi
 usr/lib/cups/cgi-bin/help.cgi
 usr/lib/cups/cgi-bin/jobs.cgi
 usr/lib/cups/cgi-bin/printers.cgi
-#usr/lib/cups/daemon
+usr/lib/cups/daemon
 usr/lib/cups/daemon/cups-deviced
 usr/lib/cups/daemon/cups-driverd
+usr/lib/cups/daemon/cups-exec
 usr/lib/cups/daemon/cups-lpd
-usr/lib/cups/daemon/cups-polld
 usr/lib/cups/driver
-#usr/lib/cups/filter
-usr/lib/cups/filter/bannertops
-usr/lib/cups/filter/commandtoescpx
-usr/lib/cups/filter/commandtopclx
+usr/lib/cups/filter
 usr/lib/cups/filter/commandtops
 usr/lib/cups/filter/gziptoany
-usr/lib/cups/filter/hpgltops
-usr/lib/cups/filter/imagetops
-usr/lib/cups/filter/imagetoraster
 usr/lib/cups/filter/pstops
 usr/lib/cups/filter/rastertodymo
 usr/lib/cups/filter/rastertoepson
-usr/lib/cups/filter/rastertoescpx
 usr/lib/cups/filter/rastertohp
 usr/lib/cups/filter/rastertolabel
-usr/lib/cups/filter/rastertopclx
-usr/lib/cups/filter/texttops
-#usr/lib/cups/monitor
+usr/lib/cups/filter/rastertopwg
+usr/lib/cups/monitor
 usr/lib/cups/monitor/bcp
 usr/lib/cups/monitor/tbcp
-#usr/lib/cups/notifier
+usr/lib/cups/notifier
 usr/lib/cups/notifier/mailto
 usr/lib/cups/notifier/rss
-usr/lib/libcups.so
+#usr/lib/libcups.so
 usr/lib/libcups.so.2
-usr/lib/libcupscgi.so
+#usr/lib/libcupscgi.so
 usr/lib/libcupscgi.so.1
-usr/lib/libcupsdriver.so
-usr/lib/libcupsdriver.so.1
-usr/lib/libcupsimage.so
+#usr/lib/libcupsimage.so
 usr/lib/libcupsimage.so.2
-usr/lib/libcupsmime.so
+#usr/lib/libcupsmime.so
 usr/lib/libcupsmime.so.1
-usr/lib/libcupsppdc.so
+#usr/lib/libcupsppdc.so
 usr/lib/libcupsppdc.so.1
-#usr/lib/php/extensions/no-debug-non-zts-20090626/phpcups.so
 usr/sbin/accept
 usr/sbin/cupsaccept
 usr/sbin/cupsaddsmb
@@ -121,62 +111,19 @@ usr/sbin/lpc
 usr/sbin/lpinfo
 usr/sbin/lpmove
 usr/sbin/reject
-#usr/share/cups
-#usr/share/cups/banners
+usr/share/cups
+usr/share/cups/banners
 usr/share/cups/banners/classified
 usr/share/cups/banners/confidential
 usr/share/cups/banners/secret
 usr/share/cups/banners/standard
 usr/share/cups/banners/topsecret
 usr/share/cups/banners/unclassified
-#usr/share/cups/charmaps
-usr/share/cups/charmaps/euc-cn.txt
-usr/share/cups/charmaps/euc-jp.txt
-usr/share/cups/charmaps/euc-kr.txt
-usr/share/cups/charmaps/euc-tw.txt
-usr/share/cups/charmaps/iso-8859-1.txt
-usr/share/cups/charmaps/iso-8859-10.txt
-usr/share/cups/charmaps/iso-8859-11.txt
-usr/share/cups/charmaps/iso-8859-13.txt
-usr/share/cups/charmaps/iso-8859-14.txt
-usr/share/cups/charmaps/iso-8859-15.txt
-usr/share/cups/charmaps/iso-8859-16.txt
-usr/share/cups/charmaps/iso-8859-2.txt
-usr/share/cups/charmaps/iso-8859-3.txt
-usr/share/cups/charmaps/iso-8859-4.txt
-usr/share/cups/charmaps/iso-8859-5.txt
-usr/share/cups/charmaps/iso-8859-6.txt
-usr/share/cups/charmaps/iso-8859-7.txt
-usr/share/cups/charmaps/iso-8859-8.txt
-usr/share/cups/charmaps/iso-8859-9.txt
-usr/share/cups/charmaps/jis-x0213.txt
-usr/share/cups/charmaps/koi8-r.txt
-usr/share/cups/charmaps/koi8-u.txt
-usr/share/cups/charmaps/mac-roman.txt
-usr/share/cups/charmaps/windows-1250.txt
-usr/share/cups/charmaps/windows-1251.txt
-usr/share/cups/charmaps/windows-1252.txt
-usr/share/cups/charmaps/windows-1253.txt
-usr/share/cups/charmaps/windows-1254.txt
-usr/share/cups/charmaps/windows-1255.txt
-usr/share/cups/charmaps/windows-1256.txt
-usr/share/cups/charmaps/windows-1257.txt
-usr/share/cups/charmaps/windows-1258.txt
-usr/share/cups/charmaps/windows-1361.txt
-usr/share/cups/charmaps/windows-874.txt
-usr/share/cups/charmaps/windows-932.txt
-usr/share/cups/charmaps/windows-936.txt
-usr/share/cups/charmaps/windows-949.txt
-usr/share/cups/charmaps/windows-950.txt
-#usr/share/cups/charsets
-usr/share/cups/charsets/utf-8
-#usr/share/cups/data
-usr/share/cups/data/HPGLprolog
-usr/share/cups/data/psglyphs
+usr/share/cups/data
 usr/share/cups/data/testprint
-#usr/share/cups/drv
+usr/share/cups/drv
 usr/share/cups/drv/sample.drv
-#usr/share/cups/examples
+usr/share/cups/examples
 usr/share/cups/examples/color.drv
 usr/share/cups/examples/constraint.drv
 usr/share/cups/examples/custom.drv
@@ -188,30 +135,125 @@ usr/share/cups/examples/postscript.drv
 usr/share/cups/examples/r300-basic.drv
 usr/share/cups/examples/r300-colorman.drv
 usr/share/cups/examples/r300-remote.drv
-#usr/share/cups/fonts
-usr/share/cups/fonts/Monospace
-usr/share/cups/fonts/Monospace-Bold
-usr/share/cups/fonts/Monospace-BoldOblique
-usr/share/cups/fonts/Monospace-Oblique
-#usr/share/cups/mime
+usr/share/cups/ipptool
+usr/share/cups/ipptool/color.jpg
+usr/share/cups/ipptool/create-printer-subscription.test
+usr/share/cups/ipptool/document-a4.pdf
+usr/share/cups/ipptool/document-a4.ps
+usr/share/cups/ipptool/document-letter.pdf
+usr/share/cups/ipptool/document-letter.ps
+usr/share/cups/ipptool/get-completed-jobs.test
+usr/share/cups/ipptool/get-jobs.test
+usr/share/cups/ipptool/get-notifications.test
+usr/share/cups/ipptool/get-printer-attributes.test
+usr/share/cups/ipptool/get-subscriptions.test
+usr/share/cups/ipptool/gray.jpg
+usr/share/cups/ipptool/ipp-1.1.test
+usr/share/cups/ipptool/ipp-2.0.test
+usr/share/cups/ipptool/ipp-2.1.test
+usr/share/cups/ipptool/ipp-2.2.test
+usr/share/cups/ipptool/ipp-everywhere.test
+usr/share/cups/ipptool/onepage-a4.pdf
+usr/share/cups/ipptool/onepage-a4.ps
+usr/share/cups/ipptool/onepage-letter.pdf
+usr/share/cups/ipptool/onepage-letter.ps
+usr/share/cups/ipptool/print-job-deflate.test
+usr/share/cups/ipptool/print-job-gzip.test
+usr/share/cups/ipptool/print-job.test
+usr/share/cups/ipptool/testfile.jpg
+usr/share/cups/ipptool/testfile.pcl
+usr/share/cups/ipptool/testfile.pdf
+usr/share/cups/ipptool/testfile.ps
+usr/share/cups/ipptool/testfile.txt
+usr/share/cups/ipptool/validate-job.test
+usr/share/cups/mime
 usr/share/cups/mime/mime.convs
 usr/share/cups/mime/mime.types
-#usr/share/cups/model
-#usr/share/cups/ppdc
-#usr/share/cups/ppdc/epson.h
-#usr/share/cups/ppdc/escp.h
+usr/share/cups/model
+usr/share/cups/ppdc
+usr/share/cups/ppdc/epson.h
 usr/share/cups/ppdc/font.defs
-#usr/share/cups/ppdc/hp.h
-#usr/share/cups/ppdc/label.h
+usr/share/cups/ppdc/hp.h
+usr/share/cups/ppdc/label.h
 usr/share/cups/ppdc/media.defs
-#usr/share/cups/ppdc/pcl.h
 usr/share/cups/ppdc/raster.defs
 usr/share/cups/profiles
-#usr/share/cups/templates
+usr/share/cups/templates
 usr/share/cups/templates/add-class.tmpl
 usr/share/cups/templates/add-printer.tmpl
 usr/share/cups/templates/add-rss-subscription.tmpl
 usr/share/cups/templates/admin.tmpl
+usr/share/cups/templates/ca
+usr/share/cups/templates/ca/add-class.tmpl
+usr/share/cups/templates/ca/add-printer.tmpl
+usr/share/cups/templates/ca/add-rss-subscription.tmpl
+usr/share/cups/templates/ca/admin.tmpl
+usr/share/cups/templates/ca/choose-device.tmpl
+usr/share/cups/templates/ca/choose-make.tmpl
+usr/share/cups/templates/ca/choose-model.tmpl
+usr/share/cups/templates/ca/choose-serial.tmpl
+usr/share/cups/templates/ca/choose-uri.tmpl
+usr/share/cups/templates/ca/class-added.tmpl
+usr/share/cups/templates/ca/class-confirm.tmpl
+usr/share/cups/templates/ca/class-deleted.tmpl
+usr/share/cups/templates/ca/class-jobs-header.tmpl
+usr/share/cups/templates/ca/class-modified.tmpl
+usr/share/cups/templates/ca/class.tmpl
+usr/share/cups/templates/ca/classes-header.tmpl
+usr/share/cups/templates/ca/classes.tmpl
+usr/share/cups/templates/ca/command.tmpl
+usr/share/cups/templates/ca/edit-config.tmpl
+usr/share/cups/templates/ca/error-op.tmpl
+usr/share/cups/templates/ca/error.tmpl
+usr/share/cups/templates/ca/header.tmpl
+usr/share/cups/templates/ca/help-header.tmpl
+usr/share/cups/templates/ca/help-printable.tmpl
+usr/share/cups/templates/ca/help-trailer.tmpl
+usr/share/cups/templates/ca/job-cancel.tmpl
+usr/share/cups/templates/ca/job-hold.tmpl
+usr/share/cups/templates/ca/job-move.tmpl
+usr/share/cups/templates/ca/job-moved.tmpl
+usr/share/cups/templates/ca/job-release.tmpl
+usr/share/cups/templates/ca/job-restart.tmpl
+usr/share/cups/templates/ca/jobs-header.tmpl
+usr/share/cups/templates/ca/jobs.tmpl
+usr/share/cups/templates/ca/list-available-printers.tmpl
+usr/share/cups/templates/ca/modify-class.tmpl
+usr/share/cups/templates/ca/modify-printer.tmpl
+usr/share/cups/templates/ca/norestart.tmpl
+usr/share/cups/templates/ca/option-boolean.tmpl
+usr/share/cups/templates/ca/option-conflict.tmpl
+usr/share/cups/templates/ca/option-header.tmpl
+usr/share/cups/templates/ca/option-pickmany.tmpl
+usr/share/cups/templates/ca/option-pickone.tmpl
+usr/share/cups/templates/ca/option-trailer.tmpl
+usr/share/cups/templates/ca/pager.tmpl
+usr/share/cups/templates/ca/printer-accept.tmpl
+usr/share/cups/templates/ca/printer-added.tmpl
+usr/share/cups/templates/ca/printer-configured.tmpl
+usr/share/cups/templates/ca/printer-confirm.tmpl
+usr/share/cups/templates/ca/printer-default.tmpl
+usr/share/cups/templates/ca/printer-deleted.tmpl
+usr/share/cups/templates/ca/printer-jobs-header.tmpl
+usr/share/cups/templates/ca/printer-modified.tmpl
+usr/share/cups/templates/ca/printer-purge.tmpl
+usr/share/cups/templates/ca/printer-reject.tmpl
+usr/share/cups/templates/ca/printer-start.tmpl
+usr/share/cups/templates/ca/printer-stop.tmpl
+usr/share/cups/templates/ca/printer.tmpl
+usr/share/cups/templates/ca/printers-header.tmpl
+usr/share/cups/templates/ca/printers.tmpl
+usr/share/cups/templates/ca/restart.tmpl
+usr/share/cups/templates/ca/samba-export.tmpl
+usr/share/cups/templates/ca/samba-exported.tmpl
+usr/share/cups/templates/ca/search.tmpl
+usr/share/cups/templates/ca/set-printer-options-header.tmpl
+usr/share/cups/templates/ca/set-printer-options-trailer.tmpl
+usr/share/cups/templates/ca/subscription-added.tmpl
+usr/share/cups/templates/ca/subscription-canceled.tmpl
+usr/share/cups/templates/ca/test-page.tmpl
+usr/share/cups/templates/ca/trailer.tmpl
+usr/share/cups/templates/ca/users.tmpl
 usr/share/cups/templates/choose-device.tmpl
 usr/share/cups/templates/choose-make.tmpl
 usr/share/cups/templates/choose-model.tmpl
@@ -226,438 +268,368 @@ usr/share/cups/templates/class.tmpl
 usr/share/cups/templates/classes-header.tmpl
 usr/share/cups/templates/classes.tmpl
 usr/share/cups/templates/command.tmpl
-usr/share/cups/templates/de
-usr/share/cups/templates/de/add-class.tmpl
-usr/share/cups/templates/de/add-printer.tmpl
-usr/share/cups/templates/de/add-rss-subscription.tmpl
-usr/share/cups/templates/de/admin.tmpl
-usr/share/cups/templates/de/choose-device.tmpl
-usr/share/cups/templates/de/choose-make.tmpl
-usr/share/cups/templates/de/choose-model.tmpl
-usr/share/cups/templates/de/choose-serial.tmpl
-usr/share/cups/templates/de/choose-uri.tmpl
-usr/share/cups/templates/de/class-added.tmpl
-usr/share/cups/templates/de/class-confirm.tmpl
-usr/share/cups/templates/de/class-deleted.tmpl
-usr/share/cups/templates/de/class-jobs-header.tmpl
-usr/share/cups/templates/de/class-modified.tmpl
-usr/share/cups/templates/de/class.tmpl
-usr/share/cups/templates/de/classes-header.tmpl
-usr/share/cups/templates/de/classes.tmpl
-usr/share/cups/templates/de/command.tmpl
-usr/share/cups/templates/de/edit-config.tmpl
-usr/share/cups/templates/de/error-op.tmpl
-usr/share/cups/templates/de/error.tmpl
-usr/share/cups/templates/de/header.tmpl
-usr/share/cups/templates/de/help-header.tmpl
-usr/share/cups/templates/de/help-printable.tmpl
-usr/share/cups/templates/de/help-trailer.tmpl
-usr/share/cups/templates/de/job-cancel.tmpl
-usr/share/cups/templates/de/job-hold.tmpl
-usr/share/cups/templates/de/job-move.tmpl
-usr/share/cups/templates/de/job-moved.tmpl
-usr/share/cups/templates/de/job-release.tmpl
-usr/share/cups/templates/de/job-restart.tmpl
-usr/share/cups/templates/de/jobs-header.tmpl
-usr/share/cups/templates/de/jobs.tmpl
-usr/share/cups/templates/de/list-available-printers.tmpl
-usr/share/cups/templates/de/modify-class.tmpl
-usr/share/cups/templates/de/modify-printer.tmpl
-usr/share/cups/templates/de/norestart.tmpl
-usr/share/cups/templates/de/option-boolean.tmpl
-usr/share/cups/templates/de/option-conflict.tmpl
-usr/share/cups/templates/de/option-header.tmpl
-usr/share/cups/templates/de/option-pickmany.tmpl
-usr/share/cups/templates/de/option-pickone.tmpl
-usr/share/cups/templates/de/option-trailer.tmpl
-usr/share/cups/templates/de/pager.tmpl
-usr/share/cups/templates/de/printer-accept.tmpl
-usr/share/cups/templates/de/printer-added.tmpl
-usr/share/cups/templates/de/printer-configured.tmpl
-usr/share/cups/templates/de/printer-confirm.tmpl
-usr/share/cups/templates/de/printer-default.tmpl
-usr/share/cups/templates/de/printer-deleted.tmpl
-usr/share/cups/templates/de/printer-jobs-header.tmpl
-usr/share/cups/templates/de/printer-modified.tmpl
-usr/share/cups/templates/de/printer-purge.tmpl
-usr/share/cups/templates/de/printer-reject.tmpl
-usr/share/cups/templates/de/printer-start.tmpl
-usr/share/cups/templates/de/printer-stop.tmpl
-usr/share/cups/templates/de/printer.tmpl
-usr/share/cups/templates/de/printers-header.tmpl
-usr/share/cups/templates/de/printers.tmpl
-usr/share/cups/templates/de/restart.tmpl
-usr/share/cups/templates/de/samba-export.tmpl
-usr/share/cups/templates/de/samba-exported.tmpl
-usr/share/cups/templates/de/search.tmpl
-usr/share/cups/templates/de/set-printer-options-header.tmpl
-usr/share/cups/templates/de/set-printer-options-trailer.tmpl
-usr/share/cups/templates/de/subscription-added.tmpl
-usr/share/cups/templates/de/subscription-canceled.tmpl
-usr/share/cups/templates/de/test-page.tmpl
-usr/share/cups/templates/de/trailer.tmpl
-usr/share/cups/templates/de/users.tmpl
+usr/share/cups/templates/cs
+usr/share/cups/templates/cs/add-class.tmpl
+usr/share/cups/templates/cs/add-printer.tmpl
+usr/share/cups/templates/cs/add-rss-subscription.tmpl
+usr/share/cups/templates/cs/admin.tmpl
+usr/share/cups/templates/cs/choose-device.tmpl
+usr/share/cups/templates/cs/choose-make.tmpl
+usr/share/cups/templates/cs/choose-model.tmpl
+usr/share/cups/templates/cs/choose-serial.tmpl
+usr/share/cups/templates/cs/choose-uri.tmpl
+usr/share/cups/templates/cs/class-added.tmpl
+usr/share/cups/templates/cs/class-confirm.tmpl
+usr/share/cups/templates/cs/class-deleted.tmpl
+usr/share/cups/templates/cs/class-jobs-header.tmpl
+usr/share/cups/templates/cs/class-modified.tmpl
+usr/share/cups/templates/cs/class.tmpl
+usr/share/cups/templates/cs/classes-header.tmpl
+usr/share/cups/templates/cs/classes.tmpl
+usr/share/cups/templates/cs/command.tmpl
+usr/share/cups/templates/cs/edit-config.tmpl
+usr/share/cups/templates/cs/error-op.tmpl
+usr/share/cups/templates/cs/error.tmpl
+usr/share/cups/templates/cs/header.tmpl
+usr/share/cups/templates/cs/help-header.tmpl
+usr/share/cups/templates/cs/help-printable.tmpl
+usr/share/cups/templates/cs/help-trailer.tmpl
+usr/share/cups/templates/cs/job-cancel.tmpl
+usr/share/cups/templates/cs/job-hold.tmpl
+usr/share/cups/templates/cs/job-move.tmpl
+usr/share/cups/templates/cs/job-moved.tmpl
+usr/share/cups/templates/cs/job-release.tmpl
+usr/share/cups/templates/cs/job-restart.tmpl
+usr/share/cups/templates/cs/jobs-header.tmpl
+usr/share/cups/templates/cs/jobs.tmpl
+usr/share/cups/templates/cs/list-available-printers.tmpl
+usr/share/cups/templates/cs/modify-class.tmpl
+usr/share/cups/templates/cs/modify-printer.tmpl
+usr/share/cups/templates/cs/norestart.tmpl
+usr/share/cups/templates/cs/option-boolean.tmpl
+usr/share/cups/templates/cs/option-conflict.tmpl
+usr/share/cups/templates/cs/option-header.tmpl
+usr/share/cups/templates/cs/option-pickmany.tmpl
+usr/share/cups/templates/cs/option-pickone.tmpl
+usr/share/cups/templates/cs/option-trailer.tmpl
+usr/share/cups/templates/cs/pager.tmpl
+usr/share/cups/templates/cs/printer-accept.tmpl
+usr/share/cups/templates/cs/printer-added.tmpl
+usr/share/cups/templates/cs/printer-configured.tmpl
+usr/share/cups/templates/cs/printer-confirm.tmpl
+usr/share/cups/templates/cs/printer-default.tmpl
+usr/share/cups/templates/cs/printer-deleted.tmpl
+usr/share/cups/templates/cs/printer-jobs-header.tmpl
+usr/share/cups/templates/cs/printer-modified.tmpl
+usr/share/cups/templates/cs/printer-purge.tmpl
+usr/share/cups/templates/cs/printer-reject.tmpl
+usr/share/cups/templates/cs/printer-start.tmpl
+usr/share/cups/templates/cs/printer-stop.tmpl
+usr/share/cups/templates/cs/printer.tmpl
+usr/share/cups/templates/cs/printers-header.tmpl
+usr/share/cups/templates/cs/printers.tmpl
+usr/share/cups/templates/cs/restart.tmpl
+usr/share/cups/templates/cs/samba-export.tmpl
+usr/share/cups/templates/cs/samba-exported.tmpl
+usr/share/cups/templates/cs/search.tmpl
+usr/share/cups/templates/cs/set-printer-options-header.tmpl
+usr/share/cups/templates/cs/set-printer-options-trailer.tmpl
+usr/share/cups/templates/cs/subscription-added.tmpl
+usr/share/cups/templates/cs/subscription-canceled.tmpl
+usr/share/cups/templates/cs/test-page.tmpl
+usr/share/cups/templates/cs/trailer.tmpl
+usr/share/cups/templates/cs/users.tmpl
 usr/share/cups/templates/edit-config.tmpl
 usr/share/cups/templates/error-op.tmpl
 usr/share/cups/templates/error.tmpl
-#usr/share/cups/templates/es
-#usr/share/cups/templates/es/add-class.tmpl
-#usr/share/cups/templates/es/add-printer.tmpl
-#usr/share/cups/templates/es/add-rss-subscription.tmpl
-#usr/share/cups/templates/es/admin.tmpl
-#usr/share/cups/templates/es/choose-device.tmpl
-#usr/share/cups/templates/es/choose-make.tmpl
-#usr/share/cups/templates/es/choose-model.tmpl
-#usr/share/cups/templates/es/choose-serial.tmpl
-#usr/share/cups/templates/es/choose-uri.tmpl
-#usr/share/cups/templates/es/class-added.tmpl
-#usr/share/cups/templates/es/class-confirm.tmpl
-#usr/share/cups/templates/es/class-deleted.tmpl
-#usr/share/cups/templates/es/class-jobs-header.tmpl
-#usr/share/cups/templates/es/class-modified.tmpl
-#usr/share/cups/templates/es/class.tmpl
-#usr/share/cups/templates/es/classes-header.tmpl
-#usr/share/cups/templates/es/classes.tmpl
-#usr/share/cups/templates/es/command.tmpl
-#usr/share/cups/templates/es/edit-config.tmpl
-#usr/share/cups/templates/es/error-op.tmpl
-#usr/share/cups/templates/es/error.tmpl
-#usr/share/cups/templates/es/header.tmpl
-#usr/share/cups/templates/es/help-header.tmpl
-#usr/share/cups/templates/es/help-printable.tmpl
-#usr/share/cups/templates/es/help-trailer.tmpl
-#usr/share/cups/templates/es/job-cancel.tmpl
-#usr/share/cups/templates/es/job-hold.tmpl
-#usr/share/cups/templates/es/job-move.tmpl
-#usr/share/cups/templates/es/job-moved.tmpl
-#usr/share/cups/templates/es/job-release.tmpl
-#usr/share/cups/templates/es/job-restart.tmpl
-#usr/share/cups/templates/es/jobs-header.tmpl
-#usr/share/cups/templates/es/jobs.tmpl
-#usr/share/cups/templates/es/list-available-printers.tmpl
-#usr/share/cups/templates/es/modify-class.tmpl
-#usr/share/cups/templates/es/modify-printer.tmpl
-#usr/share/cups/templates/es/norestart.tmpl
-#usr/share/cups/templates/es/option-boolean.tmpl
-#usr/share/cups/templates/es/option-conflict.tmpl
-#usr/share/cups/templates/es/option-header.tmpl
-#usr/share/cups/templates/es/option-pickmany.tmpl
-#usr/share/cups/templates/es/option-pickone.tmpl
-#usr/share/cups/templates/es/option-trailer.tmpl
-#usr/share/cups/templates/es/pager.tmpl
-#usr/share/cups/templates/es/printer-accept.tmpl
-#usr/share/cups/templates/es/printer-added.tmpl
-#usr/share/cups/templates/es/printer-configured.tmpl
-#usr/share/cups/templates/es/printer-confirm.tmpl
-#usr/share/cups/templates/es/printer-default.tmpl
-#usr/share/cups/templates/es/printer-deleted.tmpl
-#usr/share/cups/templates/es/printer-jobs-header.tmpl
-#usr/share/cups/templates/es/printer-modified.tmpl
-#usr/share/cups/templates/es/printer-purge.tmpl
-#usr/share/cups/templates/es/printer-reject.tmpl
-#usr/share/cups/templates/es/printer-start.tmpl
-#usr/share/cups/templates/es/printer-stop.tmpl
-#usr/share/cups/templates/es/printer.tmpl
-#usr/share/cups/templates/es/printers-header.tmpl
-#usr/share/cups/templates/es/printers.tmpl
-#usr/share/cups/templates/es/restart.tmpl
-#usr/share/cups/templates/es/samba-export.tmpl
-#usr/share/cups/templates/es/samba-exported.tmpl
-#usr/share/cups/templates/es/search.tmpl
-#usr/share/cups/templates/es/set-printer-options-header.tmpl
-#usr/share/cups/templates/es/set-printer-options-trailer.tmpl
-#usr/share/cups/templates/es/subscription-added.tmpl
-#usr/share/cups/templates/es/subscription-canceled.tmpl
-#usr/share/cups/templates/es/test-page.tmpl
-#usr/share/cups/templates/es/trailer.tmpl
-#usr/share/cups/templates/es/users.tmpl
-#usr/share/cups/templates/eu
-#usr/share/cups/templates/eu/add-class.tmpl
-#usr/share/cups/templates/eu/add-printer.tmpl
-#usr/share/cups/templates/eu/add-rss-subscription.tmpl
-#usr/share/cups/templates/eu/admin.tmpl
-#usr/share/cups/templates/eu/choose-device.tmpl
-#usr/share/cups/templates/eu/choose-make.tmpl
-#usr/share/cups/templates/eu/choose-model.tmpl
-#usr/share/cups/templates/eu/choose-serial.tmpl
-#usr/share/cups/templates/eu/choose-uri.tmpl
-#usr/share/cups/templates/eu/class-added.tmpl
-#usr/share/cups/templates/eu/class-confirm.tmpl
-#usr/share/cups/templates/eu/class-deleted.tmpl
-#usr/share/cups/templates/eu/class-jobs-header.tmpl
-#usr/share/cups/templates/eu/class-modified.tmpl
-#usr/share/cups/templates/eu/class.tmpl
-#usr/share/cups/templates/eu/classes-header.tmpl
-#usr/share/cups/templates/eu/classes.tmpl
-#usr/share/cups/templates/eu/command.tmpl
-#usr/share/cups/templates/eu/edit-config.tmpl
-#usr/share/cups/templates/eu/error-op.tmpl
-#usr/share/cups/templates/eu/error.tmpl
-#usr/share/cups/templates/eu/header.tmpl
-#usr/share/cups/templates/eu/help-header.tmpl
-#usr/share/cups/templates/eu/help-printable.tmpl
-#usr/share/cups/templates/eu/help-trailer.tmpl
-#usr/share/cups/templates/eu/job-cancel.tmpl
-#usr/share/cups/templates/eu/job-hold.tmpl
-#usr/share/cups/templates/eu/job-move.tmpl
-#usr/share/cups/templates/eu/job-moved.tmpl
-#usr/share/cups/templates/eu/job-release.tmpl
-#usr/share/cups/templates/eu/job-restart.tmpl
-#usr/share/cups/templates/eu/jobs-header.tmpl
-#usr/share/cups/templates/eu/jobs.tmpl
-#usr/share/cups/templates/eu/list-available-printers.tmpl
-#usr/share/cups/templates/eu/modify-class.tmpl
-#usr/share/cups/templates/eu/modify-printer.tmpl
-#usr/share/cups/templates/eu/norestart.tmpl
-#usr/share/cups/templates/eu/option-boolean.tmpl
-#usr/share/cups/templates/eu/option-conflict.tmpl
-#usr/share/cups/templates/eu/option-header.tmpl
-#usr/share/cups/templates/eu/option-pickmany.tmpl
-#usr/share/cups/templates/eu/option-pickone.tmpl
-#usr/share/cups/templates/eu/option-trailer.tmpl
-#usr/share/cups/templates/eu/pager.tmpl
-#usr/share/cups/templates/eu/printer-accept.tmpl
-#usr/share/cups/templates/eu/printer-added.tmpl
-#usr/share/cups/templates/eu/printer-configured.tmpl
-#usr/share/cups/templates/eu/printer-confirm.tmpl
-#usr/share/cups/templates/eu/printer-default.tmpl
-#usr/share/cups/templates/eu/printer-deleted.tmpl
-#usr/share/cups/templates/eu/printer-jobs-header.tmpl
-#usr/share/cups/templates/eu/printer-modified.tmpl
-#usr/share/cups/templates/eu/printer-purge.tmpl
-#usr/share/cups/templates/eu/printer-reject.tmpl
-#usr/share/cups/templates/eu/printer-start.tmpl
-#usr/share/cups/templates/eu/printer-stop.tmpl
-#usr/share/cups/templates/eu/printer.tmpl
-#usr/share/cups/templates/eu/printers-header.tmpl
-#usr/share/cups/templates/eu/printers.tmpl
-#usr/share/cups/templates/eu/restart.tmpl
-#usr/share/cups/templates/eu/samba-export.tmpl
-#usr/share/cups/templates/eu/samba-exported.tmpl
-#usr/share/cups/templates/eu/search.tmpl
-#usr/share/cups/templates/eu/set-printer-options-header.tmpl
-#usr/share/cups/templates/eu/set-printer-options-trailer.tmpl
-#usr/share/cups/templates/eu/subscription-added.tmpl
-#usr/share/cups/templates/eu/subscription-canceled.tmpl
-#usr/share/cups/templates/eu/test-page.tmpl
-#usr/share/cups/templates/eu/trailer.tmpl
-#usr/share/cups/templates/eu/users.tmpl
+usr/share/cups/templates/es
+usr/share/cups/templates/es/add-class.tmpl
+usr/share/cups/templates/es/add-printer.tmpl
+usr/share/cups/templates/es/add-rss-subscription.tmpl
+usr/share/cups/templates/es/admin.tmpl
+usr/share/cups/templates/es/choose-device.tmpl
+usr/share/cups/templates/es/choose-make.tmpl
+usr/share/cups/templates/es/choose-model.tmpl
+usr/share/cups/templates/es/choose-serial.tmpl
+usr/share/cups/templates/es/choose-uri.tmpl
+usr/share/cups/templates/es/class-added.tmpl
+usr/share/cups/templates/es/class-confirm.tmpl
+usr/share/cups/templates/es/class-deleted.tmpl
+usr/share/cups/templates/es/class-jobs-header.tmpl
+usr/share/cups/templates/es/class-modified.tmpl
+usr/share/cups/templates/es/class.tmpl
+usr/share/cups/templates/es/classes-header.tmpl
+usr/share/cups/templates/es/classes.tmpl
+usr/share/cups/templates/es/command.tmpl
+usr/share/cups/templates/es/edit-config.tmpl
+usr/share/cups/templates/es/error-op.tmpl
+usr/share/cups/templates/es/error.tmpl
+usr/share/cups/templates/es/header.tmpl
+usr/share/cups/templates/es/help-header.tmpl
+usr/share/cups/templates/es/help-printable.tmpl
+usr/share/cups/templates/es/help-trailer.tmpl
+usr/share/cups/templates/es/job-cancel.tmpl
+usr/share/cups/templates/es/job-hold.tmpl
+usr/share/cups/templates/es/job-move.tmpl
+usr/share/cups/templates/es/job-moved.tmpl
+usr/share/cups/templates/es/job-release.tmpl
+usr/share/cups/templates/es/job-restart.tmpl
+usr/share/cups/templates/es/jobs-header.tmpl
+usr/share/cups/templates/es/jobs.tmpl
+usr/share/cups/templates/es/list-available-printers.tmpl
+usr/share/cups/templates/es/modify-class.tmpl
+usr/share/cups/templates/es/modify-printer.tmpl
+usr/share/cups/templates/es/norestart.tmpl
+usr/share/cups/templates/es/option-boolean.tmpl
+usr/share/cups/templates/es/option-conflict.tmpl
+usr/share/cups/templates/es/option-header.tmpl
+usr/share/cups/templates/es/option-pickmany.tmpl
+usr/share/cups/templates/es/option-pickone.tmpl
+usr/share/cups/templates/es/option-trailer.tmpl
+usr/share/cups/templates/es/pager.tmpl
+usr/share/cups/templates/es/printer-accept.tmpl
+usr/share/cups/templates/es/printer-added.tmpl
+usr/share/cups/templates/es/printer-configured.tmpl
+usr/share/cups/templates/es/printer-confirm.tmpl
+usr/share/cups/templates/es/printer-default.tmpl
+usr/share/cups/templates/es/printer-deleted.tmpl
+usr/share/cups/templates/es/printer-jobs-header.tmpl
+usr/share/cups/templates/es/printer-modified.tmpl
+usr/share/cups/templates/es/printer-purge.tmpl
+usr/share/cups/templates/es/printer-reject.tmpl
+usr/share/cups/templates/es/printer-start.tmpl
+usr/share/cups/templates/es/printer-stop.tmpl
+usr/share/cups/templates/es/printer.tmpl
+usr/share/cups/templates/es/printers-header.tmpl
+usr/share/cups/templates/es/printers.tmpl
+usr/share/cups/templates/es/restart.tmpl
+usr/share/cups/templates/es/samba-export.tmpl
+usr/share/cups/templates/es/samba-exported.tmpl
+usr/share/cups/templates/es/search.tmpl
+usr/share/cups/templates/es/set-printer-options-header.tmpl
+usr/share/cups/templates/es/set-printer-options-trailer.tmpl
+usr/share/cups/templates/es/subscription-added.tmpl
+usr/share/cups/templates/es/subscription-canceled.tmpl
+usr/share/cups/templates/es/test-page.tmpl
+usr/share/cups/templates/es/trailer.tmpl
+usr/share/cups/templates/es/users.tmpl
+usr/share/cups/templates/fr
+usr/share/cups/templates/fr/add-class.tmpl
+usr/share/cups/templates/fr/add-printer.tmpl
+usr/share/cups/templates/fr/add-rss-subscription.tmpl
+usr/share/cups/templates/fr/admin.tmpl
+usr/share/cups/templates/fr/choose-device.tmpl
+usr/share/cups/templates/fr/choose-make.tmpl
+usr/share/cups/templates/fr/choose-model.tmpl
+usr/share/cups/templates/fr/choose-serial.tmpl
+usr/share/cups/templates/fr/choose-uri.tmpl
+usr/share/cups/templates/fr/class-added.tmpl
+usr/share/cups/templates/fr/class-confirm.tmpl
+usr/share/cups/templates/fr/class-deleted.tmpl
+usr/share/cups/templates/fr/class-jobs-header.tmpl
+usr/share/cups/templates/fr/class-modified.tmpl
+usr/share/cups/templates/fr/class.tmpl
+usr/share/cups/templates/fr/classes-header.tmpl
+usr/share/cups/templates/fr/classes.tmpl
+usr/share/cups/templates/fr/command.tmpl
+usr/share/cups/templates/fr/edit-config.tmpl
+usr/share/cups/templates/fr/error-op.tmpl
+usr/share/cups/templates/fr/error.tmpl
+usr/share/cups/templates/fr/header.tmpl
+usr/share/cups/templates/fr/help-header.tmpl
+usr/share/cups/templates/fr/help-printable.tmpl
+usr/share/cups/templates/fr/help-trailer.tmpl
+usr/share/cups/templates/fr/job-cancel.tmpl
+usr/share/cups/templates/fr/job-hold.tmpl
+usr/share/cups/templates/fr/job-move.tmpl
+usr/share/cups/templates/fr/job-moved.tmpl
+usr/share/cups/templates/fr/job-release.tmpl
+usr/share/cups/templates/fr/job-restart.tmpl
+usr/share/cups/templates/fr/jobs-header.tmpl
+usr/share/cups/templates/fr/jobs.tmpl
+usr/share/cups/templates/fr/list-available-printers.tmpl
+usr/share/cups/templates/fr/modify-class.tmpl
+usr/share/cups/templates/fr/modify-printer.tmpl
+usr/share/cups/templates/fr/norestart.tmpl
+usr/share/cups/templates/fr/option-boolean.tmpl
+usr/share/cups/templates/fr/option-conflict.tmpl
+usr/share/cups/templates/fr/option-header.tmpl
+usr/share/cups/templates/fr/option-pickmany.tmpl
+usr/share/cups/templates/fr/option-pickone.tmpl
+usr/share/cups/templates/fr/option-trailer.tmpl
+usr/share/cups/templates/fr/pager.tmpl
+usr/share/cups/templates/fr/printer-accept.tmpl
+usr/share/cups/templates/fr/printer-added.tmpl
+usr/share/cups/templates/fr/printer-configured.tmpl
+usr/share/cups/templates/fr/printer-confirm.tmpl
+usr/share/cups/templates/fr/printer-default.tmpl
+usr/share/cups/templates/fr/printer-deleted.tmpl
+usr/share/cups/templates/fr/printer-jobs-header.tmpl
+usr/share/cups/templates/fr/printer-modified.tmpl
+usr/share/cups/templates/fr/printer-purge.tmpl
+usr/share/cups/templates/fr/printer-reject.tmpl
+usr/share/cups/templates/fr/printer-start.tmpl
+usr/share/cups/templates/fr/printer-stop.tmpl
+usr/share/cups/templates/fr/printer.tmpl
+usr/share/cups/templates/fr/printers-header.tmpl
+usr/share/cups/templates/fr/printers.tmpl
+usr/share/cups/templates/fr/restart.tmpl
+usr/share/cups/templates/fr/samba-export.tmpl
+usr/share/cups/templates/fr/samba-exported.tmpl
+usr/share/cups/templates/fr/search.tmpl
+usr/share/cups/templates/fr/set-printer-options-header.tmpl
+usr/share/cups/templates/fr/set-printer-options-trailer.tmpl
+usr/share/cups/templates/fr/subscription-added.tmpl
+usr/share/cups/templates/fr/subscription-canceled.tmpl
+usr/share/cups/templates/fr/test-page.tmpl
+usr/share/cups/templates/fr/trailer.tmpl
+usr/share/cups/templates/fr/users.tmpl
 usr/share/cups/templates/header.tmpl
 usr/share/cups/templates/help-header.tmpl
 usr/share/cups/templates/help-printable.tmpl
 usr/share/cups/templates/help-trailer.tmpl
-#usr/share/cups/templates/id
-#usr/share/cups/templates/id/add-class.tmpl
-#usr/share/cups/templates/id/add-printer.tmpl
-#usr/share/cups/templates/id/add-rss-subscription.tmpl
-#usr/share/cups/templates/id/admin.tmpl
-#usr/share/cups/templates/id/choose-device.tmpl
-#usr/share/cups/templates/id/choose-make.tmpl
-#usr/share/cups/templates/id/choose-model.tmpl
-#usr/share/cups/templates/id/choose-serial.tmpl
-#usr/share/cups/templates/id/choose-uri.tmpl
-#usr/share/cups/templates/id/class-added.tmpl
-#usr/share/cups/templates/id/class-confirm.tmpl
-#usr/share/cups/templates/id/class-deleted.tmpl
-#usr/share/cups/templates/id/class-jobs-header.tmpl
-#usr/share/cups/templates/id/class-modified.tmpl
-#usr/share/cups/templates/id/class.tmpl
-#usr/share/cups/templates/id/classes-header.tmpl
-#usr/share/cups/templates/id/classes.tmpl
-#usr/share/cups/templates/id/command.tmpl
-#usr/share/cups/templates/id/edit-config.tmpl
-#usr/share/cups/templates/id/error-op.tmpl
-#usr/share/cups/templates/id/error.tmpl
-#usr/share/cups/templates/id/header.tmpl
-#usr/share/cups/templates/id/help-header.tmpl
-#usr/share/cups/templates/id/help-printable.tmpl
-#usr/share/cups/templates/id/help-trailer.tmpl
-#usr/share/cups/templates/id/job-cancel.tmpl
-#usr/share/cups/templates/id/job-hold.tmpl
-#usr/share/cups/templates/id/job-move.tmpl
-#usr/share/cups/templates/id/job-moved.tmpl
-#usr/share/cups/templates/id/job-release.tmpl
-#usr/share/cups/templates/id/job-restart.tmpl
-#usr/share/cups/templates/id/jobs-header.tmpl
-#usr/share/cups/templates/id/jobs.tmpl
-#usr/share/cups/templates/id/list-available-printers.tmpl
-#usr/share/cups/templates/id/modify-class.tmpl
-#usr/share/cups/templates/id/modify-printer.tmpl
-#usr/share/cups/templates/id/norestart.tmpl
-#usr/share/cups/templates/id/option-boolean.tmpl
-#usr/share/cups/templates/id/option-conflict.tmpl
-#usr/share/cups/templates/id/option-header.tmpl
-#usr/share/cups/templates/id/option-pickmany.tmpl
-#usr/share/cups/templates/id/option-pickone.tmpl
-#usr/share/cups/templates/id/option-trailer.tmpl
-#usr/share/cups/templates/id/pager.tmpl
-#usr/share/cups/templates/id/printer-accept.tmpl
-#usr/share/cups/templates/id/printer-added.tmpl
-#usr/share/cups/templates/id/printer-configured.tmpl
-#usr/share/cups/templates/id/printer-confirm.tmpl
-#usr/share/cups/templates/id/printer-default.tmpl
-#usr/share/cups/templates/id/printer-deleted.tmpl
-#usr/share/cups/templates/id/printer-jobs-header.tmpl
-#usr/share/cups/templates/id/printer-modified.tmpl
-#usr/share/cups/templates/id/printer-purge.tmpl
-#usr/share/cups/templates/id/printer-reject.tmpl
-#usr/share/cups/templates/id/printer-start.tmpl
-#usr/share/cups/templates/id/printer-stop.tmpl
-#usr/share/cups/templates/id/printer.tmpl
-#usr/share/cups/templates/id/printers-header.tmpl
-#usr/share/cups/templates/id/printers.tmpl
-#usr/share/cups/templates/id/restart.tmpl
-#usr/share/cups/templates/id/samba-export.tmpl
-#usr/share/cups/templates/id/samba-exported.tmpl
-#usr/share/cups/templates/id/search.tmpl
-#usr/share/cups/templates/id/set-printer-options-header.tmpl
-#usr/share/cups/templates/id/set-printer-options-trailer.tmpl
-#usr/share/cups/templates/id/subscription-added.tmpl
-#usr/share/cups/templates/id/subscription-canceled.tmpl
-#usr/share/cups/templates/id/test-page.tmpl
-#usr/share/cups/templates/id/trailer.tmpl
-#usr/share/cups/templates/id/users.tmpl
-#usr/share/cups/templates/it
-#usr/share/cups/templates/it/add-class.tmpl
-#usr/share/cups/templates/it/add-printer.tmpl
-#usr/share/cups/templates/it/add-rss-subscription.tmpl
-#usr/share/cups/templates/it/admin.tmpl
-#usr/share/cups/templates/it/choose-device.tmpl
-#usr/share/cups/templates/it/choose-make.tmpl
-#usr/share/cups/templates/it/choose-model.tmpl
-#usr/share/cups/templates/it/choose-serial.tmpl
-#usr/share/cups/templates/it/choose-uri.tmpl
-#usr/share/cups/templates/it/class-added.tmpl
-#usr/share/cups/templates/it/class-confirm.tmpl
-#usr/share/cups/templates/it/class-deleted.tmpl
-#usr/share/cups/templates/it/class-jobs-header.tmpl
-#usr/share/cups/templates/it/class-modified.tmpl
-#usr/share/cups/templates/it/class.tmpl
-#usr/share/cups/templates/it/classes-header.tmpl
-#usr/share/cups/templates/it/classes.tmpl
-#usr/share/cups/templates/it/command.tmpl
-#usr/share/cups/templates/it/edit-config.tmpl
-#usr/share/cups/templates/it/error-op.tmpl
-#usr/share/cups/templates/it/error.tmpl
-#usr/share/cups/templates/it/help-header.tmpl
-#usr/share/cups/templates/it/help-printable.tmpl
-#usr/share/cups/templates/it/help-trailer.tmpl
-#usr/share/cups/templates/it/job-cancel.tmpl
-#usr/share/cups/templates/it/job-hold.tmpl
-#usr/share/cups/templates/it/job-move.tmpl
-#usr/share/cups/templates/it/job-moved.tmpl
-#usr/share/cups/templates/it/job-release.tmpl
-#usr/share/cups/templates/it/job-restart.tmpl
-#usr/share/cups/templates/it/jobs-header.tmpl
-#usr/share/cups/templates/it/jobs.tmpl
-#usr/share/cups/templates/it/list-available-printers.tmpl
-#usr/share/cups/templates/it/modify-class.tmpl
-#usr/share/cups/templates/it/modify-printer.tmpl
-#usr/share/cups/templates/it/norestart.tmpl
-#usr/share/cups/templates/it/option-boolean.tmpl
-#usr/share/cups/templates/it/option-conflict.tmpl
-#usr/share/cups/templates/it/option-header.tmpl
-#usr/share/cups/templates/it/option-pickmany.tmpl
-#usr/share/cups/templates/it/option-pickone.tmpl
-#usr/share/cups/templates/it/option-trailer.tmpl
-#usr/share/cups/templates/it/pager.tmpl
-#usr/share/cups/templates/it/printer-accept.tmpl
-#usr/share/cups/templates/it/printer-added.tmpl
-#usr/share/cups/templates/it/printer-configured.tmpl
-#usr/share/cups/templates/it/printer-confirm.tmpl
-#usr/share/cups/templates/it/printer-default.tmpl
-#usr/share/cups/templates/it/printer-deleted.tmpl
-#usr/share/cups/templates/it/printer-jobs-header.tmpl
-#usr/share/cups/templates/it/printer-modified.tmpl
-#usr/share/cups/templates/it/printer-purge.tmpl
-#usr/share/cups/templates/it/printer-reject.tmpl
-#usr/share/cups/templates/it/printer-start.tmpl
-#usr/share/cups/templates/it/printer-stop.tmpl
-#usr/share/cups/templates/it/printer.tmpl
-#usr/share/cups/templates/it/printers-header.tmpl
-#usr/share/cups/templates/it/printers.tmpl
-#usr/share/cups/templates/it/restart.tmpl
-#usr/share/cups/templates/it/samba-export.tmpl
-#usr/share/cups/templates/it/samba-exported.tmpl
-#usr/share/cups/templates/it/search.tmpl
-#usr/share/cups/templates/it/set-printer-options-header.tmpl
-#usr/share/cups/templates/it/set-printer-options-trailer.tmpl
-#usr/share/cups/templates/it/subscription-added.tmpl
-#usr/share/cups/templates/it/subscription-canceled.tmpl
-#usr/share/cups/templates/it/test-page.tmpl
-#usr/share/cups/templates/it/trailer.tmpl
-#usr/share/cups/templates/it/users.tmpl
-#usr/share/cups/templates/ja
-#usr/share/cups/templates/ja/add-class.tmpl
-#usr/share/cups/templates/ja/add-printer.tmpl
-#usr/share/cups/templates/ja/add-rss-subscription.tmpl
-#usr/share/cups/templates/ja/admin.tmpl
-#usr/share/cups/templates/ja/choose-device.tmpl
-#usr/share/cups/templates/ja/choose-make.tmpl
-#usr/share/cups/templates/ja/choose-model.tmpl
-#usr/share/cups/templates/ja/choose-serial.tmpl
-#usr/share/cups/templates/ja/choose-uri.tmpl
-#usr/share/cups/templates/ja/class-added.tmpl
-#usr/share/cups/templates/ja/class-confirm.tmpl
-#usr/share/cups/templates/ja/class-deleted.tmpl
-#usr/share/cups/templates/ja/class-jobs-header.tmpl
-#usr/share/cups/templates/ja/class-modified.tmpl
-#usr/share/cups/templates/ja/class.tmpl
-#usr/share/cups/templates/ja/classes-header.tmpl
-#usr/share/cups/templates/ja/classes.tmpl
-#usr/share/cups/templates/ja/command.tmpl
-#usr/share/cups/templates/ja/edit-config.tmpl
-#usr/share/cups/templates/ja/error-op.tmpl
-#usr/share/cups/templates/ja/error.tmpl
-#usr/share/cups/templates/ja/header.tmpl
-#usr/share/cups/templates/ja/help-header.tmpl
-#usr/share/cups/templates/ja/help-printable.tmpl
-#usr/share/cups/templates/ja/help-trailer.tmpl
-#usr/share/cups/templates/ja/job-cancel.tmpl
-#usr/share/cups/templates/ja/job-hold.tmpl
-#usr/share/cups/templates/ja/job-move.tmpl
-#usr/share/cups/templates/ja/job-moved.tmpl
-#usr/share/cups/templates/ja/job-release.tmpl
-#usr/share/cups/templates/ja/job-restart.tmpl
-#usr/share/cups/templates/ja/jobs-header.tmpl
-#usr/share/cups/templates/ja/jobs.tmpl
-#usr/share/cups/templates/ja/list-available-printers.tmpl
-#usr/share/cups/templates/ja/modify-class.tmpl
-#usr/share/cups/templates/ja/modify-printer.tmpl
-#usr/share/cups/templates/ja/norestart.tmpl
-#usr/share/cups/templates/ja/option-boolean.tmpl
-#usr/share/cups/templates/ja/option-conflict.tmpl
-#usr/share/cups/templates/ja/option-header.tmpl
-#usr/share/cups/templates/ja/option-pickmany.tmpl
-#usr/share/cups/templates/ja/option-pickone.tmpl
-#usr/share/cups/templates/ja/option-trailer.tmpl
-#usr/share/cups/templates/ja/pager.tmpl
-#usr/share/cups/templates/ja/printer-accept.tmpl
-#usr/share/cups/templates/ja/printer-added.tmpl
-#usr/share/cups/templates/ja/printer-configured.tmpl
-#usr/share/cups/templates/ja/printer-confirm.tmpl
-#usr/share/cups/templates/ja/printer-default.tmpl
-#usr/share/cups/templates/ja/printer-deleted.tmpl
-#usr/share/cups/templates/ja/printer-jobs-header.tmpl
-#usr/share/cups/templates/ja/printer-modified.tmpl
-#usr/share/cups/templates/ja/printer-purge.tmpl
-#usr/share/cups/templates/ja/printer-reject.tmpl
-#usr/share/cups/templates/ja/printer-start.tmpl
-#usr/share/cups/templates/ja/printer-stop.tmpl
-#usr/share/cups/templates/ja/printer.tmpl
-#usr/share/cups/templates/ja/printers-header.tmpl
-#usr/share/cups/templates/ja/printers.tmpl
-#usr/share/cups/templates/ja/restart.tmpl
-#usr/share/cups/templates/ja/samba-export.tmpl
-#usr/share/cups/templates/ja/samba-exported.tmpl
-#usr/share/cups/templates/ja/search.tmpl
-#usr/share/cups/templates/ja/set-printer-options-header.tmpl
-#usr/share/cups/templates/ja/set-printer-options-trailer.tmpl
-#usr/share/cups/templates/ja/subscription-added.tmpl
-#usr/share/cups/templates/ja/subscription-canceled.tmpl
-#usr/share/cups/templates/ja/test-page.tmpl
-#usr/share/cups/templates/ja/trailer.tmpl
-#usr/share/cups/templates/ja/users.tmpl
+usr/share/cups/templates/it
+usr/share/cups/templates/it/add-class.tmpl
+usr/share/cups/templates/it/add-printer.tmpl
+usr/share/cups/templates/it/add-rss-subscription.tmpl
+usr/share/cups/templates/it/admin.tmpl
+usr/share/cups/templates/it/choose-device.tmpl
+usr/share/cups/templates/it/choose-make.tmpl
+usr/share/cups/templates/it/choose-model.tmpl
+usr/share/cups/templates/it/choose-serial.tmpl
+usr/share/cups/templates/it/choose-uri.tmpl
+usr/share/cups/templates/it/class-added.tmpl
+usr/share/cups/templates/it/class-confirm.tmpl
+usr/share/cups/templates/it/class-deleted.tmpl
+usr/share/cups/templates/it/class-jobs-header.tmpl
+usr/share/cups/templates/it/class-modified.tmpl
+usr/share/cups/templates/it/class.tmpl
+usr/share/cups/templates/it/classes-header.tmpl
+usr/share/cups/templates/it/classes.tmpl
+usr/share/cups/templates/it/command.tmpl
+usr/share/cups/templates/it/edit-config.tmpl
+usr/share/cups/templates/it/error-op.tmpl
+usr/share/cups/templates/it/error.tmpl
+usr/share/cups/templates/it/header.tmpl
+usr/share/cups/templates/it/help-header.tmpl
+usr/share/cups/templates/it/help-printable.tmpl
+usr/share/cups/templates/it/help-trailer.tmpl
+usr/share/cups/templates/it/job-cancel.tmpl
+usr/share/cups/templates/it/job-hold.tmpl
+usr/share/cups/templates/it/job-move.tmpl
+usr/share/cups/templates/it/job-moved.tmpl
+usr/share/cups/templates/it/job-release.tmpl
+usr/share/cups/templates/it/job-restart.tmpl
+usr/share/cups/templates/it/jobs-header.tmpl
+usr/share/cups/templates/it/jobs.tmpl
+usr/share/cups/templates/it/list-available-printers.tmpl
+usr/share/cups/templates/it/modify-class.tmpl
+usr/share/cups/templates/it/modify-printer.tmpl
+usr/share/cups/templates/it/norestart.tmpl
+usr/share/cups/templates/it/option-boolean.tmpl
+usr/share/cups/templates/it/option-conflict.tmpl
+usr/share/cups/templates/it/option-header.tmpl
+usr/share/cups/templates/it/option-pickmany.tmpl
+usr/share/cups/templates/it/option-pickone.tmpl
+usr/share/cups/templates/it/option-trailer.tmpl
+usr/share/cups/templates/it/pager.tmpl
+usr/share/cups/templates/it/printer-accept.tmpl
+usr/share/cups/templates/it/printer-added.tmpl
+usr/share/cups/templates/it/printer-configured.tmpl
+usr/share/cups/templates/it/printer-confirm.tmpl
+usr/share/cups/templates/it/printer-default.tmpl
+usr/share/cups/templates/it/printer-deleted.tmpl
+usr/share/cups/templates/it/printer-jobs-header.tmpl
+usr/share/cups/templates/it/printer-modified.tmpl
+usr/share/cups/templates/it/printer-purge.tmpl
+usr/share/cups/templates/it/printer-reject.tmpl
+usr/share/cups/templates/it/printer-start.tmpl
+usr/share/cups/templates/it/printer-stop.tmpl
+usr/share/cups/templates/it/printer.tmpl
+usr/share/cups/templates/it/printers-header.tmpl
+usr/share/cups/templates/it/printers.tmpl
+usr/share/cups/templates/it/restart.tmpl
+usr/share/cups/templates/it/samba-export.tmpl
+usr/share/cups/templates/it/samba-exported.tmpl
+usr/share/cups/templates/it/search.tmpl
+usr/share/cups/templates/it/set-printer-options-header.tmpl
+usr/share/cups/templates/it/set-printer-options-trailer.tmpl
+usr/share/cups/templates/it/subscription-added.tmpl
+usr/share/cups/templates/it/subscription-canceled.tmpl
+usr/share/cups/templates/it/test-page.tmpl
+usr/share/cups/templates/it/trailer.tmpl
+usr/share/cups/templates/it/users.tmpl
+usr/share/cups/templates/ja
+usr/share/cups/templates/ja/add-class.tmpl
+usr/share/cups/templates/ja/add-printer.tmpl
+usr/share/cups/templates/ja/add-rss-subscription.tmpl
+usr/share/cups/templates/ja/admin.tmpl
+usr/share/cups/templates/ja/choose-device.tmpl
+usr/share/cups/templates/ja/choose-make.tmpl
+usr/share/cups/templates/ja/choose-model.tmpl
+usr/share/cups/templates/ja/choose-serial.tmpl
+usr/share/cups/templates/ja/choose-uri.tmpl
+usr/share/cups/templates/ja/class-added.tmpl
+usr/share/cups/templates/ja/class-confirm.tmpl
+usr/share/cups/templates/ja/class-deleted.tmpl
+usr/share/cups/templates/ja/class-jobs-header.tmpl
+usr/share/cups/templates/ja/class-modified.tmpl
+usr/share/cups/templates/ja/class.tmpl
+usr/share/cups/templates/ja/classes-header.tmpl
+usr/share/cups/templates/ja/classes.tmpl
+usr/share/cups/templates/ja/command.tmpl
+usr/share/cups/templates/ja/edit-config.tmpl
+usr/share/cups/templates/ja/error-op.tmpl
+usr/share/cups/templates/ja/error.tmpl
+usr/share/cups/templates/ja/header.tmpl
+usr/share/cups/templates/ja/help-header.tmpl
+usr/share/cups/templates/ja/help-printable.tmpl
+usr/share/cups/templates/ja/help-trailer.tmpl
+usr/share/cups/templates/ja/job-cancel.tmpl
+usr/share/cups/templates/ja/job-hold.tmpl
+usr/share/cups/templates/ja/job-move.tmpl
+usr/share/cups/templates/ja/job-moved.tmpl
+usr/share/cups/templates/ja/job-release.tmpl
+usr/share/cups/templates/ja/job-restart.tmpl
+usr/share/cups/templates/ja/jobs-header.tmpl
+usr/share/cups/templates/ja/jobs.tmpl
+usr/share/cups/templates/ja/list-available-printers.tmpl
+usr/share/cups/templates/ja/modify-class.tmpl
+usr/share/cups/templates/ja/modify-printer.tmpl
+usr/share/cups/templates/ja/norestart.tmpl
+usr/share/cups/templates/ja/option-boolean.tmpl
+usr/share/cups/templates/ja/option-conflict.tmpl
+usr/share/cups/templates/ja/option-header.tmpl
+usr/share/cups/templates/ja/option-pickmany.tmpl
+usr/share/cups/templates/ja/option-pickone.tmpl
+usr/share/cups/templates/ja/option-trailer.tmpl
+usr/share/cups/templates/ja/pager.tmpl
+usr/share/cups/templates/ja/printer-accept.tmpl
+usr/share/cups/templates/ja/printer-added.tmpl
+usr/share/cups/templates/ja/printer-configured.tmpl
+usr/share/cups/templates/ja/printer-confirm.tmpl
+usr/share/cups/templates/ja/printer-default.tmpl
+usr/share/cups/templates/ja/printer-deleted.tmpl
+usr/share/cups/templates/ja/printer-jobs-header.tmpl
+usr/share/cups/templates/ja/printer-modified.tmpl
+usr/share/cups/templates/ja/printer-purge.tmpl
+usr/share/cups/templates/ja/printer-reject.tmpl
+usr/share/cups/templates/ja/printer-start.tmpl
+usr/share/cups/templates/ja/printer-stop.tmpl
+usr/share/cups/templates/ja/printer.tmpl
+usr/share/cups/templates/ja/printers-header.tmpl
+usr/share/cups/templates/ja/printers.tmpl
+usr/share/cups/templates/ja/restart.tmpl
+usr/share/cups/templates/ja/samba-export.tmpl
+usr/share/cups/templates/ja/samba-exported.tmpl
+usr/share/cups/templates/ja/search.tmpl
+usr/share/cups/templates/ja/set-printer-options-header.tmpl
+usr/share/cups/templates/ja/set-printer-options-trailer.tmpl
+usr/share/cups/templates/ja/subscription-added.tmpl
+usr/share/cups/templates/ja/subscription-canceled.tmpl
+usr/share/cups/templates/ja/test-page.tmpl
+usr/share/cups/templates/ja/trailer.tmpl
+usr/share/cups/templates/ja/users.tmpl
 usr/share/cups/templates/job-cancel.tmpl
 usr/share/cups/templates/job-hold.tmpl
 usr/share/cups/templates/job-move.tmpl
@@ -666,10 +638,10 @@ usr/share/cups/templates/job-release.tmpl
 usr/share/cups/templates/job-restart.tmpl
 usr/share/cups/templates/jobs-header.tmpl
 usr/share/cups/templates/jobs.tmpl
-#usr/share/cups/templates/list-available-printers.tmpl
+usr/share/cups/templates/list-available-printers.tmpl
 usr/share/cups/templates/modify-class.tmpl
 usr/share/cups/templates/modify-printer.tmpl
-#usr/share/cups/templates/norestart.tmpl
+usr/share/cups/templates/norestart.tmpl
 usr/share/cups/templates/option-boolean.tmpl
 usr/share/cups/templates/option-conflict.tmpl
 usr/share/cups/templates/option-header.tmpl
@@ -677,77 +649,6 @@ usr/share/cups/templates/option-pickmany.tmpl
 usr/share/cups/templates/option-pickone.tmpl
 usr/share/cups/templates/option-trailer.tmpl
 usr/share/cups/templates/pager.tmpl
-#usr/share/cups/templates/pl
-#usr/share/cups/templates/pl/add-class.tmpl
-#usr/share/cups/templates/pl/add-printer.tmpl
-#usr/share/cups/templates/pl/add-rss-subscription.tmpl
-#usr/share/cups/templates/pl/admin.tmpl
-#usr/share/cups/templates/pl/choose-device.tmpl
-#usr/share/cups/templates/pl/choose-make.tmpl
-#usr/share/cups/templates/pl/choose-model.tmpl
-#usr/share/cups/templates/pl/choose-serial.tmpl
-#usr/share/cups/templates/pl/choose-uri.tmpl
-#usr/share/cups/templates/pl/class-added.tmpl
-#usr/share/cups/templates/pl/class-confirm.tmpl
-#usr/share/cups/templates/pl/class-deleted.tmpl
-#usr/share/cups/templates/pl/class-jobs-header.tmpl
-#usr/share/cups/templates/pl/class-modified.tmpl
-#usr/share/cups/templates/pl/class.tmpl
-#usr/share/cups/templates/pl/classes-header.tmpl
-#usr/share/cups/templates/pl/classes.tmpl
-#usr/share/cups/templates/pl/command.tmpl
-#usr/share/cups/templates/pl/edit-config.tmpl
-#usr/share/cups/templates/pl/error-op.tmpl
-#usr/share/cups/templates/pl/error.tmpl
-#usr/share/cups/templates/pl/header.tmpl
-#usr/share/cups/templates/pl/help-header.tmpl
-#usr/share/cups/templates/pl/help-printable.tmpl
-#usr/share/cups/templates/pl/help-trailer.tmpl
-#usr/share/cups/templates/pl/job-cancel.tmpl
-#usr/share/cups/templates/pl/job-hold.tmpl
-#usr/share/cups/templates/pl/job-move.tmpl
-#usr/share/cups/templates/pl/job-moved.tmpl
-#usr/share/cups/templates/pl/job-release.tmpl
-#usr/share/cups/templates/pl/job-restart.tmpl
-#usr/share/cups/templates/pl/jobs-header.tmpl
-#usr/share/cups/templates/pl/jobs.tmpl
-#usr/share/cups/templates/pl/list-available-printers.tmpl
-#usr/share/cups/templates/pl/modify-class.tmpl
-#usr/share/cups/templates/pl/modify-printer.tmpl
-#usr/share/cups/templates/pl/norestart.tmpl
-#usr/share/cups/templates/pl/option-boolean.tmpl
-#usr/share/cups/templates/pl/option-conflict.tmpl
-#usr/share/cups/templates/pl/option-header.tmpl
-#usr/share/cups/templates/pl/option-pickmany.tmpl
-#usr/share/cups/templates/pl/option-pickone.tmpl
-#usr/share/cups/templates/pl/option-trailer.tmpl
-#usr/share/cups/templates/pl/pager.tmpl
-#usr/share/cups/templates/pl/printer-accept.tmpl
-#usr/share/cups/templates/pl/printer-added.tmpl
-#usr/share/cups/templates/pl/printer-configured.tmpl
-#usr/share/cups/templates/pl/printer-confirm.tmpl
-#usr/share/cups/templates/pl/printer-default.tmpl
-#usr/share/cups/templates/pl/printer-deleted.tmpl
-#usr/share/cups/templates/pl/printer-jobs-header.tmpl
-#usr/share/cups/templates/pl/printer-modified.tmpl
-#usr/share/cups/templates/pl/printer-purge.tmpl
-#usr/share/cups/templates/pl/printer-reject.tmpl
-#usr/share/cups/templates/pl/printer-start.tmpl
-#usr/share/cups/templates/pl/printer-stop.tmpl
-#usr/share/cups/templates/pl/printer.tmpl
-#usr/share/cups/templates/pl/printers-header.tmpl
-#usr/share/cups/templates/pl/printers.tmpl
-#usr/share/cups/templates/pl/restart.tmpl
-#usr/share/cups/templates/pl/samba-export.tmpl
-#usr/share/cups/templates/pl/samba-exported.tmpl
-#usr/share/cups/templates/pl/search.tmpl
-#usr/share/cups/templates/pl/set-printer-options-header.tmpl
-#usr/share/cups/templates/pl/set-printer-options-trailer.tmpl
-#usr/share/cups/templates/pl/subscription-added.tmpl
-#usr/share/cups/templates/pl/subscription-canceled.tmpl
-#usr/share/cups/templates/pl/test-page.tmpl
-#usr/share/cups/templates/pl/trailer.tmpl
-#usr/share/cups/templates/pl/users.tmpl
 usr/share/cups/templates/printer-accept.tmpl
 usr/share/cups/templates/printer-added.tmpl
 usr/share/cups/templates/printer-configured.tmpl
@@ -764,234 +665,221 @@ usr/share/cups/templates/printer.tmpl
 usr/share/cups/templates/printers-header.tmpl
 usr/share/cups/templates/printers.tmpl
 usr/share/cups/templates/restart.tmpl
-#usr/share/cups/templates/ru
-#usr/share/cups/templates/ru/add-class.tmpl
-#usr/share/cups/templates/ru/add-printer.tmpl
-#usr/share/cups/templates/ru/add-rss-subscription.tmpl
-#usr/share/cups/templates/ru/admin.tmpl
-#usr/share/cups/templates/ru/choose-device.tmpl
-#usr/share/cups/templates/ru/choose-make.tmpl
-#usr/share/cups/templates/ru/choose-model.tmpl
-#usr/share/cups/templates/ru/choose-serial.tmpl
-#usr/share/cups/templates/ru/choose-uri.tmpl
-#usr/share/cups/templates/ru/class-added.tmpl
-#usr/share/cups/templates/ru/class-confirm.tmpl
-#usr/share/cups/templates/ru/class-deleted.tmpl
-#usr/share/cups/templates/ru/class-jobs-header.tmpl
-#usr/share/cups/templates/ru/class-modified.tmpl
-#usr/share/cups/templates/ru/class.tmpl
-#usr/share/cups/templates/ru/classes-header.tmpl
-#usr/share/cups/templates/ru/classes.tmpl
-#usr/share/cups/templates/ru/command.tmpl
-#usr/share/cups/templates/ru/edit-config.tmpl
-#usr/share/cups/templates/ru/error-op.tmpl
-#usr/share/cups/templates/ru/error.tmpl
-#usr/share/cups/templates/ru/header.tmpl
-#usr/share/cups/templates/ru/help-header.tmpl
-#usr/share/cups/templates/ru/help-printable.tmpl
-#usr/share/cups/templates/ru/help-trailer.tmpl
-#usr/share/cups/templates/ru/job-cancel.tmpl
-#usr/share/cups/templates/ru/job-hold.tmpl
-#usr/share/cups/templates/ru/job-move.tmpl
-#usr/share/cups/templates/ru/job-moved.tmpl
-#usr/share/cups/templates/ru/job-release.tmpl
-#usr/share/cups/templates/ru/job-restart.tmpl
-#usr/share/cups/templates/ru/jobs-header.tmpl
-#usr/share/cups/templates/ru/jobs.tmpl
-#usr/share/cups/templates/ru/list-available-printers.tmpl
-#usr/share/cups/templates/ru/modify-class.tmpl
-#usr/share/cups/templates/ru/modify-printer.tmpl
-#usr/share/cups/templates/ru/norestart.tmpl
-#usr/share/cups/templates/ru/option-boolean.tmpl
-#usr/share/cups/templates/ru/option-conflict.tmpl
-#usr/share/cups/templates/ru/option-header.tmpl
-#usr/share/cups/templates/ru/option-pickmany.tmpl
-#usr/share/cups/templates/ru/option-pickone.tmpl
-#usr/share/cups/templates/ru/option-trailer.tmpl
-#usr/share/cups/templates/ru/pager.tmpl
-#usr/share/cups/templates/ru/printer-accept.tmpl
-#usr/share/cups/templates/ru/printer-added.tmpl
-#usr/share/cups/templates/ru/printer-configured.tmpl
-#usr/share/cups/templates/ru/printer-confirm.tmpl
-#usr/share/cups/templates/ru/printer-default.tmpl
-#usr/share/cups/templates/ru/printer-deleted.tmpl
-#usr/share/cups/templates/ru/printer-jobs-header.tmpl
-#usr/share/cups/templates/ru/printer-modified.tmpl
-#usr/share/cups/templates/ru/printer-purge.tmpl
-#usr/share/cups/templates/ru/printer-reject.tmpl
-#usr/share/cups/templates/ru/printer-start.tmpl
-#usr/share/cups/templates/ru/printer-stop.tmpl
-#usr/share/cups/templates/ru/printer.tmpl
-#usr/share/cups/templates/ru/printers-header.tmpl
-#usr/share/cups/templates/ru/printers.tmpl
-#usr/share/cups/templates/ru/restart.tmpl
-#usr/share/cups/templates/ru/samba-export.tmpl
-#usr/share/cups/templates/ru/samba-exported.tmpl
-#usr/share/cups/templates/ru/search.tmpl
-#usr/share/cups/templates/ru/set-printer-options-header.tmpl
-#usr/share/cups/templates/ru/set-printer-options-trailer.tmpl
-#usr/share/cups/templates/ru/subscription-added.tmpl
-#usr/share/cups/templates/ru/subscription-canceled.tmpl
-#usr/share/cups/templates/ru/test-page.tmpl
-#usr/share/cups/templates/ru/trailer.tmpl
-#usr/share/cups/templates/ru/users.tmpl
+usr/share/cups/templates/ru
+usr/share/cups/templates/ru/add-class.tmpl
+usr/share/cups/templates/ru/add-printer.tmpl
+usr/share/cups/templates/ru/add-rss-subscription.tmpl
+usr/share/cups/templates/ru/admin.tmpl
+usr/share/cups/templates/ru/choose-device.tmpl
+usr/share/cups/templates/ru/choose-make.tmpl
+usr/share/cups/templates/ru/choose-model.tmpl
+usr/share/cups/templates/ru/choose-serial.tmpl
+usr/share/cups/templates/ru/choose-uri.tmpl
+usr/share/cups/templates/ru/class-added.tmpl
+usr/share/cups/templates/ru/class-confirm.tmpl
+usr/share/cups/templates/ru/class-deleted.tmpl
+usr/share/cups/templates/ru/class-jobs-header.tmpl
+usr/share/cups/templates/ru/class-modified.tmpl
+usr/share/cups/templates/ru/class.tmpl
+usr/share/cups/templates/ru/classes-header.tmpl
+usr/share/cups/templates/ru/classes.tmpl
+usr/share/cups/templates/ru/command.tmpl
+usr/share/cups/templates/ru/edit-config.tmpl
+usr/share/cups/templates/ru/error-op.tmpl
+usr/share/cups/templates/ru/error.tmpl
+usr/share/cups/templates/ru/header.tmpl
+usr/share/cups/templates/ru/help-header.tmpl
+usr/share/cups/templates/ru/help-printable.tmpl
+usr/share/cups/templates/ru/help-trailer.tmpl
+usr/share/cups/templates/ru/job-cancel.tmpl
+usr/share/cups/templates/ru/job-hold.tmpl
+usr/share/cups/templates/ru/job-move.tmpl
+usr/share/cups/templates/ru/job-moved.tmpl
+usr/share/cups/templates/ru/job-release.tmpl
+usr/share/cups/templates/ru/job-restart.tmpl
+usr/share/cups/templates/ru/jobs-header.tmpl
+usr/share/cups/templates/ru/jobs.tmpl
+usr/share/cups/templates/ru/list-available-printers.tmpl
+usr/share/cups/templates/ru/modify-class.tmpl
+usr/share/cups/templates/ru/modify-printer.tmpl
+usr/share/cups/templates/ru/norestart.tmpl
+usr/share/cups/templates/ru/option-boolean.tmpl
+usr/share/cups/templates/ru/option-conflict.tmpl
+usr/share/cups/templates/ru/option-header.tmpl
+usr/share/cups/templates/ru/option-pickmany.tmpl
+usr/share/cups/templates/ru/option-pickone.tmpl
+usr/share/cups/templates/ru/option-trailer.tmpl
+usr/share/cups/templates/ru/pager.tmpl
+usr/share/cups/templates/ru/printer-accept.tmpl
+usr/share/cups/templates/ru/printer-added.tmpl
+usr/share/cups/templates/ru/printer-configured.tmpl
+usr/share/cups/templates/ru/printer-confirm.tmpl
+usr/share/cups/templates/ru/printer-default.tmpl
+usr/share/cups/templates/ru/printer-deleted.tmpl
+usr/share/cups/templates/ru/printer-jobs-header.tmpl
+usr/share/cups/templates/ru/printer-modified.tmpl
+usr/share/cups/templates/ru/printer-purge.tmpl
+usr/share/cups/templates/ru/printer-reject.tmpl
+usr/share/cups/templates/ru/printer-start.tmpl
+usr/share/cups/templates/ru/printer-stop.tmpl
+usr/share/cups/templates/ru/printer.tmpl
+usr/share/cups/templates/ru/printers-header.tmpl
+usr/share/cups/templates/ru/printers.tmpl
+usr/share/cups/templates/ru/restart.tmpl
+usr/share/cups/templates/ru/samba-export.tmpl
+usr/share/cups/templates/ru/samba-exported.tmpl
+usr/share/cups/templates/ru/search.tmpl
+usr/share/cups/templates/ru/set-printer-options-header.tmpl
+usr/share/cups/templates/ru/set-printer-options-trailer.tmpl
+usr/share/cups/templates/ru/subscription-added.tmpl
+usr/share/cups/templates/ru/subscription-canceled.tmpl
+usr/share/cups/templates/ru/test-page.tmpl
+usr/share/cups/templates/ru/trailer.tmpl
+usr/share/cups/templates/ru/users.tmpl
 usr/share/cups/templates/samba-export.tmpl
 usr/share/cups/templates/samba-exported.tmpl
 usr/share/cups/templates/search.tmpl
 usr/share/cups/templates/set-printer-options-header.tmpl
 usr/share/cups/templates/set-printer-options-trailer.tmpl
-#usr/share/cups/templates/subscription-added.tmpl
-#usr/share/cups/templates/subscription-canceled.tmpl
+usr/share/cups/templates/subscription-added.tmpl
+usr/share/cups/templates/subscription-canceled.tmpl
 usr/share/cups/templates/test-page.tmpl
 usr/share/cups/templates/trailer.tmpl
 usr/share/cups/templates/users.tmpl
-#usr/share/doc/cups
+usr/share/cups/usb
+usr/share/cups/usb/org.cups.usb-quirks
+usr/share/doc/cups
+usr/share/doc/cups/ca
+usr/share/doc/cups/ca/index.html
+usr/share/doc/cups/cs
+usr/share/doc/cups/cs/index.html
 usr/share/doc/cups/cups-printable.css
 usr/share/doc/cups/cups.css
-usr/share/doc/cups/de
-#usr/share/doc/cups/de/index.html
-#usr/share/doc/cups/es
-#usr/share/doc/cups/es/index.html
-#usr/share/doc/cups/eu
-#usr/share/doc/cups/eu/index.html
+usr/share/doc/cups/es
+usr/share/doc/cups/es/index.html
+usr/share/doc/cups/fr
+usr/share/doc/cups/fr/index.html
 usr/share/doc/cups/help
-#usr/share/doc/cups/help/accounting.html
-#usr/share/doc/cups/help/api-array.html
-#usr/share/doc/cups/help/api-cgi.html
-#usr/share/doc/cups/help/api-cups.html
-#usr/share/doc/cups/help/api-driver.html
-#usr/share/doc/cups/help/api-filedir.html
-#usr/share/doc/cups/help/api-filter.html
-#usr/share/doc/cups/help/api-httpipp.html
-#usr/share/doc/cups/help/api-mime.html
-#usr/share/doc/cups/help/api-overview.html
-#usr/share/doc/cups/help/api-ppd.html
-#usr/share/doc/cups/help/api-ppdc.html
-#usr/share/doc/cups/help/api-raster.html
-#usr/share/doc/cups/help/cgi.html
-#usr/share/doc/cups/help/glossary.html
-#usr/share/doc/cups/help/kerberos.html
-#usr/share/doc/cups/help/license.html
-#usr/share/doc/cups/help/man-backend.html
-#usr/share/doc/cups/help/man-cancel.html
-#usr/share/doc/cups/help/man-cups-config.html
-#usr/share/doc/cups/help/man-cups-lpd.html
-#usr/share/doc/cups/help/man-cups-polld.html
-#usr/share/doc/cups/help/man-cupsaccept.html
-#usr/share/doc/cups/help/man-cupsaddsmb.html
-#usr/share/doc/cups/help/man-cupsd.html
-#usr/share/doc/cups/help/man-cupsenable.html
-#usr/share/doc/cups/help/man-cupstestdsc.html
-#usr/share/doc/cups/help/man-cupstestppd.html
-#usr/share/doc/cups/help/man-filter.html
-#usr/share/doc/cups/help/man-lp.html
-#usr/share/doc/cups/help/man-lpadmin.html
-#usr/share/doc/cups/help/man-lpc.html
-#usr/share/doc/cups/help/man-lpinfo.html
-#usr/share/doc/cups/help/man-lpmove.html
-#usr/share/doc/cups/help/man-lpoptions.html
-#usr/share/doc/cups/help/man-lppasswd.html
-#usr/share/doc/cups/help/man-lpq.html
-#usr/share/doc/cups/help/man-lpr.html
-#usr/share/doc/cups/help/man-lprm.html
-#usr/share/doc/cups/help/man-lpstat.html
-#usr/share/doc/cups/help/man-mime.convs.html
-#usr/share/doc/cups/help/man-mime.types.html
-#usr/share/doc/cups/help/man-notifier.html
-#usr/share/doc/cups/help/man-ppdc.html
-#usr/share/doc/cups/help/man-ppdhtml.html
-#usr/share/doc/cups/help/man-ppdi.html
-#usr/share/doc/cups/help/man-ppdmerge.html
-#usr/share/doc/cups/help/man-ppdpo.html
-#usr/share/doc/cups/help/network.html
-#usr/share/doc/cups/help/options.html
-#usr/share/doc/cups/help/overview.html
-#usr/share/doc/cups/help/policies.html
-#usr/share/doc/cups/help/postscript-driver.html
-#usr/share/doc/cups/help/ppd-compiler.html
-#usr/share/doc/cups/help/raster-driver.html
-#usr/share/doc/cups/help/ref-access_log.html
-#usr/share/doc/cups/help/ref-classes-conf.html
-#usr/share/doc/cups/help/ref-client-conf.html
-#usr/share/doc/cups/help/ref-cupsd-conf.html
-#usr/share/doc/cups/help/ref-error_log.html
-#usr/share/doc/cups/help/ref-mailto-conf.html
-#usr/share/doc/cups/help/ref-page_log.html
-#usr/share/doc/cups/help/ref-ppdcfile.html
-#usr/share/doc/cups/help/ref-printers-conf.html
-#usr/share/doc/cups/help/ref-snmp-conf.html
-#usr/share/doc/cups/help/ref-subscriptions-conf.html
-#usr/share/doc/cups/help/security.html
-#usr/share/doc/cups/help/sharing.html
-#usr/share/doc/cups/help/spec-banner.html
-#usr/share/doc/cups/help/spec-browsing.html
-#usr/share/doc/cups/help/spec-cmp.html
-#usr/share/doc/cups/help/spec-command.html
-#usr/share/doc/cups/help/spec-design.html
-#usr/share/doc/cups/help/spec-ipp.html
-#usr/share/doc/cups/help/spec-pdf.html
-#usr/share/doc/cups/help/spec-postscript.html
-#usr/share/doc/cups/help/spec-ppd.html
-#usr/share/doc/cups/help/spec-raster.html
-#usr/share/doc/cups/help/spec-stp.html
-#usr/share/doc/cups/help/standard.html
-#usr/share/doc/cups/help/translation.html
-#usr/share/doc/cups/help/whatsnew.html
-#usr/share/doc/cups/id
-#usr/share/doc/cups/id/index.html
+usr/share/doc/cups/help/accounting.html
+usr/share/doc/cups/help/api-array.html
+usr/share/doc/cups/help/api-cgi.html
+usr/share/doc/cups/help/api-cups.html
+usr/share/doc/cups/help/api-driver.html
+usr/share/doc/cups/help/api-filedir.html
+usr/share/doc/cups/help/api-filter.html
+usr/share/doc/cups/help/api-httpipp.html
+usr/share/doc/cups/help/api-mime.html
+usr/share/doc/cups/help/api-overview.html
+usr/share/doc/cups/help/api-ppd.html
+usr/share/doc/cups/help/api-ppdc.html
+usr/share/doc/cups/help/api-raster.html
+usr/share/doc/cups/help/cgi.html
+usr/share/doc/cups/help/glossary.html
+usr/share/doc/cups/help/kerberos.html
+usr/share/doc/cups/help/license.html
+usr/share/doc/cups/help/man-backend.html
+usr/share/doc/cups/help/man-cancel.html
+usr/share/doc/cups/help/man-cups-config.html
+usr/share/doc/cups/help/man-cups-lpd.html
+usr/share/doc/cups/help/man-cups-snmp.html
+usr/share/doc/cups/help/man-cupsaccept.html
+usr/share/doc/cups/help/man-cupsaddsmb.html
+usr/share/doc/cups/help/man-cupsd.html
+usr/share/doc/cups/help/man-cupsenable.html
+usr/share/doc/cups/help/man-cupstestdsc.html
+usr/share/doc/cups/help/man-cupstestppd.html
+usr/share/doc/cups/help/man-filter.html
+usr/share/doc/cups/help/man-ipptool.html
+usr/share/doc/cups/help/man-ipptoolfile.html
+usr/share/doc/cups/help/man-lp.html
+usr/share/doc/cups/help/man-lpadmin.html
+usr/share/doc/cups/help/man-lpc.html
+usr/share/doc/cups/help/man-lpinfo.html
+usr/share/doc/cups/help/man-lpmove.html
+usr/share/doc/cups/help/man-lpoptions.html
+usr/share/doc/cups/help/man-lppasswd.html
+usr/share/doc/cups/help/man-lpq.html
+usr/share/doc/cups/help/man-lpr.html
+usr/share/doc/cups/help/man-lprm.html
+usr/share/doc/cups/help/man-lpstat.html
+usr/share/doc/cups/help/man-mime.convs.html
+usr/share/doc/cups/help/man-mime.types.html
+usr/share/doc/cups/help/man-notifier.html
+usr/share/doc/cups/help/man-ppdc.html
+usr/share/doc/cups/help/man-ppdhtml.html
+usr/share/doc/cups/help/man-ppdi.html
+usr/share/doc/cups/help/man-ppdmerge.html
+usr/share/doc/cups/help/man-ppdpo.html
+usr/share/doc/cups/help/network.html
+usr/share/doc/cups/help/options.html
+usr/share/doc/cups/help/overview.html
+usr/share/doc/cups/help/policies.html
+usr/share/doc/cups/help/postscript-driver.html
+usr/share/doc/cups/help/ppd-compiler.html
+usr/share/doc/cups/help/raster-driver.html
+usr/share/doc/cups/help/ref-access_log.html
+usr/share/doc/cups/help/ref-classes-conf.html
+usr/share/doc/cups/help/ref-client-conf.html
+usr/share/doc/cups/help/ref-cups-files-conf.html
+usr/share/doc/cups/help/ref-cupsd-conf.html
+usr/share/doc/cups/help/ref-error_log.html
+usr/share/doc/cups/help/ref-mailto-conf.html
+usr/share/doc/cups/help/ref-page_log.html
+usr/share/doc/cups/help/ref-ppdcfile.html
+usr/share/doc/cups/help/ref-printers-conf.html
+usr/share/doc/cups/help/ref-snmp-conf.html
+usr/share/doc/cups/help/ref-subscriptions-conf.html
+usr/share/doc/cups/help/security.html
+usr/share/doc/cups/help/sharing.html
+usr/share/doc/cups/help/spec-banner.html
+usr/share/doc/cups/help/spec-cmp.html
+usr/share/doc/cups/help/spec-command.html
+usr/share/doc/cups/help/spec-design.html
+usr/share/doc/cups/help/spec-ipp.html
+usr/share/doc/cups/help/spec-pdf.html
+usr/share/doc/cups/help/spec-postscript.html
+usr/share/doc/cups/help/spec-ppd.html
+usr/share/doc/cups/help/spec-raster.html
+usr/share/doc/cups/help/spec-stp.html
+usr/share/doc/cups/help/translation.html
+usr/share/doc/cups/help/whatsnew.html
 usr/share/doc/cups/images
-#usr/share/doc/cups/images/color-wheel.png
-#usr/share/doc/cups/images/cups-block-diagram.png
-#usr/share/doc/cups/images/cups-command-chain.png
-#usr/share/doc/cups/images/cups-icon.png
-#usr/share/doc/cups/images/cups-postscript-chain.png
-#usr/share/doc/cups/images/cups-raster-chain.png
-#usr/share/doc/cups/images/cups.png
-#usr/share/doc/cups/images/generic.png
-#usr/share/doc/cups/images/left.gif
-#usr/share/doc/cups/images/raster-organization.png
-#usr/share/doc/cups/images/raster.png
-#usr/share/doc/cups/images/right.gif
-#usr/share/doc/cups/images/sample-image.png
-#usr/share/doc/cups/images/sel.gif
-#usr/share/doc/cups/images/smiley.jpg
-#usr/share/doc/cups/images/unsel.gif
-#usr/share/doc/cups/images/wait.gif
+usr/share/doc/cups/images/color-wheel.png
+usr/share/doc/cups/images/cups-block-diagram.png
+usr/share/doc/cups/images/cups-command-chain.png
+usr/share/doc/cups/images/cups-icon.png
+usr/share/doc/cups/images/cups-postscript-chain.png
+usr/share/doc/cups/images/cups-raster-chain.png
+usr/share/doc/cups/images/cups.png
+usr/share/doc/cups/images/left.gif
+usr/share/doc/cups/images/raster-organization.png
+usr/share/doc/cups/images/raster.png
+usr/share/doc/cups/images/right.gif
+usr/share/doc/cups/images/sample-image.png
+usr/share/doc/cups/images/sel.gif
+usr/share/doc/cups/images/smiley.jpg
+usr/share/doc/cups/images/unsel.gif
+usr/share/doc/cups/images/wait.gif
 usr/share/doc/cups/index.html
-#usr/share/doc/cups/it
-#usr/share/doc/cups/it/index.html
-#usr/share/doc/cups/ja
-#usr/share/doc/cups/ja/index.html
-#usr/share/doc/cups/pl
-#usr/share/doc/cups/pl/index.html
+usr/share/doc/cups/it
+usr/share/doc/cups/it/index.html
+usr/share/doc/cups/ja
+usr/share/doc/cups/ja/index.html
 usr/share/doc/cups/robots.txt
-#usr/share/doc/cups/ru
-#usr/share/doc/cups/ru/index.html
-#usr/share/locale/da/cups_da.po
-#usr/share/locale/de/cups_de.po
-#usr/share/locale/es/cups_es.po
-#usr/share/locale/eu/cups_eu.po
-#usr/share/locale/fi/cups_fi.po
-#usr/share/locale/fr/cups_fr.po
-#usr/share/locale/id/cups_id.po
-#usr/share/locale/it/cups_it.po
-#usr/share/locale/ja/cups_ja.po
-#usr/share/locale/ko/cups_ko.po
-#usr/share/locale/nl/cups_nl.po
-#usr/share/locale/no
-#usr/share/locale/no/cups_no.po
-#usr/share/locale/pl/cups_pl.po
-#usr/share/locale/pt/cups_pt.po
-#usr/share/locale/pt_BR/cups_pt_BR.po
-#usr/share/locale/ru/cups_ru.po
-#usr/share/locale/sv/cups_sv.po
-#usr/share/locale/zh
-#usr/share/locale/zh/cups_zh.po
-#usr/share/locale/zh_TW/cups_zh_TW.po
+usr/share/doc/cups/ru
+usr/share/doc/cups/ru/index.html
+usr/share/locale/ca/cups_ca.po
+usr/share/locale/cs/cups_cs.po
+usr/share/locale/es/cups_es.po
+usr/share/locale/fr/cups_fr.po
+usr/share/locale/it/cups_it.po
+usr/share/locale/ja/cups_ja.po
+usr/share/locale/ru/cups_ru.po
 #usr/share/man/man1/cancel.1.gz
 #usr/share/man/man1/cups-config.1.gz
 #usr/share/man/man1/cupstestdsc.1.gz
 #usr/share/man/man1/cupstestppd.1.gz
+#usr/share/man/man1/ipptool.1.gz
 #usr/share/man/man1/lp.1.gz
 #usr/share/man/man1/lpoptions.1.gz
 #usr/share/man/man1/lppasswd.1.gz
@@ -1006,8 +894,10 @@ usr/share/doc/cups/robots.txt
 #usr/share/man/man1/ppdpo.1.gz
 #usr/share/man/man5/classes.conf.5.gz
 #usr/share/man/man5/client.conf.5.gz
+#usr/share/man/man5/cups-files.conf.5.gz
 #usr/share/man/man5/cups-snmp.conf.5.gz
 #usr/share/man/man5/cupsd.conf.5.gz
+#usr/share/man/man5/ipptoolfile.5.gz
 #usr/share/man/man5/mailto.conf.5.gz
 #usr/share/man/man5/mime.convs.5.gz
 #usr/share/man/man5/mime.types.5.gz
@@ -1021,7 +911,7 @@ usr/share/doc/cups/robots.txt
 #usr/share/man/man8/cups-deviced.8.gz
 #usr/share/man/man8/cups-driverd.8.gz
 #usr/share/man/man8/cups-lpd.8.gz
-#usr/share/man/man8/cups-polld.8.gz
+#usr/share/man/man8/cups-snmp.8.gz
 #usr/share/man/man8/cupsaccept.8.gz
 #usr/share/man/man8/cupsaddsmb.8.gz
 #usr/share/man/man8/cupsctl.8.gz
@@ -1036,8 +926,9 @@ usr/share/doc/cups/robots.txt
 #usr/share/man/man8/lpmove.8.gz
 #usr/share/man/man8/reject.8.gz
 var/cache/cups
-#var/cache/cups/rss
+var/cache/cups/rss
 #var/ipfire/cups
+var/ipfire/cups/cups-files.conf
 var/ipfire/cups/cupsd.conf
 #var/ipfire/cups/cupsd.conf.default
 var/ipfire/cups/interfaces
@@ -1049,4 +940,3 @@ var/run/cups
 var/run/cups/certs
 var/spool/cups
 var/spool/cups/tmp
-etc/rc.d/init.d/cups
index 589c9e33dc172cc4948fcd254e961015d3898548..896eb167b7d7bfe52c81a2dd0f66a73db62184ed 100644 (file)
@@ -1,20 +1,21 @@
 #etc/foomatic
+etc/foomatic/defaultspooler
 etc/foomatic/direct
 etc/foomatic/filter.conf
-#etc/foomatic/filter.conf.sample
 usr/bin/foomatic-combo-xml
 usr/bin/foomatic-compiledb
 usr/bin/foomatic-configure
 usr/bin/foomatic-datafile
-usr/bin/foomatic-gswrapper
 usr/bin/foomatic-perl-data
 usr/bin/foomatic-ppd-options
+usr/bin/foomatic-ppd-to-xml
 usr/bin/foomatic-ppdfile
 usr/bin/foomatic-printjob
 usr/bin/foomatic-rip
 usr/bin/foomatic-searchprinter
 usr/lib/cups/backend/beh
 usr/lib/cups/driver/foomatic
+usr/lib/cups/filter/foomatic-ppdfile
 usr/lib/cups/filter/foomatic-rip
 #usr/lib/perl5/site_perl/5.12.3/Foomatic
 usr/lib/perl5/site_perl/5.12.3/Foomatic/DB.pm
@@ -23,24 +24,6 @@ usr/lib/perl5/site_perl/5.12.3/Foomatic/PPD.pm
 usr/lib/perl5/site_perl/5.12.3/Foomatic/UIElem.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Foomatic
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Foomatic/.packlist
-#usr/lib/ppr
-#usr/lib/ppr/interfaces
-usr/lib/ppr/interfaces/foomatic-rip
-#usr/lib/ppr/lib
-usr/lib/ppr/lib/foomatic-rip
-#usr/man/man1/foomatic-combo-xml.1
-#usr/man/man1/foomatic-compiledb.1
-#usr/man/man1/foomatic-configure.1
-#usr/man/man1/foomatic-gswrapper.1
-#usr/man/man1/foomatic-perl-data.1
-#usr/man/man1/foomatic-ppd-options.1
-#usr/man/man1/foomatic-ppdfile.1
-#usr/man/man1/foomatic-printjob.1
-#usr/man/man1/foomatic-rip.1
-#usr/man/man8/foomatic-addpjloptions.8
-#usr/man/man8/foomatic-getpjloptions.8
-#usr/man/man8/foomatic-kitload.8
-#usr/man/man8/foomatic-preferred-driver.8
 usr/sbin/foomatic-addpjloptions
 usr/sbin/foomatic-cleanupdrivers
 usr/sbin/foomatic-extract-text
@@ -60,7 +43,10 @@ usr/share/cups/model/foomatic-db-ppds
 #usr/share/foomatic/db/source/PPD/Brother
 usr/share/foomatic/db/source/PPD/Brother/BR2600CN_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR2700_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR3070_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR3450CN_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR4050_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR4070_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR5050_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR5070DN_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR5070_2_GPL.ppd.gz
@@ -69,24 +55,49 @@ usr/share/foomatic/db/source/PPD/Brother/BR5170_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR5240_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR5250_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR5270_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR5350_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR5370_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR5380_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR6050D2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR6050_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR7025_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR7045_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR7050_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR7225_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR7450_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR7820_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR7840_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR784N_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8020_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8025_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8040_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8045_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8050_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR8080_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR8085_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8220_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR8370_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR8380_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8420_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8440_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR8480_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8640_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR8670_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR8680_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8820_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR8840_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR8880_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR8890_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR901D_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR901M_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR9040_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR9045_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR9120_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR9320_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BR9420_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR9440_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR9450_2_GPL.ppd.gz
+usr/share/foomatic/db/source/PPD/Brother/BR9840_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BRHL14_1_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BRHL14_2_GPL.ppd.gz
 usr/share/foomatic/db/source/PPD/Brother/BRHL16_2_GPL.ppd.gz
@@ -98,10 +109,23 @@ usr/share/foomatic/db/source/PPD/Epson/epal2600.ppd.gz
 usr/share/foomatic/db/source/PPD/Epson/epalc190.ppd.gz
 usr/share/foomatic/db/source/PPD/Epson/epalc200.ppd.gz
 usr/share/foomatic/db/source/PPD/Epson/epalc260.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalc280.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalc380.ppd.gz
 usr/share/foomatic/db/source/PPD/Epson/epalc400.ppd.gz
 usr/share/foomatic/db/source/PPD/Epson/epalc410.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalc420.ppd.gz
 usr/share/foomatic/db/source/PPD/Epson/epalc860.ppd.gz
 usr/share/foomatic/db/source/PPD/Epson/epalc910.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalc920.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalcx21.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalm200.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalm201.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalm240.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalm241.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalm400.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalm800.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalmx20.ppd.gz
+usr/share/foomatic/db/source/PPD/Epson/epalmx21.ppd.gz
 usr/share/foomatic/db/source/PPD/Epson/epl5900.ppd.gz
 usr/share/foomatic/db/source/PPD/Epson/epl6100.ppd.gz
 usr/share/foomatic/db/source/PPD/Epson/epl6200.ppd.gz
@@ -143,7 +167,12 @@ usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-C7528n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-C7531dn_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-C7535n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-C7640nD_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-C8140ND_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-C8150ND_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-CS555_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-DSc1030_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-DSc1045_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-DSc1060_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-DSc224_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-DSc232_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-DSc328_PS.ppd.gz
@@ -178,10 +207,19 @@ usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-DSm730_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-DSm735_735G_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-DSm745_745G_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-F9199_9199nf_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-GWD2004_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-GWD2006_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-GWD3006_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-GWD5100_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-GWD7140_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP1100_DSm7110_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP1350_DSm7135_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP1600_DSm716_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP2000_DSm721d_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP2352_DSm923_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP2500_DSm625_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP2852_DSm928_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP3352_DSm933_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP3500_DSm735e_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP4500_DSm745e_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP5500_DSm755_PS.ppd.gz
@@ -194,11 +232,79 @@ usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MPC3000_DSc530_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MPC3500_DSc535_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MPC4500_DSc545_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_161_DSm416_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_171_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_2001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_2501_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_2510_DSm725e_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_2550B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_2550_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_2851_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_3010_DSm730e_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_301_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_3350B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_3350_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_3351_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_4000B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_4000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_4001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_4002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_5000B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_5000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_5001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_5002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_6000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_6001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_6002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_7000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_7001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_7502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_8000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_8001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_9001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_9002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C2050_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C2051_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C2550_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C2551_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C2800_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C3001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C3002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C3003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C300SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C300_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C305_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C3300_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C3501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C3502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C3503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C4000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C400SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C400_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C4501A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C4501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C4502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C4502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C4503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C5000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C5501A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C5501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C5502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C5502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C5503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C6000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C6003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C6501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C6502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C7500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C7501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_C8002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-MP_CW2200_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7026_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7026n_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7031nL_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7031n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7032_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7035n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7126_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7126n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7132n_PS.ppd.gz
@@ -212,6 +318,20 @@ usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7527n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7535n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7575_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-P7675_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-Pro_1106EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-Pro_1107EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-Pro_1356EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-Pro_1357EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-Pro_906EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-Pro_907EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-SP_4210N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-SP_6330N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-SP_8200DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-SP_C320DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-SP_C420DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-SP_C430DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-SP_C431DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PS/Gestetner-SP_W2470_PS.ppd.gz
 #usr/share/foomatic/db/source/PPD/Gestetner/PXL
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-10512_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-2212_PXL.ppd.gz
@@ -225,6 +345,9 @@ usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-6002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-7502_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-9002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-CS555_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-DSc1030_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-DSc1045_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-DSc1060_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-DSc424_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-DSc428_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-DSc432_PXL.ppd.gz
@@ -253,6 +376,10 @@ usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP1100_DSm7110_PXL.ppd.
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP1350_DSm7135_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP1600_DSm716_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP2000_DSm721d_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP2352_DSm923_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP2500_DSm625_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP2852_DSm928_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP3352_DSm933_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP3500_DSm735e_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP4500_DSm745e_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP5500_DSm755_PXL.ppd.gz
@@ -265,34 +392,77 @@ usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MPC3000_DSc530_PXL.ppd.
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MPC3500_DSc535_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MPC4500_DSc545_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_161_DSm416_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_171_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_2001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_2501_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_2510_DSm725e_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_2550B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_2550_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_2851_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_3010_DSm730e_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_3350B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_3350_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_3351_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_4000B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_4000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_4001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_4002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_5000B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_5000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_5001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_5002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_6000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_6001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_6002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_7000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_7001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_7502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_8000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_8001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_9001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_9002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C2050_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C2051_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C2550_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C2551_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C2800_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C3001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C3002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C3003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C300SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C300_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C3300_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C3501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C3502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C3503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C4000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C400SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C400_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C4501A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C4501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C4502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C4502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C4503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C5000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C5501A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C5501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C5502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C5502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C5503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C6000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C6003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C6501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C6502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C7500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C7501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-MP_C8002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-Pro_1106EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-Pro_1107EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-Pro_1356EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-Pro_1357EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-Pro_906EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Gestetner/PXL/Gestetner-Pro_907EX_PXL.ppd.gz
 #usr/share/foomatic/db/source/PPD/HP
-usr/share/foomatic/db/source/PPD/HP/HP_Business_Inkjet_2250.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Business_Inkjet_2280.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Business_Inkjet_2600.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Business_Inkjet_2800.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Business_Inkjet_3000.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_CM8050_CM8060_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_2550.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_2605.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_2700.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_2800.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_3000.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_3800.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_4500.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_4550.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_4700.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_4730_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_5550.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_5M.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_8500.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_8550.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_CM1015.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_CM4730_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_CP3505.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Color_LaserJet_CP4005.ppd.gz
 usr/share/foomatic/db/source/PPD/HP/HP_DesignJet_1050C_PS3.ppd.gz
 usr/share/foomatic/db/source/PPD/HP/HP_DesignJet_1055CM_PS3.ppd.gz
 usr/share/foomatic/db/source/PPD/HP/HP_DesignJet_2500CP_PS3.ppd.gz
@@ -300,78 +470,16 @@ usr/share/foomatic/db/source/PPD/HP/HP_DesignJet_3500CP_PS3.ppd.gz
 usr/share/foomatic/db/source/PPD/HP/HP_Designjet_5000_PS3.ppd.gz
 usr/share/foomatic/db/source/PPD/HP/HP_Designjet_5500_PS3.ppd.gz
 usr/share/foomatic/db/source/PPD/HP/HP_Designjet_800_PS3.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_1200.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_1220.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_1320_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_2100_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_2200.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_2410.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_2420.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_2430.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_3050.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_3052.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_3200.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_3300_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_3390.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4000_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4050_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4100_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4100_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4240.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4250.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4345_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4350.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4ML.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4MP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4Si_v2011.110.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4V.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_4_Plus.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_5000_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_5100_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_5200.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_5200L.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_5M.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_5MP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_5Si.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_5Si_Mopier.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_6MP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_8000_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_8100_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_8150_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_9000_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_9000_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_9040.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_9040_9050_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_9050.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_9055_9065_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_M3027_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_M3035_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_M4345_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_M5025_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_M5035_MFP.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_P2015.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_P3004.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_LaserJet_P3005.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Mopier_240.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/HP_Mopier_320.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_LaserJet_1300_series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_LaserJet_2300.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_LaserJet_3015.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_LaserJet_3020_3030.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_LaserJet_3380.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_LaserJet_4200_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_LaserJet_4300_Series.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_business_inkjet_2300.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_color_LaserJet_2500.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_color_LaserJet_3700.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_color_LaserJet_4600.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_color_LaserJet_4610.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_color_LaserJet_4650.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_color_LaserJet_5500.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_color_LaserJet_9500.ppd.gz
-usr/share/foomatic/db/source/PPD/HP/hp_color_LaserJet_9500_MFP.ppd.gz
 usr/share/foomatic/db/source/PPD/HP/hp_officejet_9100_series.ppd.gz
+#usr/share/foomatic/db/source/PPD/InfoPrint
+#usr/share/foomatic/db/source/PPD/InfoPrint/PS
+usr/share/foomatic/db/source/PPD/InfoPrint/PS/InfoPrint-Pro_1107EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/InfoPrint/PS/InfoPrint-Pro_1357EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/InfoPrint/PS/InfoPrint-Pro_907EX_PS.ppd.gz
+#usr/share/foomatic/db/source/PPD/InfoPrint/PXL
+usr/share/foomatic/db/source/PPD/InfoPrint/PXL/InfoPrint-Pro_1107EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/InfoPrint/PXL/InfoPrint-Pro_1357EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/InfoPrint/PXL/InfoPrint-Pro_907EX_PXL.ppd.gz
 #usr/share/foomatic/db/source/PPD/Infotec
 #usr/share/foomatic/db/source/PPD/Infotec/PS
 usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-4353_MF_PS.ppd.gz
@@ -435,6 +543,7 @@ usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_2265_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_2275_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_2316_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_2320_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_2325_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_2416_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_2425_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_2430_PS.ppd.gz
@@ -443,6 +552,82 @@ usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_2445_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_3090_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_3110_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-IS_3135_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_171_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_2001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_201_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_2352_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_2501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_2550B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_2550_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_2851_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_2852_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_301_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_3350B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_3350_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_3351_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_3352_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_4000B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_4000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_4001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_4002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_5000B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_5000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_5001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_5002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_6000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_6001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_6002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_7000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_7001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_7502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_8000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_8001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_9001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_9002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C2050_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C2051_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C2550_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C2551_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C2800_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C3001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C3002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C3003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C300SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C300_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C305_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C3300_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C3501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C3502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C3503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C4000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C400SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C400_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C4501A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C4501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C4502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C4502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C4503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C5000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C5501A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C5501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C5502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C5502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C5503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C6000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C6003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C6501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C6502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C7500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C7501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-MP_C8002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-Pro_1106EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-Pro_1107EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-Pro_1356EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-Pro_1357EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-Pro_906EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-Pro_907EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-Pro_C5100S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PS/Infotec-Pro_C5110S_PS.ppd.gz
 #usr/share/foomatic/db/source/PPD/Infotec/PXL
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-4353_MF_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-4452_MF_PXL.ppd.gz
@@ -491,6 +676,7 @@ usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_2265_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_2275_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_2316_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_2320_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_2325_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_2416_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_2425_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_2430_PXL.ppd.gz
@@ -499,6 +685,80 @@ usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_2445_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_3090_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_3110_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-IS_3135_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_171_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_2001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_201_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_2352_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_2501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_2550B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_2550_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_2851_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_2852_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_3350B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_3350_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_3351_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_3352_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_4000B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_4000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_4001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_4002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_5000B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_5000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_5001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_5002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_6000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_6001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_6002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_7000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_7001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_7502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_8000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_8001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_9001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_9002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C2050_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C2051_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C2550_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C2551_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C2800_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C3001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C3002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C3003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C300SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C300_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C3300_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C3501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C3502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C3503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C4000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C400SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C400_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C4501A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C4501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C4502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C4502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C4503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C5000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C5501A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C5501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C5502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C5502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C5503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C6000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C6003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C6501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C6502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C7500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C7501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-MP_C8002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-Pro_1106EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-Pro_1107EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-Pro_1356EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-Pro_1357EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-Pro_906EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-Pro_907EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-Pro_C5100S_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Infotec/PXL/Infotec-Pro_C5110S_PXL.ppd.gz
 #usr/share/foomatic/db/source/PPD/KONICA_MINOLTA
 usr/share/foomatic/db/source/PPD/KONICA_MINOLTA/KO1050UX.ppd.gz
 usr/share/foomatic/db/source/PPD/KONICA_MINOLTA/KO500UX.ppd.gz
@@ -521,17 +781,29 @@ usr/share/foomatic/db/source/PPD/KONICA_MINOLTA/KOC550UX.ppd.gz
 #usr/share/foomatic/db/source/PPD/Kyocera
 #usr/share/foomatic/db/source/PPD/Kyocera/ReadMe.htm
 #usr/share/foomatic/db/source/PPD/Kyocera/de
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_CS-C2525E_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_CS-C3225E_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_CS-C3232E_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_CS-C4035E_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_CS_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_CS_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_CS_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_CS_500ci.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-1000_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-1030_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-1118MFP_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-1200_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-1700+_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-1700_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-1714M_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-1750_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-2000D_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-3700+_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-3700_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-3718M_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-3750_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-3900DN_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-4000DN_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-5800C_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-5900C_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-600_de.ppd.gz
@@ -539,19 +811,34 @@ usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-6300_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-6700_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-680_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-6900_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-6950DN_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-7000+_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-7000_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-7028M_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-800_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-9000_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-920_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-C5015N_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-C5020N_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-C5025N_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-C5030N_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-C5100DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-C5200DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-C5300DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-C5350DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-C5400DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS-C8100DN_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_FS_C8100DNP.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_KM-1820_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_KM-3050_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_KM-4050_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_KM-5050_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_KM-6030_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_KM-8030_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_KM-C2525E_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_KM-C3225E_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_KM-C3232E_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_KM-C4035E_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_Mita_CS-1650_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_Mita_CS-1815_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_Mita_CS-2050_de.ppd.gz
@@ -602,21 +889,41 @@ usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_Mita_KM-7530_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_Mita_KM-C2630_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_Mita_KM-C830_de.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_Mita_KM-C850_de.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_TASKalfa_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_TASKalfa_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_TASKalfa_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/de/Kyocera_TASKalfa_500ci.ppd.gz
 #usr/share/foomatic/db/source/PPD/Kyocera/en
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_CS-C2525E_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_CS-C3225E_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_CS-C3232E_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_CS-C4035E_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_CS_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_CS_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_CS_3050ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_CS_3550ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_CS_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_CS_500ci.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-1000_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-1030_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-1118MFP_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-1200_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-1700+_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-1700_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-1714M_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-1750_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-2000D_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-2100D.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-2100DN.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-3700+_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-3700_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-3718M_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-3750_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-3900DN_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-4000DN_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-4100DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-4200DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-4300DN.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-5800C_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-5900C_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-600_en.ppd.gz
@@ -634,16 +941,30 @@ usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-9000_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-9130DN_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-920_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-9530DN_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-C5015N_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-C5020N_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-C5025N_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-C5030N_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-C5100DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-C5200DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-C5300DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-C5350DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-C5400DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS-C8100DN_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_FS_C8100DNP.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-1820_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-3050_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-4050_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-5050_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-6030_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-8030_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-C2520_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-C2525E_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-C3225E_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-C3225_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-C3232E_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-C3232_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_KM-C4035E_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_Mita_CS-1650_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_Mita_CS-1815_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_Mita_CS-2050_en.ppd.gz
@@ -695,8 +1016,22 @@ usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_Mita_KM-7530_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_Mita_KM-C2630_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_Mita_KM-C830_en.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_Mita_KM-C850_en.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_TASKalfa_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_TASKalfa_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_TASKalfa_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/en/Kyocera_TASKalfa_500ci.ppd.gz
 #usr/share/foomatic/db/source/PPD/Kyocera/es
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_CS-C2525E_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_CS-C3225E_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_CS-C3232E_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_CS-C4035E_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_CS_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_CS_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_CS_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_CS_500ci.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-1000_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-1030_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-1118MFP_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-1200_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-1700+_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-1700_es.ppd.gz
@@ -713,6 +1048,7 @@ usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-5800C_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-5900C_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-600_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-6300_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-6500+_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-6700_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-680_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-6900_es.ppd.gz
@@ -723,10 +1059,29 @@ usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-7028M_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-800_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-9000_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-9130DN_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-920_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-9530DN_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-C5015N_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-C5020N_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-C5025N_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-C5030N_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-C5100DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-C5200DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-C5300DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-C5350DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-C5400DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS-C8100DN_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_FS_C8100DNP.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_KM-1820_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_KM-6030_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_KM-8030_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_KM-C2520_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_KM-C2525E_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_KM-C3225E_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_KM-C3225_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_KM-C3232E_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_KM-C3232_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_KM-C4035E_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_Mita_CS-1650_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_Mita_CS-1815_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_Mita_CS-2050_es.ppd.gz
@@ -777,8 +1132,22 @@ usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_Mita_KM-7530_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_Mita_KM-C2630_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_Mita_KM-C830_es.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_Mita_KM-C850_es.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_TASKalfa_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_TASKalfa_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_TASKalfa_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/es/Kyocera_TASKalfa_500ci.ppd.gz
 #usr/share/foomatic/db/source/PPD/Kyocera/fr
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_CS-C2525E_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_CS-C3225E_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_CS-C3232E_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_CS-C4035E_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_CS_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_CS_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_CS_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_CS_500ci.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-1000_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-1030_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-1118MFP_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-1200_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-1700+_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-1700_fr.ppd.gz
@@ -795,6 +1164,7 @@ usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-5800C_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-5900C_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-600_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-6300_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-6500+_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-6700_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-680_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-6900_fr.ppd.gz
@@ -805,10 +1175,29 @@ usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-7028M_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-800_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-9000_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-9130DN_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-920_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-9530DN_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-C5015N_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-C5020N_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-C5025N_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-C5030N_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-C5100DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-C5200DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-C5300DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-C5350DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-C5400DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS-C8100DN_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_FS_C8100DNP.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_KM-1820_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_KM-6030_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_KM-8030_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_KM-C2520_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_KM-C2525E_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_KM-C3225E_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_KM-C3225_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_KM-C3232E_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_KM-C3232_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_KM-C4035E_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_Mita_CS-1650_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_Mita_CS-1815_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_Mita_CS-2050_fr.ppd.gz
@@ -859,18 +1248,34 @@ usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_Mita_KM-7530_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_Mita_KM-C2630_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_Mita_KM-C830_fr.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_Mita_KM-C850_fr.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_TASKalfa_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_TASKalfa_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_TASKalfa_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/fr/Kyocera_TASKalfa_500ci.ppd.gz
 #usr/share/foomatic/db/source/PPD/Kyocera/it
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_CS-C2525E_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_CS-C3225E_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_CS-C3232E_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_CS-C4035E_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_CS_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_CS_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_CS_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_CS_500ci.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-1000_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-1030_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-1118MFP_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-1200_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-1700+_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-1700_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-1714M_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-1750_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-2000D_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-3700+_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-3700_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-3718M_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-3750_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-3900DN_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-4000DN_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-5800C_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-5900C_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-600_it.ppd.gz
@@ -878,19 +1283,34 @@ usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-6300_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-6700_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-680_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-6900_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-6950DN_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-7000+_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-7000_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-7028M_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-800_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-9000_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-920_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-C5015N_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-C5020N_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-C5025N_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-C5030N_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-C5100DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-C5200DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-C5300DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-C5350DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-C5400DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS-C8100DN_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_FS_C8100DNP.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_KM-1820_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_KM-3050_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_KM-4050_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_KM-5050_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_KM-6030_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_KM-8030_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_KM-C2525E_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_KM-C3225E_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_KM-C3232E_it.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_KM-C4035E_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_Mita_CS-1650_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_Mita_CS-1815_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_Mita_CS-2050_it.ppd.gz
@@ -941,9 +1361,22 @@ usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_Mita_KM-7530_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_Mita_KM-C2630_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_Mita_KM-C830_it.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_Mita_KM-C850_it.ppd.gz
-usr/share/foomatic/db/source/PPD/Kyocera/kyocera_ppd_8.2.txt
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_TASKalfa_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_TASKalfa_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_TASKalfa_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/it/Kyocera_TASKalfa_500ci.ppd.gz
 #usr/share/foomatic/db/source/PPD/Kyocera/pt
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_CS-C2525E_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_CS-C3225E_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_CS-C3232E_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_CS-C4035E_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_CS_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_CS_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_CS_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_CS_500ci.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-1000_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-1030_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-1118MFP_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-1200_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-1700+_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-1700_pt.ppd.gz
@@ -960,6 +1393,7 @@ usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-5800C_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-5900C_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-600_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-6300_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-6500+_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-6700_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-680_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-6900_pt.ppd.gz
@@ -970,10 +1404,29 @@ usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-7028M_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-800_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-9000_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-9130DN_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-920_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-9530DN_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-C5015N_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-C5020N_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-C5025N_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-C5030N_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-C5100DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-C5200DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-C5300DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-C5350DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-C5400DN.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS-C8100DN_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_FS_C8100DNP.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_KM-1820_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_KM-6030_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_KM-8030_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_KM-C2520_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_KM-C2525E_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_KM-C3225E_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_KM-C3225_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_KM-C3232E_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_KM-C3232_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_KM-C4035E_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_Mita_CS-1650_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_Mita_CS-1815_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_Mita_CS-2050_pt.ppd.gz
@@ -1024,6 +1477,10 @@ usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_Mita_KM-7530_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_Mita_KM-C2630_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_Mita_KM-C830_pt.ppd.gz
 usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_Mita_KM-C850_pt.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_TASKalfa_250ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_TASKalfa_300ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_TASKalfa_400ci.ppd.gz
+usr/share/foomatic/db/source/PPD/Kyocera/pt/Kyocera_TASKalfa_500ci.ppd.gz
 #usr/share/foomatic/db/source/PPD/Lanier
 #usr/share/foomatic/db/source/PPD/Lanier/PS
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-2132_PS.ppd.gz
@@ -1071,6 +1528,12 @@ usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LD245_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LD328c_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LD335c_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LD345c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LD_130CSR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LD_130C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LD_140CSR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LD_140C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LD_620C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LD_625C_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LF510_515e_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP025N_LP026N_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP025_LP026_PS.ppd.gz
@@ -1078,41 +1541,153 @@ usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP031c_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP032_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP116c_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP122c_LP121c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP124w_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP125cx_LP126cn_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP127n_LP128n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP128_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP131nL_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP131n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP135n_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP136n_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP137CN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP138c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP142CN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP145n_SP_8100DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP150dn_SP8200DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP175_LP175hdn_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP222cn_LP221c_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP226c_SP_C410_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP231c_SP_C411_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP235N_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP235c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP331cn_SP_C420_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP332c_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP335c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP37N_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP440c_SP_C811DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP540C_SPC820DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP550C_SPC821DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP_020c_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LP_036c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LW324_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LW326_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LW426_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LW5100_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-LW7140_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP2500_LD125_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MPC1500_LD215c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MPC4501A_LD645CA_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MPC5501A_LD655CA_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_1100_LD1100_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_1350_LD1135_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_1600_LD316_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_161_LD016_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_171_LD_117_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_2000_LD320d_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_2001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_201_LD_220_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_2352_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_2501_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_2510_LD325_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_2550B_LD425B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_2550_LD425_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_2851_LD528_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_2852_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_3010_LD330_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_301_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_3350B_LD433B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_3350_LD433_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_3351_LD533_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_3352_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_3500_LD335_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_4000B_LD040B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_4000_LD040_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_4001_LD140_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_4002_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_4500_LD345_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_5000B_LD050B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_5000_LD050_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_5001_LD150_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_5002_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_5500_LD255_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_6000_LD260_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_6001_LD360_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_6002_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_6500_LD265_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_7000_LD270_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_7001_LD370_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_7500_LD275_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_7502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_8000_LD280_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_8001_LD380_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_9000_LD190_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_9001_LD390_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_9002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C2050_LD520C_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C2500_LD425c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C2550_LD525C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C2800_LD528C_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C3000_LD430c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C3001_LD630C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C3002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C3003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C300SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C300_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C305_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C3300_LD533C_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C3500_LD435c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C3501_LD635C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C3502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C3503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C4000_LD540C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C400SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C400_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C4500_LD445c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C4501_LD645C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C4502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C4502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C4503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C5000_LD550C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C5501_LD655C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C5502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C5502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C5503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C6000_LD260c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C6003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C6501_LD365C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C6502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C7500_LD275c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C7501_LD375C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_C8002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-MP_CW2200_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-Pro_1106EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-Pro_1107EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-Pro_1356EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-Pro_1357EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-Pro_906EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-Pro_907EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-Pro_C5100S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-Pro_C5110S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_4100NL_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_4100N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_4110N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_4210N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_4310N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_5200DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_5200S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_5210DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_5210SF_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_5210SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_6330N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_8300DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_9100_LP275_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_C320DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_C400DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_C430DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_C431DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_C730DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_C830DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PS/Lanier-SP_C831DN_PS.ppd.gz
 #usr/share/foomatic/db/source/PPD/Lanier/PXL
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-5622_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-5627_PXL.ppd.gz
@@ -1151,24 +1726,176 @@ usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-LD245_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-LD328c_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-LD335c_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-LD345c_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-LD_130CSR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-LD_130C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-LD_140CSR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-LD_140C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-LD_620C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-LD_625C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP2500_LD125_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MPC1500_LD215c_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MPC4501A_LD645CA_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MPC5501A_LD655CA_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_1100_LD1100_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_1350_LD1135_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_1600_LD316_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_161_LD016_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_171_LD_117_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_2000_LD320d_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_2001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_201_LD_220_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_2352_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_2501_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_2510_LD325_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_2550B_LD425B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_2550_LD425_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_2851_LD528_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_2852_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_3010_LD330_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_3350B_LD433B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_3350_LD433_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_3351_LD533_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_3352_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_3500_LD335_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_4000B_LD040B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_4000_LD040_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_4001_LD140_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_4002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_4500_LD345_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_5000B_LD050B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_5000_LD050_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_5001_LD150_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_5002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_5500_LD255_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_6000_LD260_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_6001_LD360_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_6002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_6500_LD265_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_7000_LD270_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_7001_LD370_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_7500_LD275_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_7502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_8000_LD280_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_8001_LD380_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_9000_LD190_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_9001_LD390_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_9002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C2050_LD520C_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C2500_LD425c_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C2550_LD525C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C2800_LD528C_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C3000_LD430c_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C3001_LD630C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C3002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C3003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C300SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C300_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C3300_LD533C_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C3500_LD435c_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C3501_LD635C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C3502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C3503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C4000_LD540C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C400SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C400_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C4500_LD445c_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C4501_LD645C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C4502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C4502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C4503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C5000_LD550C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C5501_LD655C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C5502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C5502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C5503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C6000_LD260c_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C6003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C6501_LD365C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C6502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C7500_LD275c_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C7501_LD375C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-MP_C8002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-Pro_1106EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-Pro_1107EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-Pro_1356EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-Pro_1357EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-Pro_906EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-Pro_907EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-Pro_C5100S_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-Pro_C5110S_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-SG3100SNw_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lanier/PXL/Lanier-SG3110SFNw_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_6500e_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C510.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C520.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C522.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C524.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C540.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C543.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C544.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C546.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C734.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C736.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C750.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C752.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C780.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C782.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C790_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C910.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C912.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C920_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C930.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C935.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_C950_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_E260.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_E260d.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_E260dn.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_E350d.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_E352dn.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_E360d.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_E360dn.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_E460dn.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_E460dw.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_E462dtn.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_EG460dn.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_T650.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_T652.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_T654.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_T656.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_TG654.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_W850.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X203n.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X204n.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X264dn.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X363dn.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X364dn.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X364dw.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X463de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X464de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X466de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X466dte.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X466dwe.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X543.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X544.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X546.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X548_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X651de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X652de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X654de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X656de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X658de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X734de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X736de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X738de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X790_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X860de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X862de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X864de.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X920_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X940e.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X945e.ppd.gz
+usr/share/foomatic/db/source/PPD/Lexmark/Lexmark_X950_Series.ppd.gz
 #usr/share/foomatic/db/source/PPD/NRG
 #usr/share/foomatic/db/source/PPD/NRG/PS
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-10515_10518_10512_PS.ppd.gz
@@ -1229,20 +1956,96 @@ usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_1100_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_1350_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_1600_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_161_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_171_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_2000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_2001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_201_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_2352_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_2500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_2501_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_2510_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_2550B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_2550_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_2851_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_2852_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_3010_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_301_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_3350B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_3350_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_3351_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_3352_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_3500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_4000B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_4000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_4001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_4002_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_4500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_5000B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_5000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_5001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_5002_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_5500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_6000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_6001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_6002_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_6500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_7000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_7001_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_7500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_7502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_8000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_8001_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_9000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_9001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_9002_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C1500sp_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C2050_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C2051_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C2500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C2550_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C2551_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C2800_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C3000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C3001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C3002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C3003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C300SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C300_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C305_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C3300_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C3500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C3501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C3502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C3503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C4000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C400SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C400_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C4500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C4501A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C4501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C4502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C4502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C4503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C5000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C5501A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C5501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C5502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C5502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C5503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C6000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C6003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C6501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C6502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C7500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C7501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_C8002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_CW2200_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_W2400_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_W2401_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_W3600_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_W3601_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_W5100_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-MP_W7140_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-P7026N_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-P7026_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-P7032_PS.ppd.gz
@@ -1257,11 +2060,42 @@ usr/share/foomatic/db/source/PPD/NRG/PS/NRG-P7527_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-P7527n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-P7535n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-P7575_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-Pro_1106EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-Pro_1107EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-Pro_1356EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-Pro_1357EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-Pro_906EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-Pro_907EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-Pro_C5100S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-Pro_C5110S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_4100NL_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_4100N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_4110N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_4210N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_4310N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_5200DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_5200S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_5210DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_5210SF_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_5210SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_6330N_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_8100DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_8200DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_8300DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_9100DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C320DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C410DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C411DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C420DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C430DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C431DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C730DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C811DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C820DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C821DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C830DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_C831DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PS/NRG-SP_W2470_PS.ppd.gz
 #usr/share/foomatic/db/source/PPD/NRG/PXL
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-10515_10518_10512_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-2205_2238_2212_PXL.ppd.gz
@@ -1304,20 +2138,100 @@ usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_1100_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_1350_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_1600_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_161_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_171_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_2000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_2001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_201_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_2352_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_2500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_2501_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_2510_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_2550B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_2550_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_2851_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_2852_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_3010_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_3350B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_3350_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_3351_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_3352_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_3500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_4000B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_4000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_4001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_4002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_4500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_5000B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_5000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_5001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_5002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_5500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_6000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_6001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_6002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_6500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_7000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_7001_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_7500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_7502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_8000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_8001_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_9000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_9001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_9002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C1500sp_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C2050_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C2051_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C2500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C2550_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C2551_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C2800_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C3000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C3001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C3002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C3003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C300SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C300_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C3300_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C3500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C3501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C3502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C3503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C4000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C400SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C400_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C4500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C4501A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C4501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C4502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C4502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C4503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C5000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C5501A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C5501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C5502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C5502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C5503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C6000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C6003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C6501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C6502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C7500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C7501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-MP_C8002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-Pro_1106EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-Pro_1107EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-Pro_1356EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-Pro_1357EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-Pro_906EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-Pro_907EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-Pro_C5100S_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-Pro_C5110S_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-SG2100N_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-SG3100SNw_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-SG3110DN_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-SG3110DNw_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/NRG/PXL/NRG-SG3110SFNw_PXL.ppd.gz
 #usr/share/foomatic/db/source/PPD/Oce
 #usr/share/foomatic/db/source/PPD/Oce/Oce-3145PS
 #usr/share/foomatic/db/source/PPD/Oce/Oce-3145PS/1
@@ -1389,43 +2303,36 @@ usr/share/foomatic/db/source/PPD/Oce/Oce-VarioPrint_2105PS/1/OCVP2105.ppd.gz
 #usr/share/foomatic/db/source/PPD/Oce/Oce-VarioPrint_2110PS/1
 usr/share/foomatic/db/source/PPD/Oce/Oce-VarioPrint_2110PS/1/OCVP2110.ppd.gz
 #usr/share/foomatic/db/source/PPD/Oce/Others
-usr/share/foomatic/db/source/PPD/Oce/Others/OC2050_3.ppd.gz
-usr/share/foomatic/db/source/PPD/Oce/Others/OC2060_3.ppd.gz
-usr/share/foomatic/db/source/PPD/Oce/Others/OC2070_3.ppd.gz
+usr/share/foomatic/db/source/PPD/Oce/Others/IM8530_1.ppd.gz
 usr/share/foomatic/db/source/PPD/Oce/Others/OC3145_2.ppd.gz
-usr/share/foomatic/db/source/PPD/Oce/Others/OC3145_3.ppd.gz
 usr/share/foomatic/db/source/PPD/Oce/Others/OC3155_2.ppd.gz
-usr/share/foomatic/db/source/PPD/Oce/Others/OC3155_3.ppd.gz
 usr/share/foomatic/db/source/PPD/Oce/Others/OC3165_2.ppd.gz
-usr/share/foomatic/db/source/PPD/Oce/Others/OC3165_3.ppd.gz
 usr/share/foomatic/db/source/PPD/Oce/Others/OC8445_2.ppd.gz
-usr/share/foomatic/db/source/PPD/Oce/Others/OC8445_3.ppd.gz
 usr/share/foomatic/db/source/PPD/Oce/Others/OC8465_2.ppd.gz
-usr/share/foomatic/db/source/PPD/Oce/Others/OC8465_3.ppd.gz
 usr/share/foomatic/db/source/PPD/Oce/Others/OC9230_2.ppd.gz
 usr/share/foomatic/db/source/PPD/Oce/Others/OC9245_2.ppd.gz
 usr/share/foomatic/db/source/PPD/Oce/Others/OC9260_2.ppd.gz
-usr/share/foomatic/db/source/PPD/Oce/Others/OCVP2090.ppd.gz
-usr/share/foomatic/db/source/PPD/Oce/Others/OCVP2105.ppd.gz
-#usr/share/foomatic/db/source/PPD/Okidata
-usr/share/foomatic/db/source/PPD/Okidata/OK5700_a.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/OK5900_a.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/OK6100_a.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok4300u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok5300u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok5400u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok5450u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok7100u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok7200u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok7300u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok7400u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok7500u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok9200u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok9300u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok9400u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok9500u1.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/ok9600u1a.ppd.gz
-usr/share/foomatic/db/source/PPD/Okidata/okop14u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki
+usr/share/foomatic/db/source/PPD/Oki/OK5700_a.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/OK5900_a.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/OK6100_a.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/OK8800_a.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok4300u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok4350u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok5300u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok5400u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok5450u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok7100u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok7200u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok7300u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok7400u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok7500u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok9200u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok9300u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok9400u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok9500u1.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/ok9600u1a.ppd.gz
+usr/share/foomatic/db/source/PPD/Oki/okop14u1.ppd.gz
 #usr/share/foomatic/db/source/PPD/Ricoh
 #usr/share/foomatic/db/source/PPD/Ricoh/PS
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_1022_PS.ppd.gz
@@ -1501,24 +2408,114 @@ usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_1100_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_1350_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_1600_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_161_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_171_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_2000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_201_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_2352_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_2500_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_2510_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_2550B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_2550_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_2851_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_2852_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_3010_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_301_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_3350B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_3350_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_3351_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_3352_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_3500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_4000B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_4000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_4001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_4002_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_4500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_5000B_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_5000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_5001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_5002_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_5500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_6000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_6001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_6002_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_6500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_7000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_7001_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_7500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_7502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_8000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_8001_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_9000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_9001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_9002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C2050_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C2051_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C2500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C2550_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C2551_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C2800_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C3000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C3001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C3002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C300SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C300_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C305_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C3300_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C3500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C3501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C3502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C4000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C400SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C400_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C4500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C4501A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C4501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C4502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C4502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C5000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C5501A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C5501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C5502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C5502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C6000_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C6501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C7500_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_C7501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_W2400_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_W2401_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_W3600_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_W3601_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_W5100_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_MP_W7140_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_4100NL_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_4100N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_4110N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_4210N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_4310N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_5200DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_5200S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_5210DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_5210SF_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_5210SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_6330N_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_8100DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_8200DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_8300DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_9100DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C320DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C400DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C410DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C411DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C420DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C430DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C431DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C730DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C811DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C820DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C821DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C830DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_C831DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Aficio_SP_W2470_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-ColorLaser_AP828_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-DDP_70_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-DDP_92_PS.ppd.gz
@@ -1528,8 +2525,31 @@ usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-LASER_AP2600N_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-LASER_AP2600_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-LASER_AP2610N_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-LASER_AP2610_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_2001_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_2501_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_C1500_615C_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_C3003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_C3503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_C4503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_C5503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_C6003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_C6502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_C8002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-MP_CW2200_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Pro_1106EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Pro_1107EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Pro_1356EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Pro_1357EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Pro_906EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Pro_907EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Pro_C5100S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PS/Ricoh-Pro_C5110S_PS.ppd.gz
 #usr/share/foomatic/db/source/PPD/Ricoh/PXL
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-AficioSG2100N_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-AficioSG3100SNw_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-AficioSG3110DN_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-AficioSG3110DNw_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-AficioSG3110SFNw_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_1022_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_1027_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_1032_PXL.ppd.gz
@@ -1571,22 +2591,181 @@ usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_1100_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_1350_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_1600_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_161_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_171_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_2000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_201_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_2352_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_2500_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_2510_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_2550B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_2550_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_2851_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_2852_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_3010_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_3350B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_3350_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_3351_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_3352_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_3500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_4000B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_4000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_4001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_4002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_4500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_5000B_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_5000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_5001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_5002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_5500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_6000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_6001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_6002_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_6500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_7000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_7001_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_7500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_7502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_8000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_8001_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_9000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_9001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_9002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C2050_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C2051_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C2500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C2550_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C2551_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C2800_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C3000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C3001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C3002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C300SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C300_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C3300_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C3500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C3501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C3502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C4000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C400SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C400_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C4500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C4501A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C4501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C4502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C4502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C5000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C5501A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C5501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C5502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C5502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C6000_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C6501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C7500_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Aficio_MP_C7501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-GX_3050N_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-GX_3050SFN_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-GX_5050N_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-GX_E3350N_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-GX_E5550N_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-MP_2001_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-MP_2501_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-MP_C1500_615C_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-MP_C3003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-MP_C3503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-MP_C4503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-MP_C5503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-MP_C6003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-MP_C6502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-MP_C8002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Pro_1106EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Pro_1107EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Pro_1356EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Pro_1357EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Pro_906EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Pro_907EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Pro_C5100S_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Ricoh/PXL/Ricoh-Pro_C5110S_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung
+usr/share/foomatic/db/source/PPD/Samsung/PS
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLP-350_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLP-410_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLP-660_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLP-670_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLP-680_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLP-770_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLP-775_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-3300_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-4190_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-6200_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-6220_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-6240_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-6250_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-6260_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-8380_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-8385X_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-8385_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-8540_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-8640_8650_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-9250_9350_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-9252_9352_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-92x1_93x1_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-981x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_CLX-982x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_M337x_387x_407x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-2150_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-2550_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-2570_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-2850_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-2853_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-2855_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-3470_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-3475_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-371x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-375x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-4050_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-4055_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-451x_501x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-4550_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-4555_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-551x_651x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-8850_8950_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_ML-8x00_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-483x_5x3x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-4x28_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-5635_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-5835_5935X_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-5835_5935_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-6545X_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-6545_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-681x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-6x20_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-6x22_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-6x45_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-6x55X_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-6x55_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-8030_8040_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-8123_8128_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-8230_8240_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-881x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PS/Samsung_SCX-882x_Series.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_CLP-610_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_CLP-620_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_M262x_282x_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_M267x_287x_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_ML-2525W_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_ML-2580_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_ML-2950_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_SCX-470x_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_SCX-472x_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_SCX-4x24_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_SCX-4x25_Series_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Samsung/PXL/Samsung_SCX-4x26_Series_PXL.ppd.gz
 #usr/share/foomatic/db/source/PPD/Savin
 #usr/share/foomatic/db/source/PPD/Savin/PS
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-2404WDP_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-2404WD_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-2406WD_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-2522_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-2527_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-2532_PS.ppd.gz
@@ -1594,6 +2773,7 @@ usr/share/foomatic/db/source/PPD/Savin/PS/Savin-2535_2235_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-2545_2245_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-2560_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-2575_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-3406WD_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-3515_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-40105_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-4015_PS.ppd.gz
@@ -1609,6 +2789,9 @@ usr/share/foomatic/db/source/PPD/Savin/PS/Savin-4051_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-4060_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-4075_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-4090_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-5100WD_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-7025_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-7140WD_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8016_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8020_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8020d_PS.ppd.gz
@@ -1621,14 +2804,35 @@ usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8035e_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8045_8045g_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8045e_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8055_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8060_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8065_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8070_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8075_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8080_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8090_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8110_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-8135_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-816_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9016_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9021d_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9025_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9025b_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9033_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9033b_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9040_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9040b_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9050_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9050b_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9060_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9070_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9080_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9090_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-917_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-920_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9228_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9233_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9240_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-9250_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C2408_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C2410_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C2524_PS.ppd.gz
@@ -1636,18 +2840,37 @@ usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C2525_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C2532_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C2820_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C2824_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C2828_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C3030_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C3210_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C3210e_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C3224_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C3333_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C3528_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C3535_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C3828_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C4040_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C4535_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C4540_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C5050_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C6045_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C6055_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C7570_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9020_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9025_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9065_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9075_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9120_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9125_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9130_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9135_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9145A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9145_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9155A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C9155_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP1036_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP128_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP131DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP135_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP1620_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP17_PS.ppd.gz
@@ -1658,28 +2881,89 @@ usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP26DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP27DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP28_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP31DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP340D_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP350D_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP35_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP37DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP42DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-CLP831_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C_230SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C_230_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C_240SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-C_240_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-FAX3799_3799nf_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP145_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP150DN_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP175n_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP235n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP25_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP25n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP26_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP26n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP28_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP28n_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP31nL_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP31n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP32_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP35n_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP36n_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP37N_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP45_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MLP75n_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_2352_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_2501_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_2852_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_301_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_3352_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_4002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_5002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_6002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_7502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_9002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C3002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C3003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C305_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C3502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C3503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C4502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C4502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C4503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C5502A_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C5502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C5503_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C6003_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C6502_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_C8002_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-MP_CW2200_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-Pro_1106EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-Pro_1107EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-Pro_1356EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-Pro_1357EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-Pro_906EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-Pro_907EX_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-Pro_C5100S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-Pro_C5110S_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SDC555_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SGC_1506_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SLP26_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SLP26n_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SLP32_PS.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SLP38c_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_4310N_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_5200DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_5200S_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_5210DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_5210SF_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_5210SR_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_8300DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_C320DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_C400DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_C730DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_C830DN_PS.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PS/Savin-SP_C831DN_PS.ppd.gz
 #usr/share/foomatic/db/source/PPD/Savin/PXL
+usr/share/foomatic/db/source/PPD/Savin/PXL/SAVIN-SG3110DN_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/SAVIN-SG3110DNw_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-2522_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-2527_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-2532_PXL.ppd.gz
@@ -1702,6 +2986,7 @@ usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-4051_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-4060_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-4075_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-4090_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-7025_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8016_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8020_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8020d_PXL.ppd.gz
@@ -1714,46 +2999,115 @@ usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8035e_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8045_8045g_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8045e_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8055_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8060_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8065_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8070_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8075_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8080_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8090_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8110_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-8135_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-816_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9016_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9021d_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9025_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9025b_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9033_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9033b_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9040_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9040b_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9050_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9050b_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9060_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9070_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9080_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9090_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-917_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-920_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9228_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9233_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9240_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-9250_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C2410_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C2525_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C2824_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C2828_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C3030_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C3210e_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C3333_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C3528_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C3535_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C4040_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C4535_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C4540_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C5050_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C6045_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C6055_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C7570_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9020_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9025_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9065_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9075_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9120_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9125_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9130_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9135_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9145A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9145_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9155A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C9155_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C_230SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C_230_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C_240SR_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-C_240_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_2352_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_2501_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_2852_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_3352_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_4002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_5002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_6002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_7502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_9002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C3002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C3003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C3502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C3503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C4502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C4502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C4503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C5502A_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C5502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C5503_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C6003_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C6502_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-MP_C8002_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-Pro_1106EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-Pro_1107EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-Pro_1356EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-Pro_1357EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-Pro_906EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-Pro_907EX_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-Pro_C5100S_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-Pro_C5110S_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-SDC555_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-SG3100SNw_PXL.ppd.gz
+usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-SG3110SFNw_PXL.ppd.gz
 usr/share/foomatic/db/source/PPD/Savin/PXL/Savin-SGC_1506_PXL.ppd.gz
 #usr/share/foomatic/db/source/PPD/Sharp
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-2300FG-ps-jp.ppd.gz
-usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-2300G-ps-jp.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-2300G-ps.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-2300N-ps.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-2700FG-ps-jp.ppd.gz
-usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-2700G-ps-jp.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-2700G-ps.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-2700N-ps.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-3500FN-ps-jp.ppd.gz
-usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-3500N-ps-jp.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-3500N-ps.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-3501FN-ps-jp.ppd.gz
-usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-3501N-ps-jp.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-3501N-ps.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-4500FN-ps-jp.ppd.gz
-usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-4500N-ps-jp.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-4500N-ps.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-4501FN-ps-jp.ppd.gz
-usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-4501N-ps-jp.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/Sharp-MX-4501N-ps.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/sc170fpj.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/sc172fpj.ppd.gz
@@ -1823,7 +3177,6 @@ usr/share/foomatic/db/source/PPD/Sharp/sharm237.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/sharm276.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/sharm277.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/shc260fj.ppd.gz
-usr/share/foomatic/db/source/PPD/Sharp/shc260mj.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/shc260sj.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/shc261fj.ppd.gz
 usr/share/foomatic/db/source/PPD/Sharp/shc261mj.ppd.gz
@@ -1838,27 +3191,28 @@ usr/share/foomatic/db/source/PPD/Toshiba/TOSHIBA_EST4511_451c_CUPS.ppd.gz
 usr/share/foomatic/db/source/PPD/Toshiba/TOSHIBA_EST850_CUPS.ppd.gz
 usr/share/foomatic/db/source/PPD/Toshiba/Toshiba_GL1010_CUPS.ppd.gz
 usr/share/foomatic/db/source/PPD/Toshiba/Toshiba_GL1020_CUPS.ppd.gz
-usr/share/foomatic/db/source/PPD/bzrAddPPD.sh
-usr/share/foomatic/db/source/PPD/bzrAddXML.sh
-usr/share/foomatic/db/source/PPD/generateBZRScript.sh
 #usr/share/foomatic/db/source/driver
-usr/share/foomatic/db/source/driver/PM760p.upp.xml
-usr/share/foomatic/db/source/driver/PM760pl.upp.xml
-usr/share/foomatic/db/source/driver/PM820p.upp.xml
-usr/share/foomatic/db/source/driver/PM820pl.upp.xml
+usr/share/foomatic/db/source/driver/Postscript-Brother.xml
+usr/share/foomatic/db/source/driver/Postscript-Epson.xml
+usr/share/foomatic/db/source/driver/Postscript-Gestetner.xml
+usr/share/foomatic/db/source/driver/Postscript-HP.xml
+usr/share/foomatic/db/source/driver/Postscript-InfoPrint.xml
+usr/share/foomatic/db/source/driver/Postscript-Infotec.xml
+usr/share/foomatic/db/source/driver/Postscript-KONICA_MINOLTA.xml
+usr/share/foomatic/db/source/driver/Postscript-Kyocera.xml
+usr/share/foomatic/db/source/driver/Postscript-Lanier.xml
+usr/share/foomatic/db/source/driver/Postscript-Lexmark.xml
+usr/share/foomatic/db/source/driver/Postscript-NRG.xml
+usr/share/foomatic/db/source/driver/Postscript-Oce.xml
+usr/share/foomatic/db/source/driver/Postscript-Oki.xml
+usr/share/foomatic/db/source/driver/Postscript-Ricoh.xml
+usr/share/foomatic/db/source/driver/Postscript-Samsung.xml
+usr/share/foomatic/db/source/driver/Postscript-Savin.xml
+usr/share/foomatic/db/source/driver/Postscript-Sharp.xml
+usr/share/foomatic/db/source/driver/Postscript-Toshiba.xml
 usr/share/foomatic/db/source/driver/Postscript.xml
-usr/share/foomatic/db/source/driver/Stc670p.upp.xml
-usr/share/foomatic/db/source/driver/Stc670pl.upp.xml
-usr/share/foomatic/db/source/driver/Stc680p.upp.xml
-usr/share/foomatic/db/source/driver/Stc680pl.upp.xml
-usr/share/foomatic/db/source/driver/Stc760p.upp.xml
-usr/share/foomatic/db/source/driver/Stc760pl.upp.xml
-usr/share/foomatic/db/source/driver/Stc777p.upp.xml
-usr/share/foomatic/db/source/driver/Stc777pl.upp.xml
-usr/share/foomatic/db/source/driver/Stp720p.upp.xml
-usr/share/foomatic/db/source/driver/Stp720pl.upp.xml
-usr/share/foomatic/db/source/driver/Stp870p.upp.xml
-usr/share/foomatic/db/source/driver/Stp870pl.upp.xml
+usr/share/foomatic/db/source/driver/Postscript1.xml
+usr/share/foomatic/db/source/driver/Postscript2-Oce.xml
 usr/share/foomatic/db/source/driver/ap3250.xml
 usr/share/foomatic/db/source/driver/appledmp.xml
 usr/share/foomatic/db/source/driver/bj10.xml
@@ -1866,51 +3220,22 @@ usr/share/foomatic/db/source/driver/bj10e.xml
 usr/share/foomatic/db/source/driver/bj10v.xml
 usr/share/foomatic/db/source/driver/bj10vh.xml
 usr/share/foomatic/db/source/driver/bj200.xml
-usr/share/foomatic/db/source/driver/bj8gc12f.upp.xml
-usr/share/foomatic/db/source/driver/bj8hg12f.upp.xml
-usr/share/foomatic/db/source/driver/bj8oh06n.upp.xml
-usr/share/foomatic/db/source/driver/bj8pa06n.upp.xml
-usr/share/foomatic/db/source/driver/bj8pp12f.upp.xml
-usr/share/foomatic/db/source/driver/bj8ts06n.upp.xml
+usr/share/foomatic/db/source/driver/bj8XXYYZ.upp.xml
 usr/share/foomatic/db/source/driver/bjc250gs.xml
 usr/share/foomatic/db/source/driver/bjc600.xml
-usr/share/foomatic/db/source/driver/bjc6000a1.upp.xml
-usr/share/foomatic/db/source/driver/bjc6000b1.upp.xml
-usr/share/foomatic/db/source/driver/bjc610a0.upp.xml
-usr/share/foomatic/db/source/driver/bjc610a1.upp.xml
-usr/share/foomatic/db/source/driver/bjc610a2.upp.xml
-usr/share/foomatic/db/source/driver/bjc610a3.upp.xml
-usr/share/foomatic/db/source/driver/bjc610a4.upp.xml
-usr/share/foomatic/db/source/driver/bjc610a5.upp.xml
-usr/share/foomatic/db/source/driver/bjc610a6.upp.xml
-usr/share/foomatic/db/source/driver/bjc610a7.upp.xml
-usr/share/foomatic/db/source/driver/bjc610a8.upp.xml
-usr/share/foomatic/db/source/driver/bjc610b1.upp.xml
-usr/share/foomatic/db/source/driver/bjc610b2.upp.xml
-usr/share/foomatic/db/source/driver/bjc610b3.upp.xml
-usr/share/foomatic/db/source/driver/bjc610b4.upp.xml
-usr/share/foomatic/db/source/driver/bjc610b6.upp.xml
-usr/share/foomatic/db/source/driver/bjc610b7.upp.xml
-usr/share/foomatic/db/source/driver/bjc610b8.upp.xml
 usr/share/foomatic/db/source/driver/bjc800.xml
 usr/share/foomatic/db/source/driver/bjc800j.xml
 usr/share/foomatic/db/source/driver/bjc880j.xml
 usr/share/foomatic/db/source/driver/c2050.xml
 usr/share/foomatic/db/source/driver/c2070.xml
+usr/share/foomatic/db/source/driver/c2esp.xml
 usr/share/foomatic/db/source/driver/capt.xml
-usr/share/foomatic/db/source/driver/cdj1600.xml
 usr/share/foomatic/db/source/driver/cdj500.xml
-usr/share/foomatic/db/source/driver/cdj550.upp.xml
 usr/share/foomatic/db/source/driver/cdj550.xml
-usr/share/foomatic/db/source/driver/cdj670.xml
-usr/share/foomatic/db/source/driver/cdj850.xml
-usr/share/foomatic/db/source/driver/cdj880.xml
-usr/share/foomatic/db/source/driver/cdj890.xml
-usr/share/foomatic/db/source/driver/cdj970.xml
+usr/share/foomatic/db/source/driver/cdnj500.xml
 usr/share/foomatic/db/source/driver/chp2200.xml
 usr/share/foomatic/db/source/driver/cjet.xml
 usr/share/foomatic/db/source/driver/cljet5.xml
-usr/share/foomatic/db/source/driver/cljet5c.xml
 usr/share/foomatic/db/source/driver/cp50.xml
 usr/share/foomatic/db/source/driver/declj250.xml
 usr/share/foomatic/db/source/driver/deskjet.xml
@@ -1922,23 +3247,35 @@ usr/share/foomatic/db/source/driver/eplaser-jp.xml
 usr/share/foomatic/db/source/driver/eplaser.xml
 usr/share/foomatic/db/source/driver/eps9high.xml
 usr/share/foomatic/db/source/driver/eps9mid.xml
+usr/share/foomatic/db/source/driver/epson-escpr.xml
 usr/share/foomatic/db/source/driver/epson.xml
 usr/share/foomatic/db/source/driver/epsonc.xml
 usr/share/foomatic/db/source/driver/epsonepl.xml
 usr/share/foomatic/db/source/driver/escpage.xml
 usr/share/foomatic/db/source/driver/fmlbp.xml
 usr/share/foomatic/db/source/driver/fmpr.xml
+usr/share/foomatic/db/source/driver/foo2hbpl2.xml
+usr/share/foomatic/db/source/driver/foo2hiperc.xml
 usr/share/foomatic/db/source/driver/foo2hp.xml
 usr/share/foomatic/db/source/driver/foo2kyo.xml
 usr/share/foomatic/db/source/driver/foo2lava.xml
+usr/share/foomatic/db/source/driver/foo2oak-z1.xml
+usr/share/foomatic/db/source/driver/foo2oak.xml
 usr/share/foomatic/db/source/driver/foo2qpdl.xml
+usr/share/foomatic/db/source/driver/foo2slx.xml
 usr/share/foomatic/db/source/driver/foo2xqx.xml
+usr/share/foomatic/db/source/driver/foo2zjs-z1.xml
+usr/share/foomatic/db/source/driver/foo2zjs-z2.xml
+usr/share/foomatic/db/source/driver/foo2zjs-z3.xml
 usr/share/foomatic/db/source/driver/foo2zjs.xml
 usr/share/foomatic/db/source/driver/gdi.xml
 usr/share/foomatic/db/source/driver/gutenprint.xml
 usr/share/foomatic/db/source/driver/hl1250.xml
 usr/share/foomatic/db/source/driver/hl7x0.xml
-usr/share/foomatic/db/source/driver/hpijs.xml
+usr/share/foomatic/db/source/driver/hpijs-pcl3.xml
+usr/share/foomatic/db/source/driver/hpijs-pcl5c.xml
+usr/share/foomatic/db/source/driver/hpijs-pcl5e.xml
+usr/share/foomatic/db/source/driver/hplip.xml
 usr/share/foomatic/db/source/driver/ibmpro.xml
 usr/share/foomatic/db/source/driver/imagen.xml
 usr/share/foomatic/db/source/driver/iwhi.xml
@@ -1948,7 +3285,6 @@ usr/share/foomatic/db/source/driver/jetp3852.xml
 usr/share/foomatic/db/source/driver/jj100.xml
 usr/share/foomatic/db/source/driver/la50.xml
 usr/share/foomatic/db/source/driver/la70.xml
-usr/share/foomatic/db/source/driver/la70t.xml
 usr/share/foomatic/db/source/driver/la75.xml
 usr/share/foomatic/db/source/driver/la75plus.xml
 usr/share/foomatic/db/source/driver/laserjet.xml
@@ -1956,6 +3292,7 @@ usr/share/foomatic/db/source/driver/lbp310.xml
 usr/share/foomatic/db/source/driver/lbp320.xml
 usr/share/foomatic/db/source/driver/lbp660.xml
 usr/share/foomatic/db/source/driver/lbp8.xml
+usr/share/foomatic/db/source/driver/lbp800.xml
 usr/share/foomatic/db/source/driver/lex5700.xml
 usr/share/foomatic/db/source/driver/lex7000.xml
 usr/share/foomatic/db/source/driver/lips2p.xml
@@ -1966,7 +3303,6 @@ usr/share/foomatic/db/source/driver/lj250.xml
 usr/share/foomatic/db/source/driver/lj4dith.xml
 usr/share/foomatic/db/source/driver/lj4dithp.xml
 usr/share/foomatic/db/source/driver/lj5gray.xml
-usr/share/foomatic/db/source/driver/lj5mono.xml
 usr/share/foomatic/db/source/driver/ljet2p.xml
 usr/share/foomatic/db/source/driver/ljet3.xml
 usr/share/foomatic/db/source/driver/ljet3d.xml
@@ -1980,7 +3316,6 @@ usr/share/foomatic/db/source/driver/lp2563.xml
 usr/share/foomatic/db/source/driver/lp8000.xml
 usr/share/foomatic/db/source/driver/lpstyl.xml
 usr/share/foomatic/db/source/driver/lq850.xml
-usr/share/foomatic/db/source/driver/lx5000.xml
 usr/share/foomatic/db/source/driver/lxm3200-tweaked.xml
 usr/share/foomatic/db/source/driver/lxm5700m.xml
 usr/share/foomatic/db/source/driver/lxx74.xml
@@ -1994,17 +3329,12 @@ usr/share/foomatic/db/source/driver/md50Eco.xml
 usr/share/foomatic/db/source/driver/md50Mono.xml
 usr/share/foomatic/db/source/driver/md5k.xml
 usr/share/foomatic/db/source/driver/min12xxw.xml
-usr/share/foomatic/db/source/driver/mj500c.xml
-usr/share/foomatic/db/source/driver/mj6000c.xml
 usr/share/foomatic/db/source/driver/mj700v2c.xml
-usr/share/foomatic/db/source/driver/mj8000c.xml
 usr/share/foomatic/db/source/driver/ml600.xml
 usr/share/foomatic/db/source/driver/ml85p.xml
-usr/share/foomatic/db/source/driver/necp2x.upp.xml
-usr/share/foomatic/db/source/driver/necp2x6.upp.xml
+usr/share/foomatic/db/source/driver/necp2xX.upp.xml
 usr/share/foomatic/db/source/driver/necp6.xml
 usr/share/foomatic/db/source/driver/npdl.xml
-usr/share/foomatic/db/source/driver/nwp533.xml
 usr/share/foomatic/db/source/driver/oce9050.xml
 usr/share/foomatic/db/source/driver/oki182.xml
 usr/share/foomatic/db/source/driver/oki4w.xml
@@ -2027,60 +3357,37 @@ usr/share/foomatic/db/source/driver/ppmtomd.xml
 usr/share/foomatic/db/source/driver/pr150.xml
 usr/share/foomatic/db/source/driver/pr201.xml
 usr/share/foomatic/db/source/driver/ptouch.xml
+usr/share/foomatic/db/source/driver/pxlcolor-Gestetner.xml
+usr/share/foomatic/db/source/driver/pxlcolor-InfoPrint.xml
+usr/share/foomatic/db/source/driver/pxlcolor-Infotec.xml
+usr/share/foomatic/db/source/driver/pxlcolor-Lanier.xml
+usr/share/foomatic/db/source/driver/pxlcolor-NRG.xml
+usr/share/foomatic/db/source/driver/pxlcolor-Ricoh.xml
+usr/share/foomatic/db/source/driver/pxlcolor-Samsung.xml
+usr/share/foomatic/db/source/driver/pxlcolor-Savin.xml
 usr/share/foomatic/db/source/driver/pxlcolor.xml
+usr/share/foomatic/db/source/driver/pxldpl.xml
 usr/share/foomatic/db/source/driver/pxljr.xml
+usr/share/foomatic/db/source/driver/pxlmono-Gestetner.xml
+usr/share/foomatic/db/source/driver/pxlmono-InfoPrint.xml
+usr/share/foomatic/db/source/driver/pxlmono-Infotec.xml
+usr/share/foomatic/db/source/driver/pxlmono-Lanier.xml
+usr/share/foomatic/db/source/driver/pxlmono-NRG.xml
+usr/share/foomatic/db/source/driver/pxlmono-Ricoh.xml
+usr/share/foomatic/db/source/driver/pxlmono-Samsung.xml
+usr/share/foomatic/db/source/driver/pxlmono-Savin.xml
 usr/share/foomatic/db/source/driver/pxlmono.xml
 usr/share/foomatic/db/source/driver/r4081.xml
-usr/share/foomatic/db/source/driver/ras1.upp.xml
-usr/share/foomatic/db/source/driver/ras24.upp.xml
-usr/share/foomatic/db/source/driver/ras3.upp.xml
-usr/share/foomatic/db/source/driver/ras32.upp.xml
-usr/share/foomatic/db/source/driver/ras4.upp.xml
-usr/share/foomatic/db/source/driver/ras8m.upp.xml
 usr/share/foomatic/db/source/driver/rastertokmXXXXdl.xml
+usr/share/foomatic/db/source/driver/rastertosag-gdi.xml
 usr/share/foomatic/db/source/driver/rpdl.xml
-usr/share/foomatic/db/source/driver/s400a1.upp.xml
-usr/share/foomatic/db/source/driver/s400b1.upp.xml
 usr/share/foomatic/db/source/driver/sharp.upp.xml
 usr/share/foomatic/db/source/driver/sipixa6.upp.xml
 usr/share/foomatic/db/source/driver/sj48.xml
 usr/share/foomatic/db/source/driver/slap.xml
-usr/share/foomatic/db/source/driver/sparc.xml
 usr/share/foomatic/db/source/driver/splix.xml
-usr/share/foomatic/db/source/driver/st640ih.upp.xml
-usr/share/foomatic/db/source/driver/st640ihg.upp.xml
-usr/share/foomatic/db/source/driver/st640p.upp.xml
-usr/share/foomatic/db/source/driver/st640pg.upp.xml
-usr/share/foomatic/db/source/driver/st640pl.upp.xml
-usr/share/foomatic/db/source/driver/st640plg.upp.xml
-usr/share/foomatic/db/source/driver/st800.xml
-usr/share/foomatic/db/source/driver/stc.upp.xml
-usr/share/foomatic/db/source/driver/stc1520h.upp.xml
-usr/share/foomatic/db/source/driver/stc2.upp.xml
-usr/share/foomatic/db/source/driver/stc2_h.upp.xml
-usr/share/foomatic/db/source/driver/stc2s_h.upp.xml
-usr/share/foomatic/db/source/driver/stc300.upp.xml
-usr/share/foomatic/db/source/driver/stc300bl.upp.xml
-usr/share/foomatic/db/source/driver/stc300bm.upp.xml
-usr/share/foomatic/db/source/driver/stc500p.upp.xml
-usr/share/foomatic/db/source/driver/stc500ph.upp.xml
-usr/share/foomatic/db/source/driver/stc600ih.upp.xml
-usr/share/foomatic/db/source/driver/stc600p.upp.xml
-usr/share/foomatic/db/source/driver/stc600pl.upp.xml
-usr/share/foomatic/db/source/driver/stc640p.upp.xml
-usr/share/foomatic/db/source/driver/stc740ih.upp.xml
-usr/share/foomatic/db/source/driver/stc740p.upp.xml
-usr/share/foomatic/db/source/driver/stc740pl.upp.xml
-usr/share/foomatic/db/source/driver/stc800ih.upp.xml
-usr/share/foomatic/db/source/driver/stc800p.upp.xml
-usr/share/foomatic/db/source/driver/stc800pl.upp.xml
-usr/share/foomatic/db/source/driver/stc_h.upp.xml
-usr/share/foomatic/db/source/driver/stc_l.upp.xml
-usr/share/foomatic/db/source/driver/stcany.upp.xml
 usr/share/foomatic/db/source/driver/stcolor.xml
-usr/share/foomatic/db/source/driver/t4693d2.xml
-usr/share/foomatic/db/source/driver/t4693d4.xml
-usr/share/foomatic/db/source/driver/t4693d8.xml
+usr/share/foomatic/db/source/driver/t4693dX.xml
 usr/share/foomatic/db/source/driver/tek4696.xml
 usr/share/foomatic/db/source/driver/xes.xml
 #usr/share/foomatic/db/source/opt
@@ -2178,7 +3485,6 @@ usr/share/foomatic/db/source/opt/188.xml
 usr/share/foomatic/db/source/opt/189.xml
 usr/share/foomatic/db/source/opt/190.xml
 usr/share/foomatic/db/source/opt/191.xml
-usr/share/foomatic/db/source/opt/192.xml
 usr/share/foomatic/db/source/opt/193.xml
 usr/share/foomatic/db/source/opt/194.xml
 usr/share/foomatic/db/source/opt/195.xml
@@ -2277,7 +3583,6 @@ usr/share/foomatic/db/source/opt/97.xml
 usr/share/foomatic/db/source/opt/98.xml
 usr/share/foomatic/db/source/opt/99.xml
 usr/share/foomatic/db/source/opt/Brother-MediaType.xml
-usr/share/foomatic/db/source/opt/GS-HalftoningAlgorithm-Gray.xml
 usr/share/foomatic/db/source/opt/Minolta-PCL600.xml
 usr/share/foomatic/db/source/opt/PCL-4-5-InputSlot.xml
 usr/share/foomatic/db/source/opt/PCL-XL-InputSlot.xml
@@ -2285,9 +3590,13 @@ usr/share/foomatic/db/source/opt/PJL-Duplex.xml
 usr/share/foomatic/db/source/opt/PJL-PJLBinding.xml
 usr/share/foomatic/db/source/opt/PJL-PJLDuplex.xml
 usr/share/foomatic/db/source/opt/PageSize-A4only.xml
-usr/share/foomatic/db/source/opt/Postscript-PreFilter.xml
+usr/share/foomatic/db/source/opt/Postscript-Duplex.xml
+usr/share/foomatic/db/source/opt/Postscript-InputSlot.xml
+usr/share/foomatic/db/source/opt/Postscript-PageSize.xml
 usr/share/foomatic/db/source/opt/Postscript-Resolution.xml
-usr/share/foomatic/db/source/opt/bj8pa06n-Resolution.xml
+usr/share/foomatic/db/source/opt/Postscript-largeformat-PageSize.xml
+usr/share/foomatic/db/source/opt/Postscript1-Resolution.xml
+usr/share/foomatic/db/source/opt/bj8XXYYZ-Resolution.xml
 usr/share/foomatic/db/source/opt/bjc250gs-BlueGamma.xml
 usr/share/foomatic/db/source/opt/bjc250gs-ColorMode.xml
 usr/share/foomatic/db/source/opt/bjc250gs-ComposeK.xml
@@ -2315,8 +3624,10 @@ usr/share/foomatic/db/source/opt/cZ11somsom-Magenta.xml
 usr/share/foomatic/db/source/opt/cZ11somsom-Yellow.xml
 usr/share/foomatic/db/source/opt/cdj5XX-BlackCorrect.xml
 usr/share/foomatic/db/source/opt/cdj5XX-Depletion.xml
+usr/share/foomatic/db/source/opt/cdj690X-Resolution.xml
 usr/share/foomatic/db/source/opt/cljet5-ColorMode.xml
 usr/share/foomatic/db/source/opt/dnj650c-Resolution.xml
+usr/share/foomatic/db/source/opt/dnj750X-Resolution.xml
 usr/share/foomatic/db/source/opt/drv_x125-Bidirectional.xml
 usr/share/foomatic/db/source/opt/drv_x125-ColorMode.xml
 usr/share/foomatic/db/source/opt/drv_x125-Device.xml
@@ -2359,12 +3670,18 @@ usr/share/foomatic/db/source/opt/hl7x0-InputSlot.xml
 usr/share/foomatic/db/source/opt/hl7x0-MediaType.xml
 usr/share/foomatic/db/source/opt/hl7x0-PIN.xml
 usr/share/foomatic/db/source/opt/hl7x0-Resolution.xml
-usr/share/foomatic/db/source/opt/hpijs-Duplex.xml
-usr/share/foomatic/db/source/opt/hpijs-InputSlot.xml
-usr/share/foomatic/db/source/opt/hpijs-Model.xml
-usr/share/foomatic/db/source/opt/hpijs-PageSize.xml
-usr/share/foomatic/db/source/opt/hpijs-PrintoutMode.xml
-usr/share/foomatic/db/source/opt/hpijs-Quality.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl3-Model.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl3-PageSize.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl3-PrintoutMode.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl3-Quality.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl5-Duplex.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl5-InputSlot.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl5-PageSize.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl5c-PrintoutMode.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl5c-Quality.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl5e-PrintoutMode.xml
+usr/share/foomatic/db/source/opt/hpijs-pcl5e-Quality.xml
+usr/share/foomatic/db/source/opt/ibmpro-Resolution.xml
 usr/share/foomatic/db/source/opt/jap-PageSize.xml
 usr/share/foomatic/db/source/opt/jap-Resolution.xml
 usr/share/foomatic/db/source/opt/largeformat-PageSize.xml
@@ -2395,6 +3712,7 @@ usr/share/foomatic/db/source/opt/pcl3-PrintoutMode-HPDJ520.xml
 usr/share/foomatic/db/source/opt/pentaxpj-Density.xml
 usr/share/foomatic/db/source/opt/pentaxpj-OutputType.xml
 usr/share/foomatic/db/source/opt/pentaxpj-PageSize.xml
+usr/share/foomatic/db/source/opt/pjl-HP-DesignJet-InputSlot.xml
 usr/share/foomatic/db/source/opt/pjl-Samsung-ML-1650-AllowReprint.xml
 usr/share/foomatic/db/source/opt/pjl-Samsung-ML-1650-Economode.xml
 usr/share/foomatic/db/source/opt/pjl-Samsung-ML-1650-MediaType.xml
@@ -2424,14 +3742,13 @@ usr/share/foomatic/db/source/opt/ppmtomd-Primer.xml
 usr/share/foomatic/db/source/opt/ppmtomd-PrintColors.xml
 usr/share/foomatic/db/source/opt/ppmtomd-PrintingMethod.xml
 usr/share/foomatic/db/source/opt/ppmtomd-UseMultiColourRibbon.xml
-usr/share/foomatic/db/source/opt/pxlmono-GSResolution.xml
-usr/share/foomatic/db/source/opt/pxlmono-JCLResolution.xml
 usr/share/foomatic/db/source/opt/pxlmono-PrinterResolution.xml
 usr/share/foomatic/db/source/opt/pxlmono-PrintoutMode.xml
 usr/share/foomatic/db/source/opt/s400a1-Resolution.xml
 usr/share/foomatic/db/source/opt/sipixa6.upp-PageSize.xml
-usr/share/foomatic/db/source/opt/st640ih-Resolution.xml
-usr/share/foomatic/db/source/opt/stc300.upp-Resolution.xml
+usr/share/foomatic/db/source/opt/st640X-Resolution.xml
+usr/share/foomatic/db/source/opt/stc300X.upp-Resolution.xml
+usr/share/foomatic/db/source/opt/stcanyX-Resolution.xml
 #usr/share/foomatic/db/source/printer
 usr/share/foomatic/db/source/printer/Alps-MD-1000.xml
 usr/share/foomatic/db/source/printer/Alps-MD-1300.xml
@@ -2480,7 +3797,19 @@ usr/share/foomatic/db/source/printer/Avery-Personal_Label_Printer.xml
 usr/share/foomatic/db/source/printer/Avery-Personal_Label_Printerplus.xml
 usr/share/foomatic/db/source/printer/Brother-4550.xml
 usr/share/foomatic/db/source/printer/Brother-DCP-1200.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-7010.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-7020.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-7025.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-7045N.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-8020.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-8025D.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-8040.xml
 usr/share/foomatic/db/source/printer/Brother-DCP-8045D.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-8080DN.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-8085DN.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-9010CN.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-9040CN.xml
+usr/share/foomatic/db/source/printer/Brother-DCP-9045CDN.xml
 usr/share/foomatic/db/source/printer/Brother-HJ-400.xml
 usr/share/foomatic/db/source/printer/Brother-HL-1020.xml
 usr/share/foomatic/db/source/printer/Brother-HL-1030.xml
@@ -2501,19 +3830,32 @@ usr/share/foomatic/db/source/printer/Brother-HL-1440.xml
 usr/share/foomatic/db/source/printer/Brother-HL-1450.xml
 usr/share/foomatic/db/source/printer/Brother-HL-1470N.xml
 usr/share/foomatic/db/source/printer/Brother-HL-1650.xml
+usr/share/foomatic/db/source/printer/Brother-HL-1650_70N.xml
 usr/share/foomatic/db/source/printer/Brother-HL-1660e.xml
 usr/share/foomatic/db/source/printer/Brother-HL-1670N.xml
 usr/share/foomatic/db/source/printer/Brother-HL-1850.xml
+usr/share/foomatic/db/source/printer/Brother-HL-1850_70N.xml
 usr/share/foomatic/db/source/printer/Brother-HL-1870N.xml
+usr/share/foomatic/db/source/printer/Brother-HL-2030.xml
+usr/share/foomatic/db/source/printer/Brother-HL-2035.xml
+usr/share/foomatic/db/source/printer/Brother-HL-2040.xml
 usr/share/foomatic/db/source/printer/Brother-HL-2060.xml
+usr/share/foomatic/db/source/printer/Brother-HL-2070N.xml
+usr/share/foomatic/db/source/printer/Brother-HL-2140.xml
+usr/share/foomatic/db/source/printer/Brother-HL-2170W.xml
 usr/share/foomatic/db/source/printer/Brother-HL-2400CeN.xml
 usr/share/foomatic/db/source/printer/Brother-HL-2460.xml
 usr/share/foomatic/db/source/printer/Brother-HL-2460N.xml
 usr/share/foomatic/db/source/printer/Brother-HL-2600CN.xml
+usr/share/foomatic/db/source/printer/Brother-HL-2700CN.xml
+usr/share/foomatic/db/source/printer/Brother-HL-3070CW.xml
 usr/share/foomatic/db/source/printer/Brother-HL-3260N.xml
 usr/share/foomatic/db/source/printer/Brother-HL-3400CN.xml
 usr/share/foomatic/db/source/printer/Brother-HL-3450CN.xml
 usr/share/foomatic/db/source/printer/Brother-HL-4000CN.xml
+usr/share/foomatic/db/source/printer/Brother-HL-4040CN.xml
+usr/share/foomatic/db/source/printer/Brother-HL-4050CDN.xml
+usr/share/foomatic/db/source/printer/Brother-HL-4070CDW.xml
 usr/share/foomatic/db/source/printer/Brother-HL-4Ve.xml
 usr/share/foomatic/db/source/printer/Brother-HL-5030.xml
 usr/share/foomatic/db/source/printer/Brother-HL-5040.xml
@@ -2522,6 +3864,14 @@ usr/share/foomatic/db/source/printer/Brother-HL-5070N.xml
 usr/share/foomatic/db/source/printer/Brother-HL-5140.xml
 usr/share/foomatic/db/source/printer/Brother-HL-5150D.xml
 usr/share/foomatic/db/source/printer/Brother-HL-5170DN.xml
+usr/share/foomatic/db/source/printer/Brother-HL-5240.xml
+usr/share/foomatic/db/source/printer/Brother-HL-5250DN.xml
+usr/share/foomatic/db/source/printer/Brother-HL-5270DN.xml
+usr/share/foomatic/db/source/printer/Brother-HL-5350DN.xml
+usr/share/foomatic/db/source/printer/Brother-HL-5370DW.xml
+usr/share/foomatic/db/source/printer/Brother-HL-5380DN.xml
+usr/share/foomatic/db/source/printer/Brother-HL-6050.xml
+usr/share/foomatic/db/source/printer/Brother-HL-6050D_DN.xml
 usr/share/foomatic/db/source/printer/Brother-HL-630.xml
 usr/share/foomatic/db/source/printer/Brother-HL-660.xml
 usr/share/foomatic/db/source/printer/Brother-HL-7050.xml
@@ -2530,17 +3880,45 @@ usr/share/foomatic/db/source/printer/Brother-HL-720.xml
 usr/share/foomatic/db/source/printer/Brother-HL-730.xml
 usr/share/foomatic/db/source/printer/Brother-HL-760.xml
 usr/share/foomatic/db/source/printer/Brother-HL-8.xml
+usr/share/foomatic/db/source/printer/Brother-HL-8050N.xml
 usr/share/foomatic/db/source/printer/Brother-HL-820.xml
 usr/share/foomatic/db/source/printer/Brother-HL-960.xml
 usr/share/foomatic/db/source/printer/Brother-MC-3000.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-295CN.xml
 usr/share/foomatic/db/source/printer/Brother-MFC-4350.xml
 usr/share/foomatic/db/source/printer/Brother-MFC-6550MC.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-7225N.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-7450.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-7820N.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-7840N.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-7840W.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8220.xml
 usr/share/foomatic/db/source/printer/Brother-MFC-8300.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8370DN.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8380DN.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8420.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8440.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8480DN.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8600.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8640D.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8670DN.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8680DN.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8820D.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8840D.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8880DN.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-8890DW.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-9010CN.xml
 usr/share/foomatic/db/source/printer/Brother-MFC-9050.xml
 usr/share/foomatic/db/source/printer/Brother-MFC-9100c.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-9120CN.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-9320CW.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-9420CN.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-9440CN.xml
+usr/share/foomatic/db/source/printer/Brother-MFC-9450CDN.xml
 usr/share/foomatic/db/source/printer/Brother-MFC-9500.xml
 usr/share/foomatic/db/source/printer/Brother-MFC-9600.xml
 usr/share/foomatic/db/source/printer/Brother-MFC-P2500.xml
+usr/share/foomatic/db/source/printer/Brother-MFC9840CDW.xml
 usr/share/foomatic/db/source/printer/Brother-MFC_7150C.xml
 usr/share/foomatic/db/source/printer/Brother-MP-21C.xml
 usr/share/foomatic/db/source/printer/Brother-PT-1500PC.xml
@@ -2548,6 +3926,7 @@ usr/share/foomatic/db/source/printer/Brother-PT-18R.xml
 usr/share/foomatic/db/source/printer/Brother-PT-1950.xml
 usr/share/foomatic/db/source/printer/Brother-PT-1950VP.xml
 usr/share/foomatic/db/source/printer/Brother-PT-1960.xml
+usr/share/foomatic/db/source/printer/Brother-PT-2300.xml
 usr/share/foomatic/db/source/printer/Brother-PT-2420PC.xml
 usr/share/foomatic/db/source/printer/Brother-PT-2450DX.xml
 usr/share/foomatic/db/source/printer/Brother-PT-2500PC.xml
@@ -2632,6 +4011,8 @@ usr/share/foomatic/db/source/printer/Canon-LBP-1260.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-1760.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-310.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-320_Pro.xml
+usr/share/foomatic/db/source/printer/Canon-LBP-3360.xml
+usr/share/foomatic/db/source/printer/Canon-LBP-3460.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-350.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-430.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-460.xml
@@ -2639,6 +4020,10 @@ usr/share/foomatic/db/source/printer/Canon-LBP-470.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-4U.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-4plus.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-4sx.xml
+usr/share/foomatic/db/source/printer/Canon-LBP-5360.xml
+usr/share/foomatic/db/source/printer/Canon-LBP-5960.xml
+usr/share/foomatic/db/source/printer/Canon-LBP-5970.xml
+usr/share/foomatic/db/source/printer/Canon-LBP-5975.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-600.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-660.xml
 usr/share/foomatic/db/source/printer/Canon-LBP-800.xml
@@ -2657,6 +4042,7 @@ usr/share/foomatic/db/source/printer/Canon-Multipass_L6000.xml
 usr/share/foomatic/db/source/printer/Canon-S100.xml
 usr/share/foomatic/db/source/printer/Canon-S200.xml
 usr/share/foomatic/db/source/printer/Canon-S300.xml
+usr/share/foomatic/db/source/printer/Canon-S330_Photo.xml
 usr/share/foomatic/db/source/printer/Canon-S400.xml
 usr/share/foomatic/db/source/printer/Canon-S450.xml
 usr/share/foomatic/db/source/printer/Canon-S4500.xml
@@ -2669,8 +4055,53 @@ usr/share/foomatic/db/source/printer/Canon-SELPHY-CP-500.xml
 usr/share/foomatic/db/source/printer/Canon-SELPHY-CP-510.xml
 usr/share/foomatic/db/source/printer/Canon-SELPHY-CP-600.xml
 usr/share/foomatic/db/source/printer/Canon-SELPHY-CP-710.xml
+usr/share/foomatic/db/source/printer/Canon-i450.xml
 usr/share/foomatic/db/source/printer/Canon-iP4000.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_1023.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_1023N.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_1023iF.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_2016.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_2016i.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_2018.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_2020.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_2020i.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_2022.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_2200.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_2230.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_2270.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_2800.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_3025.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_3225.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_3300.xml
 usr/share/foomatic/db/source/printer/Canon-imageRunner_330s.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_3570.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_4570.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_5000.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_5570.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_6000.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_6570.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_7086.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_7095.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_7105.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_8070.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_8500.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C2550.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C2570.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C2570i.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C2620N.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C3100.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C3170.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C3170i.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C3200.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C5058.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C5068.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C5180.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C5185.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C5185i.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C5800.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C5870U.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C6800.xml
+usr/share/foomatic/db/source/printer/Canon-imageRunner_C6870U.xml
 usr/share/foomatic/db/source/printer/Casio-KL-E11.xml
 usr/share/foomatic/db/source/printer/Casio-KL-P1000.xml
 usr/share/foomatic/db/source/printer/Casio-KP-C10.xml
@@ -2696,6 +4127,11 @@ usr/share/foomatic/db/source/printer/DEC-LJ250.xml
 usr/share/foomatic/db/source/printer/DEC-LN03.xml
 usr/share/foomatic/db/source/printer/DEC-LN07.xml
 usr/share/foomatic/db/source/printer/DEC-LN17.xml
+usr/share/foomatic/db/source/printer/Dell-1110.xml
+usr/share/foomatic/db/source/printer/Dell-1355.xml
+usr/share/foomatic/db/source/printer/Dell-3000cn.xml
+usr/share/foomatic/db/source/printer/Dell-3010cn.xml
+usr/share/foomatic/db/source/printer/Dell-3100cn.xml
 usr/share/foomatic/db/source/printer/Dell-M5200.xml
 usr/share/foomatic/db/source/printer/Dell-S2500.xml
 usr/share/foomatic/db/source/printer/Dymo-CoStar-ASCII_250.xml
@@ -2708,32 +4144,105 @@ usr/share/foomatic/db/source/printer/Dymo-CoStar-LabelWriter_XLplus.xml
 usr/share/foomatic/db/source/printer/Dymo-CoStar-SE250.xml
 usr/share/foomatic/db/source/printer/Dymo-CoStar-SE250plus.xml
 usr/share/foomatic/db/source/printer/Dymo-CoStar-Turbo.xml
+usr/share/foomatic/db/source/printer/Epson-1430_Series.xml
+usr/share/foomatic/db/source/printer/Epson-1500_Series.xml
+usr/share/foomatic/db/source/printer/Epson-AL-2600.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C1000.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C1900.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C1900_PS3.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C2000.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C2000_PS3.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C2600.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C2800.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C3800.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C4000.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C4000_PS3.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C4100.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C4200.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C8500.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C8500PS.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C8600.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C8600_PS3.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C900.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C9100.xml
+usr/share/foomatic/db/source/printer/Epson-AL-C9200.xml
+usr/share/foomatic/db/source/printer/Epson-AL-CX21.xml
+usr/share/foomatic/db/source/printer/Epson-AL-M2000.xml
+usr/share/foomatic/db/source/printer/Epson-AL-M2010.xml
+usr/share/foomatic/db/source/printer/Epson-AL-M2300.xml
+usr/share/foomatic/db/source/printer/Epson-AL-M2310.xml
+usr/share/foomatic/db/source/printer/Epson-AL-M2400.xml
+usr/share/foomatic/db/source/printer/Epson-AL-M2410.xml
+usr/share/foomatic/db/source/printer/Epson-AL-M4000.xml
+usr/share/foomatic/db/source/printer/Epson-AL-M8000.xml
+usr/share/foomatic/db/source/printer/Epson-AL-MX20.xml
+usr/share/foomatic/db/source/printer/Epson-AL-MX21.xml
 usr/share/foomatic/db/source/printer/Epson-ActionLaser_1100.xml
 usr/share/foomatic/db/source/printer/Epson-ActionLaser_II.xml
 usr/share/foomatic/db/source/printer/Epson-ActionPrinter_3250.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C1000.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C1900.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C1900PS.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C2000.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C2000PS.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C4000.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C4000PS.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C4100.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C4100PS.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C8500.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C8500PS.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C8600.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C8600PS.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C900.xml
-usr/share/foomatic/db/source/printer/Epson-AcuLaser_C9100.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_1430_Series.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_50.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_630_Series.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_700.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_710.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_720_Series.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_730_Series.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_800.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_810.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_830_Series.xml
+usr/share/foomatic/db/source/printer/Epson-Artisan_837_Series.xml
+usr/share/foomatic/db/source/printer/Epson-B42WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-BX305_Plus_Series.xml
+usr/share/foomatic/db/source/printer/Epson-BX305_Series.xml
+usr/share/foomatic/db/source/printer/Epson-BX320FW_Series.xml
+usr/share/foomatic/db/source/printer/Epson-BX525WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-BX535WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-BX620FWD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-BX630FW_Series.xml
+usr/share/foomatic/db/source/printer/Epson-BX635FWD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-BX935FWD_Series.xml
 usr/share/foomatic/db/source/printer/Epson-CL_700.xml
 usr/share/foomatic/db/source/printer/Epson-CL_750.xml
 usr/share/foomatic/db/source/printer/Epson-CL_760.xml
 usr/share/foomatic/db/source/printer/Epson-Dot_Matrix.xml
+usr/share/foomatic/db/source/printer/Epson-E-150.xml
+usr/share/foomatic/db/source/printer/Epson-E-200.xml
+usr/share/foomatic/db/source/printer/Epson-E-300.xml
+usr/share/foomatic/db/source/printer/Epson-E-330.xml
+usr/share/foomatic/db/source/printer/Epson-E-330S.xml
+usr/share/foomatic/db/source/printer/Epson-E-340.xml
+usr/share/foomatic/db/source/printer/Epson-E-350.xml
+usr/share/foomatic/db/source/printer/Epson-E-360_Series.xml
+usr/share/foomatic/db/source/printer/Epson-E-370_Series.xml
+usr/share/foomatic/db/source/printer/Epson-E-500.xml
+usr/share/foomatic/db/source/printer/Epson-E-520.xml
+usr/share/foomatic/db/source/printer/Epson-E-530.xml
+usr/share/foomatic/db/source/printer/Epson-E-600.xml
+usr/share/foomatic/db/source/printer/Epson-E-700.xml
+usr/share/foomatic/db/source/printer/Epson-E-720.xml
+usr/share/foomatic/db/source/printer/Epson-E-800.xml
+usr/share/foomatic/db/source/printer/Epson-E-810.xml
+usr/share/foomatic/db/source/printer/Epson-E-820.xml
+usr/share/foomatic/db/source/printer/Epson-E-830_Series.xml
+usr/share/foomatic/db/source/printer/Epson-E-840_Series.xml
 usr/share/foomatic/db/source/printer/Epson-EM_900C.xml
 usr/share/foomatic/db/source/printer/Epson-EM_900CN.xml
 usr/share/foomatic/db/source/printer/Epson-EM_930C.xml
 usr/share/foomatic/db/source/printer/Epson-EM_930CN.xml
+usr/share/foomatic/db/source/printer/Epson-EP-306_Series.xml
+usr/share/foomatic/db/source/printer/Epson-EP-705A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-EP-706A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-EP-775A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-EP-776A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-EP-801A.xml
+usr/share/foomatic/db/source/printer/Epson-EP-805A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-EP-806A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-EP-901A.xml
+usr/share/foomatic/db/source/printer/Epson-EP-901F.xml
+usr/share/foomatic/db/source/printer/Epson-EP-905A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-EP-905F_Series.xml
+usr/share/foomatic/db/source/printer/Epson-EP-906F_Series.xml
+usr/share/foomatic/db/source/printer/Epson-EP-976A3_Series.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-5200.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-5200plus.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-5500W.xml
@@ -2745,10 +4254,11 @@ usr/share/foomatic/db/source/printer/Epson-EPL-5800L.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-5800PS.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-5900.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-5900L.xml
-usr/share/foomatic/db/source/printer/Epson-EPL-5900PS.xml
+usr/share/foomatic/db/source/printer/Epson-EPL-5900_PS3.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-6100.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-6100L.xml
-usr/share/foomatic/db/source/printer/Epson-EPL-6100PS.xml
+usr/share/foomatic/db/source/printer/Epson-EPL-6100_PS3.xml
+usr/share/foomatic/db/source/printer/Epson-EPL-6200.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-6200L.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-7100.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-N1600.xml
@@ -2759,11 +4269,39 @@ usr/share/foomatic/db/source/printer/Epson-EPL-N2050PSplus.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-N2050plus.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-N2120.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-N2500.xml
-usr/share/foomatic/db/source/printer/Epson-EPL-N2500PS.xml
+usr/share/foomatic/db/source/printer/Epson-EPL-N2500_PS3.xml
+usr/share/foomatic/db/source/printer/Epson-EPL-N2550.xml
+usr/share/foomatic/db/source/printer/Epson-EPL-N2700.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-N2750.xml
 usr/share/foomatic/db/source/printer/Epson-EPL-N2750PS.xml
+usr/share/foomatic/db/source/printer/Epson-EPL-N3000.xml
+usr/share/foomatic/db/source/printer/Epson-EPL-N7000.xml
+usr/share/foomatic/db/source/printer/Epson-EP_302.xml
+usr/share/foomatic/db/source/printer/Epson-EP_4004.xml
+usr/share/foomatic/db/source/printer/Epson-EP_702A.xml
+usr/share/foomatic/db/source/printer/Epson-EP_703A.xml
+usr/share/foomatic/db/source/printer/Epson-EP_704A.xml
+usr/share/foomatic/db/source/printer/Epson-EP_774A.xml
+usr/share/foomatic/db/source/printer/Epson-EP_802A.xml
+usr/share/foomatic/db/source/printer/Epson-EP_803A.xml
+usr/share/foomatic/db/source/printer/Epson-EP_804A.xml
+usr/share/foomatic/db/source/printer/Epson-EP_902A.xml
+usr/share/foomatic/db/source/printer/Epson-EP_903A.xml
+usr/share/foomatic/db/source/printer/Epson-EP_903F.xml
+usr/share/foomatic/db/source/printer/Epson-EP_904A.xml
+usr/share/foomatic/db/source/printer/Epson-EP_904F.xml
 usr/share/foomatic/db/source/printer/Epson-E_100.xml
+usr/share/foomatic/db/source/printer/Epson-K100_Series.xml
+usr/share/foomatic/db/source/printer/Epson-K200_Series.xml
+usr/share/foomatic/db/source/printer/Epson-K300_Series.xml
 usr/share/foomatic/db/source/printer/Epson-L-1000.xml
+usr/share/foomatic/db/source/printer/Epson-L110_Series.xml
+usr/share/foomatic/db/source/printer/Epson-L210_Series.xml
+usr/share/foomatic/db/source/printer/Epson-L300_Series.xml
+usr/share/foomatic/db/source/printer/Epson-L350_Series.xml
+usr/share/foomatic/db/source/printer/Epson-L355_Series.xml
+usr/share/foomatic/db/source/printer/Epson-L550_Series.xml
+usr/share/foomatic/db/source/printer/Epson-L555_Series.xml
 usr/share/foomatic/db/source/printer/Epson-LP-1800.xml
 usr/share/foomatic/db/source/printer/Epson-LP-1900.xml
 usr/share/foomatic/db/source/printer/Epson-LP-2000.xml
@@ -2781,27 +4319,46 @@ usr/share/foomatic/db/source/printer/Epson-LP-8000C.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8100.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8200C.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8300C.xml
+usr/share/foomatic/db/source/printer/Epson-LP-8300CPD.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8300F.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8400F.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8500C.xml
+usr/share/foomatic/db/source/printer/Epson-LP-8500CPD.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8600.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8600F.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8700.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8800C.xml
+usr/share/foomatic/db/source/printer/Epson-LP-8800CPS.xml
 usr/share/foomatic/db/source/printer/Epson-LP-8900.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9000B.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9000C.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9100.xml
+usr/share/foomatic/db/source/printer/Epson-LP-9100PS3.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9200B.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9200C.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9300.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9400.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9500C.xml
+usr/share/foomatic/db/source/printer/Epson-LP-9500CPS.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9600.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9600S.xml
+usr/share/foomatic/db/source/printer/Epson-LP-9600SPD.xml
 usr/share/foomatic/db/source/printer/Epson-LP-9800C.xml
+usr/share/foomatic/db/source/printer/Epson-LP-M5000.xml
+usr/share/foomatic/db/source/printer/Epson-LP-M5300.xml
+usr/share/foomatic/db/source/printer/Epson-LP-M6000.xml
+usr/share/foomatic/db/source/printer/Epson-LP-S210.xml
+usr/share/foomatic/db/source/printer/Epson-LP-S300.xml
+usr/share/foomatic/db/source/printer/Epson-LP-S3000.xml
+usr/share/foomatic/db/source/printer/Epson-LP-S310.xml
+usr/share/foomatic/db/source/printer/Epson-LP-S3200.xml
+usr/share/foomatic/db/source/printer/Epson-LP-S3500.xml
+usr/share/foomatic/db/source/printer/Epson-LP-S4000.xml
+usr/share/foomatic/db/source/printer/Epson-LP-S4200.xml
 usr/share/foomatic/db/source/printer/Epson-LP-S4500.xml
 usr/share/foomatic/db/source/printer/Epson-LP-S6500.xml
+usr/share/foomatic/db/source/printer/Epson-LP-S7500.xml
+usr/share/foomatic/db/source/printer/Epson-LP-S8100.xml
 usr/share/foomatic/db/source/printer/Epson-LP-xx00.xml
 usr/share/foomatic/db/source/printer/Epson-LP_8000.xml
 usr/share/foomatic/db/source/printer/Epson-LQ-24.xml
@@ -2810,17 +4367,77 @@ usr/share/foomatic/db/source/printer/Epson-LQ-500.xml
 usr/share/foomatic/db/source/printer/Epson-LQ-570plus.xml
 usr/share/foomatic/db/source/printer/Epson-LQ-850.xml
 usr/share/foomatic/db/source/printer/Epson-LX-1050.xml
+usr/share/foomatic/db/source/printer/Epson-LX-300plus.xml
+usr/share/foomatic/db/source/printer/Epson-M100_Series.xml
+usr/share/foomatic/db/source/printer/Epson-M105_Series.xml
+usr/share/foomatic/db/source/printer/Epson-M200_Series.xml
+usr/share/foomatic/db/source/printer/Epson-M205_Series.xml
 usr/share/foomatic/db/source/printer/Epson-MC_10000.xml
 usr/share/foomatic/db/source/printer/Epson-MC_2000.xml
 usr/share/foomatic/db/source/printer/Epson-MC_5000.xml
 usr/share/foomatic/db/source/printer/Epson-MC_7000.xml
 usr/share/foomatic/db/source/printer/Epson-MC_9000.xml
+usr/share/foomatic/db/source/printer/Epson-ME-100_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME-10_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME-301_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME-303_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME-400_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_10_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_200.xml
+usr/share/foomatic/db/source/printer/Epson-ME_320_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_32_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_330_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_33_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_340_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_520_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_530_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_560W_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_570_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_620F_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_82WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_85ND_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_900WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_940FW_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_960FWD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-ME_OFFICE_650FN.xml
+usr/share/foomatic/db/source/printer/Epson-ME_Office_510.xml
+usr/share/foomatic/db/source/printer/Epson-ME_Office_600F.xml
+usr/share/foomatic/db/source/printer/Epson-ME_Office_700FW.xml
 usr/share/foomatic/db/source/printer/Epson-MJ_5100C.xml
 usr/share/foomatic/db/source/printer/Epson-MJ_520C.xml
 usr/share/foomatic/db/source/printer/Epson-MJ_6000C.xml
 usr/share/foomatic/db/source/printer/Epson-MJ_8000C.xml
 usr/share/foomatic/db/source/printer/Epson-MJ_930C.xml
 usr/share/foomatic/db/source/printer/Epson-MachJet.xml
+usr/share/foomatic/db/source/printer/Epson-N10_N11_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX125_NX127_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX130_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX130_TX130_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX230_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX230_TX230_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX330_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX420_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX430_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX430_TX435_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX530_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX620_Series.xml
+usr/share/foomatic/db/source/printer/Epson-NX635_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PM-A750.xml
+usr/share/foomatic/db/source/printer/Epson-PM-A820.xml
+usr/share/foomatic/db/source/printer/Epson-PM-A840.xml
+usr/share/foomatic/db/source/printer/Epson-PM-A840S.xml
+usr/share/foomatic/db/source/printer/Epson-PM-A890.xml
+usr/share/foomatic/db/source/printer/Epson-PM-A920.xml
+usr/share/foomatic/db/source/printer/Epson-PM-A940.xml
+usr/share/foomatic/db/source/printer/Epson-PM-A950.xml
+usr/share/foomatic/db/source/printer/Epson-PM-A970.xml
+usr/share/foomatic/db/source/printer/Epson-PM-D600.xml
+usr/share/foomatic/db/source/printer/Epson-PM-D800.xml
+usr/share/foomatic/db/source/printer/Epson-PM-D870.xml
+usr/share/foomatic/db/source/printer/Epson-PM-G4500.xml
+usr/share/foomatic/db/source/printer/Epson-PM-G850.xml
+usr/share/foomatic/db/source/printer/Epson-PM-T960.xml
+usr/share/foomatic/db/source/printer/Epson-PM-T990.xml
 usr/share/foomatic/db/source/printer/Epson-PM_10000.xml
 usr/share/foomatic/db/source/printer/Epson-PM_2000C.xml
 usr/share/foomatic/db/source/printer/Epson-PM_2200C.xml
@@ -2858,18 +4475,95 @@ usr/share/foomatic/db/source/printer/Epson-PM_G700.xml
 usr/share/foomatic/db/source/printer/Epson-PM_G720.xml
 usr/share/foomatic/db/source/printer/Epson-PM_G800.xml
 usr/share/foomatic/db/source/printer/Epson-PM_G820.xml
+usr/share/foomatic/db/source/printer/Epson-PX-045A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX-046A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX-105F_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX-205_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX-436A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX-501A.xml
+usr/share/foomatic/db/source/printer/Epson-PX-505F_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX-535F_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX-5600.xml
+usr/share/foomatic/db/source/printer/Epson-PX-601F.xml
+usr/share/foomatic/db/source/printer/Epson-PX-605F_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX-673F.xml
+usr/share/foomatic/db/source/printer/Epson-PX-675F_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX-A620.xml
+usr/share/foomatic/db/source/printer/Epson-PX-A640.xml
+usr/share/foomatic/db/source/printer/Epson-PX-A650.xml
+usr/share/foomatic/db/source/printer/Epson-PX-A720.xml
+usr/share/foomatic/db/source/printer/Epson-PX-A740.xml
+usr/share/foomatic/db/source/printer/Epson-PX-FA700.xml
+usr/share/foomatic/db/source/printer/Epson-PX-G5300.xml
+usr/share/foomatic/db/source/printer/Epson-PX-K150_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX-K701.xml
+usr/share/foomatic/db/source/printer/Epson-PX-K751F.xml
+usr/share/foomatic/db/source/printer/Epson-PX660_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX720WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX730_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX820FWD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX830_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX_1200.xml
+usr/share/foomatic/db/source/printer/Epson-PX_1600F.xml
+usr/share/foomatic/db/source/printer/Epson-PX_1700F.xml
+usr/share/foomatic/db/source/printer/Epson-PX_203.xml
+usr/share/foomatic/db/source/printer/Epson-PX_204.xml
+usr/share/foomatic/db/source/printer/Epson-PX_402A.xml
+usr/share/foomatic/db/source/printer/Epson-PX_403A.xml
+usr/share/foomatic/db/source/printer/Epson-PX_404A.xml
+usr/share/foomatic/db/source/printer/Epson-PX_405A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX_434A.xml
+usr/share/foomatic/db/source/printer/Epson-PX_435A_Series.xml
+usr/share/foomatic/db/source/printer/Epson-PX_502A.xml
+usr/share/foomatic/db/source/printer/Epson-PX_503A.xml
+usr/share/foomatic/db/source/printer/Epson-PX_504A.xml
 usr/share/foomatic/db/source/printer/Epson-PX_5500.xml
+usr/share/foomatic/db/source/printer/Epson-PX_5V.xml
+usr/share/foomatic/db/source/printer/Epson-PX_602F.xml
+usr/share/foomatic/db/source/printer/Epson-PX_603F.xml
 usr/share/foomatic/db/source/printer/Epson-PX_7000.xml
+usr/share/foomatic/db/source/printer/Epson-PX_7V.xml
 usr/share/foomatic/db/source/printer/Epson-PX_9000.xml
 usr/share/foomatic/db/source/printer/Epson-PX_A650.xml
+usr/share/foomatic/db/source/printer/Epson-PX_B700.xml
+usr/share/foomatic/db/source/printer/Epson-PX_B750F.xml
 usr/share/foomatic/db/source/printer/Epson-PX_G5000.xml
 usr/share/foomatic/db/source/printer/Epson-PX_G900.xml
 usr/share/foomatic/db/source/printer/Epson-PX_G920.xml
+usr/share/foomatic/db/source/printer/Epson-PX_K100.xml
 usr/share/foomatic/db/source/printer/Epson-PX_V500.xml
 usr/share/foomatic/db/source/printer/Epson-PX_V600.xml
 usr/share/foomatic/db/source/printer/Epson-PictureMate.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_500.xml
 usr/share/foomatic/db/source/printer/Epson-PictureMate_Deluxe.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_Express.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_200.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_210.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_215.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_225.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_235.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_240.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_245.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_250.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_260.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_270.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_280.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_290.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_300.xml
+usr/share/foomatic/db/source/printer/Epson-PictureMate_PM_310.xml
+usr/share/foomatic/db/source/printer/Epson-S22_Series.xml
 usr/share/foomatic/db/source/printer/Epson-SQ_1170.xml
+usr/share/foomatic/db/source/printer/Epson-SX125_Series.xml
+usr/share/foomatic/db/source/printer/Epson-SX130_Series.xml
+usr/share/foomatic/db/source/printer/Epson-SX218_Series.xml
+usr/share/foomatic/db/source/printer/Epson-SX230_Series.xml
+usr/share/foomatic/db/source/printer/Epson-SX235_Series.xml
+usr/share/foomatic/db/source/printer/Epson-SX420W_Series.xml
+usr/share/foomatic/db/source/printer/Epson-SX430_Series.xml
+usr/share/foomatic/db/source/printer/Epson-SX440_Series.xml
+usr/share/foomatic/db/source/printer/Epson-SX525WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-SX535WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-SX620FW_Series.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_800.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_C20.xml
@@ -2911,6 +4605,8 @@ usr/share/foomatic/db/source/printer/Epson-Stylus_C85.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_C86.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_C88.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX1500.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX2800.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX2900.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX3100.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX3200.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX3500.xml
@@ -2920,26 +4616,35 @@ usr/share/foomatic/db/source/printer/Epson-Stylus_CX3700.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX3800.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX3805.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX3810.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX3900.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX4100.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX4200.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX4500.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX4600.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX4700.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX4800.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX4900.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX5000.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX5100.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX5200.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX5300.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX5400.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX5700.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX5800.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX5900.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX6000.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX6300.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX6400.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX6500.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX6600.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX7300.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX7400.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX7700.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX7800.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX8300.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_CX8400.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX9300F.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_CX9400Fax.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Color.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Color_1160.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Color_1500.xml
@@ -2976,15 +4681,43 @@ usr/share/foomatic/db/source/printer/Epson-Stylus_D68.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_D88.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_DX3800.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_DX3850.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_DX4000.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_DX4200.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_DX4250.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_DX4800.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_DX5000.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_DX7400.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_DX8400.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_DX9400F.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_NX110.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_NX115.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_NX200.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_NX210.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_NX215.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_NX300.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_NX400.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_NX410.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_NX415.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_NX510.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_BX300F.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_BX310FN.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_BX600FW.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_BX610FW.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_BX925FW.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_TX300F.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_TX510FN.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_TX515FN.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_TX600FW.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_TX610FW.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Office_TX620FW.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_1200.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_1270.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_1280.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_1290.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_1290S.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_1400.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_1410.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_2000P.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_2100.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_2200.xml
@@ -3010,15 +4743,34 @@ usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_950.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_960.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_EX.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_EX3.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_P50.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_PX650.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_PX700W.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_PX710W.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_PX800FW.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_PX810FW.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R1800.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R1900.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R200.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R2000.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R210.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R220.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R240.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R2400.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R250.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R260.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R265.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R270.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R2880.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R300.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R3000.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R310.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R320.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R340.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R350.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R360.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R380.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R390.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_R800.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX400.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX420.xml
@@ -3026,10 +4778,30 @@ usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX425.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX430.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX500.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX510.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX520.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX530.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX560.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX580.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX585.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX590.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX595.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX600.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX610.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX620.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX630.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX640.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX650.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX680.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX685.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX690.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_RX700.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_T50.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_T60.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_TX650.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_TX700W.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_TX710W.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_TX800FW.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_Photo_TX810FW.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Pro_10000.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Pro_5000.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Pro_5500.xml
@@ -3040,8 +4812,155 @@ usr/share/foomatic/db/source/printer/Epson-Stylus_Pro_9000.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Pro_9500.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Pro_9600.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Pro_XL.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_S21.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_SX110.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_SX115.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_SX200.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_SX210.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_SX400.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_SX410.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_SX510W.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_SX600FW.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_SX610FW.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Scan_2000.xml
 usr/share/foomatic/db/source/printer/Epson-Stylus_Scan_2500.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_T21.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_T24.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_T27.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX110.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX111.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX112.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX113.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX115.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX117.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX119.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX200.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX210.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX400.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX410.xml
+usr/share/foomatic/db/source/printer/Epson-Stylus_TX550W.xml
+usr/share/foomatic/db/source/printer/Epson-T12_T22_N11_Series.xml
+usr/share/foomatic/db/source/printer/Epson-T13_T22E_Series.xml
+usr/share/foomatic/db/source/printer/Epson-T22_Series.xml
+usr/share/foomatic/db/source/printer/Epson-T25_Series.xml
+usr/share/foomatic/db/source/printer/Epson-T42WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX120_NX120_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX120_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX121_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX125_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX130_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX133_TX135_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX220_NX220_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX220_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX230_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX235_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX320F_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX320_WorkForce320_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX420W_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX420_NX420_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX430_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX525FW_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX560WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX620FWD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX720WD_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX720_Artisan720_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX730_Series.xml
+usr/share/foomatic/db/source/printer/Epson-TX820_Artisan830_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-2010_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-2510_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-2520_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-2530_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-2540_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-3010_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-3520_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-3530_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-3540_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7010.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7011.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7012.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7015.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7018.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7510.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7511.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7515.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7520.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7521.xml
+usr/share/foomatic/db/source/printer/Epson-WF-7525.xml
+usr/share/foomatic/db/source/printer/Epson-WF-M1030_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WF-M1560_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4010.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4011.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4015.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4020.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4023.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4025.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4090.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4091.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4092.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4095.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4511.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4515.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4520.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4521.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4525.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4530.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4531.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4533.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4535.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4540.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4545.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4590.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4592.xml
+usr/share/foomatic/db/source/printer/Epson-WP-4595.xml
+usr/share/foomatic/db/source/printer/Epson-WP-M4011_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WP-M4015_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WP-M4095_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WP-M4521_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WP-M4525_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WP-M4595_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_310.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_320_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_435_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_500.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_520_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_545_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_600.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_60_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_610.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_620_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_630_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_645_Series.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_840.xml
+usr/share/foomatic/db/source/printer/Epson-WorkForce_845_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-100_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-102_103_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-200_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-201_204_208_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-202_203_206_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-205_207_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-211_214_216_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-212_213_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-215_217_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-300_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-302_303_305_306_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-30_33_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-310_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-312_313_315_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-400_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-402_403_405_406_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-410_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-412_413_415_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-510_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-600_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-610_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-700_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-710_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-750_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-800_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-810_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-850_Series.xml
+usr/share/foomatic/db/source/printer/Epson-XP-950_Series.xml
+usr/share/foomatic/db/source/printer/Fuji_Xerox-DocuPrint_CM205.xml
 usr/share/foomatic/db/source/printer/Fujifilm-Printpix-CX-400.xml
 usr/share/foomatic/db/source/printer/Fujifilm-Printpix-CX-550.xml
 usr/share/foomatic/db/source/printer/Fujitsu-1200.xml
@@ -3056,14 +4975,20 @@ usr/share/foomatic/db/source/printer/Fujitsu-PrintPartner_8000.xml
 usr/share/foomatic/db/source/printer/Generic-ESC_P_Dot_Matrix_Printer.xml
 usr/share/foomatic/db/source/printer/Generic-GDI_Printer.xml
 usr/share/foomatic/db/source/printer/Generic-IBM-Compatible_Dot_Matrix_Printer.xml
+usr/share/foomatic/db/source/printer/Generic-OAKT_Printer.xml
 usr/share/foomatic/db/source/printer/Generic-PCL_3_Printer.xml
 usr/share/foomatic/db/source/printer/Generic-PCL_4_Printer.xml
 usr/share/foomatic/db/source/printer/Generic-PCL_5_Printer.xml
 usr/share/foomatic/db/source/printer/Generic-PCL_5c_Printer.xml
 usr/share/foomatic/db/source/printer/Generic-PCL_5e_Printer.xml
 usr/share/foomatic/db/source/printer/Generic-PCL_6_PCL_XL_Printer.xml
+usr/share/foomatic/db/source/printer/Generic-PostScript_Level_1_Printer.xml
 usr/share/foomatic/db/source/printer/Generic-PostScript_Printer.xml
 usr/share/foomatic/db/source/printer/Generic-ZjStream_Printer.xml
+usr/share/foomatic/db/source/printer/Genicom-LN45.xml
+usr/share/foomatic/db/source/printer/Genicom-ML450.xml
+usr/share/foomatic/db/source/printer/Genicom-microLaser_12.xml
+usr/share/foomatic/db/source/printer/Genicom-microLaser_210.xml
 usr/share/foomatic/db/source/printer/Gestetner-10512.xml
 usr/share/foomatic/db/source/printer/Gestetner-2212.xml
 usr/share/foomatic/db/source/printer/Gestetner-2712.xml
@@ -3087,7 +5012,12 @@ usr/share/foomatic/db/source/printer/Gestetner-C7528n.xml
 usr/share/foomatic/db/source/printer/Gestetner-C7531dn.xml
 usr/share/foomatic/db/source/printer/Gestetner-C7535n.xml
 usr/share/foomatic/db/source/printer/Gestetner-C7640nD.xml
+usr/share/foomatic/db/source/printer/Gestetner-C8140ND.xml
+usr/share/foomatic/db/source/printer/Gestetner-C8150ND.xml
 usr/share/foomatic/db/source/printer/Gestetner-CS555.xml
+usr/share/foomatic/db/source/printer/Gestetner-DSc1030.xml
+usr/share/foomatic/db/source/printer/Gestetner-DSc1045.xml
+usr/share/foomatic/db/source/printer/Gestetner-DSc1060.xml
 usr/share/foomatic/db/source/printer/Gestetner-DSc224.xml
 usr/share/foomatic/db/source/printer/Gestetner-DSc232.xml
 usr/share/foomatic/db/source/printer/Gestetner-DSc328.xml
@@ -3122,10 +5052,19 @@ usr/share/foomatic/db/source/printer/Gestetner-DSm730.xml
 usr/share/foomatic/db/source/printer/Gestetner-DSm735_735G.xml
 usr/share/foomatic/db/source/printer/Gestetner-DSm745_745G.xml
 usr/share/foomatic/db/source/printer/Gestetner-F9199_9199nf.xml
+usr/share/foomatic/db/source/printer/Gestetner-GWD2004.xml
+usr/share/foomatic/db/source/printer/Gestetner-GWD2006.xml
+usr/share/foomatic/db/source/printer/Gestetner-GWD3006.xml
+usr/share/foomatic/db/source/printer/Gestetner-GWD5100.xml
+usr/share/foomatic/db/source/printer/Gestetner-GWD7140.xml
 usr/share/foomatic/db/source/printer/Gestetner-MP1100_DSm7110.xml
 usr/share/foomatic/db/source/printer/Gestetner-MP1350_DSm7135.xml
 usr/share/foomatic/db/source/printer/Gestetner-MP1600_DSm716.xml
 usr/share/foomatic/db/source/printer/Gestetner-MP2000_DSm721d.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP2352_DSm923.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP2500_DSm625.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP2852_DSm928.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP3352_DSm933.xml
 usr/share/foomatic/db/source/printer/Gestetner-MP3500_DSm735e.xml
 usr/share/foomatic/db/source/printer/Gestetner-MP4500_DSm745e.xml
 usr/share/foomatic/db/source/printer/Gestetner-MP5500_DSm755.xml
@@ -3138,11 +5077,79 @@ usr/share/foomatic/db/source/printer/Gestetner-MPC3000_DSc530.xml
 usr/share/foomatic/db/source/printer/Gestetner-MPC3500_DSc535.xml
 usr/share/foomatic/db/source/printer/Gestetner-MPC4500_DSc545.xml
 usr/share/foomatic/db/source/printer/Gestetner-MP_161_DSm416.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_171.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_2001.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_2501.xml
 usr/share/foomatic/db/source/printer/Gestetner-MP_2510_DSm725e.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_2550.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_2550B.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_2851.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_301.xml
 usr/share/foomatic/db/source/printer/Gestetner-MP_3010_DSm730e.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_3350.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_3350B.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_3351.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_4000.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_4000B.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_4001.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_4002.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_5000.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_5000B.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_5001.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_5002.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_6000.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_6001.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_6002.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_7000.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_7001.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_7502.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_8000.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_8001.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_9001.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_9002.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C2050.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C2051.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C2550.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C2551.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C2800.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C300.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C3001.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C3002.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C3003.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C300SR.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C305.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C3300.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C3501.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C3502.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C3503.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C400.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C4000.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C400SR.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C4501.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C4501A.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C4502.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C4502A.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C4503.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C5000.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C5501.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C5501A.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C5502.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C5502A.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C5503.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C6000.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C6003.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C6501.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C6502.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C7500.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C7501.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_C8002.xml
+usr/share/foomatic/db/source/printer/Gestetner-MP_CW2200.xml
 usr/share/foomatic/db/source/printer/Gestetner-P7026.xml
 usr/share/foomatic/db/source/printer/Gestetner-P7026n.xml
+usr/share/foomatic/db/source/printer/Gestetner-P7031n.xml
+usr/share/foomatic/db/source/printer/Gestetner-P7031nL.xml
 usr/share/foomatic/db/source/printer/Gestetner-P7032.xml
+usr/share/foomatic/db/source/printer/Gestetner-P7035n.xml
 usr/share/foomatic/db/source/printer/Gestetner-P7126.xml
 usr/share/foomatic/db/source/printer/Gestetner-P7126n.xml
 usr/share/foomatic/db/source/printer/Gestetner-P7132n.xml
@@ -3156,6 +5163,20 @@ usr/share/foomatic/db/source/printer/Gestetner-P7527n.xml
 usr/share/foomatic/db/source/printer/Gestetner-P7535n.xml
 usr/share/foomatic/db/source/printer/Gestetner-P7575.xml
 usr/share/foomatic/db/source/printer/Gestetner-P7675.xml
+usr/share/foomatic/db/source/printer/Gestetner-Pro_1106EX.xml
+usr/share/foomatic/db/source/printer/Gestetner-Pro_1107EX.xml
+usr/share/foomatic/db/source/printer/Gestetner-Pro_1356EX.xml
+usr/share/foomatic/db/source/printer/Gestetner-Pro_1357EX.xml
+usr/share/foomatic/db/source/printer/Gestetner-Pro_906EX.xml
+usr/share/foomatic/db/source/printer/Gestetner-Pro_907EX.xml
+usr/share/foomatic/db/source/printer/Gestetner-SP_4210N.xml
+usr/share/foomatic/db/source/printer/Gestetner-SP_6330N.xml
+usr/share/foomatic/db/source/printer/Gestetner-SP_8200DN.xml
+usr/share/foomatic/db/source/printer/Gestetner-SP_C320DN.xml
+usr/share/foomatic/db/source/printer/Gestetner-SP_C420DN.xml
+usr/share/foomatic/db/source/printer/Gestetner-SP_C430DN.xml
+usr/share/foomatic/db/source/printer/Gestetner-SP_C431DN.xml
+usr/share/foomatic/db/source/printer/Gestetner-SP_W2470.xml
 usr/share/foomatic/db/source/printer/HP-2000C.xml
 usr/share/foomatic/db/source/printer/HP-2500C.xml
 usr/share/foomatic/db/source/printer/HP-2500CM.xml
@@ -3174,14 +5195,21 @@ usr/share/foomatic/db/source/printer/HP-Business_Inkjet_2300.xml
 usr/share/foomatic/db/source/printer/HP-Business_Inkjet_2600.xml
 usr/share/foomatic/db/source/printer/HP-Business_Inkjet_2800.xml
 usr/share/foomatic/db/source/printer/HP-Business_Inkjet_3000.xml
+usr/share/foomatic/db/source/printer/HP-CM8050_Color_MFP.xml
+usr/share/foomatic/db/source/printer/HP-CM8050_MFP_with_Edgeline.xml
+usr/share/foomatic/db/source/printer/HP-CM8060_Color_MFP.xml
+usr/share/foomatic/db/source/printer/HP-CM8060_MFP_with_Edgeline.xml
+usr/share/foomatic/db/source/printer/HP-CP3525n.xml
 usr/share/foomatic/db/source/printer/HP-Color_Inkjet_Printer_CP1160.xml
 usr/share/foomatic/db/source/printer/HP-Color_Inkjet_Printer_CP1700.xml
+usr/share/foomatic/db/source/printer/HP-Color_LaserJet.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_1500.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_1600.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_2500.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_2550.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_2600n.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_2605.xml
+usr/share/foomatic/db/source/printer/HP-Color_LaserJet_2605dn.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_2700.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_2800.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_3000.xml
@@ -3203,19 +5231,26 @@ usr/share/foomatic/db/source/printer/HP-Color_LaserJet_5500.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_5550.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_5M.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_8500.xml
-usr/share/foomatic/db/source/printer/HP-Color_LaserJet_8550GN.xml
+usr/share/foomatic/db/source/printer/HP-Color_LaserJet_8550.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_9500.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_9500_MFP.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_CM1015.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_CM1017.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_CM4730_MFP.xml
+usr/share/foomatic/db/source/printer/HP-Color_LaserJet_CP1215.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_CP3505.xml
 usr/share/foomatic/db/source/printer/HP-Color_LaserJet_CP4005.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_100.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_100plus.xml
+usr/share/foomatic/db/source/printer/HP-DesignJet_1050C.xml
+usr/share/foomatic/db/source/printer/HP-DesignJet_1055CM.xml
+usr/share/foomatic/db/source/printer/HP-DesignJet_110.xml
+usr/share/foomatic/db/source/printer/HP-DesignJet_120.xml
+usr/share/foomatic/db/source/printer/HP-DesignJet_130.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_230.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_2500CP.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_250C.xml
+usr/share/foomatic/db/source/printer/HP-DesignJet_30.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_3500CP.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_350C.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_430.xml
@@ -3224,14 +5259,18 @@ usr/share/foomatic/db/source/printer/HP-DesignJet_455CA.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_488CA.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_500.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_5000.xml
+usr/share/foomatic/db/source/printer/HP-DesignJet_5000PS.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_500ps.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_5500.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_5500ps.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_650C.xml
+usr/share/foomatic/db/source/printer/HP-DesignJet_70.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_700.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_750.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_750C_Plus.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_800.xml
+usr/share/foomatic/db/source/printer/HP-DesignJet_800PS.xml
+usr/share/foomatic/db/source/printer/HP-DesignJet_90.xml
 usr/share/foomatic/db/source/printer/HP-DesignJet_ColorPro_CAD.xml
 usr/share/foomatic/db/source/printer/HP-DeskJet.xml
 usr/share/foomatic/db/source/printer/HP-DeskJet_1000C.xml
@@ -3281,6 +5320,7 @@ usr/share/foomatic/db/source/printer/HP-DeskJet_5150.xml
 usr/share/foomatic/db/source/printer/HP-DeskJet_5158.xml
 usr/share/foomatic/db/source/printer/HP-DeskJet_5160.xml
 usr/share/foomatic/db/source/printer/HP-DeskJet_520.xml
+usr/share/foomatic/db/source/printer/HP-DeskJet_540.xml
 usr/share/foomatic/db/source/printer/HP-DeskJet_540C.xml
 usr/share/foomatic/db/source/printer/HP-DeskJet_5440.xml
 usr/share/foomatic/db/source/printer/HP-DeskJet_550C.xml
@@ -3390,6 +5430,8 @@ usr/share/foomatic/db/source/printer/HP-LaserJet_1015.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_1018.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_1020.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_1022.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_1022n.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_1022nw.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_1100.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_1100A.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_1150.xml
@@ -3403,6 +5445,7 @@ usr/share/foomatic/db/source/printer/HP-LaserJet_2100.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_2100M.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_2200.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_2300.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_2300L.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_2410.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_2420.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_2430.xml
@@ -3437,6 +5480,7 @@ usr/share/foomatic/db/source/printer/HP-LaserJet_4.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4000.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4050.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4100.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_4100_MFP.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4200.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4240.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4250.xml
@@ -3446,6 +5490,7 @@ usr/share/foomatic/db/source/printer/HP-LaserJet_4350.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4L.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4M.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4ML.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_4MP.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4P.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4Si.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_4V.xml
@@ -3461,6 +5506,7 @@ usr/share/foomatic/db/source/printer/HP-LaserJet_5M.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_5MP.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_5P.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_5Si.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_5Si_Mopier.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_6.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_6L.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_6MP.xml
@@ -3477,16 +5523,41 @@ usr/share/foomatic/db/source/printer/HP-LaserJet_9050_MFP.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_9055_MFP.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_9065_MFP.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_M1005_MFP.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_M1120_MFP.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_M1319_MFP.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_M1522n_MFP.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_M1522nf_MFP.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_M2727.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_M3027_MFP.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_M3035_MFP.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_M4345_MFP.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_M5025_MFP.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_M5035_MFP.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P1005.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P1006.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P1007.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P1008.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P1505.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P1505n.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_P2010.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P2014.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P2014n.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_P2015.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P2035.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P2035n.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P2055d.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P2055dn.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_P3004.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_P3005.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P4014.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_P4015.xml
 usr/share/foomatic/db/source/printer/HP-LaserJet_Plus.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_Pro_CP1025nw.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_Pro_P1102.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_Pro_P1102w.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_Pro_P1566.xml
+usr/share/foomatic/db/source/printer/HP-LaserJet_Pro_P1606dn.xml
+usr/share/foomatic/db/source/printer/HP-Laserjet_P1020.xml
 usr/share/foomatic/db/source/printer/HP-Mopier_240.xml
 usr/share/foomatic/db/source/printer/HP-Mopier_320.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet.xml
@@ -3539,9 +5610,12 @@ usr/share/foomatic/db/source/printer/HP-OfficeJet_D155.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_G55.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_G85.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_G95.xml
+usr/share/foomatic/db/source/printer/HP-OfficeJet_J3600.xml
+usr/share/foomatic/db/source/printer/HP-OfficeJet_J5500.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_J5700.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_K60.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_K60xi.xml
+usr/share/foomatic/db/source/printer/HP-OfficeJet_K7100.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_K80.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_K80xi.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_LX.xml
@@ -3552,6 +5626,7 @@ usr/share/foomatic/db/source/printer/HP-OfficeJet_Pro_K5300.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_Pro_K5400.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_Pro_K550.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_Pro_K850.xml
+usr/share/foomatic/db/source/printer/HP-OfficeJet_Pro_K8600.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_Pro_L7300.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_Pro_L7500.xml
 usr/share/foomatic/db/source/printer/HP-OfficeJet_Pro_L7600.xml
@@ -3639,15 +5714,22 @@ usr/share/foomatic/db/source/printer/HP-PhotoSmart_A820.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_C3100.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_C4100.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_C4200.xml
+usr/share/foomatic/db/source/printer/HP-PhotoSmart_C4380.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_C5100.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_C5200.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_C6100.xml
+usr/share/foomatic/db/source/printer/HP-PhotoSmart_C6200.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_C7100.xml
+usr/share/foomatic/db/source/printer/HP-PhotoSmart_C7200.xml
+usr/share/foomatic/db/source/printer/HP-PhotoSmart_C8100.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_D5060.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_D5100.xml
+usr/share/foomatic/db/source/printer/HP-PhotoSmart_D5300.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_D6100.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_D7100.xml
+usr/share/foomatic/db/source/printer/HP-PhotoSmart_D7200.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_D7300.xml
+usr/share/foomatic/db/source/printer/HP-PhotoSmart_D7400.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_P100.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_P1000.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_P1100.xml
@@ -3658,6 +5740,9 @@ usr/share/foomatic/db/source/printer/HP-PhotoSmart_P130.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_P1315.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_P230.xml
 usr/share/foomatic/db/source/printer/HP-PhotoSmart_Pro_B8300.xml
+usr/share/foomatic/db/source/printer/HP-Photosmart_C309g.xml
+usr/share/foomatic/db/source/printer/HP-Photosmart_C6380.xml
+usr/share/foomatic/db/source/printer/HP-Photosmart_D5460.xml
 usr/share/foomatic/db/source/printer/HP-ThinkJet.xml
 usr/share/foomatic/db/source/printer/HP-e-printer_e20.xml
 usr/share/foomatic/db/source/printer/Heidelberg-Digimaster_9110.xml
@@ -3670,9 +5755,23 @@ usr/share/foomatic/db/source/printer/IBM-4303_Network_Color_Printer.xml
 usr/share/foomatic/db/source/printer/IBM-4312.xml
 usr/share/foomatic/db/source/printer/IBM-Execjet_4072.xml
 usr/share/foomatic/db/source/printer/IBM-Infoprint_12.xml
+usr/share/foomatic/db/source/printer/IBM-Infoprint_1226tn.xml
+usr/share/foomatic/db/source/printer/IBM-Infoprint_1422.xml
+usr/share/foomatic/db/source/printer/IBM-Infoprint_1532_Express.xml
+usr/share/foomatic/db/source/printer/IBM-Infoprint_1540_MFP.xml
+usr/share/foomatic/db/source/printer/IBM-Infoprint_1560_MFP.xml
+usr/share/foomatic/db/source/printer/IBM-Infoprint_1570_MFP.xml
+usr/share/foomatic/db/source/printer/IBM-Infoprint_1572_MFP.xml
+usr/share/foomatic/db/source/printer/IBM-Infoprint_1580_MFP.xml
+usr/share/foomatic/db/source/printer/IBM-Infoprint_1585n.xml
+usr/share/foomatic/db/source/printer/IBM-Infoprint_1650_MFP.xml
 usr/share/foomatic/db/source/printer/IBM-Page_Printer_3112.xml
 usr/share/foomatic/db/source/printer/IBM-ProPrinterII.xml
 usr/share/foomatic/db/source/printer/Imagen-ImPress.xml
+usr/share/foomatic/db/source/printer/Imagistics-im8530.xml
+usr/share/foomatic/db/source/printer/InfoPrint-Pro_1107EX.xml
+usr/share/foomatic/db/source/printer/InfoPrint-Pro_1357EX.xml
+usr/share/foomatic/db/source/printer/InfoPrint-Pro_907EX.xml
 usr/share/foomatic/db/source/printer/Infotec-4353_MF.xml
 usr/share/foomatic/db/source/printer/Infotec-4452_MF.xml
 usr/share/foomatic/db/source/printer/Infotec-4651_MF.xml
@@ -3735,6 +5834,7 @@ usr/share/foomatic/db/source/printer/Infotec-IS_2265.xml
 usr/share/foomatic/db/source/printer/Infotec-IS_2275.xml
 usr/share/foomatic/db/source/printer/Infotec-IS_2316.xml
 usr/share/foomatic/db/source/printer/Infotec-IS_2320.xml
+usr/share/foomatic/db/source/printer/Infotec-IS_2325.xml
 usr/share/foomatic/db/source/printer/Infotec-IS_2416.xml
 usr/share/foomatic/db/source/printer/Infotec-IS_2425.xml
 usr/share/foomatic/db/source/printer/Infotec-IS_2430.xml
@@ -3743,6 +5843,85 @@ usr/share/foomatic/db/source/printer/Infotec-IS_2445.xml
 usr/share/foomatic/db/source/printer/Infotec-IS_3090.xml
 usr/share/foomatic/db/source/printer/Infotec-IS_3110.xml
 usr/share/foomatic/db/source/printer/Infotec-IS_3135.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_171.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_2001.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_201.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_2352.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_2501.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_2550.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_2550B.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_2851.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_2852.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_301.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_3350.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_3350B.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_3351.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_3352.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_4000.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_4000B.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_4001.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_4002.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_5000.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_5000B.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_5001.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_5002.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_6000.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_6001.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_6002.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_7000.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_7001.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_7502.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_8000.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_8001.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_9001.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_9002.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C2050.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C2051.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C2550.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C2551.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C2800.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C300.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C3001.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C3002.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C3003.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C300SR.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C305.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C3300.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C3501.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C3502.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C3503.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C400.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C4000.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C400SR.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C4501.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C4501A.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C4502.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C4502A.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C4503.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C5000.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C5501.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C5501A.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C5502.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C5502A.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C5503.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C6000.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C6003.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C6501.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C6502.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C7500.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C7501.xml
+usr/share/foomatic/db/source/printer/Infotec-MP_C8002.xml
+usr/share/foomatic/db/source/printer/Infotec-Pro_1106EX.xml
+usr/share/foomatic/db/source/printer/Infotec-Pro_1107EX.xml
+usr/share/foomatic/db/source/printer/Infotec-Pro_1356EX.xml
+usr/share/foomatic/db/source/printer/Infotec-Pro_1357EX.xml
+usr/share/foomatic/db/source/printer/Infotec-Pro_906EX.xml
+usr/share/foomatic/db/source/printer/Infotec-Pro_907EX.xml
+usr/share/foomatic/db/source/printer/Infotec-Pro_C5100S.xml
+usr/share/foomatic/db/source/printer/Infotec-Pro_C5110S.xml
+usr/share/foomatic/db/source/printer/KONICA_MINOLTA-PagePro_1300W.xml
+usr/share/foomatic/db/source/printer/KONICA_MINOLTA-PagePro_1350W.xml
+usr/share/foomatic/db/source/printer/KONICA_MINOLTA-PagePro_1400W.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-bizhub_1050.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-bizhub_1050P.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-bizhub_1050e.xml
@@ -3764,15 +5943,47 @@ usr/share/foomatic/db/source/printer/KONICA_MINOLTA-bizhub_C450.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-bizhub_C450P.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-bizhub_C451.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-bizhub_C550.xml
+usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_1600W.xml
+usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_1680MF.xml
+usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_1690MF.xml
+usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_2300W.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_2300_DL.xml
+usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_2400W.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_2430_DL.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_2480_MF.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_2490_MF.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_2530_DL.xml
+usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_4690MF.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_5430_DL.xml
 usr/share/foomatic/db/source/printer/KONICA_MINOLTA-magicolor_5440_DL.xml
 usr/share/foomatic/db/source/printer/Kodak-DigiSource_9110.xml
+usr/share/foomatic/db/source/printer/Kodak-ESP_3.xml
+usr/share/foomatic/db/source/printer/Kodak-ESP_3250.xml
+usr/share/foomatic/db/source/printer/Kodak-ESP_5250.xml
+usr/share/foomatic/db/source/printer/Kodak-ESP_5500.xml
+usr/share/foomatic/db/source/printer/Kodak-ESP_6150.xml
+usr/share/foomatic/db/source/printer/Kodak-ESP_7.xml
+usr/share/foomatic/db/source/printer/Kodak-ESP_7250.xml
+usr/share/foomatic/db/source/printer/Kodak-ESP_9.xml
+usr/share/foomatic/db/source/printer/Kodak-EasyShare_5100.xml
+usr/share/foomatic/db/source/printer/Kodak-EasyShare_5300.xml
+usr/share/foomatic/db/source/printer/Kodak-EasyShare_5500.xml
 usr/share/foomatic/db/source/printer/Kodak-IS_70_CPII.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS-1650.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS-1815.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS-2050.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS-2550.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS-C2525E_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS-C3225E_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS-C3232E_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS-C4035E_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS_250ci_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS_300ci_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS_3050ci.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS_3550ci.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS_400ci_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-CS_500ci_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-Ci-1100.xml
 usr/share/foomatic/db/source/printer/Kyocera-F-1000.xml
 usr/share/foomatic/db/source/printer/Kyocera-F-1010.xml
 usr/share/foomatic/db/source/printer/Kyocera-F-1200.xml
@@ -3793,7 +6004,11 @@ usr/share/foomatic/db/source/printer/Kyocera-FS-1000.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1000plus.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1010.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1016MFP.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-1018MFP.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-1020D.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-1030D.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1050.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-1118MFP.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1200.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1500.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1550.xml
@@ -3802,10 +6017,15 @@ usr/share/foomatic/db/source/printer/Kyocera-FS-1600.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1600plus.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1700.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1700plus.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-1714M.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1750.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1800.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1800plus.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-1900.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-1920.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-2000D.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-2100D.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-2100DN.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-3400.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-3400plus.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-3500.xml
@@ -3813,38 +6033,106 @@ usr/share/foomatic/db/source/printer/Kyocera-FS-3600.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-3600plus.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-3700.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-3700plus.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-3718M.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-3750.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-3800.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-3820N.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-3830N.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-3900DN.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-400.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-4000DN.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-4100DN.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-4200DN.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-4300DN.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-5500.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-5800C.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-5900C.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-600.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-600_KPDL-2.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-6020.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-6026.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-6300.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-6500.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-6500plus.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-6700.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-6750.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-680.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-6900.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-6950DN.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-7000.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-7000plus.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-7028M.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-800.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-8000C.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-850.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-9000.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-9100DN.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-9120DN.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-9130DN.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-920.xml
 usr/share/foomatic/db/source/printer/Kyocera-FS-9500DN.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-9520DN.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-9530DN.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C5015N.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C5016N.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C5020N.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C5025N.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C5030N.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C5100DN_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C5200DN_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C5300DN_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C5350DN_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C5400DN_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C8008N.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C8026N.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C8100DN.xml
+usr/share/foomatic/db/source/printer/Kyocera-FS-C8100DNplus_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-1510.xml
 usr/share/foomatic/db/source/printer/Kyocera-KM-1530.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-1635.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-1650.xml
 usr/share/foomatic/db/source/printer/Kyocera-KM-1810.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-1815.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-1820.xml
 usr/share/foomatic/db/source/printer/Kyocera-KM-2030.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-2035.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-2050.xml
 usr/share/foomatic/db/source/printer/Kyocera-KM-2530.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-2550.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-3035.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-3050.xml
 usr/share/foomatic/db/source/printer/Kyocera-KM-3530.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-4030.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-4035.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-4050.xml
 usr/share/foomatic/db/source/printer/Kyocera-KM-4230.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-4230_5230.xml
 usr/share/foomatic/db/source/printer/Kyocera-KM-4530.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-5035.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-5050.xml
 usr/share/foomatic/db/source/printer/Kyocera-KM-5230.xml
 usr/share/foomatic/db/source/printer/Kyocera-KM-5530.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-6030.xml
 usr/share/foomatic/db/source/printer/Kyocera-KM-6230.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-6330.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-7530.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-8030.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-C2520.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-C2525E_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-C2630.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-C3225.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-C3225E_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-C3232.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-C3232E_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-C4035E_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-C830.xml
+usr/share/foomatic/db/source/printer/Kyocera-KM-C850.xml
 usr/share/foomatic/db/source/printer/Kyocera-P-2000.xml
 usr/share/foomatic/db/source/printer/Kyocera-P-2002.xml
+usr/share/foomatic/db/source/printer/Kyocera-TASKalfa_250ci_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-TASKalfa_300ci_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-TASKalfa_400ci_KPDL.xml
+usr/share/foomatic/db/source/printer/Kyocera-TASKalfa_500ci_KPDL.xml
 usr/share/foomatic/db/source/printer/Lanier-2132.xml
 usr/share/foomatic/db/source/printer/Lanier-2138.xml
 usr/share/foomatic/db/source/printer/Lanier-2145.xml
@@ -3890,6 +6178,12 @@ usr/share/foomatic/db/source/printer/Lanier-LD245.xml
 usr/share/foomatic/db/source/printer/Lanier-LD328c.xml
 usr/share/foomatic/db/source/printer/Lanier-LD335c.xml
 usr/share/foomatic/db/source/printer/Lanier-LD345c.xml
+usr/share/foomatic/db/source/printer/Lanier-LD_130C.xml
+usr/share/foomatic/db/source/printer/Lanier-LD_130CSR.xml
+usr/share/foomatic/db/source/printer/Lanier-LD_140C.xml
+usr/share/foomatic/db/source/printer/Lanier-LD_140CSR.xml
+usr/share/foomatic/db/source/printer/Lanier-LD_620C.xml
+usr/share/foomatic/db/source/printer/Lanier-LD_625C.xml
 usr/share/foomatic/db/source/printer/Lanier-LF510_515e.xml
 usr/share/foomatic/db/source/printer/Lanier-LP025N_LP026N.xml
 usr/share/foomatic/db/source/printer/Lanier-LP025_LP026.xml
@@ -3897,41 +6191,155 @@ usr/share/foomatic/db/source/printer/Lanier-LP031c.xml
 usr/share/foomatic/db/source/printer/Lanier-LP032.xml
 usr/share/foomatic/db/source/printer/Lanier-LP116c.xml
 usr/share/foomatic/db/source/printer/Lanier-LP122c_LP121c.xml
+usr/share/foomatic/db/source/printer/Lanier-LP124w.xml
 usr/share/foomatic/db/source/printer/Lanier-LP125cx_LP126cn.xml
 usr/share/foomatic/db/source/printer/Lanier-LP127n_LP128n.xml
 usr/share/foomatic/db/source/printer/Lanier-LP128.xml
+usr/share/foomatic/db/source/printer/Lanier-LP131n.xml
+usr/share/foomatic/db/source/printer/Lanier-LP131nL.xml
 usr/share/foomatic/db/source/printer/Lanier-LP135n.xml
+usr/share/foomatic/db/source/printer/Lanier-LP136n.xml
+usr/share/foomatic/db/source/printer/Lanier-LP137CN.xml
 usr/share/foomatic/db/source/printer/Lanier-LP138c.xml
+usr/share/foomatic/db/source/printer/Lanier-LP142CN.xml
 usr/share/foomatic/db/source/printer/Lanier-LP145n_SP_8100DN.xml
+usr/share/foomatic/db/source/printer/Lanier-LP150dn_SP8200DN.xml
 usr/share/foomatic/db/source/printer/Lanier-LP175_LP175hdn.xml
 usr/share/foomatic/db/source/printer/Lanier-LP222cn_LP221c.xml
 usr/share/foomatic/db/source/printer/Lanier-LP226c_SP_C410.xml
 usr/share/foomatic/db/source/printer/Lanier-LP231c_SP_C411.xml
+usr/share/foomatic/db/source/printer/Lanier-LP235N.xml
 usr/share/foomatic/db/source/printer/Lanier-LP235c.xml
+usr/share/foomatic/db/source/printer/Lanier-LP331cn_SP_C420.xml
 usr/share/foomatic/db/source/printer/Lanier-LP332c.xml
 usr/share/foomatic/db/source/printer/Lanier-LP335c.xml
+usr/share/foomatic/db/source/printer/Lanier-LP37N.xml
 usr/share/foomatic/db/source/printer/Lanier-LP440c_SP_C811DN.xml
+usr/share/foomatic/db/source/printer/Lanier-LP540C_SPC820DN.xml
+usr/share/foomatic/db/source/printer/Lanier-LP550C_SPC821DN.xml
 usr/share/foomatic/db/source/printer/Lanier-LP_020c.xml
 usr/share/foomatic/db/source/printer/Lanier-LP_036c.xml
+usr/share/foomatic/db/source/printer/Lanier-LW324.xml
+usr/share/foomatic/db/source/printer/Lanier-LW326.xml
+usr/share/foomatic/db/source/printer/Lanier-LW426.xml
+usr/share/foomatic/db/source/printer/Lanier-LW5100.xml
+usr/share/foomatic/db/source/printer/Lanier-LW7140.xml
+usr/share/foomatic/db/source/printer/Lanier-MP2500_LD125.xml
 usr/share/foomatic/db/source/printer/Lanier-MPC1500_LD215c.xml
+usr/share/foomatic/db/source/printer/Lanier-MPC4501A_LD645CA.xml
+usr/share/foomatic/db/source/printer/Lanier-MPC5501A_LD655CA.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_1100_LD1100.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_1350_LD1135.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_1600_LD316.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_161_LD016.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_171_LD_117.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_2000_LD320d.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_2001.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_201_LD_220.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_2352.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_2501.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_2510_LD325.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_2550B_LD425B.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_2550_LD425.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_2851_LD528.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_2852.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_301.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_3010_LD330.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_3350B_LD433B.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_3350_LD433.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_3351_LD533.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_3352.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_3500_LD335.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_4000B_LD040B.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_4000_LD040.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_4001_LD140.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_4002.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_4500_LD345.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_5000B_LD050B.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_5000_LD050.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_5001_LD150.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_5002.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_5500_LD255.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_6000_LD260.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_6001_LD360.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_6002.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_6500_LD265.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_7000_LD270.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_7001_LD370.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_7500_LD275.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_7502.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_8000_LD280.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_8001_LD380.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_9000_LD190.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_9001_LD390.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_9002.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C2050_LD520C.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_C2500_LD425c.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C2550_LD525C.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C2800_LD528C.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C300.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_C3000_LD430c.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C3001_LD630C.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C3002.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C3003.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C300SR.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C305.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C3300_LD533C.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_C3500_LD435c.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C3501_LD635C.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C3502.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C3503.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C400.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C4000_LD540C.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C400SR.xml
 usr/share/foomatic/db/source/printer/Lanier-MP_C4500_LD445c.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C4501_LD645C.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C4502.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C4502A.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C4503.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C5000_LD550C.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C5501_LD655C.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C5502.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C5502A.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C5503.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C6000_LD260c.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C6003.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C6501_LD365C.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C6502.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C7500_LD275c.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C7501_LD375C.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_C8002.xml
+usr/share/foomatic/db/source/printer/Lanier-MP_CW2200.xml
+usr/share/foomatic/db/source/printer/Lanier-Pro_1106EX.xml
+usr/share/foomatic/db/source/printer/Lanier-Pro_1107EX.xml
+usr/share/foomatic/db/source/printer/Lanier-Pro_1356EX.xml
+usr/share/foomatic/db/source/printer/Lanier-Pro_1357EX.xml
+usr/share/foomatic/db/source/printer/Lanier-Pro_906EX.xml
+usr/share/foomatic/db/source/printer/Lanier-Pro_907EX.xml
+usr/share/foomatic/db/source/printer/Lanier-Pro_C5100S.xml
+usr/share/foomatic/db/source/printer/Lanier-Pro_C5110S.xml
+usr/share/foomatic/db/source/printer/Lanier-SG3100SNw.xml
+usr/share/foomatic/db/source/printer/Lanier-SG3110SFNw.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_4100N.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_4100NL.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_4110N.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_4210N.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_4310N.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_5200DN.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_5200S.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_5210DN.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_5210SF.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_5210SR.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_6330N.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_8300DN.xml
 usr/share/foomatic/db/source/printer/Lanier-SP_9100_LP275.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_C320DN.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_C400DN.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_C430DN.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_C431DN.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_C730DN.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_C830DN.xml
+usr/share/foomatic/db/source/printer/Lanier-SP_C831DN.xml
 usr/share/foomatic/db/source/printer/LaserMaster-LM_1000.xml
 usr/share/foomatic/db/source/printer/Lexmark-1000.xml
 usr/share/foomatic/db/source/printer/Lexmark-1020.xml
@@ -3946,9 +6354,78 @@ usr/share/foomatic/db/source/printer/Lexmark-4039_10plus.xml
 usr/share/foomatic/db/source/printer/Lexmark-4076.xml
 usr/share/foomatic/db/source/printer/Lexmark-5000.xml
 usr/share/foomatic/db/source/printer/Lexmark-5700.xml
+usr/share/foomatic/db/source/printer/Lexmark-6500e.xml
 usr/share/foomatic/db/source/printer/Lexmark-7000.xml
 usr/share/foomatic/db/source/printer/Lexmark-7200.xml
+usr/share/foomatic/db/source/printer/Lexmark-C500.xml
+usr/share/foomatic/db/source/printer/Lexmark-C500n.xml
+usr/share/foomatic/db/source/printer/Lexmark-C510.xml
+usr/share/foomatic/db/source/printer/Lexmark-C510b.xml
+usr/share/foomatic/db/source/printer/Lexmark-C520.xml
+usr/share/foomatic/db/source/printer/Lexmark-C522.xml
+usr/share/foomatic/db/source/printer/Lexmark-C524.xml
+usr/share/foomatic/db/source/printer/Lexmark-C530dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C532dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C532n.xml
+usr/share/foomatic/db/source/printer/Lexmark-C534dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C534dtn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C534n.xml
+usr/share/foomatic/db/source/printer/Lexmark-C540.xml
+usr/share/foomatic/db/source/printer/Lexmark-C543.xml
+usr/share/foomatic/db/source/printer/Lexmark-C544.xml
+usr/share/foomatic/db/source/printer/Lexmark-C546.xml
+usr/share/foomatic/db/source/printer/Lexmark-C720n.xml
+usr/share/foomatic/db/source/printer/Lexmark-C734.xml
+usr/share/foomatic/db/source/printer/Lexmark-C736.xml
+usr/share/foomatic/db/source/printer/Lexmark-C750.xml
+usr/share/foomatic/db/source/printer/Lexmark-C752.xml
+usr/share/foomatic/db/source/printer/Lexmark-C752b.xml
+usr/share/foomatic/db/source/printer/Lexmark-C762.xml
+usr/share/foomatic/db/source/printer/Lexmark-C770dtn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C770n.xml
+usr/share/foomatic/db/source/printer/Lexmark-C772dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C772n.xml
+usr/share/foomatic/db/source/printer/Lexmark-C780.xml
+usr/share/foomatic/db/source/printer/Lexmark-C780dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C780dtn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C780n.xml
+usr/share/foomatic/db/source/printer/Lexmark-C782.xml
+usr/share/foomatic/db/source/printer/Lexmark-C782dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C782dtn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C782n.xml
+usr/share/foomatic/db/source/printer/Lexmark-C790.xml
+usr/share/foomatic/db/source/printer/Lexmark-C792.xml
+usr/share/foomatic/db/source/printer/Lexmark-C910.xml
+usr/share/foomatic/db/source/printer/Lexmark-C912.xml
+usr/share/foomatic/db/source/printer/Lexmark-C920.xml
+usr/share/foomatic/db/source/printer/Lexmark-C920n.xml
+usr/share/foomatic/db/source/printer/Lexmark-C925.xml
+usr/share/foomatic/db/source/printer/Lexmark-C930.xml
+usr/share/foomatic/db/source/printer/Lexmark-C935.xml
+usr/share/foomatic/db/source/printer/Lexmark-C935dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C935dtn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C935hdn.xml
+usr/share/foomatic/db/source/printer/Lexmark-C950.xml
+usr/share/foomatic/db/source/printer/Lexmark-E120.xml
+usr/share/foomatic/db/source/printer/Lexmark-E120n.xml
 usr/share/foomatic/db/source/printer/Lexmark-E210.xml
+usr/share/foomatic/db/source/printer/Lexmark-E230.xml
+usr/share/foomatic/db/source/printer/Lexmark-E238.xml
+usr/share/foomatic/db/source/printer/Lexmark-E250d.xml
+usr/share/foomatic/db/source/printer/Lexmark-E250dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-E260.xml
+usr/share/foomatic/db/source/printer/Lexmark-E260d.xml
+usr/share/foomatic/db/source/printer/Lexmark-E260dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-E320.xml
+usr/share/foomatic/db/source/printer/Lexmark-E350d.xml
+usr/share/foomatic/db/source/printer/Lexmark-E352dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-E360d.xml
+usr/share/foomatic/db/source/printer/Lexmark-E360dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-E450dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-E460dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-E460dw.xml
+usr/share/foomatic/db/source/printer/Lexmark-E462dtn.xml
+usr/share/foomatic/db/source/printer/Lexmark-EG460dn.xml
 usr/share/foomatic/db/source/printer/Lexmark-Optra_C710.xml
 usr/share/foomatic/db/source/printer/Lexmark-Optra_Color_1200.xml
 usr/share/foomatic/db/source/printer/Lexmark-Optra_Color_1275.xml
@@ -3972,15 +6449,65 @@ usr/share/foomatic/db/source/printer/Lexmark-Optra_T612.xml
 usr/share/foomatic/db/source/printer/Lexmark-Optra_T614.xml
 usr/share/foomatic/db/source/printer/Lexmark-Optra_T616.xml
 usr/share/foomatic/db/source/printer/Lexmark-Optra_W810.xml
+usr/share/foomatic/db/source/printer/Lexmark-T430.xml
+usr/share/foomatic/db/source/printer/Lexmark-T640.xml
+usr/share/foomatic/db/source/printer/Lexmark-T642.xml
+usr/share/foomatic/db/source/printer/Lexmark-T644.xml
+usr/share/foomatic/db/source/printer/Lexmark-T650.xml
+usr/share/foomatic/db/source/printer/Lexmark-T652.xml
+usr/share/foomatic/db/source/printer/Lexmark-T654.xml
+usr/share/foomatic/db/source/printer/Lexmark-T656.xml
+usr/share/foomatic/db/source/printer/Lexmark-TG654.xml
 usr/share/foomatic/db/source/printer/Lexmark-Valuewriter_300.xml
+usr/share/foomatic/db/source/printer/Lexmark-W812.xml
+usr/share/foomatic/db/source/printer/Lexmark-W840.xml
+usr/share/foomatic/db/source/printer/Lexmark-W850.xml
 usr/share/foomatic/db/source/printer/Lexmark-Winwriter_100.xml
 usr/share/foomatic/db/source/printer/Lexmark-Winwriter_150c.xml
 usr/share/foomatic/db/source/printer/Lexmark-Winwriter_200.xml
 usr/share/foomatic/db/source/printer/Lexmark-Winwriter_400.xml
 usr/share/foomatic/db/source/printer/Lexmark-X125.xml
+usr/share/foomatic/db/source/printer/Lexmark-X203n.xml
+usr/share/foomatic/db/source/printer/Lexmark-X204n.xml
+usr/share/foomatic/db/source/printer/Lexmark-X264dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-X342n.xml
+usr/share/foomatic/db/source/printer/Lexmark-X363dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-X364dn.xml
+usr/share/foomatic/db/source/printer/Lexmark-X364dw.xml
+usr/share/foomatic/db/source/printer/Lexmark-X463de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X464de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X466de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X466dte.xml
+usr/share/foomatic/db/source/printer/Lexmark-X466dwe.xml
+usr/share/foomatic/db/source/printer/Lexmark-X543.xml
+usr/share/foomatic/db/source/printer/Lexmark-X544.xml
+usr/share/foomatic/db/source/printer/Lexmark-X546.xml
+usr/share/foomatic/db/source/printer/Lexmark-X548.xml
+usr/share/foomatic/db/source/printer/Lexmark-X560n.xml
+usr/share/foomatic/db/source/printer/Lexmark-X642e.xml
+usr/share/foomatic/db/source/printer/Lexmark-X651de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X652de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X654de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X656de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X658de.xml
 usr/share/foomatic/db/source/printer/Lexmark-X73.xml
+usr/share/foomatic/db/source/printer/Lexmark-X734de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X736de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X738de.xml
 usr/share/foomatic/db/source/printer/Lexmark-X74.xml
 usr/share/foomatic/db/source/printer/Lexmark-X75.xml
+usr/share/foomatic/db/source/printer/Lexmark-X790.xml
+usr/share/foomatic/db/source/printer/Lexmark-X792.xml
+usr/share/foomatic/db/source/printer/Lexmark-X860de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X862de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X864de.xml
+usr/share/foomatic/db/source/printer/Lexmark-X920.xml
+usr/share/foomatic/db/source/printer/Lexmark-X925.xml
+usr/share/foomatic/db/source/printer/Lexmark-X940e.xml
+usr/share/foomatic/db/source/printer/Lexmark-X945e.xml
+usr/share/foomatic/db/source/printer/Lexmark-X950.xml
+usr/share/foomatic/db/source/printer/Lexmark-X952.xml
+usr/share/foomatic/db/source/printer/Lexmark-X954.xml
 usr/share/foomatic/db/source/printer/Lexmark-Z11.xml
 usr/share/foomatic/db/source/printer/Lexmark-Z12.xml
 usr/share/foomatic/db/source/printer/Lexmark-Z13.xml
@@ -4016,6 +6543,7 @@ usr/share/foomatic/db/source/printer/Minolta-magicolor_2300_DL.xml
 usr/share/foomatic/db/source/printer/Minolta-magicolor_2400W.xml
 usr/share/foomatic/db/source/printer/Minolta-magicolor_2430_DL.xml
 usr/share/foomatic/db/source/printer/Minolta-magicolor_3100.xml
+usr/share/foomatic/db/source/printer/Minolta_QMS-PagePro_9100N.xml
 usr/share/foomatic/db/source/printer/Mitsubishi-CP50_Color_Printer.xml
 usr/share/foomatic/db/source/printer/NEC-MultiWriter.xml
 usr/share/foomatic/db/source/printer/NEC-P2X.xml
@@ -4107,20 +6635,96 @@ usr/share/foomatic/db/source/printer/NRG-MP_1100.xml
 usr/share/foomatic/db/source/printer/NRG-MP_1350.xml
 usr/share/foomatic/db/source/printer/NRG-MP_1600.xml
 usr/share/foomatic/db/source/printer/NRG-MP_161.xml
+usr/share/foomatic/db/source/printer/NRG-MP_171.xml
 usr/share/foomatic/db/source/printer/NRG-MP_2000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_2001.xml
+usr/share/foomatic/db/source/printer/NRG-MP_201.xml
+usr/share/foomatic/db/source/printer/NRG-MP_2352.xml
+usr/share/foomatic/db/source/printer/NRG-MP_2500.xml
+usr/share/foomatic/db/source/printer/NRG-MP_2501.xml
 usr/share/foomatic/db/source/printer/NRG-MP_2510.xml
+usr/share/foomatic/db/source/printer/NRG-MP_2550.xml
+usr/share/foomatic/db/source/printer/NRG-MP_2550B.xml
+usr/share/foomatic/db/source/printer/NRG-MP_2851.xml
+usr/share/foomatic/db/source/printer/NRG-MP_2852.xml
+usr/share/foomatic/db/source/printer/NRG-MP_301.xml
 usr/share/foomatic/db/source/printer/NRG-MP_3010.xml
+usr/share/foomatic/db/source/printer/NRG-MP_3350.xml
+usr/share/foomatic/db/source/printer/NRG-MP_3350B.xml
+usr/share/foomatic/db/source/printer/NRG-MP_3351.xml
+usr/share/foomatic/db/source/printer/NRG-MP_3352.xml
 usr/share/foomatic/db/source/printer/NRG-MP_3500.xml
+usr/share/foomatic/db/source/printer/NRG-MP_4000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_4000B.xml
+usr/share/foomatic/db/source/printer/NRG-MP_4001.xml
+usr/share/foomatic/db/source/printer/NRG-MP_4002.xml
 usr/share/foomatic/db/source/printer/NRG-MP_4500.xml
+usr/share/foomatic/db/source/printer/NRG-MP_5000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_5000B.xml
+usr/share/foomatic/db/source/printer/NRG-MP_5001.xml
+usr/share/foomatic/db/source/printer/NRG-MP_5002.xml
 usr/share/foomatic/db/source/printer/NRG-MP_5500.xml
+usr/share/foomatic/db/source/printer/NRG-MP_6000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_6001.xml
+usr/share/foomatic/db/source/printer/NRG-MP_6002.xml
 usr/share/foomatic/db/source/printer/NRG-MP_6500.xml
+usr/share/foomatic/db/source/printer/NRG-MP_7000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_7001.xml
 usr/share/foomatic/db/source/printer/NRG-MP_7500.xml
+usr/share/foomatic/db/source/printer/NRG-MP_7502.xml
+usr/share/foomatic/db/source/printer/NRG-MP_8000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_8001.xml
 usr/share/foomatic/db/source/printer/NRG-MP_9000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_9001.xml
+usr/share/foomatic/db/source/printer/NRG-MP_9002.xml
 usr/share/foomatic/db/source/printer/NRG-MP_C1500sp.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C2050.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C2051.xml
 usr/share/foomatic/db/source/printer/NRG-MP_C2500.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C2550.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C2551.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C2800.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C300.xml
 usr/share/foomatic/db/source/printer/NRG-MP_C3000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C3001.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C3002.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C3003.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C300SR.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C305.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C3300.xml
 usr/share/foomatic/db/source/printer/NRG-MP_C3500.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C3501.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C3502.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C3503.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C400.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C4000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C400SR.xml
 usr/share/foomatic/db/source/printer/NRG-MP_C4500.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C4501.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C4501A.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C4502.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C4502A.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C4503.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C5000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C5501.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C5501A.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C5502.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C5502A.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C5503.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C6000.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C6003.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C6501.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C6502.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C7500.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C7501.xml
+usr/share/foomatic/db/source/printer/NRG-MP_C8002.xml
+usr/share/foomatic/db/source/printer/NRG-MP_CW2200.xml
+usr/share/foomatic/db/source/printer/NRG-MP_W2400.xml
+usr/share/foomatic/db/source/printer/NRG-MP_W2401.xml
+usr/share/foomatic/db/source/printer/NRG-MP_W3600.xml
+usr/share/foomatic/db/source/printer/NRG-MP_W3601.xml
+usr/share/foomatic/db/source/printer/NRG-MP_W5100.xml
+usr/share/foomatic/db/source/printer/NRG-MP_W7140.xml
 usr/share/foomatic/db/source/printer/NRG-P7026.xml
 usr/share/foomatic/db/source/printer/NRG-P7026N.xml
 usr/share/foomatic/db/source/printer/NRG-P7032.xml
@@ -4135,17 +6739,53 @@ usr/share/foomatic/db/source/printer/NRG-P7527.xml
 usr/share/foomatic/db/source/printer/NRG-P7527n.xml
 usr/share/foomatic/db/source/printer/NRG-P7535n.xml
 usr/share/foomatic/db/source/printer/NRG-P7575.xml
+usr/share/foomatic/db/source/printer/NRG-Pro_1106EX.xml
+usr/share/foomatic/db/source/printer/NRG-Pro_1107EX.xml
+usr/share/foomatic/db/source/printer/NRG-Pro_1356EX.xml
+usr/share/foomatic/db/source/printer/NRG-Pro_1357EX.xml
+usr/share/foomatic/db/source/printer/NRG-Pro_906EX.xml
+usr/share/foomatic/db/source/printer/NRG-Pro_907EX.xml
+usr/share/foomatic/db/source/printer/NRG-Pro_C5100S.xml
+usr/share/foomatic/db/source/printer/NRG-Pro_C5110S.xml
+usr/share/foomatic/db/source/printer/NRG-SG3100SNw.xml
+usr/share/foomatic/db/source/printer/NRG-SG3110SFNw.xml
+usr/share/foomatic/db/source/printer/NRG-SP_4100N.xml
+usr/share/foomatic/db/source/printer/NRG-SP_4100NL.xml
+usr/share/foomatic/db/source/printer/NRG-SP_4110N.xml
+usr/share/foomatic/db/source/printer/NRG-SP_4210N.xml
+usr/share/foomatic/db/source/printer/NRG-SP_4310N.xml
+usr/share/foomatic/db/source/printer/NRG-SP_5200DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_5200S.xml
+usr/share/foomatic/db/source/printer/NRG-SP_5210DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_5210SF.xml
+usr/share/foomatic/db/source/printer/NRG-SP_5210SR.xml
+usr/share/foomatic/db/source/printer/NRG-SP_6330N.xml
 usr/share/foomatic/db/source/printer/NRG-SP_8100DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_8200DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_8300DN.xml
 usr/share/foomatic/db/source/printer/NRG-SP_9100DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_C320DN.xml
 usr/share/foomatic/db/source/printer/NRG-SP_C410DN.xml
 usr/share/foomatic/db/source/printer/NRG-SP_C411DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_C420DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_C430DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_C431DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_C730DN.xml
 usr/share/foomatic/db/source/printer/NRG-SP_C811DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_C820DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_C821DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_C830DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_C831DN.xml
+usr/share/foomatic/db/source/printer/NRG-SP_W2470.xml
 usr/share/foomatic/db/source/printer/Oce-3145PS.xml
 usr/share/foomatic/db/source/printer/Oce-3155PS.xml
 usr/share/foomatic/db/source/printer/Oce-3165PS.xml
 usr/share/foomatic/db/source/printer/Oce-8445PS.xml
 usr/share/foomatic/db/source/printer/Oce-8465PS.xml
 usr/share/foomatic/db/source/printer/Oce-9050.xml
+usr/share/foomatic/db/source/printer/Oce-9230.xml
+usr/share/foomatic/db/source/printer/Oce-9245.xml
+usr/share/foomatic/db/source/printer/Oce-9260.xml
 usr/share/foomatic/db/source/printer/Oce-PPC3073PS.xml
 usr/share/foomatic/db/source/printer/Oce-PPC3074PS.xml
 usr/share/foomatic/db/source/printer/Oce-PPC3093PS.xml
@@ -4164,50 +6804,137 @@ usr/share/foomatic/db/source/printer/Oce-VarioPrint_2090PS.xml
 usr/share/foomatic/db/source/printer/Oce-VarioPrint_2100PS.xml
 usr/share/foomatic/db/source/printer/Oce-VarioPrint_2105PS.xml
 usr/share/foomatic/db/source/printer/Oce-VarioPrint_2110PS.xml
-usr/share/foomatic/db/source/printer/Okidata-DP_5000.xml
-usr/share/foomatic/db/source/printer/Okidata-ML_320.xml
-usr/share/foomatic/db/source/printer/Okidata-ML_321.xml
-usr/share/foomatic/db/source/printer/Okidata-ML_380.xml
-usr/share/foomatic/db/source/printer/Okidata-Microline_182.xml
-usr/share/foomatic/db/source/printer/Okidata-Microline_192plus.xml
-usr/share/foomatic/db/source/printer/Okidata-Microline_600CL.xml
-usr/share/foomatic/db/source/printer/Okidata-Microline_620CL.xml
-usr/share/foomatic/db/source/printer/Okidata-Microline_IBM_compatible_9_pin.xml
-usr/share/foomatic/db/source/printer/Okidata-OL400.xml
-usr/share/foomatic/db/source/printer/Okidata-OL400e.xml
-usr/share/foomatic/db/source/printer/Okidata-OL400ex.xml
-usr/share/foomatic/db/source/printer/Okidata-OL400w.xml
-usr/share/foomatic/db/source/printer/Okidata-OL410e.xml
-usr/share/foomatic/db/source/printer/Okidata-OL600e.xml
-usr/share/foomatic/db/source/printer/Okidata-OL610e_PS.xml
-usr/share/foomatic/db/source/printer/Okidata-OL610e_S.xml
-usr/share/foomatic/db/source/printer/Okidata-OL800.xml
-usr/share/foomatic/db/source/printer/Okidata-OL810e_PS.xml
-usr/share/foomatic/db/source/printer/Okidata-OL810ex.xml
-usr/share/foomatic/db/source/printer/Okidata-OL820.xml
-usr/share/foomatic/db/source/printer/Okidata-OL830Plus.xml
-usr/share/foomatic/db/source/printer/Okidata-Okijet_2010.xml
-usr/share/foomatic/db/source/printer/Okidata-Okijet_2500.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_10e.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_10ex.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_12i.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_14ex.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_20DXn.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_4w.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_4wplus.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_6e.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_6ex.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_6w.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_8c.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_8p.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_8w.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_8w_Lite.xml
-usr/share/foomatic/db/source/printer/Okidata-Okipage_8z.xml
-usr/share/foomatic/db/source/printer/Okidata-Super_6e.xml
+usr/share/foomatic/db/source/printer/Oce-cm2510.xml
+usr/share/foomatic/db/source/printer/Oce-cm2520.xml
+usr/share/foomatic/db/source/printer/Oce-cm3521.xml
+usr/share/foomatic/db/source/printer/Oce-cm4010.xml
+usr/share/foomatic/db/source/printer/Oce-cm4520.xml
+usr/share/foomatic/db/source/printer/Oce-cm4521.xml
+usr/share/foomatic/db/source/printer/Oce-cm5520.xml
+usr/share/foomatic/db/source/printer/Oce-cm6520.xml
+usr/share/foomatic/db/source/printer/Oce-fx2080.xml
+usr/share/foomatic/db/source/printer/Oce-fx3000.xml
+usr/share/foomatic/db/source/printer/Oce-im2330.xml
+usr/share/foomatic/db/source/printer/Oce-im2830.xml
+usr/share/foomatic/db/source/printer/Oce-im3512.xml
+usr/share/foomatic/db/source/printer/Oce-im3530.xml
+usr/share/foomatic/db/source/printer/Oce-im4512.xml
+usr/share/foomatic/db/source/printer/Oce-im4530.xml
+usr/share/foomatic/db/source/printer/Oce-im5530.xml
+usr/share/foomatic/db/source/printer/Oce-im6020.xml
+usr/share/foomatic/db/source/printer/Oce-im6030.xml
+usr/share/foomatic/db/source/printer/Oce-im7230.xml
+usr/share/foomatic/db/source/printer/Oce-im7520.xml
+usr/share/foomatic/db/source/printer/Oce-im8530.xml
+usr/share/foomatic/db/source/printer/Oce-im9220.xml
+usr/share/foomatic/db/source/printer/Oce-sx1480.xml
+usr/share/foomatic/db/source/printer/Oce-sx2100.xml
+usr/share/foomatic/db/source/printer/Oki-14i.xml
+usr/share/foomatic/db/source/printer/Oki-B2200.xml
+usr/share/foomatic/db/source/printer/Oki-B2400.xml
+usr/share/foomatic/db/source/printer/Oki-B2540_MFP.xml
+usr/share/foomatic/db/source/printer/Oki-B410.xml
+usr/share/foomatic/db/source/printer/Oki-B410dn.xml
+usr/share/foomatic/db/source/printer/Oki-B4200.xml
+usr/share/foomatic/db/source/printer/Oki-B4250.xml
+usr/share/foomatic/db/source/printer/Oki-B4300.xml
+usr/share/foomatic/db/source/printer/Oki-B4350.xml
+usr/share/foomatic/db/source/printer/Oki-B4400.xml
+usr/share/foomatic/db/source/printer/Oki-B4545_MFP.xml
+usr/share/foomatic/db/source/printer/Oki-B4600.xml
+usr/share/foomatic/db/source/printer/Oki-B4600_PS.xml
+usr/share/foomatic/db/source/printer/Oki-B6200.xml
+usr/share/foomatic/db/source/printer/Oki-B6250.xml
+usr/share/foomatic/db/source/printer/Oki-B6300.xml
+usr/share/foomatic/db/source/printer/Oki-B6500.xml
+usr/share/foomatic/db/source/printer/Oki-C110.xml
+usr/share/foomatic/db/source/printer/Oki-C301dn.xml
+usr/share/foomatic/db/source/printer/Oki-C3100.xml
+usr/share/foomatic/db/source/printer/Oki-C310dn.xml
+usr/share/foomatic/db/source/printer/Oki-C3200.xml
+usr/share/foomatic/db/source/printer/Oki-C3300.xml
+usr/share/foomatic/db/source/printer/Oki-C3400.xml
+usr/share/foomatic/db/source/printer/Oki-C3530_MFP.xml
+usr/share/foomatic/db/source/printer/Oki-C5100.xml
+usr/share/foomatic/db/source/printer/Oki-C5200.xml
+usr/share/foomatic/db/source/printer/Oki-C5300.xml
+usr/share/foomatic/db/source/printer/Oki-C5400.xml
+usr/share/foomatic/db/source/printer/Oki-C5450.xml
+usr/share/foomatic/db/source/printer/Oki-C5500.xml
+usr/share/foomatic/db/source/printer/Oki-C5540_MFP.xml
+usr/share/foomatic/db/source/printer/Oki-C5550_MFP.xml
+usr/share/foomatic/db/source/printer/Oki-C5600.xml
+usr/share/foomatic/db/source/printer/Oki-C5650.xml
+usr/share/foomatic/db/source/printer/Oki-C5700.xml
+usr/share/foomatic/db/source/printer/Oki-C5750.xml
+usr/share/foomatic/db/source/printer/Oki-C5800.xml
+usr/share/foomatic/db/source/printer/Oki-C5900.xml
+usr/share/foomatic/db/source/printer/Oki-C6000.xml
+usr/share/foomatic/db/source/printer/Oki-C6050.xml
+usr/share/foomatic/db/source/printer/Oki-C6100.xml
+usr/share/foomatic/db/source/printer/Oki-C6150.xml
+usr/share/foomatic/db/source/printer/Oki-C710.xml
+usr/share/foomatic/db/source/printer/Oki-C7100.xml
+usr/share/foomatic/db/source/printer/Oki-C7200.xml
+usr/share/foomatic/db/source/printer/Oki-C7300.xml
+usr/share/foomatic/db/source/printer/Oki-C7350.xml
+usr/share/foomatic/db/source/printer/Oki-C7400.xml
+usr/share/foomatic/db/source/printer/Oki-C7500.xml
+usr/share/foomatic/db/source/printer/Oki-C7550.xml
+usr/share/foomatic/db/source/printer/Oki-C8800.xml
+usr/share/foomatic/db/source/printer/Oki-C9200.xml
+usr/share/foomatic/db/source/printer/Oki-C9300.xml
+usr/share/foomatic/db/source/printer/Oki-C9400.xml
+usr/share/foomatic/db/source/printer/Oki-C9500.xml
+usr/share/foomatic/db/source/printer/Oki-C9600.xml
+usr/share/foomatic/db/source/printer/Oki-C9650.xml
+usr/share/foomatic/db/source/printer/Oki-C9800.xml
+usr/share/foomatic/db/source/printer/Oki-C9800_MFP.xml
+usr/share/foomatic/db/source/printer/Oki-DP_5000.xml
+usr/share/foomatic/db/source/printer/Oki-ML_320.xml
+usr/share/foomatic/db/source/printer/Oki-ML_321.xml
+usr/share/foomatic/db/source/printer/Oki-ML_380.xml
+usr/share/foomatic/db/source/printer/Oki-Microline_182.xml
+usr/share/foomatic/db/source/printer/Oki-Microline_192plus.xml
+usr/share/foomatic/db/source/printer/Oki-Microline_600CL.xml
+usr/share/foomatic/db/source/printer/Oki-Microline_620CL.xml
+usr/share/foomatic/db/source/printer/Oki-Microline_IBM_compatible_9_pin.xml
+usr/share/foomatic/db/source/printer/Oki-OL400.xml
+usr/share/foomatic/db/source/printer/Oki-OL400e.xml
+usr/share/foomatic/db/source/printer/Oki-OL400ex.xml
+usr/share/foomatic/db/source/printer/Oki-OL400w.xml
+usr/share/foomatic/db/source/printer/Oki-OL410e.xml
+usr/share/foomatic/db/source/printer/Oki-OL600e.xml
+usr/share/foomatic/db/source/printer/Oki-OL610e_PS.xml
+usr/share/foomatic/db/source/printer/Oki-OL610e_S.xml
+usr/share/foomatic/db/source/printer/Oki-OL800.xml
+usr/share/foomatic/db/source/printer/Oki-OL810e_PS.xml
+usr/share/foomatic/db/source/printer/Oki-OL810ex.xml
+usr/share/foomatic/db/source/printer/Oki-OL820.xml
+usr/share/foomatic/db/source/printer/Oki-OL830Plus.xml
+usr/share/foomatic/db/source/printer/Oki-Okijet_2010.xml
+usr/share/foomatic/db/source/printer/Oki-Okijet_2500.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_10e.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_10ex.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_12i.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_14ex.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_20DXn.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_4w.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_4wplus.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_6e.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_6ex.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_6w.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_8c.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_8p.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_8w.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_8w_Lite.xml
+usr/share/foomatic/db/source/printer/Oki-Okipage_8z.xml
+usr/share/foomatic/db/source/printer/Oki-Super_6e.xml
 usr/share/foomatic/db/source/printer/Olivetti-JP350S.xml
 usr/share/foomatic/db/source/printer/Olivetti-JP450.xml
 usr/share/foomatic/db/source/printer/Olivetti-JP470.xml
 usr/share/foomatic/db/source/printer/Olivetti-PG_306.xml
+usr/share/foomatic/db/source/printer/Olivetti-d-Color_P160W.xml
 usr/share/foomatic/db/source/printer/Olympus-P-10.xml
 usr/share/foomatic/db/source/printer/Olympus-P-11.xml
 usr/share/foomatic/db/source/printer/Olympus-P-200.xml
@@ -4219,6 +6946,22 @@ usr/share/foomatic/db/source/printer/Olympus-P-330NE.xml
 usr/share/foomatic/db/source/printer/Olympus-P-400.xml
 usr/share/foomatic/db/source/printer/Olympus-P-440.xml
 usr/share/foomatic/db/source/printer/PCPI-1030.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-180.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-2330.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-4510.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-4520.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-8016P.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-8020E.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-8045.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-8060.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-C213.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-C262.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-C264.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-C265.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-C305.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-C322.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-C354.xml
+usr/share/foomatic/db/source/printer/Panasonic-DP-C405.xml
 usr/share/foomatic/db/source/printer/Panasonic-KX-P1123.xml
 usr/share/foomatic/db/source/printer/Panasonic-KX-P1124.xml
 usr/share/foomatic/db/source/printer/Panasonic-KX-P1150.xml
@@ -4252,6 +6995,8 @@ usr/share/foomatic/db/source/printer/Raven-LP-410.xml
 usr/share/foomatic/db/source/printer/Ricoh-4081.xml
 usr/share/foomatic/db/source/printer/Ricoh-4801.xml
 usr/share/foomatic/db/source/printer/Ricoh-6000.xml
+usr/share/foomatic/db/source/printer/Ricoh-AficioSG3100SNw.xml
+usr/share/foomatic/db/source/printer/Ricoh-AficioSG3110SFNw.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_1022.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_1027.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_1032.xml
@@ -4326,48 +7071,207 @@ usr/share/foomatic/db/source/printer/Ricoh-Aficio_CL7100.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_CL7200.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_CL7300.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_Color5560.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_FX10.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_1100.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_1350.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_1600.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_161.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_171.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_2000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_201.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_2352.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_2500.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_2510.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_2550.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_2550B.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_2851.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_2852.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_301.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_3010.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_3350.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_3350B.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_3351.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_3352.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_3500.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_4000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_4000B.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_4001.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_4002.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_4500.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_5000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_5000B.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_5001.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_5002.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_5500.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_6000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_6001.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_6002.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_6500.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_7000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_7001.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_7500.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_7502.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_8000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_8001.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_9000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_9001.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_9002.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C2050.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C2051.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C2500.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C2550.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C2551.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C2800.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C300.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C3000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C3001.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C3002.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C300SR.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C305.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C3300.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C3500.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C3501.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C3502.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C400.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C4000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C400SR.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C4500.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C4501.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C4501A.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C4502.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C4502A.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C5000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C5501.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C5501A.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C5502.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C5502A.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C6000.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C6501.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C7500.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_C7501.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_W2400.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_W2401.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_W3600.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_W3601.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_W5100.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_MP_W7140.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_1000S.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_1100S.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_4100N.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_4100NL.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_4110N.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_4210N.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_4310N.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_5200DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_5200S.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_5210DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_5210SF.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_5210SR.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_6330N.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_8100DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_8200DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_8300DN.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_9100DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C222SF.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C320DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C400DN.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C410DN.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C411DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C420DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C430DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C431DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C730DN.xml
 usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C811DN.xml
-usr/share/foomatic/db/source/printer/Ricoh-Afico_FX10.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C820DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C821DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C830DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_C831DN.xml
+usr/share/foomatic/db/source/printer/Ricoh-Aficio_SP_W2470.xml
 usr/share/foomatic/db/source/printer/Ricoh-ColorLaser_AP828.xml
 usr/share/foomatic/db/source/printer/Ricoh-DDP_70.xml
 usr/share/foomatic/db/source/printer/Ricoh-DDP_92.xml
 usr/share/foomatic/db/source/printer/Ricoh-EMP_156.xml
 usr/share/foomatic/db/source/printer/Ricoh-FAX5510L_5510NF.xml
+usr/share/foomatic/db/source/printer/Ricoh-GX_3050N.xml
+usr/share/foomatic/db/source/printer/Ricoh-GX_3050SFN.xml
+usr/share/foomatic/db/source/printer/Ricoh-GX_5050N.xml
+usr/share/foomatic/db/source/printer/Ricoh-GX_E3350N.xml
+usr/share/foomatic/db/source/printer/Ricoh-GX_E5550N.xml
 usr/share/foomatic/db/source/printer/Ricoh-LASER_AP2600.xml
 usr/share/foomatic/db/source/printer/Ricoh-LASER_AP2600N.xml
 usr/share/foomatic/db/source/printer/Ricoh-LASER_AP2610.xml
 usr/share/foomatic/db/source/printer/Ricoh-LASER_AP2610N.xml
+usr/share/foomatic/db/source/printer/Ricoh-MP_2001.xml
+usr/share/foomatic/db/source/printer/Ricoh-MP_2501.xml
 usr/share/foomatic/db/source/printer/Ricoh-MP_C1500_615C.xml
+usr/share/foomatic/db/source/printer/Ricoh-MP_C3003.xml
+usr/share/foomatic/db/source/printer/Ricoh-MP_C3503.xml
+usr/share/foomatic/db/source/printer/Ricoh-MP_C4503.xml
+usr/share/foomatic/db/source/printer/Ricoh-MP_C5503.xml
+usr/share/foomatic/db/source/printer/Ricoh-MP_C6003.xml
+usr/share/foomatic/db/source/printer/Ricoh-MP_C6502.xml
+usr/share/foomatic/db/source/printer/Ricoh-MP_C8002.xml
+usr/share/foomatic/db/source/printer/Ricoh-MP_CW2200.xml
+usr/share/foomatic/db/source/printer/Ricoh-Pro_1106EX.xml
+usr/share/foomatic/db/source/printer/Ricoh-Pro_1107EX.xml
+usr/share/foomatic/db/source/printer/Ricoh-Pro_1356EX.xml
+usr/share/foomatic/db/source/printer/Ricoh-Pro_1357EX.xml
+usr/share/foomatic/db/source/printer/Ricoh-Pro_906EX.xml
+usr/share/foomatic/db/source/printer/Ricoh-Pro_907EX.xml
+usr/share/foomatic/db/source/printer/Ricoh-Pro_C5100S.xml
+usr/share/foomatic/db/source/printer/Ricoh-Pro_C5110S.xml
 usr/share/foomatic/db/source/printer/Ricoh-RPDL_III_Laser_Printer.xml
 usr/share/foomatic/db/source/printer/Ricoh-RPDL_II_Laser_Printer.xml
 usr/share/foomatic/db/source/printer/Ricoh-RPDL_IV_Laser_Printer.xml
 usr/share/foomatic/db/source/printer/Ricoh-RPDL_I_Laser_Printer.xml
 usr/share/foomatic/db/source/printer/Samsung-CLP-300.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-310.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-315.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-325.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-350.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-365.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-410.xml
 usr/share/foomatic/db/source/printer/Samsung-CLP-500.xml
 usr/share/foomatic/db/source/printer/Samsung-CLP-510.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-550.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-550N.xml
 usr/share/foomatic/db/source/printer/Samsung-CLP-600.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-610.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-610ND.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-620.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-650.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-650N.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-660.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-660N.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-660ND.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-670.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-680.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-770.xml
+usr/share/foomatic/db/source/printer/Samsung-CLP-775.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-2160.xml
 usr/share/foomatic/db/source/printer/Samsung-CLX-3160.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-3175.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-3185.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-3300.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-4190.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-6200.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-6220.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-6240.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-6250.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-6260.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-8380.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-8385.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-8385X.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-8540.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-8640_8650.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-9250_9350.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-9252_9352.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-92x1_93x1.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-981x.xml
+usr/share/foomatic/db/source/printer/Samsung-CLX-982x.xml
+usr/share/foomatic/db/source/printer/Samsung-M262x_282x.xml
+usr/share/foomatic/db/source/printer/Samsung-M267x_287x.xml
+usr/share/foomatic/db/source/printer/Samsung-M337x_387x_407x.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-1000.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-1010.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-1020.xml
@@ -4401,13 +7305,42 @@ usr/share/foomatic/db/source/printer/Samsung-ML-2250.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-2550.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-2551N.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-2552W.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-2570.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-2571N.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-2580.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-2850.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-2850D.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-2851ND.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-2853.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-2855.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-2950.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-3051N.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-3051ND.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-3470.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-3470D.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-3471ND.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-3475.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-371x.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-375x.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-4050.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-4050N.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-4055.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-4500.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-451x_501x.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-4550.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-4551N.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-4551ND.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-4555.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-4600.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-5000a.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-5050G.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-5080.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-551x_651x.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-6000.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-6040.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-6060.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-6060N.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-6060S.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-6100.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-7000.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-7000N.xml
@@ -4417,11 +7350,39 @@ usr/share/foomatic/db/source/printer/Samsung-ML-7300.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-7300N.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-85.xml
 usr/share/foomatic/db/source/printer/Samsung-ML-85G.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-8850_8950.xml
+usr/share/foomatic/db/source/printer/Samsung-ML-8x00.xml
 usr/share/foomatic/db/source/printer/Samsung-QL-5100A.xml
 usr/share/foomatic/db/source/printer/Samsung-QL-6050.xml
 usr/share/foomatic/db/source/printer/Samsung-QL-85G.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-470x.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-472x.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-483x_5x3x.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-4x24.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-4x25.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-4x26.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-4x28.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-5635.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-5835_5935.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-5835_5935X.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-6545.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-6545X.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-681x.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-6x20.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-6x22.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-6x45.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-6x55.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-6x55X.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-8030_8040.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-8123_8128.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-8230_8240.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-881x.xml
+usr/share/foomatic/db/source/printer/Samsung-SCX-882x.xml
 usr/share/foomatic/db/source/printer/Samsung-SF_MSYS_MJ-4700_4800_4500C.xml
 usr/share/foomatic/db/source/printer/Samsung-SI-630A.xml
+usr/share/foomatic/db/source/printer/Savin-2404WD.xml
+usr/share/foomatic/db/source/printer/Savin-2404WDP.xml
+usr/share/foomatic/db/source/printer/Savin-2406WD.xml
 usr/share/foomatic/db/source/printer/Savin-2522.xml
 usr/share/foomatic/db/source/printer/Savin-2527.xml
 usr/share/foomatic/db/source/printer/Savin-2532.xml
@@ -4429,6 +7390,7 @@ usr/share/foomatic/db/source/printer/Savin-2535_2235.xml
 usr/share/foomatic/db/source/printer/Savin-2545_2245.xml
 usr/share/foomatic/db/source/printer/Savin-2560.xml
 usr/share/foomatic/db/source/printer/Savin-2575.xml
+usr/share/foomatic/db/source/printer/Savin-3406WD.xml
 usr/share/foomatic/db/source/printer/Savin-3515.xml
 usr/share/foomatic/db/source/printer/Savin-40105.xml
 usr/share/foomatic/db/source/printer/Savin-4015.xml
@@ -4444,6 +7406,9 @@ usr/share/foomatic/db/source/printer/Savin-4051.xml
 usr/share/foomatic/db/source/printer/Savin-4060.xml
 usr/share/foomatic/db/source/printer/Savin-4075.xml
 usr/share/foomatic/db/source/printer/Savin-4090.xml
+usr/share/foomatic/db/source/printer/Savin-5100WD.xml
+usr/share/foomatic/db/source/printer/Savin-7025.xml
+usr/share/foomatic/db/source/printer/Savin-7140WD.xml
 usr/share/foomatic/db/source/printer/Savin-8016.xml
 usr/share/foomatic/db/source/printer/Savin-8020.xml
 usr/share/foomatic/db/source/printer/Savin-8020d.xml
@@ -4456,14 +7421,35 @@ usr/share/foomatic/db/source/printer/Savin-8035e.xml
 usr/share/foomatic/db/source/printer/Savin-8045_8045g.xml
 usr/share/foomatic/db/source/printer/Savin-8045e.xml
 usr/share/foomatic/db/source/printer/Savin-8055.xml
+usr/share/foomatic/db/source/printer/Savin-8060.xml
 usr/share/foomatic/db/source/printer/Savin-8065.xml
+usr/share/foomatic/db/source/printer/Savin-8070.xml
 usr/share/foomatic/db/source/printer/Savin-8075.xml
+usr/share/foomatic/db/source/printer/Savin-8080.xml
 usr/share/foomatic/db/source/printer/Savin-8090.xml
 usr/share/foomatic/db/source/printer/Savin-8110.xml
 usr/share/foomatic/db/source/printer/Savin-8135.xml
 usr/share/foomatic/db/source/printer/Savin-816.xml
 usr/share/foomatic/db/source/printer/Savin-9016.xml
 usr/share/foomatic/db/source/printer/Savin-9021d.xml
+usr/share/foomatic/db/source/printer/Savin-9025.xml
+usr/share/foomatic/db/source/printer/Savin-9025b.xml
+usr/share/foomatic/db/source/printer/Savin-9033.xml
+usr/share/foomatic/db/source/printer/Savin-9033b.xml
+usr/share/foomatic/db/source/printer/Savin-9040.xml
+usr/share/foomatic/db/source/printer/Savin-9040b.xml
+usr/share/foomatic/db/source/printer/Savin-9050.xml
+usr/share/foomatic/db/source/printer/Savin-9050b.xml
+usr/share/foomatic/db/source/printer/Savin-9060.xml
+usr/share/foomatic/db/source/printer/Savin-9070.xml
+usr/share/foomatic/db/source/printer/Savin-9080.xml
+usr/share/foomatic/db/source/printer/Savin-9090.xml
+usr/share/foomatic/db/source/printer/Savin-917.xml
+usr/share/foomatic/db/source/printer/Savin-920.xml
+usr/share/foomatic/db/source/printer/Savin-9228.xml
+usr/share/foomatic/db/source/printer/Savin-9233.xml
+usr/share/foomatic/db/source/printer/Savin-9240.xml
+usr/share/foomatic/db/source/printer/Savin-9250.xml
 usr/share/foomatic/db/source/printer/Savin-C2408.xml
 usr/share/foomatic/db/source/printer/Savin-C2410.xml
 usr/share/foomatic/db/source/printer/Savin-C2524.xml
@@ -4471,18 +7457,37 @@ usr/share/foomatic/db/source/printer/Savin-C2525.xml
 usr/share/foomatic/db/source/printer/Savin-C2532.xml
 usr/share/foomatic/db/source/printer/Savin-C2820.xml
 usr/share/foomatic/db/source/printer/Savin-C2824.xml
+usr/share/foomatic/db/source/printer/Savin-C2828.xml
 usr/share/foomatic/db/source/printer/Savin-C3030.xml
 usr/share/foomatic/db/source/printer/Savin-C3210.xml
 usr/share/foomatic/db/source/printer/Savin-C3210e.xml
 usr/share/foomatic/db/source/printer/Savin-C3224.xml
+usr/share/foomatic/db/source/printer/Savin-C3333.xml
 usr/share/foomatic/db/source/printer/Savin-C3528.xml
 usr/share/foomatic/db/source/printer/Savin-C3535.xml
 usr/share/foomatic/db/source/printer/Savin-C3828.xml
+usr/share/foomatic/db/source/printer/Savin-C4040.xml
 usr/share/foomatic/db/source/printer/Savin-C4535.xml
 usr/share/foomatic/db/source/printer/Savin-C4540.xml
+usr/share/foomatic/db/source/printer/Savin-C5050.xml
 usr/share/foomatic/db/source/printer/Savin-C6045.xml
+usr/share/foomatic/db/source/printer/Savin-C6055.xml
+usr/share/foomatic/db/source/printer/Savin-C7570.xml
+usr/share/foomatic/db/source/printer/Savin-C9020.xml
+usr/share/foomatic/db/source/printer/Savin-C9025.xml
+usr/share/foomatic/db/source/printer/Savin-C9065.xml
+usr/share/foomatic/db/source/printer/Savin-C9075.xml
+usr/share/foomatic/db/source/printer/Savin-C9120.xml
+usr/share/foomatic/db/source/printer/Savin-C9125.xml
+usr/share/foomatic/db/source/printer/Savin-C9130.xml
+usr/share/foomatic/db/source/printer/Savin-C9135.xml
+usr/share/foomatic/db/source/printer/Savin-C9145.xml
+usr/share/foomatic/db/source/printer/Savin-C9145A.xml
+usr/share/foomatic/db/source/printer/Savin-C9155.xml
+usr/share/foomatic/db/source/printer/Savin-C9155A.xml
 usr/share/foomatic/db/source/printer/Savin-CLP1036.xml
 usr/share/foomatic/db/source/printer/Savin-CLP128.xml
+usr/share/foomatic/db/source/printer/Savin-CLP131DN.xml
 usr/share/foomatic/db/source/printer/Savin-CLP135.xml
 usr/share/foomatic/db/source/printer/Savin-CLP1620.xml
 usr/share/foomatic/db/source/printer/Savin-CLP17.xml
@@ -4493,27 +7498,88 @@ usr/share/foomatic/db/source/printer/Savin-CLP26DN.xml
 usr/share/foomatic/db/source/printer/Savin-CLP27DN.xml
 usr/share/foomatic/db/source/printer/Savin-CLP28.xml
 usr/share/foomatic/db/source/printer/Savin-CLP31DN.xml
+usr/share/foomatic/db/source/printer/Savin-CLP340D.xml
 usr/share/foomatic/db/source/printer/Savin-CLP35.xml
+usr/share/foomatic/db/source/printer/Savin-CLP350D.xml
+usr/share/foomatic/db/source/printer/Savin-CLP37DN.xml
+usr/share/foomatic/db/source/printer/Savin-CLP42DN.xml
 usr/share/foomatic/db/source/printer/Savin-CLP831.xml
+usr/share/foomatic/db/source/printer/Savin-C_230.xml
+usr/share/foomatic/db/source/printer/Savin-C_230SR.xml
+usr/share/foomatic/db/source/printer/Savin-C_240.xml
+usr/share/foomatic/db/source/printer/Savin-C_240SR.xml
 usr/share/foomatic/db/source/printer/Savin-FAX3799_3799nf.xml
 usr/share/foomatic/db/source/printer/Savin-MLP145.xml
+usr/share/foomatic/db/source/printer/Savin-MLP150DN.xml
 usr/share/foomatic/db/source/printer/Savin-MLP175n.xml
+usr/share/foomatic/db/source/printer/Savin-MLP235n.xml
 usr/share/foomatic/db/source/printer/Savin-MLP25.xml
 usr/share/foomatic/db/source/printer/Savin-MLP25n.xml
 usr/share/foomatic/db/source/printer/Savin-MLP26.xml
 usr/share/foomatic/db/source/printer/Savin-MLP26n.xml
 usr/share/foomatic/db/source/printer/Savin-MLP28.xml
 usr/share/foomatic/db/source/printer/Savin-MLP28n.xml
+usr/share/foomatic/db/source/printer/Savin-MLP31n.xml
+usr/share/foomatic/db/source/printer/Savin-MLP31nL.xml
 usr/share/foomatic/db/source/printer/Savin-MLP32.xml
 usr/share/foomatic/db/source/printer/Savin-MLP35n.xml
+usr/share/foomatic/db/source/printer/Savin-MLP36n.xml
+usr/share/foomatic/db/source/printer/Savin-MLP37N.xml
 usr/share/foomatic/db/source/printer/Savin-MLP45.xml
 usr/share/foomatic/db/source/printer/Savin-MLP75n.xml
+usr/share/foomatic/db/source/printer/Savin-MP_2352.xml
+usr/share/foomatic/db/source/printer/Savin-MP_2501.xml
+usr/share/foomatic/db/source/printer/Savin-MP_2852.xml
+usr/share/foomatic/db/source/printer/Savin-MP_301.xml
+usr/share/foomatic/db/source/printer/Savin-MP_3352.xml
+usr/share/foomatic/db/source/printer/Savin-MP_4002.xml
+usr/share/foomatic/db/source/printer/Savin-MP_5002.xml
+usr/share/foomatic/db/source/printer/Savin-MP_6002.xml
+usr/share/foomatic/db/source/printer/Savin-MP_7502.xml
+usr/share/foomatic/db/source/printer/Savin-MP_9002.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C3002.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C3003.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C305.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C3502.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C3503.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C4502.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C4502A.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C4503.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C5502.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C5502A.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C5503.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C6003.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C6502.xml
+usr/share/foomatic/db/source/printer/Savin-MP_C8002.xml
+usr/share/foomatic/db/source/printer/Savin-MP_CW2200.xml
+usr/share/foomatic/db/source/printer/Savin-Pro_1106EX.xml
+usr/share/foomatic/db/source/printer/Savin-Pro_1107EX.xml
+usr/share/foomatic/db/source/printer/Savin-Pro_1356EX.xml
+usr/share/foomatic/db/source/printer/Savin-Pro_1357EX.xml
+usr/share/foomatic/db/source/printer/Savin-Pro_906EX.xml
+usr/share/foomatic/db/source/printer/Savin-Pro_907EX.xml
+usr/share/foomatic/db/source/printer/Savin-Pro_C5100S.xml
+usr/share/foomatic/db/source/printer/Savin-Pro_C5110S.xml
 usr/share/foomatic/db/source/printer/Savin-SDC555.xml
+usr/share/foomatic/db/source/printer/Savin-SG3100SNw.xml
+usr/share/foomatic/db/source/printer/Savin-SG3110SFNw.xml
 usr/share/foomatic/db/source/printer/Savin-SGC_1506.xml
 usr/share/foomatic/db/source/printer/Savin-SLP26.xml
 usr/share/foomatic/db/source/printer/Savin-SLP26n.xml
 usr/share/foomatic/db/source/printer/Savin-SLP32.xml
 usr/share/foomatic/db/source/printer/Savin-SLP38c.xml
+usr/share/foomatic/db/source/printer/Savin-SP_4310N.xml
+usr/share/foomatic/db/source/printer/Savin-SP_5200DN.xml
+usr/share/foomatic/db/source/printer/Savin-SP_5200S.xml
+usr/share/foomatic/db/source/printer/Savin-SP_5210DN.xml
+usr/share/foomatic/db/source/printer/Savin-SP_5210SF.xml
+usr/share/foomatic/db/source/printer/Savin-SP_5210SR.xml
+usr/share/foomatic/db/source/printer/Savin-SP_8300DN.xml
+usr/share/foomatic/db/source/printer/Savin-SP_C320DN.xml
+usr/share/foomatic/db/source/printer/Savin-SP_C400DN.xml
+usr/share/foomatic/db/source/printer/Savin-SP_C730DN.xml
+usr/share/foomatic/db/source/printer/Savin-SP_C830DN.xml
+usr/share/foomatic/db/source/printer/Savin-SP_C831DN.xml
 usr/share/foomatic/db/source/printer/Seiko-SLP-100.xml
 usr/share/foomatic/db/source/printer/Seiko-SLP-200.xml
 usr/share/foomatic/db/source/printer/Seiko-SLP-240.xml
@@ -4529,7 +7595,152 @@ usr/share/foomatic/db/source/printer/Sharp-AJ-1805.xml
 usr/share/foomatic/db/source/printer/Sharp-AJ-2000.xml
 usr/share/foomatic/db/source/printer/Sharp-AJ-2005.xml
 usr/share/foomatic/db/source/printer/Sharp-AJ-2100.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-155FG.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-155FG_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-160M.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-160M_PS.xml
 usr/share/foomatic/db/source/printer/Sharp-AR-161.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-163FG.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-163FG_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-163G.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-163G_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-168D.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-168S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-200M.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-200M_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-205FG.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-205FG_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-205G.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-205G_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-266FP.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-266FP_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-266S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-266S_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-311FP.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-311FP_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-311N.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-311N_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-311S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-311S_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-351FP.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-351FP_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-351N.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-351N_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-351S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-351S_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-451FP.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-451FP_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-451N.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-451N_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-451S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-451S_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-5220.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-555M.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-555M_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-555S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-555S_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-625M.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-625M_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-625S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-625S_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-705M.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-705M_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-705S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-705S_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-BC260.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-BC320.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C170FP.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C170FP_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C170M.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C172FP.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C172FP_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C172M.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C260.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C260F.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C260FP.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C260FP_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C260M.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C260P.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C260S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C261F.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C261FP.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C261FP_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C261M.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C261S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C262FP.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C262FP_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C262M.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-C262S.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M150.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M150_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M155.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M155_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M160.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M160_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M161.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M161_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M162.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M162_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M165.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M165_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M205.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M205_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M206.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M206_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M207.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M207_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M236.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M236_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M237.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M237_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M276.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M276_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M277.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M277_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M351N.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M351U.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M355N.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M355U.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M451N.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M451U.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M455N.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M455U.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M550N.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M550U.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M620N.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M620U.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M700N.xml
+usr/share/foomatic/db/source/printer/Sharp-AR-M700U.xml
+usr/share/foomatic/db/source/printer/Sharp-ARP350.xml
+usr/share/foomatic/db/source/printer/Sharp-ARP450.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2300FG.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2300FG_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2300G.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2300G_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2300N.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2300N_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2700FG.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2700FG_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2700G.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2700G_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2700N.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-2700N_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-3500FN.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-3500FN_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-3500N.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-3500N_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-3501FN.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-3501FN_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-3501N.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-3501N_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-4500FN.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-4500FN_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-4500N.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-4500N_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-4501FN.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-4501FN_PS.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-4501N.xml
+usr/share/foomatic/db/source/printer/Sharp-MX-4501N_PS.xml
 usr/share/foomatic/db/source/printer/SiPix-Pocket_Printer_A6.xml
 usr/share/foomatic/db/source/printer/Sony-IJP-V100.xml
 usr/share/foomatic/db/source/printer/Sony-UP-DP10.xml
@@ -4544,49 +7755,96 @@ usr/share/foomatic/db/source/printer/Star-NL-10.xml
 usr/share/foomatic/db/source/printer/Star-NX-1001.xml
 usr/share/foomatic/db/source/printer/Star-StarJet_48.xml
 usr/share/foomatic/db/source/printer/Star-WinType_4000.xml
+usr/share/foomatic/db/source/printer/Tally-LN45.xml
+usr/share/foomatic/db/source/printer/Tally-ML450.xml
 usr/share/foomatic/db/source/printer/Tally-MT908.xml
-usr/share/foomatic/db/source/printer/Tektronix-3693d_color_printer_8-bit_mode.xml
-usr/share/foomatic/db/source/printer/Tektronix-4693d_color_printer_2-bit_mode.xml
-usr/share/foomatic/db/source/printer/Tektronix-4693d_color_printer_4-bit_mode.xml
+usr/share/foomatic/db/source/printer/Tektronix-4693d.xml
 usr/share/foomatic/db/source/printer/Tektronix-4695.xml
 usr/share/foomatic/db/source/printer/Tektronix-4696.xml
 usr/share/foomatic/db/source/printer/Tektronix-4697.xml
 usr/share/foomatic/db/source/printer/Tektronix-Phaser_350.xml
+usr/share/foomatic/db/source/printer/Tektronix-Phaser_750DP.xml
+usr/share/foomatic/db/source/printer/Tektronix-Phaser_750DX.xml
+usr/share/foomatic/db/source/printer/Tektronix-Phaser_750N.xml
+usr/share/foomatic/db/source/printer/Tektronix-Phaser_750P.xml
 usr/share/foomatic/db/source/printer/Tektronix-Phaser_780.xml
 usr/share/foomatic/db/source/printer/Tektronix-Phaser_850.xml
+usr/share/foomatic/db/source/printer/Tektronix-Phaser_850DP.xml
+usr/share/foomatic/db/source/printer/Tektronix-Phaser_850DX.xml
+usr/share/foomatic/db/source/printer/Tektronix-Phaser_850N.xml
 usr/share/foomatic/db/source/printer/Tektronix-Phaser_IISX.xml
 usr/share/foomatic/db/source/printer/Tektronix-Phaser_PX.xml
+usr/share/foomatic/db/source/printer/Texas_Instruments-microLaser_PowerPro_12.xml
+usr/share/foomatic/db/source/printer/Texas_Instruments-microLaser_Pro_600.xml
+usr/share/foomatic/db/source/printer/Texas_Instruments-microLaser_Pro_8.xml
+usr/share/foomatic/db/source/printer/Texas_Instruments-microLaser_Pro_E.xml
+usr/share/foomatic/db/source/printer/Texas_Instruments-microLaser_XL_Basic.xml
+usr/share/foomatic/db/source/printer/Texas_Instruments-microLaser_XL_PS17.xml
+usr/share/foomatic/db/source/printer/Texas_Instruments-microLaser_XL_PS35.xml
+usr/share/foomatic/db/source/printer/Texas_Instruments-microLaser_XL_Turbo.xml
 usr/share/foomatic/db/source/printer/Toshiba-DP2570.xml
-usr/share/foomatic/db/source/printer/Toshiba-GL_1010.xml
-usr/share/foomatic/db/source/printer/Toshiba-GL_1020.xml
+usr/share/foomatic/db/source/printer/Toshiba-GL-1010.xml
+usr/share/foomatic/db/source/printer/Toshiba-GL-1020.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_1101.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_1351.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_162.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_162d.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_165.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_167.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_200L.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_202L.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_203l.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_205.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_220cp.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_230.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_232.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_233.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_237.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_2500c.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_280.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_281c.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_282.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_283.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_2830c.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_350.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_3500c.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_3510c.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_3511.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_351c.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_352.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_353.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_3530c.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_450.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_4500c.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_450s.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_4511.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_451c.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_452.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_4520c.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_453.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_500p.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_500s.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_520.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_523.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_523t.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_5500c.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_600.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_603.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_603t.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_720.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_723.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_723t.xml
 usr/share/foomatic/db/source/printer/Toshiba-e-Studio_850.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_853.xml
+usr/share/foomatic/db/source/printer/Toshiba-e-Studio_901.xml
+usr/share/foomatic/db/source/printer/Xante-Accel-a-Writer_4G.xml
+usr/share/foomatic/db/source/printer/Xante-FilmMaker_4.xml
+usr/share/foomatic/db/source/printer/Xante-PlateMaker_4.xml
 usr/share/foomatic/db/source/printer/Xerox-2700_XES.xml
 usr/share/foomatic/db/source/printer/Xerox-3700_XES.xml
 usr/share/foomatic/db/source/printer/Xerox-4045_XES.xml
 usr/share/foomatic/db/source/printer/Xerox-Able_1406.xml
+usr/share/foomatic/db/source/printer/Xerox-DocuColor_2006.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_4508.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_C11.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_C20.xml
@@ -4596,9 +7854,15 @@ usr/share/foomatic/db/source/printer/Xerox-DocuPrint_C8.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_M750.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_M760.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_N17.xml
+usr/share/foomatic/db/source/printer/Xerox-DocuPrint_N2125.xml
+usr/share/foomatic/db/source/printer/Xerox-DocuPrint_N24.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_N32.xml
+usr/share/foomatic/db/source/printer/Xerox-DocuPrint_N3225.xml
+usr/share/foomatic/db/source/printer/Xerox-DocuPrint_N40.xml
+usr/share/foomatic/db/source/printer/Xerox-DocuPrint_N4025.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_N4512.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_N4512PS.xml
+usr/share/foomatic/db/source/printer/Xerox-DocuPrint_N4525.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_P12.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_P1202.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_P8.xml
@@ -4607,16 +7871,147 @@ usr/share/foomatic/db/source/printer/Xerox-DocuPrint_XJ6C.xml
 usr/share/foomatic/db/source/printer/Xerox-DocuPrint_XJ8C.xml
 usr/share/foomatic/db/source/printer/Xerox-Document_Centre_400.xml
 usr/share/foomatic/db/source/printer/Xerox-Document_Homecentre.xml
-usr/share/foomatic/db/source/printer/Xerox-Phaser-6110.xml
-usr/share/foomatic/db/source/printer/Xerox-Phaser-6115MFP.xml
+usr/share/foomatic/db/source/printer/Xerox-FaxCenter_2121.xml
+usr/share/foomatic/db/source/printer/Xerox-FaxCentre_2218.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_1235.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_2135.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_3110.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_3124.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_3150.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_3160N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_3200MFP.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_3400.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_3450.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_3500.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4400B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4400DT.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4400DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4400N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4500B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4500DT.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4500DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4500N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4510.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4510B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4510DT.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4510DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_4510N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_5500.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_5500B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_5500DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_5500DT.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_5500DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_5500N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6100.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6110.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6115MFP.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6120.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6121MFP.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6125.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6130.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6130N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6180.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6180DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6180MFP-D.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6200B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6200DP.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6200DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6200N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6250B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6250DP.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6250DT.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6250DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6250N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6300DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6300N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6350DP.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6350DT.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6350DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6360.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6360DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_6360DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7300B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7300DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7300DT.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7300DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7300N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7400.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7400DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7400DT.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7400DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7400DXF.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7400N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7700DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7700DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7700GX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7750B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7750DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7750DXF.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7750GX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7760.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7760DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7760DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_7760GX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_790.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8200B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8200DP.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8200DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8200N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8400B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8400BD.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8400DP.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8400DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8400N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8500DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8500N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8550DP.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8550DT.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8550DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8560.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8560DN.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_860B.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_860DP.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_860DX.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_860N.xml
+usr/share/foomatic/db/source/printer/Xerox-Phaser_8860.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_24.xml
 usr/share/foomatic/db/source/printer/Xerox-WorkCentre_385.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_4118.xml
 usr/share/foomatic/db/source/printer/Xerox-WorkCentre_450cp.xml
 usr/share/foomatic/db/source/printer/Xerox-WorkCentre_470cx.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_6015.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_7228.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_7232.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_7242.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_7328.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_7335.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_7345.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_C2424.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_M118.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_M20.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_M24.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_PE120.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_Pro_128.xml
+usr/share/foomatic/db/source/printer/Xerox-WorkCentre_Pro_133.xml
 usr/share/foomatic/db/source/printer/Xerox-WorkCentre_XD120f.xml
 usr/share/foomatic/db/source/printer/Xerox-WorkCentre_XE80.xml
 usr/share/foomatic/db/source/printer/Xerox-WorkCentre_XE90fx.xml
 usr/share/foomatic/db/source/printer/Xerox-WorkCentre_XK35c.xml
-#usr/share/foomatic/templates
-usr/share/foomatic/templates/pjl_enum_choice.xml
-usr/share/foomatic/templates/pjl_enum_option.xml
-usr/share/foomatic/templates/pjl_num_option.xml
+#usr/share/foomatic/xmlschema
+usr/share/foomatic/xmlschema/driver.xsd
+usr/share/foomatic/xmlschema/option.xsd
+usr/share/foomatic/xmlschema/printer.xsd
+usr/share/foomatic/xmlschema/types.xsd
+#usr/share/man/man1/foomatic-combo-xml.1
+#usr/share/man/man1/foomatic-compiledb.1
+#usr/share/man/man1/foomatic-configure.1
+#usr/share/man/man1/foomatic-perl-data.1
+#usr/share/man/man1/foomatic-ppd-options.1
+#usr/share/man/man1/foomatic-ppdfile.1
+#usr/share/man/man1/foomatic-printjob.1
+#usr/share/man/man1/foomatic-rip.1
+#usr/share/man/man8/foomatic-addpjloptions.8
+#usr/share/man/man8/foomatic-getpjloptions.8
+#usr/share/man/man8/foomatic-kitload.8
+#usr/share/man/man8/foomatic-preferred-driver.8
+var/cache/foomatic
index ada23da83a0c0e960d57e244eaa850fbc7d26269..5584c25758f05359a5f68d513f45879e0ddaa510 100644 (file)
@@ -24,25 +24,6 @@ usr/lib/perl5/site_perl/5.12.3/Git/I18N.pm
 #usr/lib/perl5/site_perl/5.12.3/Git/SVN/Utils.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Git
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Git/.packlist
-usr/lib/python2.7/site-packages/git_remote_helpers
-#usr/lib/python2.7/site-packages/git_remote_helpers-0.1.0-py2.7.egg-info
-usr/lib/python2.7/site-packages/git_remote_helpers/__init__.py
-usr/lib/python2.7/site-packages/git_remote_helpers/__init__.pyc
-usr/lib/python2.7/site-packages/git_remote_helpers/git
-usr/lib/python2.7/site-packages/git_remote_helpers/git/__init__.py
-usr/lib/python2.7/site-packages/git_remote_helpers/git/__init__.pyc
-usr/lib/python2.7/site-packages/git_remote_helpers/git/exporter.py
-usr/lib/python2.7/site-packages/git_remote_helpers/git/exporter.pyc
-usr/lib/python2.7/site-packages/git_remote_helpers/git/git.py
-usr/lib/python2.7/site-packages/git_remote_helpers/git/git.pyc
-usr/lib/python2.7/site-packages/git_remote_helpers/git/importer.py
-usr/lib/python2.7/site-packages/git_remote_helpers/git/importer.pyc
-usr/lib/python2.7/site-packages/git_remote_helpers/git/non_local.py
-usr/lib/python2.7/site-packages/git_remote_helpers/git/non_local.pyc
-usr/lib/python2.7/site-packages/git_remote_helpers/git/repo.py
-usr/lib/python2.7/site-packages/git_remote_helpers/git/repo.pyc
-usr/lib/python2.7/site-packages/git_remote_helpers/util.py
-usr/lib/python2.7/site-packages/git_remote_helpers/util.pyc
 usr/libexec/git-core
 usr/libexec/git-core/git
 usr/libexec/git-core/git-add
@@ -59,6 +40,8 @@ usr/libexec/git-core/git-branch
 usr/libexec/git-core/git-bundle
 usr/libexec/git-core/git-cat-file
 usr/libexec/git-core/git-check-attr
+usr/libexec/git-core/git-check-ignore
+usr/libexec/git-core/git-check-mailmap
 usr/libexec/git-core/git-check-ref-format
 usr/libexec/git-core/git-checkout
 usr/libexec/git-core/git-checkout-index
@@ -100,8 +83,8 @@ usr/libexec/git-core/git-fsck-objects
 usr/libexec/git-core/git-gc
 usr/libexec/git-core/git-get-tar-commit-id
 usr/libexec/git-core/git-grep
-usr/libexec/git-core/git-gui
-usr/libexec/git-core/git-gui--askpass
+#usr/libexec/git-core/git-gui
+#usr/libexec/git-core/git-gui--askpass
 usr/libexec/git-core/git-hash-object
 usr/libexec/git-core/git-help
 usr/libexec/git-core/git-http-backend
@@ -164,8 +147,7 @@ usr/libexec/git-core/git-remote-ftp
 usr/libexec/git-core/git-remote-ftps
 usr/libexec/git-core/git-remote-http
 usr/libexec/git-core/git-remote-https
-usr/libexec/git-core/git-remote-testgit
-#usr/libexec/git-core/git-remote-testsvn
+usr/libexec/git-core/git-remote-testsvn
 usr/libexec/git-core/git-repack
 usr/libexec/git-core/git-replace
 usr/libexec/git-core/git-repo-config
@@ -213,11 +195,13 @@ usr/libexec/git-core/mergetools
 usr/libexec/git-core/mergetools/araxis
 usr/libexec/git-core/mergetools/bc3
 usr/libexec/git-core/mergetools/codecompare
-usr/libexec/git-core/mergetools/defaults
 usr/libexec/git-core/mergetools/deltawalker
+usr/libexec/git-core/mergetools/diffmerge
 usr/libexec/git-core/mergetools/diffuse
 usr/libexec/git-core/mergetools/ecmerge
 usr/libexec/git-core/mergetools/emerge
+usr/libexec/git-core/mergetools/gvimdiff
+usr/libexec/git-core/mergetools/gvimdiff2
 usr/libexec/git-core/mergetools/kdiff3
 usr/libexec/git-core/mergetools/kompare
 usr/libexec/git-core/mergetools/meld
@@ -225,7 +209,8 @@ usr/libexec/git-core/mergetools/opendiff
 usr/libexec/git-core/mergetools/p4merge
 usr/libexec/git-core/mergetools/tkdiff
 usr/libexec/git-core/mergetools/tortoisemerge
-usr/libexec/git-core/mergetools/vim
+usr/libexec/git-core/mergetools/vimdiff
+usr/libexec/git-core/mergetools/vimdiff2
 usr/libexec/git-core/mergetools/xxdiff
 usr/share/git-core
 usr/share/git-core/templates
@@ -237,6 +222,7 @@ usr/share/git-core/templates/hooks/commit-msg.sample
 usr/share/git-core/templates/hooks/post-update.sample
 usr/share/git-core/templates/hooks/pre-applypatch.sample
 usr/share/git-core/templates/hooks/pre-commit.sample
+usr/share/git-core/templates/hooks/pre-push.sample
 usr/share/git-core/templates/hooks/pre-rebase.sample
 usr/share/git-core/templates/hooks/prepare-commit-msg.sample
 usr/share/git-core/templates/hooks/update.sample
@@ -319,6 +305,7 @@ usr/share/git-core/templates/info/exclude
 #usr/share/gitweb/static/gitweb.js
 #usr/share/locale/da/LC_MESSAGES/git.mo
 #usr/share/locale/de/LC_MESSAGES/git.mo
+#usr/share/locale/fr/LC_MESSAGES/git.mo
 #usr/share/locale/is/LC_MESSAGES/git.mo
 #usr/share/locale/it/LC_MESSAGES/git.mo
 #usr/share/locale/nl/LC_MESSAGES/git.mo
index a65efb46eef56f6d8e7219dff3c7e41bcb335770..3671a780076cd0ba1e2e8f2b5ce2a6b9dc1c93b8 100644 (file)
@@ -37,7 +37,7 @@ usr/lib/gutenprint/5.2/modules
 #usr/lib/libgutenprint.la
 usr/lib/libgutenprint.so
 usr/lib/libgutenprint.so.2
-usr/lib/libgutenprint.so.2.0.6
+usr/lib/libgutenprint.so.2.1.0
 #usr/lib/pkgconfig/gutenprint.pc
 usr/sbin/cups-genppd.5.2
 usr/sbin/cups-genppdupdate
@@ -77,6 +77,7 @@ usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_blacktrans-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_bluedensity-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_borderless.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_brightness-1.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_cdallowothermedia.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_cdinnerradius.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_cdxadjustment-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_cdyadjustment-1.xml
@@ -163,10 +164,14 @@ usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enablemagentabalance.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enablemagentadensity.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enablemagentagamma.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enableorangedensity.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enablepagedrytime.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enablepaperthickness.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enableplatengap.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enableprintmethod.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enablereddensity.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enablescandrytime.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enablescanmindrytime.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enablesubchannelcutoff.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enablevacuumintensity.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enableyellowbalance.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_enableyellowdensity.xml
@@ -212,6 +217,8 @@ usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_inklimit-3.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_inklimit-4.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_inklimit-5.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_inklimit-6.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_inklimit-7.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_inklimit-8.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_inkset.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_inktype.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_inputslot.xml
@@ -234,6 +241,7 @@ usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_magentadensity-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_magentagamma-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_mediatype.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_orangedensity-1.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_pagedrytime-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_paperthickness-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_platengap-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_printingdirection.xml
@@ -241,6 +249,9 @@ usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_printmethod-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_quality.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_reddensity-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_resolution.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_scandrytime-1.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_scanmindrytime-1.xml
+usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_subchannelcutoff-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_usegloss.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_vacuumintensity-1.xml
 usr/share/foomatic/db/source/opt/gutenprint-ijs.5.2-stp_weave.xml
@@ -274,6 +285,7 @@ usr/share/gutenprint/5.2/xml/escp2/inks/f360_photo7_japan.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/f360_ultrachrome.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/f360_ultrachrome_k3.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/f360_ultrachrome_k3v.xml
+usr/share/gutenprint/5.2/xml/escp2/inks/f360_ultrachrome_k3v_2.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/nx100.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/photo_gen0.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/photo_gen1.xml
@@ -289,6 +301,9 @@ usr/share/gutenprint/5.2/xml/escp2/inks/pro_gen2.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/pro_pigment.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/pro_ultrachrome.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/pro_ultrachrome_k3.xml
+usr/share/gutenprint/5.2/xml/escp2/inks/pro_ultrachrome_k34.xml
+usr/share/gutenprint/5.2/xml/escp2/inks/pro_ultrachrome_k3v.xml
+usr/share/gutenprint/5.2/xml/escp2/inks/pro_ultrachrome_k3v4.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/standard.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/standard_gen0.xml
 usr/share/gutenprint/5.2/xml/escp2/inks/ultrachrome.xml
@@ -303,6 +318,8 @@ usr/share/gutenprint/5.2/xml/escp2/inputslots/cd_cutter_roll_feed.xml
 usr/share/gutenprint/5.2/xml/escp2/inputslots/cd_roll_feed.xml
 usr/share/gutenprint/5.2/xml/escp2/inputslots/cutter_roll_feed.xml
 usr/share/gutenprint/5.2/xml/escp2/inputslots/default.xml
+usr/share/gutenprint/5.2/xml/escp2/inputslots/pro3880.xml
+usr/share/gutenprint/5.2/xml/escp2/inputslots/pro_cutter_roll_feed.xml
 usr/share/gutenprint/5.2/xml/escp2/inputslots/pro_roll_feed.xml
 usr/share/gutenprint/5.2/xml/escp2/inputslots/r1800.xml
 usr/share/gutenprint/5.2/xml/escp2/inputslots/r2400.xml
@@ -340,11 +357,13 @@ usr/share/gutenprint/5.2/xml/escp2/media/photo_gen4.xml
 usr/share/gutenprint/5.2/xml/escp2/media/photo_pigment.xml
 usr/share/gutenprint/5.2/xml/escp2/media/picturemate_4.xml
 usr/share/gutenprint/5.2/xml/escp2/media/picturemate_6.xml
+usr/share/gutenprint/5.2/xml/escp2/media/pro3880_ultrachrome_k3v.xml
 usr/share/gutenprint/5.2/xml/escp2/media/pro_gen1.xml
 usr/share/gutenprint/5.2/xml/escp2/media/pro_gen2.xml
 usr/share/gutenprint/5.2/xml/escp2/media/pro_pigment.xml
 usr/share/gutenprint/5.2/xml/escp2/media/pro_ultrachrome.xml
 usr/share/gutenprint/5.2/xml/escp2/media/pro_ultrachrome_k3.xml
+usr/share/gutenprint/5.2/xml/escp2/media/pro_ultrachrome_k3v.xml
 usr/share/gutenprint/5.2/xml/escp2/media/r800.xml
 usr/share/gutenprint/5.2/xml/escp2/media/standard.xml
 usr/share/gutenprint/5.2/xml/escp2/media/standard_gen0.xml
@@ -358,7 +377,24 @@ usr/share/gutenprint/5.2/xml/escp2/model/model_0.xml
 usr/share/gutenprint/5.2/xml/escp2/model/model_1.xml
 usr/share/gutenprint/5.2/xml/escp2/model/model_10.xml
 usr/share/gutenprint/5.2/xml/escp2/model/model_100.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_101.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_102.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_103.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_104.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_105.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_106.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_107.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_108.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_109.xml
 usr/share/gutenprint/5.2/xml/escp2/model/model_11.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_110.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_111.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_112.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_113.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_114.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_115.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_116.xml
+usr/share/gutenprint/5.2/xml/escp2/model/model_117.xml
 usr/share/gutenprint/5.2/xml/escp2/model/model_12.xml
 usr/share/gutenprint/5.2/xml/escp2/model/model_13.xml
 usr/share/gutenprint/5.2/xml/escp2/model/model_14.xml
@@ -458,6 +494,7 @@ usr/share/gutenprint/5.2/xml/escp2/model/model_99.xml
 #usr/share/gutenprint/5.2/xml/escp2/qualitypresets
 usr/share/gutenprint/5.2/xml/escp2/qualitypresets/p1_5.xml
 usr/share/gutenprint/5.2/xml/escp2/qualitypresets/picturemate.xml
+usr/share/gutenprint/5.2/xml/escp2/qualitypresets/prox900.xml
 usr/share/gutenprint/5.2/xml/escp2/qualitypresets/standard.xml
 usr/share/gutenprint/5.2/xml/escp2/qualitypresets/v2880.xml
 usr/share/gutenprint/5.2/xml/escp2/qualitypresets/wf40.xml
@@ -508,16 +545,20 @@ usr/share/gutenprint/samples/testpattern.sample
 #usr/share/locale/cs/gutenprint_cs.po
 #usr/share/locale/da/LC_MESSAGES/gutenprint.mo
 #usr/share/locale/da/gutenprint_da.po
-usr/share/locale/de/LC_MESSAGES/gutenprint.mo
-usr/share/locale/de/gutenprint_de.po
+#usr/share/locale/de/LC_MESSAGES/gutenprint.mo
+#usr/share/locale/de/gutenprint_de.po
 #usr/share/locale/el/LC_MESSAGES/gutenprint.mo
 #usr/share/locale/el/gutenprint_el.po
 #usr/share/locale/en_GB/LC_MESSAGES/gutenprint.mo
 #usr/share/locale/en_GB/gutenprint_en_GB.po
 #usr/share/locale/es/LC_MESSAGES/gutenprint.mo
 #usr/share/locale/es/gutenprint_es.po
+#usr/share/locale/fi/LC_MESSAGES/gutenprint.mo
+#usr/share/locale/fi/gutenprint_fi.po
 #usr/share/locale/fr/LC_MESSAGES/gutenprint.mo
 #usr/share/locale/fr/gutenprint_fr.po
+#usr/share/locale/gl/LC_MESSAGES/gutenprint.mo
+#usr/share/locale/gl/gutenprint_gl.po
 #usr/share/locale/hu/LC_MESSAGES/gutenprint.mo
 #usr/share/locale/hu/gutenprint_hu.po
 #usr/share/locale/it/LC_MESSAGES/gutenprint.mo
@@ -536,12 +577,18 @@ usr/share/locale/de/gutenprint_de.po
 #usr/share/locale/ru/gutenprint_ru.po
 #usr/share/locale/sk/LC_MESSAGES/gutenprint.mo
 #usr/share/locale/sk/gutenprint_sk.po
+#usr/share/locale/sl/LC_MESSAGES/gutenprint.mo
+#usr/share/locale/sl/gutenprint_sl.po
 #usr/share/locale/sv/LC_MESSAGES/gutenprint.mo
 #usr/share/locale/sv/gutenprint_sv.po
+#usr/share/locale/uk/LC_MESSAGES/gutenprint.mo
+#usr/share/locale/uk/gutenprint_uk.po
+#usr/share/locale/zh_CN/LC_MESSAGES/gutenprint.mo
+#usr/share/locale/zh_CN/gutenprint_zh_CN.po
 #usr/share/locale/zh_TW/LC_MESSAGES/gutenprint.mo
 #usr/share/locale/zh_TW/gutenprint_zh_TW.po
 #usr/share/man/man1/escputil.1
 #usr/share/man/man8/cups-calibrate.8
 #usr/share/man/man8/cups-genppd.8
 #usr/share/man/man8/cups-genppdupdate.8
-var/ipfire/cups/command.types
\ No newline at end of file
+var/ipfire/cups/command.types
diff --git a/config/rootfiles/packages/i586/vdr_dvbapi b/config/rootfiles/packages/i586/vdr_dvbapi
new file mode 100644 (file)
index 0000000..5e06c12
--- /dev/null
@@ -0,0 +1,4 @@
+etc/sysconfig/vdr-plugins.d/dvbapi.conf
+etc/vdr/plugins/dvbapi
+usr/lib/vdr/libvdr-dvbapi.so.2.0.0
+usr/lib/vdr/libvdr-dvbapi.so.2.0.0-sse
diff --git a/config/rootfiles/packages/icecc b/config/rootfiles/packages/icecc
deleted file mode 100644 (file)
index d27df65..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#opt/icecream
-#opt/icecream/bin
-#opt/icecream/bin/c++
-#opt/icecream/bin/cc
-#opt/icecream/bin/g++
-#opt/icecream/bin/gcc
-#opt/icecream/bin/icecc
-#opt/icecream/bin/icerun
-#opt/icecream/include
-#opt/icecream/include/icecc
-#opt/icecream/include/icecc/comm.h
-#opt/icecream/include/icecc/job.h
-#opt/icecream/lib
-#opt/icecream/lib/icecc
-#opt/icecream/lib/icecc/icecc-create-env
-#opt/icecream/lib/libicecc.a
-#opt/icecream/lib/libicecc.la
-#opt/icecream/lib/pkgconfig
-#opt/icecream/lib/pkgconfig/icecc.pc
-#opt/icecream/sbin
-opt/icecream/sbin/icecc-scheduler
-opt/icecream/sbin/iceccd
-etc/rc.d/init.d/icecream
diff --git a/config/rootfiles/packages/icinga b/config/rootfiles/packages/icinga
new file mode 100644 (file)
index 0000000..7a8ae92
--- /dev/null
@@ -0,0 +1,2370 @@
+etc/httpd/conf/vhosts.d/icinga.conf
+#etc/icinga
+etc/icinga/cgi.cfg
+etc/icinga/cgiauth.cfg
+etc/icinga/conf.d
+etc/icinga/icinga.cfg
+etc/icinga/modules
+etc/icinga/objects
+etc/icinga/objects/commands.cfg
+etc/icinga/objects/contacts.cfg
+etc/icinga/objects/localhost.cfg
+etc/icinga/objects/notifications.cfg
+etc/icinga/objects/printer.cfg
+etc/icinga/objects/switch.cfg
+etc/icinga/objects/templates.cfg
+etc/icinga/objects/timeperiods.cfg
+etc/icinga/objects/windows.cfg
+etc/icinga/resource.cfg
+etc/rc.d/init.d/icinga
+etc/rc.d/rc0.d/K33icinga
+etc/rc.d/rc3.d/S67icinga
+etc/rc.d/rc6.d/K33icinga
+usr/bin/icinga
+usr/bin/icingastats
+#usr/lib/icinga
+usr/lib/icinga/p1.pl
+#usr/lib/icinga/plugins
+usr/lib/icinga/plugins/check_apt
+usr/lib/icinga/plugins/check_breeze
+usr/lib/icinga/plugins/check_by_ssh
+usr/lib/icinga/plugins/check_clamd
+usr/lib/icinga/plugins/check_cluster
+usr/lib/icinga/plugins/check_dhcp
+usr/lib/icinga/plugins/check_dig
+usr/lib/icinga/plugins/check_disk
+usr/lib/icinga/plugins/check_disk_smb
+usr/lib/icinga/plugins/check_dns
+usr/lib/icinga/plugins/check_dummy
+usr/lib/icinga/plugins/check_file_age
+usr/lib/icinga/plugins/check_flexlm
+usr/lib/icinga/plugins/check_ftp
+usr/lib/icinga/plugins/check_hpjd
+usr/lib/icinga/plugins/check_http
+usr/lib/icinga/plugins/check_icmp
+usr/lib/icinga/plugins/check_ide_smart
+usr/lib/icinga/plugins/check_ifoperstatus
+usr/lib/icinga/plugins/check_ifstatus
+usr/lib/icinga/plugins/check_imap
+usr/lib/icinga/plugins/check_ircd
+usr/lib/icinga/plugins/check_jabber
+usr/lib/icinga/plugins/check_ldap
+usr/lib/icinga/plugins/check_ldaps
+usr/lib/icinga/plugins/check_load
+usr/lib/icinga/plugins/check_log
+usr/lib/icinga/plugins/check_mailq
+usr/lib/icinga/plugins/check_mrtg
+usr/lib/icinga/plugins/check_mrtgtraf
+usr/lib/icinga/plugins/check_mysql
+usr/lib/icinga/plugins/check_mysql_query
+usr/lib/icinga/plugins/check_nagios
+usr/lib/icinga/plugins/check_nntp
+usr/lib/icinga/plugins/check_nntps
+usr/lib/icinga/plugins/check_nt
+usr/lib/icinga/plugins/check_ntp
+usr/lib/icinga/plugins/check_ntp_peer
+usr/lib/icinga/plugins/check_ntp_time
+usr/lib/icinga/plugins/check_nwstat
+usr/lib/icinga/plugins/check_oracle
+usr/lib/icinga/plugins/check_overcr
+usr/lib/icinga/plugins/check_ping
+usr/lib/icinga/plugins/check_pop
+usr/lib/icinga/plugins/check_procs
+usr/lib/icinga/plugins/check_real
+usr/lib/icinga/plugins/check_rpc
+usr/lib/icinga/plugins/check_sensors
+usr/lib/icinga/plugins/check_simap
+usr/lib/icinga/plugins/check_smtp
+usr/lib/icinga/plugins/check_snmp
+usr/lib/icinga/plugins/check_spop
+usr/lib/icinga/plugins/check_ssh
+usr/lib/icinga/plugins/check_ssmtp
+usr/lib/icinga/plugins/check_swap
+usr/lib/icinga/plugins/check_tcp
+usr/lib/icinga/plugins/check_time
+usr/lib/icinga/plugins/check_udp
+usr/lib/icinga/plugins/check_ups
+usr/lib/icinga/plugins/check_uptime
+usr/lib/icinga/plugins/check_users
+usr/lib/icinga/plugins/check_wave
+usr/lib/icinga/plugins/eventhandlers
+usr/lib/icinga/plugins/eventhandlers/disable_active_service_checks
+usr/lib/icinga/plugins/eventhandlers/disable_notifications
+usr/lib/icinga/plugins/eventhandlers/distributed-monitoring
+usr/lib/icinga/plugins/eventhandlers/distributed-monitoring/obsessive_svc_handler
+usr/lib/icinga/plugins/eventhandlers/distributed-monitoring/submit_check_result_via_nsca
+usr/lib/icinga/plugins/eventhandlers/enable_active_service_checks
+usr/lib/icinga/plugins/eventhandlers/enable_notifications
+usr/lib/icinga/plugins/eventhandlers/redundancy-scenario1
+usr/lib/icinga/plugins/eventhandlers/redundancy-scenario1/handle-master-host-event
+usr/lib/icinga/plugins/eventhandlers/redundancy-scenario1/handle-master-proc-event
+usr/lib/icinga/plugins/eventhandlers/submit_check_result
+usr/lib/icinga/plugins/negate
+usr/lib/icinga/plugins/urlize
+usr/lib/icinga/plugins/utils.pm
+usr/lib/icinga/plugins/utils.sh
+usr/share/icinga
+usr/share/icinga/cgi-bin
+usr/share/icinga/cgi-bin/avail.cgi
+usr/share/icinga/cgi-bin/cmd.cgi
+usr/share/icinga/cgi-bin/config.cgi
+usr/share/icinga/cgi-bin/extinfo.cgi
+usr/share/icinga/cgi-bin/histogram.cgi
+usr/share/icinga/cgi-bin/history.cgi
+usr/share/icinga/cgi-bin/notifications.cgi
+usr/share/icinga/cgi-bin/outages.cgi
+usr/share/icinga/cgi-bin/showlog.cgi
+usr/share/icinga/cgi-bin/status.cgi
+usr/share/icinga/cgi-bin/statusmap.cgi
+usr/share/icinga/cgi-bin/summary.cgi
+usr/share/icinga/cgi-bin/tac.cgi
+usr/share/icinga/cgi-bin/trends.cgi
+usr/share/icinga/docs
+usr/share/icinga/docs/de
+usr/share/icinga/docs/de/about.html
+usr/share/icinga/docs/de/activechecks.html
+usr/share/icinga/docs/de/adaptive.html
+usr/share/icinga/docs/de/addons.html
+usr/share/icinga/docs/de/beginners.html
+usr/share/icinga/docs/de/cachedchecks.html
+usr/share/icinga/docs/de/cgiauth.html
+usr/share/icinga/docs/de/cgicmd.html
+usr/share/icinga/docs/de/cgiincludes.html
+usr/share/icinga/docs/de/cgiparams.html
+usr/share/icinga/docs/de/cgis.html
+usr/share/icinga/docs/de/cgisecurity.html
+usr/share/icinga/docs/de/ch01.html
+usr/share/icinga/docs/de/ch02.html
+usr/share/icinga/docs/de/ch03.html
+usr/share/icinga/docs/de/ch04.html
+usr/share/icinga/docs/de/ch05.html
+usr/share/icinga/docs/de/ch06.html
+usr/share/icinga/docs/de/ch07.html
+usr/share/icinga/docs/de/ch08.html
+usr/share/icinga/docs/de/ch09.html
+usr/share/icinga/docs/de/ch10.html
+usr/share/icinga/docs/de/ch11.html
+usr/share/icinga/docs/de/ch12.html
+usr/share/icinga/docs/de/ch13.html
+usr/share/icinga/docs/de/checkscheduling.html
+usr/share/icinga/docs/de/clusters.html
+usr/share/icinga/docs/de/components.html
+usr/share/icinga/docs/de/config.html
+usr/share/icinga/docs/de/configcgi.html
+usr/share/icinga/docs/de/configido.html
+usr/share/icinga/docs/de/configmain.html
+usr/share/icinga/docs/de/configobject.html
+usr/share/icinga/docs/de/customobjectvars.html
+usr/share/icinga/docs/de/db_changes.html
+usr/share/icinga/docs/de/db_intro.html
+usr/share/icinga/docs/de/db_model.html
+usr/share/icinga/docs/de/dependencies.html
+usr/share/icinga/docs/de/dependencychecks.html
+usr/share/icinga/docs/de/distributed.html
+usr/share/icinga/docs/de/downtime.html
+usr/share/icinga/docs/de/embeddedperl.html
+usr/share/icinga/docs/de/epnplugins.html
+usr/share/icinga/docs/de/escalation_condition.html
+usr/share/icinga/docs/de/escalations.html
+usr/share/icinga/docs/de/eventhandlers.html
+usr/share/icinga/docs/de/example-configs.html
+usr/share/icinga/docs/de/extcommands.html
+usr/share/icinga/docs/de/extcommands2.html
+usr/share/icinga/docs/de/faststartup.html
+usr/share/icinga/docs/de/flapping.html
+usr/share/icinga/docs/de/freshness.html
+usr/share/icinga/docs/de/hostchecks.html
+usr/share/icinga/docs/de/howtos.html
+usr/share/icinga/docs/de/icinga-api.html
+usr/share/icinga/docs/de/icinga-web-api.html
+usr/share/icinga/docs/de/icinga-web-config.html
+usr/share/icinga/docs/de/icinga-web-intro.html
+usr/share/icinga/docs/de/icinga-web-introduction.html
+usr/share/icinga/docs/de/icinga-web-pnp.html
+usr/share/icinga/docs/de/icinga-web-scratch.html
+usr/share/icinga/docs/de/icinga-web.html
+usr/share/icinga/docs/de/icinga_packages.html
+usr/share/icinga/docs/de/icingastats.html
+usr/share/icinga/docs/de/index.html
+usr/share/icinga/docs/de/int-mklivestatus.html
+usr/share/icinga/docs/de/int-snmptrap.html
+usr/share/icinga/docs/de/int-tcpwrappers.html
+usr/share/icinga/docs/de/integration.html
+usr/share/icinga/docs/de/ix01.html
+usr/share/icinga/docs/de/largeinstalltweaks.html
+usr/share/icinga/docs/de/macrolist.html
+usr/share/icinga/docs/de/macros.html
+usr/share/icinga/docs/de/modified_attr.html
+usr/share/icinga/docs/de/monitoring-linux.html
+usr/share/icinga/docs/de/monitoring-netware.html
+usr/share/icinga/docs/de/monitoring-overview.html
+usr/share/icinga/docs/de/monitoring-printers.html
+usr/share/icinga/docs/de/monitoring-publicservices.html
+usr/share/icinga/docs/de/monitoring-routers.html
+usr/share/icinga/docs/de/monitoring-windows.html
+usr/share/icinga/docs/de/mrtggraphs.html
+usr/share/icinga/docs/de/networkreachability.html
+usr/share/icinga/docs/de/notifications.html
+usr/share/icinga/docs/de/notifications2.html
+usr/share/icinga/docs/de/nrpe.html
+usr/share/icinga/docs/de/nsca.html
+usr/share/icinga/docs/de/objectdefinitions.html
+usr/share/icinga/docs/de/objectinheritance.html
+usr/share/icinga/docs/de/objecttricks.html
+usr/share/icinga/docs/de/oncallrotation.html
+usr/share/icinga/docs/de/passivechecks.html
+usr/share/icinga/docs/de/passivestatetranslation.html
+usr/share/icinga/docs/de/perfdata.html
+usr/share/icinga/docs/de/perfgraphs.html
+usr/share/icinga/docs/de/pluginapi.html
+usr/share/icinga/docs/de/plugins.html
+usr/share/icinga/docs/de/quickstart-icinga-freebsd.html
+usr/share/icinga/docs/de/quickstart-icinga.html
+usr/share/icinga/docs/de/quickstart-idoutils-freebsd.html
+usr/share/icinga/docs/de/quickstart-idoutils.html
+usr/share/icinga/docs/de/quickstart.html
+usr/share/icinga/docs/de/recurring_downtimes.html
+usr/share/icinga/docs/de/redundancy.html
+usr/share/icinga/docs/de/reporting.html
+usr/share/icinga/docs/de/sample-cgi.html
+usr/share/icinga/docs/de/sample-commands.html
+usr/share/icinga/docs/de/sample-config.html
+usr/share/icinga/docs/de/sample-contacts.html
+usr/share/icinga/docs/de/sample-httpd.html
+usr/share/icinga/docs/de/sample-icinga.html
+usr/share/icinga/docs/de/sample-localhost.html
+usr/share/icinga/docs/de/sample-notifications.html
+usr/share/icinga/docs/de/sample-printer.html
+usr/share/icinga/docs/de/sample-resource.html
+usr/share/icinga/docs/de/sample-switch.html
+usr/share/icinga/docs/de/sample-templates.html
+usr/share/icinga/docs/de/sample-timeperiods.html
+usr/share/icinga/docs/de/sample-windows.html
+usr/share/icinga/docs/de/security.html
+usr/share/icinga/docs/de/servicechecks.html
+usr/share/icinga/docs/de/stalking.html
+usr/share/icinga/docs/de/startstop.html
+usr/share/icinga/docs/de/statetypes.html
+usr/share/icinga/docs/de/temp_data.html
+usr/share/icinga/docs/de/timeperiods.html
+usr/share/icinga/docs/de/tuning.html
+usr/share/icinga/docs/de/upgrading.html
+usr/share/icinga/docs/de/upgrading_icingaweb.html
+usr/share/icinga/docs/de/upgrading_idoutils.html
+usr/share/icinga/docs/de/verifyconfig.html
+usr/share/icinga/docs/de/volatileservices.html
+usr/share/icinga/docs/de/whatsnew.html
+usr/share/icinga/docs/en
+usr/share/icinga/docs/en/about.html
+usr/share/icinga/docs/en/activechecks.html
+usr/share/icinga/docs/en/adaptive.html
+usr/share/icinga/docs/en/addons.html
+usr/share/icinga/docs/en/beginners.html
+usr/share/icinga/docs/en/cachedchecks.html
+usr/share/icinga/docs/en/cgiauth.html
+usr/share/icinga/docs/en/cgicmd.html
+usr/share/icinga/docs/en/cgiincludes.html
+usr/share/icinga/docs/en/cgiparams.html
+usr/share/icinga/docs/en/cgis.html
+usr/share/icinga/docs/en/cgisecurity.html
+usr/share/icinga/docs/en/ch01.html
+usr/share/icinga/docs/en/ch010.html
+usr/share/icinga/docs/en/ch02.html
+usr/share/icinga/docs/en/ch03.html
+usr/share/icinga/docs/en/ch04.html
+usr/share/icinga/docs/en/ch05.html
+usr/share/icinga/docs/en/ch06.html
+usr/share/icinga/docs/en/ch07.html
+usr/share/icinga/docs/en/ch08.html
+usr/share/icinga/docs/en/ch09.html
+usr/share/icinga/docs/en/ch10.html
+usr/share/icinga/docs/en/ch11.html
+usr/share/icinga/docs/en/ch12.html
+usr/share/icinga/docs/en/ch13.html
+usr/share/icinga/docs/en/checkscheduling.html
+usr/share/icinga/docs/en/clusters.html
+usr/share/icinga/docs/en/config.html
+usr/share/icinga/docs/en/configcgi.html
+usr/share/icinga/docs/en/configido.html
+usr/share/icinga/docs/en/configmain.html
+usr/share/icinga/docs/en/configobject.html
+usr/share/icinga/docs/en/customobjectvars.html
+usr/share/icinga/docs/en/db_changes.html
+usr/share/icinga/docs/en/db_components.html
+usr/share/icinga/docs/en/db_example-configs.html
+usr/share/icinga/docs/en/db_intro.html
+usr/share/icinga/docs/en/db_model.html
+usr/share/icinga/docs/en/dependencies.html
+usr/share/icinga/docs/en/dependencychecks.html
+usr/share/icinga/docs/en/distributed.html
+usr/share/icinga/docs/en/downtime.html
+usr/share/icinga/docs/en/embeddedperl.html
+usr/share/icinga/docs/en/epnplugins.html
+usr/share/icinga/docs/en/escalation_condition.html
+usr/share/icinga/docs/en/escalations.html
+usr/share/icinga/docs/en/eventhandlers.html
+usr/share/icinga/docs/en/extcommands.html
+usr/share/icinga/docs/en/extcommands2.html
+usr/share/icinga/docs/en/faststartup.html
+usr/share/icinga/docs/en/flapping.html
+usr/share/icinga/docs/en/freshness.html
+usr/share/icinga/docs/en/hostchecks.html
+usr/share/icinga/docs/en/howtos.html
+usr/share/icinga/docs/en/icinga-api.html
+usr/share/icinga/docs/en/icinga-web-api.html
+usr/share/icinga/docs/en/icinga-web-config.html
+usr/share/icinga/docs/en/icinga-web-intro.html
+usr/share/icinga/docs/en/icinga-web-introduction.html
+usr/share/icinga/docs/en/icinga-web-pnp.html
+usr/share/icinga/docs/en/icinga-web-scratch.html
+usr/share/icinga/docs/en/icinga-web.html
+usr/share/icinga/docs/en/icinga_packages.html
+usr/share/icinga/docs/en/icingastats.html
+usr/share/icinga/docs/en/index.html
+usr/share/icinga/docs/en/int-mklivestatus.html
+usr/share/icinga/docs/en/int-snmptrap.html
+usr/share/icinga/docs/en/int-tcpwrappers.html
+usr/share/icinga/docs/en/integration.html
+usr/share/icinga/docs/en/ix01.html
+usr/share/icinga/docs/en/largeinstalltweaks.html
+usr/share/icinga/docs/en/macrolist.html
+usr/share/icinga/docs/en/macros.html
+usr/share/icinga/docs/en/modified_attr.html
+usr/share/icinga/docs/en/monitoring-linux.html
+usr/share/icinga/docs/en/monitoring-netware.html
+usr/share/icinga/docs/en/monitoring-overview.html
+usr/share/icinga/docs/en/monitoring-printers.html
+usr/share/icinga/docs/en/monitoring-publicservices.html
+usr/share/icinga/docs/en/monitoring-routers.html
+usr/share/icinga/docs/en/monitoring-windows.html
+usr/share/icinga/docs/en/mrtggraphs.html
+usr/share/icinga/docs/en/networkreachability.html
+usr/share/icinga/docs/en/notifications.html
+usr/share/icinga/docs/en/notifications2.html
+usr/share/icinga/docs/en/nrpe.html
+usr/share/icinga/docs/en/nsca.html
+usr/share/icinga/docs/en/objectdefinitions.html
+usr/share/icinga/docs/en/objectinheritance.html
+usr/share/icinga/docs/en/objecttricks.html
+usr/share/icinga/docs/en/oncallrotation.html
+usr/share/icinga/docs/en/passivechecks.html
+usr/share/icinga/docs/en/passivestatetranslation.html
+usr/share/icinga/docs/en/perfdata.html
+usr/share/icinga/docs/en/perfgraphs.html
+usr/share/icinga/docs/en/pluginapi.html
+usr/share/icinga/docs/en/plugins.html
+usr/share/icinga/docs/en/quickstart-icinga-freebsd.html
+usr/share/icinga/docs/en/quickstart-icinga.html
+usr/share/icinga/docs/en/quickstart-idoutils-freebsd.html
+usr/share/icinga/docs/en/quickstart-idoutils.html
+usr/share/icinga/docs/en/quickstart.html
+usr/share/icinga/docs/en/recurring_downtimes.html
+usr/share/icinga/docs/en/redundancy.html
+usr/share/icinga/docs/en/reporting.html
+usr/share/icinga/docs/en/sample-cgi.html
+usr/share/icinga/docs/en/sample-commands.html
+usr/share/icinga/docs/en/sample-config.html
+usr/share/icinga/docs/en/sample-contacts.html
+usr/share/icinga/docs/en/sample-httpd.html
+usr/share/icinga/docs/en/sample-icinga.html
+usr/share/icinga/docs/en/sample-localhost.html
+usr/share/icinga/docs/en/sample-notifications.html
+usr/share/icinga/docs/en/sample-printer.html
+usr/share/icinga/docs/en/sample-resource.html
+usr/share/icinga/docs/en/sample-switch.html
+usr/share/icinga/docs/en/sample-templates.html
+usr/share/icinga/docs/en/sample-timeperiods.html
+usr/share/icinga/docs/en/sample-windows.html
+usr/share/icinga/docs/en/security.html
+usr/share/icinga/docs/en/servicechecks.html
+usr/share/icinga/docs/en/stalking.html
+usr/share/icinga/docs/en/startstop.html
+usr/share/icinga/docs/en/statetypes.html
+usr/share/icinga/docs/en/temp_data.html
+usr/share/icinga/docs/en/timeperiods.html
+usr/share/icinga/docs/en/tuning.html
+usr/share/icinga/docs/en/upgrading.html
+usr/share/icinga/docs/en/upgrading_icingaweb.html
+usr/share/icinga/docs/en/upgrading_idoutils.html
+usr/share/icinga/docs/en/verifyconfig.html
+usr/share/icinga/docs/en/volatileservices.html
+usr/share/icinga/docs/en/whatsnew.html
+usr/share/icinga/docs/images
+usr/share/icinga/docs/images/Architecture_1.5_800px.png
+usr/share/icinga/docs/images/IcingaWeb_BusinessProcess-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_BusinessProcess.png
+usr/share/icinga/docs/images/IcingaWeb_Commands-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_Commands.png
+usr/share/icinga/docs/images/IcingaWeb_CronkBuilder-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_CronkBuilder.png
+usr/share/icinga/docs/images/IcingaWeb_Cronk_Configuration-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_Cronk_Configuration.png
+usr/share/icinga/docs/images/IcingaWeb_Cronk_HostFiltered-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_Downtimes-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_Downtimes.png
+usr/share/icinga/docs/images/IcingaWeb_HostStatus_Events-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_HostStatus_Events.png
+usr/share/icinga/docs/images/IcingaWeb_Host_filtered-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_Host_filtered.png
+usr/share/icinga/docs/images/IcingaWeb_LogViewer-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_LogViewer.png
+usr/share/icinga/docs/images/IcingaWeb_OpenProblems-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_OpenProblems.png
+usr/share/icinga/docs/images/IcingaWeb_Portal2-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_Portal2.png
+usr/share/icinga/docs/images/IcingaWeb_Reporting-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_Reporting.png
+usr/share/icinga/docs/images/IcingaWeb_Search-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_Search.png
+usr/share/icinga/docs/images/IcingaWeb_StatusMap-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_StatusMap.png
+usr/share/icinga/docs/images/IcingaWeb_TacticalOverview-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_TacticalOverview.png
+usr/share/icinga/docs/images/IcingaWeb_UserAdmin-150x150.png
+usr/share/icinga/docs/images/IcingaWeb_UserAdmin.png
+usr/share/icinga/docs/images/Icinga_Classic_CGIConfig-150x150.png
+usr/share/icinga/docs/images/Icinga_Classic_CGIConfig.png
+usr/share/icinga/docs/images/Icinga_Classic_Commands-150x150.png
+usr/share/icinga/docs/images/Icinga_Classic_Commands.png
+usr/share/icinga/docs/images/Icinga_Classic_DatePicker-150x150.png
+usr/share/icinga/docs/images/Icinga_Classic_DatePicker.png
+usr/share/icinga/docs/images/Icinga_Classic_Downtimes-150x150.png
+usr/share/icinga/docs/images/Icinga_Classic_Downtimes.png
+usr/share/icinga/docs/images/Icinga_Classic_HostGroup-150x150.png
+usr/share/icinga/docs/images/Icinga_Classic_HostGroup.png
+usr/share/icinga/docs/images/Icinga_Classic_PaginationLogs-150x150.png
+usr/share/icinga/docs/images/Icinga_Classic_PaginationLogs.png
+usr/share/icinga/docs/images/Icinga_Classic_ServiceStatus-150x150.png
+usr/share/icinga/docs/images/Icinga_Classic_ServiceStatus.png
+usr/share/icinga/docs/images/Icinga_Classic_TacticalOverview-150x150.png
+usr/share/icinga/docs/images/Icinga_Classic_TacticalOverview.png
+usr/share/icinga/docs/images/Icinga_Classic_Trending-150x150.png
+usr/share/icinga/docs/images/Icinga_Classic_Trending.png
+usr/share/icinga/docs/images/MyServiceStatus.png
+usr/share/icinga/docs/images/activechecks.png
+usr/share/icinga/docs/images/cachedcheckgraphs.png
+usr/share/icinga/docs/images/cachedchecks.png
+usr/share/icinga/docs/images/cachedchecks1.png
+usr/share/icinga/docs/images/caution.gif
+usr/share/icinga/docs/images/caution.png
+usr/share/icinga/docs/images/cgi-avail-a.png
+usr/share/icinga/docs/images/cgi-avail-b.png
+usr/share/icinga/docs/images/cgi-cmd.png
+usr/share/icinga/docs/images/cgi-commands.png
+usr/share/icinga/docs/images/cgi-config.png
+usr/share/icinga/docs/images/cgi-continue.png
+usr/share/icinga/docs/images/cgi-extinfo-a.png
+usr/share/icinga/docs/images/cgi-extinfo-b.png
+usr/share/icinga/docs/images/cgi-extinfo-c.png
+usr/share/icinga/docs/images/cgi-extinfo-d.png
+usr/share/icinga/docs/images/cgi-general.png
+usr/share/icinga/docs/images/cgi-histogram.png
+usr/share/icinga/docs/images/cgi-history.png
+usr/share/icinga/docs/images/cgi-notifications.png
+usr/share/icinga/docs/images/cgi-outages.png
+usr/share/icinga/docs/images/cgi-pause.png
+usr/share/icinga/docs/images/cgi-showlog.png
+usr/share/icinga/docs/images/cgi-status-a.png
+usr/share/icinga/docs/images/cgi-status-b.png
+usr/share/icinga/docs/images/cgi-status-c.png
+usr/share/icinga/docs/images/cgi-status-d.png
+usr/share/icinga/docs/images/cgi-statusinfo.png
+usr/share/icinga/docs/images/cgi-statusmap.png
+usr/share/icinga/docs/images/cgi-statuswml.png
+usr/share/icinga/docs/images/cgi-statuswrl.png
+usr/share/icinga/docs/images/cgi-summary.png
+usr/share/icinga/docs/images/cgi-tac.png
+usr/share/icinga/docs/images/cgi-trends.png
+usr/share/icinga/docs/images/checkmark.png
+usr/share/icinga/docs/images/checktiming.png
+usr/share/icinga/docs/images/configoverview.png
+usr/share/icinga/docs/images/db_model_cf.png
+usr/share/icinga/docs/images/db_model_ct.png
+usr/share/icinga/docs/images/db_model_cu.png
+usr/share/icinga/docs/images/db_model_dt.png
+usr/share/icinga/docs/images/db_model_ht.png
+usr/share/icinga/docs/images/distributed.png
+usr/share/icinga/docs/images/downtime.png
+usr/share/icinga/docs/images/epn.png
+usr/share/icinga/docs/images/eventhandlers.png
+usr/share/icinga/docs/images/externalcommands.png
+usr/share/icinga/docs/images/fast-startup.png
+usr/share/icinga/docs/images/fast-startup1.png
+usr/share/icinga/docs/images/fast-startup2.png
+usr/share/icinga/docs/images/fig1.png
+usr/share/icinga/docs/images/fig10.png
+usr/share/icinga/docs/images/fig11.png
+usr/share/icinga/docs/images/fig12.png
+usr/share/icinga/docs/images/fig13.png
+usr/share/icinga/docs/images/fig2.png
+usr/share/icinga/docs/images/fig3.png
+usr/share/icinga/docs/images/fig4.png
+usr/share/icinga/docs/images/fig5.png
+usr/share/icinga/docs/images/fig6.png
+usr/share/icinga/docs/images/fig7.png
+usr/share/icinga/docs/images/fig8.png
+usr/share/icinga/docs/images/fig9.png
+usr/share/icinga/docs/images/flags
+usr/share/icinga/docs/images/flags/de.png
+usr/share/icinga/docs/images/flags/um_gb.png
+usr/share/icinga/docs/images/freshness.png
+usr/share/icinga/docs/images/host-dependencies.png
+usr/share/icinga/docs/images/icinga-reporting-datasource-ido-mysql_1.8.png
+usr/share/icinga/docs/images/icinga-reporting-datasource-ido_1.8.png
+usr/share/icinga/docs/images/icinga-reporting-overview_1.8.png
+usr/share/icinga/docs/images/icinga-reporting_1.6.png
+usr/share/icinga/docs/images/icinga-web-admin_groups1.png
+usr/share/icinga/docs/images/icinga-web-admin_groups2.png
+usr/share/icinga/docs/images/icinga-web-admin_logs1.png
+usr/share/icinga/docs/images/icinga-web-admin_principals.png
+usr/share/icinga/docs/images/icinga-web-admin_tasks.png
+usr/share/icinga/docs/images/icinga-web-admin_users1.png
+usr/share/icinga/docs/images/icinga-web-admin_users2.png
+usr/share/icinga/docs/images/icinga-web-commands_hst.png
+usr/share/icinga/docs/images/icinga-web-commands_svc.png
+usr/share/icinga/docs/images/icinga-web-cronks-settings.png
+usr/share/icinga/docs/images/icinga-web-cronks1.png
+usr/share/icinga/docs/images/icinga-web-cronks2.png
+usr/share/icinga/docs/images/icinga-web-cronks2a.png
+usr/share/icinga/docs/images/icinga-web-cronks3.png
+usr/share/icinga/docs/images/icinga-web-cronks4.png
+usr/share/icinga/docs/images/icinga-web-cronks5.png
+usr/share/icinga/docs/images/icinga-web-cronks6.png
+usr/share/icinga/docs/images/icinga-web-exp_1.png
+usr/share/icinga/docs/images/icinga-web-exp_2.png
+usr/share/icinga/docs/images/icinga-web-exp_3.png
+usr/share/icinga/docs/images/icinga-web-exp_4.png
+usr/share/icinga/docs/images/icinga-web-exp_5.png
+usr/share/icinga/docs/images/icinga-web-filter1.png
+usr/share/icinga/docs/images/icinga-web-filter2.png
+usr/share/icinga/docs/images/icinga-web-filter3.png
+usr/share/icinga/docs/images/icinga-web-filter4.png
+usr/share/icinga/docs/images/icinga-web-filter5.png
+usr/share/icinga/docs/images/icinga-web-filter6.png
+usr/share/icinga/docs/images/icinga-web-host-obj.png
+usr/share/icinga/docs/images/icinga-web-host-obj1.png
+usr/share/icinga/docs/images/icinga-web-host.png
+usr/share/icinga/docs/images/icinga-web-hostgroup.png
+usr/share/icinga/docs/images/icinga-web-instance-down.png
+usr/share/icinga/docs/images/icinga-web-log.png
+usr/share/icinga/docs/images/icinga-web-login.png
+usr/share/icinga/docs/images/icinga-web-main_bar.png
+usr/share/icinga/docs/images/icinga-web-mainscreen.png
+usr/share/icinga/docs/images/icinga-web-open_problems.png
+usr/share/icinga/docs/images/icinga-web-overview.png
+usr/share/icinga/docs/images/icinga-web-search1.png
+usr/share/icinga/docs/images/icinga-web-settings.png
+usr/share/icinga/docs/images/icinga-web-srv.png
+usr/share/icinga/docs/images/icinga-web-srv_obj.png
+usr/share/icinga/docs/images/icinga-web-statuscronk.png
+usr/share/icinga/docs/images/icinga-web-tackle1.png
+usr/share/icinga/docs/images/icinga-web-tackle2.png
+usr/share/icinga/docs/images/icinga-web-tackle3.png
+usr/share/icinga/docs/images/icinga-web-tackle4.png
+usr/share/icinga/docs/images/icinga-web-topmenu1.png
+usr/share/icinga/docs/images/icinga-web-topmenu2.png
+usr/share/icinga/docs/images/icinga-web-topmenuadmin1.png
+usr/share/icinga/docs/images/icinga-web-user-prefs-logout.png
+usr/share/icinga/docs/images/idoutils.png
+usr/share/icinga/docs/images/important.gif
+usr/share/icinga/docs/images/important.png
+usr/share/icinga/docs/images/integrationoverview.png
+usr/share/icinga/docs/images/interleaved1.png
+usr/share/icinga/docs/images/interleaved2.png
+usr/share/icinga/docs/images/interleaved3.png
+usr/share/icinga/docs/images/logofullsize.png
+usr/share/icinga/docs/images/monitoring-printers.png
+usr/share/icinga/docs/images/monitoring-routers.png
+usr/share/icinga/docs/images/monitoring-windows.png
+usr/share/icinga/docs/images/multiple-templates1.png
+usr/share/icinga/docs/images/multiple-templates2.png
+usr/share/icinga/docs/images/nagios.jpg
+usr/share/icinga/docs/images/ndoutils.png
+usr/share/icinga/docs/images/network-outage1.png
+usr/share/icinga/docs/images/network-outage2.png
+usr/share/icinga/docs/images/noninterleaved1.png
+usr/share/icinga/docs/images/noninterleaved2.png
+usr/share/icinga/docs/images/note.gif
+usr/share/icinga/docs/images/note.png
+usr/share/icinga/docs/images/nrpe.png
+usr/share/icinga/docs/images/nrpe_remote.png
+usr/share/icinga/docs/images/nsca.png
+usr/share/icinga/docs/images/nscpp.png
+usr/share/icinga/docs/images/objects-commands.png
+usr/share/icinga/docs/images/objects-contacts.png
+usr/share/icinga/docs/images/objects-hosts.png
+usr/share/icinga/docs/images/objects-services.png
+usr/share/icinga/docs/images/objects-timeperiods.png
+usr/share/icinga/docs/images/passivechecks.png
+usr/share/icinga/docs/images/passivehosttranslation.png
+usr/share/icinga/docs/images/perfdata_cached.png
+usr/share/icinga/docs/images/perfdata_cached2.png
+usr/share/icinga/docs/images/perfdata_cmdbuf.png
+usr/share/icinga/docs/images/perfdata_exec.png
+usr/share/icinga/docs/images/perfdata_extcmd.png
+usr/share/icinga/docs/images/perfdata_host.png
+usr/share/icinga/docs/images/perfdata_lat.png
+usr/share/icinga/docs/images/perfdata_state_chg.png
+usr/share/icinga/docs/images/perfdata_svc.png
+usr/share/icinga/docs/images/plugins.png
+usr/share/icinga/docs/images/predictive-dependency-checks.png
+usr/share/icinga/docs/images/printer.png
+usr/share/icinga/docs/images/reachability1.png
+usr/share/icinga/docs/images/reachability2.png
+usr/share/icinga/docs/images/reachability3.png
+usr/share/icinga/docs/images/reachability4.png
+usr/share/icinga/docs/images/redundancy.png
+usr/share/icinga/docs/images/rep_avail.png
+usr/share/icinga/docs/images/reptop10.png
+usr/share/icinga/docs/images/security.png
+usr/share/icinga/docs/images/security1.png
+usr/share/icinga/docs/images/security2.png
+usr/share/icinga/docs/images/security3.png
+usr/share/icinga/docs/images/seealso.gif
+usr/share/icinga/docs/images/service-dependencies.png
+usr/share/icinga/docs/images/statetransitions.png
+usr/share/icinga/docs/images/statetransitions2.png
+usr/share/icinga/docs/images/stoprestart.png
+usr/share/icinga/docs/images/switch.png
+usr/share/icinga/docs/images/tac_header2.png
+usr/share/icinga/docs/images/tcpwrappers.png
+usr/share/icinga/docs/images/tip.gif
+usr/share/icinga/docs/images/tip.png
+usr/share/icinga/docs/images/tuning.png
+usr/share/icinga/docs/images/upto.gif
+usr/share/icinga/docs/index.html
+usr/share/icinga/docs/js
+usr/share/icinga/docs/js/icinga-docs.js
+usr/share/icinga/docs/js/jquery-min.js
+usr/share/icinga/docs/robots.txt
+usr/share/icinga/docs/stylesheets
+usr/share/icinga/docs/stylesheets/icinga-docs.css
+usr/share/icinga/images
+usr/share/icinga/images/Icinga_Header_Webinterface.jpg
+usr/share/icinga/images/Icinga_Header_Webinterface_Pixel.jpg
+usr/share/icinga/images/Icinga_TAC_Header_Webinterface.jpg
+usr/share/icinga/images/ack.gif
+usr/share/icinga/images/action.gif
+usr/share/icinga/images/application-monitor.png
+usr/share/icinga/images/cmd_shadow.gif
+usr/share/icinga/images/cmd_stop.png
+usr/share/icinga/images/command.png
+usr/share/icinga/images/comment.gif
+usr/share/icinga/images/contexthelp.gif
+usr/share/icinga/images/critical.png
+usr/share/icinga/images/database.gif
+usr/share/icinga/images/dd_arrow.gif
+usr/share/icinga/images/delay.gif
+usr/share/icinga/images/delete.gif
+usr/share/icinga/images/detail.gif
+usr/share/icinga/images/disabled.gif
+usr/share/icinga/images/down.gif
+usr/share/icinga/images/downtime.gif
+usr/share/icinga/images/empty.gif
+usr/share/icinga/images/enabled.gif
+usr/share/icinga/images/export_csv.png
+usr/share/icinga/images/export_json.png
+usr/share/icinga/images/export_link.png
+usr/share/icinga/images/export_xml.png
+usr/share/icinga/images/favicon.ico
+usr/share/icinga/images/flapping.gif
+usr/share/icinga/images/histogram.png
+usr/share/icinga/images/history.gif
+usr/share/icinga/images/hostevent.gif
+usr/share/icinga/images/hourglass-arrow.png
+usr/share/icinga/images/hourglass-exclamation.png
+usr/share/icinga/images/icon_collapse.gif
+usr/share/icinga/images/icon_expand.gif
+usr/share/icinga/images/icon_first_active.gif
+usr/share/icinga/images/icon_first_inactive.gif
+usr/share/icinga/images/icon_last_active.gif
+usr/share/icinga/images/icon_last_inactive.gif
+usr/share/icinga/images/icon_next_active.gif
+usr/share/icinga/images/icon_next_inactive.gif
+usr/share/icinga/images/icon_previous_active.gif
+usr/share/icinga/images/icon_previous_inactive.gif
+usr/share/icinga/images/icon_reload.png
+usr/share/icinga/images/info.png
+usr/share/icinga/images/left.gif
+usr/share/icinga/images/logofullsize.png
+usr/share/icinga/images/logos
+usr/share/icinga/images/logos/Stats1.gif
+usr/share/icinga/images/logos/Stats2.png
+usr/share/icinga/images/logos/equipment
+usr/share/icinga/images/logos/equipment/Nuvem.gif
+usr/share/icinga/images/logos/equipment/Nuvem.jpg
+usr/share/icinga/images/logos/equipment/Nuvem.png
+usr/share/icinga/images/logos/equipment/Nuvemp.gd2
+usr/share/icinga/images/logos/equipment/Nuvemp.gif
+usr/share/icinga/images/logos/equipment/Nuvemp.jpg
+usr/share/icinga/images/logos/equipment/Nuvemp.png
+usr/share/icinga/images/logos/equipment/accounting_server.gd2
+usr/share/icinga/images/logos/equipment/accounting_server.gif
+usr/share/icinga/images/logos/equipment/accounting_server.png
+usr/share/icinga/images/logos/equipment/antivirus.gd2
+usr/share/icinga/images/logos/equipment/antivirus.gif
+usr/share/icinga/images/logos/equipment/antivirus.png
+usr/share/icinga/images/logos/equipment/atm.gd2
+usr/share/icinga/images/logos/equipment/atm.gif
+usr/share/icinga/images/logos/equipment/atm.png
+usr/share/icinga/images/logos/equipment/backup.gd2
+usr/share/icinga/images/logos/equipment/backup.gif
+usr/share/icinga/images/logos/equipment/backup.png
+usr/share/icinga/images/logos/equipment/backup2.gd2
+usr/share/icinga/images/logos/equipment/backup2.gif
+usr/share/icinga/images/logos/equipment/backup2.png
+usr/share/icinga/images/logos/equipment/blackbox.gd2
+usr/share/icinga/images/logos/equipment/blackbox.gif
+usr/share/icinga/images/logos/equipment/blackbox.png
+usr/share/icinga/images/logos/equipment/cable_modem.gd2
+usr/share/icinga/images/logos/equipment/cable_modem.gif
+usr/share/icinga/images/logos/equipment/cable_modem.png
+usr/share/icinga/images/logos/equipment/cd_server.gd2
+usr/share/icinga/images/logos/equipment/cd_server.gif
+usr/share/icinga/images/logos/equipment/cd_server.png
+usr/share/icinga/images/logos/equipment/cd_server2.gd2
+usr/share/icinga/images/logos/equipment/cd_server2.gif
+usr/share/icinga/images/logos/equipment/cd_server2.png
+usr/share/icinga/images/logos/equipment/chat_server.gd2
+usr/share/icinga/images/logos/equipment/chat_server.gif
+usr/share/icinga/images/logos/equipment/chat_server.png
+usr/share/icinga/images/logos/equipment/chat_server2.gd2
+usr/share/icinga/images/logos/equipment/chat_server2.gif
+usr/share/icinga/images/logos/equipment/chat_server2.png
+usr/share/icinga/images/logos/equipment/chat_server3.gd2
+usr/share/icinga/images/logos/equipment/chat_server3.gif
+usr/share/icinga/images/logos/equipment/chat_server3.png
+usr/share/icinga/images/logos/equipment/cluster.gd2
+usr/share/icinga/images/logos/equipment/cluster.gif
+usr/share/icinga/images/logos/equipment/cluster.png
+usr/share/icinga/images/logos/equipment/cluster2.gd2
+usr/share/icinga/images/logos/equipment/cluster2.gif
+usr/share/icinga/images/logos/equipment/cluster2.png
+usr/share/icinga/images/logos/equipment/computer.gd2
+usr/share/icinga/images/logos/equipment/computer.gif
+usr/share/icinga/images/logos/equipment/computer.png
+usr/share/icinga/images/logos/equipment/computer2.gd2
+usr/share/icinga/images/logos/equipment/computer2.gif
+usr/share/icinga/images/logos/equipment/computer2.png
+usr/share/icinga/images/logos/equipment/computer3.gd2
+usr/share/icinga/images/logos/equipment/computer3.gif
+usr/share/icinga/images/logos/equipment/computer3.png
+usr/share/icinga/images/logos/equipment/computer4.gd2
+usr/share/icinga/images/logos/equipment/computer4.gif
+usr/share/icinga/images/logos/equipment/computer4.png
+usr/share/icinga/images/logos/equipment/computer5.gd2
+usr/share/icinga/images/logos/equipment/computer5.gif
+usr/share/icinga/images/logos/equipment/computer5.png
+usr/share/icinga/images/logos/equipment/computer6.gd2
+usr/share/icinga/images/logos/equipment/computer6.gif
+usr/share/icinga/images/logos/equipment/computer6.png
+usr/share/icinga/images/logos/equipment/concentrator.gd2
+usr/share/icinga/images/logos/equipment/concentrator.gif
+usr/share/icinga/images/logos/equipment/concentrator.png
+usr/share/icinga/images/logos/equipment/data_server.gd2
+usr/share/icinga/images/logos/equipment/data_server.gif
+usr/share/icinga/images/logos/equipment/data_server.png
+usr/share/icinga/images/logos/equipment/data_server2.gd2
+usr/share/icinga/images/logos/equipment/data_server2.gif
+usr/share/icinga/images/logos/equipment/data_server2.png
+usr/share/icinga/images/logos/equipment/database.gd2
+usr/share/icinga/images/logos/equipment/database.gif
+usr/share/icinga/images/logos/equipment/desktop-server.gd2
+usr/share/icinga/images/logos/equipment/desktop-server.gif
+usr/share/icinga/images/logos/equipment/dial-in.gd2
+usr/share/icinga/images/logos/equipment/dial-in.gif
+usr/share/icinga/images/logos/equipment/dial-in.png
+usr/share/icinga/images/logos/equipment/directory_services.gd2
+usr/share/icinga/images/logos/equipment/directory_services.gif
+usr/share/icinga/images/logos/equipment/directory_services.png
+usr/share/icinga/images/logos/equipment/directory_services2.gd2
+usr/share/icinga/images/logos/equipment/directory_services2.gif
+usr/share/icinga/images/logos/equipment/directory_services2.png
+usr/share/icinga/images/logos/equipment/directory_services3.gd2
+usr/share/icinga/images/logos/equipment/directory_services3.gif
+usr/share/icinga/images/logos/equipment/directory_services3.png
+usr/share/icinga/images/logos/equipment/disable_server.gd2
+usr/share/icinga/images/logos/equipment/disable_server.gif
+usr/share/icinga/images/logos/equipment/disable_server.png
+usr/share/icinga/images/logos/equipment/distributed_database.gd2
+usr/share/icinga/images/logos/equipment/distributed_database.gif
+usr/share/icinga/images/logos/equipment/distributed_database.png
+usr/share/icinga/images/logos/equipment/dmz_server.gd2
+usr/share/icinga/images/logos/equipment/dmz_server.gif
+usr/share/icinga/images/logos/equipment/dmz_server.png
+usr/share/icinga/images/logos/equipment/document_server.gd2
+usr/share/icinga/images/logos/equipment/document_server.gif
+usr/share/icinga/images/logos/equipment/document_server.png
+usr/share/icinga/images/logos/equipment/download_server.gd2
+usr/share/icinga/images/logos/equipment/download_server.gif
+usr/share/icinga/images/logos/equipment/download_server.png
+usr/share/icinga/images/logos/equipment/dumbterminal.gd2
+usr/share/icinga/images/logos/equipment/dumbterminal.gif
+usr/share/icinga/images/logos/equipment/dumbterminal.png
+usr/share/icinga/images/logos/equipment/e-shop.gd2
+usr/share/icinga/images/logos/equipment/e-shop.gif
+usr/share/icinga/images/logos/equipment/e-shop.png
+usr/share/icinga/images/logos/equipment/e-shop2.gd2
+usr/share/icinga/images/logos/equipment/e-shop2.gif
+usr/share/icinga/images/logos/equipment/e-shop2.png
+usr/share/icinga/images/logos/equipment/e-shop3.gd2
+usr/share/icinga/images/logos/equipment/e-shop3.gif
+usr/share/icinga/images/logos/equipment/e-shop3.png
+usr/share/icinga/images/logos/equipment/email_antivirus.gd2
+usr/share/icinga/images/logos/equipment/email_antivirus.gif
+usr/share/icinga/images/logos/equipment/email_antivirus.png
+usr/share/icinga/images/logos/equipment/email_server.gd2
+usr/share/icinga/images/logos/equipment/email_server.gif
+usr/share/icinga/images/logos/equipment/email_server.png
+usr/share/icinga/images/logos/equipment/email_server2.gd2
+usr/share/icinga/images/logos/equipment/email_server2.gif
+usr/share/icinga/images/logos/equipment/email_server2.png
+usr/share/icinga/images/logos/equipment/email_server3.gd2
+usr/share/icinga/images/logos/equipment/email_server3.gif
+usr/share/icinga/images/logos/equipment/email_server3.png
+usr/share/icinga/images/logos/equipment/enable_server.gd2
+usr/share/icinga/images/logos/equipment/enable_server.gif
+usr/share/icinga/images/logos/equipment/enable_server.png
+usr/share/icinga/images/logos/equipment/ethernet_card.png
+usr/share/icinga/images/logos/equipment/fax.gd2
+usr/share/icinga/images/logos/equipment/fax.gif
+usr/share/icinga/images/logos/equipment/firewall.gd2
+usr/share/icinga/images/logos/equipment/firewall.gif
+usr/share/icinga/images/logos/equipment/firewall.png
+usr/share/icinga/images/logos/equipment/firewall2.gd2
+usr/share/icinga/images/logos/equipment/firewall2.gif
+usr/share/icinga/images/logos/equipment/firewall2.png
+usr/share/icinga/images/logos/equipment/firewall3.gd2
+usr/share/icinga/images/logos/equipment/firewall3.gif
+usr/share/icinga/images/logos/equipment/firewall3.png
+usr/share/icinga/images/logos/equipment/firewall4.gd2
+usr/share/icinga/images/logos/equipment/firewall4.gif
+usr/share/icinga/images/logos/equipment/firewall_station.gd2
+usr/share/icinga/images/logos/equipment/firewall_station.gif
+usr/share/icinga/images/logos/equipment/firewall_station.png
+usr/share/icinga/images/logos/equipment/game_server.gd2
+usr/share/icinga/images/logos/equipment/game_server.gif
+usr/share/icinga/images/logos/equipment/game_server.png
+usr/share/icinga/images/logos/equipment/game_server2.gd2
+usr/share/icinga/images/logos/equipment/game_server2.gif
+usr/share/icinga/images/logos/equipment/game_server2.png
+usr/share/icinga/images/logos/equipment/game_server3.gd2
+usr/share/icinga/images/logos/equipment/game_server3.gif
+usr/share/icinga/images/logos/equipment/game_server3.png
+usr/share/icinga/images/logos/equipment/game_server4.gd2
+usr/share/icinga/images/logos/equipment/game_server4.gif
+usr/share/icinga/images/logos/equipment/game_server4.png
+usr/share/icinga/images/logos/equipment/hub.gd2
+usr/share/icinga/images/logos/equipment/hub.gif
+usr/share/icinga/images/logos/equipment/hub.png
+usr/share/icinga/images/logos/equipment/hub2.gd2
+usr/share/icinga/images/logos/equipment/hub2.gif
+usr/share/icinga/images/logos/equipment/information_cluster.gd2
+usr/share/icinga/images/logos/equipment/information_cluster.gif
+usr/share/icinga/images/logos/equipment/information_cluster.png
+usr/share/icinga/images/logos/equipment/integrated_office_system.gd2
+usr/share/icinga/images/logos/equipment/integrated_office_system.gif
+usr/share/icinga/images/logos/equipment/integrated_office_system.png
+usr/share/icinga/images/logos/equipment/internet_device.png
+usr/share/icinga/images/logos/equipment/ip-pbx.gd2
+usr/share/icinga/images/logos/equipment/ip-pbx.gif
+usr/share/icinga/images/logos/equipment/irc.gd2
+usr/share/icinga/images/logos/equipment/irc.gif
+usr/share/icinga/images/logos/equipment/irc.png
+usr/share/icinga/images/logos/equipment/laptop.gd2
+usr/share/icinga/images/logos/equipment/laptop.gif
+usr/share/icinga/images/logos/equipment/laptop.png
+usr/share/icinga/images/logos/equipment/laptop2.gd2
+usr/share/icinga/images/logos/equipment/laptop2.gif
+usr/share/icinga/images/logos/equipment/laptop2.png
+usr/share/icinga/images/logos/equipment/laptop3.gd2
+usr/share/icinga/images/logos/equipment/laptop3.gif
+usr/share/icinga/images/logos/equipment/laptop3.png
+usr/share/icinga/images/logos/equipment/laptop4.gd2
+usr/share/icinga/images/logos/equipment/laptop4.gif
+usr/share/icinga/images/logos/equipment/laptop4.png
+usr/share/icinga/images/logos/equipment/laptop5.gd2
+usr/share/icinga/images/logos/equipment/laptop5.gif
+usr/share/icinga/images/logos/equipment/laptop5.png
+usr/share/icinga/images/logos/equipment/loadbalancer.gd2
+usr/share/icinga/images/logos/equipment/loadbalancer.gif
+usr/share/icinga/images/logos/equipment/loadbalancer.png
+usr/share/icinga/images/logos/equipment/loadbalancer2.gd2
+usr/share/icinga/images/logos/equipment/loadbalancer2.gif
+usr/share/icinga/images/logos/equipment/loadbalancer2.png
+usr/share/icinga/images/logos/equipment/mainframe.gd2
+usr/share/icinga/images/logos/equipment/mainframe.gif
+usr/share/icinga/images/logos/equipment/modem.gd2
+usr/share/icinga/images/logos/equipment/modem.gif
+usr/share/icinga/images/logos/equipment/modem.png
+usr/share/icinga/images/logos/equipment/modem2.gd2
+usr/share/icinga/images/logos/equipment/modem2.gif
+usr/share/icinga/images/logos/equipment/modem2.png
+usr/share/icinga/images/logos/equipment/modem3.gd2
+usr/share/icinga/images/logos/equipment/modem3.gif
+usr/share/icinga/images/logos/equipment/modem3.png
+usr/share/icinga/images/logos/equipment/modem4.gd2
+usr/share/icinga/images/logos/equipment/modem4.gif
+usr/share/icinga/images/logos/equipment/modem4.png
+usr/share/icinga/images/logos/equipment/modem5.gd2
+usr/share/icinga/images/logos/equipment/modem5.gif
+usr/share/icinga/images/logos/equipment/modem5.png
+usr/share/icinga/images/logos/equipment/modem6.gd2
+usr/share/icinga/images/logos/equipment/modem6.gif
+usr/share/icinga/images/logos/equipment/modem6.png
+usr/share/icinga/images/logos/equipment/monitor.png
+usr/share/icinga/images/logos/equipment/monitoring.gd2
+usr/share/icinga/images/logos/equipment/monitoring.gif
+usr/share/icinga/images/logos/equipment/monitoring.png
+usr/share/icinga/images/logos/equipment/multimedia.gd2
+usr/share/icinga/images/logos/equipment/multimedia.gif
+usr/share/icinga/images/logos/equipment/multimedia.png
+usr/share/icinga/images/logos/equipment/multimedia2.gd2
+usr/share/icinga/images/logos/equipment/multimedia2.gif
+usr/share/icinga/images/logos/equipment/multimedia2.png
+usr/share/icinga/images/logos/equipment/multimedia3.gd2
+usr/share/icinga/images/logos/equipment/multimedia3.gif
+usr/share/icinga/images/logos/equipment/multimedia3.png
+usr/share/icinga/images/logos/equipment/mysql.gd2
+usr/share/icinga/images/logos/equipment/mysql.gif
+usr/share/icinga/images/logos/equipment/mysql.png
+usr/share/icinga/images/logos/equipment/mysql2.gd2
+usr/share/icinga/images/logos/equipment/mysql2.gif
+usr/share/icinga/images/logos/equipment/mysql2.png
+usr/share/icinga/images/logos/equipment/nas.gd2
+usr/share/icinga/images/logos/equipment/nas.gif
+usr/share/icinga/images/logos/equipment/nas.png
+usr/share/icinga/images/logos/equipment/nas2.gd2
+usr/share/icinga/images/logos/equipment/nas2.gif
+usr/share/icinga/images/logos/equipment/nas2.png
+usr/share/icinga/images/logos/equipment/nas3.gd2
+usr/share/icinga/images/logos/equipment/nas3.gif
+usr/share/icinga/images/logos/equipment/nas3.png
+usr/share/icinga/images/logos/equipment/nas4.gd2
+usr/share/icinga/images/logos/equipment/nas4.gif
+usr/share/icinga/images/logos/equipment/nas4.png
+usr/share/icinga/images/logos/equipment/nas_secured.gd2
+usr/share/icinga/images/logos/equipment/nas_secured.gif
+usr/share/icinga/images/logos/equipment/nas_secured.png
+usr/share/icinga/images/logos/equipment/network_node.gd2
+usr/share/icinga/images/logos/equipment/network_node.gif
+usr/share/icinga/images/logos/equipment/network_node.png
+usr/share/icinga/images/logos/equipment/news.gd2
+usr/share/icinga/images/logos/equipment/news.gif
+usr/share/icinga/images/logos/equipment/news.png
+usr/share/icinga/images/logos/equipment/news2.gd2
+usr/share/icinga/images/logos/equipment/news2.gif
+usr/share/icinga/images/logos/equipment/news2.png
+usr/share/icinga/images/logos/equipment/notebook.gd2
+usr/share/icinga/images/logos/equipment/notebook.gif
+usr/share/icinga/images/logos/equipment/office_app_server.gd2
+usr/share/icinga/images/logos/equipment/office_app_server.gif
+usr/share/icinga/images/logos/equipment/office_app_server.png
+usr/share/icinga/images/logos/equipment/outlook_remote.gd2
+usr/share/icinga/images/logos/equipment/outlook_remote.gif
+usr/share/icinga/images/logos/equipment/outlook_remote.png
+usr/share/icinga/images/logos/equipment/phone.gd2
+usr/share/icinga/images/logos/equipment/phone.gif
+usr/share/icinga/images/logos/equipment/phone.png
+usr/share/icinga/images/logos/equipment/phone2.gd2
+usr/share/icinga/images/logos/equipment/phone2.gif
+usr/share/icinga/images/logos/equipment/phone2.png
+usr/share/icinga/images/logos/equipment/print_server.gd2
+usr/share/icinga/images/logos/equipment/print_server.gif
+usr/share/icinga/images/logos/equipment/print_server.png
+usr/share/icinga/images/logos/equipment/printer.gd2
+usr/share/icinga/images/logos/equipment/printer.gif
+usr/share/icinga/images/logos/equipment/printer.png
+usr/share/icinga/images/logos/equipment/printer2.gd2
+usr/share/icinga/images/logos/equipment/printer2.gif
+usr/share/icinga/images/logos/equipment/printer2.png
+usr/share/icinga/images/logos/equipment/printer3.gd2
+usr/share/icinga/images/logos/equipment/printer3.gif
+usr/share/icinga/images/logos/equipment/printer3.png
+usr/share/icinga/images/logos/equipment/printer4.gd2
+usr/share/icinga/images/logos/equipment/printer4.gif
+usr/share/icinga/images/logos/equipment/proxy_server.gd2
+usr/share/icinga/images/logos/equipment/proxy_server.gif
+usr/share/icinga/images/logos/equipment/proxy_server.png
+usr/share/icinga/images/logos/equipment/rack-server.gd2
+usr/share/icinga/images/logos/equipment/rack-server.gif
+usr/share/icinga/images/logos/equipment/rack1.gd2
+usr/share/icinga/images/logos/equipment/rack1.gif
+usr/share/icinga/images/logos/equipment/rack1.png
+usr/share/icinga/images/logos/equipment/rack2.gd2
+usr/share/icinga/images/logos/equipment/rack2.gif
+usr/share/icinga/images/logos/equipment/rack2.png
+usr/share/icinga/images/logos/equipment/rack3.gd2
+usr/share/icinga/images/logos/equipment/rack3.gif
+usr/share/icinga/images/logos/equipment/rack3.png
+usr/share/icinga/images/logos/equipment/rack4.gd2
+usr/share/icinga/images/logos/equipment/rack4.gif
+usr/share/icinga/images/logos/equipment/rack4.png
+usr/share/icinga/images/logos/equipment/radiolink.gd2
+usr/share/icinga/images/logos/equipment/radiolink.gif
+usr/share/icinga/images/logos/equipment/radiolink.png
+usr/share/icinga/images/logos/equipment/raid_cluster.gd2
+usr/share/icinga/images/logos/equipment/raid_cluster.gif
+usr/share/icinga/images/logos/equipment/raid_cluster.png
+usr/share/icinga/images/logos/equipment/raid_cluster2.gd2
+usr/share/icinga/images/logos/equipment/raid_cluster2.gif
+usr/share/icinga/images/logos/equipment/raid_cluster2.png
+usr/share/icinga/images/logos/equipment/redundancy.gd2
+usr/share/icinga/images/logos/equipment/redundancy.gif
+usr/share/icinga/images/logos/equipment/redundancy.png
+usr/share/icinga/images/logos/equipment/redundancy2.gd2
+usr/share/icinga/images/logos/equipment/redundancy2.gif
+usr/share/icinga/images/logos/equipment/redundancy2.png
+usr/share/icinga/images/logos/equipment/remote_desktop.gd2
+usr/share/icinga/images/logos/equipment/remote_desktop.gif
+usr/share/icinga/images/logos/equipment/remote_desktop.png
+usr/share/icinga/images/logos/equipment/remote_desktop2.gd2
+usr/share/icinga/images/logos/equipment/remote_desktop2.gif
+usr/share/icinga/images/logos/equipment/remote_desktop2.png
+usr/share/icinga/images/logos/equipment/remote_installator.gd2
+usr/share/icinga/images/logos/equipment/remote_installator.gif
+usr/share/icinga/images/logos/equipment/remote_installator.png
+usr/share/icinga/images/logos/equipment/router.gd2
+usr/share/icinga/images/logos/equipment/router.gif
+usr/share/icinga/images/logos/equipment/router.png
+usr/share/icinga/images/logos/equipment/router2.gd2
+usr/share/icinga/images/logos/equipment/router2.gif
+usr/share/icinga/images/logos/equipment/san.gd2
+usr/share/icinga/images/logos/equipment/san.gif
+usr/share/icinga/images/logos/equipment/satellite.png
+usr/share/icinga/images/logos/equipment/satlink.gd2
+usr/share/icinga/images/logos/equipment/satlink.gif
+usr/share/icinga/images/logos/equipment/satlink.png
+usr/share/icinga/images/logos/equipment/satlink2.gd2
+usr/share/icinga/images/logos/equipment/satlink2.gif
+usr/share/icinga/images/logos/equipment/satlink2.png
+usr/share/icinga/images/logos/equipment/satlink3.gd2
+usr/share/icinga/images/logos/equipment/satlink3.gif
+usr/share/icinga/images/logos/equipment/satlink3.png
+usr/share/icinga/images/logos/equipment/scanner.gd2
+usr/share/icinga/images/logos/equipment/scanner.gif
+usr/share/icinga/images/logos/equipment/scanner.png
+usr/share/icinga/images/logos/equipment/screen.gd2
+usr/share/icinga/images/logos/equipment/screen.gif
+usr/share/icinga/images/logos/equipment/screen.png
+usr/share/icinga/images/logos/equipment/screen2.gd2
+usr/share/icinga/images/logos/equipment/screen2.gif
+usr/share/icinga/images/logos/equipment/screen2.png
+usr/share/icinga/images/logos/equipment/screen3.gd2
+usr/share/icinga/images/logos/equipment/screen3.gif
+usr/share/icinga/images/logos/equipment/screen3.png
+usr/share/icinga/images/logos/equipment/screen4.gd2
+usr/share/icinga/images/logos/equipment/screen4.gif
+usr/share/icinga/images/logos/equipment/screen4.png
+usr/share/icinga/images/logos/equipment/screen5.gd2
+usr/share/icinga/images/logos/equipment/screen5.gif
+usr/share/icinga/images/logos/equipment/screen5.png
+usr/share/icinga/images/logos/equipment/search_server.gd2
+usr/share/icinga/images/logos/equipment/search_server.gif
+usr/share/icinga/images/logos/equipment/search_server.png
+usr/share/icinga/images/logos/equipment/search_server2.gd2
+usr/share/icinga/images/logos/equipment/search_server2.gif
+usr/share/icinga/images/logos/equipment/search_server2.png
+usr/share/icinga/images/logos/equipment/search_server3.gd2
+usr/share/icinga/images/logos/equipment/search_server3.gif
+usr/share/icinga/images/logos/equipment/search_server3.png
+usr/share/icinga/images/logos/equipment/secure_server.gd2
+usr/share/icinga/images/logos/equipment/secure_server.gif
+usr/share/icinga/images/logos/equipment/secure_server.png
+usr/share/icinga/images/logos/equipment/security.gd2
+usr/share/icinga/images/logos/equipment/security.gif
+usr/share/icinga/images/logos/equipment/security.png
+usr/share/icinga/images/logos/equipment/security2.gd2
+usr/share/icinga/images/logos/equipment/security2.gif
+usr/share/icinga/images/logos/equipment/security2.png
+usr/share/icinga/images/logos/equipment/server.gd2
+usr/share/icinga/images/logos/equipment/server.gif
+usr/share/icinga/images/logos/equipment/server.png
+usr/share/icinga/images/logos/equipment/server2.gd2
+usr/share/icinga/images/logos/equipment/server2.gif
+usr/share/icinga/images/logos/equipment/server2.png
+usr/share/icinga/images/logos/equipment/server3.gd2
+usr/share/icinga/images/logos/equipment/server3.gif
+usr/share/icinga/images/logos/equipment/server3.png
+usr/share/icinga/images/logos/equipment/server4.gd2
+usr/share/icinga/images/logos/equipment/server4.gif
+usr/share/icinga/images/logos/equipment/server4.png
+usr/share/icinga/images/logos/equipment/shoutcast.gd2
+usr/share/icinga/images/logos/equipment/shoutcast.gif
+usr/share/icinga/images/logos/equipment/shoutcast.png
+usr/share/icinga/images/logos/equipment/shoutcast2.gd2
+usr/share/icinga/images/logos/equipment/shoutcast2.gif
+usr/share/icinga/images/logos/equipment/shoutcast2.png
+usr/share/icinga/images/logos/equipment/shoutcast3.gd2
+usr/share/icinga/images/logos/equipment/shoutcast3.gif
+usr/share/icinga/images/logos/equipment/shoutcast3.png
+usr/share/icinga/images/logos/equipment/signal.png
+usr/share/icinga/images/logos/equipment/soho.gd2
+usr/share/icinga/images/logos/equipment/soho.gif
+usr/share/icinga/images/logos/equipment/soho.png
+usr/share/icinga/images/logos/equipment/soho2.gd2
+usr/share/icinga/images/logos/equipment/soho2.gif
+usr/share/icinga/images/logos/equipment/soho2.png
+usr/share/icinga/images/logos/equipment/soho3.gd2
+usr/share/icinga/images/logos/equipment/soho3.gif
+usr/share/icinga/images/logos/equipment/soho3.png
+usr/share/icinga/images/logos/equipment/soho4.gd2
+usr/share/icinga/images/logos/equipment/soho4.gif
+usr/share/icinga/images/logos/equipment/soho4.png
+usr/share/icinga/images/logos/equipment/sql.gd2
+usr/share/icinga/images/logos/equipment/sql.gif
+usr/share/icinga/images/logos/equipment/sql.png
+usr/share/icinga/images/logos/equipment/sql2.gd2
+usr/share/icinga/images/logos/equipment/sql2.gif
+usr/share/icinga/images/logos/equipment/sql2.png
+usr/share/icinga/images/logos/equipment/sql3.gd2
+usr/share/icinga/images/logos/equipment/sql3.gif
+usr/share/icinga/images/logos/equipment/sql3.png
+usr/share/icinga/images/logos/equipment/sql4.gd2
+usr/share/icinga/images/logos/equipment/sql4.gif
+usr/share/icinga/images/logos/equipment/sql4.png
+usr/share/icinga/images/logos/equipment/ssh.gd2
+usr/share/icinga/images/logos/equipment/ssh.gif
+usr/share/icinga/images/logos/equipment/ssh.png
+usr/share/icinga/images/logos/equipment/ssh2.gd2
+usr/share/icinga/images/logos/equipment/ssh2.gif
+usr/share/icinga/images/logos/equipment/ssh2.png
+usr/share/icinga/images/logos/equipment/station.gd2
+usr/share/icinga/images/logos/equipment/storage.gd2
+usr/share/icinga/images/logos/equipment/storage.gif
+usr/share/icinga/images/logos/equipment/storage.png
+usr/share/icinga/images/logos/equipment/subnet.gd2
+usr/share/icinga/images/logos/equipment/subnet.gif
+usr/share/icinga/images/logos/equipment/subnet.png
+usr/share/icinga/images/logos/equipment/switch.gd2
+usr/share/icinga/images/logos/equipment/switch.gif
+usr/share/icinga/images/logos/equipment/switch.png
+usr/share/icinga/images/logos/equipment/switch2.gd2
+usr/share/icinga/images/logos/equipment/switch2.gif
+usr/share/icinga/images/logos/equipment/switch2.png
+usr/share/icinga/images/logos/equipment/switch3.gd2
+usr/share/icinga/images/logos/equipment/switch3.gif
+usr/share/icinga/images/logos/equipment/switch3.png
+usr/share/icinga/images/logos/equipment/switch4.gd2
+usr/share/icinga/images/logos/equipment/switch4.gif
+usr/share/icinga/images/logos/equipment/tablet.gd2
+usr/share/icinga/images/logos/equipment/tablet.gif
+usr/share/icinga/images/logos/equipment/tablet.png
+usr/share/icinga/images/logos/equipment/tablet2.gd2
+usr/share/icinga/images/logos/equipment/tablet2.gif
+usr/share/icinga/images/logos/equipment/tablet2.png
+usr/share/icinga/images/logos/equipment/thin-client.gd2
+usr/share/icinga/images/logos/equipment/thin-client.gif
+usr/share/icinga/images/logos/equipment/time_server.gd2
+usr/share/icinga/images/logos/equipment/time_server.gif
+usr/share/icinga/images/logos/equipment/time_server.png
+usr/share/icinga/images/logos/equipment/time_server2.gd2
+usr/share/icinga/images/logos/equipment/time_server2.gif
+usr/share/icinga/images/logos/equipment/time_server2.png
+usr/share/icinga/images/logos/equipment/time_server3.gd2
+usr/share/icinga/images/logos/equipment/time_server3.gif
+usr/share/icinga/images/logos/equipment/time_server3.png
+usr/share/icinga/images/logos/equipment/time_server4.gd2
+usr/share/icinga/images/logos/equipment/time_server4.gif
+usr/share/icinga/images/logos/equipment/time_server4.png
+usr/share/icinga/images/logos/equipment/time_server5.gd2
+usr/share/icinga/images/logos/equipment/time_server5.gif
+usr/share/icinga/images/logos/equipment/time_server5.png
+usr/share/icinga/images/logos/equipment/upload_server.gd2
+usr/share/icinga/images/logos/equipment/upload_server.gif
+usr/share/icinga/images/logos/equipment/upload_server.png
+usr/share/icinga/images/logos/equipment/video_server.gd2
+usr/share/icinga/images/logos/equipment/video_server.gif
+usr/share/icinga/images/logos/equipment/video_server.png
+usr/share/icinga/images/logos/equipment/video_server2.gd2
+usr/share/icinga/images/logos/equipment/video_server2.gif
+usr/share/icinga/images/logos/equipment/video_server2.png
+usr/share/icinga/images/logos/equipment/video_server3.gd2
+usr/share/icinga/images/logos/equipment/video_server3.gif
+usr/share/icinga/images/logos/equipment/video_server3.png
+usr/share/icinga/images/logos/equipment/video_server4.gd2
+usr/share/icinga/images/logos/equipment/video_server4.gif
+usr/share/icinga/images/logos/equipment/video_server4.png
+usr/share/icinga/images/logos/equipment/voip.gd2
+usr/share/icinga/images/logos/equipment/voip.gif
+usr/share/icinga/images/logos/equipment/voip.png
+usr/share/icinga/images/logos/equipment/voip2.gd2
+usr/share/icinga/images/logos/equipment/voip2.gif
+usr/share/icinga/images/logos/equipment/voip2.png
+usr/share/icinga/images/logos/equipment/voip_client.gd2
+usr/share/icinga/images/logos/equipment/voip_client.gif
+usr/share/icinga/images/logos/equipment/voip_client.png
+usr/share/icinga/images/logos/equipment/voip_client2.gd2
+usr/share/icinga/images/logos/equipment/voip_client2.gif
+usr/share/icinga/images/logos/equipment/voip_client2.png
+usr/share/icinga/images/logos/equipment/webcamera.png
+usr/share/icinga/images/logos/equipment/webmail.gd2
+usr/share/icinga/images/logos/equipment/webmail.gif
+usr/share/icinga/images/logos/equipment/webmail.png
+usr/share/icinga/images/logos/equipment/webmail2.gd2
+usr/share/icinga/images/logos/equipment/webmail2.gif
+usr/share/icinga/images/logos/equipment/webmail2.png
+usr/share/icinga/images/logos/equipment/wifi.gd2
+usr/share/icinga/images/logos/equipment/wifi.gif
+usr/share/icinga/images/logos/equipment/wifi.png
+usr/share/icinga/images/logos/equipment/wifi2.gd2
+usr/share/icinga/images/logos/equipment/wifi2.gif
+usr/share/icinga/images/logos/equipment/wifi2.png
+usr/share/icinga/images/logos/equipment/wifi3.gd2
+usr/share/icinga/images/logos/equipment/wifi3.gif
+usr/share/icinga/images/logos/equipment/wifi3.png
+usr/share/icinga/images/logos/equipment/wifi4.gd2
+usr/share/icinga/images/logos/equipment/wifi4.gif
+usr/share/icinga/images/logos/equipment/wifi4.png
+usr/share/icinga/images/logos/equipment/wifi5.gd2
+usr/share/icinga/images/logos/equipment/wifi5.gif
+usr/share/icinga/images/logos/equipment/wifi_bridge.gd2
+usr/share/icinga/images/logos/equipment/wifi_bridge.gif
+usr/share/icinga/images/logos/equipment/wifi_bridge.png
+usr/share/icinga/images/logos/equipment/wifi_modem.png
+usr/share/icinga/images/logos/equipment/workstation.gd2
+usr/share/icinga/images/logos/equipment/workstation.gif
+usr/share/icinga/images/logos/equipment/workstation.png
+usr/share/icinga/images/logos/equipment/workstation_locked.png
+usr/share/icinga/images/logos/equipment/www_server.gd2
+usr/share/icinga/images/logos/equipment/www_server.gif
+usr/share/icinga/images/logos/equipment/www_server.png
+usr/share/icinga/images/logos/hardware
+usr/share/icinga/images/logos/hardware/3ComSS2h500.gif
+usr/share/icinga/images/logos/hardware/3ComSS2h500.jpg
+usr/share/icinga/images/logos/hardware/3ComSS2h500.png
+usr/share/icinga/images/logos/hardware/3ComSS2h500p.gif
+usr/share/icinga/images/logos/hardware/3ComSS2h500p.jpg
+usr/share/icinga/images/logos/hardware/3ComSS2h500p.png
+usr/share/icinga/images/logos/hardware/3ComSS3s3300.gif
+usr/share/icinga/images/logos/hardware/3ComSS3s3300.jpg
+usr/share/icinga/images/logos/hardware/3ComSS3s3300.png
+usr/share/icinga/images/logos/hardware/3ComSS3s3300p.gif
+usr/share/icinga/images/logos/hardware/3ComSS3s3300p.jpg
+usr/share/icinga/images/logos/hardware/3ComSS3s3300p.png
+usr/share/icinga/images/logos/hardware/Brocade3800.gif
+usr/share/icinga/images/logos/hardware/Brocade3800.jpg
+usr/share/icinga/images/logos/hardware/Brocade3800.png
+usr/share/icinga/images/logos/hardware/Brocade3800p.gif
+usr/share/icinga/images/logos/hardware/Brocade3800p.jpg
+usr/share/icinga/images/logos/hardware/Brocade3800p.png
+usr/share/icinga/images/logos/hardware/Cisco1600.gif
+usr/share/icinga/images/logos/hardware/Cisco1600.jpg
+usr/share/icinga/images/logos/hardware/Cisco1600.png
+usr/share/icinga/images/logos/hardware/Cisco1600p.gif
+usr/share/icinga/images/logos/hardware/Cisco1600p.jpg
+usr/share/icinga/images/logos/hardware/Cisco1600p.png
+usr/share/icinga/images/logos/hardware/Cisco1720.gif
+usr/share/icinga/images/logos/hardware/Cisco1720.jpg
+usr/share/icinga/images/logos/hardware/Cisco1720.png
+usr/share/icinga/images/logos/hardware/Cisco1720p.gif
+usr/share/icinga/images/logos/hardware/Cisco1720p.jpg
+usr/share/icinga/images/logos/hardware/Cisco1720p.png
+usr/share/icinga/images/logos/hardware/Cisco2500.gif
+usr/share/icinga/images/logos/hardware/Cisco2500.jpg
+usr/share/icinga/images/logos/hardware/Cisco2500.png
+usr/share/icinga/images/logos/hardware/Cisco2500p.gif
+usr/share/icinga/images/logos/hardware/Cisco2500p.jpg
+usr/share/icinga/images/logos/hardware/Cisco2500p.png
+usr/share/icinga/images/logos/hardware/Cisco2600.gif
+usr/share/icinga/images/logos/hardware/Cisco2600.jpg
+usr/share/icinga/images/logos/hardware/Cisco2600.png
+usr/share/icinga/images/logos/hardware/Cisco2600p.gd2
+usr/share/icinga/images/logos/hardware/Cisco2600p.gif
+usr/share/icinga/images/logos/hardware/Cisco2600p.jpg
+usr/share/icinga/images/logos/hardware/Cisco2600p.png
+usr/share/icinga/images/logos/hardware/Cisco4500.gif
+usr/share/icinga/images/logos/hardware/Cisco4500.jpg
+usr/share/icinga/images/logos/hardware/Cisco4500.png
+usr/share/icinga/images/logos/hardware/Cisco4500p.gif
+usr/share/icinga/images/logos/hardware/Cisco4500p.jpg
+usr/share/icinga/images/logos/hardware/Cisco4500p.png
+usr/share/icinga/images/logos/hardware/ClariionFC4700.gif
+usr/share/icinga/images/logos/hardware/ClariionFC4700.jpg
+usr/share/icinga/images/logos/hardware/ClariionFC4700.png
+usr/share/icinga/images/logos/hardware/ClariionFC4700p.gif
+usr/share/icinga/images/logos/hardware/ClariionFC4700p.jpg
+usr/share/icinga/images/logos/hardware/ClariionFC4700p.png
+usr/share/icinga/images/logos/hardware/Compaq_EXD.gif
+usr/share/icinga/images/logos/hardware/Compaq_EXD.jpg
+usr/share/icinga/images/logos/hardware/Compaq_EXD.png
+usr/share/icinga/images/logos/hardware/Compaq_EXDs.gif
+usr/share/icinga/images/logos/hardware/Compaq_EXDs.jpg
+usr/share/icinga/images/logos/hardware/Compaq_EXDs.png
+usr/share/icinga/images/logos/hardware/Compaq_Pro_1600.gif
+usr/share/icinga/images/logos/hardware/Compaq_Pro_1600.jpg
+usr/share/icinga/images/logos/hardware/Compaq_Pro_1600.png
+usr/share/icinga/images/logos/hardware/Compaq_Pro_1600p.gif
+usr/share/icinga/images/logos/hardware/Compaq_Pro_1600p.jpg
+usr/share/icinga/images/logos/hardware/Compaq_Pro_1600p.png
+usr/share/icinga/images/logos/hardware/Compaq_Pro_5500.gif
+usr/share/icinga/images/logos/hardware/Compaq_Pro_5500.jpg
+usr/share/icinga/images/logos/hardware/Compaq_Pro_5500.png
+usr/share/icinga/images/logos/hardware/Compaq_Pro_5500p.gif
+usr/share/icinga/images/logos/hardware/Compaq_Pro_5500p.jpg
+usr/share/icinga/images/logos/hardware/Compaq_Pro_5500p.png
+usr/share/icinga/images/logos/hardware/Compaq_pc_EXD.gif
+usr/share/icinga/images/logos/hardware/Compaq_pc_EXD.jpg
+usr/share/icinga/images/logos/hardware/Compaq_pc_EXD.png
+usr/share/icinga/images/logos/hardware/Compaq_pc_EXDp.gif
+usr/share/icinga/images/logos/hardware/Compaq_pc_EXDp.jpg
+usr/share/icinga/images/logos/hardware/Compaq_pc_EXDp.png
+usr/share/icinga/images/logos/hardware/Dell_1650.gif
+usr/share/icinga/images/logos/hardware/Dell_1650.jpg
+usr/share/icinga/images/logos/hardware/Dell_1650.png
+usr/share/icinga/images/logos/hardware/Dell_1650p.gif
+usr/share/icinga/images/logos/hardware/Dell_1650p.jpg
+usr/share/icinga/images/logos/hardware/Dell_1650p.png
+usr/share/icinga/images/logos/hardware/HPdj2200.gif
+usr/share/icinga/images/logos/hardware/HPdj2200.jpg
+usr/share/icinga/images/logos/hardware/HPdj2200.png
+usr/share/icinga/images/logos/hardware/HPdj2200p.gif
+usr/share/icinga/images/logos/hardware/HPdj2200p.jpg
+usr/share/icinga/images/logos/hardware/HPdj2200p.png
+usr/share/icinga/images/logos/hardware/HPdj2500.gif
+usr/share/icinga/images/logos/hardware/HPdj2500.jpg
+usr/share/icinga/images/logos/hardware/HPdj2500.png
+usr/share/icinga/images/logos/hardware/HPdj2500p.gif
+usr/share/icinga/images/logos/hardware/HPdj2500p.jpg
+usr/share/icinga/images/logos/hardware/HPdj2500p.png
+usr/share/icinga/images/logos/hardware/HPlj4550.gif
+usr/share/icinga/images/logos/hardware/HPlj4550.jpg
+usr/share/icinga/images/logos/hardware/HPlj4550.png
+usr/share/icinga/images/logos/hardware/HPlj4550p.gif
+usr/share/icinga/images/logos/hardware/HPlj4550p.jpg
+usr/share/icinga/images/logos/hardware/HPlj4550p.png
+usr/share/icinga/images/logos/hardware/HPlj5000.gif
+usr/share/icinga/images/logos/hardware/HPlj5000.jpg
+usr/share/icinga/images/logos/hardware/HPlj5000.png
+usr/share/icinga/images/logos/hardware/HPlj5000p.gif
+usr/share/icinga/images/logos/hardware/HPlj5000p.jpg
+usr/share/icinga/images/logos/hardware/HPlj5000p.png
+usr/share/icinga/images/logos/hardware/HPlj8500.gif
+usr/share/icinga/images/logos/hardware/HPlj8500.jpg
+usr/share/icinga/images/logos/hardware/HPlj8500.png
+usr/share/icinga/images/logos/hardware/HPlj8500p.gif
+usr/share/icinga/images/logos/hardware/HPlj8500p.jpg
+usr/share/icinga/images/logos/hardware/HPlj8500p.png
+usr/share/icinga/images/logos/hardware/HPvectraXe320.gif
+usr/share/icinga/images/logos/hardware/HPvectraXe320.jpg
+usr/share/icinga/images/logos/hardware/HPvectraXe320.png
+usr/share/icinga/images/logos/hardware/HPvectraXe320p.gif
+usr/share/icinga/images/logos/hardware/HPvectraXe320p.jpg
+usr/share/icinga/images/logos/hardware/HPvectraXe320p.png
+usr/share/icinga/images/logos/hardware/Nokia_IP440.gif
+usr/share/icinga/images/logos/hardware/Nokia_IP440.jpg
+usr/share/icinga/images/logos/hardware/Nokia_IP440.png
+usr/share/icinga/images/logos/hardware/Nokia_IP440p.gif
+usr/share/icinga/images/logos/hardware/Nokia_IP440p.jpg
+usr/share/icinga/images/logos/hardware/Nokia_IP440p.png
+usr/share/icinga/images/logos/hardware/OptraC710.gif
+usr/share/icinga/images/logos/hardware/OptraC710.jpg
+usr/share/icinga/images/logos/hardware/OptraC710.png
+usr/share/icinga/images/logos/hardware/OptraC710p.gif
+usr/share/icinga/images/logos/hardware/OptraC710p.jpg
+usr/share/icinga/images/logos/hardware/OptraC710p.png
+usr/share/icinga/images/logos/hardware/OptraC750.gif
+usr/share/icinga/images/logos/hardware/OptraC750.jpg
+usr/share/icinga/images/logos/hardware/OptraC750.png
+usr/share/icinga/images/logos/hardware/OptraC750p.gif
+usr/share/icinga/images/logos/hardware/OptraC750p.jpg
+usr/share/icinga/images/logos/hardware/OptraC750p.png
+usr/share/icinga/images/logos/hardware/SunE450.gif
+usr/share/icinga/images/logos/hardware/SunE450.jpg
+usr/share/icinga/images/logos/hardware/SunE450.png
+usr/share/icinga/images/logos/hardware/SunE4500.gif
+usr/share/icinga/images/logos/hardware/SunE4500.jpg
+usr/share/icinga/images/logos/hardware/SunE4500.png
+usr/share/icinga/images/logos/hardware/SunE4500p.gif
+usr/share/icinga/images/logos/hardware/SunE4500p.jpg
+usr/share/icinga/images/logos/hardware/SunE4500p.png
+usr/share/icinga/images/logos/hardware/SunE450p.gif
+usr/share/icinga/images/logos/hardware/SunE450p.jpg
+usr/share/icinga/images/logos/hardware/SunE450p.png
+usr/share/icinga/images/logos/hardware/SunU5.gif
+usr/share/icinga/images/logos/hardware/SunU5.jpg
+usr/share/icinga/images/logos/hardware/SunU5.png
+usr/share/icinga/images/logos/hardware/SunU5p.gif
+usr/share/icinga/images/logos/hardware/SunU5p.jpg
+usr/share/icinga/images/logos/hardware/SunU5p.png
+usr/share/icinga/images/logos/hardware/SunV880.gif
+usr/share/icinga/images/logos/hardware/SunV880.jpg
+usr/share/icinga/images/logos/hardware/SunV880.png
+usr/share/icinga/images/logos/hardware/SunV880p.gif
+usr/share/icinga/images/logos/hardware/SunV880p.jpg
+usr/share/icinga/images/logos/hardware/SunV880p.png
+usr/share/icinga/images/logos/hardware/TCEricoh1015.gif
+usr/share/icinga/images/logos/hardware/TCEricoh1015.jpg
+usr/share/icinga/images/logos/hardware/TCEricoh1015.png
+usr/share/icinga/images/logos/hardware/TCEricoh1015p.gif
+usr/share/icinga/images/logos/hardware/TCEricoh1015p.jpg
+usr/share/icinga/images/logos/hardware/TCEricoh1015p.png
+usr/share/icinga/images/logos/hardware/Tektronix750.gif
+usr/share/icinga/images/logos/hardware/Tektronix750.jpg
+usr/share/icinga/images/logos/hardware/Tektronix750.png
+usr/share/icinga/images/logos/hardware/Tektronix750p.gif
+usr/share/icinga/images/logos/hardware/Tektronix750p.jpg
+usr/share/icinga/images/logos/hardware/Tektronix750p.png
+usr/share/icinga/images/logos/hardware/airo350.gd2
+usr/share/icinga/images/logos/hardware/airo350.gif
+usr/share/icinga/images/logos/hardware/airo350.jpg
+usr/share/icinga/images/logos/hardware/airo350.png
+usr/share/icinga/images/logos/hardware/cat1900.gd2
+usr/share/icinga/images/logos/hardware/cat2900.gd2
+usr/share/icinga/images/logos/hardware/cat3500.gd2
+usr/share/icinga/images/logos/hardware/cat3500.gif
+usr/share/icinga/images/logos/hardware/cat3500.jpg
+usr/share/icinga/images/logos/hardware/cat3500.png
+usr/share/icinga/images/logos/hardware/cat5000.gd2
+usr/share/icinga/images/logos/hardware/codin9000.gif
+usr/share/icinga/images/logos/hardware/codin9000.jpg
+usr/share/icinga/images/logos/hardware/codin9000.png
+usr/share/icinga/images/logos/hardware/codin9000p.gif
+usr/share/icinga/images/logos/hardware/codin9000p.jpg
+usr/share/icinga/images/logos/hardware/codin9000p.png
+usr/share/icinga/images/logos/hardware/hp-printer40.gd2
+usr/share/icinga/images/logos/hardware/hp-printer40.gif
+usr/share/icinga/images/logos/hardware/hp-printer40.jpg
+usr/share/icinga/images/logos/hardware/hp-printer40.png
+usr/share/icinga/images/logos/hardware/hp5000.gif
+usr/share/icinga/images/logos/hardware/hp5000.jpg
+usr/share/icinga/images/logos/hardware/hp5000.png
+usr/share/icinga/images/logos/hardware/ng-switch40.gd2
+usr/share/icinga/images/logos/hardware/ng-switch40.gif
+usr/share/icinga/images/logos/hardware/ng-switch40.jpg
+usr/share/icinga/images/logos/hardware/ng-switch40.png
+usr/share/icinga/images/logos/hardware/router40.gd2
+usr/share/icinga/images/logos/hardware/router40.gif
+usr/share/icinga/images/logos/hardware/router40.jpg
+usr/share/icinga/images/logos/hardware/router40.png
+usr/share/icinga/images/logos/hardware/server.png
+usr/share/icinga/images/logos/hardware/switch40.gd2
+usr/share/icinga/images/logos/hardware/switch40.gif
+usr/share/icinga/images/logos/hardware/switch40.jpg
+usr/share/icinga/images/logos/hardware/switch40.png
+usr/share/icinga/images/logos/icinga.gd2
+usr/share/icinga/images/logos/icinga.gif
+usr/share/icinga/images/logos/icingavrml.png
+usr/share/icinga/images/logos/other
+usr/share/icinga/images/logos/other/1.gd2
+usr/share/icinga/images/logos/other/1.gif
+usr/share/icinga/images/logos/other/1.png
+usr/share/icinga/images/logos/other/2.gd2
+usr/share/icinga/images/logos/other/2.gif
+usr/share/icinga/images/logos/other/2.png
+usr/share/icinga/images/logos/other/3.gd2
+usr/share/icinga/images/logos/other/3.gif
+usr/share/icinga/images/logos/other/3.png
+usr/share/icinga/images/logos/other/4.gd2
+usr/share/icinga/images/logos/other/4.gif
+usr/share/icinga/images/logos/other/4.png
+usr/share/icinga/images/logos/other/5.gd2
+usr/share/icinga/images/logos/other/5.gif
+usr/share/icinga/images/logos/other/5.png
+usr/share/icinga/images/logos/other/bluetooth.png
+usr/share/icinga/images/logos/other/burst.gd2
+usr/share/icinga/images/logos/other/burst.gif
+usr/share/icinga/images/logos/other/burst.png
+usr/share/icinga/images/logos/other/community.gd2
+usr/share/icinga/images/logos/other/community.gif
+usr/share/icinga/images/logos/other/community.png
+usr/share/icinga/images/logos/other/community2.gd2
+usr/share/icinga/images/logos/other/community2.gif
+usr/share/icinga/images/logos/other/community2.png
+usr/share/icinga/images/logos/other/crashed_node.gd2
+usr/share/icinga/images/logos/other/crashed_node.gif
+usr/share/icinga/images/logos/other/crashed_node.png
+usr/share/icinga/images/logos/other/exchange.gd2
+usr/share/icinga/images/logos/other/exchange.gif
+usr/share/icinga/images/logos/other/exchange.png
+usr/share/icinga/images/logos/other/eye.gd2
+usr/share/icinga/images/logos/other/eye.gif
+usr/share/icinga/images/logos/other/eye.png
+usr/share/icinga/images/logos/other/flow.gd2
+usr/share/icinga/images/logos/other/flow.gif
+usr/share/icinga/images/logos/other/flow.png
+usr/share/icinga/images/logos/other/garbage_collection.gd2
+usr/share/icinga/images/logos/other/garbage_collection.gif
+usr/share/icinga/images/logos/other/garbage_collection.png
+usr/share/icinga/images/logos/other/globe.gd2
+usr/share/icinga/images/logos/other/globe.gif
+usr/share/icinga/images/logos/other/globe.png
+usr/share/icinga/images/logos/other/globe2.gd2
+usr/share/icinga/images/logos/other/globe2.gif
+usr/share/icinga/images/logos/other/globe2.png
+usr/share/icinga/images/logos/other/globe3.gd2
+usr/share/icinga/images/logos/other/globe3.gif
+usr/share/icinga/images/logos/other/globe3.png
+usr/share/icinga/images/logos/other/globe4.gd2
+usr/share/icinga/images/logos/other/globe4.gif
+usr/share/icinga/images/logos/other/globe4.png
+usr/share/icinga/images/logos/other/globe5.gd2
+usr/share/icinga/images/logos/other/globe5.gif
+usr/share/icinga/images/logos/other/globe5.png
+usr/share/icinga/images/logos/other/globe6.png
+usr/share/icinga/images/logos/other/happy_user.gd2
+usr/share/icinga/images/logos/other/happy_user.gif
+usr/share/icinga/images/logos/other/happy_user.png
+usr/share/icinga/images/logos/other/heartbeat.gd2
+usr/share/icinga/images/logos/other/heartbeat.gif
+usr/share/icinga/images/logos/other/heartbeat.png
+usr/share/icinga/images/logos/other/heartbeat2.gd2
+usr/share/icinga/images/logos/other/heartbeat2.gif
+usr/share/icinga/images/logos/other/heartbeat2.png
+usr/share/icinga/images/logos/other/home.gd2
+usr/share/icinga/images/logos/other/home.gif
+usr/share/icinga/images/logos/other/home.png
+usr/share/icinga/images/logos/other/home2.gd2
+usr/share/icinga/images/logos/other/home2.gif
+usr/share/icinga/images/logos/other/home2.png
+usr/share/icinga/images/logos/other/hotspot.gd2
+usr/share/icinga/images/logos/other/hotspot.gif
+usr/share/icinga/images/logos/other/hotspot.png
+usr/share/icinga/images/logos/other/information.gd2
+usr/share/icinga/images/logos/other/information.gif
+usr/share/icinga/images/logos/other/information.png
+usr/share/icinga/images/logos/other/interconnect.gd2
+usr/share/icinga/images/logos/other/interconnect.gif
+usr/share/icinga/images/logos/other/interconnect.png
+usr/share/icinga/images/logos/other/internet.gd2
+usr/share/icinga/images/logos/other/internet.gif
+usr/share/icinga/images/logos/other/internet_route.gd2
+usr/share/icinga/images/logos/other/internet_route.gif
+usr/share/icinga/images/logos/other/internet_route.png
+usr/share/icinga/images/logos/other/internet_route2.gd2
+usr/share/icinga/images/logos/other/internet_route2.gif
+usr/share/icinga/images/logos/other/internet_route2.png
+usr/share/icinga/images/logos/other/intrusion.gd2
+usr/share/icinga/images/logos/other/intrusion.gif
+usr/share/icinga/images/logos/other/intrusion.png
+usr/share/icinga/images/logos/other/long_distance.gd2
+usr/share/icinga/images/logos/other/long_distance.gif
+usr/share/icinga/images/logos/other/long_distance.png
+usr/share/icinga/images/logos/other/measurement.gd2
+usr/share/icinga/images/logos/other/measurement.gif
+usr/share/icinga/images/logos/other/measurement.png
+usr/share/icinga/images/logos/other/node.gd2
+usr/share/icinga/images/logos/other/node.gif
+usr/share/icinga/images/logos/other/node.png
+usr/share/icinga/images/logos/other/remote.gd2
+usr/share/icinga/images/logos/other/remote.gif
+usr/share/icinga/images/logos/other/remote.png
+usr/share/icinga/images/logos/other/scripting.gd2
+usr/share/icinga/images/logos/other/scripting.gif
+usr/share/icinga/images/logos/other/scripting.png
+usr/share/icinga/images/logos/other/slice.gd2
+usr/share/icinga/images/logos/other/slice.gif
+usr/share/icinga/images/logos/other/slice.png
+usr/share/icinga/images/logos/other/snag.gd2
+usr/share/icinga/images/logos/other/snag.gif
+usr/share/icinga/images/logos/other/snag.png
+usr/share/icinga/images/logos/other/star.gd2
+usr/share/icinga/images/logos/other/star.gif
+usr/share/icinga/images/logos/other/star.png
+usr/share/icinga/images/logos/other/tag1.gd2
+usr/share/icinga/images/logos/other/tag1.gif
+usr/share/icinga/images/logos/other/tag1.png
+usr/share/icinga/images/logos/other/tag2.gd2
+usr/share/icinga/images/logos/other/tag2.gif
+usr/share/icinga/images/logos/other/tag2.png
+usr/share/icinga/images/logos/other/tag3.gd2
+usr/share/icinga/images/logos/other/tag3.gif
+usr/share/icinga/images/logos/other/tag3.png
+usr/share/icinga/images/logos/other/tag4.gd2
+usr/share/icinga/images/logos/other/tag4.gif
+usr/share/icinga/images/logos/other/tag4.png
+usr/share/icinga/images/logos/other/tokens.gd2
+usr/share/icinga/images/logos/other/tokens.gif
+usr/share/icinga/images/logos/other/tokens.png
+usr/share/icinga/images/logos/other/trusted.gd2
+usr/share/icinga/images/logos/other/trusted.gif
+usr/share/icinga/images/logos/other/trusted.png
+usr/share/icinga/images/logos/other/untrusted.gd2
+usr/share/icinga/images/logos/other/untrusted.gif
+usr/share/icinga/images/logos/other/untrusted.png
+usr/share/icinga/images/logos/other/uplink.gd2
+usr/share/icinga/images/logos/other/uplink.gif
+usr/share/icinga/images/logos/other/uplink.png
+usr/share/icinga/images/logos/other/user.gd2
+usr/share/icinga/images/logos/other/user.gif
+usr/share/icinga/images/logos/other/user.png
+usr/share/icinga/images/logos/other/user2.gd2
+usr/share/icinga/images/logos/other/user2.gif
+usr/share/icinga/images/logos/other/user2.png
+usr/share/icinga/images/logos/other/user3.gd2
+usr/share/icinga/images/logos/other/user3.gif
+usr/share/icinga/images/logos/other/user3.png
+usr/share/icinga/images/logos/other/utils.gd2
+usr/share/icinga/images/logos/other/utils.gif
+usr/share/icinga/images/logos/other/utils.png
+usr/share/icinga/images/logos/other/utils2.gd2
+usr/share/icinga/images/logos/other/utils2.gif
+usr/share/icinga/images/logos/other/utils2.png
+usr/share/icinga/images/logos/other/utils3.gd2
+usr/share/icinga/images/logos/other/utils3.gif
+usr/share/icinga/images/logos/other/utils3.png
+usr/share/icinga/images/logos/other/warning.gd2
+usr/share/icinga/images/logos/other/warning.gif
+usr/share/icinga/images/logos/other/warning.png
+usr/share/icinga/images/logos/other/warning2.gd2
+usr/share/icinga/images/logos/other/warning2.gif
+usr/share/icinga/images/logos/other/warning2.png
+usr/share/icinga/images/logos/other/whirl.gd2
+usr/share/icinga/images/logos/other/whirl.gif
+usr/share/icinga/images/logos/other/whirl.png
+usr/share/icinga/images/logos/printer.png
+usr/share/icinga/images/logos/router.png
+usr/share/icinga/images/logos/s.gif
+usr/share/icinga/images/logos/switch.png
+usr/share/icinga/images/logos/unknown.gd2
+usr/share/icinga/images/logos/unknown.gif
+usr/share/icinga/images/logos/vendors
+usr/share/icinga/images/logos/vendors/3com.gd2
+usr/share/icinga/images/logos/vendors/3com.gif
+usr/share/icinga/images/logos/vendors/3com.png
+usr/share/icinga/images/logos/vendors/3com2.gd2
+usr/share/icinga/images/logos/vendors/3com2.gif
+usr/share/icinga/images/logos/vendors/3com2.png
+usr/share/icinga/images/logos/vendors/9lives.gd2
+usr/share/icinga/images/logos/vendors/9lives.jpg
+usr/share/icinga/images/logos/vendors/9lives.png
+usr/share/icinga/images/logos/vendors/LVS.gif
+usr/share/icinga/images/logos/vendors/LVS.jpg
+usr/share/icinga/images/logos/vendors/LVS.png
+usr/share/icinga/images/logos/vendors/LVSp.gif
+usr/share/icinga/images/logos/vendors/LVSp.jpg
+usr/share/icinga/images/logos/vendors/LVSp.png
+usr/share/icinga/images/logos/vendors/UT-icon.png
+usr/share/icinga/images/logos/vendors/acer.gd2
+usr/share/icinga/images/logos/vendors/acer.gif
+usr/share/icinga/images/logos/vendors/acer.png
+usr/share/icinga/images/logos/vendors/adobe.gd2
+usr/share/icinga/images/logos/vendors/adobe.gif
+usr/share/icinga/images/logos/vendors/adobe.png
+usr/share/icinga/images/logos/vendors/adobe2.gd2
+usr/share/icinga/images/logos/vendors/adobe2.gif
+usr/share/icinga/images/logos/vendors/adobe2.png
+usr/share/icinga/images/logos/vendors/agilent.gd2
+usr/share/icinga/images/logos/vendors/agilent.gif
+usr/share/icinga/images/logos/vendors/agilent.png
+usr/share/icinga/images/logos/vendors/aix.gd2
+usr/share/icinga/images/logos/vendors/aix.gif
+usr/share/icinga/images/logos/vendors/aix.png
+usr/share/icinga/images/logos/vendors/aix2.gd2
+usr/share/icinga/images/logos/vendors/aix2.gif
+usr/share/icinga/images/logos/vendors/aix2.jpg
+usr/share/icinga/images/logos/vendors/aix2.png
+usr/share/icinga/images/logos/vendors/alcatel.gd2
+usr/share/icinga/images/logos/vendors/alcatel.gif
+usr/share/icinga/images/logos/vendors/alcatel.png
+usr/share/icinga/images/logos/vendors/allied.gd2
+usr/share/icinga/images/logos/vendors/allied.gif
+usr/share/icinga/images/logos/vendors/allied.png
+usr/share/icinga/images/logos/vendors/amd.gd2
+usr/share/icinga/images/logos/vendors/amd.gif
+usr/share/icinga/images/logos/vendors/amd.png
+usr/share/icinga/images/logos/vendors/amd2.gd2
+usr/share/icinga/images/logos/vendors/amd2.gif
+usr/share/icinga/images/logos/vendors/amd2.png
+usr/share/icinga/images/logos/vendors/amiga.gd2
+usr/share/icinga/images/logos/vendors/amiga.gif
+usr/share/icinga/images/logos/vendors/amiga.png
+usr/share/icinga/images/logos/vendors/amiga2.gd2
+usr/share/icinga/images/logos/vendors/amiga2.gif
+usr/share/icinga/images/logos/vendors/amiga2.jpg
+usr/share/icinga/images/logos/vendors/amiga2.png
+usr/share/icinga/images/logos/vendors/amstrad.gd2
+usr/share/icinga/images/logos/vendors/amstrad.gif
+usr/share/icinga/images/logos/vendors/amstrad.png
+usr/share/icinga/images/logos/vendors/apache.gd2
+usr/share/icinga/images/logos/vendors/apache.gif
+usr/share/icinga/images/logos/vendors/apache.png
+usr/share/icinga/images/logos/vendors/apc.gd2
+usr/share/icinga/images/logos/vendors/apc.gif
+usr/share/icinga/images/logos/vendors/apc.png
+usr/share/icinga/images/logos/vendors/apple.gd2
+usr/share/icinga/images/logos/vendors/apple.gif
+usr/share/icinga/images/logos/vendors/apple.png
+usr/share/icinga/images/logos/vendors/apple2.gd2
+usr/share/icinga/images/logos/vendors/apple2.gif
+usr/share/icinga/images/logos/vendors/apple2.png
+usr/share/icinga/images/logos/vendors/apple3.gd2
+usr/share/icinga/images/logos/vendors/apple3.gif
+usr/share/icinga/images/logos/vendors/apple3.png
+usr/share/icinga/images/logos/vendors/apple4.gd2
+usr/share/icinga/images/logos/vendors/apple4.gif
+usr/share/icinga/images/logos/vendors/apple4.jpg
+usr/share/icinga/images/logos/vendors/apple4.png
+usr/share/icinga/images/logos/vendors/asmax.gd2
+usr/share/icinga/images/logos/vendors/asmax.gif
+usr/share/icinga/images/logos/vendors/asmax.png
+usr/share/icinga/images/logos/vendors/asterisk.gd2
+usr/share/icinga/images/logos/vendors/asterisk.gif
+usr/share/icinga/images/logos/vendors/asterisk.png
+usr/share/icinga/images/logos/vendors/asus.gd2
+usr/share/icinga/images/logos/vendors/asus.gif
+usr/share/icinga/images/logos/vendors/asus.png
+usr/share/icinga/images/logos/vendors/atandt.gd2
+usr/share/icinga/images/logos/vendors/atandt.gif
+usr/share/icinga/images/logos/vendors/atandt.png
+usr/share/icinga/images/logos/vendors/atari.gd2
+usr/share/icinga/images/logos/vendors/atari.gif
+usr/share/icinga/images/logos/vendors/atari.png
+usr/share/icinga/images/logos/vendors/benq.gd2
+usr/share/icinga/images/logos/vendors/benq.gif
+usr/share/icinga/images/logos/vendors/benq.png
+usr/share/icinga/images/logos/vendors/beos.gd2
+usr/share/icinga/images/logos/vendors/beos.gif
+usr/share/icinga/images/logos/vendors/beos.jpg
+usr/share/icinga/images/logos/vendors/beos.png
+usr/share/icinga/images/logos/vendors/bosch.gd2
+usr/share/icinga/images/logos/vendors/bosch.gif
+usr/share/icinga/images/logos/vendors/bosch.png
+usr/share/icinga/images/logos/vendors/bosch2.gd2
+usr/share/icinga/images/logos/vendors/bosch2.gif
+usr/share/icinga/images/logos/vendors/bosch2.png
+usr/share/icinga/images/logos/vendors/broadcom.gd2
+usr/share/icinga/images/logos/vendors/broadcom.gif
+usr/share/icinga/images/logos/vendors/broadcom.png
+usr/share/icinga/images/logos/vendors/caldera.gd2
+usr/share/icinga/images/logos/vendors/caldera.gif
+usr/share/icinga/images/logos/vendors/caldera.jpg
+usr/share/icinga/images/logos/vendors/caldera.png
+usr/share/icinga/images/logos/vendors/canon.gd2
+usr/share/icinga/images/logos/vendors/canon.gif
+usr/share/icinga/images/logos/vendors/canon.png
+usr/share/icinga/images/logos/vendors/canyon.gd2
+usr/share/icinga/images/logos/vendors/canyon.gif
+usr/share/icinga/images/logos/vendors/canyon.png
+usr/share/icinga/images/logos/vendors/centos.gd2
+usr/share/icinga/images/logos/vendors/centos.gif
+usr/share/icinga/images/logos/vendors/centos.png
+usr/share/icinga/images/logos/vendors/centos2.gd2
+usr/share/icinga/images/logos/vendors/centos2.png
+usr/share/icinga/images/logos/vendors/cisco.gd2
+usr/share/icinga/images/logos/vendors/cisco.gif
+usr/share/icinga/images/logos/vendors/cisco.png
+usr/share/icinga/images/logos/vendors/cisco2.gd2
+usr/share/icinga/images/logos/vendors/cisco2.gif
+usr/share/icinga/images/logos/vendors/cisco2.png
+usr/share/icinga/images/logos/vendors/cisco3.gd2
+usr/share/icinga/images/logos/vendors/cisco3.gif
+usr/share/icinga/images/logos/vendors/cisco3.png
+usr/share/icinga/images/logos/vendors/citrix.gd2
+usr/share/icinga/images/logos/vendors/citrix.gif
+usr/share/icinga/images/logos/vendors/citrix.png
+usr/share/icinga/images/logos/vendors/citrix2.gd2
+usr/share/icinga/images/logos/vendors/citrix2.gif
+usr/share/icinga/images/logos/vendors/citrix2.jpg
+usr/share/icinga/images/logos/vendors/citrix2.png
+usr/share/icinga/images/logos/vendors/commodore.gd2
+usr/share/icinga/images/logos/vendors/commodore.gif
+usr/share/icinga/images/logos/vendors/commodore.png
+usr/share/icinga/images/logos/vendors/compaq.gd2
+usr/share/icinga/images/logos/vendors/compaq.gif
+usr/share/icinga/images/logos/vendors/compaq.png
+usr/share/icinga/images/logos/vendors/conexant.gd2
+usr/share/icinga/images/logos/vendors/conexant.gif
+usr/share/icinga/images/logos/vendors/conexant.png
+usr/share/icinga/images/logos/vendors/dbase.gd2
+usr/share/icinga/images/logos/vendors/dbase.gif
+usr/share/icinga/images/logos/vendors/dbase.png
+usr/share/icinga/images/logos/vendors/debian.gd2
+usr/share/icinga/images/logos/vendors/debian.gif
+usr/share/icinga/images/logos/vendors/debian.png
+usr/share/icinga/images/logos/vendors/debian2.gd2
+usr/share/icinga/images/logos/vendors/debian2.gif
+usr/share/icinga/images/logos/vendors/debian2.jpg
+usr/share/icinga/images/logos/vendors/debian2.png
+usr/share/icinga/images/logos/vendors/dell.gd2
+usr/share/icinga/images/logos/vendors/dell.gif
+usr/share/icinga/images/logos/vendors/dell.png
+usr/share/icinga/images/logos/vendors/dell2.gd2
+usr/share/icinga/images/logos/vendors/dell2.gif
+usr/share/icinga/images/logos/vendors/dell2.png
+usr/share/icinga/images/logos/vendors/digital.gd2
+usr/share/icinga/images/logos/vendors/digital.gif
+usr/share/icinga/images/logos/vendors/digital.png
+usr/share/icinga/images/logos/vendors/dlink.gd2
+usr/share/icinga/images/logos/vendors/dlink.gif
+usr/share/icinga/images/logos/vendors/dlink.png
+usr/share/icinga/images/logos/vendors/dos.gd2
+usr/share/icinga/images/logos/vendors/dos.gif
+usr/share/icinga/images/logos/vendors/dos.png
+usr/share/icinga/images/logos/vendors/dos2.gd2
+usr/share/icinga/images/logos/vendors/dos2.gif
+usr/share/icinga/images/logos/vendors/dos2.png
+usr/share/icinga/images/logos/vendors/edimax.gd2
+usr/share/icinga/images/logos/vendors/edimax.gif
+usr/share/icinga/images/logos/vendors/edimax.png
+usr/share/icinga/images/logos/vendors/epson.gd2
+usr/share/icinga/images/logos/vendors/epson.gif
+usr/share/icinga/images/logos/vendors/epson.png
+usr/share/icinga/images/logos/vendors/ericsson.gd2
+usr/share/icinga/images/logos/vendors/ericsson.gif
+usr/share/icinga/images/logos/vendors/ericsson.png
+usr/share/icinga/images/logos/vendors/ericsson2.gd2
+usr/share/icinga/images/logos/vendors/ericsson2.gif
+usr/share/icinga/images/logos/vendors/ericsson2.png
+usr/share/icinga/images/logos/vendors/etherwerx.gd2
+usr/share/icinga/images/logos/vendors/etherwerx.gif
+usr/share/icinga/images/logos/vendors/etherwerx.png
+usr/share/icinga/images/logos/vendors/fedora.gd2
+usr/share/icinga/images/logos/vendors/fedora.gif
+usr/share/icinga/images/logos/vendors/fedora.png
+usr/share/icinga/images/logos/vendors/freebsd.gd2
+usr/share/icinga/images/logos/vendors/freebsd.gif
+usr/share/icinga/images/logos/vendors/freebsd.png
+usr/share/icinga/images/logos/vendors/freebsd2.gd2
+usr/share/icinga/images/logos/vendors/freebsd2.gif
+usr/share/icinga/images/logos/vendors/freebsd2.png
+usr/share/icinga/images/logos/vendors/freebsd40.gd2
+usr/share/icinga/images/logos/vendors/freebsd40.gif
+usr/share/icinga/images/logos/vendors/freebsd40.jpg
+usr/share/icinga/images/logos/vendors/freebsd40.png
+usr/share/icinga/images/logos/vendors/freenas.gd2
+usr/share/icinga/images/logos/vendors/freenas.gif
+usr/share/icinga/images/logos/vendors/freenas.png
+usr/share/icinga/images/logos/vendors/fujitsu.gd2
+usr/share/icinga/images/logos/vendors/fujitsu.gif
+usr/share/icinga/images/logos/vendors/fujitsu.png
+usr/share/icinga/images/logos/vendors/gentoo.gd2
+usr/share/icinga/images/logos/vendors/gentoo.gif
+usr/share/icinga/images/logos/vendors/gentoo.png
+usr/share/icinga/images/logos/vendors/hp-ux.gd2
+usr/share/icinga/images/logos/vendors/hp-ux.gif
+usr/share/icinga/images/logos/vendors/hp-ux.png
+usr/share/icinga/images/logos/vendors/hp-ux2.gd2
+usr/share/icinga/images/logos/vendors/hp-ux2.gif
+usr/share/icinga/images/logos/vendors/hp-ux2.jpg
+usr/share/icinga/images/logos/vendors/hp-ux2.png
+usr/share/icinga/images/logos/vendors/hp.gd2
+usr/share/icinga/images/logos/vendors/hp.gif
+usr/share/icinga/images/logos/vendors/hp.png
+usr/share/icinga/images/logos/vendors/hp2.gd2
+usr/share/icinga/images/logos/vendors/hp2.gif
+usr/share/icinga/images/logos/vendors/hp2.png
+usr/share/icinga/images/logos/vendors/iana.gd2
+usr/share/icinga/images/logos/vendors/iana.gif
+usr/share/icinga/images/logos/vendors/iana.png
+usr/share/icinga/images/logos/vendors/ibm.gd2
+usr/share/icinga/images/logos/vendors/ibm.gif
+usr/share/icinga/images/logos/vendors/ibm.png
+usr/share/icinga/images/logos/vendors/intel.gd2
+usr/share/icinga/images/logos/vendors/intel.gif
+usr/share/icinga/images/logos/vendors/intel.png
+usr/share/icinga/images/logos/vendors/intel2.gd2
+usr/share/icinga/images/logos/vendors/intel2.gif
+usr/share/icinga/images/logos/vendors/intel2.png
+usr/share/icinga/images/logos/vendors/irix.gd2
+usr/share/icinga/images/logos/vendors/irix.gif
+usr/share/icinga/images/logos/vendors/irix.png
+usr/share/icinga/images/logos/vendors/irix2.gd2
+usr/share/icinga/images/logos/vendors/irix2.gif
+usr/share/icinga/images/logos/vendors/irix2.jpg
+usr/share/icinga/images/logos/vendors/irix2.png
+usr/share/icinga/images/logos/vendors/juniper.gd2
+usr/share/icinga/images/logos/vendors/juniper.gif
+usr/share/icinga/images/logos/vendors/juniper.png
+usr/share/icinga/images/logos/vendors/jvc.gd2
+usr/share/icinga/images/logos/vendors/jvc.gif
+usr/share/icinga/images/logos/vendors/jvc.png
+usr/share/icinga/images/logos/vendors/kodak.gd2
+usr/share/icinga/images/logos/vendors/kodak.gif
+usr/share/icinga/images/logos/vendors/kodak.png
+usr/share/icinga/images/logos/vendors/kodak2.gd2
+usr/share/icinga/images/logos/vendors/kodak2.gif
+usr/share/icinga/images/logos/vendors/kodak2.png
+usr/share/icinga/images/logos/vendors/konica.gd2
+usr/share/icinga/images/logos/vendors/konica.gif
+usr/share/icinga/images/logos/vendors/konica.png
+usr/share/icinga/images/logos/vendors/konica2.gd2
+usr/share/icinga/images/logos/vendors/konica2.gif
+usr/share/icinga/images/logos/vendors/konica2.png
+usr/share/icinga/images/logos/vendors/kyocera.gd2
+usr/share/icinga/images/logos/vendors/kyocera.gif
+usr/share/icinga/images/logos/vendors/kyocera.png
+usr/share/icinga/images/logos/vendors/kyocera2.gd2
+usr/share/icinga/images/logos/vendors/kyocera2.gif
+usr/share/icinga/images/logos/vendors/kyocera2.png
+usr/share/icinga/images/logos/vendors/lexmark.gd2
+usr/share/icinga/images/logos/vendors/lexmark.gif
+usr/share/icinga/images/logos/vendors/lexmark.png
+usr/share/icinga/images/logos/vendors/lg.gd2
+usr/share/icinga/images/logos/vendors/lg.gif
+usr/share/icinga/images/logos/vendors/lg.png
+usr/share/icinga/images/logos/vendors/lg2.gd2
+usr/share/icinga/images/logos/vendors/lg2.gif
+usr/share/icinga/images/logos/vendors/lg2.png
+usr/share/icinga/images/logos/vendors/linksys.gd2
+usr/share/icinga/images/logos/vendors/linksys.gif
+usr/share/icinga/images/logos/vendors/linksys.png
+usr/share/icinga/images/logos/vendors/linux.gd2
+usr/share/icinga/images/logos/vendors/linux.gif
+usr/share/icinga/images/logos/vendors/linux.png
+usr/share/icinga/images/logos/vendors/linux40.gd2
+usr/share/icinga/images/logos/vendors/linux40.gif
+usr/share/icinga/images/logos/vendors/linux40.jpg
+usr/share/icinga/images/logos/vendors/linux40.png
+usr/share/icinga/images/logos/vendors/livebox.gd2
+usr/share/icinga/images/logos/vendors/livebox.gif
+usr/share/icinga/images/logos/vendors/livebox.png
+usr/share/icinga/images/logos/vendors/lucent.gd2
+usr/share/icinga/images/logos/vendors/lucent.gif
+usr/share/icinga/images/logos/vendors/lucent.png
+usr/share/icinga/images/logos/vendors/mac40.gd2
+usr/share/icinga/images/logos/vendors/mac40.gif
+usr/share/icinga/images/logos/vendors/mac40.jpg
+usr/share/icinga/images/logos/vendors/mac40.png
+usr/share/icinga/images/logos/vendors/macos.gd2
+usr/share/icinga/images/logos/vendors/macos.gif
+usr/share/icinga/images/logos/vendors/macos.png
+usr/share/icinga/images/logos/vendors/macos2.gd2
+usr/share/icinga/images/logos/vendors/macos2.gif
+usr/share/icinga/images/logos/vendors/macos2.png
+usr/share/icinga/images/logos/vendors/mandrake.gd2
+usr/share/icinga/images/logos/vendors/mandrake.gif
+usr/share/icinga/images/logos/vendors/mandrake.jpg
+usr/share/icinga/images/logos/vendors/mandrake.png
+usr/share/icinga/images/logos/vendors/mandriva.gd2
+usr/share/icinga/images/logos/vendors/mandriva.gif
+usr/share/icinga/images/logos/vendors/mandriva.png
+usr/share/icinga/images/logos/vendors/microsoft.gd2
+usr/share/icinga/images/logos/vendors/microsoft.gif
+usr/share/icinga/images/logos/vendors/microsoft.png
+usr/share/icinga/images/logos/vendors/mikrotik.gd2
+usr/share/icinga/images/logos/vendors/mikrotik.gif
+usr/share/icinga/images/logos/vendors/mikrotik.png
+usr/share/icinga/images/logos/vendors/mint.gd2
+usr/share/icinga/images/logos/vendors/mint.gif
+usr/share/icinga/images/logos/vendors/mint.png
+usr/share/icinga/images/logos/vendors/monowall.gd2
+usr/share/icinga/images/logos/vendors/monowall.gif
+usr/share/icinga/images/logos/vendors/monowall.png
+usr/share/icinga/images/logos/vendors/monowall2.gd2
+usr/share/icinga/images/logos/vendors/monowall2.gif
+usr/share/icinga/images/logos/vendors/monowall2.png
+usr/share/icinga/images/logos/vendors/motorola.gd2
+usr/share/icinga/images/logos/vendors/motorola.gif
+usr/share/icinga/images/logos/vendors/motorola.png
+usr/share/icinga/images/logos/vendors/motorola2.gd2
+usr/share/icinga/images/logos/vendors/motorola2.gif
+usr/share/icinga/images/logos/vendors/motorola2.png
+usr/share/icinga/images/logos/vendors/nec.gd2
+usr/share/icinga/images/logos/vendors/nec.gif
+usr/share/icinga/images/logos/vendors/nec.png
+usr/share/icinga/images/logos/vendors/netapp.gd2
+usr/share/icinga/images/logos/vendors/netapp.gif
+usr/share/icinga/images/logos/vendors/netapp.jpg
+usr/share/icinga/images/logos/vendors/netapp.png
+usr/share/icinga/images/logos/vendors/netbsd.gd2
+usr/share/icinga/images/logos/vendors/netbsd.gif
+usr/share/icinga/images/logos/vendors/netbsd.png
+usr/share/icinga/images/logos/vendors/netgear.gd2
+usr/share/icinga/images/logos/vendors/netgear.gif
+usr/share/icinga/images/logos/vendors/netgear.png
+usr/share/icinga/images/logos/vendors/next.gd2
+usr/share/icinga/images/logos/vendors/next.gif
+usr/share/icinga/images/logos/vendors/next.jpg
+usr/share/icinga/images/logos/vendors/next.png
+usr/share/icinga/images/logos/vendors/nokia.gd2
+usr/share/icinga/images/logos/vendors/nokia.gif
+usr/share/icinga/images/logos/vendors/nokia.png
+usr/share/icinga/images/logos/vendors/nortel.gd2
+usr/share/icinga/images/logos/vendors/nortel.gif
+usr/share/icinga/images/logos/vendors/nortel.png
+usr/share/icinga/images/logos/vendors/nortel2.gd2
+usr/share/icinga/images/logos/vendors/nortel2.gif
+usr/share/icinga/images/logos/vendors/nortel2.png
+usr/share/icinga/images/logos/vendors/novell.gd2
+usr/share/icinga/images/logos/vendors/novell.gif
+usr/share/icinga/images/logos/vendors/novell.png
+usr/share/icinga/images/logos/vendors/novell40.gd2
+usr/share/icinga/images/logos/vendors/novell40.gif
+usr/share/icinga/images/logos/vendors/novell40.jpg
+usr/share/icinga/images/logos/vendors/novell40.png
+usr/share/icinga/images/logos/vendors/oki.gd2
+usr/share/icinga/images/logos/vendors/oki.gif
+usr/share/icinga/images/logos/vendors/oki.png
+usr/share/icinga/images/logos/vendors/olivetti.gd2
+usr/share/icinga/images/logos/vendors/olivetti.gif
+usr/share/icinga/images/logos/vendors/olivetti.png
+usr/share/icinga/images/logos/vendors/openbsd.gd2
+usr/share/icinga/images/logos/vendors/openbsd.gif
+usr/share/icinga/images/logos/vendors/openbsd.png
+usr/share/icinga/images/logos/vendors/openbsd2.gd2
+usr/share/icinga/images/logos/vendors/openbsd2.gif
+usr/share/icinga/images/logos/vendors/openbsd2.jpg
+usr/share/icinga/images/logos/vendors/openbsd2.png
+usr/share/icinga/images/logos/vendors/oracle.gd2
+usr/share/icinga/images/logos/vendors/oracle.gif
+usr/share/icinga/images/logos/vendors/oracle.png
+usr/share/icinga/images/logos/vendors/orinoco.gd2
+usr/share/icinga/images/logos/vendors/orinoco.gif
+usr/share/icinga/images/logos/vendors/orinoco.png
+usr/share/icinga/images/logos/vendors/os2.gd2
+usr/share/icinga/images/logos/vendors/os2.gif
+usr/share/icinga/images/logos/vendors/os2.png
+usr/share/icinga/images/logos/vendors/panasonic.gd2
+usr/share/icinga/images/logos/vendors/panasonic.gif
+usr/share/icinga/images/logos/vendors/panasonic.png
+usr/share/icinga/images/logos/vendors/paradox.gd2
+usr/share/icinga/images/logos/vendors/paradox.gif
+usr/share/icinga/images/logos/vendors/paradox.png
+usr/share/icinga/images/logos/vendors/pentagram.gd2
+usr/share/icinga/images/logos/vendors/pentagram.gif
+usr/share/icinga/images/logos/vendors/pentagram.png
+usr/share/icinga/images/logos/vendors/philips.gd2
+usr/share/icinga/images/logos/vendors/philips.gif
+usr/share/icinga/images/logos/vendors/philips.png
+usr/share/icinga/images/logos/vendors/php.gd2
+usr/share/icinga/images/logos/vendors/php.gif
+usr/share/icinga/images/logos/vendors/php.png
+usr/share/icinga/images/logos/vendors/pix.gd2
+usr/share/icinga/images/logos/vendors/pix.gif
+usr/share/icinga/images/logos/vendors/pix.jpg
+usr/share/icinga/images/logos/vendors/pix.png
+usr/share/icinga/images/logos/vendors/plan9.gd2
+usr/share/icinga/images/logos/vendors/plan9.gif
+usr/share/icinga/images/logos/vendors/plan9.png
+usr/share/icinga/images/logos/vendors/planet.gd2
+usr/share/icinga/images/logos/vendors/planet.gif
+usr/share/icinga/images/logos/vendors/planet.png
+usr/share/icinga/images/logos/vendors/procurve.gd2
+usr/share/icinga/images/logos/vendors/procurve.gif
+usr/share/icinga/images/logos/vendors/procurve.png
+usr/share/icinga/images/logos/vendors/proxim.gd2
+usr/share/icinga/images/logos/vendors/proxim.gif
+usr/share/icinga/images/logos/vendors/proxim.png
+usr/share/icinga/images/logos/vendors/redback.gd2
+usr/share/icinga/images/logos/vendors/redback.gif
+usr/share/icinga/images/logos/vendors/redback.png
+usr/share/icinga/images/logos/vendors/redhat.gd2
+usr/share/icinga/images/logos/vendors/redhat.gif
+usr/share/icinga/images/logos/vendors/redhat.png
+usr/share/icinga/images/logos/vendors/redhat2.gd2
+usr/share/icinga/images/logos/vendors/redhat2.gif
+usr/share/icinga/images/logos/vendors/redhat2.png
+usr/share/icinga/images/logos/vendors/redhat3.gd2
+usr/share/icinga/images/logos/vendors/redhat3.gif
+usr/share/icinga/images/logos/vendors/redhat3.jpg
+usr/share/icinga/images/logos/vendors/redhat3.png
+usr/share/icinga/images/logos/vendors/samsung.gd2
+usr/share/icinga/images/logos/vendors/samsung.gif
+usr/share/icinga/images/logos/vendors/samsung.png
+usr/share/icinga/images/logos/vendors/sco.gd2
+usr/share/icinga/images/logos/vendors/sco.gif
+usr/share/icinga/images/logos/vendors/sco.jpg
+usr/share/icinga/images/logos/vendors/sco.png
+usr/share/icinga/images/logos/vendors/siemens.gd2
+usr/share/icinga/images/logos/vendors/siemens.gif
+usr/share/icinga/images/logos/vendors/siemens.png
+usr/share/icinga/images/logos/vendors/sinix.gd2
+usr/share/icinga/images/logos/vendors/sinix.gif
+usr/share/icinga/images/logos/vendors/sinix.jpg
+usr/share/icinga/images/logos/vendors/sinix.png
+usr/share/icinga/images/logos/vendors/sis.gd2
+usr/share/icinga/images/logos/vendors/sis.gif
+usr/share/icinga/images/logos/vendors/sis.png
+usr/share/icinga/images/logos/vendors/sis2.gd2
+usr/share/icinga/images/logos/vendors/sis2.gif
+usr/share/icinga/images/logos/vendors/sis2.png
+usr/share/icinga/images/logos/vendors/slackware.gd2
+usr/share/icinga/images/logos/vendors/slackware.gif
+usr/share/icinga/images/logos/vendors/slackware.png
+usr/share/icinga/images/logos/vendors/slackware2.gd2
+usr/share/icinga/images/logos/vendors/slackware2.gif
+usr/share/icinga/images/logos/vendors/slackware2.jpg
+usr/share/icinga/images/logos/vendors/slackware2.png
+usr/share/icinga/images/logos/vendors/solaris.gd2
+usr/share/icinga/images/logos/vendors/solaris.gif
+usr/share/icinga/images/logos/vendors/solaris.png
+usr/share/icinga/images/logos/vendors/sony.gd2
+usr/share/icinga/images/logos/vendors/sony.gif
+usr/share/icinga/images/logos/vendors/sony.png
+usr/share/icinga/images/logos/vendors/sphairon.gd2
+usr/share/icinga/images/logos/vendors/sphairon.gif
+usr/share/icinga/images/logos/vendors/sphairon.png
+usr/share/icinga/images/logos/vendors/stampede.gd2
+usr/share/icinga/images/logos/vendors/stampede.gif
+usr/share/icinga/images/logos/vendors/stampede.jpg
+usr/share/icinga/images/logos/vendors/stampede.png
+usr/share/icinga/images/logos/vendors/storm.gd2
+usr/share/icinga/images/logos/vendors/storm.gif
+usr/share/icinga/images/logos/vendors/storm.jpg
+usr/share/icinga/images/logos/vendors/storm.png
+usr/share/icinga/images/logos/vendors/sun.gd2
+usr/share/icinga/images/logos/vendors/sun.gif
+usr/share/icinga/images/logos/vendors/sun.png
+usr/share/icinga/images/logos/vendors/sun2.gd2
+usr/share/icinga/images/logos/vendors/sun2.gif
+usr/share/icinga/images/logos/vendors/sun2.png
+usr/share/icinga/images/logos/vendors/sun40.gd2
+usr/share/icinga/images/logos/vendors/sun40.gif
+usr/share/icinga/images/logos/vendors/sun40.jpg
+usr/share/icinga/images/logos/vendors/sun40.png
+usr/share/icinga/images/logos/vendors/sunlogo.gd2
+usr/share/icinga/images/logos/vendors/sunlogo.gif
+usr/share/icinga/images/logos/vendors/sunlogo.jpg
+usr/share/icinga/images/logos/vendors/sunlogo.png
+usr/share/icinga/images/logos/vendors/surecom.gd2
+usr/share/icinga/images/logos/vendors/surecom.gif
+usr/share/icinga/images/logos/vendors/surecom.png
+usr/share/icinga/images/logos/vendors/suse.gd2
+usr/share/icinga/images/logos/vendors/suse.gif
+usr/share/icinga/images/logos/vendors/suse.png
+usr/share/icinga/images/logos/vendors/suse2.gd2
+usr/share/icinga/images/logos/vendors/suse2.gif
+usr/share/icinga/images/logos/vendors/suse2.png
+usr/share/icinga/images/logos/vendors/suse3.gd2
+usr/share/icinga/images/logos/vendors/suse3.gif
+usr/share/icinga/images/logos/vendors/suse3.jpg
+usr/share/icinga/images/logos/vendors/suse3.png
+usr/share/icinga/images/logos/vendors/tcom.gd2
+usr/share/icinga/images/logos/vendors/tcom.gif
+usr/share/icinga/images/logos/vendors/tcom.png
+usr/share/icinga/images/logos/vendors/texasinstruments.gd2
+usr/share/icinga/images/logos/vendors/texasinstruments.gif
+usr/share/icinga/images/logos/vendors/texasinstruments.png
+usr/share/icinga/images/logos/vendors/thomson.gd2
+usr/share/icinga/images/logos/vendors/thomson.gif
+usr/share/icinga/images/logos/vendors/thomson.png
+usr/share/icinga/images/logos/vendors/toshiba.gd2
+usr/share/icinga/images/logos/vendors/toshiba.gif
+usr/share/icinga/images/logos/vendors/toshiba.png
+usr/share/icinga/images/logos/vendors/tplink.gd2
+usr/share/icinga/images/logos/vendors/tplink.gif
+usr/share/icinga/images/logos/vendors/tplink.png
+usr/share/icinga/images/logos/vendors/tru64.gd2
+usr/share/icinga/images/logos/vendors/tru64.gif
+usr/share/icinga/images/logos/vendors/tru64.png
+usr/share/icinga/images/logos/vendors/turbolinux.gd2
+usr/share/icinga/images/logos/vendors/turbolinux.gif
+usr/share/icinga/images/logos/vendors/turbolinux.jpg
+usr/share/icinga/images/logos/vendors/turbolinux.png
+usr/share/icinga/images/logos/vendors/ubuntu.gd2
+usr/share/icinga/images/logos/vendors/ubuntu.gif
+usr/share/icinga/images/logos/vendors/ubuntu.png
+usr/share/icinga/images/logos/vendors/ubuntu2.gd2
+usr/share/icinga/images/logos/vendors/ubuntu2.gif
+usr/share/icinga/images/logos/vendors/ubuntu2.png
+usr/share/icinga/images/logos/vendors/ultrapenguin.gd2
+usr/share/icinga/images/logos/vendors/ultrapenguin.gif
+usr/share/icinga/images/logos/vendors/ultrapenguin.jpg
+usr/share/icinga/images/logos/vendors/ultrapenguin.png
+usr/share/icinga/images/logos/vendors/unicos.gd2
+usr/share/icinga/images/logos/vendors/unicos.gif
+usr/share/icinga/images/logos/vendors/unicos.jpg
+usr/share/icinga/images/logos/vendors/unicos.png
+usr/share/icinga/images/logos/vendors/usrobotics.gd2
+usr/share/icinga/images/logos/vendors/usrobotics.gif
+usr/share/icinga/images/logos/vendors/usrobotics.png
+usr/share/icinga/images/logos/vendors/virtual.gd2
+usr/share/icinga/images/logos/vendors/virtual.gif
+usr/share/icinga/images/logos/vendors/virtual.png
+usr/share/icinga/images/logos/vendors/vista.gd2
+usr/share/icinga/images/logos/vendors/vista.gif
+usr/share/icinga/images/logos/vendors/vista.png
+usr/share/icinga/images/logos/vendors/vmware.gd2
+usr/share/icinga/images/logos/vendors/vmware.gif
+usr/share/icinga/images/logos/vendors/vmware.png
+usr/share/icinga/images/logos/vendors/vmware2.gd2
+usr/share/icinga/images/logos/vendors/vmware2.gif
+usr/share/icinga/images/logos/vendors/vmware2.png
+usr/share/icinga/images/logos/vendors/vyatta.gd2
+usr/share/icinga/images/logos/vendors/vyatta.gif
+usr/share/icinga/images/logos/vendors/vyatta.png
+usr/share/icinga/images/logos/vendors/vyatta2.gd2
+usr/share/icinga/images/logos/vendors/vyatta2.gif
+usr/share/icinga/images/logos/vendors/vyatta2.png
+usr/share/icinga/images/logos/vendors/win40.gd2
+usr/share/icinga/images/logos/vendors/win40.gif
+usr/share/icinga/images/logos/vendors/win40.jpg
+usr/share/icinga/images/logos/vendors/win40.png
+usr/share/icinga/images/logos/vendors/win9x.gd2
+usr/share/icinga/images/logos/vendors/win9x.gif
+usr/share/icinga/images/logos/vendors/win9x.png
+usr/share/icinga/images/logos/vendors/windows7.gd2
+usr/share/icinga/images/logos/vendors/windows7.gif
+usr/share/icinga/images/logos/vendors/windows7.png
+usr/share/icinga/images/logos/vendors/windows7_2.gd2
+usr/share/icinga/images/logos/vendors/windows7_2.gif
+usr/share/icinga/images/logos/vendors/windows7_2.png
+usr/share/icinga/images/logos/vendors/windowsme.gd2
+usr/share/icinga/images/logos/vendors/windowsme.gif
+usr/share/icinga/images/logos/vendors/windowsme.png
+usr/share/icinga/images/logos/vendors/windowsxp.gd2
+usr/share/icinga/images/logos/vendors/windowsxp.gif
+usr/share/icinga/images/logos/vendors/windowsxp.png
+usr/share/icinga/images/logos/vendors/winnt.gd2
+usr/share/icinga/images/logos/vendors/winnt.gif
+usr/share/icinga/images/logos/vendors/winnt.png
+usr/share/icinga/images/logos/vendors/xen.gd2
+usr/share/icinga/images/logos/vendors/xen.gif
+usr/share/icinga/images/logos/vendors/xen.png
+usr/share/icinga/images/logos/vendors/xerox.gd2
+usr/share/icinga/images/logos/vendors/xerox.gif
+usr/share/icinga/images/logos/vendors/xerox.png
+usr/share/icinga/images/logos/vendors/xerox2.gd2
+usr/share/icinga/images/logos/vendors/xerox2.gif
+usr/share/icinga/images/logos/vendors/xerox2.png
+usr/share/icinga/images/logos/vendors/xerox3.gd2
+usr/share/icinga/images/logos/vendors/xerox3.gif
+usr/share/icinga/images/logos/vendors/xerox3.png
+usr/share/icinga/images/logos/vendors/xircom.gd2
+usr/share/icinga/images/logos/vendors/xircom.gif
+usr/share/icinga/images/logos/vendors/xircom.png
+usr/share/icinga/images/logos/vendors/xirrus.gd2
+usr/share/icinga/images/logos/vendors/xirrus.gif
+usr/share/icinga/images/logos/vendors/xirrus.png
+usr/share/icinga/images/logos/vendors/xirrus2.gd2
+usr/share/icinga/images/logos/vendors/xirrus2.gif
+usr/share/icinga/images/logos/vendors/xirrus2.png
+usr/share/icinga/images/logos/vendors/xserver.gd2
+usr/share/icinga/images/logos/vendors/xserver.gif
+usr/share/icinga/images/logos/vendors/xserver.png
+usr/share/icinga/images/logos/vendors/xserver2.gd2
+usr/share/icinga/images/logos/vendors/xserver2.gif
+usr/share/icinga/images/logos/vendors/xserver2.png
+usr/share/icinga/images/logos/vendors/yellowdog.gd2
+usr/share/icinga/images/logos/vendors/yellowdog.gif
+usr/share/icinga/images/logos/vendors/yellowdog.jpg
+usr/share/icinga/images/logos/vendors/yellowdog.png
+usr/share/icinga/images/logos/vendors/zoltrix.gd2
+usr/share/icinga/images/logos/vendors/zoltrix.gif
+usr/share/icinga/images/logos/vendors/zoltrix.png
+usr/share/icinga/images/logos/vendors/zoom.gd2
+usr/share/icinga/images/logos/vendors/zoom.gif
+usr/share/icinga/images/logos/vendors/zoom.png
+usr/share/icinga/images/logos/vendors/zyxel.gd2
+usr/share/icinga/images/logos/vendors/zyxel.gif
+usr/share/icinga/images/logos/vendors/zyxel.png
+usr/share/icinga/images/logrotate.png
+usr/share/icinga/images/menu_bar.gif
+usr/share/icinga/images/menu_blank.gif
+usr/share/icinga/images/menu_body.gif
+usr/share/icinga/images/menu_cat_gray.png
+usr/share/icinga/images/menu_less.gif
+usr/share/icinga/images/menu_li1.gif
+usr/share/icinga/images/menu_li2.gif
+usr/share/icinga/images/menu_more.gif
+usr/share/icinga/images/ndisabled.gif
+usr/share/icinga/images/noack.gif
+usr/share/icinga/images/notes.gif
+usr/share/icinga/images/notify.gif
+usr/share/icinga/images/passiveonly.gif
+usr/share/icinga/images/recovery.png
+usr/share/icinga/images/restart.gif
+usr/share/icinga/images/right.gif
+usr/share/icinga/images/save.gif
+usr/share/icinga/images/server.png
+usr/share/icinga/images/serviceevent.gif
+usr/share/icinga/images/splunk1.gif
+usr/share/icinga/images/splunk2.gif
+usr/share/icinga/images/start.gif
+usr/share/icinga/images/stats.gif
+usr/share/icinga/images/stats2.png
+usr/share/icinga/images/status_detail.gif
+usr/share/icinga/images/status_map.gif
+usr/share/icinga/images/stop.gif
+usr/share/icinga/images/tacdisabled.png
+usr/share/icinga/images/tacenabled.png
+usr/share/icinga/images/thermcrit.png
+usr/share/icinga/images/thermok.png
+usr/share/icinga/images/thermwarn.png
+usr/share/icinga/images/trends.gif
+usr/share/icinga/images/trendshost.png
+usr/share/icinga/images/trendssvc.png
+usr/share/icinga/images/unknown.png
+usr/share/icinga/images/up.gif
+usr/share/icinga/images/warning.png
+usr/share/icinga/images/warning_triangle.gif
+usr/share/icinga/images/zoom1.gif
+usr/share/icinga/images/zoom2.gif
+usr/share/icinga/index.html
+usr/share/icinga/jquery-ui
+usr/share/icinga/jquery-ui-addon
+usr/share/icinga/jquery-ui-addon/jquery.ui.timepicker-addon.css
+usr/share/icinga/jquery-ui-addon/jquery.ui.timepicker-addon.js
+usr/share/icinga/jquery-ui-addon/jquery.ui.timepicker-addon.min.js
+usr/share/icinga/jquery-ui/themes
+usr/share/icinga/jquery-ui/themes/base
+usr/share/icinga/jquery-ui/themes/base/images
+usr/share/icinga/jquery-ui/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-bg_flat_75_ffffff_40x100.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-bg_glass_75_dadada_1x400.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-icons_222222_256x240.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-icons_2e83ff_256x240.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-icons_454545_256x240.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-icons_888888_256x240.png
+usr/share/icinga/jquery-ui/themes/base/images/ui-icons_cd0a0a_256x240.png
+usr/share/icinga/jquery-ui/themes/base/jquery.ui.all.css
+usr/share/icinga/jquery-ui/themes/base/jquery.ui.base.css
+usr/share/icinga/jquery-ui/themes/base/jquery.ui.button.css
+usr/share/icinga/jquery-ui/themes/base/jquery.ui.core.css
+usr/share/icinga/jquery-ui/themes/base/jquery.ui.datepicker.css
+usr/share/icinga/jquery-ui/themes/base/jquery.ui.slider.css
+usr/share/icinga/jquery-ui/themes/base/jquery.ui.theme.css
+usr/share/icinga/jquery-ui/ui
+usr/share/icinga/jquery-ui/ui/jquery.ui.autocomplete.js
+usr/share/icinga/jquery-ui/ui/jquery.ui.button.js
+usr/share/icinga/jquery-ui/ui/jquery.ui.core.js
+usr/share/icinga/jquery-ui/ui/jquery.ui.datepicker.js
+usr/share/icinga/jquery-ui/ui/jquery.ui.effect-blind.js
+usr/share/icinga/jquery-ui/ui/jquery.ui.effect.js
+usr/share/icinga/jquery-ui/ui/jquery.ui.menu.js
+usr/share/icinga/jquery-ui/ui/jquery.ui.mouse.js
+usr/share/icinga/jquery-ui/ui/jquery.ui.position.js
+usr/share/icinga/jquery-ui/ui/jquery.ui.slider.js
+usr/share/icinga/jquery-ui/ui/jquery.ui.widget.js
+usr/share/icinga/js
+usr/share/icinga/js/autocomplete.js
+usr/share/icinga/js/checkbox_functions.js
+usr/share/icinga/js/common_functions.js
+usr/share/icinga/js/jquery-1.8.0.js
+usr/share/icinga/js/jquery-1.8.0.min.js
+usr/share/icinga/js/jquery.dd.js
+usr/share/icinga/js/jquery.dd.min.js
+usr/share/icinga/js/menu.js
+usr/share/icinga/js/page_refresh.js
+usr/share/icinga/js/skinnytip.js
+usr/share/icinga/js/status_filter_functions.js
+usr/share/icinga/log
+usr/share/icinga/log/.htaccess
+usr/share/icinga/log/index.htm
+usr/share/icinga/main.html
+usr/share/icinga/media
+usr/share/icinga/menu.html
+usr/share/icinga/robots.txt
+usr/share/icinga/ssi
+usr/share/icinga/stylesheets
+usr/share/icinga/stylesheets/avail.css
+usr/share/icinga/stylesheets/checksanity.css
+usr/share/icinga/stylesheets/cmd.css
+usr/share/icinga/stylesheets/common.css
+usr/share/icinga/stylesheets/config.css
+usr/share/icinga/stylesheets/dd.css
+usr/share/icinga/stylesheets/extinfo.css
+usr/share/icinga/stylesheets/histogram.css
+usr/share/icinga/stylesheets/history.css
+usr/share/icinga/stylesheets/menu.css
+usr/share/icinga/stylesheets/notifications.css
+usr/share/icinga/stylesheets/outages.css
+usr/share/icinga/stylesheets/showlog.css
+usr/share/icinga/stylesheets/status.css
+usr/share/icinga/stylesheets/statusmap.css
+usr/share/icinga/stylesheets/summary.css
+usr/share/icinga/stylesheets/tac.css
+usr/share/icinga/stylesheets/tacheader.css
+usr/share/icinga/stylesheets/trends.css
+var/icinga
+var/icinga/archives
+var/icinga/rw
+var/icinga/spool
+var/icinga/spool/checkresults
+var/ipfire/backup/addons/includes/icinga
index 439c21f781d758a59edf7300e83165c2ad34cccd..1b3452140d79e9c2be20ffc9c9a1c57a55a1dc53 100644 (file)
@@ -2,3 +2,4 @@ etc/igmpproxy.conf
 usr/local/sbin/igmpproxy
 #usr/local/share/man/man5/igmpproxy.conf.5
 #usr/local/share/man/man8/igmpproxy.8
+var/ipfire/backup/addons/includes/igmpproxy
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/iptraf-ng b/config/rootfiles/packages/iptraf-ng
new file mode 100644 (file)
index 0000000..4ad3c86
--- /dev/null
@@ -0,0 +1,5 @@
+usr/sbin/iptraf-ng
+usr/sbin/rvnamed-ng
+var/lib/iptraf-ng
+var/lock/iptraf-ng
+var/log/iptraf-ng
diff --git a/config/rootfiles/packages/ipvsadm b/config/rootfiles/packages/ipvsadm
new file mode 100644 (file)
index 0000000..9937a32
--- /dev/null
@@ -0,0 +1 @@
+usr/sbin/ipvsadm
diff --git a/config/rootfiles/packages/keepalived b/config/rootfiles/packages/keepalived
new file mode 100644 (file)
index 0000000..410128b
--- /dev/null
@@ -0,0 +1,37 @@
+#etc/keepalived
+etc/keepalived/keepalived.conf
+etc/keepalived/samples
+#etc/keepalived/samples/client.pem
+#etc/keepalived/samples/dh1024.pem
+#etc/keepalived/samples/keepalived.conf.HTTP_GET.port
+#etc/keepalived/samples/keepalived.conf.IPv6
+#etc/keepalived/samples/keepalived.conf.SMTP_CHECK
+#etc/keepalived/samples/keepalived.conf.SSL_GET
+#etc/keepalived/samples/keepalived.conf.fwmark
+#etc/keepalived/samples/keepalived.conf.inhibit
+#etc/keepalived/samples/keepalived.conf.misc_check
+#etc/keepalived/samples/keepalived.conf.misc_check_arg
+#etc/keepalived/samples/keepalived.conf.quorum
+#etc/keepalived/samples/keepalived.conf.sample
+#etc/keepalived/samples/keepalived.conf.status_code
+#etc/keepalived/samples/keepalived.conf.track_interface
+#etc/keepalived/samples/keepalived.conf.virtual_server_group
+#etc/keepalived/samples/keepalived.conf.virtualhost
+#etc/keepalived/samples/keepalived.conf.vrrp
+#etc/keepalived/samples/keepalived.conf.vrrp.localcheck
+#etc/keepalived/samples/keepalived.conf.vrrp.lvs_syncd
+#etc/keepalived/samples/keepalived.conf.vrrp.routes
+#etc/keepalived/samples/keepalived.conf.vrrp.scripts
+#etc/keepalived/samples/keepalived.conf.vrrp.static_ipaddress
+#etc/keepalived/samples/keepalived.conf.vrrp.sync
+#etc/keepalived/samples/root.pem
+#etc/keepalived/samples/sample.misccheck.smbcheck.sh
+#etc/rc.d/init.d/keepalived
+#etc/sysconfig
+#etc/sysconfig/keepalived
+usr/bin/genhash
+usr/sbin/keepalived
+#usr/share/man/man1/genhash.1
+#usr/share/man/man5/keepalived.conf.5
+#usr/share/man/man8/keepalived.8
+var/ipfire/backup/addons/includes/keepalived
diff --git a/config/rootfiles/packages/lcdproc b/config/rootfiles/packages/lcdproc
new file mode 100644 (file)
index 0000000..8bef5a3
--- /dev/null
@@ -0,0 +1,65 @@
+etc/rc.d/init.d/lcdproc
+etc/rc.d/rc0.d/K40lcdproc
+etc/rc.d/rc3.d/S60lcdproc
+etc/rc.d/rc6.d/K40lcdproc
+#etc/lcdproc
+etc/lcdproc/LCDd.conf
+etc/lcdproc/lcdexec.conf
+etc/lcdproc/lcdproc.conf
+etc/lcdproc/lcdvc.conf
+usr/bin/fortune.pl
+usr/bin/iosock.pl
+usr/bin/lcdexec
+usr/bin/lcdident.pl
+usr/bin/lcdmetar.pl
+usr/bin/lcdproc
+usr/bin/lcdvc
+usr/bin/tail.pl
+usr/bin/x11amp.pl
+usr/lib/lcdproc
+#usr/lib/lcdproc/CFontz.so
+#usr/lib/lcdproc/CFontzPacket.so
+#usr/lib/lcdproc/CwLnx.so
+#usr/lib/lcdproc/EyeboxOne.so
+#usr/lib/lcdproc/IOWarrior.so
+#usr/lib/lcdproc/MD8800.so
+#usr/lib/lcdproc/MtxOrb.so
+#usr/lib/lcdproc/NoritakeVFD.so
+#usr/lib/lcdproc/SureElec.so
+#usr/lib/lcdproc/bayrad.so
+#usr/lib/lcdproc/curses.so
+#usr/lib/lcdproc/ea65.so
+#usr/lib/lcdproc/glcd.so
+#usr/lib/lcdproc/glk.so
+#usr/lib/lcdproc/hd44780.so
+#usr/lib/lcdproc/icp_a106.so
+#usr/lib/lcdproc/imon.so
+#usr/lib/lcdproc/imonlcd.so
+#usr/lib/lcdproc/irtrans.so
+#usr/lib/lcdproc/joy.so
+#usr/lib/lcdproc/lb216.so
+#usr/lib/lcdproc/lcdm001.so
+#usr/lib/lcdproc/lcterm.so
+#usr/lib/lcdproc/ms6931.so
+#usr/lib/lcdproc/mtc_s16209x.so
+#usr/lib/lcdproc/picolcd.so
+#usr/lib/lcdproc/pyramid.so
+#usr/lib/lcdproc/sdeclcd.so
+#usr/lib/lcdproc/sed1330.so
+#usr/lib/lcdproc/sed1520.so
+#usr/lib/lcdproc/serialPOS.so
+#usr/lib/lcdproc/serialVFD.so
+#usr/lib/lcdproc/shuttleVFD.so
+#usr/lib/lcdproc/sli.so
+#usr/lib/lcdproc/stv5730.so
+#usr/lib/lcdproc/t6963.so
+#usr/lib/lcdproc/text.so
+#usr/lib/lcdproc/tyan.so
+#usr/lib/lcdproc/vlsys_m428.so
+usr/sbin/LCDd
+#usr/share/man/man1/lcdexec.1
+#usr/share/man/man1/lcdproc.1
+#usr/share/man/man1/lcdvc.1
+#usr/share/man/man5/lcdproc-config.5
+#usr/share/man/man8/LCDd.8
+var/ipfire/backup/addons/includes/lcdproc
index 5a54f2487aa7fb3b20232911e0c213ba0a9dead3..9b198c2bdfbae9a082f2d3ef3455fb15abd8b6fd 100644 (file)
@@ -3,39 +3,36 @@ boot/System.map-ipfire-pae
 boot/config-KVER-ipfire-pae
 boot/vmlinuz-KVER-ipfire-pae
 boot/vmlinuz-ipfire-pae
+#lib/modules
 lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/build
 #lib/modules/KVER-ipfire-pae/kernel
 #lib/modules/KVER-ipfire-pae/kernel/arch
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/aes-i586.ko
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/aesni-intel.ko
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/crc32c-intel.ko
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/salsa20-i586.ko
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/crc32-pclmul.ko
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/glue_helper.ko
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/serpent-sse2-i586.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/twofish-i586.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/apm.ko
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu/mcheck
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/microcode.ko
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/msr.ko
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/test_nx.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kvm
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kvm/kvm-amd.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kvm/kvm-intel.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kvm/kvm.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/platform
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/platform/scx200
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/platform/scx200/scx200.ko
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/platform/iris
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/platform/iris/iris.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto
-#lib/modules/KVER-ipfire-pae/kernel/crypto/aes_generic.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/af_alg.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/algif_hash.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/algif_skcipher.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/ansi_cprng.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/anubis.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/arc4.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys
+#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/asymmetric_keys.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/public_key.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/rsa.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/asymmetric_keys/x509_key_parser.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx
 #lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_memcpy.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/async_tx/async_pq.ko
@@ -47,27 +44,22 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/crypto/authencesn.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/blowfish_common.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/blowfish_generic.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/camellia.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/cast5.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/cast6.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/cbc.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/camellia_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/cast5_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/cast6_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/cast_common.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/ccm.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/crc32c.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/cryptd.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/crypto_user.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/ctr.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/cmac.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/crypto_null.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/cts.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/deflate.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/des_generic.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/ecb.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/fcrypt.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/gcm.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/gf128mul.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/ghash-generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/khazad.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/lrw.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/lzo.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/md4.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/md5.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/michael_mic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/pcbc.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/pcrypt.ko
@@ -77,11 +69,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/crypto/rmd320.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/salsa20_generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/seed.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/seqiv.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/serpent.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/serpent_generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/sha1_generic.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/sha256_generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/sha512_generic.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/tcrypt.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/tea.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/tgr192.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/twofish_common.ko
@@ -90,32 +81,21 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/crypto/wp512.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/xcbc.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/xor.ko
-#lib/modules/KVER-ipfire-pae/kernel/crypto/xts.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/zlib.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi
-#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/ac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_i2c.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_ipmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_pad.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/battery.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/button.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/container.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/custom_method.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/ec_sys.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/fan.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/pci_slot.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/processor.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/sbs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/sbshc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/thermal.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/video.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/acard-ahci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/ahci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/ahci_platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/ata_generic.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/ata_piix.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/libahci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/libata.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_acpi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_ali.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_amd.ko
@@ -127,7 +107,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_cmd64x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_cs5520.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_cs5530.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_cs5535.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_cs5536.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_cypress.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_efar.ko
@@ -153,6 +132,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_pdc2027x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_pdc202xx_old.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_piccolo.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_radisys.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_rdc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_rz1000.ko
@@ -165,6 +145,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_triflex.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pata_via.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/pdc_adma.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_highbank.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_inic162x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_mv.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_nv.ko
@@ -186,7 +167,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/atm/fore_200e.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/atm/he.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/atm/horizon.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/atm/idt77105.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/atm/idt77252.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/atm/iphase.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/atm/lanai.ko
@@ -198,59 +178,45 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/base
 #lib/modules/KVER-ipfire-pae/kernel/drivers/base/regmap
 #lib/modules/KVER-ipfire-pae/kernel/drivers/base/regmap/regmap-i2c.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/bcma
-#lib/modules/KVER-ipfire-pae/kernel/drivers/bcma/bcma.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/DAC960.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/block/aoe
-#lib/modules/KVER-ipfire-pae/kernel/drivers/block/aoe/aoe.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/cciss.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/cpqarray.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/cryptoloop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/floppy.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/block/nbd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/block/osdblk.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/block/rbd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/block/mtip32xx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/block/mtip32xx/mtip32xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/block/nvme.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/block/rsxx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/block/rsxx/rsxx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/sx8.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/block/umem.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/virtio_blk.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/block/xen-blkback
+#lib/modules/KVER-ipfire-pae/kernel/drivers/block/xen-blkback/xen-blkback.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/block/xen-blkfront.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/ath3k.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bcm203x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bfusb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bluecard_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bpa10x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/bt3c_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btmrvl.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btmrvl_sdio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btsdio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btuart_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btusb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/btwilink.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/dtl1_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/hci_uart.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/bluetooth/hci_vhci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/cdrom
-#lib/modules/KVER-ipfire-pae/kernel/drivers/cdrom/cdrom.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/agpgart.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/ali-agp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/amd-k7-agp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/amd64-agp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/ati-agp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/efficeon-agp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/intel-agp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/intel-gtt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/nvidia-agp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/sis-agp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/sworks-agp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/agp/via-agp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hangcheck-timer.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/amd-rng.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/atmel-rng.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/exynos-rng.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/geode-rng.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/intel-rng.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/rng-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/timeriomem-rng.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/via-rng.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/hw_random/virtio-rng.ko
@@ -265,26 +231,20 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/mwave
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/mwave/mwave.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/nsc_gpio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/nvram.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/pc8736x_gpio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/pcmcia
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/pcmcia/synclink_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/ppdev.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/char/scx200_gpio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/char/sonypi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/char/toshiba.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/clocksource
 #lib/modules/KVER-ipfire-pae/kernel/drivers/clocksource/cs5535-clockevt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/clocksource/scx200_hrt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/connector
-#lib/modules/KVER-ipfire-pae/kernel/drivers/connector/cn.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/acpi-cpufreq.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/amd_freq_sensitivity.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq-nforce2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_conservative.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_ondemand.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_powersave.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_userspace.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/e_powersaver.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_stats.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/gx-suspmod.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/longhaul.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/longrun.ko
@@ -294,61 +254,76 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/powernow-k6.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/powernow-k7.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/powernow-k8.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/speedstep-centrino.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/speedstep-ich.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/speedstep-lib.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/speedstep-smi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto
-#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/geode-aes.ko.off
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/geode-aes.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/padlock-aes.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/padlock-sha.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dca
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dca/dca.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dmatest.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/intel_mid_dma.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw_dmac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma/ioat
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma/ioat/ioatdma.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma/pch_dma.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma/timb_dma.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/e752x_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/edac_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/edac_mce_amd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i3000_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i3200_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i5000_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i5100_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i5400_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i7300_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i7core_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/i82975x_edac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/mce_amd_inj.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/edac/x38_edac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firewire
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firewire/firewire-core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/firewire/firewire-net.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firewire/firewire-ohci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firewire/firewire-sbp2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firmware
-#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/dmi-sysfs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/dcdbas.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/dell_rbu.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/edd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/iscsi_ibft.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/sigma.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-adp5588.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-cs5535.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-generic.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-it8761e.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-janz-ttl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-max7300.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-max730x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-max732x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-mcp23s08.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-ml-ioh.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-pca953x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-pcf857x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-pch.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-rdc321x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-ich.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-sch.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-vx855.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-ts5500.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-viperboard.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ast
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ast/ast.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/cirrus
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/cirrus/cirrus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/drm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/drm_kms_helper.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/drm_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/gma500
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/gma500/gma500_gfx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c/ch7006.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c/sil164.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i2c/tda998x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i810
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i810/i810.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i915
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/i915/i915.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mga
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mga/mga.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mgag200
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/mgag200/mgag200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/nouveau
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/nouveau/nouveau.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/qxl
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/qxl/qxl.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/r128
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/r128/r128.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/radeon
@@ -361,68 +336,51 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/tdfx/tdfx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ttm
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ttm/ttm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/udl
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/udl/udl.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/via
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/via/via.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/vmwgfx
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/stub
-#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/stub/poulsbo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-a4tech.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-apple.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-axff.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-belkin.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-cherry.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-chicony.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-cypress.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-dr.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-elecom.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-ezkey.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-gaff.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-aureal.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-gyration.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-holtekff.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-kensington.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-keytouch.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-kye.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-lcpower.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-lenovo-tpkbd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-logitech-dj.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-logitech.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-magicmouse.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-microsoft.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-monterey.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-multitouch.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-ntrig.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-ortek.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-petalynx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-picolcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-pl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-primax.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-prodikeys.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-quanta.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-arvo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-isku.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-kone.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-koneplus.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-konepure.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-kovaplus.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-lua.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-pyra.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-savu.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-saitek.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-samsung.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-sjoy.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-sony.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-sensor-hub.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-speedlink.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-tmff.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-thingm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-tivo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-topseed.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-twinhan.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-uclogic.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-wacom.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-waltop.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-wiimote.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-zpff.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-zydacron.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/usbhid
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/usbhid/usbhid.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/i2c-hid
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/i2c-hid/i2c-hid.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hsi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hsi/clients
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hsi/clients/hsi_char.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hsi/hsi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hv
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hv/hv_balloon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hv/hv_utils.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hv/hv_vmbus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon
@@ -439,10 +397,12 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adm9240.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ads1015.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ads7828.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adt7410.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adt7411.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adt7462.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adt7470.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adt7475.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/adt7x10.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/amc6821.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/applesmc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/asb100.ko
@@ -454,7 +414,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ds1621.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ds620.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/emc1403.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/emc2103.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/emc6w201.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/f71805f.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/f71882fg.ko
@@ -464,14 +423,14 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/g760a.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/gl518sm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/gl520sm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/gpio-fan.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/hih6130.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/hwmon-vid.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/hwmon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/i5k_amb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ibmaem.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ibmpex.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ina209.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ina2xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/it87.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/jc42.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/k10temp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/k8temp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lineage-pem.ko
@@ -487,6 +446,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm90.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm92.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm93.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm95234.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm95241.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/lm95245.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ltc4151.ko
@@ -496,9 +456,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max16065.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max1619.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max1668.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max197.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6639.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6642.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6650.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/max6697.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/mcp3021.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/nct6775.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ntc_thermistor.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pc87360.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pc87427.ko
@@ -506,7 +470,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/adm1275.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/lm25066.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/ltc2978.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max16064.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max34440.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/max8688.ko
@@ -514,14 +477,12 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/pmbus_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/ucd9000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/ucd9200.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/pmbus/zl6100.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sch5627.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sch5636.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sch56xx-common.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sht15.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sht21.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/sis5595.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/smm665.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/smsc47b397.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/smsc47m1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/smsc47m192.ko
@@ -553,20 +514,17 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-amd756-s4882.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-amd756.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-amd8111.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-cbus-gpio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-designware-core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-designware-pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-designware-platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-eg20t.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-gpio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-i801.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-intel-mid.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-isch.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-ismt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-nforce2-s4985.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-nforce2.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-ocores.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-parport-light.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-parport.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-pca-isa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-pca-platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-piix4.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-scmi.ko
@@ -574,67 +532,55 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-sis5595.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-sis630.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-sis96x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-stub.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-taos-evm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-tiny-usb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-via.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-viapro.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-xiic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-viperboard.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/scx200_acb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/i2c-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/i2c-dev.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/i2c-mux.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/i2c-smbus.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/gpio-i2cmux.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/pca9541.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/pca954x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ieee802154
-#lib/modules/KVER-ipfire-pae/kernel/drivers/ieee802154/fakehard.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common/hid-sensors
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common/hid-sensors/hid-sensor-iio-common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common/hid-sensors/hid-sensor-trigger.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/industrialio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/iio/kfifo_buf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/ff-memless.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/input-polldev.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/adp5588-keys.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/adp5589-keys.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/gpio_keys.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/gpio_keys_polled.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/lkkbd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/lm8323.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/matrix_keypad.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/max7359_keypad.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/mcs_touchkey.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/mpr121_touchkey.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/newtonkbd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/opencores-kbd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/qt1070.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/qt2160.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/stowaway.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/sunkbd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/tca6416-keypad.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/xtkbd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/keyboard/lm8333.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/matrix-keymap.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/ad714x-i2c.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/ad714x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/apanel.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/ati_remote2.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/bma150.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/atlas_btns.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/cm109.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/keyspan_remote.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/pcf50633-input.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/pcf8574_keypad.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/pcspkr.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/powermate.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/retu-pwrbutton.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/rotary_encoder.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/xen-kbdfront.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/uinput.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/yealink.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/appletouch.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/bcm5974.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/cyapa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/psmouse.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/sermouse.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/synaptics_i2c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/synaptics_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/mouse/vsxxxaa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/serio
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/serio/altera_ps2.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/input/serio/ps2mult.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/serio/arc_ps2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/serio/serio_raw.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/sparse-keymap.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/act2000
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/act2000/act2000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/capi
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/capi/capi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/capi/capidrv.ko
@@ -648,14 +594,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/gigaset/usb_gigaset.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/avm
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/avm/avm_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/avm/b1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/avm/b1dma.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/avm/b1isa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/avm/b1pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/avm/b1pcmcia.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/avm/c4.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/avm/t1isa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/avm/t1pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/eicon
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/eicon/diva_idi.ko
@@ -675,77 +617,72 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/mISDN/speedfax.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hardware/mISDN/w6692.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax/avma1_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax/elsa_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax/hfc4s8s_l1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax/hfc_usb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax/hisax.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax/hisax_fcpcipnp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax/hisax_isac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax/hisax_st5481.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax/sedlbauer_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hisax/teles_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hysdn
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/hysdn/hysdn.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/i4l
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/i4l/isdn.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/i4l/isdn_bsdcomp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/i4l/isdnhdlc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/icn
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/icn/icn.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/mISDN
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/mISDN/l1oip.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/mISDN/mISDN_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/pcbit
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/pcbit/pcbit.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/sc
-#lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/sc/sc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/dell-led.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-bd2802.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-blinkm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-clevo-mail.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-gpio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lm3530.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lm3533.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lm355x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lm3642.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp3944.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5521.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5523.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5562.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp55xx-common.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lt3593.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-net48xx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-net5501.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-ot200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca9532.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca955x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-regulator.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca9633.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-ss4200.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-wrap.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/ledtrig-backlight.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/ledtrig-default-on.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/ledtrig-gpio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/ledtrig-heartbeat.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/ledtrig-netdev.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/ledtrig-timer.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/lguest
-#lib/modules/KVER-ipfire-pae/kernel/drivers/lguest/lg.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-tca6507.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-backlight.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-camera.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-default-on.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-gpio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-heartbeat.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-netdev.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-oneshot.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-timer.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger/ledtrig-transient.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/bcache
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/bcache/bcache.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-bio-prison.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-bufio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache-cleaner.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache-mq.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-crypt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-delay.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-flakey.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-log-userspace.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-log.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-mirror.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-mod.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-multipath.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-queue-length.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-raid.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-region-hash.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-round-robin.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-service-time.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-snapshot.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-thin-pool.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-zero.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-verity.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/faulty.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/linear.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/md-mod.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/multipath.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/persistent-data
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/persistent-data/dm-persistent-data.ko
@@ -755,31 +692,272 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/raid456.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/common
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/mc44s803.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/mt20xx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/tda18271.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/tda827x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/tda8290.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/tda9887.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/tea5761.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/tea5767.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/tuner-simple.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/tuner-types.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/tuner-xc2028.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/xc4000.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tuners/xc5000.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb/dvb-core
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb/dvb-core/dvb-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/b2c2
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/b2c2/b2c2-flexcop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/btcx-risc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/cx2341x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/cypress_firmware.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/saa7146
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/saa7146/saa7146.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/saa7146/saa7146_vv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/siano
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/siano/smsdvb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/siano/smsmdtv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/common/tveeprom.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-core
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-core/dvb-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/a8293.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/af9013.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/af9033.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/atbm8830.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/au8522_common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/au8522_dig.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/bcm3510.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx22700.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx22702.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24110.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24113.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24116.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24123.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cxd2820r.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib0070.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib0090.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib3000mb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib3000mc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib7000m.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib7000p.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib8000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dibx000_common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drxd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drxk.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ds3000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dvb-pll.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ec100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6405.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6421.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6423.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/it913x-fe.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/itd1000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ix2505v.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/l64781.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lg2160.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgdt3305.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgdt330x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lgs8gxx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lnbp21.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/lnbp22.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/m88dc2800.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/m88ds3103.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/m88rs2000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mb86a16.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mb86a20s.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mt312.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/mt352.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/nxt200x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/nxt6000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/or51132.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/or51211.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/rtl2830.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/rtl2832.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s5h1409.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s5h1411.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s5h1420.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/s921.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/si21xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/sp8870.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/sp887x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stb0899.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stb6000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stb6100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv0288.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv0297.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv0299.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv0367.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv0900.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv090x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv6110.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/stv6110x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10021.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10023.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10048.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda1004x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10071.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda10086.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda18271c2dd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda665x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda8083.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda8261.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tda826x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ts2020.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/tua6100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ves1820.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ves1x93.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/zl10036.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/zl10039.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/zl10353.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/firewire
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/firewire/firedtv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/adv7170.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/adv7175.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/adv7180.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/bt819.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/bt856.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/bt866.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cs5345.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cs53l32a.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cx25840
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/cx25840/cx25840.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/ir-kbd-i2c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/ks0127.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/m52790.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/msp3400.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/mt9v011.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/ov7670.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa6588.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa7110.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa7115.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa7127.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa717x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa7185.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/imx074.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9m001.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9m111.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9t031.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9t112.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/mt9v022.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/ov2640.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/ov5642.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/ov6650.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/ov772x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/ov9640.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/ov9740.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/rj54n1cb0c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/soc_camera/tw9910.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tda7432.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tda9840.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tea6415c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tea6420.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tvaudio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/tvp5150.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/upd64031a.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/upd64083.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/vp27smpx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/vpx3220.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/wm8739.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/wm8775.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/media.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/b2c2
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/bt878.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/bttv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/dst.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/dst_ca.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/bt8xx/dvb-bt8xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx18
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx18/cx18-alsa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx18/cx18.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx23885
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx23885/altera-ci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx23885/cx23885.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx25821
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx25821/cx25821-alsa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx25821/cx25821.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx88
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx88/cx88-alsa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx88/cx88-blackbird.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx88/cx88-dvb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx88/cx88-vp3054-i2c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx88/cx8800.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx88/cx8802.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/cx88/cx88xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ddbridge
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ddbridge/ddbridge.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/dm1105
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/dm1105/dm1105.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ivtv
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ivtv/ivtv-alsa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ivtv/ivtv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ivtv/ivtvfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/mantis
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/mantis/hopper.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/mantis/mantis.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/mantis/mantis_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/meye
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/meye/meye.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ngene
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ngene/ngene.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pluto2
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pluto2/pluto2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt1
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt1/earth-pt1.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa6752hs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7146
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7146/hexium_gemini.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7146/hexium_orion.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7146/mxb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7164
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7164/saa7164.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget-av.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget-ci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget-patch.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/budget.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran/videocodec.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran/zr36016.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran/zr36050.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran/zr36060.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/zoran/zr36067.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/m2m-deinterlace.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/marvell-ccic
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/sh_veu.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_camera.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/timblogiw.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ati_remote.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ene_ir.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/fintek-cir.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/gpio-ir-recv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/iguanair.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/imon.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-jvc-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-lirc-codec.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-mce_kbd-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-nec-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-rc5-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-rc5-sz-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-rc6-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-sanyo-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ir-sony-decoder.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ite-cir.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-adstech-dvb-t-pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-alink-dtu-m.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-anysee.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-apac-viewcomp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-asus-pc39.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-asus-ps3-100.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-ati-tv-wonder-hd-600.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-ati-x10.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-avermedia-a16d.ko
@@ -803,6 +981,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dm1105-nec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvb-t.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dntv-live-dvbt-pro.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dvbsky.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-em-terratec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-encore-enltv-fm53.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-encore-enltv.ko
@@ -819,13 +998,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-imon-mce.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-imon-pad.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-iodata-bctv7e.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-it913x-v1.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-it913x-v2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-kaiomy.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-kworld-315u.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-kworld-pc150u.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-kworld-plus-tv-analog.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-leadtek-y04g0051.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-lirc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-lme2510.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-manli.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-medion-x10-digitainer.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-medion-x10-or2x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-medion-x10.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-msi-digivox-ii.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-msi-digivox-iii.ko
@@ -849,6 +1033,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-pv951.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-rc6-mce.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-real-audio-220-32-keys.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-reddo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-snapstream-firefly.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
@@ -858,6 +1043,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-slim.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-tevii-nec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-tivo.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand-02.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-total-media-in-hand.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-trekstor.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-tt-1500.ko
@@ -868,12 +1054,203 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-winfast-usbii-deluxe.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-winfast.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/lirc_dev.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/mceusb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/nuvoton-cir.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/rc-core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/video
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/video/ir-kbd-i2c.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/video/v4l2-common.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/video/v4l2-int-device.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/video/videodev.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/rc-loopback.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/redrat3.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/streamzap.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ttusbir.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/winbond-cir.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/e4000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc0011.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc0012.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc0013.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc2580.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/max2165.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mc44s803.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2060.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2063.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt20xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2131.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2266.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mxl5005s.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mxl5007t.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/qt1010.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/r820t.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda18212.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda18218.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda18271.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda827x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda8290.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tda9887.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tua9001.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner-simple.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner-types.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner-xc2028.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/tuner_it913x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/xc4000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/xc5000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/au0828
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/au0828/au0828.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/b2c2
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/b2c2/b2c2-flexcop-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/cpia2
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/cpia2/cpia2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/cx231xx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/cx231xx/cx231xx-alsa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/cx231xx/cx231xx-dvb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/cx231xx/cx231xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-af9015.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-af9035.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-anysee.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-au6610.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-az6007.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ce6230.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-dvbsky.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-ec168.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-gl861.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-it913x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-lmedm04.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-mxl111sf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb-usb-rtl28xxu.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/dvb_usb_v2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/mxl111sf-demod.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb-v2/mxl111sf-tuner.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-a800.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-af9005-remote.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-af9005.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-az6027.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-cinergyT2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-cxusb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dib0700.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dibusb-mc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-digitv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtt200u.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dtv5100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-dw2102.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-friio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-gp8psk.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-m920x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-nova-t-usb2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-opera.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-pctv452e.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-technisat-usb2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-ttusb2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-umt-010.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-vp702x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb-vp7045.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/dvb-usb/dvb-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-dvb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gl860
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gl860/gspca_gl860.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_benq.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_conex.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_cpia1.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_etoms.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_finepix.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_jeilinj.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_jl2005bcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_kinect.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_konica.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_main.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_mars.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_mr97310a.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_nw80x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_ov519.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_ov534.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_ov534_9.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_pac207.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_pac7302.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_pac7311.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_se401.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sn9c2028.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sn9c20x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sonixb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sonixj.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_spca1528.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_spca500.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_spca501.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_spca505.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_spca506.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_spca508.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_spca561.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sq905.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sq905c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sq930x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_stk014.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_stv0680.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_t613.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_topro.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_vicam.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_xirlink_cit.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_zc3xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/m5602
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/m5602/gspca_m5602.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/stv06xx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/stv06xx/gspca_stv06xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/hdpvr
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/hdpvr/hdpvr.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/pvrusb2
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/pvrusb2/pvrusb2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/pwc
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/pwc/pwc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/s2255
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/s2255/s2255drv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/siano
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/siano/smsusb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/sn9c102
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/sn9c102/sn9c102.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stk1160
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stk1160/stk1160.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stkwebcam
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stkwebcam/stkwebcam.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tlg2300
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tlg2300/poseidon.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tm6000
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/tm6000/tm6000.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/ttusb-budget
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/ttusb-dec
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/ttusb-dec/ttusb_dec.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/ttusb-dec/ttusbdecfe.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/usbvision
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/usbvision/usbvision.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/uvc
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/uvc/uvcvideo.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/zr364xx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/zr364xx/zr364xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/tuner.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-int-device.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videodev.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/core
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/core/memstick.ko
@@ -881,6 +1258,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/host
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/host/jmb38x_ms.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/host/r592.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/host/rtsx_pci_ms.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/host/tifm_ms.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/message
 #lib/modules/KVER-ipfire-pae/kernel/drivers/message/fusion
@@ -890,38 +1268,35 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/message/fusion/mptsas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/message/fusion/mptscsih.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/message/fusion/mptspi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o
+#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_block.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_bus.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_config.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_proc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/message/i2o/i2o_scsi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/cs5535-mfd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/htc-pasic3.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/janz-cmodio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/lm3533-core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/lm3533-ctrlbank.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/lpc_ich.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/lpc_sch.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/mfd-core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/pcf50633-adc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/pcf50633-gpio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/pcf50633.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/rdc321x-southbridge.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/retu-mfd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/rtsx_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/sm501.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/timberdale.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/tps6105x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/tps65010.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/tps6507x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/ucb1400_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/viperboard.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/vx855.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/wl1273-core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mfd/wm8400-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/apds9802als.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/apds990x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/bh1770glc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/bh1780gli.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/bmp085.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/c2port
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/c2port/c2port-duramar2150.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/c2port/core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/altera-stapl
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/altera-stapl/altera-stapl.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/bmp085-i2c.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/cb710
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/cb710/cb710.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/cs5535-mfgpt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/ds1682.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/dummy-irq.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/eeprom
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/eeprom/at24.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/eeprom/eeprom.ko
@@ -929,76 +1304,45 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/eeprom/max6875.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/enclosure.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/fsa9480.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/hmc6352.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/hpilo.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/ibmasm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/ibmasm/ibmasm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/ics932s401.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/isl29003.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/isl29020.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/iwmc3200top
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/iwmc3200top/iwmc3200top.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/lis3lv02d
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/lis3lv02d/lis3lv02d.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/lis3lv02d/lis3lv02d_i2c.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/pch_phub.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/ti-st
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/ti-st/st_drv.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/tifm_7xx1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/tifm_core.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/tsl2550.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/misc/vmw_balloon.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/vmw_vmci
+#lib/modules/KVER-ipfire-pae/kernel/drivers/misc/vmw_vmci/vmw_vmci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/card
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/card/mmc_block.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/card/mmc_test.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/card/sdio_uart.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/core
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/core/mmc_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/cb710-mmc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-acpi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pltfm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pxav2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci-pxav3.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdhci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/sdricoh_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/tifm_sd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/ushc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/via-sdmmc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/vub300.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/mmc/host/wbsd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/ar7part.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/chips
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/chips/chipreg.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/lpddr
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/lpddr/lpddr_cmds.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/lpddr/qinfo_probe.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/maps
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/maps/physmap.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/mtd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/mtd_blkdevs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/mtdblock.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/mtdchar.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/nand
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/nand/nand_ecc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/sm_ftl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/tests
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/tests/mtd_nandecctest.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/tests/mtd_oobtest.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/tests/mtd_pagetest.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/tests/mtd_readtest.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/tests/mtd_speedtest.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/tests/mtd_stresstest.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/tests/mtd_subpagetest.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/tests/mtd_torturetest.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/ubi
-#lib/modules/KVER-ipfire-pae/kernel/drivers/mtd/ubi/ubi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/bonding
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/bonding/bonding.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/dummy.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/eql.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/3com
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/3com/3c501.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/3com/3c509.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/3com/3c515.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/3com/3c574_cs.ko
@@ -1006,24 +1350,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/3com/3c59x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/3com/typhoon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/3c503.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/8390.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/8390p.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/ac3200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/axnet_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/e2100.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/es3210.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/hp-plus.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/hp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/lne390.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/ne.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/ne2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/ne2k-pci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/ne3210.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/pcnet_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/smc-mca.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/smc-ultra.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/smc-ultra32.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/8390/wd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/adaptec
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/adaptec/starfire.ko
@@ -1031,12 +1364,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/alteon/acenic.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd/amd8111e.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd/depca.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd/lance.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd/ni65.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd/nmclan_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/amd/pcnet32.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/alx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/alx/alx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/atl1c
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/atl1c/atl1c.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/atheros/atl1e
@@ -1054,6 +1388,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/brocade
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/brocade/bna
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/brocade/bna/bna.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cadence
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cadence/at91_ether.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cadence/macb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/calxeda
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/calxeda/xgmac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/chelsio/cxgb/cxgb.ko
@@ -1069,7 +1408,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cisco/enic
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/cisco/enic/enic.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dec
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dec/ewrk3.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dec/tulip
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dec/tulip/de2104x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dec/tulip/de4x5.ko
@@ -1079,8 +1417,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dec/tulip/winbond-840.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dec/tulip/xircom_cb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dlink
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dlink/de600.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dlink/de620.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dlink/dl2k.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dlink/sundance.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/dnet.ko
@@ -1090,22 +1426,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/ethoc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/fealnx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/fujitsu
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/fujitsu/at1700.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/fujitsu/eth16i.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/fujitsu/fmvj18x_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/hp
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/hp/hp100.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx/3c505.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx/3c507.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx/3c523.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx/3c527.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx/82596.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx/eepro.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx/eexpress.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx/lp486e.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx/ni52.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/i825xx/znet.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/icplus
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/icplus/ipg.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel
@@ -1126,6 +1449,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/jme.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/marvell
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/marvell/mvmdio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/marvell/skge.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/marvell/sky2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/mellanox
@@ -1140,7 +1464,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/myricom/myri10ge
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/myricom/myri10ge/myri10ge.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/natsemi
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/natsemi/ibmlana.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/natsemi/natsemi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/natsemi/ns83820.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/neterion
@@ -1152,9 +1475,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/oki-semi
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/oki-semi/pch_gbe
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/packetengines
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/packetengines/hamachi.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/packetengines/yellowfin.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/netxen
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
@@ -1170,8 +1490,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/8139too.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/atp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/r8169.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/seeq
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/seeq/seeq8005.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sfc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sfc/sfc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/silan
@@ -1199,41 +1517,32 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/via
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/via/via-rhine.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/via/via-velocity.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/wiznet
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/wiznet/w5100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/wiznet/w5300.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/xircom
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/xircom/xirc2ps_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/hyperv
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/hyperv/hv_netvsc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ifb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/imq.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/ali-ircc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/donauboe.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/irda-usb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/irtty-sir.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/kingsun-sir.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/ks959-sir.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/ksdazzle-sir.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/mcs7780.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/nsc-ircc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/sir-dev.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/smsc-ircc2.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/stir4200.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/via-ircc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/vlsi_ir.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/irda/w83977af_ir.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/macvlan.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/macvtap.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/mdio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/mii.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/netconsole.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/amd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/at803x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/bcm87xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/broadcom.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/cicada.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/davicom.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/dp83640.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/et1011c.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/icplus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/lxt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/marvell.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/mdio-bitbang.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/mdio-gpio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/micrel.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/national.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/qsemi.ko
@@ -1251,17 +1560,17 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ppp/pppoe.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ppp/pppox.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ppp/pptp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/sb1000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/slip
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/slip/slhc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/slip/slip.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/sungem_phy.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/tun.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/asix.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/ax88179_178a.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/catc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_eem.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_ether.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_mbim.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_ncm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cdc_subset.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/cx82310_eth.ko
@@ -1269,6 +1578,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/gl620a.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/hso.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/int51x1.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/ipheth.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/kalmia.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/kaweth.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/lg-vl600.ko
@@ -1276,6 +1586,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/net1080.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/pegasus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/plusb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/qmi_wwan.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/r8152.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/rndis_host.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/rtl8150.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/sierra_net.ko
@@ -1287,45 +1599,137 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/virtio_net.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/vmxnet3
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/vmxnet3/vmxnet3.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/c101.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/cosa.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/dlci.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/dscc4.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/farsync.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/hdlc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/hdlc_cisco.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/hdlc_fr.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/hdlc_ppp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/hdlc_raw.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/hdlc_raw_eth.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/hostess_sv11.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/lmc
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/lmc/lmc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/n2.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/pc300too.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/pci200syn.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/sbni.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/sdla.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/sealevel.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/wanxl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wan/z85230.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/vxlan.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/adm8211.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/airo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/airo_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/at76c50x-usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ar5523
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath5k
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/carl9170
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wil6210
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43/b43.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43legacy
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmfmac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmutil
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ray_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ipw2x00/libipw.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwl4965.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlegacy/iwlegacy.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/dvm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/iwlwifi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/mvm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/iwlwifi/mvm/iwlmvm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas/usb8xxx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_tf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_uap
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/libertas_uap/uap8xxx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mac80211_hwsim.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_pcie.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwifiex/mwifiex_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/mwl8k.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/orinoco_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54/p54common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54/p54pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/p54/p54usb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rndis_wlan.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8180
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8187
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8188ee
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8188ee/rtl8188ee.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192c
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192ce
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192cu
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192de
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192se
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl1251
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl1251/wl1251.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl1251/wl1251_sdio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl12xx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl12xx/wl12xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl18xx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl18xx/wl18xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wlcore
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wlcore/wlcore.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/wl3501_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zd1201.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zd1211rw
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/xen-netback
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/xen-netback/xen-netback.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/xen-netfront.ko
@@ -1336,7 +1740,12 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/parport/parport_pc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/parport/parport_serial.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/pci
-#lib/modules/KVER-ipfire-pae/kernel/drivers/pci/pci-stub.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/pci/hotplug
+#lib/modules/KVER-ipfire-pae/kernel/drivers/pci/hotplug/acpiphp_ibm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/pci/pcie
+#lib/modules/KVER-ipfire-pae/kernel/drivers/pci/pcie/aer
+#lib/modules/KVER-ipfire-pae/kernel/drivers/pci/pcie/aer/aer_inject.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/pci/xen-pcifront.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/pcmcia
 #lib/modules/KVER-ipfire-pae/kernel/drivers/pcmcia/i82092.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/pcmcia/i82365.ko
@@ -1350,25 +1759,30 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/acer-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/acerhdf.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/amilo-rfkill.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-laptop.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus_acpi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-nb-wmi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-wmi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/chromeos_laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/classmate-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/compal-laptop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-wmi-aio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-wmi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/eeepc-laptop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/eeepc-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/fujitsu-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/hdaps.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/hp-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/hp_accel.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/ibm_rtl.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/ideapad-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_ips.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_menlow.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_oaktrail.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/msi-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/msi-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/mxm-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/panasonic-laptop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/pvpanic.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/samsung-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/samsung-q10.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/sony-laptop.ko
@@ -1378,14 +1792,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/toshiba_acpi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/toshiba_bluetooth.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/wmi.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/xo15-ebook.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/power
+#lib/modules/KVER-ipfire-pae/kernel/drivers/power/generic-adc-battery.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/pps
 #lib/modules/KVER-ipfire-pae/kernel/drivers/pps/pps_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ptp
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ptp/ptp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/regulator
-#lib/modules/KVER-ipfire-pae/kernel/drivers/regulator/fixed.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/regulator/gpio-regulator.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/ptp/ptp_pch.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-bq32k.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-bq4802.ko
@@ -1396,18 +1809,19 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds1553.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds1672.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds1742.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds2404.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-ds3232.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-em3027.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-fm3130.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-hid-sensor-time.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl12022.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl1208.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m41t80.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m48t35.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m48t59.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m48t86.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-max6900.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-msm6242.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf50633.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8523.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8563.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8583.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rp5c01.ko
@@ -1415,7 +1829,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rv3029c2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rx8025.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-rx8581.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-s35390a.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-stk17ta8.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-v3020.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-x1205.ko
@@ -1426,8 +1839,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/53c700.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/BusLogic.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/NCR53c406a.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/NCR_D700.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/NCR_Q720_mod.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/a100u2w.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/aacraid
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/aacraid/aacraid.ko
@@ -1452,6 +1863,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/bnx2i
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/bnx2i/bnx2i.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ch.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/csiostor
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/csiostor/csiostor.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/cxgbi
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/cxgbi/cxgb3i
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/cxgbi/cxgb3i/cxgb3i.ko
@@ -1460,7 +1873,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/cxgbi/libcxgbi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/dc395x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/device_handler
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/device_handler/scsi_dh.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/device_handler/scsi_dh_alua.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/device_handler/scsi_dh_emc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/device_handler/scsi_dh_hp_sw.ko
@@ -1472,7 +1884,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe/fcoe.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe/libfcoe.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fd_mcs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fdomain.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fnic
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fnic/fnic.ko
@@ -1481,7 +1892,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/gdth.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/hpsa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/hptiop.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ibmmca.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/hv_storvsc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/imm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/in2000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/initio.ko
@@ -1506,6 +1917,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/megaraid/megaraid_sas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt2sas
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt3sas
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mvsas
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mvsas/mvsas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/mvumi.ko
@@ -1513,6 +1926,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/osd
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/osd/libosd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/osd/osd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/osst.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pas16.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pcmcia
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pcmcia/aha152x_cs.ko
@@ -1521,7 +1935,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pcmcia/qlogic_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pcmcia/sym53c500_cs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pm8001
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pm8001/pm8001.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pm8001/pm80xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/pmcraid.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ppa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/qla1280.ko
@@ -1532,18 +1946,15 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/qlogicfas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/qlogicfas408.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/raid_class.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_mod.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_tgt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_fc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_iscsi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_sas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_spi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_transport_srp.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/scsi_wait_scan.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sd_mod.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ses.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sg.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sim710.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sr_mod.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/st.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/stex.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sym53c416.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/sym53c8xx_2
@@ -1551,55 +1962,53 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/t128.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/tmscsim.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/u14-34f.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd-pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ufs/ufshcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/ultrastor.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/virtio_scsi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/vmw_pvscsi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/wd7000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ssb
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ssb/ssb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/echo
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/echo/echo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/et131x
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/et131x/et131x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/hv
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/hv/hv_mouse.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/hv/hv_netvsc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/hv/hv_storvsc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/mei
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/mei/mei.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/phison
-#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/phison/phison.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rts5139
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rts5139/rts5139.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/slicoss
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/slicoss/slicoss.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/usbip-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/usbip-host.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/vhci-hcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_powerclamp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/ipwireless
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/ipwireless/ipwireless.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/cyclades.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/n_gsm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/n_hdlc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/n_r3964.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/nozomi.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/rocket.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250_accent.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250_boca.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250_exar_st16c554.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250_fourport.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250_hub6.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/altera_jtaguart.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/altera_uart.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/mfd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/pch_uart.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/serial_cs.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/timbuart.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/uartlite.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/xilinx_uartps.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250/8250_dw.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/arc_uart.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/jsm
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/jsm/jsm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/rp2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/sccnxp.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/synclink.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/synclink_gt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/synclinkmp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/uio
 #lib/modules/KVER-ipfire-pae/kernel/drivers/uio/uio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/uio/uio_aec.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/uio/uio_cif.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/uio/uio_netx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/uio/uio_pci_generic.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/uio/uio_pdrv.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/uio/uio_pdrv_genirq.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/uio/uio_sercos3.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/atm
@@ -1608,44 +2017,47 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/atm/ueagle-atm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/atm/usbatm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/atm/xusbatm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci13xxx_msm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci13xxx_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/cdc-acm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/cdc-wdm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/usblp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/usbtmc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-exynos.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-omap.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/hwa-hc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/isp116x-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/isp1362-hcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/oxu210hp-hcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/r8a66597-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/sl811-hcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/u132-hcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/ssb-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/whci
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/whci/whci-hcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/xhci-hcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/image
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/image/mdc800.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/image/microtek.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/cypress_cy7c63.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/cytherm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/adutux.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/emi26.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/emi62.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/ezusb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/ftdi-elan.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/iowarrior.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/isight_firmware.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/sisusbvga
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usb3503.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usblcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usbled.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/usbsevseg.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/uss720.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/yurex.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/otg
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/otg/gpio_vbus.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/otg/nop-usb-xceiv.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/mon
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/mon/usbmon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/aircable.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ark3116.ko
@@ -1654,11 +2066,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/cp210x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/cypress_m8.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/digi_acceleport.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/empeg.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/f81232.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ftdi_sio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/funsoft.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/garmin_gps.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/hp4x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/io_edgeport.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/io_ti.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ipaq.ko
@@ -1666,31 +2076,27 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ir-usb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/iuu_phoenix.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/keyspan_pda.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/kl5kusb105.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/mct_u232.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/mos7720.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/mos7840.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/moto_modem.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/opticon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/option.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/oti6858.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/pl2303.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/qcaux.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/qcserial.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/safe_serial.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/quatech2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/siemens_mpi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/sierra.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/spcp8x5.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ssu100.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/symbolserial.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ti_usb_3410_5052.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/usb_wwan.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/usbserial.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/visor.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/vivopay-serial.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/zio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/zte_ev.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/uas.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-alauda.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-cypress.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-datafab.ko
@@ -1704,7 +2110,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-sddr09.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-sddr55.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/ums-usbat.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/storage/usb-storage.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/wusbcore
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/wusbcore/wusb-wa.ko
@@ -1721,53 +2126,38 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/uwb/whci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/vhost
 #lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vhost_net.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vringh.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/arcfb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/arkfb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/aty
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/aty/aty128fb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/aty/atyfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/aty/radeonfb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/adp8860_bl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/adp8870_bl.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/apple_bl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/cr_bllcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/generic_bl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/kb3886_bl.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/lcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/pcf50633-backlight.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/platform_lcd.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/backlight/progear_bl.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/cirrusfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/console
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/console/mdacon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/display
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/display/display.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/fb_ddc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/fb_sys_fops.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode/gx1fb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode/gxfb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/geode/lxfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/i810
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/i810/i810fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/hgafb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/hyperv_fb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/i740fb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/kyro
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/kyro/kyrofb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/macmodes.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/g450_pll.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/i2c-matroxfb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_accel.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_crtc2.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_g450.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_maven.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/metronomefb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/neofb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/nvidia
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/nvidia/nvidiafb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/output.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/pm2fb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/pm3fb.ko
@@ -1776,22 +2166,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/s3fb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/savage
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/savage/savagefb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/sis
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/sis/sisfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/sm501fb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/smscufx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/sstfb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/svgalib.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/syscopyarea.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/sysfillrect.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/tdfxfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/tmiofb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/tridentfb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/video/uvesafb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/udlfb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/vermilion
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/vermilion/crvml.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/vermilion/vmlfb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/vga16fb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/vgastate.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/via
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/via/viafb.ko
@@ -1800,22 +2186,22 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/virtio
 #lib/modules/KVER-ipfire-pae/kernel/drivers/virtio/virtio_balloon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/virtio/virtio_mmio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/virtio/virtio_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/masters
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/masters/ds1wm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/masters/ds2482.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/masters/ds2490.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/masters/matrox_w1.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/masters/w1-gpio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_bq27000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2408.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2413.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2423.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2431.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2433.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2760.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2780.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds2781.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_ds28e04.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_smem.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/slaves/w1_therm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/w1/wire.ko
@@ -1830,9 +2216,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/geodewdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/hpwdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/i6300esb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/iTCO_vendor_support.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/iTCO_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/ib700wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/ibmasr.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/ie6xx_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/it8712f_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/it87_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/machzwd.ko
@@ -1840,6 +2228,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pc87413_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pcwd_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pcwd_usb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/retu_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sbc60xxwdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sbc7240_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sbc8360.ko
@@ -1848,10 +2237,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sc1200wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sc520_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sch311x_wdt.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/scx200_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/smsc37b787_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/softdog.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/sp5100_tco.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/via_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83627hf_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83697hf_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/w83697ug_wdt.ko
@@ -1861,77 +2250,136 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/wdt_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/xen_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen
+#lib/modules/KVER-ipfire-pae/kernel/drivers/xen/tmem.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xen-acpi-processor.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xen-evtchn.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xen-gntalloc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xen-gntdev.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xen-pciback
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xen-pciback/xen-pciback.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xen-privcmd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xenfs
 #lib/modules/KVER-ipfire-pae/kernel/drivers/xen/xenfs/xenfs.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs
-#lib/modules/KVER-ipfire-pae/kernel/fs/autofs4
-#lib/modules/KVER-ipfire-pae/kernel/fs/autofs4/autofs4.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/btrfs
+#lib/modules/KVER-ipfire-pae/kernel/fs/btrfs/btrfs.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/cachefiles
 #lib/modules/KVER-ipfire-pae/kernel/fs/cachefiles/cachefiles.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/cifs
 #lib/modules/KVER-ipfire-pae/kernel/fs/cifs/cifs.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/ecryptfs
-#lib/modules/KVER-ipfire-pae/kernel/fs/ecryptfs/ecryptfs.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/exportfs
-#lib/modules/KVER-ipfire-pae/kernel/fs/exportfs/exportfs.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/configfs
+#lib/modules/KVER-ipfire-pae/kernel/fs/configfs/configfs.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/dlm
+#lib/modules/KVER-ipfire-pae/kernel/fs/dlm/dlm.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/efivarfs
+#lib/modules/KVER-ipfire-pae/kernel/fs/efivarfs/efivarfs.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/exofs
+#lib/modules/KVER-ipfire-pae/kernel/fs/exofs/libore.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/fat
 #lib/modules/KVER-ipfire-pae/kernel/fs/fat/fat.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/fat/msdos.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/fat/vfat.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/fscache
 #lib/modules/KVER-ipfire-pae/kernel/fs/fscache/fscache.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/fuse
 #lib/modules/KVER-ipfire-pae/kernel/fs/fuse/cuse.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/fuse/fuse.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/isofs
-#lib/modules/KVER-ipfire-pae/kernel/fs/isofs/isofs.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/jffs2
-#lib/modules/KVER-ipfire-pae/kernel/fs/jffs2/jffs2.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/jfs
-#lib/modules/KVER-ipfire-pae/kernel/fs/jfs/jfs.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/lockd
 #lib/modules/KVER-ipfire-pae/kernel/fs/lockd/lockd.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/blocklayout
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfs.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfs_layout_nfsv41_files.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfsv2.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfsv3.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/nfsv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/objlayout
+#lib/modules/KVER-ipfire-pae/kernel/fs/nfs/objlayout/objlayoutdriver.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs_common
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfs_common/nfs_acl.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfsd
 #lib/modules/KVER-ipfire-pae/kernel/fs/nfsd/nfsd.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/quota
-#lib/modules/KVER-ipfire-pae/kernel/fs/quota/quota_tree.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/quota/quota_v1.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/quota/quota_v2.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-celtic.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-centeuro.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-croatian.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-cyrillic.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-gaelic.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-greek.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-iceland.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-inuit.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-roman.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-romanian.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/mac-turkish.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp1250.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp1251.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp1255.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp737.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp775.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp850.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp852.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp855.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp857.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp860.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp861.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp862.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp863.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp864.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp865.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp866.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp869.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp874.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp932.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp936.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp949.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_cp950.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_euc-jp.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-1.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-13.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-14.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-15.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-2.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-3.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-4.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-5.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-6.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-7.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_iso8859-9.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_koi8-r.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_koi8-ru.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_koi8-u.ko
+#lib/modules/KVER-ipfire-pae/kernel/fs/nls/nls_utf8.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/reiserfs
 #lib/modules/KVER-ipfire-pae/kernel/fs/reiserfs/reiserfs.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/udf
 #lib/modules/KVER-ipfire-pae/kernel/fs/udf/udf.ko
-#lib/modules/KVER-ipfire-pae/kernel/fs/ufs
-#lib/modules/KVER-ipfire-pae/kernel/fs/ufs/ufs.ko
 #lib/modules/KVER-ipfire-pae/kernel/fs/xfs
 #lib/modules/KVER-ipfire-pae/kernel/fs/xfs/xfs.ko
+#lib/modules/KVER-ipfire-pae/kernel/kernel
+#lib/modules/KVER-ipfire-pae/kernel/kernel/trace
+#lib/modules/KVER-ipfire-pae/kernel/kernel/trace/ring_buffer_benchmark.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib
+#lib/modules/KVER-ipfire-pae/kernel/lib/asn1_decoder.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/cordic.ko
-#lib/modules/KVER-ipfire-pae/kernel/lib/crc-ccitt.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/crc-itu-t.ko
-#lib/modules/KVER-ipfire-pae/kernel/lib/crc-t10dif.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/crc7.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/crc8.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/libcrc32c.ko
+#lib/modules/KVER-ipfire-pae/kernel/lib/mpi
+#lib/modules/KVER-ipfire-pae/kernel/lib/mpi/mpi.ko
+#lib/modules/KVER-ipfire-pae/kernel/lib/oid_registry.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/raid6
 #lib/modules/KVER-ipfire-pae/kernel/lib/raid6/raid6_pq.ko
+#lib/modules/KVER-ipfire-pae/kernel/lib/rbtree_test.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/ts_bm.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/ts_fsm.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/ts_kmp.ko
+#lib/modules/KVER-ipfire-pae/kernel/lib/zlib_deflate
+#lib/modules/KVER-ipfire-pae/kernel/lib/zlib_deflate/zlib_deflate.ko
 #lib/modules/KVER-ipfire-pae/kernel/net
 #lib/modules/KVER-ipfire-pae/kernel/net/802
 #lib/modules/KVER-ipfire-pae/kernel/net/802/garp.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/802/p8022.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/802/psnap.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/802/stp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/8021q
 #lib/modules/KVER-ipfire-pae/kernel/net/8021q/8021q.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/atm
@@ -1952,7 +2400,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/bluetooth/rfcomm
 #lib/modules/KVER-ipfire-pae/kernel/net/bluetooth/rfcomm/rfcomm.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge
-#lib/modules/KVER-ipfire-pae/kernel/net/bridge/bridge.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebt_802_3.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebt_among.ko
@@ -1970,64 +2417,45 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebt_redirect.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebt_snat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebt_stp.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebt_ulog.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebt_vlan.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtable_broute.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtable_filter.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtable_nat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtables.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ceph
-#lib/modules/KVER-ipfire-pae/kernel/net/ceph/libceph.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ieee802154
-#lib/modules/KVER-ipfire-pae/kernel/net/ieee802154/6lowpan.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ieee802154/af_802154.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ieee802154/ieee802154.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/core
+#lib/modules/KVER-ipfire-pae/kernel/net/core/netprio_cgroup.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ah4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/esp4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/gre.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/inet_diag.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ip_gre.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ip_tunnel.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ip_vti.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ipcomp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ipip.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/arp_tables.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/arpt_mangle.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/arptable_filter.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ip_queue.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ip_tables.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_CLUSTERIP.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ECN.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_LOG.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_NETMAP.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_REJECT.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ULOG.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ecn.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_filter.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_mangle.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_nat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_raw.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_amanda.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_ftp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/iptable_security.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_h323.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_irc.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_ipv4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_proto_dccp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_proto_sctp.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_proto_udplite.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_sip.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_bic.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_cubic.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_diag.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_highspeed.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_htcp.ko
@@ -2040,17 +2468,21 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_westwood.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_yeah.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tunnel4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/udp_diag.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/xfrm4_mode_beet.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/xfrm4_mode_transport.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/xfrm4_mode_tunnel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/xfrm4_tunnel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ah6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/esp6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_gre.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_tunnel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ipcomp6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/mip6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6_queue.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6_tables.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_LOG.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_MASQUERADE.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_NPT.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_ah.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_eui64.ko
@@ -2058,12 +2490,14 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_hbh.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_ipv6header.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_mh.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_rpfilter.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_rt.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_filter.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_mangle.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_nat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_raw.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_conntrack_ipv6.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_defrag_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_security.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/sit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/tunnel6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/xfrm6_mode_beet.ko
@@ -2071,31 +2505,45 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/xfrm6_mode_transport.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/xfrm6_mode_tunnel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/xfrm6_tunnel.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/irda
-#lib/modules/KVER-ipfire-pae/kernel/net/irda/ircomm
-#lib/modules/KVER-ipfire-pae/kernel/net/irda/ircomm/ircomm-tty.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/irda/ircomm/ircomm.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/irda/irda.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/irda/irlan
-#lib/modules/KVER-ipfire-pae/kernel/net/irda/irlan/irlan.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/irda/irnet
-#lib/modules/KVER-ipfire-pae/kernel/net/irda/irnet/irnet.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/key
 #lib/modules/KVER-ipfire-pae/kernel/net/key/af_key.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/l2tp
 #lib/modules/KVER-ipfire-pae/kernel/net/l2tp/l2tp_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/l2tp/l2tp_eth.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/l2tp/l2tp_ip.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/l2tp/l2tp_ip6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/l2tp/l2tp_netlink.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/l2tp/l2tp_ppp.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/llc
-#lib/modules/KVER-ipfire-pae/kernel/net/llc/llc.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/mac80211
 #lib/modules/KVER-ipfire-pae/kernel/net/mac80211/mac80211.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_bitmap_ip.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_bitmap_ipmac.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_bitmap_port.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ip.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipport.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipportip.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_net.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_netport.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_list_set.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_dh.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_ftp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_lblc.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_lc.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_nq.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_pe_sip.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_rr.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_sed.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_sh.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_wlc.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs_wrr.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_amanda.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_broadcast.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_ftp.ko
@@ -2112,33 +2560,51 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_sip.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_snmp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_conntrack_tftp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_amanda.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_ftp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_irc.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_proto_dccp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_proto_sctp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_proto_udplite.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_sip.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_tftp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_tproxy_core.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_acct.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_cthelper.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_cttimeout.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_log.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_queue.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/x_tables.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_AUDIT.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_CHECKSUM.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_CLASSIFY.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_CONNSECMARK.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_CT.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_DSCP.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_HL.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_HMARK.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_IDLETIMER.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_IMQ.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_LED.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_LOG.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_NETMAP.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_NFLOG.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_NFQUEUE.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_NOTRACK.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_RATEEST.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_REDIRECT.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_SECMARK.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_TCPMSS.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_TCPOPTSTRIP.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_TEE.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_TPROXY.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_TRACE.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_addrtype.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_bpf.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_cluster.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_comment.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_connbytes.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_connlabel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_connlimit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_connmark.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_conntrack.ko
@@ -2146,18 +2612,20 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_dccp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_devgroup.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_dscp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_ecn.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_esp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_hashlimit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_helper.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_hl.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_iprange.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_ipvs.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_layer7.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_length.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_limit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_mac.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_mark.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_multiport.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_nat.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_nfacct.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_osf.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_owner.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_physdev.ko
@@ -2168,20 +2636,21 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_realm.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_recent.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_sctp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_set.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_socket.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_state.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_statistic.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_string.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_tcpmss.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_tcpudp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_time.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_u32.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netlink
+#lib/modules/KVER-ipfire-pae/kernel/net/netlink/netlink_diag.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/openvswitch
+#lib/modules/KVER-ipfire-pae/kernel/net/openvswitch/openvswitch.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/rfkill
-#lib/modules/KVER-ipfire-pae/kernel/net/rfkill/rfkill-regulator.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/rfkill/rfkill-gpio.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/rfkill/rfkill.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/rxrpc
-#lib/modules/KVER-ipfire-pae/kernel/net/rxrpc/af-rxrpc.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/rxrpc/rxkad.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_csum.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_gact.ko
@@ -2193,6 +2662,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_simple.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_skbedit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_basic.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_cgroup.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_flow.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_fw.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_route.ko
@@ -2201,6 +2671,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_tcindex.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_u32.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/em_cmp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/em_ipset.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/em_meta.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/em_nbyte.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/em_text.ko
@@ -2208,8 +2679,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_atm.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_cbq.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_choke.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_codel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_drr.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_dsmark.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_fq_codel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_gred.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_hfsc.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_htb.ko
@@ -2217,6 +2690,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_mqprio.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_multiq.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_netem.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_pie.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_plug.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_prio.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_qfq.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_red.ko
@@ -2224,11 +2699,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_sfq.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_tbf.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_teql.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sctp
+#lib/modules/KVER-ipfire-pae/kernel/net/sctp/sctp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sunrpc
 #lib/modules/KVER-ipfire-pae/kernel/net/sunrpc/auth_gss
 #lib/modules/KVER-ipfire-pae/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sunrpc/sunrpc.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/unix
+#lib/modules/KVER-ipfire-pae/kernel/net/unix/unix_diag.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock
+#lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock/vmw_vsock_vmci_transport.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/vmw_vsock/vsock.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/wireless
 #lib/modules/KVER-ipfire-pae/kernel/net/wireless/cfg80211.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/wireless/lib80211.ko
@@ -2237,7 +2719,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/wireless/lib80211_crypt_wep.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/xfrm
 #lib/modules/KVER-ipfire-pae/kernel/net/xfrm/xfrm_ipcomp.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/xfrm/xfrm_user.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound
 #lib/modules/KVER-ipfire-pae/kernel/sound/ac97_bus.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/core
@@ -2271,6 +2752,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/drivers/opl4
 #lib/modules/KVER-ipfire-pae/kernel/sound/drivers/opl4/snd-opl4-lib.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/drivers/opl4/snd-opl4-synth.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/drivers/pcsp
+#lib/modules/KVER-ipfire-pae/kernel/sound/drivers/pcsp/snd-pcsp.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/drivers/snd-aloop.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/drivers/snd-dummy.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/drivers/snd-mtpav.ko
@@ -2283,12 +2766,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/firewire
 #lib/modules/KVER-ipfire-pae/kernel/sound/firewire/snd-firewire-lib.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/firewire/snd-firewire-speakers.ko
-#lib/modules/KVER-ipfire-pae/kernel/sound/firewire/snd-isight.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-ak4113.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-ak4114.ko
-#lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-ak4117.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-ak4xxx-adda.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-pt2258.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-tea575x-tuner.ko
@@ -2338,6 +2819,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/isa/snd-adlib.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/isa/snd-als100.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/isa/snd-azt2320.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/isa/snd-cmi8328.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/isa/snd-cmi8330.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/isa/snd-es18xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/isa/snd-opl3sa2.ko
@@ -2358,8 +2840,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/au88x0/snd-au8810.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/au88x0/snd-au8820.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/au88x0/snd-au8830.ko
-#lib/modules/KVER-ipfire-pae/kernel/sound/pci/aw2
-#lib/modules/KVER-ipfire-pae/kernel/sound/pci/aw2/snd-aw2.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/ca0106
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/ca0106/snd-ca0106.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/cs46xx
@@ -2447,7 +2927,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/snd-maestro3.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/snd-rme32.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/snd-rme96.ko
-#lib/modules/KVER-ipfire-pae/kernel/sound/pci/snd-sis7019.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/snd-sonicvibes.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/snd-via82xx-modem.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/snd-via82xx.ko
@@ -2457,11 +2936,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/vx222/snd-vx222.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/ymfpci
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/ymfpci/snd-ymfpci.ko
-#lib/modules/KVER-ipfire-pae/kernel/sound/pcmcia
-#lib/modules/KVER-ipfire-pae/kernel/sound/pcmcia/pdaudiocf
-#lib/modules/KVER-ipfire-pae/kernel/sound/pcmcia/pdaudiocf/snd-pdaudiocf.ko
-#lib/modules/KVER-ipfire-pae/kernel/sound/pcmcia/vx
-#lib/modules/KVER-ipfire-pae/kernel/sound/pcmcia/vx/snd-vxpocket.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/soundcore.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/synth
 #lib/modules/KVER-ipfire-pae/kernel/sound/synth/emux
@@ -2482,17 +2956,12 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/modules.alias
 #lib/modules/KVER-ipfire-pae/modules.alias.bin
 #lib/modules/KVER-ipfire-pae/modules.builtin
-#lib/modules/KVER-ipfire-pae/modules.ccwmap
+#lib/modules/KVER-ipfire-pae/modules.builtin.bin
 #lib/modules/KVER-ipfire-pae/modules.dep
 #lib/modules/KVER-ipfire-pae/modules.dep.bin
-#lib/modules/KVER-ipfire-pae/modules.ieee1394map
-#lib/modules/KVER-ipfire-pae/modules.inputmap
-#lib/modules/KVER-ipfire-pae/modules.isapnpmap
-#lib/modules/KVER-ipfire-pae/modules.ofmap
+#lib/modules/KVER-ipfire-pae/modules.devname
 #lib/modules/KVER-ipfire-pae/modules.order
-#lib/modules/KVER-ipfire-pae/modules.pcimap
-#lib/modules/KVER-ipfire-pae/modules.seriomap
+#lib/modules/KVER-ipfire-pae/modules.softdep
 #lib/modules/KVER-ipfire-pae/modules.symbols
 #lib/modules/KVER-ipfire-pae/modules.symbols.bin
-#lib/modules/KVER-ipfire-pae/modules.usbmap
 #lib/modules/KVER-ipfire-pae/source
diff --git a/config/rootfiles/packages/linux-xen b/config/rootfiles/packages/linux-xen
deleted file mode 100644 (file)
index a05e1e7..0000000
+++ /dev/null
@@ -1,1946 +0,0 @@
-boot/System.map-2.6.32.60-ipfire-xen
-boot/System.map-ipfire-xen
-boot/config-2.6.32.60-ipfire-xen
-boot/vmlinuz-2.6.32.60-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.60-ipfire-xen
-#lib/modules/2.6.32.60-ipfire-xen/build
-#lib/modules/2.6.32.60-ipfire-xen/kernel
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch/x86
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch/x86/crypto
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch/x86/crypto/aes-i586.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch/x86/crypto/crc32c-intel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch/x86/crypto/salsa20-i586.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch/x86/crypto/twofish-i586.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch/x86/kernel
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch/x86/kernel/microcode.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch/x86/kernel/msr.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/arch/x86/kernel/scx200.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/aes_generic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/ansi_cprng.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/anubis.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/arc4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/async_tx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/async_tx/async_memcpy.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/async_tx/async_pq.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/async_tx/async_raid6_recov.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/async_tx/async_tx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/async_tx/async_xor.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/authenc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/blowfish.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/camellia.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/cast5.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/cast6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/cbc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/ccm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/crc32c.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/cryptd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/ctr.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/cts.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/des_generic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/ecb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/fcrypt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/gcm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/gf128mul.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/ghash-generic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/khazad.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/lrw.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/lzo.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/md5.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/michael_mic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/pcbc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/rmd128.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/rmd160.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/rmd256.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/rmd320.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/salsa20_generic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/seed.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/seqiv.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/serpent.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/sha1_generic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/sha256_generic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/sha512_generic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/tea.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/tgr192.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/twofish.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/twofish_common.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/vmac.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/wp512.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/xcbc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/xor.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/xts.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/crypto/zlib.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/ac.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/acpi_pad.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/battery.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/button.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/container.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/fan.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/pci_slot.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/power_meter.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/processor.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/sbs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/sbshc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/thermal.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/acpi/video.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/ahci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/ata_generic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/ata_piix.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/libata.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_acpi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_ali.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_amd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_artop.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_atiixp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_atp867x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_cmd640.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_cmd64x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_cs5520.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_cs5530.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_cs5535.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_cs5536.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_cypress.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_efar.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_hpt366.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_hpt37x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_hpt3x2n.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_hpt3x3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_it8213.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_it821x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_jmicron.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_marvell.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_mpiix.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_netcell.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_ninja32.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_ns87410.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_ns87415.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_oldpiix.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_opti.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_optidma.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_pcmcia.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_pdc2027x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_pdc202xx_old.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_radisys.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_rdc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_rz1000.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_sc1200.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_sch.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_serverworks.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_sil680.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_sis.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_sl82c105.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_triflex.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pata_via.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/pdc_adma.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_inic162x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_mv.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_nv.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_promise.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_qstor.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_sil.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_sil24.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_sis.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_svw.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_sx4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_uli.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_via.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ata/sata_vsc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/ambassador.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/atmtcp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/eni.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/firestream.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/fore_200e.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/he.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/horizon.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/idt77105.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/idt77252.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/iphase.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/lanai.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/nicstar.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/solos-pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/suni.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/uPD98402.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/atm/zatm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block/DAC960.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block/aoe
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block/aoe/aoe.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block/cciss.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block/cpqarray.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block/cryptoloop.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block/floppy.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block/nbd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block/osdblk.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/block/sx8.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/bcm203x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/bfusb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/bluecard_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/bpa10x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/bt3c_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/btmrvl.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/btmrvl_sdio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/btsdio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/btuart_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/btusb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/dtl1_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/hci_uart.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/bluetooth/hci_vhci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/agpgart.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/ali-agp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/amd-k7-agp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/amd64-agp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/ati-agp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/efficeon-agp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/intel-agp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/nvidia-agp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/sis-agp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/sworks-agp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/agp/via-agp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/cs5535_gpio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/hangcheck-timer.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/hw_random
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/hw_random/amd-rng.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/hw_random/geode-rng.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/hw_random/intel-rng.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/hw_random/rng-core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/hw_random/timeriomem-rng.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/hw_random/via-rng.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/i8k.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/ipmi
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/ipmi/ipmi_devintf.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/ipmi/ipmi_msghandler.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/ipmi/ipmi_poweroff.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/ipmi/ipmi_si.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/ipmi/ipmi_watchdog.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/lp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/nozomi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/nsc_gpio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/nvram.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/pc8736x_gpio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/pcmcia
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/pcmcia/ipwireless
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/pcmcia/ipwireless/ipwireless.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/pcmcia/synclink_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/ppdev.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/scx200_gpio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/char/toshiba.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/clocksource
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/clocksource/scx200_hrt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/connector
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/connector/cn.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/crypto
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/crypto/geode-aes.ko.off
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/crypto/hifn_795x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/crypto/padlock-aes.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/crypto/padlock-sha.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/dca
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/dca/dca.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/dma
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/dma/dmatest.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/dma/ioat
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/dma/ioat/ioatdma.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/firewire
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/firewire/firewire-core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/firewire/firewire-net.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/firewire/firewire-ohci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/firewire/firewire-sbp2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/firmware
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/firmware/iscsi_ibft.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/drm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/drm_kms_helper.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/i810
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/i810/i810.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/i830
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/i830/i830.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/i915
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/i915/i915.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/mga
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/mga/mga.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/r128
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/r128/r128.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/radeon
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/radeon/radeon.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/savage
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/savage/savage.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/sis
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/sis/sis.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/tdfx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/tdfx/tdfx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/ttm
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/ttm/ttm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/via
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/gpu/drm/via/via.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-a4tech.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-apple.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-belkin.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-cherry.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-chicony.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-cypress.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-drff.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-ezkey.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-gaff.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-gyration.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-kensington.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-kye.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-logitech.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-microsoft.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-monterey.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-ntrig.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-petalynx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-pl.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-samsung.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-sjoy.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-sony.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-sunplus.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-tmff.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-topseed.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-twinhan.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-wacom.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/hid-zpff.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/usbhid
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hid/usbhid/usbhid.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/abituguru.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/abituguru3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/ad7414.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/ad7418.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/adm1021.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/adm1025.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/adm1026.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/adm1029.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/adm1031.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/adm9240.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/ads7828.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/adt7462.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/adt7470.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/adt7473.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/adt7475.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/applesmc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/asb100.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/asus_atk0110.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/atxp1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/coretemp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/dme1737.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/ds1621.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/f71805f.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/f71882fg.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/f75375s.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/fschmd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/g760a.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/gl518sm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/gl520sm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/hdaps.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/hp_accel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/hwmon-vid.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/hwmon.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/i5k_amb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/ibmaem.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/ibmpex.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/it87.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/k8temp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lis3lv02d.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm63.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm75.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm77.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm78.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm80.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm83.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm85.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm87.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm90.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm92.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm93.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/lm95241.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/ltc4215.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/ltc4245.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/max1619.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/max6650.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/pc87360.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/pc87427.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/pcf8591.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/sis5595.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/smsc47b397.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/smsc47m1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/smsc47m192.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/thmc50.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/tmp401.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/tmp421.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/via686a.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/vt1211.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/vt8231.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/w83627ehf.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/w83627hf.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/w83781d.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/w83791d.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/w83792d.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/w83793.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/w83l785ts.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/w83l786ng.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/wm831x-hwmon.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/hwmon/wm8350-hwmon.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/algos
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/algos/i2c-algo-bit.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/algos/i2c-algo-pca.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-ali1535.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-ali1563.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-ali15x3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-amd756-s4882.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-amd756.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-amd8111.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-i801.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-isch.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-nforce2-s4985.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-nforce2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-ocores.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-parport-light.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-parport.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-pca-platform.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-piix4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-scmi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-simtec.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-sis5595.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-sis630.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-sis96x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-stub.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-tiny-usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-via.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-viapro.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/i2c-voodoo3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/busses/scx200_acb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/chips
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/chips/ds1682.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/chips/tsl2550.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/i2c-core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/i2c/i2c-dev.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ieee802154
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ieee802154/fakehard.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/ff-memless.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/input-polldev.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/keyboard
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/keyboard/adp5588-keys.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/keyboard/lkkbd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/keyboard/lm8323.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/keyboard/max7359_keypad.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/keyboard/newtonkbd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/keyboard/opencores-kbd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/keyboard/stowaway.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/keyboard/sunkbd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/keyboard/xtkbd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/apanel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/ati_remote.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/ati_remote2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/cm109.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/keyspan_remote.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/pcf50633-input.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/pcspkr.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/powermate.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/winbond-cir.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/wm831x-on.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/input/misc/yealink.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/capi
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/capi/capi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/capi/capidrv.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/capi/kernelcapi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/divert
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/divert/dss1_divert.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/gigaset
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/gigaset/bas_gigaset.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/gigaset/gigaset.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/gigaset/ser_gigaset.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/gigaset/usb_gigaset.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/avm
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/avm/avm_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/avm/b1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/avm/b1dma.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/avm/b1pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/avm/b1pcmcia.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/avm/c4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/avm/t1pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/eicon
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/eicon/diva_idi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/eicon/diva_mnt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/eicon/divacapi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/eicon/divadidd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hardware/eicon/divas.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax/avma1_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax/elsa_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax/hfc4s8s_l1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax/hfc_usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax/hisax.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax/hisax_fcpcipnp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax/hisax_isac.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax/hisax_st5481.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax/sedlbauer_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hisax/teles_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hysdn
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/hysdn/hysdn.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/i4l
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/i4l/isdn.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/i4l/isdn_bsdcomp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/isdn/i4l/isdnhdlc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/led-class.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/leds-alix2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/leds-bd2802.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/leds-clevo-mail.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/leds-lp3944.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/leds-net48xx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/leds-pca9532.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/leds-pca955x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/leds-wm831x-status.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/leds-wm8350.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/leds-wrap.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/ledtrig-backlight.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/ledtrig-default-on.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/ledtrig-heartbeat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/ledtrig-netdev.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/leds/ledtrig-timer.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-crypt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-delay.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-log-userspace.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-log.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-mirror.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-mod.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-multipath.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-queue-length.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-region-hash.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-round-robin.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-service-time.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-snapshot.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/dm-zero.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/linear.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/md-mod.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/multipath.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/raid0.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/raid1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/raid10.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/raid456.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/md/raid6_pq.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners/mc44s803.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners/mt20xx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners/tda8290.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners/tda9887.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners/tea5761.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners/tea5767.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners/tuner-simple.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners/tuner-types.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners/tuner-xc2028.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/common/tuners/xc5000.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/dvb
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/dvb/dvb-core
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/dvb/dvb-core/dvb-core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/video
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/video/v4l1-compat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/video/v4l2-common.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/video/v4l2-int-device.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/media/video/videodev.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/memstick
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/memstick/core
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/memstick/core/memstick.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/memstick/core/mspro_block.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/memstick/host
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/memstick/host/jmb38x_ms.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/memstick/host/tifm_ms.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/message
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/message/fusion
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/message/fusion/mptbase.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/message/fusion/mptctl.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/message/fusion/mptfc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/message/fusion/mptsas.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/message/fusion/mptscsih.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/message/fusion/mptspi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/ab3100-core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/ab3100-otp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/htc-pasic3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/mfd-core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/pcf50633-adc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/pcf50633-core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/pcf50633-gpio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/sm501.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/wm831x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/wm8350-i2c.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/wm8350.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mfd/wm8400-core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/c2port
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/c2port/c2port-duramar2150.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/c2port/core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/cb710
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/cb710/cb710.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/eeprom
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/eeprom/at24.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/eeprom/eeprom.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/eeprom/eeprom_93cx6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/eeprom/max6875.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/enclosure.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/hpilo.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/ics932s401.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/isl29003.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/tifm_7xx1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/misc/tifm_core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/card
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/card/mmc_block.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/card/mmc_test.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/card/sdio_uart.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/core
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/core/mmc_core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/host
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/host/cb710-mmc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/host/ricoh_mmc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/host/sdhci-pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/host/sdhci-pltfm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/host/sdhci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/host/sdricoh_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/host/tifm_sd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/host/via-sdmmc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mmc/host/wbsd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/ar7part.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/chips
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/chips/chipreg.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/lpddr
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/lpddr/lpddr_cmds.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/lpddr/qinfo_probe.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/maps
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/maps/physmap.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/mtd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/mtd_blkdevs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/mtdblock.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/mtdchar.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/mtdconcat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/tests
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/tests/mtd_oobtest.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/tests/mtd_pagetest.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/tests/mtd_readtest.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/tests/mtd_speedtest.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/tests/mtd_stresstest.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/tests/mtd_subpagetest.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/tests/mtd_torturetest.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/ubi
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/mtd/ubi/ubi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/3c59x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/8139cp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/8139too.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/8390.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/acenic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/amd8111e.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/atl1c
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/atl1c/atl1c.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/atl1e
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/atl1e/atl1e.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/atlx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/atlx/atl1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/atlx/atl2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/atp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/b44.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/benet
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/benet/be2net.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/bnx2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/bnx2x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/bonding
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/bonding/bonding.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/bsd_comp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/cassini.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/chelsio
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/chelsio/cxgb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/cnic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/cxgb3
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/cxgb3/cxgb3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/de600.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/de620.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/dl2k.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/dnet.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/dummy.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/e100.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/e1000
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/e1000/e1000.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/e1000e
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/e1000e/e1000e.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/enic
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/enic/enic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/epic100.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/eql.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ethoc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/fealnx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/forcedeth.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/hamachi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/hp100.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ifb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/igb
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/igb/igb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/igbvf
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/igbvf/igbvf.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/imq.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ipg.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/ali-ircc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/donauboe.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/irda-usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/irtty-sir.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/kingsun-sir.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/ks959-sir.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/ksdazzle-sir.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/mcs7780.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/nsc-ircc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/sir-dev.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/smsc-ircc2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/stir4200.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/via-ircc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/vlsi_ir.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/irda/w83977af_ir.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ixgb
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ixgb/ixgb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ixgbe
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ixgbe/ixgbe.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/jme.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ks8842.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ks8851_mll.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/macvlan.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/mdio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/mii.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/mlx4
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/mlx4/mlx4_core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/mlx4/mlx4_en.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/myri10ge
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/myri10ge/myri10ge.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/natsemi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ne2k-pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/netxen
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/netxen/netxen_nic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/niu.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ns83820.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pcmcia
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pcmcia/3c574_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pcmcia/3c589_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pcmcia/axnet_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pcmcia/fmvj18x_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pcmcia/nmclan_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pcmcia/pcnet_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pcmcia/smc91c92_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pcmcia/xirc2ps_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pcnet32.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/broadcom.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/cicada.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/davicom.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/et1011c.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/icplus.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/lxt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/marvell.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/mdio-bitbang.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/national.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/qsemi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/realtek.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/smsc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/ste10Xp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/phy/vitesse.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ppp_async.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ppp_deflate.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ppp_generic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ppp_mppe.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/ppp_synctty.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pppoe.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pppol2tp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/pppox.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/qla3xxx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/qlge
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/qlge/qlge.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/r6040.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/r8169.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/s2io.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/sb1000.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/sc92031.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/sis190.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/sis900.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/skge.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/sky2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/slhc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/slip.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/smsc9420.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/starfire.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/sundance.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/sungem.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/sungem_phy.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/sunhme.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tehuti.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tg3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tlan.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tulip
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tulip/de2104x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tulip/de4x5.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tulip/dmfe.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tulip/tulip.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tulip/uli526x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tulip/winbond-840.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tulip/xircom_cb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/tun.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/typhoon.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/asix.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/catc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/cdc-phonet.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/cdc_eem.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/cdc_ether.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/cdc_subset.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/dm9601.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/gl620a.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/hso.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/int51x1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/kaweth.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/mcs7830.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/net1080.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/pegasus.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/plusb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/rndis_host.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/rtl8150.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/smsc95xx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/usbnet.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/usb/zaurus.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/veth.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/via-rhine.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/via-velocity.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/vxge
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/vxge/vxge.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wimax
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wimax/i2400m
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wimax/i2400m/i2400m-sdio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wimax/i2400m/i2400m-usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wimax/i2400m/i2400m.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/adm8211.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/airo.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/airo_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/at76c50x-usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ath
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ath/ar9170
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ath/ar9170/ar9170usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ath/ath.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ath/ath5k
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/atmel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/atmel_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/atmel_pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/b43
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/b43/b43.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/b43legacy
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/hostap
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/hostap/hostap.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/hostap/hostap_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/hostap/hostap_pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/hostap/hostap_plx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ipw2x00
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/ipw2100.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/ipw2200.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ipw2x00/libipw.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/iwlwifi
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/iwlwifi/iwl3945.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/iwlwifi/iwlagn.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/iwlwifi/iwlcore.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/iwmc3200wifi
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/iwmc3200wifi/iwmc3200wifi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/libertas
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/libertas/usb8xxx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/libertas_tf
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/mwl8k.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/orinoco
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_nortel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_plx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/orinoco/orinoco_tmd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/orinoco/spectrum_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/p54
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/p54/p54common.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/p54/p54pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/p54/p54usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/prism54
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/prism54/prism54.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/ray_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rndis_wlan.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rt2x00
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rtl818x
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rtl818x/rtl8180.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/rtl818x/rtl8187.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/wl12xx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/wl12xx/wl1251.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/wl12xx/wl1251_sdio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/wl3501_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/zd1201.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/zd1211rw
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/net/yellowfin.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/parport
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/parport/parport.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/parport/parport_ax88796.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/parport/parport_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/parport/parport_pc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pci
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pci/pci-stub.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pcmcia
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pcmcia/i82092.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pcmcia/pcmcia.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pcmcia/pcmcia_core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pcmcia/pd6729.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pcmcia/rsrc_nonstatic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pcmcia/yenta_socket.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/acer-wmi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/asus-laptop.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/asus_acpi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/compal-laptop.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/dell-wmi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/fujitsu-laptop.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/hp-wmi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/intel_menlow.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/msi-laptop.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/panasonic-laptop.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/sony-laptop.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/tc1100-wmi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/thinkpad_acpi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/topstar-laptop.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/toshiba_acpi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/platform/x86/wmi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/power
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/power/bq27x00_battery.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/power/ds2782_battery.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/power/max17040_battery.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/power/pcf50633-charger.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/power/wm831x_power.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/power/wm8350_power.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pps
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/pps/pps_core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-ab3100.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-bq4802.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-cmos.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-ds1286.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-ds1307.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-ds1374.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-ds1511.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-ds1553.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-ds1672.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-ds1742.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-fm3130.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-isl1208.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-lib.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-m41t80.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-m48t35.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-m48t59.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-m48t86.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-max6900.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-pcf50633.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-pcf8563.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-pcf8583.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-rs5c372.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-rx8025.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-rx8581.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-s35390a.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-stk17ta8.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-test.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-v3020.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-wm831x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-wm8350.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/rtc/rtc-x1205.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/3w-9xxx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/3w-xxxx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/BusLogic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/a100u2w.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/aacraid
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/aacraid/aacraid.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/advansys.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/aic7xxx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/aic7xxx/aic79xx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/aic94xx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/aic94xx/aic94xx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/arcmsr
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/arcmsr/arcmsr.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/atp870u.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/be2iscsi
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/be2iscsi/be2iscsi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/bfa
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/bfa/bfa.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/bnx2i
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/bnx2i/bnx2i.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/ch.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/cxgb3i
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/cxgb3i/cxgb3i.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/dc395x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/device_handler
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/device_handler/scsi_dh.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/device_handler/scsi_dh_alua.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/device_handler/scsi_dh_emc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/device_handler/scsi_dh_hp_sw.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/device_handler/scsi_dh_rdac.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/dmx3191d.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/dpt_i2o.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/eata.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/fcoe
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/fcoe/fcoe.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/fcoe/libfcoe.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/fdomain.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/fnic
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/fnic/fnic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/gdth.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/hptiop.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/imm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/initio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/ipr.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/ips.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/iscsi_tcp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/libfc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/libfc/libfc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/libiscsi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/libiscsi_tcp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/libsas
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/libsas/libsas.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/lpfc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/lpfc/lpfc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/megaraid
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/megaraid.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/megaraid/megaraid_mbox.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/megaraid/megaraid_mm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/megaraid/megaraid_sas.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/mvsas
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/mvsas/mvsas.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/nsp32.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/osd
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/osd/libosd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/osd/osd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/pcmcia
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/pcmcia/aha152x_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/pcmcia/fdomain_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/pcmcia/nsp_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/pcmcia/qlogic_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/pcmcia/sym53c500_cs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/pmcraid.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/ppa.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/qla1280.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/qla2xxx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/qla2xxx/qla2xxx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/qla4xxx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/qla4xxx/qla4xxx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/qlogicfas408.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/scsi_mod.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/scsi_transport_fc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/scsi_transport_iscsi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/scsi_transport_sas.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/scsi_transport_spi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/scsi_transport_srp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/scsi_wait_scan.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/sd_mod.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/ses.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/sg.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/sr_mod.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/stex.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/sym53c8xx_2
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/sym53c8xx_2/sym53c8xx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/scsi/tmscsim.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/serial
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/serial/jsm
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/serial/jsm/jsm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/serial/serial_core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ssb
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/ssb/ssb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/staging
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/staging/et131x
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/staging/et131x/et131x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/staging/slicoss
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/staging/slicoss/slicoss.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uio
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uio/uio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uio/uio_aec.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uio/uio_cif.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uio/uio_pci_generic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uio/uio_pdrv.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uio/uio_pdrv_genirq.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uio/uio_sercos3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uio/uio_smx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/atm
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/atm/cxacru.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/atm/speedtch.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/atm/ueagle-atm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/atm/usbatm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/atm/xusbatm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/class
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/class/cdc-acm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/class/cdc-wdm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/class/usblp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/class/usbtmc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/core
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/core/usbcore.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/ehci-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/hwa-hc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/isp116x-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/isp1362-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/ohci-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/oxu210hp-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/r8a66597-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/sl811-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/u132-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/uhci-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/whci
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/whci/whci-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/host/xhci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/berry_charge.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/cypress_cy7c63.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/cytherm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/emi26.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/emi62.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/ftdi-elan.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/iowarrior.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/isight_firmware.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/sisusbvga
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/sisusbvga/sisusbvga.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/usblcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/usbled.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/usbsevseg.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/uss720.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/misc/vstusb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/otg
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/otg/nop-usb-xceiv.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/aircable.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/ark3116.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/belkin_sa.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/ch341.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/cp210x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/cypress_m8.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/digi_acceleport.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/empeg.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/ftdi_sio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/garmin_gps.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/hp4x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/io_edgeport.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/ipw.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/iuu_phoenix.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/keyspan_pda.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/mct_u232.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/mos7720.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/mos7840.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/moto_modem.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/opticon.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/option.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/oti6858.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/pl2303.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/safe_serial.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/siemens_mpi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/sierra.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/spcp8x5.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/symbolserial.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/ti_usb_3410_5052.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/usbserial.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/serial/whiteheat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/ums-alauda.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/ums-cypress.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/ums-freecom.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/ums-isd200.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/ums-jumpshot.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/ums-karma.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/ums-onetouch.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/ums-sddr09.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/ums-sddr55.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/ums-usbat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/storage/usb-storage.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/wusbcore
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/wusbcore/wusb-wa.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/usb/wusbcore/wusbcore.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/hwa-rc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/i1480
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/i1480/dfu
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/i1480/dfu/i1480-dfu-usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/i1480/i1480-est.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/i1480/i1480u-wlp
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/i1480/i1480u-wlp/i1480u-wlp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/umc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/uwb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/whc-rc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/whci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/wlp
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/uwb/wlp/wlp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/arkfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/aty
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/aty/aty128fb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/aty/atyfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/aty/radeonfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/backlight
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/backlight/cr_bllcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/backlight/generic_bl.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/backlight/kb3886_bl.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/backlight/lcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/backlight/mbp_nvidia_bl.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/backlight/platform_lcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/backlight/progear_bl.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/backlight/wm831x_bl.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/broadsheetfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/cirrusfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/display
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/display/display.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/fb_ddc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/geode
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/geode/gx1fb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/geode/gxfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/geode/lxfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/i810
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/i810/i810fb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/kyro
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/kyro/kyrofb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/macmodes.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox/g450_pll.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox/i2c-matroxfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox/matroxfb_accel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox/matroxfb_crtc2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox/matroxfb_g450.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox/matroxfb_maven.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/mb862xx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/mb862xx/mb862xxfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/metronomefb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/neofb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/nvidia
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/nvidia/nvidiafb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/output.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/pm2fb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/pm3fb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/riva
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/riva/rivafb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/s3fb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/savage
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/savage/savagefb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/sis
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/sis/sisfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/sm501fb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/sstfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/svgalib.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/syscopyarea.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/sysfillrect.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/sysimgblt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/tdfxfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/tmiofb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/tridentfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/uvesafb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/vermilion
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/vermilion/crvml.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/vermilion/vmlfb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/vgastate.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/via
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/via/viafb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/video/vt8623fb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/masters
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/masters/ds2482.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/masters/ds2490.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/masters/matrox_w1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/slaves
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/slaves/w1_bq27000.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/slaves/w1_ds2431.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/slaves/w1_ds2433.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/slaves/w1_ds2760.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/slaves/w1_smem.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/slaves/w1_therm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/w1/wire.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/acquirewdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/advantechwdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/alim1535_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/alim7101_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/cpu5wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/eurotechwdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/hpwdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/i6300esb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/iTCO_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/ib700wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/ibmasr.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/it8712f_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/it87_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/machzwd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/pc87413_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/pcwd_pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/pcwd_usb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/sbc60xxwdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/sbc7240_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/sbc8360.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/sbc_epx_c3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/sbc_fitpc2_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/sc1200wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/sc520_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/sch311x_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/scx200_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/smsc37b787_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/softdog.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/w83627hf_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/w83697hf_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/w83697ug_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/w83877f_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/w83977f_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/wafer5823wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/wdt_pci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/wm831x_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/watchdog/wm8350_wdt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen/blktap2
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen/blktap2/blktap.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen/scsiback
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen/scsiback/xen-scsibk.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen/scsifront
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen/scsifront/xenscsi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen/usbback
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen/usbback/usbbk.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen/usbfront
-#lib/modules/2.6.32.60-ipfire-xen/kernel/drivers/xen/usbfront/xen-hcd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/autofs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/autofs/autofs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/autofs4
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/autofs4/autofs4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/cifs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/cifs/cifs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/ecryptfs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/ecryptfs/ecryptfs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/exportfs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/exportfs/exportfs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/ext2
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/ext2/ext2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/ext3
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/ext3/ext3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/ext4
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/ext4/ext4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/fat
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/fat/fat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/fat/vfat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/fuse
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/fuse/cuse.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/fuse/fuse.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/isofs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/isofs/isofs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/jbd
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/jbd/jbd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/jbd2
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/jbd2/jbd2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/jffs2
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/jffs2/jffs2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/jfs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/jfs/jfs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/lockd
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/lockd/lockd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/mbcache.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/nfs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/nfs/nfs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/nfs_common
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/nfs_common/nfs_acl.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/nfsd
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/nfsd/nfsd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/quota
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/quota/quota_tree.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/quota/quota_v1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/quota/quota_v2.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/reiser4
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/reiser4/reiser4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/reiserfs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/reiserfs/reiserfs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/smbfs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/smbfs/smbfs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/udf
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/udf/udf.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/ufs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/ufs/xfs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/xfs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/fs/xfs/xfs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/crc-ccitt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/crc-itu-t.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/crc-t10dif.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/crc16.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/crc7.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/libcrc32c.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/lzo
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/lzo/lzo_compress.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/lzo/lzo_decompress.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/ts_bm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/ts_fsm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/lib/ts_kmp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/802
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/802/garp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/802/p8022.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/802/psnap.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/802/stp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/8021q
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/8021q/8021q.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/atm
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/atm/atm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/atm/br2684.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/atm/clip.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/atm/pppoatm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/bluetooth.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/bnep
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/bnep/bnep.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/cmtp
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/cmtp/cmtp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/hidp
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/hidp/hidp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/l2cap.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/rfcomm
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/rfcomm/rfcomm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bluetooth/sco.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/bridge.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_802_3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_among.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_arp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_arpreply.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_dnat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_ip.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_ip6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_limit.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_log.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_mark.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_mark_m.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_nflog.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_pkttype.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_redirect.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_snat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_stp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_ulog.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebt_vlan.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebtable_broute.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebtable_filter.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebtable_nat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/bridge/netfilter/ebtables.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ieee802154
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ieee802154/af_802154.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ieee802154/nl802154.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ieee802154/wpan-class.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/ah4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/esp4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/inet_diag.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/ip_gre.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/ipcomp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/ipip.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/arp_tables.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/arpt_mangle.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/arptable_filter.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ip_queue.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ip_tables.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_CLUSTERIP.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_ECN.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_LOG.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_NETMAP.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_REJECT.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_ULOG.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_addrtype.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_ah.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_ecn.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/iptable_filter.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/iptable_mangle.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/iptable_nat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/iptable_raw.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_conntrack_ipv4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_defrag_ipv4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_amanda.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_ftp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_h323.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_irc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_proto_dccp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_proto_sctp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_proto_udplite.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_sip.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/netfilter/nf_nat_tftp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_bic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_cubic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_diag.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_highspeed.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_htcp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_hybla.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_illinois.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_lp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_scalable.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_vegas.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_veno.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_westwood.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tcp_yeah.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/tunnel4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv4/xfrm4_tunnel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/ah6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/esp6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/ip6_tunnel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/ipcomp6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/ipv6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/mip6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6_queue.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6_tables.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_LOG.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_ah.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_eui64.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_frag.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_hbh.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_ipv6header.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_mh.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6t_rt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6table_filter.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6table_mangle.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/ip6table_raw.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/netfilter/nf_conntrack_ipv6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/sit.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/tunnel6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/xfrm6_mode_beet.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/xfrm6_mode_ro.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/xfrm6_mode_transport.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/xfrm6_mode_tunnel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/ipv6/xfrm6_tunnel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/irda
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/irda/ircomm
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/irda/ircomm/ircomm-tty.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/irda/ircomm/ircomm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/irda/irda.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/irda/irlan
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/irda/irlan/irlan.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/irda/irnet
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/irda/irnet/irnet.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/key
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/key/af_key.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/llc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/llc/llc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/mac80211
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/mac80211/mac80211.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/ipvs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/ipvs/ip_vs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_amanda.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_ftp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_h323.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_irc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_netbios_ns.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_netlink.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_pptp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_proto_dccp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_proto_gre.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_proto_sctp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_proto_udplite.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_sane.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_sip.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_conntrack_tftp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nf_tproxy_core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nfnetlink.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nfnetlink_log.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/nfnetlink_queue.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/x_tables.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_CLASSIFY.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_CONNMARK.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_DSCP.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_HL.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_IMQ.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_LED.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_MARK.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_NFLOG.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_NFQUEUE.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_NOTRACK.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_RATEEST.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_TCPMSS.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_TCPOPTSTRIP.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_TPROXY.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_TRACE.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_cluster.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_comment.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_connbytes.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_connlimit.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_connmark.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_conntrack.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_dccp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_dscp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_esp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_hashlimit.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_helper.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_hl.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_iprange.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_layer7.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_length.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_limit.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_mac.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_mark.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_multiport.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_osf.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_owner.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_physdev.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_pkttype.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_policy.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_quota.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_rateest.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_realm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_recent.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_sctp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_socket.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_state.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_statistic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_string.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_tcpmss.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_tcpudp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_time.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/netfilter/xt_u32.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/phonet
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/phonet/phonet.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/phonet/pn_pep.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/rds
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/rds/rds.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/rds/rds_tcp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/rfkill
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/rfkill/rfkill.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/rxrpc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/rxrpc/af-rxrpc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/rxrpc/rxkad.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/act_gact.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/act_ipt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/act_mirred.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/act_nat.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/act_pedit.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/act_police.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/act_skbedit.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/cls_basic.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/cls_flow.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/cls_fw.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/cls_route.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/cls_rsvp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/cls_rsvp6.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/cls_tcindex.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/cls_u32.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/em_cmp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/em_meta.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/em_nbyte.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/em_text.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/em_u32.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_atm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_cbq.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_drr.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_dsmark.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_gred.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_hfsc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_htb.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_ingress.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_multiq.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_netem.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_prio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_red.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_sfq.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_tbf.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sched/sch_teql.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sunrpc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sunrpc/auth_gss
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sunrpc/auth_gss/auth_rpcgss.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/sunrpc/sunrpc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/wimax
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/wimax/wimax.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/wireless
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/wireless/cfg80211.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/wireless/lib80211.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/wireless/lib80211_crypt_ccmp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/wireless/lib80211_crypt_tkip.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/wireless/lib80211_crypt_wep.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/xfrm
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/xfrm/xfrm_ipcomp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/net/xfrm/xfrm_user.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/ac97_bus.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/oss
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/oss/snd-mixer-oss.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/oss/snd-pcm-oss.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/seq
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/seq/oss
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/seq/oss/snd-seq-oss.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/seq/snd-seq-device.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/seq/snd-seq-dummy.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/seq/snd-seq-midi-emul.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/seq/snd-seq-midi-event.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/seq/snd-seq-midi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/seq/snd-seq-virmidi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/seq/snd-seq.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/snd-hwdep.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/snd-page-alloc.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/snd-pcm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/snd-rawmidi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/snd-timer.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/core/snd.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/mpu401
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/mpu401/snd-mpu401-uart.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/mpu401/snd-mpu401.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/opl3
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/opl3/snd-opl3-lib.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/opl3/snd-opl3-synth.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/snd-dummy.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/snd-mtpav.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/snd-mts64.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/snd-portman2x4.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/snd-serial-u16550.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/snd-virmidi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/vx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/drivers/vx/snd-vx-lib.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/i2c
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/i2c/other
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/i2c/other/snd-ak4114.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/i2c/other/snd-ak4117.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/i2c/other/snd-ak4xxx-adda.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/i2c/other/snd-pt2258.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/i2c/snd-cs8427.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/i2c/snd-i2c.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/isa
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/isa/sb
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/isa/sb/snd-sb-common.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/isa/sb/snd-sb16-dsp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ac97
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ac97/snd-ac97-codec.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ali5451
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ali5451/snd-ali5451.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/au88x0
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/au88x0/snd-au8810.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/au88x0/snd-au8820.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/au88x0/snd-au8830.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ca0106
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ca0106/snd-ca0106.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/cs46xx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/cs46xx/snd-cs46xx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/cs5535audio
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/cs5535audio/snd-cs5535audio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ctxfi
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ctxfi/snd-ctxfi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-darla20.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-darla24.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-echo3g.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-gina20.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-gina24.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-indigo.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-indigodj.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-indigodjx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-indigoio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-indigoiox.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-layla20.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-layla24.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-mia.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/echoaudio/snd-mona.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/emu10k1
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/emu10k1/snd-emu10k1-synth.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/emu10k1/snd-emu10k1.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/emu10k1/snd-emu10k1x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-analog.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-atihdmi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-ca0110.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-cirrus.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-cmedia.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-conexant.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-idt.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-intelhdmi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-nvhdmi.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-realtek.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-si3054.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec-via.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-codec.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/hda/snd-hda-intel.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ice1712
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ice1712/snd-ice1712.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ice1712/snd-ice1724.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ice1712/snd-ice17xx-ak4xxx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/korg1212
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/korg1212/snd-korg1212.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/lx6464es
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/lx6464es/snd-lx6464es.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/mixart
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/mixart/snd-mixart.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/nm256
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/nm256/snd-nm256.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/oxygen
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/oxygen/snd-hifier.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/oxygen/snd-oxygen-lib.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/oxygen/snd-oxygen.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/oxygen/snd-virtuoso.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/pcxhr
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/pcxhr/snd-pcxhr.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/riptide
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/riptide/snd-riptide.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/rme9652
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/rme9652/snd-hdsp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/rme9652/snd-hdspm.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/rme9652/snd-rme9652.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-ad1889.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-als300.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-als4000.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-atiixp-modem.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-atiixp.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-bt87x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-cmipci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-cs4281.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-cs5530.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-ens1370.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-ens1371.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-es1938.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-es1968.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-fm801.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-intel8x0.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-intel8x0m.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-maestro3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-rme32.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-rme96.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-sis7019.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-sonicvibes.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-via82xx-modem.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/snd-via82xx.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/trident
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/trident/snd-trident.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/vx222
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/vx222/snd-vx222.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ymfpci
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pci/ymfpci/snd-ymfpci.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pcmcia
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pcmcia/pdaudiocf
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pcmcia/pdaudiocf/snd-pdaudiocf.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pcmcia/vx
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/pcmcia/vx/snd-vxpocket.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-ad73311.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-ak4535.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-ak4642.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-cs4270.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-l3.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-max9877.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-pcm3008.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-spdif.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-ssm2602.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-tlv320aic23.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-tlv320aic3x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-uda134x.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-uda1380.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm-hubs.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8350.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8400.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8510.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8523.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8580.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8728.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8731.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8750.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8753.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8776.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8900.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8903.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8940.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8960.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8961.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8971.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8974.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8988.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8990.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm8993.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/codecs/snd-soc-wm9081.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soc/snd-soc-core.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/soundcore.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/synth
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/synth/emux
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/synth/emux/snd-emux-synth.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/synth/snd-util-mem.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/usb
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/usb/caiaq
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/usb/snd-usb-audio.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/usb/snd-usb-lib.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/usb/usx2y
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/usb/usx2y/snd-usb-us122l.ko
-#lib/modules/2.6.32.60-ipfire-xen/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
-#lib/modules/2.6.32.60-ipfire-xen/modules.alias
-#lib/modules/2.6.32.60-ipfire-xen/modules.alias.bin
-#lib/modules/2.6.32.60-ipfire-xen/modules.ccwmap
-#lib/modules/2.6.32.60-ipfire-xen/modules.dep
-#lib/modules/2.6.32.60-ipfire-xen/modules.dep.bin
-#lib/modules/2.6.32.60-ipfire-xen/modules.ieee1394map
-#lib/modules/2.6.32.60-ipfire-xen/modules.inputmap
-#lib/modules/2.6.32.60-ipfire-xen/modules.isapnpmap
-#lib/modules/2.6.32.60-ipfire-xen/modules.ofmap
-#lib/modules/2.6.32.60-ipfire-xen/modules.order
-#lib/modules/2.6.32.60-ipfire-xen/modules.pcimap
-#lib/modules/2.6.32.60-ipfire-xen/modules.seriomap
-#lib/modules/2.6.32.60-ipfire-xen/modules.symbols
-#lib/modules/2.6.32.60-ipfire-xen/modules.symbols.bin
-#lib/modules/2.6.32.60-ipfire-xen/modules.usbmap
-#lib/modules/2.6.32.60-ipfire-xen/source
index 47109e9afac93670920645ea71203eac0d620e7e..10b5f33af4819771d98a75d9212d4ec12b9e654c 100644 (file)
@@ -1,10 +1,10 @@
 #etc/mc
 etc/mc/edit.indent.rc
 etc/mc/filehighlight.ini
+etc/mc/mc.default.keymap
+etc/mc/mc.emacs.keymap
 etc/mc/mc.ext
 etc/mc/mc.keymap
-etc/mc/mc.keymap.default
-etc/mc/mc.keymap.emacs
 etc/mc/mc.menu
 etc/mc/mc.menu.sr
 etc/mc/mcedit.menu
@@ -110,6 +110,14 @@ usr/share/mc/skins/double-lines.ini
 usr/share/mc/skins/featured.ini
 usr/share/mc/skins/gotar.ini
 usr/share/mc/skins/mc46.ini
+usr/share/mc/skins/modarcon16-defbg.ini
+usr/share/mc/skins/modarcon16.ini
+usr/share/mc/skins/modarcon16root-defbg.ini
+usr/share/mc/skins/modarcon16root.ini
+usr/share/mc/skins/modarin256-defbg.ini
+usr/share/mc/skins/modarin256.ini
+usr/share/mc/skins/modarin256root-defbg.ini
+usr/share/mc/skins/modarin256root.ini
 usr/share/mc/skins/nicedark.ini
 usr/share/mc/skins/sand256.ini
 usr/share/mc/skins/xoria256.ini
@@ -124,6 +132,7 @@ usr/share/mc/syntax/awk.syntax
 usr/share/mc/syntax/c.syntax
 usr/share/mc/syntax/cabal.syntax
 usr/share/mc/syntax/changelog.syntax
+usr/share/mc/syntax/cmake.syntax
 usr/share/mc/syntax/cs.syntax
 usr/share/mc/syntax/css.syntax
 usr/share/mc/syntax/cxx.syntax
@@ -134,6 +143,7 @@ usr/share/mc/syntax/debian-control.syntax
 usr/share/mc/syntax/debian-description.syntax
 usr/share/mc/syntax/debian-sources-list.syntax
 usr/share/mc/syntax/diff.syntax
+usr/share/mc/syntax/dlink.syntax
 usr/share/mc/syntax/dos.syntax
 usr/share/mc/syntax/ebuild.syntax
 usr/share/mc/syntax/eiffel.syntax
@@ -146,10 +156,12 @@ usr/share/mc/syntax/html.syntax
 usr/share/mc/syntax/idl.syntax
 usr/share/mc/syntax/ini.syntax
 usr/share/mc/syntax/j.syntax
+usr/share/mc/syntax/jal.syntax
 usr/share/mc/syntax/java.syntax
 usr/share/mc/syntax/js.syntax
 usr/share/mc/syntax/latex.syntax
 usr/share/mc/syntax/lisp.syntax
+usr/share/mc/syntax/lkr.syntax
 usr/share/mc/syntax/lsm.syntax
 usr/share/mc/syntax/lua.syntax
 usr/share/mc/syntax/m4.syntax
index 1492b8b1c5671d88690e411db497dfcd6e2f2ad5..aa3e5b78b205ab170e5daf3ef3c1021edd34b832 100644 (file)
@@ -1,24 +1,25 @@
 #etc/motion-dist.conf
 etc/motion.conf
 usr/bin/motion
-#usr/share/doc/motion-3.2.11
-#usr/share/doc/motion-3.2.11/CHANGELOG
-#usr/share/doc/motion-3.2.11/COPYING
-#usr/share/doc/motion-3.2.11/CREDITS
-#usr/share/doc/motion-3.2.11/INSTALL
-#usr/share/doc/motion-3.2.11/README
-#usr/share/doc/motion-3.2.11/motion_guide.html
+#usr/share/doc/motion-3.2.12
+#usr/share/doc/motion-3.2.12/CHANGELOG
+#usr/share/doc/motion-3.2.12/COPYING
+#usr/share/doc/motion-3.2.12/CREDITS
+#usr/share/doc/motion-3.2.12/INSTALL
+#usr/share/doc/motion-3.2.12/README
+#usr/share/doc/motion-3.2.12/motion_guide.html
 #usr/share/man/man1/motion.1
-#usr/share/motion-3.2.11
-#usr/share/motion-3.2.11/examples
-#usr/share/motion-3.2.11/examples/motion-dist.conf
-#usr/share/motion-3.2.11/examples/motion.init-Debian
-#usr/share/motion-3.2.11/examples/motion.init-FreeBSD.sh
-#usr/share/motion-3.2.11/examples/motion.init-RH
-#usr/share/motion-3.2.11/examples/thread1.conf
-#usr/share/motion-3.2.11/examples/thread2.conf
-#usr/share/motion-3.2.11/examples/thread3.conf
-#usr/share/motion-3.2.11/examples/thread4.conf
+#usr/share/motion-3.2.12
+#usr/share/motion-3.2.12/examples
+#usr/share/motion-3.2.12/examples/motion-dist.conf
+#usr/share/motion-3.2.12/examples/motion.init-Debian
+#usr/share/motion-3.2.12/examples/motion.init-Fedora
+#usr/share/motion-3.2.12/examples/motion.init-FreeBSD.sh
+#usr/share/motion-3.2.12/examples/motion.init-RH
+#usr/share/motion-3.2.12/examples/thread1.conf
+#usr/share/motion-3.2.12/examples/thread2.conf
+#usr/share/motion-3.2.12/examples/thread3.conf
+#usr/share/motion-3.2.12/examples/thread4.conf
 var/ipfire/backup/addons/includes/motion
 etc/rc.d/init.d/motion
 etc/rc.d/rc0.d/K01motion
diff --git a/config/rootfiles/packages/multicat b/config/rootfiles/packages/multicat
new file mode 100644 (file)
index 0000000..8d06000
--- /dev/null
@@ -0,0 +1,13 @@
+usr/bin/aggregartp
+usr/bin/ingests
+usr/bin/lasts
+usr/bin/multicat
+usr/bin/multicat_validate
+usr/bin/offsets
+usr/bin/reordertp
+#usr/share/man/man1/aggregartp.1
+#usr/share/man/man1/ingests.1
+#usr/share/man/man1/lasts.1
+#usr/share/man/man1/multicat.1
+#usr/share/man/man1/offsets.1
+#usr/share/man/man1/reordertp.1
index d214c08b46f287830682e3c1d2f37156732f5069..0beaca8bd0a58d1b67b67846c72ccf3963fc0354 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
@@ -275,4 +299,5 @@ usr/share/mysql/german/errmsg.sys
 #usr/share/mysql/swedish/errmsg.sys
 #usr/share/mysql/ukrainian
 #usr/share/mysql/ukrainian/errmsg.sys
+var/ipfire/backup/addons/includes/mysql
 var/run/mysql
index f0200cbe308155f76c5f8cd27a5ca44e7dc6b445..971a36061f7c2215973e0c4dad47e6ca6824e2a7 100644 (file)
@@ -34,6 +34,7 @@ usr/lib/nagios
 #usr/lib/nagios/check_file_age
 #usr/lib/nagios/check_flexlm
 #usr/lib/nagios/check_ftp
+#usr/lib/nagios/check_hpjd
 #usr/lib/nagios/check_http
 #usr/lib/nagios/check_icmp
 #usr/lib/nagios/check_ide_smart
@@ -69,6 +70,7 @@ usr/lib/nagios
 #usr/lib/nagios/check_sensors
 #usr/lib/nagios/check_simap
 #usr/lib/nagios/check_smtp
+#usr/lib/nagios/check_snmp
 #usr/lib/nagios/check_spop
 #usr/lib/nagios/check_ssh
 #usr/lib/nagios/check_ssmtp
index 6fa115a2ef1e5593debd2ee970f0167e317f2b2f..666512b5ee49bfa4d6e17b89094d3bcfe09f4e69 100644 (file)
@@ -1,4 +1,3 @@
-etc/rc.d/init.d/nfs-server
 sbin/mount.nfs
 sbin/mount.nfs4
 sbin/osd_login
@@ -37,6 +36,7 @@ usr/sbin/start-statd
 #usr/share/man/man3/nfs4_uid_to_name.3
 #usr/share/man/man5/exports.5
 #usr/share/man/man5/idmapd.conf.5
+#usr/share/man/man5/nfs.5
 #usr/share/man/man7/nfsd.7
 #usr/share/man/man8/exportfs.8
 #usr/share/man/man8/idmapd.8
@@ -64,4 +64,5 @@ var/lib/nfs/sm
 #var/lib/nfs/sm.bak
 var/lib/nfs/state
 var/lib/nfs/xtab
+etc/rc.d/init.d/nfs-server
 var/ipfire/nfs/nfs-server
index 53935f0f21fa19b29d5197177afa44d7bc674589..4e6167e0d6a0fbef39a2c06058da53dd358d9423 100644 (file)
@@ -6,8 +6,10 @@ etc/nut/upsd.users.sample
 etc/nut/upsmon.conf.sample
 etc/nut/upssched.conf.sample
 etc/udev/rules.d/52-nut-usbups.rules
+usr/bin/al175
 usr/bin/apcsmart
 usr/bin/apcsmart-old
+usr/bin/apcupsd-ups
 usr/bin/bcmxcp
 usr/bin/bcmxcp_usb
 usr/bin/belkin
@@ -34,14 +36,18 @@ usr/bin/metasys
 usr/bin/mge-shut
 usr/bin/mge-utalk
 usr/bin/microdowell
-usr/bin/newmge-shut
 usr/bin/nut-scanner
+usr/bin/nutdrv_atcl_usb
+usr/bin/nutdrv_qx
+usr/bin/oldmge-shut
 usr/bin/oneac
 usr/bin/optiups
 usr/bin/powercom
 usr/bin/powerpanel
 usr/bin/rhino
 usr/bin/richcomm_usb
+usr/bin/riello_ser
+usr/bin/riello_usb
 usr/bin/safenet
 usr/bin/skel
 usr/bin/snmp-ups
@@ -52,14 +58,16 @@ usr/bin/tripplitesu
 usr/bin/upsc
 usr/bin/upscmd
 usr/bin/upscode2
-usr/bin/upsdrvctl
 usr/bin/upslog
 usr/bin/upsrw
 usr/bin/upssched-cmd
 usr/bin/usbhid-ups
 usr/bin/victronups
-#usr/cgi-bin
-#usr/html
+#usr/lib/libnutclient.a
+#usr/lib/libnutclient.la
+usr/lib/libnutclient.so
+usr/lib/libnutclient.so.0
+usr/lib/libnutclient.so.0.0.0
 #usr/lib/libnutscan.a
 #usr/lib/libnutscan.la
 usr/lib/libnutscan.so
@@ -68,9 +76,10 @@ usr/lib/libnutscan.so.1.0.0
 #usr/lib/libupsclient.a
 #usr/lib/libupsclient.la
 usr/lib/libupsclient.so
-usr/lib/libupsclient.so.1
-usr/lib/libupsclient.so.1.1.0
+usr/lib/libupsclient.so.4
+usr/lib/libupsclient.so.4.0.0
 usr/sbin/upsd
+usr/sbin/upsdrvctl
 usr/sbin/upsmon
 usr/sbin/upssched
 usr/share/cmdvartab
@@ -81,8 +90,10 @@ usr/share/driver.list
 #usr/share/man/man5/upsd.users.5
 #usr/share/man/man5/upsmon.conf.5
 #usr/share/man/man5/upssched.conf.5
+#usr/share/man/man8/al175.8
 #usr/share/man/man8/apcsmart-old.8
 #usr/share/man/man8/apcsmart.8
+#usr/share/man/man8/apcupsd-ups.8
 #usr/share/man/man8/bcmxcp.8
 #usr/share/man/man8/bcmxcp_usb.8
 #usr/share/man/man8/belkin.8
@@ -91,7 +102,8 @@ usr/share/driver.list
 #usr/share/man/man8/bestfortress.8
 #usr/share/man/man8/bestuferrups.8
 #usr/share/man/man8/bestups.8
-#usr/share/man/man8/blazer.8
+#usr/share/man/man8/blazer_ser.8
+#usr/share/man/man8/blazer_usb.8
 #usr/share/man/man8/clone.8
 #usr/share/man/man8/dummy-ups.8
 #usr/share/man/man8/etapro.8
@@ -107,7 +119,10 @@ usr/share/driver.list
 #usr/share/man/man8/mge-shut.8
 #usr/share/man/man8/mge-utalk.8
 #usr/share/man/man8/microdowell.8
+#usr/share/man/man8/nut-recorder.8
 #usr/share/man/man8/nut-scanner.8
+#usr/share/man/man8/nutdrv_atcl_usb.8
+#usr/share/man/man8/nutdrv_qx.8
 #usr/share/man/man8/nutupsdrv.8
 #usr/share/man/man8/oneac.8
 #usr/share/man/man8/optiups.8
@@ -115,6 +130,8 @@ usr/share/driver.list
 #usr/share/man/man8/powerpanel.8
 #usr/share/man/man8/rhino.8
 #usr/share/man/man8/richcomm_usb.8
+#usr/share/man/man8/riello_ser.8
+#usr/share/man/man8/riello_usb.8
 #usr/share/man/man8/safenet.8
 #usr/share/man/man8/snmp-ups.8
 #usr/share/man/man8/solis.8
diff --git a/config/rootfiles/packages/perl-Carp-Clan b/config/rootfiles/packages/perl-Carp-Clan
new file mode 100644 (file)
index 0000000..8d7b581
--- /dev/null
@@ -0,0 +1,7 @@
+#usr/lib/perl5/site_perl/5.12.3/Carp
+usr/lib/perl5/site_perl/5.12.3/Carp/Clan.pm
+usr/lib/perl5/site_perl/5.12.3/Carp/Clan.pod
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Carp
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Carp/Clan
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Carp/Clan/.packlist
+#usr/share/man/man3/Carp::Clan.3
diff --git a/config/rootfiles/packages/perl-DBD-SQLite b/config/rootfiles/packages/perl-DBD-SQLite
new file mode 100644 (file)
index 0000000..74a1fe6
--- /dev/null
@@ -0,0 +1,15 @@
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/SQLite
+usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/SQLite.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/SQLite/Cookbook.pod
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/DBD/SQLite
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/DBD/SQLite/.packlist
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/DBD/SQLite/SQLite.bs
+usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/DBD/SQLite/SQLite.so
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/share
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/share/dist
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/share/dist/DBD-SQLite
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/share/dist/DBD-SQLite/sqlite3.c
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/share/dist/DBD-SQLite/sqlite3.h
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/share/dist/DBD-SQLite/sqlite3ext.h
+#usr/share/man/man3/DBD::SQLite.3
+#usr/share/man/man3/DBD::SQLite::Cookbook.3
index 188fa18abb19e2c63b5f7774e1dbd8e1e63a5656..735184183ca97b9a3d1e195a65c50ab461d0c668 100644 (file)
@@ -5,7 +5,11 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Bundle/DBI.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/DBM.pm
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/ExampleP.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/File
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/File.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/File/Developers.pod
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/File/HowTo.pod
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/File/Roadmap.pod
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer/Policy
@@ -15,6 +19,7 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer/Policy/pedan
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer/Policy/rush.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer/Transport
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer/Transport/Base.pm
+usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer/Transport/corostream.pm
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer/Transport/null.pm
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer/Transport/pipeone.pm
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBD/Gofer/Transport/stream.pm
@@ -33,6 +38,10 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/Const/GetInfoType.
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/DBD
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/DBD.pm
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/DBD/Metadata.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/DBD/SqlEngine
+usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/DBD/SqlEngine.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/DBD/SqlEngine/Developers.pod
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/DBD/SqlEngine/HowTo.pod
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/FAQ.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/Gofer
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/Gofer/Execute.pm
@@ -54,15 +63,12 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/ProfileDumper/Apac
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/ProfileSubs.pm
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/ProxyServer.pm
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/PurePerl.pm
-usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/Roadmap.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/SQL
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/SQL/Nano.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/Util
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/Util/CacheMemory.pm
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/Util/_accessor.pm
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/DBI/W32ODBC.pm
-#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Roadmap.pod
-#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/TASKS.pod
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Win32
 usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/Win32/DBIODBC.pm
 #usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/DBI
@@ -84,12 +90,16 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/DBI/DBI.so
 #usr/share/man/man3/Bundle::DBI.3
 #usr/share/man/man3/DBD::DBM.3
 #usr/share/man/man3/DBD::File.3
+#usr/share/man/man3/DBD::File::Developers.3
+#usr/share/man/man3/DBD::File::HowTo.3
+#usr/share/man/man3/DBD::File::Roadmap.3
 #usr/share/man/man3/DBD::Gofer.3
 #usr/share/man/man3/DBD::Gofer::Policy::Base.3
 #usr/share/man/man3/DBD::Gofer::Policy::classic.3
 #usr/share/man/man3/DBD::Gofer::Policy::pedantic.3
 #usr/share/man/man3/DBD::Gofer::Policy::rush.3
 #usr/share/man/man3/DBD::Gofer::Transport::Base.3
+#usr/share/man/man3/DBD::Gofer::Transport::corostream.3
 #usr/share/man/man3/DBD::Gofer::Transport::null.3
 #usr/share/man/man3/DBD::Gofer::Transport::pipeone.3
 #usr/share/man/man3/DBD::Gofer::Transport::stream.3
@@ -102,6 +112,9 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/DBI/DBI.so
 #usr/share/man/man3/DBI::Const::GetInfoType.3
 #usr/share/man/man3/DBI::DBD.3
 #usr/share/man/man3/DBI::DBD::Metadata.3
+#usr/share/man/man3/DBI::DBD::SqlEngine.3
+#usr/share/man/man3/DBI::DBD::SqlEngine::Developers.3
+#usr/share/man/man3/DBI::DBD::SqlEngine::HowTo.3
 #usr/share/man/man3/DBI::FAQ.3
 #usr/share/man/man3/DBI::Gofer::Execute.3
 #usr/share/man/man3/DBI::Gofer::Request.3
@@ -122,6 +135,4 @@ usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/DBI/DBI.so
 #usr/share/man/man3/DBI::SQL::Nano.3
 #usr/share/man/man3/DBI::Util::CacheMemory.3
 #usr/share/man/man3/DBI::W32ODBC.3
-#usr/share/man/man3/Roadmap.3
-#usr/share/man/man3/TASKS.3
 #usr/share/man/man3/Win32::DBIODBC.3
diff --git a/config/rootfiles/packages/perl-Date-Calc b/config/rootfiles/packages/perl-Date-Calc
new file mode 100644 (file)
index 0000000..5566d8e
--- /dev/null
@@ -0,0 +1,24 @@
+#usr/lib/perl5/site_perl/5.12.3/Date
+#usr/lib/perl5/site_perl/5.12.3/Date/Calc
+usr/lib/perl5/site_perl/5.12.3/Date/Calc.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Calc.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Calc/Object.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Calc/Object.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Calc/PP.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Calc/PP.pod
+#usr/lib/perl5/site_perl/5.12.3/Date/Calendar
+usr/lib/perl5/site_perl/5.12.3/Date/Calendar.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Calendar.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Calendar/Profiles.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Calendar/Profiles.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Calendar/Year.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Calendar/Year.pod
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Date
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Date/Calc
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Date/Calc/.packlist
+#usr/share/man/man3/Date::Calc.3
+#usr/share/man/man3/Date::Calc::Object.3
+#usr/share/man/man3/Date::Calc::PP.3
+#usr/share/man/man3/Date::Calendar.3
+#usr/share/man/man3/Date::Calendar::Profiles.3
+#usr/share/man/man3/Date::Calendar::Year.3
diff --git a/config/rootfiles/packages/perl-Date-Manip b/config/rootfiles/packages/perl-Date-Manip
new file mode 100644 (file)
index 0000000..52fad4f
--- /dev/null
@@ -0,0 +1,1069 @@
+usr/bin/dm_date
+usr/bin/dm_zdump
+#usr/lib/perl5/site_perl/5.12.3/Date/Manip
+usr/lib/perl5/site_perl/5.12.3/Date/Manip.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Base.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Base.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Calc.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Changes5.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Changes5to6.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Changes6.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Config.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/ConfigFile.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/DM5.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/DM5.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/DM5abbrevs.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/DM6.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/DM6.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Date.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Date.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Delta.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Delta.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Examples.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Holidays.pod
+#usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/catalan.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/catalan.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/danish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/danish.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/dutch.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/dutch.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/english.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/english.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/finnish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/finnish.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/french.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/french.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/german.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/german.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/index.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/italian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/italian.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/norwegian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/norwegian.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/polish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/polish.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/portugue.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/portugue.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/romanian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/romanian.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/russian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/russian.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/spanish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/spanish.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/swedish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/swedish.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/turkish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Lang/turkish.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Migration5to6.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Misc.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Obj.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Obj.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Objects.pod
+#usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off000.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off001.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off002.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off003.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off004.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off005.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off006.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off007.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off008.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off009.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off010.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off011.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off012.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off013.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off014.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off015.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off016.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off017.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off018.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off019.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off020.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off021.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off022.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off023.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off024.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off025.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off026.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off027.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off028.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off029.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off030.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off031.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off032.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off033.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off034.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off035.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off036.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off037.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off038.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off039.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off040.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off041.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off042.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off043.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off044.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off045.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off046.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off047.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off048.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off049.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off050.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off051.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off052.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off053.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off054.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off055.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off056.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off057.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off058.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off059.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off060.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off061.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off062.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off063.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off064.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off065.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off066.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off067.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off068.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off069.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off070.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off071.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off072.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off073.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off074.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off075.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off076.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off077.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off078.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off079.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off080.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off081.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off082.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off083.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off084.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off085.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off086.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off087.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off088.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off089.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off090.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off091.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off092.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off093.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off094.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off095.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off096.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off097.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off098.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off099.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off100.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off101.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off102.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off103.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off104.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off105.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off106.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off107.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off108.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off109.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off110.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off111.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off112.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off113.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off114.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off115.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off116.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off117.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off118.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off119.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off120.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off121.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off122.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off123.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off124.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off125.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off126.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off127.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off128.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off129.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off130.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off131.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off132.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off133.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off134.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off135.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off136.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off137.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off138.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off139.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off140.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off141.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off142.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off143.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off144.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off145.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off146.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off147.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off148.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off149.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off150.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off151.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off152.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off153.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off154.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off155.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off156.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off157.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off158.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off159.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off160.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off161.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off162.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off163.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off164.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off165.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off166.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off167.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off168.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off169.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off170.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off171.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off172.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off173.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off174.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off175.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off176.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off177.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off178.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off179.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off180.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off181.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off182.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off183.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off184.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off185.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off186.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off187.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off188.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off189.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off190.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off191.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off192.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off193.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off194.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off195.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off196.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off197.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off198.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off199.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off200.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off201.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off202.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off203.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off204.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off205.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off206.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off207.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off208.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off209.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off210.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off211.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off212.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off213.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off214.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off215.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off216.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off217.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off218.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off219.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off220.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off221.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off222.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off223.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off224.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off225.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off226.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off227.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off228.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off229.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off230.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off231.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off232.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off233.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off234.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off235.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off236.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off237.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off238.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off239.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off240.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off241.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off242.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off243.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off244.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off245.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off246.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off247.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off248.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off249.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off250.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off251.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off252.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off253.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off254.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off255.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off256.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off257.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off258.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off259.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off260.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off261.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off262.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off263.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off264.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off265.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off266.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off267.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off268.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off269.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off270.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off271.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off272.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off273.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off274.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off275.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off276.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off277.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off278.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off279.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off280.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off281.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off282.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off283.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off284.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off285.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off286.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off287.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off288.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off289.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off290.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off291.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off292.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off293.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off294.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off295.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off296.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off297.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off298.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off299.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off300.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off301.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off302.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off303.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off304.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off305.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off306.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off307.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off308.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off309.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off310.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off311.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off312.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off313.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off314.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off315.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off316.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off317.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off318.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off319.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off320.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off321.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off322.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off323.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off324.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off325.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off326.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off327.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off328.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off329.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off330.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off331.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off332.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off333.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off334.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off335.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off336.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off337.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off338.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off339.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off340.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off341.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off342.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off343.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off344.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off345.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off346.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off347.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off348.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off349.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off350.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off351.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off352.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off353.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off354.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off355.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off356.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off357.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off358.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off359.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off360.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off361.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off362.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off363.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off364.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off365.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off366.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off367.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off368.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off369.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off370.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off371.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off372.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off373.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off374.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off375.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off376.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off377.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off378.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off379.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off380.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off381.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off382.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off383.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off384.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off385.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off386.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off387.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off388.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off389.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off390.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off391.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off392.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off393.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off394.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off395.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off396.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off397.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off398.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off399.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off400.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off401.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off402.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off403.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off404.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off405.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off406.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off407.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off408.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off409.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off410.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off411.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off412.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off413.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off414.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off415.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off416.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off417.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off418.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off419.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off420.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off421.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off422.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off423.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off424.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off425.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off426.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off427.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off428.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off429.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off430.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off431.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off432.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off433.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off434.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off435.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off436.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off437.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off438.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off439.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off440.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off441.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off442.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off443.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off444.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off445.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off446.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off447.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off448.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off449.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off450.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off451.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off452.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off453.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off454.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off455.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off456.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off457.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off458.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off459.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off460.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off461.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off462.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off463.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off464.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off465.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off466.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off467.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off468.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off469.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off470.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off471.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off472.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off473.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off474.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off475.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off476.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off477.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off478.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off479.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off480.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off481.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off482.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off483.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off484.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off485.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off486.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off487.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off488.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Offset/off489.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Problems.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Recur.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Recur.pod
+#usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/a00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afabid00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afaccr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afaddi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afalgi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afasma00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afbama00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afbang00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afbanj00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afbiss00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afblan00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afbraz00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afbuju00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afcair00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afcasa00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afceut00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afcona00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afdaka00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afdar_00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afdjib00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afdoua00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afel_a00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/affree00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afgabo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afhara00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afjoha00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afjuba00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afkamp00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afkhar00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afkiga00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afkins00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aflago00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aflibr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aflome00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afluan00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aflubu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aflusa00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afmala00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afmapu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afmase00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afmbab00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afmoga00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afmonr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afnair00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afndja00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afniam00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afnoua00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afouag00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afport00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afsao_00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aftrip00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aftuni00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/afwind00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amadak00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amanch00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amangu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amanti00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amarag00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amarub00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amasun00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amatik00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ambahi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ambahi01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ambarb00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ambele00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ambeli00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ambeul00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amblan00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amboa_00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ambogo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ambois00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ambuen00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcamb00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcamp00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcanc00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcara00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcata00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcaye00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcaym00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcent00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amchic00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amchih00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcord00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcost00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcres00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcuia00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amcura00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amdanm00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amdaws00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amdaws01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amdenv00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amdetr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amdomi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amedmo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ameiru00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amel_s00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amfort00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amglac00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amgodt00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amgoos00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amgran00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amgren00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amguad00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amguat00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amguay00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amguya00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amhali00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amhava00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amherm00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amindi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aminuv00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amiqal00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amjama00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amjuju00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amjune00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amknox00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amla_p00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amla_r00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amlima00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amlos_00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amloui00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammace00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammana00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammana01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammare00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammart00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammata00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammaza00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammend00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammeno00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammeri00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammetl00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammexi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammiqu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammonc00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammont00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammont01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammont02.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammont03.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ammont04.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amnass00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amnew_00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amnew_01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amnipi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amnome00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amnoro00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amojin00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ampana00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ampang00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ampara00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ampete00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amphoe00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amport00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amport01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amport02.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ampuer00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amrain00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amrank00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amreci00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amregi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amreso00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amrio_00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amrio_01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amsalt00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amsan_00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amsan_01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amsant00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amsant01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amsant02.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amsant03.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amsao_00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amscor00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amsitk00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amst_j00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amst_k00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amst_l00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amst_t00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amst_v00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amswif00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amtegu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amtell00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amthul00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amthun00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amtiju00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amtoro00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amtort00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amtucu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amushu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amvanc00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amveva00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amvinc00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amwhit00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amwina00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amwinn00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amyaku00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/amyell00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ancase00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/andavi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/andumo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/anmacq00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/anmaws00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/anmcmu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/anpalm00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/anroth00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ansyow00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/anvost00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asaden00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asalma00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asamma00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asanad00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asaqta00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asaqto00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asashg00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asbagh00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asbahr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asbaku00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asbang00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asbeir00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asbish00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asbrun00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aschoi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aschon00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ascolo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asdama00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asdhak00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asdili00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asduba00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asdush00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asgaza00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asharb00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ashebr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asho_c00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ashong00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ashovd00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asirku00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asjaka00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asjaya00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asjeru00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askabu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askamc00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askara00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askash00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askath00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askhan00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askolk00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askras00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askual00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askuch00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/askuwa00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asmaca00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asmaga00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asmaka00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asmani00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asmusc00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asnico00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asnovo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asnovo01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asomsk00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asoral00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asphno00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aspont00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aspyon00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asqata00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asqyzy00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asrang00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asriya00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/assakh00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/assama00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asseou00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asshan00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/assing00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/astaip00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/astash00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/astbil00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/astehr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asthim00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/astoky00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asulaa00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asurum00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asustm00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asvien00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asvlad00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asyaku00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asyeka00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/asyere00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/atazor00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/atberm00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/atcana00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/atcape00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/atfaro00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/atmade00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/atreyk00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/atsout00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/atst_h00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/atstan00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/auadel00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aubris00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aubrok00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aucurr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/audarw00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aueucl00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/auhoba00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aulind00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aulord00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aumelb00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/aupert00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ausydn00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/b00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/c00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/cet00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/d00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/e00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eet00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmt00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm02.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm03.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm04.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm05.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm06.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm07.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm08.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm09.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm10.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm11.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm12.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtm13.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp01.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp02.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp03.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp04.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp05.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp06.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp07.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp08.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp09.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp10.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/etgmtp11.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euamst00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euando00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euathe00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eubelg00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euberl00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eubrus00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eubuch00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eubuda00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euchis00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eucope00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eudubl00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eugibr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euhels00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euista00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eukali00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eukiev00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eulisb00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eulond00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euluxe00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eumadr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eumalt00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eumins00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eumona00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eumosc00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euoslo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eupari00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euprag00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euriga00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eurome00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eusama00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eusimf00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eusofi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eustoc00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eutall00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/eutira00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euuzhg00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euvadu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euvien00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euviln00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euvolg00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euwars00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euzapo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/euzuri00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/f00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/g00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/h00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/i00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/inanta00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/inchag00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/inchri00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/incoco00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/incomo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/inkerg00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/inmahe00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/inmald00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/inmaur00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/inmayo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/inreun00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/k00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/l00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/m00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/met00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/n00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/o00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/p00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/paapia00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/paauck00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pachat00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pachuu00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/paeast00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/paefat00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/paende00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pafaka00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pafiji00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pafuna00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pagala00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pagamb00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/paguad00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/paguam00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pahono00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pakiri00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pakosr00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pakwaj00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pamaju00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pamarq00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pamidw00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/panaur00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/paniue00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/panorf00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/panoum00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/papago00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/papala00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/papitc00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/papohn00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/paport00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pararo00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pasaip00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/patahi00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/patara00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/patong00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pawake00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/pawall00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/q00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/r00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/s00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/t00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/u00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/ut00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/utc00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/v00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/w00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/wet00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/x00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/y00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ/z00.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ_Base.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZ_Base.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZdata.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/TZdata.pod
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Zones.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Manip/Zones.pod
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Date/Manip
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/Date/Manip/.packlist
+#usr/share/man/man1/dm_date.1
+#usr/share/man/man1/dm_zdump.1
+#usr/share/man/man3/Date::Manip.3
+#usr/share/man/man3/Date::Manip::Base.3
+#usr/share/man/man3/Date::Manip::Calc.3
+#usr/share/man/man3/Date::Manip::Changes5.3
+#usr/share/man/man3/Date::Manip::Changes5to6.3
+#usr/share/man/man3/Date::Manip::Changes6.3
+#usr/share/man/man3/Date::Manip::Config.3
+#usr/share/man/man3/Date::Manip::ConfigFile.3
+#usr/share/man/man3/Date::Manip::DM5.3
+#usr/share/man/man3/Date::Manip::DM5abbrevs.3
+#usr/share/man/man3/Date::Manip::DM6.3
+#usr/share/man/man3/Date::Manip::Date.3
+#usr/share/man/man3/Date::Manip::Delta.3
+#usr/share/man/man3/Date::Manip::Examples.3
+#usr/share/man/man3/Date::Manip::Holidays.3
+#usr/share/man/man3/Date::Manip::Lang.3
+#usr/share/man/man3/Date::Manip::Lang::catalan.3
+#usr/share/man/man3/Date::Manip::Lang::danish.3
+#usr/share/man/man3/Date::Manip::Lang::dutch.3
+#usr/share/man/man3/Date::Manip::Lang::english.3
+#usr/share/man/man3/Date::Manip::Lang::finnish.3
+#usr/share/man/man3/Date::Manip::Lang::french.3
+#usr/share/man/man3/Date::Manip::Lang::german.3
+#usr/share/man/man3/Date::Manip::Lang::index.3
+#usr/share/man/man3/Date::Manip::Lang::italian.3
+#usr/share/man/man3/Date::Manip::Lang::norwegian.3
+#usr/share/man/man3/Date::Manip::Lang::polish.3
+#usr/share/man/man3/Date::Manip::Lang::portugue.3
+#usr/share/man/man3/Date::Manip::Lang::romanian.3
+#usr/share/man/man3/Date::Manip::Lang::russian.3
+#usr/share/man/man3/Date::Manip::Lang::spanish.3
+#usr/share/man/man3/Date::Manip::Lang::swedish.3
+#usr/share/man/man3/Date::Manip::Lang::turkish.3
+#usr/share/man/man3/Date::Manip::Migration5to6.3
+#usr/share/man/man3/Date::Manip::Misc.3
+#usr/share/man/man3/Date::Manip::Obj.3
+#usr/share/man/man3/Date::Manip::Objects.3
+#usr/share/man/man3/Date::Manip::Problems.3
+#usr/share/man/man3/Date::Manip::Recur.3
+#usr/share/man/man3/Date::Manip::TZ.3
+#usr/share/man/man3/Date::Manip::TZ_Base.3
+#usr/share/man/man3/Date::Manip::TZdata.3
+#usr/share/man/man3/Date::Manip::Zones.3
diff --git a/config/rootfiles/packages/perl-File-ReadBackwards b/config/rootfiles/packages/perl-File-ReadBackwards
new file mode 100644 (file)
index 0000000..5985ef0
--- /dev/null
@@ -0,0 +1,5 @@
+usr/lib/perl5/site_perl/5.12.3/File/ReadBackwards.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/File
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/File/ReadBackwards
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/File/ReadBackwards/.packlist
+#usr/share/man/man3/File::ReadBackwards.3
diff --git a/config/rootfiles/packages/perl-File-Tail b/config/rootfiles/packages/perl-File-Tail
new file mode 100644 (file)
index 0000000..49d6223
--- /dev/null
@@ -0,0 +1,6 @@
+#usr/lib/perl5/site_perl/5.12.3/File
+usr/lib/perl5/site_perl/5.12.3/File/Tail.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/File
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/File/Tail
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/File/Tail/.packlist
+#usr/share/man/man3/File::Tail.3
diff --git a/config/rootfiles/packages/perl-TimeDate b/config/rootfiles/packages/perl-TimeDate
new file mode 100644 (file)
index 0000000..9256e36
--- /dev/null
@@ -0,0 +1,45 @@
+usr/lib/perl5/site_perl/5.12.3/Date/Format.pm
+#usr/lib/perl5/site_perl/5.12.3/Date/Language
+usr/lib/perl5/site_perl/5.12.3/Date/Language.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Afar.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Amharic.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Austrian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Brazilian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Chinese.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Chinese_GB.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Czech.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Danish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Dutch.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/English.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Finnish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/French.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Gedeo.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/German.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Greek.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Hungarian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Icelandic.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Italian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Norwegian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Oromo.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Romanian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Russian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Russian_cp1251.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Russian_koi8r.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Sidama.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Somali.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Spanish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Swedish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Tigrinya.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/TigrinyaEritrean.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/TigrinyaEthiopian.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Language/Turkish.pm
+usr/lib/perl5/site_perl/5.12.3/Date/Parse.pm
+#usr/lib/perl5/site_perl/5.12.3/Time
+usr/lib/perl5/site_perl/5.12.3/Time/Zone.pm
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/TimeDate
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/TimeDate/.packlist
+#usr/share/man/man3/Date::Format.3
+#usr/share/man/man3/Date::Language.3
+#usr/share/man/man3/Date::Language::Hungarian.3
+#usr/share/man/man3/Date::Parse.3
+#usr/share/man/man3/Time::Zone.3
index b01832e7c2b06028e6816ac8b4483be977b39727..c347bb8a3b84ee0e4264c17c3d22e37594c3a956 100644 (file)
@@ -17,6 +17,7 @@ etc/postfix/mysql-virtual.cf
 etc/postfix/relocated
 etc/postfix/transport
 etc/postfix/virtual
+etc/rc.d/init.d/postfix
 usr/bin/mailq
 usr/bin/newaliases
 #usr/lib/postfix
@@ -24,6 +25,7 @@ usr/lib/postfix/anvil
 usr/lib/postfix/bounce
 usr/lib/postfix/cleanup
 usr/lib/postfix/discard
+usr/lib/postfix/dnsblog
 usr/lib/postfix/error
 usr/lib/postfix/flush
 usr/lib/postfix/lmtp
@@ -40,6 +42,7 @@ usr/lib/postfix/postfix-files
 usr/lib/postfix/postfix-script
 usr/lib/postfix/postfix-wrapper
 usr/lib/postfix/postmulti-script
+usr/lib/postfix/postscreen
 usr/lib/postfix/proxymap
 usr/lib/postfix/qmgr
 usr/lib/postfix/qmqpd
@@ -49,6 +52,7 @@ usr/lib/postfix/smtp
 usr/lib/postfix/smtpd
 usr/lib/postfix/spawn
 usr/lib/postfix/tlsmgr
+usr/lib/postfix/tlsproxy
 usr/lib/postfix/trivial-rewrite
 usr/lib/postfix/verify
 usr/lib/postfix/virtual
@@ -90,6 +94,7 @@ usr/sbin/sendmail
 #usr/share/man/man5/header_checks.5
 #usr/share/man/man5/ldap_table.5
 #usr/share/man/man5/master.5
+#usr/share/man/man5/memcache_table.5
 #usr/share/man/man5/mysql_table.5
 #usr/share/man/man5/nisplus_table.5
 #usr/share/man/man5/pcre_table.5
@@ -98,6 +103,7 @@ usr/sbin/sendmail
 #usr/share/man/man5/postfix-wrapper.5
 #usr/share/man/man5/regexp_table.5
 #usr/share/man/man5/relocated.5
+#usr/share/man/man5/sqlite_table.5
 #usr/share/man/man5/tcp_table.5
 #usr/share/man/man5/transport.5
 #usr/share/man/man5/virtual.5
@@ -106,6 +112,7 @@ usr/sbin/sendmail
 #usr/share/man/man8/cleanup.8
 #usr/share/man/man8/defer.8
 #usr/share/man/man8/discard.8
+#usr/share/man/man8/dnsblog.8
 #usr/share/man/man8/error.8
 #usr/share/man/man8/flush.8
 #usr/share/man/man8/lmtp.8
@@ -114,6 +121,7 @@ usr/sbin/sendmail
 #usr/share/man/man8/oqmgr.8
 #usr/share/man/man8/pickup.8
 #usr/share/man/man8/pipe.8
+#usr/share/man/man8/postscreen.8
 #usr/share/man/man8/proxymap.8
 #usr/share/man/man8/qmgr.8
 #usr/share/man/man8/qmqpd.8
@@ -123,10 +131,12 @@ usr/sbin/sendmail
 #usr/share/man/man8/smtpd.8
 #usr/share/man/man8/spawn.8
 #usr/share/man/man8/tlsmgr.8
+#usr/share/man/man8/tlsproxy.8
 #usr/share/man/man8/trace.8
 #usr/share/man/man8/trivial-rewrite.8
 #usr/share/man/man8/verify.8
 #usr/share/man/man8/virtual.8
+var/ipfire/backup/addons/includes/postfix
 var/lib/postfix
 #var/spool/postfix
 var/spool/postfix/active
@@ -143,4 +153,3 @@ var/spool/postfix/private
 var/spool/postfix/public
 var/spool/postfix/saved
 var/spool/postfix/trace
-etc/rc.d/init.d/postfix
index 45e218b14045b301e5916bfbc6b319f7ad90287b..02f3d41b9c40d8609eac8504c2b1baca911ba4c2 100644 (file)
@@ -1,8 +1,7 @@
-#root/.rnd
+etc/rc.d/init.d/pound
 #etc/pound.cfg
 usr/sbin/pound
 usr/sbin/poundctl
 #usr/share/man/man8/pound.8
 #usr/share/man/man8/poundctl.8
 var/ipfire/backup/addons/includes/pound
-etc/rc.d/init.d/pound
diff --git a/config/rootfiles/packages/rtorrent b/config/rootfiles/packages/rtorrent
deleted file mode 100644 (file)
index 93709f4..0000000
+++ /dev/null
@@ -1,1372 +0,0 @@
-# THIS INCLUDES ligsigc++ and libtorrent
-usr/bin/rtorrent
-#usr/share/man/man1/rtorrent.1
-#usr/include/torrent
-#usr/include/torrent/bitfield.h
-#usr/include/torrent/chunk_manager.h
-#usr/include/torrent/common.h
-#usr/include/torrent/connection_manager.h
-#usr/include/torrent/data
-#usr/include/torrent/data/block.h
-#usr/include/torrent/data/block_list.h
-#usr/include/torrent/data/block_transfer.h
-#usr/include/torrent/data/file.h
-#usr/include/torrent/data/file_list.h
-#usr/include/torrent/data/file_list_iterator.h
-#usr/include/torrent/data/file_manager.h
-#usr/include/torrent/data/file_utils.h
-#usr/include/torrent/data/piece.h
-#usr/include/torrent/data/transfer_list.h
-#usr/include/torrent/download.h
-#usr/include/torrent/error.h
-#usr/include/torrent/event.h
-#usr/include/torrent/exceptions.h
-#usr/include/torrent/hash_string.h
-#usr/include/torrent/http.h
-#usr/include/torrent/object.h
-#usr/include/torrent/object_stream.h
-#usr/include/torrent/path.h
-#usr/include/torrent/peer
-#usr/include/torrent/peer/client_info.h
-#usr/include/torrent/peer/client_list.h
-#usr/include/torrent/peer/peer.h
-#usr/include/torrent/peer/peer_info.h
-#usr/include/torrent/peer/peer_list.h
-#usr/include/torrent/poll.h
-#usr/include/torrent/poll_epoll.h
-#usr/include/torrent/poll_kqueue.h
-#usr/include/torrent/poll_select.h
-#usr/include/torrent/rate.h
-#usr/include/torrent/resume.h
-#usr/include/torrent/torrent.h
-#usr/include/torrent/tracker.h
-#usr/include/torrent/tracker_list.h
-#usr/lib/libtorrent.la
-usr/lib/libtorrent.so
-usr/lib/libtorrent.so.11
-usr/lib/libtorrent.so.11.0.6
-#usr/lib/pkgconfig/libtorrent.pc
-#usr/include/sigc++-2.0
-#usr/include/sigc++-2.0/sigc++
-#usr/include/sigc++-2.0/sigc++/adaptors
-#usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h
-#usr/include/sigc++-2.0/sigc++/adaptors/adaptors.h
-#usr/include/sigc++-2.0/sigc++/adaptors/bind.h
-#usr/include/sigc++-2.0/sigc++/adaptors/bind_return.h
-#usr/include/sigc++-2.0/sigc++/adaptors/bound_argument.h
-#usr/include/sigc++-2.0/sigc++/adaptors/compose.h
-#usr/include/sigc++-2.0/sigc++/adaptors/deduce_result_type.h
-#usr/include/sigc++-2.0/sigc++/adaptors/exception_catch.h
-#usr/include/sigc++-2.0/sigc++/adaptors/hide.h
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/base.h
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/group.h
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/lambda.h
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros/base.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros/group.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros/lambda.cc.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros/operator.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/macros/select.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/operator.h
-#usr/include/sigc++-2.0/sigc++/adaptors/lambda/select.h
-#usr/include/sigc++-2.0/sigc++/adaptors/macros
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/adaptor_trait.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/bind.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/bind_return.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/compose.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/deduce_result_type.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/exception_catch.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/hide.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/retype.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/macros/retype_return.h.m4
-#usr/include/sigc++-2.0/sigc++/adaptors/retype.h
-#usr/include/sigc++-2.0/sigc++/adaptors/retype_return.h
-#usr/include/sigc++-2.0/sigc++/bind.h
-#usr/include/sigc++-2.0/sigc++/bind_return.h
-#usr/include/sigc++-2.0/sigc++/class_slot.h
-#usr/include/sigc++-2.0/sigc++/compatibility.h
-#usr/include/sigc++-2.0/sigc++/connection.h
-#usr/include/sigc++-2.0/sigc++/functors
-#usr/include/sigc++-2.0/sigc++/functors/functor_trait.h
-#usr/include/sigc++-2.0/sigc++/functors/functors.h
-#usr/include/sigc++-2.0/sigc++/functors/macros
-#usr/include/sigc++-2.0/sigc++/functors/macros/functor_trait.h.m4
-#usr/include/sigc++-2.0/sigc++/functors/macros/mem_fun.h.m4
-#usr/include/sigc++-2.0/sigc++/functors/macros/ptr_fun.h.m4
-#usr/include/sigc++-2.0/sigc++/functors/macros/slot.h.m4
-#usr/include/sigc++-2.0/sigc++/functors/mem_fun.h
-#usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h
-#usr/include/sigc++-2.0/sigc++/functors/slot.h
-#usr/include/sigc++-2.0/sigc++/functors/slot_base.h
-#usr/include/sigc++-2.0/sigc++/hide.h
-#usr/include/sigc++-2.0/sigc++/limit_reference.h
-#usr/include/sigc++-2.0/sigc++/macros
-#usr/include/sigc++-2.0/sigc++/macros/class_slot.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/hide.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/limit_reference.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/method_slot.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/object_slot.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/retype.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/signal.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/slot.h.m4
-#usr/include/sigc++-2.0/sigc++/macros/template.macros.m4
-#usr/include/sigc++-2.0/sigc++/method_slot.h
-#usr/include/sigc++-2.0/sigc++/object.h
-#usr/include/sigc++-2.0/sigc++/object_slot.h
-#usr/include/sigc++-2.0/sigc++/reference_wrapper.h
-#usr/include/sigc++-2.0/sigc++/retype.h
-#usr/include/sigc++-2.0/sigc++/retype_return.h
-#usr/include/sigc++-2.0/sigc++/sigc++.h
-#usr/include/sigc++-2.0/sigc++/signal.h
-#usr/include/sigc++-2.0/sigc++/signal_base.h
-#usr/include/sigc++-2.0/sigc++/slot.h
-#usr/include/sigc++-2.0/sigc++/trackable.h
-#usr/include/sigc++-2.0/sigc++/type_traits.h
-#usr/include/sigc++-2.0/sigc++/visit_each.h
-#usr/lib/libsigc-2.0.a
-#usr/lib/libsigc-2.0.la
-usr/lib/libsigc-2.0.so
-usr/lib/libsigc-2.0.so.0
-usr/lib/libsigc-2.0.so.0.0.0
-#usr/lib/pkgconfig/sigc++-2.0.pc
-#usr/lib/sigc++-2.0
-#usr/lib/sigc++-2.0/include
-#usr/lib/sigc++-2.0/include/sigc++config.h
-#usr/share/doc/libsigc-2.0
-#usr/share/doc/libsigc-2.0/docs
-#usr/share/doc/libsigc-2.0/docs/images
-#usr/share/doc/libsigc-2.0/docs/images/libsigc_logo.gif
-#usr/share/doc/libsigc-2.0/docs/images/top.gif
-#usr/share/doc/libsigc-2.0/docs/index.html
-#usr/share/doc/libsigc-2.0/docs/reference
-#usr/share/doc/libsigc-2.0/docs/reference/html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptor__trait_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_2bind_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_2bind__return_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_2hide_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_2retype_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_2retype__return_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/adaptors_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/annotated.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/base_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/bind_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/bind__return_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/bound__argument_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Signal7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classSigC_1_1Slot7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/class__slot_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classes.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classinternal_1_1lambda__core.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classinternal_1_1lambda__core__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument_3_01const__reference__wrapper_3_01T__wrapped_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument_3_01const__reference__wrapper_3_01T__wrapped_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument_3_01reference__wrapper_3_01T__wrapped_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__argument_3_01reference__wrapper_3_01T__wrapped_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__const__volatile__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1bound__volatile__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__limit__reference-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__limit__reference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__limit__reference_3_01T__type_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__limit__reference_3_01T__type_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__limit__reference-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__limit__reference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__limit__reference_3_01T__type_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__limit__reference_3_01T__type_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1const__volatile__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1limit__reference-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1limit__reference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1limit__reference_3_01T__type_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1limit__reference_3_01T__type_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1pointer__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal_1_1accumulated-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal_1_1accumulated.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal_1_1accumulated__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1signal__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot__base-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot__base.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot__base__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1slot__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__limit__reference-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__limit__reference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__limit__reference_3_01T__type_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__limit__reference_3_01T__type_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor0__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/classsigc_1_1volatile__mem__functor7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/compatibility_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/compose_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/connection_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/deduce__result__type_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/deprecated.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2F.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2F_dep.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2F.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2F_dep.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2Flambda_2F.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Fadaptors_2Flambda_2F_dep.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Ffunctors_2F.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/dir__2Fhome_2Fmurrayc_2Fcvs_2Fgnome214_2Flibsigc_2B_2B2_2Fsigc_2B_2B_2Ffunctors_2F_dep.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/dirs.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/doxygen.css
-#usr/share/doc/libsigc-2.0/docs/reference/html/doxygen.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/exception__catch_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/files.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x61.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x62.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x63.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x64.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x65.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x66.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x67.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x68.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x69.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x6c.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x6d.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x6e.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x6f.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x70.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x72.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x73.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x74.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x75.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x76.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_0x7e.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x62.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x63.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x64.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x65.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x66.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x68.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x69.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x6c.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x6d.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x6e.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x6f.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x70.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x72.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x73.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x74.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x75.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x76.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_func_0x7e.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_rela.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functions_vars.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functor__trait_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functors_2slot_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/functors_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/globals.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/globals_defs.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/globals_func.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/globals_type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/globals_vars.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.dot
-#usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/graph_legend.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__adaptors.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__adaptors.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__bind.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__bind.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__compat.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__compose.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__compose.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__exception__catch.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__exception__catch.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__functors.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__functors.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__group__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__group__.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__hide.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__hide.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__lambdas.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__lambdas.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__mem__fun.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__mem__fun.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__ptr__fun.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__ptr__fun.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__retype.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__retype.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__signal.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__slot.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/group__slot.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/hide_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/hierarchy.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/index.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__0.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__1.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__10.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__100.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__101.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__102.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__103.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__104.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__105.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__106.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__107.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__108.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__109.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__11.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__110.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__111.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__112.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__113.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__114.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__115.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__116.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__117.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__118.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__119.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__12.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__120.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__121.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__122.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__123.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__124.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__125.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__126.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__127.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__128.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__129.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__13.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__130.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__131.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__132.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__133.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__134.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__135.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__136.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__137.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__138.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__139.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__14.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__140.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__141.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__142.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__143.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__144.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__145.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__146.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__147.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__148.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__149.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__15.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__150.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__151.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__152.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__153.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__154.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__155.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__156.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__157.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__158.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__159.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__16.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__160.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__161.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__162.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__163.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__164.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__165.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__166.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__167.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__168.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__169.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__17.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__170.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__171.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__172.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__173.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__174.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__175.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__176.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__177.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__178.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__179.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__18.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__180.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__181.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__182.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__183.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__184.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__185.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__186.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__187.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__188.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__189.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__19.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__190.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__191.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__192.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__193.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__194.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__195.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__196.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__197.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__198.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__199.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__2.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__20.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__200.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__201.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__202.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__203.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__204.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__205.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__206.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__207.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__208.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__209.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__21.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__210.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__211.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__212.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__213.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__214.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__215.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__216.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__217.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__218.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__219.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__22.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__220.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__221.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__222.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__223.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__224.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__225.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__226.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__227.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__228.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__229.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__23.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__230.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__231.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__232.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__233.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__234.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__235.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__236.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__237.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__238.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__239.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__24.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__240.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__241.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__242.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__243.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__244.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__245.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__246.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__247.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__248.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__249.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__25.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__250.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__251.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__252.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__253.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__254.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__255.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__256.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__257.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__258.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__259.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__26.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__260.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__261.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__262.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__27.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__28.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__29.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__3.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__30.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__31.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__32.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__33.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__34.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__35.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__36.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__37.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__38.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__39.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__4.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__40.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__41.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__42.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__43.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__44.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__45.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__46.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__47.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__48.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__49.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__5.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__50.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__51.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__52.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__53.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__54.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__55.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__56.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__57.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__58.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__59.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__6.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__60.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__61.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__62.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__63.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__64.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__65.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__66.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__67.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__68.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__69.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__7.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__70.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__71.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__72.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__73.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__74.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__75.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__76.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__77.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__78.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__79.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__8.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__80.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__81.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__82.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__83.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__84.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__85.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__86.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__87.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__88.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__89.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__9.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__90.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__91.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__92.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__93.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__94.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__95.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__96.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__97.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__98.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherit__graph__99.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/inherits.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/lambda_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/limit__reference_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/mem__fun_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/method__slot_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/modules.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespaceSigC.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_func.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacemembers_vars.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespaces.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacesigc.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/namespacesigc_1_1internal.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/object_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/object__slot_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/operator_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/pages.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/ptr__fun_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/reference__wrapper_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/retype_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/retype__return_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/select_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/sigc++_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/signal_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/signal__base_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/slot_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/slot__base_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structSigC_1_1retype__slot__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structSigC_1_1retype__slot__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structSigC_1_1retype__slot__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structSigC_1_1retype__slot__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structSigC_1_1retype__slot__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__base.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__base__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__trait_3_01T__functor_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__trait_3_01T__functor_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__trait_3_01T__functor_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adaptor__trait_3_01T__functor_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adapts-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adapts.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1adapts__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1address.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1and__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1arithmetic.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1arithmetic__assign.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1assign.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bind__return__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bind__return__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bind__return__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bind__return__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bind__return__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bitwise.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1bitwise__assign.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1cast__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose1__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose1__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose1__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose1__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose1__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose2__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose2__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose2__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose2__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1compose2__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1connection-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1connection.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1const__reference__wrapper-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1const__reference__wrapper.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5const_01_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01T__type_01_5const_01_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5const_01_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dereference__trait_3_01const_01T__type_01_5const_01_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1divides.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1dynamic__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1equal__to.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor_3_01T__functor_00_01T__catcher_00_01void_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor_3_01T__functor_00_01T__catcher_00_01void_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1exception__catch__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__base.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__base__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__functor_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__functor_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)()_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)()_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)()_01const_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)()_01const_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)(T__arg1)_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)(T__arg1)_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)(T__arg1)_01const_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(T__obj_1_1_5)(T__arg1_00_01T__arg2)_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)()_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)()_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)(T__arg1)_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)(T__arg1)_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)(T__arg1_00_01T__arg2)_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1functor__trait_3_01T__return(_5)(T__arg1_00_01T__arg2)_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1greater.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1greater__equal.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3-1_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3-1_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3-1_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3-1_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3-1_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_010_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_010_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_010_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_010_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_010_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_011_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_011_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_011_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_011_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_011_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_012_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_012_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_012_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_012_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_012_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_013_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_013_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_013_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_013_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_013_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_014_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_014_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_014_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_014_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_014_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_015_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_015_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_015_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_015_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_015_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_016_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_016_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_016_00_01T__functor_01_4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_016_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1hide__functor_3_016_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01false_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01false_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01false_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01false_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01true_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01true_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01true_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__core_3_01T__type_00_01true_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select1_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select1_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select2_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select2_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select3_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select3_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select4_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select5_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select5_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select5__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select6_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select6_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select6__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select7_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select7_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1lambda__select7__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1limit__derived__target-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1limit__derived__target.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1limit__derived__target_3_01T__target_01_5_00_01T__action_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1limit__derived__target_3_01T__target_01_5_00_01T__action_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0_3_01T__return_00_01nil_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0_3_01T__return_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0_3_01void_00_01nil_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit0_3_01void_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1_3_01T__return_00_01T__arg1_00_01nil_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1_3_01T__return_00_01T__arg1_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1_3_01void_00_01T__arg1_00_01nil_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit1_3_01void_00_01T__arg1_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit2_3_01T__return_00_01T__arg1_00_01T__arg2_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit2_3_01void_00_01T__arg1_00_01T__arg2_00_01nil_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__emit7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__exec-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__exec.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__impl-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1signal__impl.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call0-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call0.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call5-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call5.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call6-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call6.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call7-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__call7.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__do__bind-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__do__bind.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__do__unbind-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__do__unbind.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__iterator__buf-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__iterator__buf.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__iterator__buf_3_01T__emitter_00_01void_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__iterator__buf_3_01T__emitter_00_01void_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__rep-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__rep.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1slot__rep__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1temp__slot__list-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1temp__slot__list.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1trackable__callback-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1trackable__callback.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1trackable__callback__list-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1trackable__callback__list.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1typed__slot__rep-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1typed__slot__rep.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1typed__slot__rep__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type_3_01false_00_01T__type_00_01T__limit_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type_3_01false_00_01T__type_00_01T__limit_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type_3_01true_00_01T__type_00_01T__limit_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type_3_01true_00_01T__type_00_01T__limit_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type__pointer_3_01false_00_01T__type_00_01T__limit_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type__pointer_3_01false_00_01T__type_00_01T__limit_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type__pointer_3_01true_00_01T__type_00_01T__limit_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1internal_1_1with__type__pointer_3_01true_00_01T__type_00_01T__limit_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1is__base__and__derived-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1is__base__and__derived.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1is__base__and__derived_3_01T__base_00_01T__base_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1is__base__and__derived_3_01T__base_00_01T__base_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01divides_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01divides_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01minus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01minus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01modulus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01modulus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01multiplies_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01multiplies_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01plus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic_3_01plus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01divides_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01divides_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01minus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01minus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01modulus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01modulus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01multiplies_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01multiplies_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01plus_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01arithmetic__assign_3_01plus_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01and___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01and___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01leftshift_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01leftshift_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01or___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01or___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01rightshift_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01rightshift_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01xor___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise_3_01xor___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01and___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01and___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01leftshift_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01leftshift_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01or___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01or___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01rightshift_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01rightshift_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01xor___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01bitwise__assign_3_01xor___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01logical_3_01and___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01logical_3_01and___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01logical_3_01or___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01logical_3_01or___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01other_3_01assign_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01other_3_01assign_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01other_3_01subscript_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01other_3_01subscript_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01equal__to_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01equal__to_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01greater_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01greater_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01greater__equal_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01greater__equal_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01less_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01less_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01less__equal_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01less__equal_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01not__equal__to_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action_3_01relational_3_01not__equal__to_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert_3_01cast___3_01dynamic___01_4_00_01T__type_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert_3_01cast___3_01dynamic___01_4_00_01T__type_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert_3_01cast___3_01reinterpret___01_4_00_01T__type_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert_3_01cast___3_01static___01_4_00_01T__type_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert_3_01cast___3_01static___01_4_00_01T__type_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert__deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__convert__deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01negate_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01negate_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01pre__decrement_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01pre__decrement_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01pre__increment_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__arithmetic_3_01pre__increment_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__bitwise_3_01not___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__bitwise_3_01not___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__logical_3_01not___01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__logical_3_01not___01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__other_3_01address_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__other_3_01address_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__other_3_01dereference_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary_3_01unary__other_3_01dereference_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary__deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__action__unary__deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__base.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__base__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group1-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group1.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group1_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group1_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group1__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group2-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group2.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group2_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group2_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group2__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group3-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group3.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group3_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group3_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__group3__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__convert-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__convert.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__convert_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__convert_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__convert__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__unary-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__unary.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__unary_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__unary_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1lambda__operator__unary__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1leftshift.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1less.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1less__equal.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1logical.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1minus.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1modulus.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1multiplies.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1negate.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1not__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1not__equal__to.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1or__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1other.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1plus.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1pre__decrement.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1pre__increment.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1reference__wrapper-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1reference__wrapper.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1reinterpret__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1relational.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_1_1deduce__result__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_3_01void_00_01T__functor_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_3_01void_00_01T__functor_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_3_01void_00_01T__functor_01_4_1_1deduce__result__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor_3_01void_00_01T__functor_01_4__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1retype__return__functor__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1rightshift.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1signal__base-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1signal__base.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1signal__base__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__const__iterator-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__const__iterator.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__iterator-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__iterator.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__list-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1slot__list.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1static__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1subscript.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1trackable-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1trackable.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1trackable__inherit__graph.png
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01T__type[N]_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01T__type[N]_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01T__type_01_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01T__type_01_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01const_01T__type_01_6_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01const_01T__type_01_6_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01void_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1type__trait_3_01void_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unary__arithmetic.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unary__bitwise.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unary__logical.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unary__other.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__lambda__type-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__lambda__type.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__lambda__type_3_01lambda_3_01T__type_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__lambda__type_3_01lambda_3_01T__type_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference_3_01const__reference__wrapper_3_01T__type_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference_3_01const__reference__wrapper_3_01T__type_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference_3_01reference__wrapper_3_01T__type_01_4_01_4-members.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1unwrap__reference_3_01reference__wrapper_3_01T__type_01_4_01_4.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/structsigc_1_1xor__.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/tabs.css
-#usr/share/doc/libsigc-2.0/docs/reference/html/trackable_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/type__traits_8h.html
-#usr/share/doc/libsigc-2.0/docs/reference/html/visit__each_8h.html
-#usr/share/doc/libsigc-2.0/docs/tutorial
-#usr/share/doc/libsigc-2.0/docs/tutorial/html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch01.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch02.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch02s02.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch02s03.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch02s04.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch03.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch03s02.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch04.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch04s02.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch04s03.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/ch05.html
-#usr/share/doc/libsigc-2.0/docs/tutorial/html/index.html
index 4238ae5a347ff30d4900b158989b901a09b061c2..9882067685a73ca56a5f97e291aab755aa7965ef 100644 (file)
@@ -29,6 +29,8 @@ usr/bin/wbinfo
 #usr/include/smb_share_modes.h
 #usr/include/talloc.h
 #usr/include/tdb.h
+#usr/include/tevent.h
+#usr/include/tevent_internal.h
 #usr/include/wbclient.h
 usr/lib/libnetapi.so
 usr/lib/libnetapi.so.0
@@ -42,6 +44,9 @@ usr/lib/libtalloc.so.2.0.5
 usr/lib/libtdb.so
 usr/lib/libtdb.so.1
 usr/lib/libtdb.so.1.2.9
+usr/lib/libtevent.so
+usr/lib/libtevent.so.0
+usr/lib/libtevent.so.0.9.11
 usr/lib/libwbclient.so
 usr/lib/libwbclient.so.0
 #usr/lib/samba
index c52d15676bf3c5e52cc84fb3e83a4c37a6023f00..2c67aad3ad18a4aa820e9d409047d59b29ca9ca9 100644 (file)
@@ -1,4 +1,2 @@
-usr/local/sbin/sslh
-#usr/local/share/man/man8/sslh.8.gz
 etc/rc.d/init.d/sslh
-#usr/local/bin/sslh
+usr/sbin/sslh
diff --git a/config/rootfiles/packages/sslscan b/config/rootfiles/packages/sslscan
new file mode 100644 (file)
index 0000000..603c36e
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin/sslscan
+#usr/share/man/man1/sslscan.1
diff --git a/config/rootfiles/packages/strace b/config/rootfiles/packages/strace
new file mode 100644 (file)
index 0000000..4730d8c
--- /dev/null
@@ -0,0 +1,4 @@
+usr/bin/strace
+#usr/bin/strace-graph
+#usr/bin/strace-log-merge
+#usr/share/man/man1/strace.1
diff --git a/config/rootfiles/packages/stunnel b/config/rootfiles/packages/stunnel
new file mode 100644 (file)
index 0000000..eaf7fce
--- /dev/null
@@ -0,0 +1,41 @@
+etc/rc.d/init.d/stunnel
+etc/stunnel
+etc/stunnel/stunnel.conf
+#etc/stunnel/stunnel.conf-sample
+usr/bin/stunnel
+#usr/bin/stunnel3
+#usr/lib/stunnel
+#usr/lib/stunnel/libstunnel.la
+usr/lib/stunnel/libstunnel.so
+#usr/share/doc/stunnel
+#usr/share/doc/stunnel/AUTHORS
+#usr/share/doc/stunnel/BUGS
+#usr/share/doc/stunnel/COPYING
+#usr/share/doc/stunnel/COPYRIGHT.GPL
+#usr/share/doc/stunnel/CREDITS
+#usr/share/doc/stunnel/ChangeLog
+#usr/share/doc/stunnel/INSTALL
+#usr/share/doc/stunnel/INSTALL.FIPS
+#usr/share/doc/stunnel/INSTALL.W32
+#usr/share/doc/stunnel/INSTALL.WCE
+#usr/share/doc/stunnel/PORTS
+#usr/share/doc/stunnel/README
+#usr/share/doc/stunnel/TODO
+#usr/share/doc/stunnel/examples
+#usr/share/doc/stunnel/examples/ca.html
+#usr/share/doc/stunnel/examples/ca.pl
+#usr/share/doc/stunnel/examples/importCA.html
+#usr/share/doc/stunnel/examples/importCA.sh
+#usr/share/doc/stunnel/examples/script.sh
+#usr/share/doc/stunnel/examples/stunnel.init
+#usr/share/doc/stunnel/examples/stunnel.service
+#usr/share/doc/stunnel/examples/stunnel.spec
+#usr/share/doc/stunnel/stunnel.fr.html
+#usr/share/doc/stunnel/stunnel.html
+#usr/share/doc/stunnel/stunnel.pl.html
+#usr/share/man/man8/stunnel.8
+#usr/share/man/man8/stunnel.fr.8
+#usr/share/man/man8/stunnel.pl.8
+var/ipfire/backup/addons/includes/stunnel
+var/lib/stunnel
+var/lib/stunnel/run
diff --git a/config/rootfiles/packages/swatch b/config/rootfiles/packages/swatch
new file mode 100644 (file)
index 0000000..3789dba
--- /dev/null
@@ -0,0 +1,14 @@
+usr/bin/swatch
+#usr/lib/perl5/site_perl/5.12.3/Swatch
+usr/lib/perl5/site_perl/5.12.3/Swatch/Actions.pm
+usr/lib/perl5/site_perl/5.12.3/Swatch/Threshold.pm
+usr/lib/perl5/site_perl/5.12.3/Swatch/Throttle.pm
+#usr/lib/perl5/site_perl/5.12.3/auto/Swatch
+#usr/lib/perl5/site_perl/5.12.3/auto/Swatch/Actions
+usr/lib/perl5/site_perl/5.12.3/auto/Swatch/Actions/autosplit.ix
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/swatch
+#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread-multi/auto/swatch/.packlist
+#usr/share/man/man1/swatch.1
+#usr/share/man/man3/Swatch::Actions.3
+#usr/share/man/man3/Swatch::Threshold.3
+#usr/share/man/man3/Swatch::Throttle.3
index b2d4b66b4b3542f45fa00c40031d0ddd886d4601..7db74e80d2e919256caa88d85ed9e475fcaae5d1 100644 (file)
@@ -1,3 +1,2 @@
 usr/sbin/tcpdump
-usr/sbin/tcpdump.4.0.0
 #usr/share/man/man1/tcpdump.1
index 55d261be77c0d9f0310c1b93f5a4812eca6d360c..eb19657400aebc4fbb229cd9d8427d3635b9ba60 100644 (file)
@@ -1,6 +1,6 @@
-etc/rc.d/init.d/tftpd
+usr/bin/tftp
 #usr/man/man1/tftp.1
 #usr/man/man8/in.tftpd.8
 #usr/man/man8/tftpd.8
 usr/sbin/tftpd
-#var/tftpboot
+etc/rc.d/init.d/tftpd
diff --git a/config/rootfiles/packages/tor b/config/rootfiles/packages/tor
new file mode 100644 (file)
index 0000000..f9c657c
--- /dev/null
@@ -0,0 +1,35 @@
+#etc/logrotate.d
+etc/logrotate.d/tor
+etc/rc.d/init.d/tor
+etc/rc.d/rc0.d/K40tor
+etc/rc.d/rc3.d/S60tor
+etc/rc.d/rc6.d/K40tor
+#etc/tor
+#etc/tor/tor-tsocks.conf
+etc/tor/torrc
+srv/web/ipfire/cgi-bin/tor.cgi
+usr/bin/tor
+usr/bin/tor-gencert
+usr/bin/tor-resolve
+#usr/bin/torify
+usr/local/bin/torctrl
+#usr/share/doc/tor
+#usr/share/doc/tor/tor-gencert.html
+#usr/share/doc/tor/tor-resolve.html
+#usr/share/doc/tor/tor.html
+#usr/share/doc/tor/torify.html
+#usr/share/man/man1/tor-gencert.1
+#usr/share/man/man1/tor-resolve.1
+#usr/share/man/man1/tor.1
+#usr/share/man/man1/torify.1
+usr/share/tor
+usr/share/tor/defaults-torrc
+usr/share/tor/geoip
+usr/share/tor/geoip6
+var/ipfire/backup/addons/includes/tor
+var/ipfire/menu.d/EX-tor.menu
+var/ipfire/tor
+var/ipfire/tor/settings
+var/ipfire/tor/torrc
+var/lib/tor
+var/log/tor
diff --git a/config/rootfiles/packages/vdr_eepg b/config/rootfiles/packages/vdr_eepg
new file mode 100644 (file)
index 0000000..17f7bc4
--- /dev/null
@@ -0,0 +1,2 @@
+etc/vdr/plugins/eepg
+usr/lib/vdr/libvdr-eepg.so.2.0.0
diff --git a/config/rootfiles/packages/vdr_vnsiserver5 b/config/rootfiles/packages/vdr_vnsiserver5
new file mode 100644 (file)
index 0000000..9b27e97
--- /dev/null
@@ -0,0 +1,4 @@
+etc/sysconfig/vdr-plugins.d/vnsiserver5.conf
+etc/vdr/plugins/vnsiserver5
+etc/vdr/plugins/vnsiserver5/allowed_hosts.conf
+usr/lib/vdr/libvdr-vnsiserver5.so.2.0.0
diff --git a/config/rootfiles/packages/wavemon b/config/rootfiles/packages/wavemon
new file mode 100644 (file)
index 0000000..4f0fa3c
--- /dev/null
@@ -0,0 +1,10 @@
+usr/bin/wavemon
+#usr/share/man/man1/wavemon.1
+#usr/share/man/man5/wavemonrc.5
+#usr/share/wavemon
+#usr/share/wavemon/AUTHORS
+#usr/share/wavemon/COPYING
+#usr/share/wavemon/ChangeLog
+#usr/share/wavemon/NEWS
+#usr/share/wavemon/README
+#usr/share/wavemon/THANKS
diff --git a/config/rootfiles/packages/xinetd b/config/rootfiles/packages/xinetd
new file mode 100644 (file)
index 0000000..4c91ec9
--- /dev/null
@@ -0,0 +1,11 @@
+etc/rc.d/init.d/xinetd
+etc/xinetd.conf
+#etc/xinetd.d
+#usr/man/man5/xinetd.conf.5
+#usr/man/man8/itox.8
+#usr/man/man8/xconv.pl.8
+#usr/man/man8/xinetd.8
+#usr/man/man8/xinetd.log.8
+#usr/sbin/itox
+#usr/sbin/xconv.pl
+usr/sbin/xinetd
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 aa21965f955ff8eed3fb265044f251728ce808a1..ee297fe3f9208d7f39ecd24208c2adbadfc80ce6 100644 (file)
@@ -1,18 +1,9 @@
-[Temp]
-path = /tmp
-comment = Temp
-browseable = yes
+[Share1]
+path = /mnt/share1
+comment = Shared Folder
+browsable = yes
 writeable = yes
-create mask = 0777
-directory mask = 0777
-guest ok = yes
-force user = samba
-[P2P]
-path = /var/ipfire/samba/p2p
-comment = P2P
-browseable = yes
-writeable = yes
-create mask = 0777
-directory mask = 0777
+create mask = 0644
+directory mask = 0755
 guest ok = yes
 force user = samba
index ea9f81f3a2531d896c7c569cc5f2e1e1318f3aa9..950ae3e551bd8b5a5219ad7cdadfddbb719fe77c 100644 (file)
@@ -3,7 +3,7 @@
 #
 # some parts of this file are changed/updated by the webif
 ###################################################
-# VERSIONS : 2.9.1.1
+# VERSIONS : 2.9.5.0
 
 include /etc/snort/vars
 
@@ -42,7 +42,7 @@ ipvar FTP_SERVERS $HOME_NET
 ipvar SIP_SERVERS $HOME_NET
 
 # List of ports you run web servers on
-portvar HTTP_PORTS [80,81,311,444,591,593,901,1220,1414,1830,2301,2381,2809,3128,3702,5250,7001,7777,7779,8000,8008,8028,8080,8088,8118,8123,8180,8181,8243,8280,8888,9090,9091,9443,9999,11371,50002,55555]
+portvar HTTP_PORTS [80,81,82,83,84,85,86,87,88,89,311,383,444,591,593,631,901,1220,1414,1741,1830,2301,2381,2809,3037,3057,3128,3702,4343,4848,5250,6080,6988,7000,7001,7144,7145,7510,7777,7779,8000,8008,8014,8028,8080,8085,8088,8090,8118,8123,8180,8181,8222,8243,8280,8300,8500,8800,8888,8899,9000,9060,9080,9090,9091,9443,9999,11371,34443,34444,41080,50002,55555]
 
 # List of ports you want to look for SHELLCODE on.
 portvar SHELLCODE_PORTS !80
@@ -75,6 +75,14 @@ var RULE_PATH /etc/snort/rules
 var SO_RULE_PATH /etc/snort/so_rules
 var PREPROC_RULE_PATH /etc/snort/preproc_rules
 
+# If you are using reputation preprocessor set these
+# Currently there is a bug with relative paths, they are relative to where snort is
+# not relative to snort.conf like the above variables
+# This is completely inconsistent with how other vars work, BUG 89986
+# Set the absolute path appropriately
+var WHITE_LIST_PATH /etc/snort/rules
+var BLACK_LIST_PATH /etc/snort/rules
+
 
 ###################################################
 # Step #2: Configure the decoder.  For more information, see README.decode
@@ -161,7 +169,7 @@ config pcre_match_limit_recursion: 1500
 config detection: search-method ac-split search-optimize max-pattern-len 20
 
 # Configure the event queue.  For more information, see README.event_queue
-config event_queue: max_queue 8 log 3 order_events content_length
+config event_queue: max_queue 8 log 5 order_events content_length
 
 ###################################################
 ## Configure GTP if it is to be used.
@@ -215,6 +223,7 @@ dynamicengine /usr/lib/snort_dynamicengine/libsf_engine.so
 # path to dynamic rules libraries
 # dynamicdetection directory /usr/local/lib/snort_dynamicrules
 
+
 ###################################################
 # Step #5: Configure preprocessors
 # For more information, see the Snort Manual, Configuring Snort - Preprocessors
@@ -245,12 +254,12 @@ preprocessor stream5_global: track_tcp yes, \
    min_response_seconds 5
 preprocessor stream5_tcp: policy windows, detect_anomalies, require_3whs 180, \
    overlap_limit 10, small_segments 3 bytes 150, timeout 180, \
-    ports client 21 22 23 25 42 53 79 109 110 111 113 119 135 136 137 139 143 \
-        161 445 513 514 587 593 691 1433 1521 2100 3306 6070 6665 6666 6667 6668 6669 \
+    ports client 21 22 23 25 42 53 70 79 109 110 111 113 119 135 136 137 139 143 \
+        161 222 445 513 514 587 593 691 1433 1521 1741 2100 3306 6070 6665 6666 6667 6668 6669 \
         7000 8181 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779, \
-    ports both 80 81 311 443 465 563 591 593 636 901 989 992 993 994 995 1220 1414 1830 2301 2381 2809 3128 3702 5250 7907 7001 7802 7777 7779 \
+    ports both 80 81 82 83 84 85 86 87 88 89 110 311 383 443 444 465 563 591 593 631 636 901 989 992 993 994 995 1220 1414 1830 2301 2381 2809 3037 3057 3128 3702 4343 4848 5250 6080 6988 7907 7000 7001 7144 7145 7510 7802 7777 7779 \
         7801 7900 7901 7902 7903 7904 7905 7906 7908 7909 7910 7911 7912 7913 7914 7915 7916 \
-        7917 7918 7919 7920 8000 8008 8028 8080 8088 8118 8123 8180 8243 8280 8888 9090 9091 9443 9999 11371 50002 55555
+        7917 7918 7919 7920 8000 8008 8014 8028 8080 8085 8088 8090 8118 8123 8180 8222 8243 8280 8300 8500 8800 8888 8899 9000 9060 9080 9090 9091 9443 9999 11371 34443 34444 41080 50002 55555
 preprocessor stream5_udp: timeout 180
 
 # performance statistics.  For more information, see the Snort Manual, Configuring Snort - Preprocessors - Performance Monitor
@@ -269,7 +278,7 @@ preprocessor http_inspect_server: server default \
     max_headers 100 \
     max_spaces 200 \
     small_chunk_length { 10 5 } \
-    ports { 80 81 311 591 593 901 1220 1414 1830 2301 2381 2809 3128 3702 5250 7001 7777 7779 8000 8008 8028 8080 8088 8118 8123 8180 8181 8243 8280 8888 9090 9091 9443 9999 11371 50002 55555 } \
+    ports { 80 81 82 83 84 85 86 87 88 89 311 383 444 591 593 631 901 1220 1414 1741 1830 2301 2381 2809 3037 3057 3128 3702 4343 4848 5250 6080 6988 7000 7001 7144 7145 7510 7777 7779 8000 8008 8014 8028 8080 8085 8088 8090 8118 8123 8180 8181 8222 8243 8280 8300 8500 8800 8888 8899 9000 9060 9080 9090 9091 9443 9999 11371 34443 34444 41080 50002 55555 } \
     non_rfc_char { 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 } \
     enable_cookie \
     extended_response_inspection \
@@ -286,7 +295,7 @@ preprocessor http_inspect_server: server default \
     iis_delimiter no \
     iis_unicode no \
     multi_slash no \
-   utf_8 no \
+    utf_8 no \
     u_encode yes \
     webroot no
 
@@ -384,7 +393,7 @@ preprocessor sfportscan: proto  { all } memcap { 10000000 } sense_level { medium
 # preprocessor arpspoof_detect_host: 192.168.40.1 f0:0f:00:f0:0f:00
 
 # SSH anomaly detection.  For more information, see README.ssh
-preprocessor ssh: server_ports { 22,222 } \
+preprocessor ssh: server_ports { 22 222 } \
                   autodetect \
                   max_client_bytes 19600 \
                   max_encrypted_packets 20 \
@@ -409,7 +418,7 @@ preprocessor ssl: ports { 443 444 465 563 636 989 992 993 994 995 7801 7802 7900
 preprocessor sensitive_data: alert_threshold 25
 
 # SIP Session Initiation Protocol preprocessor.  For more information see README.sip
-preprocessor sip: max_sessions 10000, \
+preprocessor sip: max_sessions 40000, \
    ports { 5060 5061 5600 }, \
    methods { invite \
              cancel \
@@ -439,7 +448,7 @@ preprocessor sip: max_sessions 10000, \
    max_to_len 256, \
    max_via_len 1024, \
    max_contact_len 512, \
-   max_content_len 1024
+   max_content_len 2048 
 
 # IMAP preprocessor.  For more information see README.imap
 preprocessor imap: \
@@ -465,6 +474,15 @@ preprocessor dnp3: ports { 20000 } \
    memcap 262144 \
    check_crc
 
+# Reputation preprocessor. For more information see README.reputation
+#preprocessor reputation: \
+#   memcap 500, \
+#   priority whitelist, \
+#   nested_ip inner, \
+#   whitelist $WHITE_LIST_PATH/white_list.rules, \
+#   blacklist $BLACK_LIST_PATH/black_list.rules 
+
+
 ###################################################
 # Step #6: Configure output plugins
 # For more information, see Snort Manual, Configuring Snort - Output Modules
index 19bffa0606d338fff91cecdcd106e5a7b8589879..2b8f5dc02eb95a8d2b138656b9bb32a3cc228734 100644 (file)
@@ -1,6 +1,5 @@
-#squid_ip 127.0.0.1
-#squid_port 3128
-proxy none
+squid_ip 127.0.0.1
+squid_port 800
 #
 logfile /var/log/squid/squidclamav.log
 redirect http://127.0.0.1:81/clwarn.cgi
@@ -15,7 +14,7 @@ clamd_local /var/run/clamav/clamd
 maxsize 5000000
 maxredir 30
 timeout 60
-#trust_cache 1
+trust_cache 1
 #
 # Do not scan standard HTTP images
 abort ^.*\.(ico|gif|png|jpg)$
@@ -37,4 +36,4 @@ abortcontent ^video\/x-flv$
 abortcontent ^.*application\/x-mms-framed.*$
 #
 # White list some sites
-whitelist .*\.clamav.net
\ No newline at end of file
+whitelist .*\.clamav.net
diff --git a/config/stunnel/stunnel.conf b/config/stunnel/stunnel.conf
new file mode 100644 (file)
index 0000000..b172200
--- /dev/null
@@ -0,0 +1,21 @@
+; File: /etc/stunnel/stunnel.conf
+
+; Note: The pid and output locations are relative to the chroot location.
+
+pid    = /run/stunnel.pid
+chroot = /var/lib/stunnel
+client = no
+setuid = stunnel
+setgid = stunnel
+cert   = /etc/stunnel/stunnel.pem
+
+;debug = 7
+;output = stunnel.log
+
+;[https]
+;accept  = 443
+;connect = 80
+;; "TIMEOUTclose = 0" is a workaround for a design flaw in Microsoft SSL
+;; Microsoft implementations do not use SSL close-notify alert and thus
+;; they are vulnerable to truncation attacks
+;TIMEOUTclose = 0
diff --git a/config/syslinux/boot.msg b/config/syslinux/boot.msg
deleted file mode 100644 (file)
index dd6fc1f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-\f 
-\18splash.lss
-
-
- -  To install IPFire on your system, press the \ f04<ENTER>\ f07 key.
- -  To disable vga mode, type: \ f04novga <ENTER>\ f07.  
- -  To test the memory in your system type: \ f04memtest <ENTER>\ f07.
-
diff --git a/config/syslinux/boot.png b/config/syslinux/boot.png
new file mode 100644 (file)
index 0000000..cd7463f
Binary files /dev/null and b/config/syslinux/boot.png differ
diff --git a/config/syslinux/splash.lss b/config/syslinux/splash.lss
deleted file mode 100644 (file)
index 0ab1f9b..0000000
Binary files a/config/syslinux/splash.lss and /dev/null differ
index 5a6a975a205c6df275a36ddbfbb9ac522d9af80e..3c7ae87d23a07c488a398779a853bd8bdb6b03dc 100644 (file)
-TIMEOUT 5000
-DISPLAY boot.msg
-PROMPT 1
-DEFAULT vmlinuz
-  APPEND initrd=instroot vga=791 splash=silent ro
-LABEL ipfire
-  KERNEL vmlinuz
-  APPEND initrd=instroot vga=791 splash=silent ro
-LABEL novga
-  KERNEL vmlinuz
-  APPEND initrd=instroot ro
-LABEL unattended
-  KERNEL vmlinuz
-  APPEND initrd=instroot vga=791 splash=silent unattended ro
-LABEL memtest
-  KERNEL memtest
-  APPEND -
+SERIAL 0 115200
+
+UI vesamenu.c32
+PROMPT 0
+DEFAULT installer
+TIMEOUT 600
+
+MENU HSHIFT 0
+MENU WIDTH  40
+MENU MARGIN 1
+MENU VSHIFT 8
+MENU ROWS  10
+MENU HELPMSGROW 16
+MENU BACKGROUND boot.png
+MENU CLEAR
+
+# Coloring
+MENU COLOR TITLE       * #FFFFFFFF *
+MENU COLOR BORDER      * #00000000 #00000000 none
+MENU COLOR SEL         * #FFFFFFFF #FFE74C2E *
+MENU COLOR HOTSEL      1;7;37;40 #FFFFFFFF #99E74C2E *
+MENU COLOR TABMSG      * #FFFFFFFF #00000000 *
+
+MENU TITLE Welcome!
+
+LABEL installer
+       MENU LABEL Install IPFire VERSION
+       TEXT HELP
+Install the version of IPFire that is on this disk.
+       ENDTEXT
+       KERNEL vmlinuz
+       INITRD instroot
+       APPEND vga=791
+
+MENU SEPARATOR
+
+MENU BEGIN other
+       MENU TITLE Other installation options
+
+       LABEL other.back
+               MENU LABEL Back
+               MENU EXIT
+
+       MENU SEPARATOR
+
+       LABEL novga
+               MENU LABEL Install IPFire (text mode)
+               TEXT HELP
+Run the installer in text mode.
+               ENDTEXT
+               KERNEL vmlinuz
+               INITRD instroot
+
+       LABEL unattended
+               MENU LABEL Unattended installation
+               TEXT HELP
+Run an unattended installation.
+               ENDTEXT
+               KERNEL vmlinuz
+               INITRD instroot
+               APPEND unattended
+MENU END
+
+MENU BEGIN tools
+       MENU TITLE Tools
+
+       LABEL tools.back
+               MENU LABEL Back
+               MENU EXIT
+
+       MENU SEPARATOR
+
+       LABEL memtest
+               MENU LABEL memtest86+
+               TEXT HELP
+Diagnose memory problems with memtest86+.
+               ENDTEXT
+               KERNEL memtest
+
+       LABEL hdt
+               MENU LABEL Hardware Detection Tool
+               TEXT HELP
+Check your hardware with the Hardware Detection Tool!
+               ENDTEXT
+               KERNEL hdt.c32
+MENU END
+
+MENU BEGIN serial
+       MENU TITLE Serial console options
+
+       LABEL serial.back
+               MENU LABEL Back
+               MENU EXIT
+
+       MENU SEPARATOR
+
+       LABEL ipfire-serial
+               MENU LABEL Install IPFire (serial)
+               TEXT HELP
+Run the installer with serial console.
+               ENDTEXT
+               KERNEL vmlinuz
+               INITRD instroot
+               APPEND console=ttyS0,115200 novga
+
+       LABEL unattended-serial
+               MENU LABEL Unattended installation (serial)
+               TEXT HELP
+Run an unattended installation wit serial console.
+               ENDTEXT
+               KERNEL vmlinuz
+               INITRD instroot
+               APPEND console=ttyS0,115200 novga unattended
+
+       MENU SEPARATOR
+
+       LABEL memtest-serial
+               MENU LABEL memtest86+ (serial)
+               TEXT HELP
+Diagnose memory problems with memtest86+ with serial console.
+               ENDTEXT
+               KERNEL memtest
+               APPEND console=ttyS0,115200
+
+       LABEL hdt-serial
+               MENU LABEL Hardware Detection Tool
+               TEXT HELP
+Check your hardware with the Hardware Detection Tool!
+               ENDTEXT
+               KERNEL hdt.c32
+
+MENU END
+
+MENU SEPARATOR
+
+LABEL netboot
+       MENU LABEL boot.ipfire.org
+       TEXT HELP
+Boot from the IPFire Boot Server!
+       ENDTEXT
+       KERNEL netboot
index 5adf279001c2c7274bbf8235a77172086a7284ee..169463bb9cfce805c112a57e2583fe0c377b06af 100644 (file)
@@ -1,12 +1,12 @@
 DOMAINNAME=localdomain
 HOSTNAME=ipfire
-KEYMAP=/lib/kbd/keymaps/i386/qwertz/de-latin1-nodeadkeys.map.gz
-LANGUAGE=de
+KEYMAP=/lib/kbd/keymaps/i386/qwerty/us.map.gz
+LANGUAGE=en
 TIMEZONE=/usr/share/zoneinfo/posix/Europe/Berlin
 THEME=ipfire
-GREEN_ADDRESS=192.168.180.30
+GREEN_ADDRESS=192.168.0.1
 GREEN_NETMASK=255.255.255.0
-GREEN_NETADDRESS=192.168.180.0
-GREEN_BROADCAST=192.168.180.255
+GREEN_NETADDRESS=192.168.0.0
+GREEN_BROADCAST=192.168.0.255
 ROOT_PASSWORD=ipfire
 ADMIN_PASSWORD=ipfire
diff --git a/config/tor/defaults-torrc b/config/tor/defaults-torrc
new file mode 100644 (file)
index 0000000..703d821
--- /dev/null
@@ -0,0 +1,3 @@
+DataDirectory /var/lib/tor
+User nobody
+Log notice syslog
diff --git a/config/tor/tor.logrotate b/config/tor/tor.logrotate
new file mode 100644 (file)
index 0000000..49fe002
--- /dev/null
@@ -0,0 +1,13 @@
+/var/log/tor/*.log {
+    daily
+    rotate 5
+    compress
+    delaycompress
+    missingok
+    notifempty
+    create 0640 nobody nobody
+    sharedscripts
+    postrotate
+        /etc/init.d/tor reload >/dev/null 2>&1 || :
+    endscript
+}
index aad40aead5f52f9888e8488d7f877dfed540c1d4..672b15277a2196c387b4804da9f994d564cd25eb 100755 (executable)
Binary files a/config/u-boot/boot.scr and b/config/u-boot/boot.scr differ
index 0f7181535e00a727636386b3b796e5dfb502a299..66d76282fc0d6175c279099252d9676dad9398a1 100755 (executable)
@@ -1,4 +1,7 @@
-fatload mmc 0:1 0x80000000 uImage-ipfire-omap
-fatload mmc 0:1 0x81600000 uInit-ipfire-omap
-setenv bootargs vram=32M console=tty1 rootwait smsc95xx.macaddr=$usbethaddr root=/dev/mmcblk0p3 ro
-bootm 0x80000000 0x81600000
+fatload mmc 0:1 0x82000000 zImage-ipfire-multi
+fatload mmc 0:1 0x85000000 uInit-ipfire-multi
+#fatload mmc 0:1 ${fdtaddr} omap4-${board_name}.dtb
+setenv bootargs video=800x600 console=tty1 rootwait smsc95xx.macaddr=$usbethaddr root=/dev/mmcblk0p3 ro
+# Pandaboard has serious Problems in dt mode with kernel 3.10.x
+#bootz 0x82000000 0x85000000 ${fdtaddr}
+bootz 0x82000000 0x85000000
diff --git a/config/udev/90-hwrng.rules b/config/udev/90-hwrng.rules
new file mode 100644 (file)
index 0000000..a939790
--- /dev/null
@@ -0,0 +1 @@
+ACTION=="add|remove", KERNEL=="hw_random", RUN+="/etc/rc.d/init.d/rngd udev-event"
diff --git a/config/udev/udev.conf b/config/udev/udev.conf
new file mode 100644 (file)
index 0000000..31bb662
--- /dev/null
@@ -0,0 +1,4 @@
+# The initial syslog(3) priority: "err", "info", "debug" or its
+# numerical equivalent. For runtime debugging, the daemons internal
+# state can be changed with: "udevadm control --log-priority=<value>".
+udev_log="err"
index cdfce26d8aa16813e99196c2de431aa42fc94381..2ddc6d8e4425d133d2673c7bc913949723d23970 100644 (file)
@@ -70,7 +70,7 @@ while (<>) {
        $username   = $tmp[2]; if ($username eq '') { $username='-'; };
        $method     = $tmp[3];
 
-       $xlrator_url = $source_url;
+       $xlrator_url = "";
 
        if (($method eq 'GET') || ($method eq 'HEAD')) 
        {
@@ -108,8 +108,8 @@ while (<>) {
        # -----------------------------------------------------------
 
        if (
-               ($source_url =~ m@^[h|f]t?tp://[^?]+\.(deb|rpm)$@i) ||
-               ($source_url =~ m@^[h|f]t?tp://[^?]+/distfiles/[^?]+\.(tar\.gz|tar\.bz2|tgz|zip|patch\.bz2|gz|docx|patch|pdf|exe)$@i)
+               ($source_url =~ m@^[h|f]t?tp://[^?]+\.(pkg\.tar\.xz|deb|rpm)$@i) ||
+               ($source_url =~ m@^[h|f]t?tp://[^?]+/distfiles/[^?]+\.(tar\.gz|tar\.bz2|tar\.xz|tgz|zip|patch\.bz2|gz|docx|patch|pdf|exe)$@i)
        )
        {
                $xlrator_url = &check_cache($source_url,$hostaddr,$username,"Linux",$mirror);
@@ -212,9 +212,11 @@ while (<>) {
 # ----------- ADD NEW SOURCES BEFORE THIS LINE !!! ------------------
        }
 
-       $request="$xlrator_url $hostaddr $username $method\n";
-
-       print $request;
+       if ($xlrator_url) {
+               print "OK rewrite-url=\"$xlrator_url\"\n";
+       } else {
+               print "ERR\n";
+       }
 }
 
 # -------------------------------------------------------------------
index ceae12b2bc97da3af78a52c6e5bb129f59cc0e30..3e8b49eacd945c7f2be81b3e39b0eb3e7051e9a8 100644 (file)
 #                                                                             #
 ###############################################################################
 
-use strict;
 use IPC::Open2;
 use IO::Handle;
 
-my $redirectors;
-
 require '/var/ipfire/general-functions.pl';
 
 my %proxysettings=();
@@ -35,15 +32,20 @@ $proxysettings{'ENABLE_CLAMAV'} = 'off';
 $proxysettings{'ENABLE_UPDXLRATOR'} = 'off';
 &General::readhash("${General::swroot}/proxy/settings", \%proxysettings);
 
-# define here your redirectors (use a comma sperated list)
-if ( $proxysettings{'ENABLE_FILTER'} eq 'on' && $proxysettings{'ENABLE_CLAMAV'} eq 'on' && $proxysettings{'ENABLE_UPDXLRATOR'} eq 'on' ){$redirectors = [ '/usr/bin/squidGuard', '/usr/bin/squidclamav', '/usr/sbin/updxlrator' ];}
-elsif ( $proxysettings{'ENABLE_FILTER'} eq 'on' && $proxysettings{'ENABLE_CLAMAV'} eq 'on' && $proxysettings{'ENABLE_UPDXLRATOR'} eq 'off' ){$redirectors = [ '/usr/bin/squidGuard', '/usr/bin/squidclamav' ];}
-elsif ( $proxysettings{'ENABLE_FILTER'} eq 'on' && $proxysettings{'ENABLE_CLAMAV'} eq 'off' && $proxysettings{'ENABLE_UPDXLRATOR'} eq 'on' ){$redirectors = [ '/usr/bin/squidGuard', '/usr/sbin/updxlrator' ];}
-elsif ( $proxysettings{'ENABLE_FILTER'} eq 'on' && $proxysettings{'ENABLE_CLAMAV'} eq 'off' && $proxysettings{'ENABLE_UPDXLRATOR'} eq 'off' ){$redirectors = [ '/usr/bin/squidGuard' ];}
-elsif ( $proxysettings{'ENABLE_FILTER'} eq 'off' && $proxysettings{'ENABLE_CLAMAV'} eq 'on' && $proxysettings{'ENABLE_UPDXLRATOR'} eq 'on' ){$redirectors = [ '/usr/bin/squidclamav', '/usr/sbin/updxlrator' ];}
-elsif ( $proxysettings{'ENABLE_FILTER'} eq 'off' && $proxysettings{'ENABLE_CLAMAV'} eq 'on' && $proxysettings{'ENABLE_UPDXLRATOR'} eq 'off' ){$redirectors = [ '/usr/bin/squidclamav' ];}
-elsif ( $proxysettings{'ENABLE_FILTER'} eq 'off' && $proxysettings{'ENABLE_CLAMAV'} eq 'off' && $proxysettings{'ENABLE_UPDXLRATOR'} eq 'on' ){$redirectors = [ '/usr/sbin/updxlrator' ];}
-else  { $redirectors = [ '/usr/bin/squidGuard', '/usr/sbin/updxlrator' ];}
+# define here your redirectors
+my @redirectors = ();
+
+if ($proxysettings{'ENABLE_FILTER'} eq 'on') {
+       push(@redirectors, "/usr/bin/squidGuard");
+}
+
+if ($proxysettings{'ENABLE_CLAMAV'} eq 'on') {
+       push(@redirectors, "/usr/bin/squidclamav");
+}
+
+if ($proxysettings{'ENABLE_UPDXLRATOR'} eq 'on') {
+       push(@redirectors, "/usr/sbin/updxlrator");
+}
 
 # Attention: keep in mind that the order of your redirectors is important.
 # It doesn't make sense to scan for viruses on pages you restrict access to...
@@ -55,68 +57,89 @@ else  { $redirectors = [ '/usr/bin/squidGuard', '/usr/sbin/updxlrator' ];}
 # init
 $| = 1;
 STDOUT->autoflush(1);
-my $line;
-my $return;
-my $i;
+
 my $debug=0; # enable only for debugging
 
-if ( -e "/var/ipfire/proxy/enable_redirector_debug" ){
-       $debug = 1;
+if (-e "/var/ipfire/proxy/enable_redirector_debug") {
        writetolog("Urlfilter = ".$proxysettings{'ENABLE_FILTER'}." Clamav = ".$proxysettings{'ENABLE_CLAMAV'}." Updxlrator = ".$proxysettings{'ENABLE_UPDXLRATOR'});
-       }
+       $debug = 1;
+}
 
-# open progamms
-my $pidlist = [];
-my $rlist = [];
-my $wlist = [];
+# Open one instance for each redirector in the list and
+# put them into an array with the STDIN and STDOUT file
+# descriptors.
+my @instances = ();
 
-for($i = 0; $i < @$redirectors; $i++) {
-       $pidlist->[$i] = open2($rlist->[$i], $wlist->[$i], $redirectors->[$i]);
-       if ($debug){
-               writetolog("Current redirector is ".$redirectors->[$i]." number ".$i." PID ".$pidlist->[$i]);
-               }
+foreach my $redirector (@redirectors) {
+       my $desc_out = new IO::Handle();
+       my $desc_in  = new IO::Handle();
+
+       my $pid = open2($desc_out, $desc_in, $redirector);
+
+       if ($debug) {
+               &writetolog("Started an instance of $redirector with PID $pid");
        }
 
+       push(@instances, [$redirector, $desc_out, $desc_in]);
+}
+
 # wait for data...
-while($line = <>) {
-       $return = "";
+my $line;
+while ($line = <>) {
+       my $return = "ERR\n";
 
-       for($i = 0; $i < @$redirectors; $i++) {
-               $wlist->[$i]->print($line);
-               $return = $rlist->[$i]->getline;
+       foreach my $instance (@instances) {
+               my $redirector = @$instance[0];
+               my $desc_out   = @$instance[1];
+               my $desc_in    = @$instance[2];
+               my $response;
 
-               if ( $return eq "Processing file and database" ){
+               # Send request to the redirector.
+               $desc_in->print($line);
+
+               # Wait for a response.
+               $response = $desc_out->getline;
+
+               # Catch invalid responses from squidGuard.
+               if ($redirector eq "/usr/bin/squidGuard" && $response eq "Processing file and database") {
                        system("logger -t ipfire 'Emergency - squidGuard not initialised please run squidGuard -C all'");
-                       }
+                       next;
+               }
 
-               if ($debug){
-                       my $dline = $line;my $dreturn = $return;chomp $dline;chomp $dreturn;
-                       if ( $return eq $line or $return eq "\n" or $return eq "" ){
-                               writetolog("Request equals result by ".$redirectors->[$i]." ".$dline);
-                               }
-                       else {
-                               writetolog($redirectors->[$i]." answers ".$dreturn."\n   Querried ".$dline);
-                               }
-                       }
+               # Writing debug output.
+               if ($debug) {
+                       my $len_response = length($response);
+
+                       &writetolog("Queried $redirector for: $line");
+                       &writetolog("  --> Response ($len_response): $response");
+               }
 
-               # break if redirector changes data
-               if($return ne "\n" and $return ne $line ){
-                       if ( $redirectors->[$i] ne "/usr/sbin/updxlrator"){
-                               if ($debug){
-                                       writetolog($redirectors->[$i]." is stopping querry because block was found.");
-                                       }
-                               $i = @$redirectors;
-                               }
+               # If we got a decisive response, we send it back to squid
+               # and stop querying any more redirectors.
+               if ($response =~ /^(OK|BH)/) {
+                       if ($debug) {
+                               &writetolog("  --  Stopped querying redirectors");
                        }
+
+                       $return = $response;
+                       last;
                }
-       print $return;
        }
 
+       # Send response back to squid.
+       if ($debug) {
+               &writetolog("Sending back to squid: $return");
+       }
+       print $return;
+}
+
 exit 0;
 
 sub writetolog {
-       open(DATEI, ">>/var/log/squid/redirector_debug") || die "Unable to acces file /var/log/squid/redirector_debug";
-       my $log = shift;
-       print DATEI $log."\n";
-       close(DATEI);
-       }
+       my $message = shift;
+       chomp($message);
+
+       open(FILE, ">>/var/log/squid/redirector_debug") || die "Unable to acces file /var/log/squid/redirector_debug";
+       print FILE "$message\n";
+       close(FILE);
+}
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/vdr/plugins.d/vnsiserver5.conf b/config/vdr/plugins.d/vnsiserver5.conf
new file mode 100644 (file)
index 0000000..561552d
--- /dev/null
@@ -0,0 +1,5 @@
+# Configuration snippet for vdr-vnsiserver5                         -*- sh -*-
+#
+# Add command line options to pass to the vnsiserver5 plugin to PLUGIN_OPTIONS.
+
+PLUGIN_OPTIONS=""
index a1cebf10f808a58dac1da6e54a32dacbd822e509..9c7906912c9c1ca6a1a8573e5ebec099d6a975b8 100644 (file)
@@ -3,7 +3,7 @@
 # The "master" options.  Some examples of options you may want to set
 # here are -r, -t, and --rcu.  See the vdr(1) man page for more info.
 #
-VDR_OPTIONS=(--vfat)
+VDR_OPTIONS=(--vfat --log=1)
 
 # VDR_PLUGIN_ORDER is a space separated list of plugins that should be
 # loaded in a specific order.  This affects eg. the order the plugins'
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..574812166f72a9a01654d5b066891e5a99a2bbcf 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"
@@ -17,7 +19,6 @@ other usefull commands from the Dom0:
 - 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                      +
-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+This script can also build a Citrix XenCenter xva image.
+- run "XEN_IMG_TYPE=xva sh xen-image-maker.sh" to build an xva image.
+- import the vm with "xe vm-import file=ipfire.xfa"
index eeb35c9f21b135234c5c3ae55d7e86947874b7e6..38bfdff5e5146aa6f182f1cacc051bab1d5bb43a 100644 (file)
@@ -1,6 +1,6 @@
 bootloader = '/usr/bin/pygrub'
 
-memory = 128
+memory = 256
 name = "ipfire-xen"
 
 acpi=1
@@ -17,8 +17,8 @@ vif         = [
 
 
 disk = [
-               'file:/mnt/test/ipfire-boot.img,xvda1,w',
-               'file:/mnt/test/ipfire-swap.img,xvda2,w',
-               'file:/mnt/test/ipfire-root.img,xvda3,w',
-               'file:/mnt/test/ipfire-var.img,xvda4,w'
+               'file:./ipfire-boot.img,xvda1,w',
+               'file:./ipfire-swap.img,xvda2,w',
+               'file:./ipfire-root.img,xvda3,w',
+               'file:./ipfire-var.img,xvda4,w'
        ] #### Change path
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..4f63280
--- /dev/null
@@ -0,0 +1,211 @@
+#/bin/bash
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2014  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
+CONSOLE=hvc0
+
+SIZEboot=64
+SIZEswap=512
+SIZEroot=1024
+SIZEvar=1024
+FSTYPE=ext3
+
+##############################################################################
+
+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
+
+if [ "$XEN_IMG_TYPE" == "xva" ]; then
+       # download xva.py if it not exist.
+       if [ ! -e xva.py ]; then
+               wget http://source.ipfire.org/source-2.x/xva.py
+       fi
+       # XenCenter use other devicenames and
+       # xvdd seems to be reserved (converter bug?).
+       P1=xvda
+       P2=xvdb
+       P3=xvdc
+       P4=xvde
+else
+       # old style xen image partition names
+       P1=xvda1
+       P2=xvda2
+       P3=xvda3
+       P4=xvda4
+fi
+
+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
+xz -d < $ISODIR/$SNAME-$VERSION.tlz > $TMPDIR/$SNAME-$VERSION.tar
+tar -C $MNThdd/ -xvf $TMPDIR/$SNAME-$VERSION.tar \
+       --exclude=lib/modules* --exclude=boot* --numeric-owner
+
+#Install Kernel
+tar -C $MNThdd/opt/pakfire/tmp -xvf $TMPDIR/$KERNEL --numeric-owner
+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-$KERN_TYPE root=/dev/$P3 rootdelay=10 panic=10 console=$CONSOLE 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/meta-linux-$KERN_TYPE
+echo "Name: linux-$KERN_TYPE" >> $MNThdd/opt/pakfire/db/meta/meta-linux-$KERN_TYPE
+echo "ProgVersion: $KVER"     >> $MNThdd/opt/pakfire/db/meta/meta-linux-$KERN_TYPE
+echo "Release: $KERN_PACK"    >> $MNThdd/opt/pakfire/db/meta/meta-linux-$KERN_TYPE
+echo ""                       >> $MNThdd/opt/pakfire/db/meta/meta-linux-$KERN_TYPE
+echo ""                       >  $MNThdd/opt/pakfire/db/installed/meta-linux-$KERN_TYPE
+echo "Name: linux-$KERN_TYPE" >> $MNThdd/opt/pakfire/db/installed/meta-linux-$KERN_TYPE
+echo "ProgVersion: $KVER"     >> $MNThdd/opt/pakfire/db/installed/meta-linux-$KERN_TYPE
+echo "Release: $KERN_PACK"    >> $MNThdd/opt/pakfire/db/installed/meta-linux-$KERN_TYPE
+echo ""                       >> $MNThdd/opt/pakfire/db/installed/meta-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/$P1|g" $MNThdd/etc/fstab
+sed -i -e "s|DEVICE2|/dev/$P2|g" $MNThdd/etc/fstab
+sed -i -e "s|DEVICE3|/dev/$P3|g" $MNThdd/etc/fstab
+sed -i -e "s|DEVICE4|/dev/$P4|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 console to securetty
+echo $CONSOLE >> $MNThdd/etc/securetty
+
+#Add getty for console
+echo "#Enable login for XEN" >> $MNThdd/etc/inittab
+echo "8:2345:respawn:/sbin/agetty $CONSOLE 9600 --noclear" >> $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
+
+if [ "$XEN_IMG_TYPE" == "xva" ]; then
+       python xva.py --sparse -c $SNAME.cfg -f $SNAME.xva
+       rm -f $SNAME*.img
+fi
+echo --------------------------------------------------------
+echo - Done.
+echo --------------------------------------------------------
diff --git a/config/xinetd/xinetd.conf b/config/xinetd/xinetd.conf
new file mode 100644 (file)
index 0000000..b2112a1
--- /dev/null
@@ -0,0 +1,9 @@
+defaults
+{
+   instances      = 10
+   log_type       = SYSLOG daemon
+   log_on_success = HOST PID
+   log_on_failure = HOST
+   #only_from      = <your local networks>
+}
+includedir /etc/xinetd.d
index de0c4d30ccf8ec7119b66e2b2e0a9ad407d6bcf8..e814281f3587baf4a49e12862c187697a8f672c5 100644 (file)
@@ -1,4 +1,3 @@
-WARNING: translation string unused: Client status and controlc
 WARNING: translation string unused: ConnSched scheduler
 WARNING: translation string unused: ConnSched select profile
 WARNING: translation string unused: HDD temperature
@@ -11,11 +10,15 @@ 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 a new rule
 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: addon
 WARNING: translation string unused: admin user password has been changed
 WARNING: translation string unused: administrator user password
 WARNING: translation string unused: advproxy LDAP auth
@@ -38,6 +41,11 @@ WARNING: translation string unused: advproxy errmsg password incorrect
 WARNING: translation string unused: advproxy no cre groups
 WARNING: translation string unused: advproxy ssadvanced proxy
 WARNING: translation string unused: advproxy update notification
+WARNING: translation string unused: age second
+WARNING: translation string unused: age seconds
+WARNING: translation string unused: age shour
+WARNING: translation string unused: age sminute
+WARNING: translation string unused: age ssecond
 WARNING: translation string unused: alcatelusb help
 WARNING: translation string unused: alcatelusb upload
 WARNING: translation string unused: all interfaces
@@ -45,9 +53,11 @@ 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
+WARNING: translation string unused: attemps
 WARNING: translation string unused: available updates
 WARNING: translation string unused: backup config floppy
 WARNING: translation string unused: backup configuration
@@ -68,6 +78,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
@@ -107,8 +118,14 @@ WARNING: translation string unused: ddns help freedns
 WARNING: translation string unused: ddns help plus
 WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
+WARNING: translation string unused: default ip
 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
@@ -118,17 +135,28 @@ WARNING: translation string unused: dial user password
 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: disconnects
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: display webinterface effects
+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: download dh parameter
 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
+WARNING: translation string unused: edit a rule
 WARNING: translation string unused: edit network
 WARNING: translation string unused: edit service
 WARNING: translation string unused: editor
+WARNING: translation string unused: eg
 WARNING: translation string unused: email server can not be empty
 WARNING: translation string unused: enable javascript
 WARNING: translation string unused: enabled on
@@ -146,10 +174,19 @@ WARNING: translation string unused: err rs 7 untartst
 WARNING: translation string unused: err rs 8 untar
 WARNING: translation string unused: error config
 WARNING: translation string unused: error external access
+WARNING: translation string unused: esp encryption
+WARNING: translation string unused: esp grouptype
+WARNING: translation string unused: esp integrity
+WARNING: translation string unused: esp keylife
 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 configuration
+WARNING: translation string unused: external access rule added
 WARNING: translation string unused: external access rule changed
+WARNING: translation string unused: external access rule removed
+WARNING: translation string unused: extrahd
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
 WARNING: translation string unused: filename
@@ -158,6 +195,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 +207,47 @@ 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 addrule
+WARNING: translation string unused: fwdfw err nosrcip
+WARNING: translation string unused: fwdfw err notgtip
+WARNING: translation string unused: fwdfw err prot_port1
+WARNING: translation string unused: fwdfw final_rule
+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 menu
+WARNING: translation string unused: fwdfw natport used
+WARNING: translation string unused: fwdfw p2p txt
+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: fwdfw xt access
+WARNING: translation string unused: fwhost Custom Host
+WARNING: translation string unused: fwhost Custom Network
+WARNING: translation string unused: fwhost IpSec Host
+WARNING: translation string unused: fwhost IpSec Network
+WARNING: translation string unused: fwhost OpenVPN N-2-N
+WARNING: translation string unused: fwhost OpenVPN static host
+WARNING: translation string unused: fwhost OpenVPN static network
+WARNING: translation string unused: fwhost Standard Network
+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 hosts
+WARNING: translation string unused: fwhost ipadr
+WARNING: translation string unused: fwhost ipsec host
+WARNING: translation string unused: fwhost orange
+WARNING: translation string unused: fwhost reread
+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
@@ -182,6 +264,10 @@ WARNING: translation string unused: icmp selected but no type
 WARNING: translation string unused: icmp type
 WARNING: translation string unused: id
 WARNING: translation string unused: ids preprocessor
+WARNING: translation string unused: ike encryption
+WARNING: translation string unused: ike grouptype
+WARNING: translation string unused: ike integrity
+WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
@@ -191,6 +277,7 @@ WARNING: translation string unused: install new update
 WARNING: translation string unused: installed
 WARNING: translation string unused: installed updates
 WARNING: translation string unused: intrusion detection system log viewer
+WARNING: translation string unused: intrusion detection system2
 WARNING: translation string unused: invalid cache size
 WARNING: translation string unused: invalid date entered
 WARNING: translation string unused: invalid downlink speed
@@ -203,6 +290,7 @@ WARNING: translation string unused: invalid upstream proxy username or password
 WARNING: translation string unused: invert
 WARNING: translation string unused: ip address in use
 WARNING: translation string unused: ipfire side
+WARNING: translation string unused: ipsec no connections
 WARNING: translation string unused: iptable rules
 WARNING: translation string unused: isdn
 WARNING: translation string unused: isdn settings
@@ -220,6 +308,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 +334,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 +351,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
@@ -269,9 +360,11 @@ WARNING: translation string unused: network added
 WARNING: translation string unused: network configuration
 WARNING: translation string unused: network removed
 WARNING: translation string unused: network status information
+WARNING: translation string unused: network time
 WARNING: translation string unused: network traffic graphs
 WARNING: translation string unused: network updated
 WARNING: translation string unused: networks settings
+WARNING: translation string unused: never
 WARNING: translation string unused: new optionsfw must boot
 WARNING: translation string unused: no alcatelusb firmware
 WARNING: translation string unused: no cfg upload
@@ -286,6 +379,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
@@ -293,15 +387,33 @@ WARNING: translation string unused: optionsfw portlist hint
 WARNING: translation string unused: optionsfw warning
 WARNING: translation string unused: or
 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 add ip group
+WARNING: translation string unused: outgoing firewall add mac group
+WARNING: translation string unused: outgoing firewall edit ip group
+WARNING: translation string unused: outgoing firewall edit mac group
+WARNING: translation string unused: outgoing firewall group error
+WARNING: translation string unused: outgoing firewall groups
+WARNING: translation string unused: outgoing firewall ip groups
+WARNING: translation string unused: outgoing firewall mac groups
+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 view group
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
-WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
 WARNING: translation string unused: ovpn dl
+WARNING: translation string unused: ovpn engines
 WARNING: translation string unused: ovpn log
+WARNING: translation string unused: ovpn reneg sec
 WARNING: translation string unused: ovpn_fastio
 WARNING: translation string unused: ovpn_fragment
 WARNING: translation string unused: ovpn_mssfix
@@ -324,9 +436,11 @@ WARNING: translation string unused: pakfire updates
 WARNING: translation string unused: password contains illegal characters
 WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters in length
+WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -337,8 +451,10 @@ WARNING: translation string unused: proxy no proxy extend
 WARNING: translation string unused: proxy no proxy local
 WARNING: translation string unused: proxy port
 WARNING: translation string unused: psk
+WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
 WARNING: translation string unused: reboot schedule
-WARNING: translation string unused: rebooting
+WARNING: translation string unused: reboot sure
 WARNING: translation string unused: refresh update list
 WARNING: translation string unused: released
 WARNING: translation string unused: removable device advice
@@ -353,7 +469,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
@@ -364,20 +482,30 @@ WARNING: translation string unused: service updated
 WARNING: translation string unused: servicename
 WARNING: translation string unused: services settings
 WARNING: translation string unused: shaping list options
-WARNING: translation string unused: shutdown control
+WARNING: translation string unused: shutdown ask
+WARNING: translation string unused: shutdown sure
 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 bad
+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 network
+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
@@ -406,6 +534,12 @@ WARNING: translation string unused: to email adr
 WARNING: translation string unused: to install an update
 WARNING: translation string unused: to warn email bad
 WARNING: translation string unused: too long 80 char max
+WARNING: translation string unused: tor 0 = disabled
+WARNING: translation string unused: tor accounting period daily
+WARNING: translation string unused: tor accounting period monthly
+WARNING: translation string unused: tor accounting period weekly
+WARNING: translation string unused: tor exit country
+WARNING: translation string unused: total connection time
 WARNING: translation string unused: traffic back
 WARNING: translation string unused: traffic calc time
 WARNING: translation string unused: traffic calc time bad
@@ -429,7 +563,6 @@ WARNING: translation string unused: transparent on
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
-WARNING: translation string unused: unknown
 WARNING: translation string unused: update transcript
 WARNING: translation string unused: updates
 WARNING: translation string unused: updates is old1
@@ -473,16 +606,25 @@ 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: wlanap wlan services
+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: addons
 WARNING: untranslated string: bytes
-WARNING: untranslated string: new
-WARNING: untranslated string: outgoing firewall reserved groupname
+WARNING: untranslated string: community rules
+WARNING: untranslated string: dead peer detection
+WARNING: untranslated string: downlink
+WARNING: untranslated string: emerging rules
+WARNING: untranslated string: first
+WARNING: untranslated string: fwhost err hostip
+WARNING: untranslated string: last
 WARNING: untranslated string: qos add subclass
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
 WARNING: untranslated string: routing table
-WARNING: untranslated string: wlanap country
+WARNING: untranslated string: show tls-auth key
+WARNING: untranslated string: uplink
index d7a7d72acf39c2a2bde5cb8e614ee5aea631e61b..57e0dd3bb24ab640f5572b77d03d30a95b8c1afe 100644 (file)
@@ -1,4 +1,3 @@
-WARNING: translation string unused: Client status and controlc
 WARNING: translation string unused: ConnSched scheduler
 WARNING: translation string unused: ConnSched select profile
 WARNING: translation string unused: HDD temperature
@@ -11,10 +10,13 @@ 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 a new rule
 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
@@ -39,6 +41,11 @@ WARNING: translation string unused: advproxy no cre groups
 WARNING: translation string unused: advproxy ssadvanced proxy
 WARNING: translation string unused: advproxy update information
 WARNING: translation string unused: advproxy update notification
+WARNING: translation string unused: age second
+WARNING: translation string unused: age seconds
+WARNING: translation string unused: age shour
+WARNING: translation string unused: age sminute
+WARNING: translation string unused: age ssecond
 WARNING: translation string unused: alcatelusb help
 WARNING: translation string unused: alcatelusb upload
 WARNING: translation string unused: all interfaces
@@ -46,10 +53,12 @@ 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
 WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
 WARNING: translation string unused: available updates
 WARNING: translation string unused: backup archive
 WARNING: translation string unused: backup clear archive
@@ -87,6 +96,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
@@ -127,8 +137,15 @@ WARNING: translation string unused: ddns help freedns
 WARNING: translation string unused: ddns help plus
 WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
+WARNING: translation string unused: default ip
 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: dh name is invalid
 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
@@ -140,18 +157,29 @@ WARNING: translation string unused: dial user password
 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: disconnects
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: display webinterface effects
+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: download dh parameter
 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
+WARNING: translation string unused: edit a rule
 WARNING: translation string unused: edit network
 WARNING: translation string unused: edit service
 WARNING: translation string unused: editor
+WARNING: translation string unused: eg
 WARNING: translation string unused: email server can not be empty
 WARNING: translation string unused: enable javascript
 WARNING: translation string unused: enabled on
@@ -169,10 +197,19 @@ WARNING: translation string unused: err rs 7 untartst
 WARNING: translation string unused: err rs 8 untar
 WARNING: translation string unused: error config
 WARNING: translation string unused: error external access
+WARNING: translation string unused: esp encryption
+WARNING: translation string unused: esp grouptype
+WARNING: translation string unused: esp integrity
+WARNING: translation string unused: esp keylife
 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 configuration
+WARNING: translation string unused: external access rule added
 WARNING: translation string unused: external access rule changed
+WARNING: translation string unused: external access rule removed
+WARNING: translation string unused: extrahd
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
 WARNING: translation string unused: filename
@@ -181,6 +218,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 +230,47 @@ 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 addrule
+WARNING: translation string unused: fwdfw err nosrcip
+WARNING: translation string unused: fwdfw err notgtip
+WARNING: translation string unused: fwdfw err prot_port1
+WARNING: translation string unused: fwdfw final_rule
+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 menu
+WARNING: translation string unused: fwdfw natport used
+WARNING: translation string unused: fwdfw p2p txt
+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: fwdfw xt access
+WARNING: translation string unused: fwhost Custom Host
+WARNING: translation string unused: fwhost Custom Network
+WARNING: translation string unused: fwhost IpSec Host
+WARNING: translation string unused: fwhost IpSec Network
+WARNING: translation string unused: fwhost OpenVPN N-2-N
+WARNING: translation string unused: fwhost OpenVPN static host
+WARNING: translation string unused: fwhost OpenVPN static network
+WARNING: translation string unused: fwhost Standard Network
+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 hosts
+WARNING: translation string unused: fwhost ipadr
+WARNING: translation string unused: fwhost ipsec host
+WARNING: translation string unused: fwhost orange
+WARNING: translation string unused: fwhost reread
+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
@@ -207,6 +289,10 @@ WARNING: translation string unused: icmp selected but no type
 WARNING: translation string unused: icmp type
 WARNING: translation string unused: id
 WARNING: translation string unused: ids preprocessor
+WARNING: translation string unused: ike encryption
+WARNING: translation string unused: ike grouptype
+WARNING: translation string unused: ike integrity
+WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
@@ -217,6 +303,7 @@ WARNING: translation string unused: install new update
 WARNING: translation string unused: installed
 WARNING: translation string unused: installed updates
 WARNING: translation string unused: intrusion detection system log viewer
+WARNING: translation string unused: intrusion detection system2
 WARNING: translation string unused: invalid cache size
 WARNING: translation string unused: invalid date entered
 WARNING: translation string unused: invalid downlink speed
@@ -229,6 +316,7 @@ WARNING: translation string unused: invalid upstream proxy username or password
 WARNING: translation string unused: invert
 WARNING: translation string unused: ip address in use
 WARNING: translation string unused: ipfire side
+WARNING: translation string unused: ipsec no connections
 WARNING: translation string unused: iptable rules
 WARNING: translation string unused: isdn
 WARNING: translation string unused: isdn settings
@@ -246,6 +334,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 +360,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 +377,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
@@ -295,9 +386,11 @@ WARNING: translation string unused: network added
 WARNING: translation string unused: network configuration
 WARNING: translation string unused: network removed
 WARNING: translation string unused: network status information
+WARNING: translation string unused: network time
 WARNING: translation string unused: network traffic graphs
 WARNING: translation string unused: network updated
 WARNING: translation string unused: networks settings
+WARNING: translation string unused: never
 WARNING: translation string unused: new optionsfw must boot
 WARNING: translation string unused: no alcatelusb firmware
 WARNING: translation string unused: no cfg upload
@@ -313,6 +406,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
@@ -320,17 +414,34 @@ WARNING: translation string unused: optionsfw portlist hint
 WARNING: translation string unused: optionsfw warning
 WARNING: translation string unused: or
 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 add ip group
+WARNING: translation string unused: outgoing firewall add mac group
+WARNING: translation string unused: outgoing firewall edit ip group
+WARNING: translation string unused: outgoing firewall edit mac group
+WARNING: translation string unused: outgoing firewall group error
+WARNING: translation string unused: outgoing firewall groups
+WARNING: translation string unused: outgoing firewall ip groups
+WARNING: translation string unused: outgoing firewall mac groups
+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 view group
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
-WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
 WARNING: translation string unused: ovpn dl
+WARNING: translation string unused: ovpn engines
 WARNING: translation string unused: ovpn log
+WARNING: translation string unused: ovpn reneg sec
 WARNING: translation string unused: ovpn_fastio
-WARNING: translation string unused: ovpn_fragment
 WARNING: translation string unused: ovpn_mssfix
 WARNING: translation string unused: ovpn_mtudisc
 WARNING: translation string unused: ovpn_processprio
@@ -351,9 +462,11 @@ WARNING: translation string unused: pakfire updates
 WARNING: translation string unused: password contains illegal characters
 WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters in length
+WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -365,8 +478,10 @@ WARNING: translation string unused: proxy no proxy local
 WARNING: translation string unused: proxy port
 WARNING: translation string unused: psk
 WARNING: translation string unused: quick control
+WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
 WARNING: translation string unused: reboot schedule
-WARNING: translation string unused: rebooting
+WARNING: translation string unused: reboot sure
 WARNING: translation string unused: refresh update list
 WARNING: translation string unused: released
 WARNING: translation string unused: removable device advice
@@ -381,7 +496,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,20 +512,30 @@ WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
 WARNING: translation string unused: show lines
-WARNING: translation string unused: shutdown control
+WARNING: translation string unused: shutdown ask
+WARNING: translation string unused: shutdown sure
 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 bad
+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 network
+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
@@ -420,6 +547,7 @@ WARNING: translation string unused: successfully refreshed updates list
 WARNING: translation string unused: system graphs
 WARNING: translation string unused: system log viewer
 WARNING: translation string unused: system status information
+WARNING: translation string unused: teovpn_fragment
 WARNING: translation string unused: test
 WARNING: translation string unused: test email could not be sent
 WARNING: translation string unused: test email was sent
@@ -437,6 +565,14 @@ WARNING: translation string unused: to email adr
 WARNING: translation string unused: to install an update
 WARNING: translation string unused: to warn email bad
 WARNING: translation string unused: too long 80 char max
+WARNING: translation string unused: tor 0 = disabled
+WARNING: translation string unused: tor accounting period daily
+WARNING: translation string unused: tor accounting period monthly
+WARNING: translation string unused: tor accounting period weekly
+WARNING: translation string unused: tor bridge enabled
+WARNING: translation string unused: tor errmsg invalid node id
+WARNING: translation string unused: tor exit country
+WARNING: translation string unused: total connection time
 WARNING: translation string unused: traffic back
 WARNING: translation string unused: traffic calc time
 WARNING: translation string unused: traffic calc time bad
@@ -460,7 +596,6 @@ WARNING: translation string unused: transparent on
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
-WARNING: translation string unused: unknown
 WARNING: translation string unused: update transcript
 WARNING: translation string unused: updates
 WARNING: translation string unused: updates is old1
@@ -506,14 +641,19 @@ 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: wlanap wlan services
+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: bytes
-WARNING: untranslated string: new
-WARNING: untranslated string: outgoing firewall reserved groupname
+WARNING: untranslated string: downlink
+WARNING: untranslated string: first
+WARNING: untranslated string: fwhost err hostip
+WARNING: untranslated string: last
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
 WARNING: untranslated string: routing table
+WARNING: untranslated string: uplink
index 0dea29c181febe014fa2708de86bcfecd2223fe2..a87250311fd98dee9ae1d9ffa2a669e00039e127 100644 (file)
@@ -11,10 +11,13 @@ 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 a new rule
 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,10 +49,12 @@ 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
 WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
 WARNING: translation string unused: available updates
 WARNING: translation string unused: backup archive
 WARNING: translation string unused: backup clear archive
@@ -87,6 +92,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 +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
@@ -138,18 +149,29 @@ WARNING: translation string unused: dial user password
 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: disconnects
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: display webinterface effects
+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
+WARNING: translation string unused: edit a rule
 WARNING: translation string unused: edit network
 WARNING: translation string unused: edit service
 WARNING: translation string unused: editor
+WARNING: translation string unused: eg
 WARNING: translation string unused: email server can not be empty
 WARNING: translation string unused: enable javascript
 WARNING: translation string unused: enabled on
@@ -167,10 +189,19 @@ WARNING: translation string unused: err rs 7 untartst
 WARNING: translation string unused: err rs 8 untar
 WARNING: translation string unused: error config
 WARNING: translation string unused: error external access
+WARNING: translation string unused: esp encryption
+WARNING: translation string unused: esp grouptype
+WARNING: translation string unused: esp integrity
+WARNING: translation string unused: esp keylife
 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 configuration
+WARNING: translation string unused: external access rule added
 WARNING: translation string unused: external access rule changed
+WARNING: translation string unused: external access rule removed
+WARNING: translation string unused: extrahd
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
 WARNING: translation string unused: filename
@@ -179,6 +210,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
@@ -205,6 +239,10 @@ WARNING: translation string unused: icmp selected but no type
 WARNING: translation string unused: icmp type
 WARNING: translation string unused: id
 WARNING: translation string unused: ids preprocessor
+WARNING: translation string unused: ike encryption
+WARNING: translation string unused: ike grouptype
+WARNING: translation string unused: ike integrity
+WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
@@ -215,6 +253,7 @@ WARNING: translation string unused: install new update
 WARNING: translation string unused: installed
 WARNING: translation string unused: installed updates
 WARNING: translation string unused: intrusion detection system log viewer
+WARNING: translation string unused: intrusion detection system2
 WARNING: translation string unused: invalid cache size
 WARNING: translation string unused: invalid date entered
 WARNING: translation string unused: invalid downlink speed
@@ -244,6 +283,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 +309,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 +326,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
@@ -293,6 +335,7 @@ WARNING: translation string unused: network added
 WARNING: translation string unused: network configuration
 WARNING: translation string unused: network removed
 WARNING: translation string unused: network status information
+WARNING: translation string unused: network time
 WARNING: translation string unused: network traffic graphs
 WARNING: translation string unused: network updated
 WARNING: translation string unused: networks settings
@@ -311,17 +354,22 @@ 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
 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
 WARNING: translation string unused: ovpn dl
 WARNING: translation string unused: ovpn log
@@ -347,9 +395,11 @@ WARNING: translation string unused: pakfire updates
 WARNING: translation string unused: password contains illegal characters
 WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters in length
+WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -361,8 +411,10 @@ WARNING: translation string unused: proxy no proxy local
 WARNING: translation string unused: proxy port
 WARNING: translation string unused: psk
 WARNING: translation string unused: quick control
+WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
 WARNING: translation string unused: reboot schedule
-WARNING: translation string unused: rebooting
+WARNING: translation string unused: reboot sure
 WARNING: translation string unused: refresh update list
 WARNING: translation string unused: released
 WARNING: translation string unused: removable device advice
@@ -377,7 +429,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
@@ -391,20 +445,30 @@ WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
 WARNING: translation string unused: show lines
-WARNING: translation string unused: shutdown control
+WARNING: translation string unused: shutdown ask
+WARNING: translation string unused: shutdown sure
 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 bad
+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 network
+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
@@ -433,6 +497,7 @@ WARNING: translation string unused: to email adr
 WARNING: translation string unused: to install an update
 WARNING: translation string unused: to warn email bad
 WARNING: translation string unused: too long 80 char max
+WARNING: translation string unused: total connection time
 WARNING: translation string unused: traffic back
 WARNING: translation string unused: traffic calc time
 WARNING: translation string unused: traffic calc time bad
@@ -456,7 +521,6 @@ WARNING: translation string unused: transparent on
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
-WARNING: translation string unused: unknown
 WARNING: translation string unused: update transcript
 WARNING: translation string unused: updates
 WARNING: translation string unused: updates is old1
@@ -488,6 +552,7 @@ WARNING: translation string unused: use dov
 WARNING: translation string unused: use ibod
 WARNING: translation string unused: view log
 WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
 WARNING: translation string unused: vpn incompatible use of defaultroute
 WARNING: translation string unused: vpn mtu invalid
 WARNING: translation string unused: vpn on blue
@@ -498,22 +563,33 @@ 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: wlanap wlan services
+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: Async logging enabled
+WARNING: untranslated string: ConnSched dial
+WARNING: untranslated string: ConnSched hangup
+WARNING: untranslated string: ConnSched reboot
+WARNING: untranslated string: ConnSched shutdown
+WARNING: untranslated string: MB read
+WARNING: untranslated string: MB written
+WARNING: untranslated string: MTU settings
+WARNING: untranslated string: Number of Countries for the pie chart
 WARNING: untranslated string: Scan for Songs
 WARNING: untranslated string: Set time on boot
+WARNING: untranslated string: addons
 WARNING: untranslated string: advproxy cache-digest
 WARNING: untranslated string: advproxy errmsg cache
 WARNING: untranslated string: advproxy errmsg invalid upstream proxy
-WARNING: untranslated string: age second
-WARNING: untranslated string: age seconds
-WARNING: untranslated string: age shour
-WARNING: untranslated string: age sminute
-WARNING: untranslated string: age ssecond
+WARNING: untranslated string: advproxy errmsg proxy ports equal
+WARNING: untranslated string: advproxy proxy port transparent
+WARNING: untranslated string: atm device
 WARNING: untranslated string: attention
+WARNING: untranslated string: bit
 WARNING: untranslated string: bytes
+WARNING: untranslated string: capabilities
 WARNING: untranslated string: ccd add
 WARNING: untranslated string: ccd choose net
 WARNING: untranslated string: ccd client options
@@ -527,6 +603,8 @@ WARNING: untranslated string: ccd err invalidname
 WARNING: untranslated string: ccd err invalidnet
 WARNING: untranslated string: ccd err irouteexist
 WARNING: untranslated string: ccd err isipsecnet
+WARNING: untranslated string: ccd err isipsecrw
+WARNING: untranslated string: ccd err isovpnn2n
 WARNING: untranslated string: ccd err isovpnnet
 WARNING: untranslated string: ccd err issubnet
 WARNING: untranslated string: ccd err name
@@ -549,7 +627,41 @@ WARNING: untranslated string: ccd none
 WARNING: untranslated string: ccd routes
 WARNING: untranslated string: ccd subnet
 WARNING: untranslated string: ccd used
+WARNING: untranslated string: count
+WARNING: untranslated string: countries
+WARNING: untranslated string: country codes and flags
+WARNING: untranslated string: countrycode
+WARNING: untranslated string: dead peer detection
+WARNING: untranslated string: default
 WARNING: untranslated string: deprecated fs warn
+WARNING: untranslated string: details
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key move failed
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh key warn1
+WARNING: untranslated string: dh parameter
+WARNING: untranslated string: dnat address
+WARNING: untranslated string: dns servers
+WARNING: untranslated string: dnsforward
+WARNING: untranslated string: dnsforward add a new entry
+WARNING: untranslated string: dnsforward configuration
+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: downlink
+WARNING: untranslated string: download tls-auth key
+WARNING: untranslated string: dpd delay
+WARNING: untranslated string: dpd timeout
+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: encryption
+WARNING: untranslated string: entropy
+WARNING: untranslated string: entropy graphs
 WARNING: untranslated string: fireinfo ipfire version
 WARNING: untranslated string: fireinfo is disabled
 WARNING: untranslated string: fireinfo is enabled
@@ -567,34 +679,214 @@ 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: firewall logs country
+WARNING: untranslated string: firewall rules
+WARNING: untranslated string: first
+WARNING: untranslated string: flag
+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 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 extport
+WARNING: untranslated string: fwdfw dnat nochoice
+WARNING: untranslated string: fwdfw dnat porterr
+WARNING: untranslated string: fwdfw dnat porterr2
+WARNING: untranslated string: fwdfw edit
+WARNING: untranslated string: fwdfw err nosrc
+WARNING: untranslated string: fwdfw err notgt
+WARNING: untranslated string: fwdfw err prot_port
+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 tgt_port
+WARNING: untranslated string: fwdfw err time
+WARNING: untranslated string: fwdfw external port nat
+WARNING: untranslated string: fwdfw hint ip1
+WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw hint mac
+WARNING: untranslated string: fwdfw iface
+WARNING: untranslated string: fwdfw log
+WARNING: untranslated string: fwdfw log rule
+WARNING: untranslated string: fwdfw many
+WARNING: untranslated string: fwdfw movedown
+WARNING: untranslated string: fwdfw moveup
+WARNING: untranslated string: fwdfw newrule
+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 prot41
+WARNING: untranslated string: fwdfw prot41 short
+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 warn1
+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: 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 maxservicetcp
+WARNING: untranslated string: fwhost err maxserviceudp
+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 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 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: gen dh
+WARNING: untranslated string: generate dh key
+WARNING: untranslated string: grouptype
+WARNING: untranslated string: hardware support
+WARNING: untranslated string: imei
+WARNING: untranslated string: imsi
+WARNING: untranslated string: incoming firewall access
+WARNING: untranslated string: integrity
+WARNING: untranslated string: invalid input for dpd delay
+WARNING: untranslated string: invalid input for dpd timeout
+WARNING: untranslated string: ipsec
+WARNING: untranslated string: ipsec network
+WARNING: untranslated string: last
+WARNING: untranslated string: least preferred
+WARNING: untranslated string: lifetime
+WARNING: untranslated string: mac filter
+WARNING: untranslated string: maximum
+WARNING: untranslated string: minimum
 WARNING: untranslated string: minute
-WARNING: untranslated string: new
+WARNING: untranslated string: model
+WARNING: untranslated string: modem hardware details
+WARNING: untranslated string: modem information
+WARNING: untranslated string: modem network bit error rate
+WARNING: untranslated string: modem network information
+WARNING: untranslated string: modem network mode
+WARNING: untranslated string: modem network operator
+WARNING: untranslated string: modem network registration
+WARNING: untranslated string: modem network signal quality
+WARNING: untranslated string: modem no connection
+WARNING: untranslated string: modem no connection message
+WARNING: untranslated string: modem sim information
+WARNING: untranslated string: modem status
+WARNING: untranslated string: monitor interface
+WARNING: untranslated string: most preferred
+WARNING: untranslated string: no hardware random number generator
+WARNING: untranslated string: not a valid dh key
+WARNING: untranslated string: notice
 WARNING: untranslated string: openvpn default
 WARNING: untranslated string: openvpn destination port used
 WARNING: untranslated string: openvpn fragment allowed with udp
 WARNING: untranslated string: openvpn mssfix allowed with udp
+WARNING: untranslated string: openvpn network
 WARNING: untranslated string: openvpn prefix local subnet
 WARNING: untranslated string: openvpn prefix openvpn subnet
 WARNING: untranslated string: openvpn prefix remote subnet
 WARNING: untranslated string: openvpn subnet is used
 WARNING: untranslated string: other
-WARNING: untranslated string: outgoing firewall add ip group
-WARNING: untranslated string: outgoing firewall add mac group
-WARNING: untranslated string: outgoing firewall edit ip group
-WARNING: untranslated string: outgoing firewall edit mac group
-WARNING: untranslated string: outgoing firewall group error
-WARNING: untranslated string: outgoing firewall groups
-WARNING: untranslated string: outgoing firewall ip groups
-WARNING: untranslated string: outgoing firewall mac groups
+WARNING: untranslated string: outgoing firewall access
 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 crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh new key
+WARNING: untranslated string: ovpn dh parameters
+WARNING: untranslated string: ovpn dh upload
 WARNING: untranslated string: ovpn errmsg green already pushed
 WARNING: untranslated string: ovpn errmsg invalid ip or mask
+WARNING: untranslated string: ovpn generating the root and host certificates
+WARNING: untranslated string: ovpn ha
+WARNING: untranslated string: ovpn hmac
+WARNING: untranslated string: ovpn mgmt in root range
 WARNING: untranslated string: ovpn mtu-disc
 WARNING: untranslated string: ovpn mtu-disc and mtu not 1500
 WARNING: untranslated string: ovpn mtu-disc maybe
@@ -602,8 +894,12 @@ WARNING: untranslated string: ovpn mtu-disc no
 WARNING: untranslated string: ovpn mtu-disc off
 WARNING: untranslated string: ovpn mtu-disc with mssfix or fragment
 WARNING: untranslated string: ovpn mtu-disc yes
+WARNING: untranslated string: ovpn no connections
+WARNING: untranslated string: ovpn port in root range
 WARNING: untranslated string: ovpn routes push
 WARNING: untranslated string: ovpn routes push options
+WARNING: untranslated string: p2p block
+WARNING: untranslated string: p2p block save notice
 WARNING: untranslated string: pakfire ago
 WARNING: untranslated string: proxy reports
 WARNING: untranslated string: proxy reports daily
@@ -611,14 +907,109 @@ 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: random number generator daemon
+WARNING: untranslated string: red1
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
 WARNING: untranslated string: routing table
 WARNING: untranslated string: server restart
+WARNING: untranslated string: show dh
+WARNING: untranslated string: show tls-auth key
+WARNING: untranslated string: snat new source ip address
+WARNING: untranslated string: software version
+WARNING: untranslated string: source ip country
+WARNING: untranslated string: ssh
 WARNING: untranslated string: static routes
+WARNING: untranslated string: support donation
+WARNING: untranslated string: system has hwrng
+WARNING: untranslated string: system has rdrand
 WARNING: untranslated string: system information
+WARNING: untranslated string: ta key
+WARNING: untranslated string: tor
+WARNING: untranslated string: tor accounting
+WARNING: untranslated string: tor accounting bytes
+WARNING: untranslated string: tor accounting bytes left
+WARNING: untranslated string: tor accounting interval
+WARNING: untranslated string: tor accounting limit
+WARNING: untranslated string: tor accounting period
+WARNING: untranslated string: tor acls
+WARNING: untranslated string: tor allowed subnets
+WARNING: untranslated string: tor bandwidth burst
+WARNING: untranslated string: tor bandwidth rate
+WARNING: untranslated string: tor bandwidth settings
+WARNING: untranslated string: tor bandwidth unlimited
+WARNING: untranslated string: tor common settings
+WARNING: untranslated string: tor configuration
+WARNING: untranslated string: tor connected relays
+WARNING: untranslated string: tor contact info
+WARNING: untranslated string: tor daemon
+WARNING: untranslated string: tor directory port
+WARNING: untranslated string: tor enabled
+WARNING: untranslated string: tor errmsg invalid accounting limit
+WARNING: untranslated string: tor errmsg invalid directory port
+WARNING: untranslated string: tor errmsg invalid ip or mask
+WARNING: untranslated string: tor errmsg invalid relay address
+WARNING: untranslated string: tor errmsg invalid relay name
+WARNING: untranslated string: tor errmsg invalid relay port
+WARNING: untranslated string: tor errmsg invalid socks port
+WARNING: untranslated string: tor exit country any
+WARNING: untranslated string: tor exit nodes
+WARNING: untranslated string: tor relay address
+WARNING: untranslated string: tor relay configuration
+WARNING: untranslated string: tor relay enabled
+WARNING: untranslated string: tor relay external address
+WARNING: untranslated string: tor relay fingerprint
+WARNING: untranslated string: tor relay mode
+WARNING: untranslated string: tor relay mode bridge
+WARNING: untranslated string: tor relay mode exit
+WARNING: untranslated string: tor relay mode private bridge
+WARNING: untranslated string: tor relay mode relay
+WARNING: untranslated string: tor relay nickname
+WARNING: untranslated string: tor relay port
+WARNING: untranslated string: tor service
+WARNING: untranslated string: tor socks port
+WARNING: untranslated string: tor stats
+WARNING: untranslated string: tor traffic limit hard
+WARNING: untranslated string: tor traffic limit soft
+WARNING: untranslated string: tor traffic read written
+WARNING: untranslated string: tor use exit nodes
+WARNING: untranslated string: uplink
+WARNING: untranslated string: upload dh key
 WARNING: untranslated string: uptime load average
+WARNING: untranslated string: urlfilter redirect template
+WARNING: untranslated string: vendor
 WARNING: untranslated string: visit us at
 WARNING: untranslated string: vpn keyexchange
+WARNING: untranslated string: wlan client
+WARNING: untranslated string: wlan client advanced settings
+WARNING: untranslated string: wlan client and
+WARNING: untranslated string: wlan client bssid
+WARNING: untranslated string: wlan client ccmp
+WARNING: untranslated string: wlan client configuration
+WARNING: untranslated string: wlan client disconnected
+WARNING: untranslated string: wlan client duplicate ssid
+WARNING: untranslated string: wlan client edit entry
+WARNING: untranslated string: wlan client encryption
+WARNING: untranslated string: wlan client encryption none
+WARNING: untranslated string: wlan client encryption wep
+WARNING: untranslated string: wlan client encryption wpa
+WARNING: untranslated string: wlan client encryption wpa2
+WARNING: untranslated string: wlan client group cipher
+WARNING: untranslated string: wlan client group key algorithm
+WARNING: untranslated string: wlan client invalid key length
+WARNING: untranslated string: wlan client new entry
+WARNING: untranslated string: wlan client new network
+WARNING: untranslated string: wlan client pairwise cipher
+WARNING: untranslated string: wlan client pairwise key algorithm
+WARNING: untranslated string: wlan client pairwise key group key
+WARNING: untranslated string: wlan client psk
+WARNING: untranslated string: wlan client ssid
+WARNING: untranslated string: wlan client tkip
+WARNING: untranslated string: wlan client wpa mode
+WARNING: untranslated string: wlan client wpa mode all
+WARNING: untranslated string: wlan client wpa mode ccmp ccmp
+WARNING: untranslated string: wlan client wpa mode ccmp tkip
+WARNING: untranslated string: wlan client wpa mode tkip tkip
+WARNING: untranslated string: wlan clients
 WARNING: untranslated string: wlanap country
index bec72239401a982fd8c0c303139b8362bbfb3f37..ed42fe59551102449ffd52f460884dffea7a5519 100644 (file)
@@ -11,10 +11,13 @@ 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 a new rule
 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,10 +49,12 @@ 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
 WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
 WARNING: translation string unused: available updates
 WARNING: translation string unused: backup archive
 WARNING: translation string unused: backup clear archive
@@ -87,6 +92,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 +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
@@ -138,18 +149,29 @@ WARNING: translation string unused: dial user password
 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: disconnects
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: display webinterface effects
+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
+WARNING: translation string unused: edit a rule
 WARNING: translation string unused: edit network
 WARNING: translation string unused: edit service
 WARNING: translation string unused: editor
+WARNING: translation string unused: eg
 WARNING: translation string unused: email server can not be empty
 WARNING: translation string unused: enable javascript
 WARNING: translation string unused: enabled on
@@ -167,10 +189,19 @@ WARNING: translation string unused: err rs 7 untartst
 WARNING: translation string unused: err rs 8 untar
 WARNING: translation string unused: error config
 WARNING: translation string unused: error external access
+WARNING: translation string unused: esp encryption
+WARNING: translation string unused: esp grouptype
+WARNING: translation string unused: esp integrity
+WARNING: translation string unused: esp keylife
 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 configuration
+WARNING: translation string unused: external access rule added
 WARNING: translation string unused: external access rule changed
+WARNING: translation string unused: external access rule removed
+WARNING: translation string unused: extrahd
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
 WARNING: translation string unused: filename
@@ -179,6 +210,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
@@ -205,6 +239,10 @@ WARNING: translation string unused: icmp selected but no type
 WARNING: translation string unused: icmp type
 WARNING: translation string unused: id
 WARNING: translation string unused: ids preprocessor
+WARNING: translation string unused: ike encryption
+WARNING: translation string unused: ike grouptype
+WARNING: translation string unused: ike integrity
+WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
@@ -215,6 +253,7 @@ WARNING: translation string unused: install new update
 WARNING: translation string unused: installed
 WARNING: translation string unused: installed updates
 WARNING: translation string unused: intrusion detection system log viewer
+WARNING: translation string unused: intrusion detection system2
 WARNING: translation string unused: invalid cache size
 WARNING: translation string unused: invalid date entered
 WARNING: translation string unused: invalid downlink speed
@@ -244,6 +283,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 +309,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 +326,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
@@ -293,6 +335,7 @@ WARNING: translation string unused: network added
 WARNING: translation string unused: network configuration
 WARNING: translation string unused: network removed
 WARNING: translation string unused: network status information
+WARNING: translation string unused: network time
 WARNING: translation string unused: network traffic graphs
 WARNING: translation string unused: network updated
 WARNING: translation string unused: networks settings
@@ -311,16 +354,33 @@ 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
 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 add ip group
+WARNING: translation string unused: outgoing firewall add mac group
+WARNING: translation string unused: outgoing firewall edit ip group
+WARNING: translation string unused: outgoing firewall edit mac group
+WARNING: translation string unused: outgoing firewall group error
+WARNING: translation string unused: outgoing firewall groups
+WARNING: translation string unused: outgoing firewall ip groups
+WARNING: translation string unused: outgoing firewall mac groups
+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 view group
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
-WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
 WARNING: translation string unused: ovpn dl
 WARNING: translation string unused: ovpn log
@@ -346,9 +406,11 @@ WARNING: translation string unused: pakfire updates
 WARNING: translation string unused: password contains illegal characters
 WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters in length
+WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -360,8 +422,10 @@ WARNING: translation string unused: proxy no proxy local
 WARNING: translation string unused: proxy port
 WARNING: translation string unused: psk
 WARNING: translation string unused: quick control
+WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
 WARNING: translation string unused: reboot schedule
-WARNING: translation string unused: rebooting
+WARNING: translation string unused: reboot sure
 WARNING: translation string unused: refresh update list
 WARNING: translation string unused: released
 WARNING: translation string unused: removable device advice
@@ -376,7 +440,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
@@ -390,20 +456,30 @@ WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
 WARNING: translation string unused: show lines
-WARNING: translation string unused: shutdown control
+WARNING: translation string unused: shutdown ask
+WARNING: translation string unused: shutdown sure
 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 bad
+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 network
+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
@@ -432,6 +508,7 @@ WARNING: translation string unused: to email adr
 WARNING: translation string unused: to install an update
 WARNING: translation string unused: to warn email bad
 WARNING: translation string unused: too long 80 char max
+WARNING: translation string unused: total connection time
 WARNING: translation string unused: traffic back
 WARNING: translation string unused: traffic calc time
 WARNING: translation string unused: traffic calc time bad
@@ -455,7 +532,6 @@ WARNING: translation string unused: transparent on
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
-WARNING: translation string unused: unknown
 WARNING: translation string unused: update transcript
 WARNING: translation string unused: updates
 WARNING: translation string unused: updates is old1
@@ -489,6 +565,7 @@ WARNING: translation string unused: use dov
 WARNING: translation string unused: use ibod
 WARNING: translation string unused: view log
 WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
 WARNING: translation string unused: vpn incompatible use of defaultroute
 WARNING: translation string unused: vpn mtu invalid
 WARNING: translation string unused: vpn on blue
@@ -499,20 +576,30 @@ 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: ConnSched dial
+WARNING: untranslated string: ConnSched hangup
+WARNING: untranslated string: ConnSched reboot
+WARNING: untranslated string: ConnSched shutdown
+WARNING: untranslated string: MB read
+WARNING: untranslated string: MB written
+WARNING: untranslated string: MTU settings
+WARNING: untranslated string: Number of Countries for the pie chart
 WARNING: untranslated string: Scan for Songs
+WARNING: untranslated string: addons
 WARNING: untranslated string: advproxy cache-digest
 WARNING: untranslated string: advproxy errmsg cache
 WARNING: untranslated string: advproxy errmsg invalid upstream proxy
-WARNING: untranslated string: age second
-WARNING: untranslated string: age seconds
-WARNING: untranslated string: age shour
-WARNING: untranslated string: age sminute
-WARNING: untranslated string: age ssecond
+WARNING: untranslated string: advproxy errmsg proxy ports equal
+WARNING: untranslated string: advproxy proxy port transparent
+WARNING: untranslated string: atm device
 WARNING: untranslated string: attention
+WARNING: untranslated string: bit
 WARNING: untranslated string: bytes
+WARNING: untranslated string: capabilities
 WARNING: untranslated string: ccd add
 WARNING: untranslated string: ccd choose net
 WARNING: untranslated string: ccd client options
@@ -526,6 +613,8 @@ WARNING: untranslated string: ccd err invalidname
 WARNING: untranslated string: ccd err invalidnet
 WARNING: untranslated string: ccd err irouteexist
 WARNING: untranslated string: ccd err isipsecnet
+WARNING: untranslated string: ccd err isipsecrw
+WARNING: untranslated string: ccd err isovpnn2n
 WARNING: untranslated string: ccd err isovpnnet
 WARNING: untranslated string: ccd err issubnet
 WARNING: untranslated string: ccd err name
@@ -548,8 +637,42 @@ WARNING: untranslated string: ccd none
 WARNING: untranslated string: ccd routes
 WARNING: untranslated string: ccd subnet
 WARNING: untranslated string: ccd used
+WARNING: untranslated string: count
+WARNING: untranslated string: countries
+WARNING: untranslated string: country codes and flags
+WARNING: untranslated string: countrycode
+WARNING: untranslated string: dead peer detection
+WARNING: untranslated string: default
 WARNING: untranslated string: deprecated fs warn
+WARNING: untranslated string: details
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key move failed
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh key warn1
+WARNING: untranslated string: dh parameter
+WARNING: untranslated string: dnat address
 WARNING: untranslated string: dns address deleted txt
+WARNING: untranslated string: dns servers
+WARNING: untranslated string: dnsforward
+WARNING: untranslated string: dnsforward add a new entry
+WARNING: untranslated string: dnsforward configuration
+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: downlink
+WARNING: untranslated string: download tls-auth key
+WARNING: untranslated string: dpd delay
+WARNING: untranslated string: dpd timeout
+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: encryption
+WARNING: untranslated string: entropy
+WARNING: untranslated string: entropy graphs
 WARNING: untranslated string: fireinfo ipfire version
 WARNING: untranslated string: fireinfo is disabled
 WARNING: untranslated string: fireinfo is enabled
@@ -567,20 +690,212 @@ 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: firewall logs country
+WARNING: untranslated string: firewall rules
+WARNING: untranslated string: first
+WARNING: untranslated string: flag
+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 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 extport
+WARNING: untranslated string: fwdfw dnat nochoice
+WARNING: untranslated string: fwdfw dnat porterr
+WARNING: untranslated string: fwdfw dnat porterr2
+WARNING: untranslated string: fwdfw edit
+WARNING: untranslated string: fwdfw err nosrc
+WARNING: untranslated string: fwdfw err notgt
+WARNING: untranslated string: fwdfw err prot_port
+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 tgt_port
+WARNING: untranslated string: fwdfw err time
+WARNING: untranslated string: fwdfw external port nat
+WARNING: untranslated string: fwdfw hint ip1
+WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw hint mac
+WARNING: untranslated string: fwdfw iface
+WARNING: untranslated string: fwdfw log
+WARNING: untranslated string: fwdfw log rule
+WARNING: untranslated string: fwdfw many
+WARNING: untranslated string: fwdfw movedown
+WARNING: untranslated string: fwdfw moveup
+WARNING: untranslated string: fwdfw newrule
+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 prot41
+WARNING: untranslated string: fwdfw prot41 short
+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 warn1
+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: 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 maxservicetcp
+WARNING: untranslated string: fwhost err maxserviceudp
+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 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 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: gen dh
+WARNING: untranslated string: generate dh key
+WARNING: untranslated string: grouptype
+WARNING: untranslated string: hardware support
+WARNING: untranslated string: imei
+WARNING: untranslated string: imsi
+WARNING: untranslated string: incoming firewall access
+WARNING: untranslated string: integrity
+WARNING: untranslated string: invalid input for dpd delay
+WARNING: untranslated string: invalid input for dpd timeout
+WARNING: untranslated string: ipsec
+WARNING: untranslated string: ipsec network
+WARNING: untranslated string: last
+WARNING: untranslated string: least preferred
+WARNING: untranslated string: lifetime
+WARNING: untranslated string: mac filter
+WARNING: untranslated string: maximum
+WARNING: untranslated string: minimum
 WARNING: untranslated string: minute
-WARNING: untranslated string: new
+WARNING: untranslated string: model
+WARNING: untranslated string: modem hardware details
+WARNING: untranslated string: modem information
+WARNING: untranslated string: modem network bit error rate
+WARNING: untranslated string: modem network information
+WARNING: untranslated string: modem network mode
+WARNING: untranslated string: modem network operator
+WARNING: untranslated string: modem network registration
+WARNING: untranslated string: modem network signal quality
+WARNING: untranslated string: modem no connection
+WARNING: untranslated string: modem no connection message
+WARNING: untranslated string: modem sim information
+WARNING: untranslated string: modem status
+WARNING: untranslated string: monitor interface
+WARNING: untranslated string: most preferred
+WARNING: untranslated string: no hardware random number generator
+WARNING: untranslated string: not a valid dh key
+WARNING: untranslated string: notice
 WARNING: untranslated string: ntp common settings
 WARNING: untranslated string: ntp sync
 WARNING: untranslated string: openvpn default
 WARNING: untranslated string: openvpn destination port used
 WARNING: untranslated string: openvpn fragment allowed with udp
 WARNING: untranslated string: openvpn mssfix allowed with udp
+WARNING: untranslated string: openvpn network
 WARNING: untranslated string: openvpn prefix local subnet
 WARNING: untranslated string: openvpn prefix openvpn subnet
 WARNING: untranslated string: openvpn prefix remote subnet
 WARNING: untranslated string: openvpn subnet is used
 WARNING: untranslated string: other
-WARNING: untranslated string: outgoing firewall reserved groupname
+WARNING: untranslated string: outgoing firewall access
+WARNING: untranslated string: ovpn crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh new key
+WARNING: untranslated string: ovpn dh parameters
+WARNING: untranslated string: ovpn dh upload
+WARNING: untranslated string: ovpn generating the root and host certificates
+WARNING: untranslated string: ovpn ha
+WARNING: untranslated string: ovpn hmac
+WARNING: untranslated string: ovpn mgmt in root range
 WARNING: untranslated string: ovpn mtu-disc
 WARNING: untranslated string: ovpn mtu-disc and mtu not 1500
 WARNING: untranslated string: ovpn mtu-disc maybe
@@ -588,6 +903,10 @@ WARNING: untranslated string: ovpn mtu-disc no
 WARNING: untranslated string: ovpn mtu-disc off
 WARNING: untranslated string: ovpn mtu-disc with mssfix or fragment
 WARNING: untranslated string: ovpn mtu-disc yes
+WARNING: untranslated string: ovpn no connections
+WARNING: untranslated string: ovpn port in root range
+WARNING: untranslated string: p2p block
+WARNING: untranslated string: p2p block save notice
 WARNING: untranslated string: pakfire ago
 WARNING: untranslated string: proxy reports
 WARNING: untranslated string: proxy reports daily
@@ -595,20 +914,115 @@ 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: random number generator daemon
+WARNING: untranslated string: red1
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
 WARNING: untranslated string: routing table
 WARNING: untranslated string: server restart
+WARNING: untranslated string: show dh
+WARNING: untranslated string: show tls-auth key
+WARNING: untranslated string: snat new source ip address
 WARNING: untranslated string: snort working
+WARNING: untranslated string: software version
+WARNING: untranslated string: source ip country
+WARNING: untranslated string: ssh
 WARNING: untranslated string: static routes
+WARNING: untranslated string: support donation
+WARNING: untranslated string: system has hwrng
+WARNING: untranslated string: system has rdrand
 WARNING: untranslated string: system information
+WARNING: untranslated string: ta key
+WARNING: untranslated string: tor
+WARNING: untranslated string: tor accounting
+WARNING: untranslated string: tor accounting bytes
+WARNING: untranslated string: tor accounting bytes left
+WARNING: untranslated string: tor accounting interval
+WARNING: untranslated string: tor accounting limit
+WARNING: untranslated string: tor accounting period
+WARNING: untranslated string: tor acls
+WARNING: untranslated string: tor allowed subnets
+WARNING: untranslated string: tor bandwidth burst
+WARNING: untranslated string: tor bandwidth rate
+WARNING: untranslated string: tor bandwidth settings
+WARNING: untranslated string: tor bandwidth unlimited
+WARNING: untranslated string: tor common settings
+WARNING: untranslated string: tor configuration
+WARNING: untranslated string: tor connected relays
+WARNING: untranslated string: tor contact info
+WARNING: untranslated string: tor daemon
+WARNING: untranslated string: tor directory port
+WARNING: untranslated string: tor enabled
+WARNING: untranslated string: tor errmsg invalid accounting limit
+WARNING: untranslated string: tor errmsg invalid directory port
+WARNING: untranslated string: tor errmsg invalid ip or mask
+WARNING: untranslated string: tor errmsg invalid relay address
+WARNING: untranslated string: tor errmsg invalid relay name
+WARNING: untranslated string: tor errmsg invalid relay port
+WARNING: untranslated string: tor errmsg invalid socks port
+WARNING: untranslated string: tor exit country any
+WARNING: untranslated string: tor exit nodes
+WARNING: untranslated string: tor relay address
+WARNING: untranslated string: tor relay configuration
+WARNING: untranslated string: tor relay enabled
+WARNING: untranslated string: tor relay external address
+WARNING: untranslated string: tor relay fingerprint
+WARNING: untranslated string: tor relay mode
+WARNING: untranslated string: tor relay mode bridge
+WARNING: untranslated string: tor relay mode exit
+WARNING: untranslated string: tor relay mode private bridge
+WARNING: untranslated string: tor relay mode relay
+WARNING: untranslated string: tor relay nickname
+WARNING: untranslated string: tor relay port
+WARNING: untranslated string: tor service
+WARNING: untranslated string: tor socks port
+WARNING: untranslated string: tor stats
+WARNING: untranslated string: tor traffic limit hard
+WARNING: untranslated string: tor traffic limit soft
+WARNING: untranslated string: tor traffic read written
+WARNING: untranslated string: tor use exit nodes
+WARNING: untranslated string: uplink
+WARNING: untranslated string: upload dh key
 WARNING: untranslated string: upload new ruleset
 WARNING: untranslated string: uptime load average
 WARNING: untranslated string: urlfilter file ext block
 WARNING: untranslated string: urlfilter mode block
+WARNING: untranslated string: urlfilter redirect template
+WARNING: untranslated string: vendor
 WARNING: untranslated string: visit us at
 WARNING: untranslated string: vpn keyexchange
+WARNING: untranslated string: wlan client
+WARNING: untranslated string: wlan client advanced settings
+WARNING: untranslated string: wlan client and
+WARNING: untranslated string: wlan client bssid
+WARNING: untranslated string: wlan client ccmp
+WARNING: untranslated string: wlan client configuration
+WARNING: untranslated string: wlan client disconnected
+WARNING: untranslated string: wlan client duplicate ssid
+WARNING: untranslated string: wlan client edit entry
+WARNING: untranslated string: wlan client encryption
+WARNING: untranslated string: wlan client encryption none
+WARNING: untranslated string: wlan client encryption wep
+WARNING: untranslated string: wlan client encryption wpa
+WARNING: untranslated string: wlan client encryption wpa2
+WARNING: untranslated string: wlan client group cipher
+WARNING: untranslated string: wlan client group key algorithm
+WARNING: untranslated string: wlan client invalid key length
+WARNING: untranslated string: wlan client new entry
+WARNING: untranslated string: wlan client new network
+WARNING: untranslated string: wlan client pairwise cipher
+WARNING: untranslated string: wlan client pairwise key algorithm
+WARNING: untranslated string: wlan client pairwise key group key
+WARNING: untranslated string: wlan client psk
+WARNING: untranslated string: wlan client ssid
+WARNING: untranslated string: wlan client tkip
+WARNING: untranslated string: wlan client wpa mode
+WARNING: untranslated string: wlan client wpa mode all
+WARNING: untranslated string: wlan client wpa mode ccmp ccmp
+WARNING: untranslated string: wlan client wpa mode ccmp tkip
+WARNING: untranslated string: wlan client wpa mode tkip tkip
+WARNING: untranslated string: wlan clients
 WARNING: untranslated string: wlanap access point
 WARNING: untranslated string: wlanap channel
 WARNING: untranslated string: wlanap country
@@ -627,6 +1041,5 @@ WARNING: untranslated string: wlanap select interface
 WARNING: untranslated string: wlanap verbose
 WARNING: untranslated string: wlanap warnings
 WARNING: untranslated string: wlanap wlan card
-WARNING: untranslated string: wlanap wlan services
 WARNING: untranslated string: wlanap wlan settings
 WARNING: untranslated string: wlanap wlan status
index c6fa36f191f95881f0936e8f09bc35986aabbe6c..fbe4ba1660b7e44cd4f79b30fa5f0a4393200bca 100644 (file)
@@ -11,10 +11,13 @@ 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 a new rule
 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
@@ -39,6 +42,11 @@ WARNING: translation string unused: advproxy no cre groups
 WARNING: translation string unused: advproxy ssadvanced proxy
 WARNING: translation string unused: advproxy update information
 WARNING: translation string unused: advproxy update notification
+WARNING: translation string unused: age second
+WARNING: translation string unused: age seconds
+WARNING: translation string unused: age shour
+WARNING: translation string unused: age sminute
+WARNING: translation string unused: age ssecond
 WARNING: translation string unused: alcatelusb help
 WARNING: translation string unused: alcatelusb upload
 WARNING: translation string unused: all interfaces
@@ -46,10 +54,12 @@ 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
 WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
 WARNING: translation string unused: available updates
 WARNING: translation string unused: backup archive
 WARNING: translation string unused: backup clear archive
@@ -87,6 +97,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
@@ -127,8 +138,14 @@ WARNING: translation string unused: ddns help freedns
 WARNING: translation string unused: ddns help plus
 WARNING: translation string unused: debugme
 WARNING: translation string unused: deep scan directories
+WARNING: translation string unused: default ip
 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
@@ -140,18 +157,29 @@ WARNING: translation string unused: dial user password
 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: disconnects
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: display webinterface effects
+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
+WARNING: translation string unused: edit a rule
 WARNING: translation string unused: edit network
 WARNING: translation string unused: edit service
 WARNING: translation string unused: editor
+WARNING: translation string unused: eg
 WARNING: translation string unused: email server can not be empty
 WARNING: translation string unused: enable javascript
 WARNING: translation string unused: enabled on
@@ -169,10 +197,19 @@ WARNING: translation string unused: err rs 7 untartst
 WARNING: translation string unused: err rs 8 untar
 WARNING: translation string unused: error config
 WARNING: translation string unused: error external access
+WARNING: translation string unused: esp encryption
+WARNING: translation string unused: esp grouptype
+WARNING: translation string unused: esp integrity
+WARNING: translation string unused: esp keylife
 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 configuration
+WARNING: translation string unused: external access rule added
 WARNING: translation string unused: external access rule changed
+WARNING: translation string unused: external access rule removed
+WARNING: translation string unused: extrahd
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
 WARNING: translation string unused: filename
@@ -181,6 +218,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 +230,47 @@ 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 addrule
+WARNING: translation string unused: fwdfw err nosrcip
+WARNING: translation string unused: fwdfw err notgtip
+WARNING: translation string unused: fwdfw err prot_port1
+WARNING: translation string unused: fwdfw final_rule
+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 menu
+WARNING: translation string unused: fwdfw natport used
+WARNING: translation string unused: fwdfw p2p txt
+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: fwdfw xt access
+WARNING: translation string unused: fwhost Custom Host
+WARNING: translation string unused: fwhost Custom Network
+WARNING: translation string unused: fwhost IpSec Host
+WARNING: translation string unused: fwhost IpSec Network
+WARNING: translation string unused: fwhost OpenVPN N-2-N
+WARNING: translation string unused: fwhost OpenVPN static host
+WARNING: translation string unused: fwhost OpenVPN static network
+WARNING: translation string unused: fwhost Standard Network
+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 hosts
+WARNING: translation string unused: fwhost ipadr
+WARNING: translation string unused: fwhost ipsec host
+WARNING: translation string unused: fwhost orange
+WARNING: translation string unused: fwhost reread
+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
@@ -207,6 +289,10 @@ WARNING: translation string unused: icmp selected but no type
 WARNING: translation string unused: icmp type
 WARNING: translation string unused: id
 WARNING: translation string unused: ids preprocessor
+WARNING: translation string unused: ike encryption
+WARNING: translation string unused: ike grouptype
+WARNING: translation string unused: ike integrity
+WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
@@ -217,6 +303,7 @@ WARNING: translation string unused: install new update
 WARNING: translation string unused: installed
 WARNING: translation string unused: installed updates
 WARNING: translation string unused: intrusion detection system log viewer
+WARNING: translation string unused: intrusion detection system2
 WARNING: translation string unused: invalid cache size
 WARNING: translation string unused: invalid date entered
 WARNING: translation string unused: invalid downlink speed
@@ -229,6 +316,7 @@ WARNING: translation string unused: invalid upstream proxy username or password
 WARNING: translation string unused: invert
 WARNING: translation string unused: ip address in use
 WARNING: translation string unused: ipfire side
+WARNING: translation string unused: ipsec no connections
 WARNING: translation string unused: iptable rules
 WARNING: translation string unused: isdn
 WARNING: translation string unused: isdn settings
@@ -246,6 +334,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 +360,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 +377,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
@@ -295,6 +386,7 @@ WARNING: translation string unused: network added
 WARNING: translation string unused: network configuration
 WARNING: translation string unused: network removed
 WARNING: translation string unused: network status information
+WARNING: translation string unused: network time
 WARNING: translation string unused: network traffic graphs
 WARNING: translation string unused: network updated
 WARNING: translation string unused: networks settings
@@ -313,6 +405,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
@@ -320,12 +413,28 @@ WARNING: translation string unused: optionsfw portlist hint
 WARNING: translation string unused: optionsfw warning
 WARNING: translation string unused: or
 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 add ip group
+WARNING: translation string unused: outgoing firewall add mac group
+WARNING: translation string unused: outgoing firewall edit ip group
+WARNING: translation string unused: outgoing firewall edit mac group
+WARNING: translation string unused: outgoing firewall group error
+WARNING: translation string unused: outgoing firewall groups
+WARNING: translation string unused: outgoing firewall ip groups
+WARNING: translation string unused: outgoing firewall mac groups
+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 view group
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
-WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
 WARNING: translation string unused: ovpn dl
 WARNING: translation string unused: ovpn log
@@ -351,9 +460,11 @@ WARNING: translation string unused: pakfire updates
 WARNING: translation string unused: password contains illegal characters
 WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters in length
+WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -365,8 +476,10 @@ WARNING: translation string unused: proxy no proxy local
 WARNING: translation string unused: proxy port
 WARNING: translation string unused: psk
 WARNING: translation string unused: quick control
+WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
 WARNING: translation string unused: reboot schedule
-WARNING: translation string unused: rebooting
+WARNING: translation string unused: reboot sure
 WARNING: translation string unused: refresh update list
 WARNING: translation string unused: released
 WARNING: translation string unused: removable device advice
@@ -381,7 +494,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,20 +510,30 @@ WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
 WARNING: translation string unused: show lines
-WARNING: translation string unused: shutdown control
+WARNING: translation string unused: shutdown ask
+WARNING: translation string unused: shutdown sure
 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 bad
+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 network
+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
@@ -437,6 +562,14 @@ WARNING: translation string unused: to email adr
 WARNING: translation string unused: to install an update
 WARNING: translation string unused: to warn email bad
 WARNING: translation string unused: too long 80 char max
+WARNING: translation string unused: tor 0 = disabled
+WARNING: translation string unused: tor accounting period daily
+WARNING: translation string unused: tor accounting period monthly
+WARNING: translation string unused: tor accounting period weekly
+WARNING: translation string unused: tor bridge enabled
+WARNING: translation string unused: tor errmsg invalid node id
+WARNING: translation string unused: tor exit country
+WARNING: translation string unused: total connection time
 WARNING: translation string unused: traffic back
 WARNING: translation string unused: traffic calc time
 WARNING: translation string unused: traffic calc time bad
@@ -460,16 +593,18 @@ WARNING: translation string unused: transparent on
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
-WARNING: translation string unused: unknown
 WARNING: translation string unused: update transcript
 WARNING: translation string unused: updates
 WARNING: translation string unused: updates is old1
 WARNING: translation string unused: updates is old2
 WARNING: translation string unused: updxlrtr children
 WARNING: translation string unused: updxlrtr invalid num of children
+WARNING: translation string unused: updxlrtr sources
+WARNING: translation string unused: updxlrtr standard view
 WARNING: translation string unused: updxlrtr unknown
 WARNING: translation string unused: updxlrtr update information
 WARNING: translation string unused: updxlrtr update notification
+WARNING: translation string unused: updxlrtr used by
 WARNING: translation string unused: upload fcdsl.o
 WARNING: translation string unused: upload file
 WARNING: translation string unused: upload static key
@@ -479,6 +614,7 @@ WARNING: translation string unused: upload update file
 WARNING: translation string unused: upstream password
 WARNING: translation string unused: upstream proxy host:port
 WARNING: translation string unused: upstream username
+WARNING: translation string unused: uptime
 WARNING: translation string unused: uptime and users
 WARNING: translation string unused: urlfilter background image
 WARNING: translation string unused: urlfilter background text
@@ -492,6 +628,7 @@ WARNING: translation string unused: use dov
 WARNING: translation string unused: use ibod
 WARNING: translation string unused: view log
 WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
 WARNING: translation string unused: vpn incompatible use of defaultroute
 WARNING: translation string unused: vpn mtu invalid
 WARNING: translation string unused: vpn on blue
@@ -502,23 +639,64 @@ 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: wlanap wlan services
+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: MTU settings
+WARNING: untranslated string: Number of Countries for the pie chart
 WARNING: untranslated string: Scan for Songs
-WARNING: untranslated string: advproxy cache-digest
-WARNING: untranslated string: age second
-WARNING: untranslated string: age seconds
-WARNING: untranslated string: age shour
-WARNING: untranslated string: age sminute
-WARNING: untranslated string: age ssecond
+WARNING: untranslated string: atm device
 WARNING: untranslated string: bytes
-WARNING: untranslated string: ccd iroute2
-WARNING: untranslated string: new
-WARNING: untranslated string: outgoing firewall reserved groupname
-WARNING: untranslated string: qos enter bandwidths
+WARNING: untranslated string: capabilities
+WARNING: untranslated string: default
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key move failed
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh key warn1
+WARNING: untranslated string: dh parameter
+WARNING: untranslated string: dns servers
+WARNING: untranslated string: download tls-auth key
+WARNING: untranslated string: drop outgoing
+WARNING: untranslated string: firewall logs country
+WARNING: untranslated string: fwhost err hostip
+WARNING: untranslated string: gen dh
+WARNING: untranslated string: generate dh key
+WARNING: untranslated string: imei
+WARNING: untranslated string: imsi
+WARNING: untranslated string: model
+WARNING: untranslated string: modem hardware details
+WARNING: untranslated string: modem information
+WARNING: untranslated string: modem network bit error rate
+WARNING: untranslated string: modem network information
+WARNING: untranslated string: modem network mode
+WARNING: untranslated string: modem network operator
+WARNING: untranslated string: modem network registration
+WARNING: untranslated string: modem network signal quality
+WARNING: untranslated string: modem no connection
+WARNING: untranslated string: modem no connection message
+WARNING: untranslated string: modem sim information
+WARNING: untranslated string: modem status
+WARNING: untranslated string: monitor interface
+WARNING: untranslated string: not a valid dh key
+WARNING: untranslated string: ovpn crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh new key
+WARNING: untranslated string: ovpn dh parameters
+WARNING: untranslated string: ovpn dh upload
+WARNING: untranslated string: ovpn generating the root and host certificates
+WARNING: untranslated string: ovpn ha
+WARNING: untranslated string: ovpn hmac
+WARNING: untranslated string: random number generator daemon
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
 WARNING: untranslated string: routing table
-WARNING: untranslated string: uptime load average
+WARNING: untranslated string: show dh
+WARNING: untranslated string: show tls-auth key
+WARNING: untranslated string: software version
+WARNING: untranslated string: source ip country
+WARNING: untranslated string: ta key
+WARNING: untranslated string: upload dh key
+WARNING: untranslated string: vendor
index 0dea29c181febe014fa2708de86bcfecd2223fe2..a87250311fd98dee9ae1d9ffa2a669e00039e127 100644 (file)
@@ -11,10 +11,13 @@ 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 a new rule
 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,10 +49,12 @@ 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
 WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
 WARNING: translation string unused: available updates
 WARNING: translation string unused: backup archive
 WARNING: translation string unused: backup clear archive
@@ -87,6 +92,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 +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
@@ -138,18 +149,29 @@ WARNING: translation string unused: dial user password
 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: disconnects
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: display webinterface effects
+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
+WARNING: translation string unused: edit a rule
 WARNING: translation string unused: edit network
 WARNING: translation string unused: edit service
 WARNING: translation string unused: editor
+WARNING: translation string unused: eg
 WARNING: translation string unused: email server can not be empty
 WARNING: translation string unused: enable javascript
 WARNING: translation string unused: enabled on
@@ -167,10 +189,19 @@ WARNING: translation string unused: err rs 7 untartst
 WARNING: translation string unused: err rs 8 untar
 WARNING: translation string unused: error config
 WARNING: translation string unused: error external access
+WARNING: translation string unused: esp encryption
+WARNING: translation string unused: esp grouptype
+WARNING: translation string unused: esp integrity
+WARNING: translation string unused: esp keylife
 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 configuration
+WARNING: translation string unused: external access rule added
 WARNING: translation string unused: external access rule changed
+WARNING: translation string unused: external access rule removed
+WARNING: translation string unused: extrahd
 WARNING: translation string unused: extrahd unable to read
 WARNING: translation string unused: extrahd unable to write
 WARNING: translation string unused: filename
@@ -179,6 +210,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
@@ -205,6 +239,10 @@ WARNING: translation string unused: icmp selected but no type
 WARNING: translation string unused: icmp type
 WARNING: translation string unused: id
 WARNING: translation string unused: ids preprocessor
+WARNING: translation string unused: ike encryption
+WARNING: translation string unused: ike grouptype
+WARNING: translation string unused: ike integrity
+WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
@@ -215,6 +253,7 @@ WARNING: translation string unused: install new update
 WARNING: translation string unused: installed
 WARNING: translation string unused: installed updates
 WARNING: translation string unused: intrusion detection system log viewer
+WARNING: translation string unused: intrusion detection system2
 WARNING: translation string unused: invalid cache size
 WARNING: translation string unused: invalid date entered
 WARNING: translation string unused: invalid downlink speed
@@ -244,6 +283,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 +309,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 +326,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
@@ -293,6 +335,7 @@ WARNING: translation string unused: network added
 WARNING: translation string unused: network configuration
 WARNING: translation string unused: network removed
 WARNING: translation string unused: network status information
+WARNING: translation string unused: network time
 WARNING: translation string unused: network traffic graphs
 WARNING: translation string unused: network updated
 WARNING: translation string unused: networks settings
@@ -311,17 +354,22 @@ 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
 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
 WARNING: translation string unused: ovpn dl
 WARNING: translation string unused: ovpn log
@@ -347,9 +395,11 @@ WARNING: translation string unused: pakfire updates
 WARNING: translation string unused: password contains illegal characters
 WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters in length
+WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -361,8 +411,10 @@ WARNING: translation string unused: proxy no proxy local
 WARNING: translation string unused: proxy port
 WARNING: translation string unused: psk
 WARNING: translation string unused: quick control
+WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
 WARNING: translation string unused: reboot schedule
-WARNING: translation string unused: rebooting
+WARNING: translation string unused: reboot sure
 WARNING: translation string unused: refresh update list
 WARNING: translation string unused: released
 WARNING: translation string unused: removable device advice
@@ -377,7 +429,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
@@ -391,20 +445,30 @@ WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
 WARNING: translation string unused: show lines
-WARNING: translation string unused: shutdown control
+WARNING: translation string unused: shutdown ask
+WARNING: translation string unused: shutdown sure
 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 bad
+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 network
+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
@@ -433,6 +497,7 @@ WARNING: translation string unused: to email adr
 WARNING: translation string unused: to install an update
 WARNING: translation string unused: to warn email bad
 WARNING: translation string unused: too long 80 char max
+WARNING: translation string unused: total connection time
 WARNING: translation string unused: traffic back
 WARNING: translation string unused: traffic calc time
 WARNING: translation string unused: traffic calc time bad
@@ -456,7 +521,6 @@ WARNING: translation string unused: transparent on
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
-WARNING: translation string unused: unknown
 WARNING: translation string unused: update transcript
 WARNING: translation string unused: updates
 WARNING: translation string unused: updates is old1
@@ -488,6 +552,7 @@ WARNING: translation string unused: use dov
 WARNING: translation string unused: use ibod
 WARNING: translation string unused: view log
 WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
 WARNING: translation string unused: vpn incompatible use of defaultroute
 WARNING: translation string unused: vpn mtu invalid
 WARNING: translation string unused: vpn on blue
@@ -498,22 +563,33 @@ 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: wlanap wlan services
+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: Async logging enabled
+WARNING: untranslated string: ConnSched dial
+WARNING: untranslated string: ConnSched hangup
+WARNING: untranslated string: ConnSched reboot
+WARNING: untranslated string: ConnSched shutdown
+WARNING: untranslated string: MB read
+WARNING: untranslated string: MB written
+WARNING: untranslated string: MTU settings
+WARNING: untranslated string: Number of Countries for the pie chart
 WARNING: untranslated string: Scan for Songs
 WARNING: untranslated string: Set time on boot
+WARNING: untranslated string: addons
 WARNING: untranslated string: advproxy cache-digest
 WARNING: untranslated string: advproxy errmsg cache
 WARNING: untranslated string: advproxy errmsg invalid upstream proxy
-WARNING: untranslated string: age second
-WARNING: untranslated string: age seconds
-WARNING: untranslated string: age shour
-WARNING: untranslated string: age sminute
-WARNING: untranslated string: age ssecond
+WARNING: untranslated string: advproxy errmsg proxy ports equal
+WARNING: untranslated string: advproxy proxy port transparent
+WARNING: untranslated string: atm device
 WARNING: untranslated string: attention
+WARNING: untranslated string: bit
 WARNING: untranslated string: bytes
+WARNING: untranslated string: capabilities
 WARNING: untranslated string: ccd add
 WARNING: untranslated string: ccd choose net
 WARNING: untranslated string: ccd client options
@@ -527,6 +603,8 @@ WARNING: untranslated string: ccd err invalidname
 WARNING: untranslated string: ccd err invalidnet
 WARNING: untranslated string: ccd err irouteexist
 WARNING: untranslated string: ccd err isipsecnet
+WARNING: untranslated string: ccd err isipsecrw
+WARNING: untranslated string: ccd err isovpnn2n
 WARNING: untranslated string: ccd err isovpnnet
 WARNING: untranslated string: ccd err issubnet
 WARNING: untranslated string: ccd err name
@@ -549,7 +627,41 @@ WARNING: untranslated string: ccd none
 WARNING: untranslated string: ccd routes
 WARNING: untranslated string: ccd subnet
 WARNING: untranslated string: ccd used
+WARNING: untranslated string: count
+WARNING: untranslated string: countries
+WARNING: untranslated string: country codes and flags
+WARNING: untranslated string: countrycode
+WARNING: untranslated string: dead peer detection
+WARNING: untranslated string: default
 WARNING: untranslated string: deprecated fs warn
+WARNING: untranslated string: details
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key move failed
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh key warn1
+WARNING: untranslated string: dh parameter
+WARNING: untranslated string: dnat address
+WARNING: untranslated string: dns servers
+WARNING: untranslated string: dnsforward
+WARNING: untranslated string: dnsforward add a new entry
+WARNING: untranslated string: dnsforward configuration
+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: downlink
+WARNING: untranslated string: download tls-auth key
+WARNING: untranslated string: dpd delay
+WARNING: untranslated string: dpd timeout
+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: encryption
+WARNING: untranslated string: entropy
+WARNING: untranslated string: entropy graphs
 WARNING: untranslated string: fireinfo ipfire version
 WARNING: untranslated string: fireinfo is disabled
 WARNING: untranslated string: fireinfo is enabled
@@ -567,34 +679,214 @@ 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: firewall logs country
+WARNING: untranslated string: firewall rules
+WARNING: untranslated string: first
+WARNING: untranslated string: flag
+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 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 extport
+WARNING: untranslated string: fwdfw dnat nochoice
+WARNING: untranslated string: fwdfw dnat porterr
+WARNING: untranslated string: fwdfw dnat porterr2
+WARNING: untranslated string: fwdfw edit
+WARNING: untranslated string: fwdfw err nosrc
+WARNING: untranslated string: fwdfw err notgt
+WARNING: untranslated string: fwdfw err prot_port
+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 tgt_port
+WARNING: untranslated string: fwdfw err time
+WARNING: untranslated string: fwdfw external port nat
+WARNING: untranslated string: fwdfw hint ip1
+WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw hint mac
+WARNING: untranslated string: fwdfw iface
+WARNING: untranslated string: fwdfw log
+WARNING: untranslated string: fwdfw log rule
+WARNING: untranslated string: fwdfw many
+WARNING: untranslated string: fwdfw movedown
+WARNING: untranslated string: fwdfw moveup
+WARNING: untranslated string: fwdfw newrule
+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 prot41
+WARNING: untranslated string: fwdfw prot41 short
+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 warn1
+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: 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 maxservicetcp
+WARNING: untranslated string: fwhost err maxserviceudp
+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 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 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: gen dh
+WARNING: untranslated string: generate dh key
+WARNING: untranslated string: grouptype
+WARNING: untranslated string: hardware support
+WARNING: untranslated string: imei
+WARNING: untranslated string: imsi
+WARNING: untranslated string: incoming firewall access
+WARNING: untranslated string: integrity
+WARNING: untranslated string: invalid input for dpd delay
+WARNING: untranslated string: invalid input for dpd timeout
+WARNING: untranslated string: ipsec
+WARNING: untranslated string: ipsec network
+WARNING: untranslated string: last
+WARNING: untranslated string: least preferred
+WARNING: untranslated string: lifetime
+WARNING: untranslated string: mac filter
+WARNING: untranslated string: maximum
+WARNING: untranslated string: minimum
 WARNING: untranslated string: minute
-WARNING: untranslated string: new
+WARNING: untranslated string: model
+WARNING: untranslated string: modem hardware details
+WARNING: untranslated string: modem information
+WARNING: untranslated string: modem network bit error rate
+WARNING: untranslated string: modem network information
+WARNING: untranslated string: modem network mode
+WARNING: untranslated string: modem network operator
+WARNING: untranslated string: modem network registration
+WARNING: untranslated string: modem network signal quality
+WARNING: untranslated string: modem no connection
+WARNING: untranslated string: modem no connection message
+WARNING: untranslated string: modem sim information
+WARNING: untranslated string: modem status
+WARNING: untranslated string: monitor interface
+WARNING: untranslated string: most preferred
+WARNING: untranslated string: no hardware random number generator
+WARNING: untranslated string: not a valid dh key
+WARNING: untranslated string: notice
 WARNING: untranslated string: openvpn default
 WARNING: untranslated string: openvpn destination port used
 WARNING: untranslated string: openvpn fragment allowed with udp
 WARNING: untranslated string: openvpn mssfix allowed with udp
+WARNING: untranslated string: openvpn network
 WARNING: untranslated string: openvpn prefix local subnet
 WARNING: untranslated string: openvpn prefix openvpn subnet
 WARNING: untranslated string: openvpn prefix remote subnet
 WARNING: untranslated string: openvpn subnet is used
 WARNING: untranslated string: other
-WARNING: untranslated string: outgoing firewall add ip group
-WARNING: untranslated string: outgoing firewall add mac group
-WARNING: untranslated string: outgoing firewall edit ip group
-WARNING: untranslated string: outgoing firewall edit mac group
-WARNING: untranslated string: outgoing firewall group error
-WARNING: untranslated string: outgoing firewall groups
-WARNING: untranslated string: outgoing firewall ip groups
-WARNING: untranslated string: outgoing firewall mac groups
+WARNING: untranslated string: outgoing firewall access
 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 crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh new key
+WARNING: untranslated string: ovpn dh parameters
+WARNING: untranslated string: ovpn dh upload
 WARNING: untranslated string: ovpn errmsg green already pushed
 WARNING: untranslated string: ovpn errmsg invalid ip or mask
+WARNING: untranslated string: ovpn generating the root and host certificates
+WARNING: untranslated string: ovpn ha
+WARNING: untranslated string: ovpn hmac
+WARNING: untranslated string: ovpn mgmt in root range
 WARNING: untranslated string: ovpn mtu-disc
 WARNING: untranslated string: ovpn mtu-disc and mtu not 1500
 WARNING: untranslated string: ovpn mtu-disc maybe
@@ -602,8 +894,12 @@ WARNING: untranslated string: ovpn mtu-disc no
 WARNING: untranslated string: ovpn mtu-disc off
 WARNING: untranslated string: ovpn mtu-disc with mssfix or fragment
 WARNING: untranslated string: ovpn mtu-disc yes
+WARNING: untranslated string: ovpn no connections
+WARNING: untranslated string: ovpn port in root range
 WARNING: untranslated string: ovpn routes push
 WARNING: untranslated string: ovpn routes push options
+WARNING: untranslated string: p2p block
+WARNING: untranslated string: p2p block save notice
 WARNING: untranslated string: pakfire ago
 WARNING: untranslated string: proxy reports
 WARNING: untranslated string: proxy reports daily
@@ -611,14 +907,109 @@ 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: random number generator daemon
+WARNING: untranslated string: red1
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
 WARNING: untranslated string: routing table
 WARNING: untranslated string: server restart
+WARNING: untranslated string: show dh
+WARNING: untranslated string: show tls-auth key
+WARNING: untranslated string: snat new source ip address
+WARNING: untranslated string: software version
+WARNING: untranslated string: source ip country
+WARNING: untranslated string: ssh
 WARNING: untranslated string: static routes
+WARNING: untranslated string: support donation
+WARNING: untranslated string: system has hwrng
+WARNING: untranslated string: system has rdrand
 WARNING: untranslated string: system information
+WARNING: untranslated string: ta key
+WARNING: untranslated string: tor
+WARNING: untranslated string: tor accounting
+WARNING: untranslated string: tor accounting bytes
+WARNING: untranslated string: tor accounting bytes left
+WARNING: untranslated string: tor accounting interval
+WARNING: untranslated string: tor accounting limit
+WARNING: untranslated string: tor accounting period
+WARNING: untranslated string: tor acls
+WARNING: untranslated string: tor allowed subnets
+WARNING: untranslated string: tor bandwidth burst
+WARNING: untranslated string: tor bandwidth rate
+WARNING: untranslated string: tor bandwidth settings
+WARNING: untranslated string: tor bandwidth unlimited
+WARNING: untranslated string: tor common settings
+WARNING: untranslated string: tor configuration
+WARNING: untranslated string: tor connected relays
+WARNING: untranslated string: tor contact info
+WARNING: untranslated string: tor daemon
+WARNING: untranslated string: tor directory port
+WARNING: untranslated string: tor enabled
+WARNING: untranslated string: tor errmsg invalid accounting limit
+WARNING: untranslated string: tor errmsg invalid directory port
+WARNING: untranslated string: tor errmsg invalid ip or mask
+WARNING: untranslated string: tor errmsg invalid relay address
+WARNING: untranslated string: tor errmsg invalid relay name
+WARNING: untranslated string: tor errmsg invalid relay port
+WARNING: untranslated string: tor errmsg invalid socks port
+WARNING: untranslated string: tor exit country any
+WARNING: untranslated string: tor exit nodes
+WARNING: untranslated string: tor relay address
+WARNING: untranslated string: tor relay configuration
+WARNING: untranslated string: tor relay enabled
+WARNING: untranslated string: tor relay external address
+WARNING: untranslated string: tor relay fingerprint
+WARNING: untranslated string: tor relay mode
+WARNING: untranslated string: tor relay mode bridge
+WARNING: untranslated string: tor relay mode exit
+WARNING: untranslated string: tor relay mode private bridge
+WARNING: untranslated string: tor relay mode relay
+WARNING: untranslated string: tor relay nickname
+WARNING: untranslated string: tor relay port
+WARNING: untranslated string: tor service
+WARNING: untranslated string: tor socks port
+WARNING: untranslated string: tor stats
+WARNING: untranslated string: tor traffic limit hard
+WARNING: untranslated string: tor traffic limit soft
+WARNING: untranslated string: tor traffic read written
+WARNING: untranslated string: tor use exit nodes
+WARNING: untranslated string: uplink
+WARNING: untranslated string: upload dh key
 WARNING: untranslated string: uptime load average
+WARNING: untranslated string: urlfilter redirect template
+WARNING: untranslated string: vendor
 WARNING: untranslated string: visit us at
 WARNING: untranslated string: vpn keyexchange
+WARNING: untranslated string: wlan client
+WARNING: untranslated string: wlan client advanced settings
+WARNING: untranslated string: wlan client and
+WARNING: untranslated string: wlan client bssid
+WARNING: untranslated string: wlan client ccmp
+WARNING: untranslated string: wlan client configuration
+WARNING: untranslated string: wlan client disconnected
+WARNING: untranslated string: wlan client duplicate ssid
+WARNING: untranslated string: wlan client edit entry
+WARNING: untranslated string: wlan client encryption
+WARNING: untranslated string: wlan client encryption none
+WARNING: untranslated string: wlan client encryption wep
+WARNING: untranslated string: wlan client encryption wpa
+WARNING: untranslated string: wlan client encryption wpa2
+WARNING: untranslated string: wlan client group cipher
+WARNING: untranslated string: wlan client group key algorithm
+WARNING: untranslated string: wlan client invalid key length
+WARNING: untranslated string: wlan client new entry
+WARNING: untranslated string: wlan client new network
+WARNING: untranslated string: wlan client pairwise cipher
+WARNING: untranslated string: wlan client pairwise key algorithm
+WARNING: untranslated string: wlan client pairwise key group key
+WARNING: untranslated string: wlan client psk
+WARNING: untranslated string: wlan client ssid
+WARNING: untranslated string: wlan client tkip
+WARNING: untranslated string: wlan client wpa mode
+WARNING: untranslated string: wlan client wpa mode all
+WARNING: untranslated string: wlan client wpa mode ccmp ccmp
+WARNING: untranslated string: wlan client wpa mode ccmp tkip
+WARNING: untranslated string: wlan client wpa mode tkip tkip
+WARNING: untranslated string: wlan clients
 WARNING: untranslated string: wlanap country
index b513b59f2610776504ef0803087548be3e53f247..6104715ee8ddd83ba30d7586d0059c29fa730f71 100644 (file)
@@ -11,10 +11,13 @@ 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 a new rule
 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,10 +49,12 @@ 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
 WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
 WARNING: translation string unused: available updates
 WARNING: translation string unused: backup archive
 WARNING: translation string unused: backup clear archive
@@ -87,6 +92,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 +132,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
@@ -137,18 +148,29 @@ WARNING: translation string unused: dial user password
 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: disconnects
 WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: display webinterface effects
+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
+WARNING: translation string unused: edit a rule
 WARNING: translation string unused: edit network
 WARNING: translation string unused: edit service
 WARNING: translation string unused: editor
+WARNING: translation string unused: eg
 WARNING: translation string unused: email server can not be empty
 WARNING: translation string unused: enable javascript
 WARNING: translation string unused: enabled on
@@ -166,16 +188,28 @@ WARNING: translation string unused: err rs 7 untartst
 WARNING: translation string unused: err rs 8 untar
 WARNING: translation string unused: error config
 WARNING: translation string unused: error external access
+WARNING: translation string unused: esp encryption
+WARNING: translation string unused: esp grouptype
+WARNING: translation string unused: esp integrity
+WARNING: translation string unused: esp keylife
 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 configuration
+WARNING: translation string unused: external access rule added
 WARNING: translation string unused: external access rule changed
+WARNING: translation string unused: external access rule removed
+WARNING: translation string unused: extrahd
 WARNING: translation string unused: filename
 WARNING: translation string unused: firewall graphs
 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
@@ -200,6 +234,10 @@ WARNING: translation string unused: icmp selected but no type
 WARNING: translation string unused: icmp type
 WARNING: translation string unused: id
 WARNING: translation string unused: ids preprocessor
+WARNING: translation string unused: ike encryption
+WARNING: translation string unused: ike grouptype
+WARNING: translation string unused: ike integrity
+WARNING: translation string unused: ike lifetime
 WARNING: translation string unused: import
 WARNING: translation string unused: importkey
 WARNING: translation string unused: in
@@ -210,6 +248,7 @@ WARNING: translation string unused: install new update
 WARNING: translation string unused: installed
 WARNING: translation string unused: installed updates
 WARNING: translation string unused: intrusion detection system log viewer
+WARNING: translation string unused: intrusion detection system2
 WARNING: translation string unused: invalid cache size
 WARNING: translation string unused: invalid date entered
 WARNING: translation string unused: invalid downlink speed
@@ -239,6 +278,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 +304,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 +320,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
@@ -287,6 +329,7 @@ WARNING: translation string unused: network added
 WARNING: translation string unused: network configuration
 WARNING: translation string unused: network removed
 WARNING: translation string unused: network status information
+WARNING: translation string unused: network time
 WARNING: translation string unused: network traffic graphs
 WARNING: translation string unused: network updated
 WARNING: translation string unused: networks settings
@@ -305,16 +348,33 @@ 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
 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 add ip group
+WARNING: translation string unused: outgoing firewall add mac group
+WARNING: translation string unused: outgoing firewall edit ip group
+WARNING: translation string unused: outgoing firewall edit mac group
+WARNING: translation string unused: outgoing firewall group error
+WARNING: translation string unused: outgoing firewall groups
+WARNING: translation string unused: outgoing firewall ip groups
+WARNING: translation string unused: outgoing firewall mac groups
+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 view group
+WARNING: translation string unused: outgoing firewall warning
 WARNING: translation string unused: override mtu
-WARNING: translation string unused: ovpn
 WARNING: translation string unused: ovpn config
 WARNING: translation string unused: ovpn dl
 WARNING: translation string unused: ovpn log
@@ -340,9 +400,11 @@ WARNING: translation string unused: pakfire updates
 WARNING: translation string unused: password contains illegal characters
 WARNING: translation string unused: password crypting key
 WARNING: translation string unused: passwords must be at least 6 characters in length
+WARNING: translation string unused: phase1 group
 WARNING: translation string unused: phonebook entry
 WARNING: translation string unused: ping disabled
 WARNING: translation string unused: polfile
+WARNING: translation string unused: port forwarding configuration
 WARNING: translation string unused: ports
 WARNING: translation string unused: pots
 WARNING: translation string unused: pppoe
@@ -354,8 +416,10 @@ WARNING: translation string unused: proxy no proxy local
 WARNING: translation string unused: proxy port
 WARNING: translation string unused: psk
 WARNING: translation string unused: quick control
+WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
 WARNING: translation string unused: reboot schedule
-WARNING: translation string unused: rebooting
+WARNING: translation string unused: reboot sure
 WARNING: translation string unused: refresh update list
 WARNING: translation string unused: released
 WARNING: translation string unused: removable device advice
@@ -370,7 +434,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
@@ -384,20 +450,30 @@ WARNING: translation string unused: shaping add options
 WARNING: translation string unused: shaping list options
 WARNING: translation string unused: show areas
 WARNING: translation string unused: show lines
-WARNING: translation string unused: shutdown control
+WARNING: translation string unused: shutdown ask
+WARNING: translation string unused: shutdown sure
 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 bad
+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 network
+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
@@ -426,6 +502,7 @@ WARNING: translation string unused: to email adr
 WARNING: translation string unused: to install an update
 WARNING: translation string unused: to warn email bad
 WARNING: translation string unused: too long 80 char max
+WARNING: translation string unused: total connection time
 WARNING: translation string unused: traffic back
 WARNING: translation string unused: traffic calc time
 WARNING: translation string unused: traffic calc time bad
@@ -449,7 +526,6 @@ WARNING: translation string unused: transparent on
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
-WARNING: translation string unused: unknown
 WARNING: translation string unused: update transcript
 WARNING: translation string unused: updates
 WARNING: translation string unused: updates is old1
@@ -481,6 +557,7 @@ WARNING: translation string unused: use dov
 WARNING: translation string unused: use ibod
 WARNING: translation string unused: view log
 WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
 WARNING: translation string unused: vpn incompatible use of defaultroute
 WARNING: translation string unused: vpn mtu invalid
 WARNING: translation string unused: vpn on blue
@@ -490,21 +567,32 @@ 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: wlanap wlan services
+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
+WARNING: untranslated string: ConnSched dial
+WARNING: untranslated string: ConnSched hangup
+WARNING: untranslated string: ConnSched reboot
+WARNING: untranslated string: ConnSched shutdown
 WARNING: untranslated string: Edit an existing route
+WARNING: untranslated string: MB read
+WARNING: untranslated string: MB written
+WARNING: untranslated string: MTU settings
+WARNING: untranslated string: Number of Countries for the pie chart
 WARNING: untranslated string: Scan for Songs
+WARNING: untranslated string: addons
 WARNING: untranslated string: advproxy cache-digest
 WARNING: untranslated string: advproxy errmsg cache
 WARNING: untranslated string: advproxy errmsg invalid upstream proxy
-WARNING: untranslated string: age second
-WARNING: untranslated string: age seconds
-WARNING: untranslated string: age shour
-WARNING: untranslated string: age sminute
-WARNING: untranslated string: age ssecond
+WARNING: untranslated string: advproxy errmsg proxy ports equal
+WARNING: untranslated string: advproxy proxy port transparent
+WARNING: untranslated string: atm device
 WARNING: untranslated string: attention
+WARNING: untranslated string: bit
 WARNING: untranslated string: bytes
+WARNING: untranslated string: capabilities
 WARNING: untranslated string: ccd add
 WARNING: untranslated string: ccd choose net
 WARNING: untranslated string: ccd client options
@@ -518,6 +606,8 @@ WARNING: untranslated string: ccd err invalidname
 WARNING: untranslated string: ccd err invalidnet
 WARNING: untranslated string: ccd err irouteexist
 WARNING: untranslated string: ccd err isipsecnet
+WARNING: untranslated string: ccd err isipsecrw
+WARNING: untranslated string: ccd err isovpnn2n
 WARNING: untranslated string: ccd err isovpnnet
 WARNING: untranslated string: ccd err issubnet
 WARNING: untranslated string: ccd err name
@@ -540,8 +630,43 @@ WARNING: untranslated string: ccd none
 WARNING: untranslated string: ccd routes
 WARNING: untranslated string: ccd subnet
 WARNING: untranslated string: ccd used
+WARNING: untranslated string: community rules
+WARNING: untranslated string: count
+WARNING: untranslated string: countries
+WARNING: untranslated string: country codes and flags
+WARNING: untranslated string: countrycode
+WARNING: untranslated string: dead peer detection
+WARNING: untranslated string: default
 WARNING: untranslated string: deprecated fs warn
+WARNING: untranslated string: details
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key move failed
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh key warn1
+WARNING: untranslated string: dh parameter
 WARNING: untranslated string: disk access per
+WARNING: untranslated string: dnat address
+WARNING: untranslated string: dns servers
+WARNING: untranslated string: dnsforward
+WARNING: untranslated string: dnsforward add a new entry
+WARNING: untranslated string: dnsforward configuration
+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: downlink
+WARNING: untranslated string: download tls-auth key
+WARNING: untranslated string: dpd delay
+WARNING: untranslated string: dpd timeout
+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: encryption
+WARNING: untranslated string: entropy
+WARNING: untranslated string: entropy graphs
 WARNING: untranslated string: extrahd because there is already a device mounted
 WARNING: untranslated string: extrahd cant umount
 WARNING: untranslated string: extrahd install or load driver
@@ -549,20 +674,212 @@ 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: firewall logs country
+WARNING: untranslated string: firewall rules
+WARNING: untranslated string: first
+WARNING: untranslated string: flag
+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 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 extport
+WARNING: untranslated string: fwdfw dnat nochoice
+WARNING: untranslated string: fwdfw dnat porterr
+WARNING: untranslated string: fwdfw dnat porterr2
+WARNING: untranslated string: fwdfw edit
+WARNING: untranslated string: fwdfw err nosrc
+WARNING: untranslated string: fwdfw err notgt
+WARNING: untranslated string: fwdfw err prot_port
+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 tgt_port
+WARNING: untranslated string: fwdfw err time
+WARNING: untranslated string: fwdfw external port nat
+WARNING: untranslated string: fwdfw hint ip1
+WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw hint mac
+WARNING: untranslated string: fwdfw iface
+WARNING: untranslated string: fwdfw log
+WARNING: untranslated string: fwdfw log rule
+WARNING: untranslated string: fwdfw many
+WARNING: untranslated string: fwdfw movedown
+WARNING: untranslated string: fwdfw moveup
+WARNING: untranslated string: fwdfw newrule
+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 prot41
+WARNING: untranslated string: fwdfw prot41 short
+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 warn1
+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: 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 maxservicetcp
+WARNING: untranslated string: fwhost err maxserviceudp
+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 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 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: gen dh
+WARNING: untranslated string: generate dh key
+WARNING: untranslated string: grouptype
+WARNING: untranslated string: hardware support
+WARNING: untranslated string: imei
+WARNING: untranslated string: imsi
+WARNING: untranslated string: incoming firewall access
 WARNING: untranslated string: incoming traffic in bytes per second
+WARNING: untranslated string: integrity
+WARNING: untranslated string: invalid input for dpd delay
+WARNING: untranslated string: invalid input for dpd timeout
+WARNING: untranslated string: ipsec
+WARNING: untranslated string: ipsec network
+WARNING: untranslated string: last
+WARNING: untranslated string: least preferred
+WARNING: untranslated string: lifetime
+WARNING: untranslated string: mac filter
+WARNING: untranslated string: maximum
+WARNING: untranslated string: minimum
 WARNING: untranslated string: minute
-WARNING: untranslated string: new
+WARNING: untranslated string: model
+WARNING: untranslated string: modem hardware details
+WARNING: untranslated string: modem information
+WARNING: untranslated string: modem network bit error rate
+WARNING: untranslated string: modem network information
+WARNING: untranslated string: modem network mode
+WARNING: untranslated string: modem network operator
+WARNING: untranslated string: modem network registration
+WARNING: untranslated string: modem network signal quality
+WARNING: untranslated string: modem no connection
+WARNING: untranslated string: modem no connection message
+WARNING: untranslated string: modem sim information
+WARNING: untranslated string: modem status
+WARNING: untranslated string: monitor interface
+WARNING: untranslated string: most preferred
+WARNING: untranslated string: no hardware random number generator
+WARNING: untranslated string: not a valid dh key
+WARNING: untranslated string: notice
 WARNING: untranslated string: openvpn default
 WARNING: untranslated string: openvpn destination port used
 WARNING: untranslated string: openvpn fragment allowed with udp
 WARNING: untranslated string: openvpn mssfix allowed with udp
+WARNING: untranslated string: openvpn network
 WARNING: untranslated string: openvpn prefix local subnet
 WARNING: untranslated string: openvpn prefix openvpn subnet
 WARNING: untranslated string: openvpn prefix remote subnet
 WARNING: untranslated string: openvpn subnet is used
 WARNING: untranslated string: other
-WARNING: untranslated string: outgoing firewall reserved groupname
+WARNING: untranslated string: outgoing firewall access
 WARNING: untranslated string: outgoing traffic in bytes per second
+WARNING: untranslated string: ovpn crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh new key
+WARNING: untranslated string: ovpn dh parameters
+WARNING: untranslated string: ovpn dh upload
+WARNING: untranslated string: ovpn generating the root and host certificates
+WARNING: untranslated string: ovpn ha
+WARNING: untranslated string: ovpn hmac
+WARNING: untranslated string: ovpn mgmt in root range
 WARNING: untranslated string: ovpn mtu-disc
 WARNING: untranslated string: ovpn mtu-disc and mtu not 1500
 WARNING: untranslated string: ovpn mtu-disc maybe
@@ -570,19 +887,118 @@ WARNING: untranslated string: ovpn mtu-disc no
 WARNING: untranslated string: ovpn mtu-disc off
 WARNING: untranslated string: ovpn mtu-disc with mssfix or fragment
 WARNING: untranslated string: ovpn mtu-disc yes
+WARNING: untranslated string: ovpn no connections
+WARNING: untranslated string: ovpn port in root range
+WARNING: untranslated string: p2p block
+WARNING: untranslated string: p2p block save notice
 WARNING: untranslated string: proxy reports
 WARNING: untranslated string: proxy reports daily
 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: random number generator daemon
+WARNING: untranslated string: red1
 WARNING: untranslated string: route config changed
 WARNING: untranslated string: routing config added
 WARNING: untranslated string: routing config changed
 WARNING: untranslated string: routing table
 WARNING: untranslated string: server restart
+WARNING: untranslated string: show dh
+WARNING: untranslated string: show tls-auth key
+WARNING: untranslated string: snat new source ip address
+WARNING: untranslated string: software version
+WARNING: untranslated string: source ip country
+WARNING: untranslated string: ssh
 WARNING: untranslated string: static routes
+WARNING: untranslated string: support donation
+WARNING: untranslated string: system has hwrng
+WARNING: untranslated string: system has rdrand
+WARNING: untranslated string: ta key
+WARNING: untranslated string: tor
+WARNING: untranslated string: tor accounting
+WARNING: untranslated string: tor accounting bytes
+WARNING: untranslated string: tor accounting bytes left
+WARNING: untranslated string: tor accounting interval
+WARNING: untranslated string: tor accounting limit
+WARNING: untranslated string: tor accounting period
+WARNING: untranslated string: tor acls
+WARNING: untranslated string: tor allowed subnets
+WARNING: untranslated string: tor bandwidth burst
+WARNING: untranslated string: tor bandwidth rate
+WARNING: untranslated string: tor bandwidth settings
+WARNING: untranslated string: tor bandwidth unlimited
+WARNING: untranslated string: tor common settings
+WARNING: untranslated string: tor configuration
+WARNING: untranslated string: tor connected relays
+WARNING: untranslated string: tor contact info
+WARNING: untranslated string: tor daemon
+WARNING: untranslated string: tor directory port
+WARNING: untranslated string: tor enabled
+WARNING: untranslated string: tor errmsg invalid accounting limit
+WARNING: untranslated string: tor errmsg invalid directory port
+WARNING: untranslated string: tor errmsg invalid ip or mask
+WARNING: untranslated string: tor errmsg invalid relay address
+WARNING: untranslated string: tor errmsg invalid relay name
+WARNING: untranslated string: tor errmsg invalid relay port
+WARNING: untranslated string: tor errmsg invalid socks port
+WARNING: untranslated string: tor exit country any
+WARNING: untranslated string: tor exit nodes
+WARNING: untranslated string: tor relay address
+WARNING: untranslated string: tor relay configuration
+WARNING: untranslated string: tor relay enabled
+WARNING: untranslated string: tor relay external address
+WARNING: untranslated string: tor relay fingerprint
+WARNING: untranslated string: tor relay mode
+WARNING: untranslated string: tor relay mode bridge
+WARNING: untranslated string: tor relay mode exit
+WARNING: untranslated string: tor relay mode private bridge
+WARNING: untranslated string: tor relay mode relay
+WARNING: untranslated string: tor relay nickname
+WARNING: untranslated string: tor relay port
+WARNING: untranslated string: tor service
+WARNING: untranslated string: tor socks port
+WARNING: untranslated string: tor stats
+WARNING: untranslated string: tor traffic limit hard
+WARNING: untranslated string: tor traffic limit soft
+WARNING: untranslated string: tor traffic read written
+WARNING: untranslated string: tor use exit nodes
+WARNING: untranslated string: uplink
+WARNING: untranslated string: upload dh key
 WARNING: untranslated string: uptime load average
+WARNING: untranslated string: urlfilter redirect template
+WARNING: untranslated string: vendor
 WARNING: untranslated string: visit us at
 WARNING: untranslated string: vpn keyexchange
+WARNING: untranslated string: wlan client
+WARNING: untranslated string: wlan client advanced settings
+WARNING: untranslated string: wlan client and
+WARNING: untranslated string: wlan client bssid
+WARNING: untranslated string: wlan client ccmp
+WARNING: untranslated string: wlan client configuration
+WARNING: untranslated string: wlan client disconnected
+WARNING: untranslated string: wlan client duplicate ssid
+WARNING: untranslated string: wlan client edit entry
+WARNING: untranslated string: wlan client encryption
+WARNING: untranslated string: wlan client encryption none
+WARNING: untranslated string: wlan client encryption wep
+WARNING: untranslated string: wlan client encryption wpa
+WARNING: untranslated string: wlan client encryption wpa2
+WARNING: untranslated string: wlan client group cipher
+WARNING: untranslated string: wlan client group key algorithm
+WARNING: untranslated string: wlan client invalid key length
+WARNING: untranslated string: wlan client new entry
+WARNING: untranslated string: wlan client new network
+WARNING: untranslated string: wlan client pairwise cipher
+WARNING: untranslated string: wlan client pairwise key algorithm
+WARNING: untranslated string: wlan client pairwise key group key
+WARNING: untranslated string: wlan client psk
+WARNING: untranslated string: wlan client ssid
+WARNING: untranslated string: wlan client tkip
+WARNING: untranslated string: wlan client wpa mode
+WARNING: untranslated string: wlan client wpa mode all
+WARNING: untranslated string: wlan client wpa mode ccmp ccmp
+WARNING: untranslated string: wlan client wpa mode ccmp tkip
+WARNING: untranslated string: wlan client wpa mode tkip tkip
+WARNING: untranslated string: wlan clients
 WARNING: untranslated string: wlanap country
diff --git a/doc/language_issues.tr b/doc/language_issues.tr
new file mode 100644 (file)
index 0000000..cb73478
--- /dev/null
@@ -0,0 +1,697 @@
+WARNING: translation string unused: Client status and controlc
+WARNING: translation string unused: ConnSched scheduler
+WARNING: translation string unused: ConnSched select profile
+WARNING: translation string unused: HDD temperature
+WARNING: translation string unused: Level7 rule
+WARNING: translation string unused: Local VPN IP
+WARNING: translation string unused: Ping
+WARNING: translation string unused: Queuelenght
+WARNING: translation string unused: Remote IP
+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 a new rule
+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
+WARNING: translation string unused: advproxy LDAP auth
+WARNING: translation string unused: advproxy NTLM auth
+WARNING: translation string unused: advproxy advanced proxy
+WARNING: translation string unused: advproxy chgwebpwd ERROR
+WARNING: translation string unused: advproxy chgwebpwd SUCCESS
+WARNING: translation string unused: advproxy chgwebpwd change password
+WARNING: translation string unused: advproxy chgwebpwd change web password
+WARNING: translation string unused: advproxy chgwebpwd new password
+WARNING: translation string unused: advproxy chgwebpwd new password confirm
+WARNING: translation string unused: advproxy chgwebpwd old password
+WARNING: translation string unused: advproxy chgwebpwd username
+WARNING: translation string unused: advproxy cre disabled
+WARNING: translation string unused: advproxy errmsg change fail
+WARNING: translation string unused: advproxy errmsg change success
+WARNING: translation string unused: advproxy errmsg invalid user
+WARNING: translation string unused: advproxy errmsg no password
+WARNING: translation string unused: advproxy errmsg password incorrect
+WARNING: translation string unused: advproxy no cre groups
+WARNING: translation string unused: advproxy ssadvanced proxy
+WARNING: translation string unused: advproxy update information
+WARNING: translation string unused: advproxy update notification
+WARNING: translation string unused: age second
+WARNING: translation string unused: age seconds
+WARNING: translation string unused: age shour
+WARNING: translation string unused: age sminute
+WARNING: translation string unused: age ssecond
+WARNING: translation string unused: alcatelusb help
+WARNING: translation string unused: alcatelusb upload
+WARNING: translation string unused: all interfaces
+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
+WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
+WARNING: translation string unused: available updates
+WARNING: translation string unused: backup archive
+WARNING: translation string unused: backup clear archive
+WARNING: translation string unused: backup config floppy
+WARNING: translation string unused: backup configuration
+WARNING: translation string unused: backup erase key
+WARNING: translation string unused: backup explain key
+WARNING: translation string unused: backup explain key li1
+WARNING: translation string unused: backup explain key li2
+WARNING: translation string unused: backup explain key li3
+WARNING: translation string unused: backup explain key no1
+WARNING: translation string unused: backup explain key no2
+WARNING: translation string unused: backup export key
+WARNING: translation string unused: backup extract key
+WARNING: translation string unused: backup generate key
+WARNING: translation string unused: backup import dat file
+WARNING: translation string unused: backup import key
+WARNING: translation string unused: backup key
+WARNING: translation string unused: backup key file
+WARNING: translation string unused: backup key info
+WARNING: translation string unused: backup media info
+WARNING: translation string unused: backup missing key
+WARNING: translation string unused: backup password
+WARNING: translation string unused: backup protect key password
+WARNING: translation string unused: backup sets
+WARNING: translation string unused: backup to floppy
+WARNING: translation string unused: bad characters in
+WARNING: translation string unused: bewan adsl pci st
+WARNING: translation string unused: bewan adsl usb
+WARNING: translation string unused: bitrate
+WARNING: translation string unused: bleeding rules
+WARNING: translation string unused: blue access use hint
+WARNING: translation string unused: blue interface
+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
+WARNING: translation string unused: cfg restart
+WARNING: translation string unused: check for net traffic update
+WARNING: translation string unused: choose config
+WARNING: translation string unused: choose media
+WARNING: translation string unused: clear cache
+WARNING: translation string unused: compression
+WARNING: translation string unused: connect
+WARNING: translation string unused: connect the modem
+WARNING: translation string unused: core notice 1
+WARNING: translation string unused: core notice 2
+WARNING: translation string unused: core notice 3
+WARNING: translation string unused: could not connect to
+WARNING: translation string unused: could not connect to www ipcop org
+WARNING: translation string unused: could not connect to www ipfire org
+WARNING: translation string unused: could not create directory
+WARNING: translation string unused: could not download latest patch list
+WARNING: translation string unused: could not download the available updates list
+WARNING: translation string unused: could not open available updates file
+WARNING: translation string unused: could not open installed updates file
+WARNING: translation string unused: could not open update information file
+WARNING: translation string unused: create
+WARNING: translation string unused: create new backup
+WARNING: translation string unused: current dynamic leases
+WARNING: translation string unused: current media
+WARNING: translation string unused: current ovpn
+WARNING: translation string unused: current profile
+WARNING: translation string unused: custom networks
+WARNING: translation string unused: custom services
+WARNING: translation string unused: daily firewallhits
+WARNING: translation string unused: dat without key
+WARNING: translation string unused: day-graph
+WARNING: translation string unused: dbfile
+WARNING: translation string unused: ddns help dnsmadeeasy
+WARNING: translation string unused: ddns help freedns
+WARNING: translation string unused: ddns help plus
+WARNING: translation string unused: debugme
+WARNING: translation string unused: deep scan directories
+WARNING: translation string unused: default ip
+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
+WARNING: translation string unused: dhcp fixed lease help1
+WARNING: translation string unused: dhcp mode
+WARNING: translation string unused: dhcp server disabled on blue interface
+WARNING: translation string unused: dhcp server enabled on blue interface
+WARNING: translation string unused: dial user password
+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: disconnects
+WARNING: translation string unused: display traffic at home
+WARNING: translation string unused: display webinterface effects
+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
+WARNING: translation string unused: edit a rule
+WARNING: translation string unused: edit network
+WARNING: translation string unused: edit service
+WARNING: translation string unused: editor
+WARNING: translation string unused: eg
+WARNING: translation string unused: email server can not be empty
+WARNING: translation string unused: enable javascript
+WARNING: translation string unused: enabled on
+WARNING: translation string unused: enabledtitle
+WARNING: translation string unused: encrypted
+WARNING: translation string unused: err bk 1
+WARNING: translation string unused: err bk 10 password
+WARNING: translation string unused: err bk 2 key
+WARNING: translation string unused: err bk 3 tar
+WARNING: translation string unused: err bk 4 gz
+WARNING: translation string unused: err bk 5 encrypt
+WARNING: translation string unused: err rs 1
+WARNING: translation string unused: err rs 6 decrypt
+WARNING: translation string unused: err rs 7 untartst
+WARNING: translation string unused: err rs 8 untar
+WARNING: translation string unused: error config
+WARNING: translation string unused: error external access
+WARNING: translation string unused: esp encryption
+WARNING: translation string unused: esp grouptype
+WARNING: translation string unused: esp integrity
+WARNING: translation string unused: esp keylife
+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 configuration
+WARNING: translation string unused: external access rule added
+WARNING: translation string unused: external access rule changed
+WARNING: translation string unused: external access rule removed
+WARNING: translation string unused: extrahd
+WARNING: translation string unused: extrahd unable to read
+WARNING: translation string unused: extrahd unable to write
+WARNING: translation string unused: filename
+WARNING: translation string unused: firewall graphs
+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
+WARNING: translation string unused: from email adr
+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 addrule
+WARNING: translation string unused: fwdfw err nosrcip
+WARNING: translation string unused: fwdfw err notgtip
+WARNING: translation string unused: fwdfw err prot_port1
+WARNING: translation string unused: fwdfw final_rule
+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 menu
+WARNING: translation string unused: fwdfw natport used
+WARNING: translation string unused: fwdfw p2p txt
+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: fwdfw xt access
+WARNING: translation string unused: fwhost Custom Host
+WARNING: translation string unused: fwhost Custom Network
+WARNING: translation string unused: fwhost IpSec Host
+WARNING: translation string unused: fwhost IpSec Network
+WARNING: translation string unused: fwhost OpenVPN N-2-N
+WARNING: translation string unused: fwhost OpenVPN static host
+WARNING: translation string unused: fwhost OpenVPN static network
+WARNING: translation string unused: fwhost Standard Network
+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 hosts
+WARNING: translation string unused: fwhost ipadr
+WARNING: translation string unused: fwhost ipsec host
+WARNING: translation string unused: fwhost orange
+WARNING: translation string unused: fwhost reread
+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
+WARNING: translation string unused: generate
+WARNING: translation string unused: genkey
+WARNING: translation string unused: green interface
+WARNING: translation string unused: gz with key
+WARNING: translation string unused: hint
+WARNING: translation string unused: host
+WARNING: translation string unused: host configuration
+WARNING: translation string unused: hostname and domain already in use
+WARNING: translation string unused: hour-graph
+WARNING: translation string unused: hours2
+WARNING: translation string unused: ibod for dual isdn only
+WARNING: translation string unused: icmp selected but no type
+WARNING: translation string unused: icmp type
+WARNING: translation string unused: id
+WARNING: translation string unused: ids preprocessor
+WARNING: translation string unused: ike encryption
+WARNING: translation string unused: ike grouptype
+WARNING: translation string unused: ike integrity
+WARNING: translation string unused: ike lifetime
+WARNING: translation string unused: import
+WARNING: translation string unused: importkey
+WARNING: translation string unused: in
+WARNING: translation string unused: incorrect password
+WARNING: translation string unused: insert floppy
+WARNING: translation string unused: insert removable device
+WARNING: translation string unused: install new update
+WARNING: translation string unused: installed
+WARNING: translation string unused: installed updates
+WARNING: translation string unused: intrusion detection system log viewer
+WARNING: translation string unused: intrusion detection system2
+WARNING: translation string unused: invalid cache size
+WARNING: translation string unused: invalid date entered
+WARNING: translation string unused: invalid downlink speed
+WARNING: translation string unused: invalid loaded file
+WARNING: translation string unused: invalid md5sum
+WARNING: translation string unused: invalid port list
+WARNING: translation string unused: invalid time entered
+WARNING: translation string unused: invalid uplink speed
+WARNING: translation string unused: invalid upstream proxy username or password setting
+WARNING: translation string unused: invert
+WARNING: translation string unused: ip address in use
+WARNING: translation string unused: ipfire side
+WARNING: translation string unused: ipsec no connections
+WARNING: translation string unused: iptable rules
+WARNING: translation string unused: isdn
+WARNING: translation string unused: isdn settings
+WARNING: translation string unused: isdn1
+WARNING: translation string unused: isdn2
+WARNING: translation string unused: javascript menu error1
+WARNING: translation string unused: javascript menu error2
+WARNING: translation string unused: kernel version
+WARNING: translation string unused: key stuff
+WARNING: translation string unused: lateprompting
+WARNING: translation string unused: length
+WARNING: translation string unused: line
+WARNING: translation string unused: loaded modules
+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
+WARNING: translation string unused: ls_free/swan
+WARNING: translation string unused: ls_httpd
+WARNING: translation string unused: ls_init
+WARNING: translation string unused: ls_kernel
+WARNING: translation string unused: ls_modprobe
+WARNING: translation string unused: ls_pam_unix
+WARNING: translation string unused: ls_sshd
+WARNING: translation string unused: ls_syslogd
+WARNING: translation string unused: mac address error not 00
+WARNING: translation string unused: manage ovpn
+WARNING: translation string unused: manual control and status
+WARNING: translation string unused: marked
+WARNING: translation string unused: max incoming size
+WARNING: translation string unused: max outgoing size
+WARNING: translation string unused: max size
+WARNING: translation string unused: mbmon fan in
+WARNING: translation string unused: mbmon graphs
+WARNING: translation string unused: mbmon temp in
+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
+WARNING: translation string unused: modem on com4
+WARNING: translation string unused: modem on com5
+WARNING: translation string unused: modulation
+WARNING: translation string unused: month-graph
+WARNING: translation string unused: monthly firewallhits
+WARNING: translation string unused: monthly start day bad
+WARNING: translation string unused: monthly traffic bad
+WARNING: translation string unused: monthly volume
+WARNING: translation string unused: monthly volume start day
+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
+WARNING: translation string unused: net-traffic configuration
+WARNING: translation string unused: network added
+WARNING: translation string unused: network configuration
+WARNING: translation string unused: network removed
+WARNING: translation string unused: network status information
+WARNING: translation string unused: network time
+WARNING: translation string unused: network traffic graphs
+WARNING: translation string unused: network updated
+WARNING: translation string unused: networks settings
+WARNING: translation string unused: new optionsfw must boot
+WARNING: translation string unused: no alcatelusb firmware
+WARNING: translation string unused: no cfg upload
+WARNING: translation string unused: no eciadsl synch.bin file
+WARNING: translation string unused: no fritzdsl driver
+WARNING: translation string unused: no information available
+WARNING: translation string unused: no modem selected
+WARNING: translation string unused: no set selected
+WARNING: translation string unused: nonetworkname
+WARNING: translation string unused: noservicename
+WARNING: translation string unused: notes
+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
+WARNING: translation string unused: optionsfw portlist hint
+WARNING: translation string unused: optionsfw warning
+WARNING: translation string unused: or
+WARNING: translation string unused: original
+WARNING: translation string unused: our donors
+WARNING: translation string unused: out
+WARNING: translation string unused: outgoing firewall
+WARNING: translation string unused: outgoing firewall add ip group
+WARNING: translation string unused: outgoing firewall add mac group
+WARNING: translation string unused: outgoing firewall edit ip group
+WARNING: translation string unused: outgoing firewall edit mac group
+WARNING: translation string unused: outgoing firewall group error
+WARNING: translation string unused: outgoing firewall groups
+WARNING: translation string unused: outgoing firewall ip groups
+WARNING: translation string unused: outgoing firewall mac groups
+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 view group
+WARNING: translation string unused: outgoing firewall warning
+WARNING: translation string unused: override mtu
+WARNING: translation string unused: ovpn config
+WARNING: translation string unused: ovpn dl
+WARNING: translation string unused: ovpn log
+WARNING: translation string unused: ovpn_fastio
+WARNING: translation string unused: ovpn_fragment
+WARNING: translation string unused: ovpn_mssfix
+WARNING: translation string unused: ovpn_mtudisc
+WARNING: translation string unused: ovpn_processprio
+WARNING: translation string unused: ovpn_processprioD
+WARNING: translation string unused: ovpn_processprioED
+WARNING: translation string unused: ovpn_processprioEH
+WARNING: translation string unused: ovpn_processprioEN
+WARNING: translation string unused: ovpn_processprioH
+WARNING: translation string unused: ovpn_processprioLN
+WARNING: translation string unused: ovpn_processprioN
+WARNING: translation string unused: ovpn_processprioVD
+WARNING: translation string unused: ovpn_processprioVH
+WARNING: translation string unused: ovpnstatus log
+WARNING: translation string unused: ovpnsys log
+WARNING: translation string unused: package failed to install
+WARNING: translation string unused: pakfire core update auto
+WARNING: translation string unused: pakfire updates
+WARNING: translation string unused: password contains illegal characters
+WARNING: translation string unused: password crypting key
+WARNING: translation string unused: passwords must be at least 6 characters in length
+WARNING: translation string unused: phase1 group
+WARNING: translation string unused: phonebook entry
+WARNING: translation string unused: ping disabled
+WARNING: translation string unused: polfile
+WARNING: translation string unused: port forwarding configuration
+WARNING: translation string unused: ports
+WARNING: translation string unused: pots
+WARNING: translation string unused: pppoe
+WARNING: translation string unused: present
+WARNING: translation string unused: profiles
+WARNING: translation string unused: proxy access graphs
+WARNING: translation string unused: proxy no proxy extend
+WARNING: translation string unused: proxy no proxy local
+WARNING: translation string unused: proxy port
+WARNING: translation string unused: psk
+WARNING: translation string unused: quick control
+WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
+WARNING: translation string unused: reboot schedule
+WARNING: translation string unused: reboot sure
+WARNING: translation string unused: refresh update list
+WARNING: translation string unused: released
+WARNING: translation string unused: removable device advice
+WARNING: translation string unused: reportfile
+WARNING: translation string unused: requested data
+WARNING: translation string unused: restore hardware settings
+WARNING: translation string unused: root
+WARNING: translation string unused: root path
+WARNING: translation string unused: root user password
+WARNING: translation string unused: route subnet is invalid
+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
+WARNING: translation string unused: server reserved
+WARNING: translation string unused: service added
+WARNING: translation string unused: service removed
+WARNING: translation string unused: service updated
+WARNING: translation string unused: servicename
+WARNING: translation string unused: services settings
+WARNING: translation string unused: shaping add options
+WARNING: translation string unused: shaping list options
+WARNING: translation string unused: show areas
+WARNING: translation string unused: show lines
+WARNING: translation string unused: shutdown ask
+WARNING: translation string unused: shutdown sure
+WARNING: translation string unused: shutdown2
+WARNING: translation string unused: sitekeyfile
+WARNING: translation string unused: smbreload
+WARNING: translation string unused: source ip bad
+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 network
+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
+WARNING: translation string unused: subject test
+WARNING: translation string unused: subject warn
+WARNING: translation string unused: subnet
+WARNING: translation string unused: subnet is invalid
+WARNING: translation string unused: successfully refreshed updates list
+WARNING: translation string unused: system graphs
+WARNING: translation string unused: system log viewer
+WARNING: translation string unused: system status information
+WARNING: translation string unused: test
+WARNING: translation string unused: test email could not be sent
+WARNING: translation string unused: test email was sent
+WARNING: translation string unused: the following update was successfully installed
+WARNING: translation string unused: there are updates
+WARNING: translation string unused: there are updates available
+WARNING: translation string unused: this feature has been sponsored by
+WARNING: translation string unused: this is not a valid archive
+WARNING: translation string unused: this is not an authorised update
+WARNING: translation string unused: this months volume
+WARNING: translation string unused: this update is already installed
+WARNING: translation string unused: this weeks volume
+WARNING: translation string unused: time date manually reset
+WARNING: translation string unused: to email adr
+WARNING: translation string unused: to install an update
+WARNING: translation string unused: to warn email bad
+WARNING: translation string unused: too long 80 char max
+WARNING: translation string unused: tor 0 = disabled
+WARNING: translation string unused: tor accounting period daily
+WARNING: translation string unused: tor accounting period monthly
+WARNING: translation string unused: tor accounting period weekly
+WARNING: translation string unused: tor bridge enabled
+WARNING: translation string unused: tor errmsg invalid node id
+WARNING: translation string unused: tor exit country
+WARNING: translation string unused: total connection time
+WARNING: translation string unused: traffic back
+WARNING: translation string unused: traffic calc time
+WARNING: translation string unused: traffic calc time bad
+WARNING: translation string unused: traffic info messages
+WARNING: translation string unused: traffic monitor
+WARNING: translation string unused: traffic shaping
+WARNING: translation string unused: traffic shaping settings
+WARNING: translation string unused: traffic warn level bad
+WARNING: translation string unused: trafficblue
+WARNING: translation string unused: trafficdate
+WARNING: translation string unused: trafficfrom
+WARNING: translation string unused: trafficgreen
+WARNING: translation string unused: trafficin
+WARNING: translation string unused: trafficorange
+WARNING: translation string unused: trafficout
+WARNING: translation string unused: trafficred
+WARNING: translation string unused: trafficsum
+WARNING: translation string unused: trafficto
+WARNING: translation string unused: transfer limits
+WARNING: translation string unused: transparent on
+WARNING: translation string unused: umount
+WARNING: translation string unused: umount removable media before to unplug
+WARNING: translation string unused: unencrypted
+WARNING: translation string unused: update transcript
+WARNING: translation string unused: updates
+WARNING: translation string unused: updates is old1
+WARNING: translation string unused: updates is old2
+WARNING: translation string unused: updxlrtr children
+WARNING: translation string unused: updxlrtr invalid num of children
+WARNING: translation string unused: updxlrtr sources
+WARNING: translation string unused: updxlrtr standard view
+WARNING: translation string unused: updxlrtr unknown
+WARNING: translation string unused: updxlrtr update information
+WARNING: translation string unused: updxlrtr update notification
+WARNING: translation string unused: updxlrtr used by
+WARNING: translation string unused: upload fcdsl.o
+WARNING: translation string unused: upload file
+WARNING: translation string unused: upload static key
+WARNING: translation string unused: upload successful
+WARNING: translation string unused: upload synch.bin
+WARNING: translation string unused: upload update file
+WARNING: translation string unused: upstream password
+WARNING: translation string unused: upstream proxy host:port
+WARNING: translation string unused: upstream username
+WARNING: translation string unused: uptime
+WARNING: translation string unused: uptime and users
+WARNING: translation string unused: urlfilter background image
+WARNING: translation string unused: urlfilter background text
+WARNING: translation string unused: urlfilter enable jpeg
+WARNING: translation string unused: urlfilter update information
+WARNING: translation string unused: urlfilter update notification
+WARNING: translation string unused: urlfilter update results
+WARNING: translation string unused: urlfilter upload background
+WARNING: translation string unused: use
+WARNING: translation string unused: use dov
+WARNING: translation string unused: use ibod
+WARNING: translation string unused: view log
+WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
+WARNING: translation string unused: vpn incompatible use of defaultroute
+WARNING: translation string unused: vpn mtu invalid
+WARNING: translation string unused: vpn on blue
+WARNING: translation string unused: vpn on green
+WARNING: translation string unused: vpn on orange
+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: week-graph
+WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: wlanap wlan services
+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: MTU settings
+WARNING: untranslated string: Number of Countries for the pie chart
+WARNING: untranslated string: Scan for Songs
+WARNING: untranslated string: bytes
+WARNING: untranslated string: capabilities
+WARNING: untranslated string: default
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key move failed
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh key warn1
+WARNING: untranslated string: dh parameter
+WARNING: untranslated string: download tls-auth key
+WARNING: untranslated string: firewall logs country
+WARNING: untranslated string: fwhost err hostip
+WARNING: untranslated string: gen dh
+WARNING: untranslated string: generate dh key
+WARNING: untranslated string: imei
+WARNING: untranslated string: imsi
+WARNING: untranslated string: model
+WARNING: untranslated string: modem hardware details
+WARNING: untranslated string: modem information
+WARNING: untranslated string: modem network bit error rate
+WARNING: untranslated string: modem network information
+WARNING: untranslated string: modem network mode
+WARNING: untranslated string: modem network operator
+WARNING: untranslated string: modem network registration
+WARNING: untranslated string: modem network signal quality
+WARNING: untranslated string: modem no connection
+WARNING: untranslated string: modem no connection message
+WARNING: untranslated string: modem sim information
+WARNING: untranslated string: modem status
+WARNING: untranslated string: monitor interface
+WARNING: untranslated string: not a valid dh key
+WARNING: untranslated string: ovpn crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh new key
+WARNING: untranslated string: ovpn dh parameters
+WARNING: untranslated string: ovpn dh upload
+WARNING: untranslated string: ovpn generating the root and host certificates
+WARNING: untranslated string: ovpn ha
+WARNING: untranslated string: ovpn hmac
+WARNING: untranslated string: route config changed
+WARNING: untranslated string: routing config added
+WARNING: untranslated string: routing config changed
+WARNING: untranslated string: routing table
+WARNING: untranslated string: show dh
+WARNING: untranslated string: show tls-auth key
+WARNING: untranslated string: software version
+WARNING: untranslated string: source ip country
+WARNING: untranslated string: ta key
+WARNING: untranslated string: upload dh key
+WARNING: untranslated string: vendor
index 85e59ab73834992b656431f2906b8b7e39acdcb1..edbccbde20dd16b07e58133e0c88b96236d51384 100644 (file)
@@ -4,22 +4,30 @@
 ############################################################################
 # Checking cgi-bin translations for language: en                           #
 ############################################################################
+< addon
 < ccd maxclients
+< ovpn_fragment
 ############################################################################
 # Checking install/setup translations for language: fr                     #
 ############################################################################
 ############################################################################
 # Checking cgi-bin translations for language: fr                           #
 ############################################################################
+< addon
 < advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
+< advproxy errmsg proxy ports equal
+< advproxy proxy port transparent
 < age second
 < age seconds
 < age shour
 < age sminute
 < age ssecond
+< atm device
 < attention
+< bit
+< capabilities
 < ccd add
 < ccd choose net
 < ccd clientip
@@ -34,6 +42,8 @@
 < ccd err iroute
 < ccd err irouteexist
 < ccd err isipsecnet
+< ccd err isipsecrw
+< ccd err isovpnn2n
 < ccd err isovpnnet
 < ccd err issubnet
 < ccd err name
 < ccd routes
 < ccd subnet
 < ccd used
+< ConnSched dial
+< ConnSched hangup
+< ConnSched reboot
+< ConnSched shutdown
+< count
+< countries
+< countrycode
+< country codes and flags
+< default
+< default ip
 < deprecated fs warn
+< details
+< dh
+< dh key move failed
+< dh key warn
+< dh key warn1
+< dh parameter
+< dnat address
 < dns address deleted txt
+< dnsforward
+< dnsforward add a new entry
+< dnsforward configuration
+< dnsforward edit an entry
+< dnsforward entries
+< dnsforward forward_server
+< dnsforward zone
+< dns servers
+< download dh parameter
+< download tls-auth key
+< dpd delay
+< dpd timeout
+< drop action
+< drop action1
+< drop action2
+< drop forward
+< drop outgoing
+< encryption
+< entropy
+< entropy graphs
 < fireinfo ipfire version
 < fireinfo is disabled
 < fireinfo is enabled
 < fireinfo why enable
 < fireinfo why read more
 < fireinfo your profile id
+< firewall logs country
+< firewall rules
+< flag
+< 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 extport
+< fwdfw dnat nochoice
+< fwdfw dnat porterr
+< fwdfw dnat porterr2
+< 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 hint mac
+< fwdfw iface
+< fwdfw ipsec network
+< fwdfw log
+< fwdfw log rule
+< fwdfw man port
+< fwdfw many
+< 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 prot41
+< fwdfw prot41 short
+< 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 warn1
+< 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 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 Custom Host
+< fwhost Custom Network
+< 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 maxservicetcp
+< fwhost err maxserviceudp
+< 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 Host
+< fwhost ipsec net
+< fwhost IpSec Network
+< fwhost menu
+< fwhost netaddress
+< fwhost newgrp
+< fwhost newhost
+< fwhost newnet
+< fwhost newservice
+< fwhost newservicegrp
+< fwhost OpenVPN N-2-N
+< fwhost OpenVPN static host
+< fwhost OpenVPN static network
+< fwhost orange
+< fwhost ovpn_n2n
+< fwhost port
+< fwhost prot
+< fwhost reread
+< fwhost reset
+< fwhost services
+< fwhost srv_name
+< fwhost Standard Network
+< 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
+< gen dh
+< generate dh key
+< grouptype
+< hardware support
+< imei
+< imsi
+< incoming firewall access
+< integrity
+< invalid input for dpd delay
+< invalid input for dpd timeout
+< ipsec
+< ipsec network
+< ipsec no connections
+< least preferred
+< lifetime
+< mac filter
+< maximum
+< MB read
+< MB written
+< minimum
 < minute
+< model
+< modem hardware details
+< modem information
+< modem network bit error rate
+< modem network information
+< modem network mode
+< modem network operator
+< modem network registration
+< modem network signal quality
+< modem no connection
+< modem no connection message
+< modem sim information
+< modem status
+< monitor interface
+< most preferred
+< MTU settings
+< never
+< no hardware random number generator
+< not a valid dh key
+< notice
 < ntp common settings
 < ntp sync
+< Number of Countries for the pie chart
 < openvpn default
 < openvpn destination port used
 < openvpn disabled
 < openvpn enabled
 < openvpn fragment allowed with udp
 < openvpn mssfix allowed with udp
+< openvpn network
 < openvpn prefix local subnet
 < openvpn prefix openvpn subnet
 < openvpn prefix remote subnet
 < openvpn subnet is used
 < other
 < our donors
+< outgoing firewall access
+< ovpn crypt options
+< ovpn dh
+< ovpn dh new key
+< ovpn dh parameters
+< ovpn dh upload
+< ovpn engines
+< ovpn generating the root and host certificates
+< ovpn ha
+< ovpn hmac
+< ovpn mgmt in root range
 < ovpn mtu-disc
 < ovpn mtu-disc and mtu not 1500
 < ovpn mtu-disc maybe
 < ovpn mtu-disc off
 < ovpn mtu-disc with mssfix or fragment
 < ovpn mtu-disc yes
+< ovpn no connections
+< ovpn port in root range
+< ovpn reneg sec
+< p2p block
+< p2p block save notice
 < proxy reports
 < proxy reports daily
 < proxy reports monthly
 < proxy reports today
 < proxy reports weekly
 < qos enter bandwidths
+< random number generator daemon
+< red1
 < server restart
+< show dh
+< snat new source ip address
 < snort working
+< software version
+< source ip country
+< ssh
 < static routes
+< support donation
+< system has hwrng
+< system has rdrand
 < system information
+< ta key
+< tor
+< tor 0 = disabled
+< tor accounting
+< tor accounting bytes
+< tor accounting bytes left
+< tor accounting interval
+< tor accounting limit
+< tor accounting period
+< tor accounting period daily
+< tor accounting period monthly
+< tor accounting period weekly
+< tor acls
+< tor allowed subnets
+< tor bandwidth burst
+< tor bandwidth rate
+< tor bandwidth settings
+< tor bandwidth unlimited
+< tor common settings
+< tor configuration
+< tor connected relays
+< tor contact info
+< tor daemon
+< tor directory port
+< tor enabled
+< tor errmsg invalid accounting limit
+< tor errmsg invalid directory port
+< tor errmsg invalid ip or mask
+< tor errmsg invalid relay address
+< tor errmsg invalid relay name
+< tor errmsg invalid relay port
+< tor errmsg invalid socks port
+< tor exit country
+< tor exit country any
+< tor exit nodes
+< tor relay address
+< tor relay configuration
+< tor relay enabled
+< tor relay external address
+< tor relay fingerprint
+< tor relay mode
+< tor relay mode bridge
+< tor relay mode exit
+< tor relay mode private bridge
+< tor relay mode relay
+< tor relay nickname
+< tor relay port
+< tor service
+< tor socks port
+< tor stats
+< tor traffic limit hard
+< tor traffic limit soft
+< tor traffic read written
+< tor use exit nodes
 < updxlrtr sources
 < updxlrtr standard view
+< upload dh key
 < upload new ruleset
 < uptime
 < uptime load average
 < urlfilter file ext block
 < urlfilter mode block
+< urlfilter redirect template
+< vendor
 < visit us at
 < vpn keyexchange
 < wlanap access point
 < wlanap channel
+< wlanap country
 < wlanap debugging
 < wlanap del interface
 < wlanap encryption
 < wlanap wlan services
 < wlanap wlan settings
 < wlanap wlan status
+< wlan client
+< wlan client advanced settings
+< wlan client and
+< wlan client bssid
+< wlan client ccmp
+< wlan client configuration
+< wlan client disconnected
+< wlan client duplicate ssid
+< wlan client edit entry
+< wlan client encryption
+< wlan client encryption none
+< wlan client encryption wep
+< wlan client encryption wpa
+< wlan client encryption wpa2
+< wlan client group cipher
+< wlan client group key algorithm
+< wlan client invalid key length
+< wlan client new entry
+< wlan client new network
+< wlan client pairwise cipher
+< wlan client pairwise key algorithm
+< wlan client pairwise key group key
+< wlan client psk
+< wlan clients
+< wlan client ssid
+< wlan client tkip
+< wlan client wpa mode
+< wlan client wpa mode all
+< wlan client wpa mode ccmp ccmp
+< wlan client wpa mode ccmp tkip
+< wlan client wpa mode tkip tkip
 ############################################################################
 # Checking install/setup translations for language: es                     #
 ############################################################################
 ############################################################################
 # Checking cgi-bin translations for language: es                           #
 ############################################################################
+< addon
 < advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
+< advproxy errmsg proxy ports equal
+< advproxy proxy port transparent
 < age second
 < age seconds
 < age shour
 < age sminute
 < age ssecond
 < Async logging enabled
+< atm device
 < attention
+< bit
+< capabilities
 < ccd add
 < ccd choose net
 < ccd clientip
 < ccd err iroute
 < ccd err irouteexist
 < ccd err isipsecnet
+< ccd err isipsecrw
+< ccd err isovpnn2n
 < ccd err isovpnnet
 < ccd err issubnet
 < ccd err name
 < ccd routes
 < ccd subnet
 < ccd used
+< ConnSched dial
+< ConnSched hangup
+< ConnSched reboot
+< ConnSched shutdown
+< count
+< countries
+< countrycode
+< country codes and flags
+< default
+< default ip
 < deprecated fs warn
+< details
+< dh
+< dh key move failed
+< dh key warn
+< dh key warn1
+< dh parameter
+< dnat address
+< dnsforward
+< dnsforward add a new entry
+< dnsforward configuration
+< dnsforward edit an entry
+< dnsforward entries
+< dnsforward forward_server
+< dnsforward zone
+< dns servers
+< download dh parameter
+< download tls-auth key
+< dpd delay
+< dpd timeout
+< drop action
+< drop action1
+< drop action2
+< drop forward
+< drop outgoing
+< encryption
+< entropy
+< entropy graphs
 < fireinfo ipfire version
 < fireinfo is disabled
 < fireinfo is enabled
 < fireinfo why enable
 < fireinfo why read more
 < fireinfo your profile id
+< firewall logs country
+< firewall rules
+< flag
+< 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 extport
+< fwdfw dnat nochoice
+< fwdfw dnat porterr
+< fwdfw dnat porterr2
+< 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 hint mac
+< fwdfw iface
+< fwdfw ipsec network
+< fwdfw log
+< fwdfw log rule
+< fwdfw man port
+< fwdfw many
+< 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 prot41
+< fwdfw prot41 short
+< 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 warn1
+< 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 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 Custom Host
+< fwhost Custom Network
+< 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 maxservicetcp
+< fwhost err maxserviceudp
+< 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 Host
+< fwhost ipsec net
+< fwhost IpSec Network
+< fwhost menu
+< fwhost netaddress
+< fwhost newgrp
+< fwhost newhost
+< fwhost newnet
+< fwhost newservice
+< fwhost newservicegrp
+< fwhost OpenVPN N-2-N
+< fwhost OpenVPN static host
+< fwhost OpenVPN static network
+< fwhost orange
+< fwhost ovpn_n2n
+< fwhost port
+< fwhost prot
+< fwhost reread
+< fwhost reset
+< fwhost services
+< fwhost srv_name
+< fwhost Standard Network
+< 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
+< gen dh
+< generate dh key
+< grouptype
+< hardware support
+< imei
+< imsi
+< incoming firewall access
+< integrity
+< invalid input for dpd delay
+< invalid input for dpd timeout
+< ipsec
+< ipsec network
+< ipsec no connections
+< least preferred
+< lifetime
+< mac filter
+< maximum
+< MB read
+< MB written
+< minimum
 < minute
+< model
+< modem hardware details
+< modem information
+< modem network bit error rate
+< modem network information
+< modem network mode
+< modem network operator
+< modem network registration
+< modem network signal quality
+< modem no connection
+< modem no connection message
+< modem sim information
+< modem status
+< monitor interface
+< most preferred
+< MTU settings
+< never
+< no hardware random number generator
+< not a valid dh key
+< notice
+< Number of Countries for the pie chart
 < openvpn default
 < openvpn destination port used
 < openvpn disabled
 < openvpn enabled
 < openvpn fragment allowed with udp
 < openvpn mssfix allowed with udp
+< openvpn network
 < openvpn prefix local subnet
 < openvpn prefix openvpn subnet
 < openvpn prefix remote subnet
 < openvpn subnet is used
 < other
 < our donors
+< outgoing firewall access
 < outgoing firewall add ip group
 < outgoing firewall add mac group
 < outgoing firewall edit ip group
 < outgoing firewall p2p description 2
 < outgoing firewall p2p description 3
 < outgoing firewall view group
+< ovpn crypt options
+< ovpn dh
+< ovpn dh new key
+< ovpn dh parameters
+< ovpn dh upload
+< ovpn engines
 < ovpn errmsg green already pushed
 < ovpn errmsg invalid ip or mask
+< ovpn generating the root and host certificates
+< ovpn ha
+< ovpn hmac
+< ovpn mgmt in root range
 < ovpn mtu-disc
 < ovpn mtu-disc and mtu not 1500
 < ovpn mtu-disc maybe
 < ovpn mtu-disc off
 < ovpn mtu-disc with mssfix or fragment
 < ovpn mtu-disc yes
+< ovpn no connections
+< ovpn port in root range
+< ovpn reneg sec
 < ovpn routes push
 < ovpn routes push options
+< p2p block
+< p2p block save notice
 < proxy reports
 < proxy reports daily
 < proxy reports monthly
 < proxy reports today
 < proxy reports weekly
 < qos enter bandwidths
+< random number generator daemon
+< red1
 < server restart
 < Set time on boot
+< show dh
+< snat new source ip address
+< software version
+< source ip country
+< ssh
 < static routes
+< support donation
+< system has hwrng
+< system has rdrand
 < system information
+< ta key
+< tor
+< tor 0 = disabled
+< tor accounting
+< tor accounting bytes
+< tor accounting bytes left
+< tor accounting interval
+< tor accounting limit
+< tor accounting period
+< tor accounting period daily
+< tor accounting period monthly
+< tor accounting period weekly
+< tor acls
+< tor allowed subnets
+< tor bandwidth burst
+< tor bandwidth rate
+< tor bandwidth settings
+< tor bandwidth unlimited
+< tor common settings
+< tor configuration
+< tor connected relays
+< tor contact info
+< tor daemon
+< tor directory port
+< tor enabled
+< tor errmsg invalid accounting limit
+< tor errmsg invalid directory port
+< tor errmsg invalid ip or mask
+< tor errmsg invalid relay address
+< tor errmsg invalid relay name
+< tor errmsg invalid relay port
+< tor errmsg invalid socks port
+< tor exit country
+< tor exit country any
+< tor exit nodes
+< tor relay address
+< tor relay configuration
+< tor relay enabled
+< tor relay external address
+< tor relay fingerprint
+< tor relay mode
+< tor relay mode bridge
+< tor relay mode exit
+< tor relay mode private bridge
+< tor relay mode relay
+< tor relay nickname
+< tor relay port
+< tor service
+< tor socks port
+< tor stats
+< tor traffic limit hard
+< tor traffic limit soft
+< tor traffic read written
+< tor use exit nodes
 < updxlrtr sources
 < updxlrtr standard view
+< upload dh key
 < uptime
 < uptime load average
+< urlfilter redirect template
+< vendor
 < visit us at
 < vpn keyexchange
+< wlanap country
+< wlan client
+< wlan client advanced settings
+< wlan client and
+< wlan client bssid
+< wlan client ccmp
+< wlan client configuration
+< wlan client disconnected
+< wlan client duplicate ssid
+< wlan client edit entry
+< wlan client encryption
+< wlan client encryption none
+< wlan client encryption wep
+< wlan client encryption wpa
+< wlan client encryption wpa2
+< wlan client group cipher
+< wlan client group key algorithm
+< wlan client invalid key length
+< wlan client new entry
+< wlan client new network
+< wlan client pairwise cipher
+< wlan client pairwise key algorithm
+< wlan client pairwise key group key
+< wlan client psk
+< wlan clients
+< wlan client ssid
+< wlan client tkip
+< wlan client wpa mode
+< wlan client wpa mode all
+< wlan client wpa mode ccmp ccmp
+< wlan client wpa mode ccmp tkip
+< wlan client wpa mode tkip tkip
 ############################################################################
 # Checking install/setup translations for language: pl                     #
 ############################################################################
 ############################################################################
 # Checking cgi-bin translations for language: pl                           #
 ############################################################################
+< addon
 < advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
+< advproxy errmsg proxy ports equal
+< advproxy proxy port transparent
 < age second
 < age seconds
 < age shour
 < age sminute
 < age ssecond
+< atm device
 < attention
+< bit
+< capabilities
 < ccd add
 < ccd choose net
 < ccd clientip
 < ccd err iroute
 < ccd err irouteexist
 < ccd err isipsecnet
+< ccd err isipsecrw
+< ccd err isovpnn2n
 < ccd err isovpnnet
 < ccd err issubnet
 < ccd err name
 < ccd routes
 < ccd subnet
 < ccd used
+< ConnSched dial
+< ConnSched hangup
+< ConnSched reboot
+< ConnSched shutdown
+< count
+< countries
+< countrycode
+< country codes and flags
+< default
+< default ip
 < deprecated fs warn
+< details
+< dh
+< dh key move failed
+< dh key warn
+< dh key warn1
+< dh parameter
+< dnat address
+< dnsforward
+< dnsforward add a new entry
+< dnsforward configuration
+< dnsforward edit an entry
+< dnsforward entries
+< dnsforward forward_server
+< dnsforward zone
+< dns servers
+< download dh parameter
+< download tls-auth key
+< dpd delay
+< dpd timeout
+< drop action
+< drop action1
+< drop action2
+< drop forward
+< drop outgoing
+< encryption
+< entropy
+< entropy graphs
 < 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
+< firewall logs country
+< firewall rules
+< flag
+< 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 extport
+< fwdfw dnat nochoice
+< fwdfw dnat porterr
+< fwdfw dnat porterr2
+< 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 hint mac
+< fwdfw iface
+< fwdfw ipsec network
+< fwdfw log
+< fwdfw log rule
+< fwdfw man port
+< fwdfw many
+< 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 prot41
+< fwdfw prot41 short
+< 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 warn1
+< 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 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 Custom Host
+< fwhost Custom Network
+< 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 maxservicetcp
+< fwhost err maxserviceudp
+< 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 Host
+< fwhost ipsec net
+< fwhost IpSec Network
+< fwhost menu
+< fwhost netaddress
+< fwhost newgrp
+< fwhost newhost
+< fwhost newnet
+< fwhost newservice
+< fwhost newservicegrp
+< fwhost OpenVPN N-2-N
+< fwhost OpenVPN static host
+< fwhost OpenVPN static network
+< fwhost orange
+< fwhost ovpn_n2n
+< fwhost port
+< fwhost prot
+< fwhost reread
+< fwhost reset
+< fwhost services
+< fwhost srv_name
+< fwhost Standard Network
+< 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
+< gen dh
+< generate dh key
+< grouptype
+< hardware support
+< imei
+< imsi
+< incoming firewall access
+< integrity
+< invalid input for dpd delay
+< invalid input for dpd timeout
+< ipsec
+< ipsec network
+< ipsec no connections
+< least preferred
+< lifetime
+< mac filter
+< maximum
+< MB read
+< MB written
+< minimum
 < minute
+< model
+< modem hardware details
+< modem information
+< modem network bit error rate
+< modem network information
+< modem network mode
+< modem network operator
+< modem network registration
+< modem network signal quality
+< modem no connection
+< modem no connection message
+< modem sim information
+< modem status
+< monitor interface
+< most preferred
+< MTU settings
+< never
+< no hardware random number generator
+< not a valid dh key
+< notice
+< Number of Countries for the pie chart
 < openvpn default
 < openvpn destination port used
 < openvpn disabled
 < openvpn enabled
 < openvpn fragment allowed with udp
 < openvpn mssfix allowed with udp
+< openvpn network
 < openvpn prefix local subnet
 < openvpn prefix openvpn subnet
 < openvpn prefix remote subnet
 < openvpn subnet is used
 < other
 < our donors
+< outgoing firewall access
+< ovpn crypt options
+< ovpn dh
+< ovpn dh new key
+< ovpn dh parameters
+< ovpn dh upload
+< ovpn engines
 < ovpn errmsg green already pushed
 < ovpn errmsg invalid ip or mask
+< ovpn generating the root and host certificates
+< ovpn ha
+< ovpn hmac
+< ovpn mgmt in root range
 < ovpn mtu-disc
 < ovpn mtu-disc and mtu not 1500
 < ovpn mtu-disc maybe
 < ovpn mtu-disc off
 < ovpn mtu-disc with mssfix or fragment
 < ovpn mtu-disc yes
+< ovpn no connections
+< ovpn port in root range
+< ovpn reneg sec
 < ovpn routes push
 < ovpn routes push options
+< p2p block
+< p2p block save notice
 < proxy reports
 < proxy reports daily
 < proxy reports monthly
 < proxy reports today
 < proxy reports weekly
 < qos enter bandwidths
+< random number generator daemon
+< red1
 < server restart
+< show dh
+< snat new source ip address
+< software version
+< source ip country
+< ssh
 < static routes
+< support donation
+< system has hwrng
+< system has rdrand
+< ta key
+< tor
+< tor 0 = disabled
+< tor accounting
+< tor accounting bytes
+< tor accounting bytes left
+< tor accounting interval
+< tor accounting limit
+< tor accounting period
+< tor accounting period daily
+< tor accounting period monthly
+< tor accounting period weekly
+< tor acls
+< tor allowed subnets
+< tor bandwidth burst
+< tor bandwidth rate
+< tor bandwidth settings
+< tor bandwidth unlimited
+< tor common settings
+< tor configuration
+< tor connected relays
+< tor contact info
+< tor daemon
+< tor directory port
+< tor enabled
+< tor errmsg invalid accounting limit
+< tor errmsg invalid directory port
+< tor errmsg invalid ip or mask
+< tor errmsg invalid relay address
+< tor errmsg invalid relay name
+< tor errmsg invalid relay port
+< tor errmsg invalid socks port
+< tor exit country
+< tor exit country any
+< tor exit nodes
+< tor relay address
+< tor relay configuration
+< tor relay enabled
+< tor relay external address
+< tor relay fingerprint
+< tor relay mode
+< tor relay mode bridge
+< tor relay mode exit
+< tor relay mode private bridge
+< tor relay mode relay
+< tor relay nickname
+< tor relay port
+< tor service
+< tor socks port
+< tor stats
+< tor traffic limit hard
+< tor traffic limit soft
+< tor traffic read written
+< tor use exit nodes
 < updxlrtr sources
 < updxlrtr standard view
+< upload dh key
 < uptime
 < uptime load average
+< urlfilter redirect template
+< vendor
 < visit us at
 < vpn keyexchange
+< wlanap country
+< wlan client
+< wlan client advanced settings
+< wlan client and
+< wlan client bssid
+< wlan client ccmp
+< wlan client configuration
+< wlan client disconnected
+< wlan client duplicate ssid
+< wlan client edit entry
+< wlan client encryption
+< wlan client encryption none
+< wlan client encryption wep
+< wlan client encryption wpa
+< wlan client encryption wpa2
+< wlan client group cipher
+< wlan client group key algorithm
+< wlan client invalid key length
+< wlan client new entry
+< wlan client new network
+< wlan client pairwise cipher
+< wlan client pairwise key algorithm
+< wlan client pairwise key group key
+< wlan client psk
+< wlan clients
+< wlan client ssid
+< wlan client tkip
+< wlan client wpa mode
+< wlan client wpa mode all
+< wlan client wpa mode ccmp ccmp
+< wlan client wpa mode ccmp tkip
+< wlan client wpa mode tkip tkip
 ############################################################################
 # Checking install/setup translations for language: ru                     #
 ############################################################################
 # Checking cgi-bin translations for language: ru                           #
 ############################################################################
 < Add a route
+< addon
 < advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
+< advproxy errmsg proxy ports equal
+< advproxy proxy port transparent
 < age second
 < age seconds
 < age shour
 < age sminute
 < age ssecond
+< atm device
 < attention
+< bit
+< capabilities
 < ccd add
 < ccd choose net
 < ccd clientip
 < ccd err iroute
 < ccd err irouteexist
 < ccd err isipsecnet
+< ccd err isipsecrw
+< ccd err isovpnn2n
 < ccd err isovpnnet
 < ccd err issubnet
 < ccd err name
 < ccd routes
 < ccd subnet
 < ccd used
+< ConnSched dial
+< ConnSched hangup
+< ConnSched reboot
+< ConnSched shutdown
+< count
+< countries
+< countrycode
+< country codes and flags
 < day-graph
+< default
+< default ip
 < deprecated fs warn
+< details
+< dh
+< dh key move failed
+< dh key warn
+< dh key warn1
+< dh parameter
 < disk access per
+< dnat address
+< dnsforward
+< dnsforward add a new entry
+< dnsforward configuration
+< dnsforward edit an entry
+< dnsforward entries
+< dnsforward forward_server
+< dnsforward zone
+< dns servers
+< download dh parameter
+< download tls-auth key
+< dpd delay
+< dpd timeout
+< drop action
+< drop action1
+< drop action2
+< drop forward
+< drop outgoing
 < Edit an existing route
+< encryption
+< entropy
+< entropy graphs
 < 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
+< firewall logs country
+< firewall rules
+< flag
+< 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 extport
+< fwdfw dnat nochoice
+< fwdfw dnat porterr
+< fwdfw dnat porterr2
+< 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 hint mac
+< fwdfw iface
+< fwdfw ipsec network
+< fwdfw log
+< fwdfw log rule
+< fwdfw man port
+< fwdfw many
+< 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 prot41
+< fwdfw prot41 short
+< 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 warn1
+< 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 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 Custom Host
+< fwhost Custom Network
+< 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 maxservicetcp
+< fwhost err maxserviceudp
+< 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 Host
+< fwhost ipsec net
+< fwhost IpSec Network
+< fwhost menu
+< fwhost netaddress
+< fwhost newgrp
+< fwhost newhost
+< fwhost newnet
+< fwhost newservice
+< fwhost newservicegrp
+< fwhost OpenVPN N-2-N
+< fwhost OpenVPN static host
+< fwhost OpenVPN static network
+< fwhost orange
+< fwhost ovpn_n2n
+< fwhost port
+< fwhost prot
+< fwhost reread
+< fwhost reset
+< fwhost services
+< fwhost srv_name
+< fwhost Standard Network
+< 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
+< gen dh
+< generate dh key
+< grouptype
+< hardware support
 < hour-graph
+< imei
+< imsi
+< incoming firewall access
 < incoming traffic in bytes per second
+< integrity
+< invalid input for dpd delay
+< invalid input for dpd timeout
+< ipsec
+< ipsec network
+< ipsec no connections
+< least preferred
+< lifetime
+< mac filter
+< maximum
+< MB read
+< MB written
+< minimum
 < minute
+< model
+< modem hardware details
+< modem information
+< modem network bit error rate
+< modem network information
+< modem network mode
+< modem network operator
+< modem network registration
+< modem network signal quality
+< modem no connection
+< modem no connection message
+< modem sim information
+< modem status
+< monitor interface
 < month-graph
+< most preferred
+< MTU settings
+< never
+< no hardware random number generator
+< not a valid dh key
+< notice
+< Number of Countries for the pie chart
 < openvpn default
 < openvpn destination port used
 < openvpn disabled
 < openvpn enabled
 < openvpn fragment allowed with udp
 < openvpn mssfix allowed with udp
+< openvpn network
 < openvpn prefix local subnet
 < openvpn prefix openvpn subnet
 < openvpn prefix remote subnet
 < openvpn subnet is used
 < other
 < our donors
+< outgoing firewall access
 < outgoing traffic in bytes per second
+< ovpn crypt options
+< ovpn dh
+< ovpn dh new key
+< ovpn dh parameters
+< ovpn dh upload
+< ovpn engines
+< ovpn generating the root and host certificates
+< ovpn ha
+< ovpn hmac
+< ovpn mgmt in root range
 < ovpn mtu-disc
 < ovpn mtu-disc and mtu not 1500
 < ovpn mtu-disc maybe
 < ovpn mtu-disc off
 < ovpn mtu-disc with mssfix or fragment
 < ovpn mtu-disc yes
+< ovpn no connections
+< ovpn port in root range
+< ovpn reneg sec
+< p2p block
+< p2p block save notice
 < proxy reports
 < proxy reports daily
 < proxy reports monthly
 < proxy reports today
 < proxy reports weekly
 < qos enter bandwidths
+< random number generator daemon
+< red1
 < server restart
+< show dh
+< snat new source ip address
+< software version
+< source ip country
+< ssh
 < static routes
+< support donation
+< system has hwrng
+< system has rdrand
+< ta key
+< tor
+< tor 0 = disabled
+< tor accounting
+< tor accounting bytes
+< tor accounting bytes left
+< tor accounting interval
+< tor accounting limit
+< tor accounting period
+< tor accounting period daily
+< tor accounting period monthly
+< tor accounting period weekly
+< tor acls
+< tor allowed subnets
+< tor bandwidth burst
+< tor bandwidth rate
+< tor bandwidth settings
+< tor bandwidth unlimited
+< tor common settings
+< tor configuration
+< tor connected relays
+< tor contact info
+< tor daemon
+< tor directory port
+< tor enabled
+< tor errmsg invalid accounting limit
+< tor errmsg invalid directory port
+< tor errmsg invalid ip or mask
+< tor errmsg invalid relay address
+< tor errmsg invalid relay name
+< tor errmsg invalid relay port
+< tor errmsg invalid socks port
+< tor exit country
+< tor exit country any
+< tor exit nodes
+< tor relay address
+< tor relay configuration
+< tor relay enabled
+< tor relay external address
+< tor relay fingerprint
+< tor relay mode
+< tor relay mode bridge
+< tor relay mode exit
+< tor relay mode private bridge
+< tor relay mode relay
+< tor relay nickname
+< tor relay port
+< tor service
+< tor socks port
+< tor stats
+< tor traffic limit hard
+< tor traffic limit soft
+< tor traffic read written
+< tor use exit nodes
 < updxlrtr sources
 < updxlrtr standard view
+< upload dh key
 < uptime
 < uptime load average
+< urlfilter redirect template
+< vendor
 < visit us at
 < vpn keyexchange
 < week-graph
+< wlanap country
+< wlan client
+< wlan client advanced settings
+< wlan client and
+< wlan client bssid
+< wlan client ccmp
+< wlan client configuration
+< wlan client disconnected
+< wlan client duplicate ssid
+< wlan client edit entry
+< wlan client encryption
+< wlan client encryption none
+< wlan client encryption wep
+< wlan client encryption wpa
+< wlan client encryption wpa2
+< wlan client group cipher
+< wlan client group key algorithm
+< wlan client invalid key length
+< wlan client new entry
+< wlan client new network
+< wlan client pairwise cipher
+< wlan client pairwise key algorithm
+< wlan client pairwise key group key
+< wlan client psk
+< wlan clients
+< wlan client ssid
+< wlan client tkip
+< wlan client wpa mode
+< wlan client wpa mode all
+< wlan client wpa mode ccmp ccmp
+< wlan client wpa mode ccmp tkip
+< wlan client wpa mode tkip tkip
 < year-graph
index c025a5c32e663042a4b07a754d079cd673bb25bb..78a73efacbbce7c881805c9c499a650c474911c8 100644 (file)
@@ -13,3 +13,11 @@ Maintainer / advanced commands
     toolchain : Create our own toolchain package to save 20% of build time.
         shell : Enter a shell inside the chroot, used to tune lfs script
                  and / or during kernel upgrade to rebuild a new .config
+
+
+Options:
+    --target=[armv5tel|i586] : Cross-compile for this target architecture.
+                               Uses the QEMU emulator if needed to virtualise
+                               the desired target architecture.
+                               Can be permanently set with TARGET_ARCH= in
+                               .config.
index 9043962c2df17d1df660845b1a6baddb709b8937..7c3ba91ae02fc3a522ba86aa0aac1a0a993f4a15 100644 (file)
@@ -34,6 +34,13 @@ require '/var/ipfire/general-functions.pl';  # replace /var/ipcop with /var/ipcop
 require "${General::swroot}/lang.pl";
 require "${General::swroot}/header.pl";
 
+my $configfwdfw                = "${General::swroot}/firewall/config";
+my $configinput                = "${General::swroot}/firewall/input";
+my $configoutgoing     = "${General::swroot}/firewall/outgoing";
+my %input=();
+my %forward=();
+my %output=();
+
 #workaround to suppress a warning when a variable is used only once
 my @dummy = ( ${Header::colouryellow} );
    @dummy = ( ${Header::table1colour} );
@@ -90,7 +97,6 @@ if ($settings{'ACTION'} eq $Lang::tr{'save'}) {
     #
     #Validate static Settings1 here
     #
-    
     unless ($errormessage) {                                   # Everything is ok, save settings
        #map (delete ($settings{$_}) ,(@nosaved,'ACTION','KEY1'));# Must never be saved 
        #&General::writehash($setting, \%settings);             # Save good settings
@@ -146,6 +152,12 @@ if ($settings{'ACTION'} eq $Lang::tr{'add'}) {
        $errormessage = $Lang::tr{'duplicate ip'} . ' (RED)';
         $spacer=" & ";
     }
+    #Check if we have an emtpy name
+    if (!$settings{'NAME'}){
+               $errormessage=$Lang::tr{'fwhost err name1'};
+       }elsif(! &General::validfqdn($settings{'NAME'}) && ! &General::validhostname($settings{'NAME'})){
+               $errormessage=$Lang::tr{'invalid hostname'};
+       }
     my $idx=0;
     foreach my $line (@current) {
         chomp ($line);
@@ -162,6 +174,38 @@ if ($settings{'ACTION'} eq $Lang::tr{'add'}) {
        }
        $idx++;
     }
+       #Update firewallrules if aliasname is changed
+       if ($settings{'OLDNAME'} ne $settings {'NAME'}){
+               &General::readhasharray("$configfwdfw", \%forward);
+               &General::readhasharray("$configinput", \%input);
+               &General::readhasharray("$configoutgoing", \%output);
+               #Check FORWARD
+               foreach my $forwardkey (sort keys %forward){
+                       if ($forward{$forwardkey}[29] eq $settings{'OLDNAME'}){
+                               $forward{$forwardkey}[29] = $settings {'NAME'};
+                       }
+               }
+               &General::writehasharray($configfwdfw, \%forward);
+               #Check INPUT
+               foreach my $inputkey (sort keys %input){
+                       if ($input{$inputkey}[6] eq $settings{'OLDNAME'}){
+                               $input{$inputkey}[6] = $settings {'NAME'};
+                       }
+               }
+               &General::writehasharray($configinput, \%input);
+               #Check OUTPUT
+               foreach my $outputkey (sort keys %output){
+                       if ($output{$outputkey}[4] eq $settings{'OLDNAME'}){
+                               $output{$outputkey}[4] = $settings {'NAME'};
+                       }
+               }
+               &General::writehasharray($configoutgoing, \%output);
+               &General::firewall_config_changed;
+       }
+       #If Alias IP has changed, set firewall_config_changed
+       if($settings{'OLDIP'} ne $settings{'IP'} && $settings{'OLDIP'}){
+               &General::firewall_config_changed;
+       }
     unless ($errormessage) {
        if ($settings{'KEY1'} eq '') { #add or edit ?
            unshift (@current, "$settings{'IP'},$settings{'ENABLED'},$settings{'NAME'}\n");
@@ -241,16 +285,16 @@ my %checked =();     # Checkbox manipulations
 
 if ($errormessage) {
     &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
-    print "<font class='base'>$errormessage&nbsp;</font>";
+    print "$errormessage&nbsp;";
     &Header::closebox();
 }
 unless (( $netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/ ) && ($netsettings{'RED_TYPE'} eq 'STATIC'))
 {
     &Header::openbox('100%', 'left', $Lang::tr{'capswarning'});
     print <<END
-    <table width='100%'>
+    <table style='width:100%;'>
     <tr>
-    <td width='100%' class='boldbase' align='center'><font color='${Header::colourred}'><b>$Lang::tr{'aliases not active'}</b></font></td>
+    <td class='boldbase' style='color:${Header::colourred};'><b>$Lang::tr{'aliases not active'}</b></td>
     </tr>
     </table>
 END
@@ -275,23 +319,23 @@ if ($settings{'KEY1'} ne '') {
 print <<END
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='KEY1' value='$settings{'KEY1'}' />
-<table width='100%'>
+<input type='hidden' name='OLDNAME' value='$settings{'NAME'}' />
+<input type='hidden' name='OLDIP' value='$settings{'IP'}' />
+<table style='width:100%;'>
 <tr>
-<td class='base'><font color='${Header::colourred}'>$Lang::tr{'name'}:&nbsp;<img src='/blob.gif' alt='*' /></font></td>
+<td class='base' style='color:${Header::colourred};'>$Lang::tr{'name'}:</td>
 <td><input type='text' name='NAME' value='$settings{'NAME'}' size='32' /></td>
-<td class='base' align='right'><font color='${Header::colourred}'>$Lang::tr{'alias ip'}:&nbsp;</font></td>
+<td class='base' style='text-align:right; color:${Header::colourred};'>$Lang::tr{'alias ip'}:&nbsp;</td>
 <td><input type='text' name='IP' value='$settings{'IP'}' size='16' /></td>
-<td class='base' align='right'>$Lang::tr{'enabled'}&nbsp;</td>
+<td class='base' style='text-align:right;'>$Lang::tr{'enabled'}&nbsp;</td>
 <td><input type='checkbox' name='ENABLED' $checked{'ENABLED'}{'on'} /></td>
 </tr>
 </table>
+<br>
 <hr />
-<table width='100%'>
+<table style='width:100%;'>
 <tr>
-    <td class='base' width='55%'><img src='/blob.gif' align='top' alt='*' />&nbsp;$Lang::tr{'this field may be blank'}</td>
-    <td width='40%' align='center'><input type='hidden' name='ACTION' value='$Lang::tr{'add'}' /><input type='submit' name='SUBMIT' value='$buttontext' /></td>
-    <td width='5%' align='right'> 
-    </td>
+    <td style='text-align:right;'><input type='hidden' name='ACTION' value='$Lang::tr{'add'}' /><input type='submit' name='SUBMIT' value='$buttontext' /></td>
 </tr>
 </table>
 </form>
@@ -320,11 +364,11 @@ if ($netsettings{'SORT_ALIASES'} eq 'NAMERev') {
 #
 &Header::openbox('100%', 'left', $Lang::tr{'current aliases'});
 print <<END
-<table width='100%'>
+<table class='tbl' style='width:100%;'>
 <tr>
-    <td width='50%' align='center'><a href='$ENV{'SCRIPT_NAME'}?NAME'><b>$Lang::tr{'name'}</b></a> $sortarrow1</td>
-    <td width='45%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IP'><b>$Lang::tr{'alias ip'}</b></a> $sortarrow2</td>
-    <td width='5%' colspan='3' class='boldbase' align='center'><b>$Lang::tr{'action'}</b></td>
+    <th style='width:55%; text-align:center;'><a href='$ENV{'SCRIPT_NAME'}?NAME'><b>$Lang::tr{'name'}</b></a> $sortarrow1</th>
+    <th style='width:45%; text-align:center;'><a href='$ENV{'SCRIPT_NAME'}?IP'><b>$Lang::tr{'alias ip'}</b></a> $sortarrow2</th>
+    <th colspan='3' class='boldbase' style='width:5%; text-align:center;'><b>$Lang::tr{'action'}</b></th>
 </tr>
 END
 ;
@@ -336,6 +380,7 @@ END
 #
 
 my $key = 0;
+my $col="";
 foreach my $line (@current) {
     chomp($line);
     my @temp = split(/\,/,$line);
@@ -353,18 +398,19 @@ foreach my $line (@current) {
 
     #Colorize each line
     if ($settings{'KEY1'} eq $key) {
-       print "<tr bgcolor='${Header::colouryellow}'>";
+        $col="background-color:${Header::colouryellow};";
     } elsif ($key % 2) {
-       print "<tr bgcolor='${Header::table2colour}'>";
+        $col="background-color:${Header::table2colour};";
     } else {
-       print "<tr bgcolor='${Header::table1colour}'>"; 
+        $col="background-color:${Header::table1colour};";
     }
+    print "<tr style='$col'>";
 
     print <<END
-<td align='center'>$temp[2]</td>
-<td align='center'>$temp[0]</td>
+<td style='text-align:center; $col'>$temp[2]</td>
+<td style='text-align:center; $col'>$temp[0]</td>
 
-<td align='center'>
+<td style='text-align:center; $col'>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
 <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$gdesc' title='$gdesc' />
@@ -372,7 +418,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center'>
+<td style='text-align:center; $col'>
 <form method='post' 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'}' />
@@ -380,7 +426,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center'>
+<td style='text-align:center; $col'>
 <form method='post' 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'}' />
@@ -510,3 +556,4 @@ sub BuildConfiguration {
     # Restart service associated with this
     system '/usr/local/bin/setaliases';
 }
+
index 5c0fa8be9482bd20159a04bfd6b70e1ed710d4cb..c2a9914f77de993e2bd282e7bbf0a42e953f1ec3 100644 (file)
@@ -46,6 +46,27 @@ foreach (@modems){
        my $lines=0;
        print "<center><table>";
        my $modem=$_;
+       my @pfile = `grep . /sys/class/atm/$modem/parameters/* 2>/dev/null`;
+       foreach (@pfile){
+               chomp($_);
+               my $param= `echo $_ | cut -d'/' -f7 | cut -d':' -f1`;
+               my $value= `cat /sys/class/atm/$modem/parameters/$param`;
+               chomp($param);
+               chomp($value);
+               if (!($param =~"uevent") 
+                 && !($param =~"resource")
+                 && !($param eq "")
+               ) {
+                               
+                       $lines++;
+                       if ($lines % 2){
+                               print "<tr bgcolor='$color{'color22'}'>";
+                       }else{
+                               print "<tr bgcolor='$color{'color20'}'>";
+                       }
+                       print "<td align='left'>$param</td><td align='left'>$value</td> ";              
+               }
+       }
        my @pfile = `grep . /sys/class/atm/$modem/device/* 2>/dev/null`;
        foreach (@pfile){
                chomp($_);
@@ -58,6 +79,8 @@ foreach (@modems){
                  && !($param =~"bInterface")
                  && !($param =~"bAlternateSetting")
                  && !($param =~"bNumEndpoints")
+                 && !($param =~"config matches")
+                 && !($param =~"resource")
                  && !($param eq "")
                ) {
                                
index 830775ddf5f99df71292a9ea74fe2ad975dc6cb8..86e21cf34ea1601a74ff55684385763139a325bd 100644 (file)
@@ -166,7 +166,7 @@ if ( -e "/var/tmp/backupiso/" ){
        @backupisos = `cd /var/tmp/backupiso/ && ls *.iso 2>/dev/null`;
 }
 
-&Header::openbox('100%', 'center', $Lang::tr{'backup'});
+&Header::openbox('100%', 'center', );
 
 print <<END
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
@@ -233,7 +233,7 @@ END
 ############################################################################################################################
 ############################################# Backups von Addons erstellen #################################################
 
-&Header::openbox('100%', 'center', 'addons');
+&Header::openbox('100%', 'center', $Lang::tr{'addons'});
 
 my @addonincluds = `ls /var/ipfire/backup/addons/includes/ 2>/dev/null`;
 my @addons = `ls /var/ipfire/backup/addons/backup/ 2>/dev/null`;
@@ -339,4 +339,4 @@ END
 ;
 &Header::closebox();
 &Header::closebigbox();
-&Header::closepage();
\ No newline at end of file
+&Header::closepage();
index d566cf7ebb29b98bcfdb8bdfe38ea7847eae678a..c7220f62d164b46dc2c63b34178cdc2e0df2f600 100644 (file)
@@ -282,34 +282,34 @@ if (-e "${General::swroot}/ovpn/n2nconf") {
 
 # Print legend.
 print <<END;
-       <table width='100%'>
+       <table style='width:100%'>
                <tr>
-                       <td align='center'>
-                               <b>$Lang::tr{'legend'} : </b>
+                       <td style='text-align:center;'>
+                               <b>$Lang::tr{'legend'} :</b>
                        </td>
-                       <td align='center' bgcolor='${Header::colourgreen}'>
-                               <b><font color='#FFFFFF'>$Lang::tr{'lan'}</font></b>
+                       <td style='text-align:center; color:#FFFFFF; background-color:${Header::colourgreen}; font-weight:bold;'>
+                               <b>$Lang::tr{'lan'}</b>
                        </td>
-                       <td align='center' bgcolor='${Header::colourred}'>
-                               <b><font color='#FFFFFF'>$Lang::tr{'internet'}</font></b>
+                       <td style='text-align:center; color:#FFFFFF; background-color:${Header::colourred};'>
+                               <b>$Lang::tr{'internet'}</b>
                        </td>
-                       <td align='center' bgcolor='${Header::colourorange}'>
-                               <b><font color='#FFFFFF'>$Lang::tr{'dmz'}</font></b>
+                       <td style='text-align:center; color:#FFFFFF; background-color:${Header::colourorange};'>
+                               <b>$Lang::tr{'dmz'}</b>
                        </td>
-                       <td align='center' bgcolor='${Header::colourblue}'>
-                               <b><font color='#FFFFFF'>$Lang::tr{'wireless'}</font></b>
+                       <td style='text-align:center; color:#FFFFFF; background-color:${Header::colourblue};'>
+                               <b>$Lang::tr{'wireless'}</b>
                        </td>
-                       <td align='center' bgcolor='${Header::colourfw}'>
-                               <b><font color='#FFFFFF'>IPFire</font></b>
+                       <td style='text-align:center; color:#FFFFFF; background-color:${Header::colourfw};'>
+                               <b>IPFire</b>
                        </td>
-                       <td align='center' bgcolor='${Header::colourvpn}'>
-                               <b><font color='#FFFFFF'>$Lang::tr{'vpn'}</font></b>
+                       <td style='text-align:center; color:#FFFFFF; background-color:${Header::colourvpn};'>
+                               <b>$Lang::tr{'vpn'}</b>
                        </td>
-                       <td align='center' bgcolor='${Header::colourovpn}'>
-                               <b><font color='#FFFFFF'>$Lang::tr{'OpenVPN'}</font></b>
+                       <td style='text-align:center; color:#FFFFFF; background-color:${Header::colourovpn};'>
+                               <b>$Lang::tr{'OpenVPN'}</b>
                        </td>
-                       <td align='center' bgcolor='$colour_multicast'>
-                               <b><font color='#FFFFFF'>Multicast</font></b>
+                       <td style='text-align:center; color:#FFFFFF; background-color:$colour_multicast;'>
+                               <b>Multicast</b>
                        </td>
                </tr>
        </table>
@@ -345,60 +345,60 @@ END
 
 # Print table header.
 print <<END;
-       <table width='100%'>
-               <tr valign="top"">
-                       <th align='center'>
-                               <a href="?sort_field=5&sort_order=d"><img style="width:10px" src="/images/up.gif"></a>
-                               <a href="?sort_field=5&sort_order=a"><img style="width:10px" src="/images/down.gif"></a>
+       <table style='width:100%'>
+               <tr>
+                       <th style='text-align:center'>
+                               <a href="?sort_field=5&amp;sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+                               <a href="?sort_field=5&amp;sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
                        </th>
-                       <th align='center' colspan="2">
-                               <a href="?sort_field=1&sort_order=d"><img style="width:10px" src="/images/up.gif"></a>
-                               <a href="?sort_field=1&sort_order=a"><img style="width:10px" src="/images/down.gif"></a>
+                       <th style='text-align:center' colspan='2'>
+                               <a href="?sort_field=1&amp;sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+                               <a href="?sort_field=1&amp;sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
                                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                               <a href="?sort_field=3&sort_order=d"><img style="width:10px" src="/images/up.gif"></a>
-                               <a href="?sort_field=3&sort_order=a"><img style="width:10px" src="/images/down.gif"></a>
+                               <a href="?sort_field=3&amp;sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+                               <a href="?sort_field=3&amp;sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
                        </th>
-                       <th align='center' colspan="2">
-                               <a href="?sort_field=2&sort_order=d"><img style="width:10px" src="/images/up.gif"></a>
-                               <a href="?sort_field=2&sort_order=a"><img style="width:10px" src="/images/down.gif"></a>
+                       <th style='text-align:center' colspan='2'>
+                               <a href="?sort_field=2&amp;sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+                               <a href="?sort_field=2&amp;sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
                                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                               <a href="?sort_field=4&sort_order=d"><img style="width:10px" src="/images/up.gif"></a>
-                               <a href="?sort_field=4&sort_order=a"><img style="width:10px" src="/images/down.gif"></a>
+                               <a href="?sort_field=4&amp;sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+                               <a href="?sort_field=4&amp;sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
                        </th>
-                       <th align='center'>
-                               <a href="?sort_field=8&sort_order=d"><img style="width:10px" src="/images/up.gif"></a>
-                               <a href="?sort_field=8&sort_order=a"><img style="width:10px" src="/images/down.gif"></a>
+                       <th style='text-align:center'>
+                               <a href="?sort_field=8&amp;sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+                               <a href="?sort_field=8&amp;sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
                                &nbsp;&nbsp;&nbsp;&nbsp;
-                               <a href="?sort_field=9&sort_order=d"><img style="width:10px" src="/images/up.gif"></a>
-                               <a href="?sort_field=9&sort_order=a"><img style="width:10px" src="/images/down.gif"></a>
+                               <a href="?sort_field=9&amp;sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+                               <a href="?sort_field=9&amp;sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
                        </th>
-                       <th align='center'>
-                               <a href="?sort_field=6&sort_order=d"><img style="width:10px" src="/images/up.gif"></a>
-                               <a href="?sort_field=6&sort_order=a"><img style="width:10px" src="/images/down.gif"></a>
+                       <th style='text-align:center'>
+                               <a href="?sort_field=6&amp;sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+                               <a href="?sort_field=6&amp;sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
                        </th>
-                       <th align='center'>
-                               <a href="?sort_field=7&sort_order=d"><img style="width:10px" src="/images/up.gif"></a>
-                               <a href="?sort_field=7&sort_order=a"><img style="width:10px" src="/images/down.gif"></a>
+                       <th style='text-align:center'>
+                               <a href="?sort_field=7&amp;sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+                               <a href="?sort_field=7&amp;sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
                        </th>
                </tr>
-               <tr valign="top"">
-                       <th align='center'>
+               <tr>
+                       <th style='text-align:center'>
                                $Lang::tr{'protocol'}
                        </th>
-                       <th align='center' colspan="2">
+                       <th style='text-align:center' colspan='2'>
                                $Lang::tr{'source ip and port'}
                        </th>
-                       <th align='center' colspan="2">
+                       <th style='text-align:center' colspan='2'>
                                $Lang::tr{'dest ip and port'}
                        </th>
-                       <th align='center'>
+                       <th style='text-align:center'>
                                $Lang::tr{'download'} /
                                <br>$Lang::tr{'upload'}
                        </th>
-                       <th align='center'>
+                       <th style='text-align:center'>
                                $Lang::tr{'connection'}<br>$Lang::tr{'status'}
                        </th>
-                       <th align='center'>
+                       <th style='text-align:center'>
                                $Lang::tr{'expires'}<br>($Lang::tr{'seconds'})
                        </th>
                </tr>
@@ -523,17 +523,17 @@ foreach my $line (@conntrack) {
 
        my $sip_extra;
        if ($sip ne $sip_ret) {
-               $sip_extra = "<font color='#FFFFFF'>&gt;</font> ";
+               $sip_extra = "<span style='color:#FFFFFF;'>&gt;</span> ";
                $sip_extra .= "<a href='/cgi-bin/ipinfo.cgi?ip=$sip_ret'>";
-               $sip_extra .= " <font color='#FFFFFF'>$sip_ret</font>";
+               $sip_extra .= " <span style='color:#FFFFFF;'>$sip_ret</span>";
                $sip_extra .= "</a>";
        }
 
        my $dip_extra;
        if ($dip ne $dip_ret) {
-               $dip_extra = "<font color='#FFFFFF'>&gt;</font> ";
+               $dip_extra = "<span style='color:#FFFFFF;'>&gt;</span> ";
                $dip_extra .= "<a href='/cgi-bin/ipinfo.cgi?ip=$dip_ret'>";
-               $dip_extra .= " <font color='#FFFFFF'>$dip_ret</font>";
+               $dip_extra .= " <span style='color:#FFFFFF;'>$dip_ret</span>";
                $dip_extra .= "</a>";
        }
 
@@ -545,9 +545,9 @@ foreach my $line (@conntrack) {
                        $sserv_ret = uc(getservbyport($sport_ret, lc($l4proto)));
                }
 
-               $sport_extra = "<font color='#FFFFFF'>&gt;</font> ";
+               $sport_extra = "<span style='color:#FFFFFF;'>&gt;</span> ";
                $sport_extra .= "<a href='http://isc.sans.org/port_details.php?port=$sport_ret' target='top' title='$sserv_ret'>";
-               $sport_extra .= " <font color='#FFFFFF'>$sport_ret</font>";
+               $sport_extra .= " <span style='color:#FFFFFF;'>$sport_ret</span>";
                $sport_extra .= "</a>";
        }
 
@@ -558,44 +558,44 @@ foreach my $line (@conntrack) {
                        $dserv_ret = uc(getservbyport($dport_ret, lc($l4proto)));
                }
 
-               $dport_extra = "<font color='#FFFFFF'>&gt;</font> ";
+               $dport_extra = "<span style='color:#FFFFFF;'>&gt;</span> ";
                $dport_extra .= "<a href='http://isc.sans.org/port_details.php?port=$dport_ret' target='top' title='$dserv_ret'>";
-               $dport_extra .= " <font color='#FFFFFF'>$dport_ret</font>";
+               $dport_extra .= " <span style='color:#FFFFFF;'>$dport_ret</span>";
                $dport_extra .= "</a>";
        }
 
        print <<END;
        <tr>
-               <td align='center'>$l4proto</td>
-               <td align='center' bgcolor='$sip_colour'>
+               <td style='text-align:center'>$l4proto</td>
+               <td style='text-align:center; background-color:$sip_colour;'>
                        <a href='/cgi-bin/ipinfo.cgi?ip=$sip'>
-                               <font color='#FFFFFF'>$sip</font>
+                               <span style='color:#FFFFFF;'>$sip</span>
                        </a>
                        $sip_extra
                </td>
-               <td align='center' bgcolor='$sip_colour'>
+               <td style='text-align:center; background-color:$sip_colour;'>
                        <a href='http://isc.sans.org/port_details.php?port=$sport' target='top' title='$sserv'>
-                               <font color='#FFFFFF'>$sport</font>
+                               <span style='color:#FFFFFF;'>$sport</span>
                        </a>
                        $sport_extra
                </td>
-               <td align='center' bgcolor='$dip_colour'>
+               <td style='text-align:center; background-color:$dip_colour;'>
                        <a href='/cgi-bin/ipinfo.cgi?ip=$dip'>
-                               <font color='#FFFFFF'>$dip</font>
+                               <span style='color:#FFFFFF;'>$dip</span>
                        </a>
                        $dip_extra
                </td>
-               <td align='center' bgcolor='$dip_colour'>
+               <td style='text-align:center; background-color:$dip_colour;'>
                        <a href='http://isc.sans.org/port_details.php?port=$dport' target='top' title='$dserv'>
-                               <font color='#FFFFFF'>$dport</font>
+                               <span style='color:#FFFFFF;'>$dport</span>
                        </a>
                        $dport_extra
                </td>
-               <td align='center'>
+               <td style='text-align:center'>
                        $bytes_in / $bytes_out
                </td>
-               <td align='center'>$state</td>
-               <td align='center'>$ttl</td>
+               <td style='text-align:center'>$state</td>
+               <td style='text-align:center'>$ttl</td>
        </tr>
 END
 }
index b257adb2e24c72ef6ba0480cd2c1cdce77ad4079..c3bd0bc3ca504c0f72b7fa3b4789b3743d57002b 100644 (file)
@@ -307,14 +307,14 @@ for ($minute = 0; $minute <= 55; $minute += 5)
 
 print <<END
 </select></td></tr>
-<tr><td colspan='2'><hr /></td></tr>
+<tr><td colspan='2'><br><br></td></tr>
 <tr><td width='15%' class='base'>$Lang::tr{'ConnSched action'}</td><td>
 <input type='radio' value='CONNECT' name='ACTION_ACTION' $checked_connect />&nbsp;<select name='ACTION_CONNECT'>
 <option value='reconnect' $selected{'reconnect'}>$Lang::tr{'ConnSched reconnect'}</option>
-<option value='dial' $selected{'dial'}>$Lang::tr{'dial'}</option>
-<option value='hangup' $selected{'hangup'}>$Lang::tr{'hangup'}</option>
-<option value='reboot' $selected{'reboot'}>$Lang::tr{'reboot'}</option>
-<option value='shutdown' $selected{'shutdown'}>$Lang::tr{'shutdown'}</option>
+<option value='dial' $selected{'dial'}>$Lang::tr{'ConnSched dial'}</option>
+<option value='hangup' $selected{'hangup'}>$Lang::tr{'ConnSched hangup'}</option>
+<option value='reboot' $selected{'reboot'}>$Lang::tr{'ConnSched reboot'}</option>
+<option value='shutdown' $selected{'shutdown'}>$Lang::tr{'ConnSched shutdown'}</option>
 <option value='ipsecstart' $selected{'ipsecstart'}>$Lang::tr{'ConnSched ipsecstart'}</option>
 <option value='ipsecstop' $selected{'ipsecstop'}>$Lang::tr{'ConnSched ipsecstop'}</option>
 </select></td></tr>
@@ -335,7 +335,7 @@ for ($i = 1; $i <= $CONNSCHED::maxprofiles; $i++)
 }
 print <<END
 </select></td></tr>
-<tr><td colspan='2'><hr /></td></tr>
+<tr><td colspan='2'><br><br></td></tr>
 <tr><td width='15%' class='base'>$Lang::tr{'ConnSched days'}</td>
 <td><input type='radio' value='DAYS' name='ACTION_DAYSTYPE' $checked_days />&nbsp;<select name='ACTION_DAYSTART'>
 END
@@ -375,14 +375,15 @@ print <<END
 &nbsp;&nbsp;<input type='checkbox' name='Sat' $checked_sat />$Lang::tr{'saturday'}<br />
 &nbsp;&nbsp;<input type='checkbox' name='Sun' $checked_sun />$Lang::tr{'sunday'}
 </td></tr>
-<tr><td colspan='2'><hr /></td></tr>
+<tr><td colspan='2'><br></td></tr>
 <tr><td width='15%' class='base'>$Lang::tr{'remark title'}&nbsp;<img src='/blob.gif' alt='*' /></td>
 <td><input type='text' name='ACTION_COMMENT' size='40' value='$comment' /></td></tr></table>
-<hr />
+<br>
+<hr>
 <table width='100%'><tr>
   <td class='base' valign='top'><img src='/blob.gif' alt='*' /></td>
   <td width='55%' class='base'>$Lang::tr{'this field may be blank'}</td>
-  <td width='40%' align='center'><input type='submit' name='SUBMIT' value='$buttontext' />
+  <td width='40%' align='right'><input type='submit' name='SUBMIT' value='$buttontext' />
   <input type='hidden' name='ACTION' value='$hiddenvalue' /></td>
   <input type='hidden' name='UPDATE_ID' value='$cgiparams{'ID'}' /></td>
 </tr></table>
@@ -399,67 +400,67 @@ END
 
 &Header::openbox('100%', 'left', $Lang::tr{'ConnSched scheduled actions'});
 print <<END
-<table width='100%' border='0' cellspacing='1' cellpadding='0'>
+<table width='100%' cellspacing='1' cellpadding='0' class='tbl'>
 <tr>
-<td align='center' width='10%'><b>$Lang::tr{'time'}</b></td>
-<td width='15%'>&nbsp;</td>
-<td align='center' width='60%'><b>$Lang::tr{'remark'}</b></td>
-<td align='center' colspan='5' width='5%'><b>$Lang::tr{'action'}</b></td>
+<th align='center' width='10%'><b>$Lang::tr{'time'}</b></th>
+<th width='15%'>&nbsp;</th>
+<th align='center' width='60%'><b>$Lang::tr{'remark'}</b></th>
+<th align='center' colspan='5' width='5%'><b>$Lang::tr{'action'}</b></th>
 </tr>
 END
 ;
-
+my $col="";
 for my $id ( 0 .. $#CONNSCHED::config )
 {
-  my $trcolor;
-
   if ( ($cgiparams{'ACTION'} eq 'edit') && ($id == $cgiparams{'ID'}) ) 
   {
-    $trcolor = "<tr bgcolor='${Header::colouryellow}'>";
+    print "<tr>";
+    $col="bgcolor='${Header::colouryellow}'";
   }
   elsif ( $id % 2 )
   {
-    $trcolor = "<tr bgcolor='$color{'color20'}'>";
+    print "<tr>";
+    $col="bgcolor='$color{'color20'}'";
   }
   else 
   {
-    $trcolor = "<tr bgcolor='$color{'color22'}'>";
+    print "<tr>";
+    $col="bgcolor='$color{'color22'}'";
   }
 
 print <<END
-$trcolor
-<td align='center'>$CONNSCHED::config[$id]{'TIME'}</td>
-<td>$Lang::tr{"ConnSched $CONNSCHED::config[$id]{'ACTION'}"}&nbsp;$CONNSCHED::config[$id]{'PROFILENR'}</td>
-<td>$CONNSCHED::config[$id]{'COMMENT'}</td>
-<td align='center'>
+<td align='center' $col>$CONNSCHED::config[$id]{'TIME'}</td>
+<td $col>$Lang::tr{"ConnSched $CONNSCHED::config[$id]{'ACTION'}"}&nbsp;$CONNSCHED::config[$id]{'PROFILENR'}</td>
+<td $col>$CONNSCHED::config[$id]{'COMMENT'}</td>
+<td align='center' $col>
   <form method='post' name='frm$id' action='$ENV{'SCRIPT_NAME'}'>
   <input type='hidden' name='ACTION' value='toggle' />
   <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$CONNSCHED::config[$id]{'ACTIVE'}.gif' alt='$Lang::tr{'toggle enable disable'}' title='$Lang::tr{'toggle enable disable'}' />
   <input type='hidden' name='ID' value='$id' />
   </form>
 </td>
-<td align='center'>
+<td align='center' $col>
   <form method='post' name='frm$id' action='$ENV{'SCRIPT_NAME'}'>
   <input type='hidden' name='ACTION' value='edit' />
   <input type='image' name='$Lang::tr{'edit'}' src='/images/edit.gif' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
   <input type='hidden' name='ID' value='$id' />
   </form>
 </td>
-<td align='center'>
+<td align='center' $col>
   <form method='post' name='frm$id' action='$ENV{'SCRIPT_NAME'}'>
   <input type='hidden' name='ACTION' value='remove' />
   <input type='image' name='$Lang::tr{'remove'}' src='/images/delete.gif' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' />
   <input type='hidden' name='ID' value='$id' />
   </form>
 </td>
-<td align='center'>
+<td align='center' $col>
   <form method='post' name='frm$id' action='$ENV{'SCRIPT_NAME'}'>
   <input type='hidden' name='ACTION' value='up' />
   <input type='image' name='$Lang::tr{'ConnSched up'}' src='/images/up.gif' alt='$Lang::tr{'ConnSched up'}' title='$Lang::tr{'ConnSched up'}' />
   <input type='hidden' name='ID' value='$id' />
   </form>
 </td>
-<td align='center'>
+<td align='center' $col>
   <form method='post' name='frm$id' action='$ENV{'SCRIPT_NAME'}'>
   <input type='hidden' name='ACTION' value='down' />
   <input type='image' name='$Lang::tr{'ConnSched down'}' src='/images/down.gif' alt='$Lang::tr{'ConnSched down'}' title='$Lang::tr{'ConnSched down'}' />
@@ -467,9 +468,9 @@ $trcolor
   </form>
 </td>
 </tr>
-$trcolor
-<td>&nbsp;</td>
-<td colspan='7'>$CONNSCHED::config[$id]{'DAYS'}$CONNSCHED::config[$id]{'WEEKDAYS_PR'}&nbsp;</td>
+<tr>
+<td $col>&nbsp;</td>
+<td colspan='7' $col>$CONNSCHED::config[$id]{'DAYS'}$CONNSCHED::config[$id]{'WEEKDAYS_PR'}&nbsp;</td>
 </tr>
 END
 ;
index 474d60cd06572f602a38a94f3089d4f13b21a409..76035fb46d76ad0c4775e300e8d4c975dcc2b36f 100644 (file)
@@ -36,18 +36,18 @@ require "${General::swroot}/header.pl";
 
 &Header::showhttpheaders();
 
-&Header::openpage('Country Codes', 1, '');
-&Header::openbigbox('100%', 'LEFT');
-
-&Header::openbox('100%', 'LEFT', 'Flags & Country Codes:');
-print "<TABLE WIDTH='100%'>";
-print "<tr><td width='5%'><b>Flag</b></td>";
-print "<td width='5%'><b>Code</b></td>";
-print "<td width='40%'><b>Country</b></td>";
-print "<td><b>&nbsp;</b></td>";
-print "<td width='5%'><b>Flag</b></td>";
-print "<td width='5%'><b>Code</b></td>";
-print "<td width='40%'><b>Country</b></td></tr>";
+&Header::openpage($Lang::tr{'countries'}, 1, '');
+&Header::openbigbox('100%', 'left');
+
+&Header::openbox('100%', 'left', $Lang::tr{'country codes and flags'});
+print "<table class='tbl'>";
+print "<tr><th style='width=5%;'><b>$Lang::tr{'flag'}</b></th>";
+print "<th style='width=5%;'><b>$Lang::tr{'countrycode'}</b></th>";
+print "<th style='width=40%; text-align:left;'><b>$Lang::tr{'country'}</b></th>";
+print "<th>&nbsp;</th>";
+print "<th style='width=5%;'><b>$Lang::tr{'flag'}</b></th>";
+print "<th style='width=5%;'><b>$Lang::tr{'countrycode'}</b></th>";
+print "<th style='width=40%; text-align:left;'><b>$Lang::tr{'country'}</b></th></tr>";
 
 @flaglist = <$flagdir/*>;
 
@@ -57,50 +57,46 @@ foreach (@flaglist)
 {
        if (!-d) { push(@flaglistfiles,substr($_,rindex($_,"/")+1));    }
 }
-
+my $col="";
 foreach $flag (@flaglistfiles)
 {
        $lines++;
-      
-  my $flagcode = uc(substr($flag, 0, 2));
-  my $fcode = lc($flagcode);
+
+       my $flagcode = uc(substr($flag, 0, 2));
+       my $fcode = lc($flagcode);
        my $country = Locale::Country::code2country($fcode);
-  if($fcode eq 'eu') { $country = 'Europe'; }
-  if($fcode eq 'tp') { $country = 'East Timor'; }
-  if($fcode eq 'yu') { $country = 'Yugoslavia'; }
-  if ($lines % 2) {
-       print "<td><a name='$fcode'/><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$flagcode'</td>";
-       print "<td>$flagcode</td>";
-       print "<td>$country</td></tr>\n";
-  }
-  else {
-       $lines2++;
-       if($lines2 % 2) {
-               print "<tr bgcolor='${Header::table1colour}'>";
-       } else {
-               print "<tr bgcolor='${Header::table2colour}'>";
+       if($fcode eq 'eu') { $country = 'Europe'; }
+       if($fcode eq 'tp') { $country = 'East Timor'; }
+       if($fcode eq 'yu') { $country = 'Yugoslavia'; }
+       if ($lines % 2) {
+               print "<td $col><a id='$fcode'><img src='/images/flags/$fcode.png' alt='$flagcode' title='$flagcode'/></a></td>";
+               print "<td $col>$flagcode</td>";
+               print "<td $col>$country</td></tr>\n";
+       }
+       else {
+               $lines2++;
+               if($lines2 % 2) {
+                       $col="style='background-color:${Header::table2colour};'";
+               } else {
+                       $col="style='background-color:${Header::table1colour};'";
+               }
+               print "<tr>";
+               print "<td $col><a id='$fcode'><img src='/images/flags/$fcode.png' alt='$flagcode' title='$flagcode'/></a></td>";
+               print "<td $col>$flagcode</td>";
+               print "<td $col>$country</td>";
+               print "<td $col>&nbsp;</td>";
        }
-       print "<td><a name='$fcode'/><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$flagcode'</td>";
-       print "<td>$flagcode</td>";
-       print "<td>$country</td>";
-       #print "<td><img src='/blob.gif' alt='*' /></td>";
-       print "<td>&nbsp;</td>";
-  }    
 }
 
 
-print "</TABLE>";
+print "</table>";
 &Header::closebox();
 
 &Header::closebigbox();
 
 print <<END
-<div align='center'>
-<table width='80%'>
-<tr>
-<td align='center'><a href='$ENV{'HTTP_REFERER'}'>$Lang::tr{'back'}</a></td>
-</tr>
-</table>
+<div style='text-align:center'>
+<a href='$ENV{'HTTP_REFERER'}'>$Lang::tr{'back'}</a>
 </div>
 END
 ; 
index d61019ef1ca9c8d851b993300e434321860d27f9..19fae9bb995585816bba61239de74b6cfb450aed 100644 (file)
@@ -49,14 +49,14 @@ END
 ;
 &Header::closebox();
 
-&Header::openbox('100%', 'left', $Lang::tr{'credits'});
+&Header::openbox('100%', 'left',);
 
 print <<END
 <br>
 <center>
        $Lang::tr{'visit us at'}: <b><a href='http://www.ipfire.org/' target="_blank">http://www.ipfire.org/</a></b>
 </center>
-<br><hr><br>
+<br><br>
 
 <p><b>Development:</b><br />
 
@@ -68,6 +68,8 @@ Christian Schmidt
 (<a href='mailto:christian.schmidt\@ipfire.org'>christian.schmidt\@ipfire.org</a>) - Vice Project Leader <br />
 Stefan Schantl
 (<a href='mailto:stefan.schantl\@ipfire.org'>stefan.schantl\@ipfire.org</a>)<br />
+Alexander Marx
+(<a href='mailto:alexander.marx\@ipfire.org'>alexander.marx\@ipfire.org</a>)<br />
 Heiner Schmeling
 (<a href='mailto:heiner.schmeling\@ipfire.org'>heiner.schmeling\@ipfire.org</a>)<br />
 Ronald Wiesinger
index 4453542475ac6a0cd6996cb148c8bcadd9403778..4b4bc63d7fbea9b346fe7dbeadfdc3a265e29a41 100644 (file)
@@ -232,9 +232,11 @@ if ($settings{'ACTION'} eq '')
 &Header::openbigbox('100%', 'left', '', $errormessage);
 
 my %checked =();     # Checkbox manipulations
+$checked{'SERVICE'}{'all-inkl.com'} = '';
 $checked{'SERVICE'}{'cjb.net'} = '';
 $checked{'SERVICE'}{'dhs.org'} = '';
 $checked{'SERVICE'}{'dnspark.com'} = '';
+$checked{'SERVICE'}{'dns.lightningwirelabs.com'} = '';
 $checked{'SERVICE'}{'dtdns.com'} = '';
 $checked{'SERVICE'}{'dyndns.org'} = '';
 $checked{'SERVICE'}{'dyndns-custom'} = '';
@@ -251,8 +253,11 @@ $checked{'SERVICE'}{'nsupdate'} = '';
 $checked{'SERVICE'}{'ovh.com'} = '';
 $checked{'SERVICE'}{'regfish.com'} = '';
 $checked{'SERVICE'}{'selfhost.de'} = '';
+$checked{'SERVICE'}{'spdns.org'} = '';
 $checked{'SERVICE'}{'strato.com'} = '';
+$checked{'SERVICE'}{'twodns.de'} = '';
 $checked{'SERVICE'}{'tzo.com'} = '';
+$checked{'SERVICE'}{'variomedia.de'} = '';
 $checked{'SERVICE'}{'zoneedit.com'} = '';
 $checked{'SERVICE'}{$settings{'SERVICE'}} = "selected='selected'";
 
@@ -301,7 +306,7 @@ print <<END
 <tr>
     <td class='base' valign='top'><img src='/blob.gif' alt='*' /></td>
     <td width='70%' class='base'>$Lang::tr{'avoid dod'}</td>
-    <td width='30%' align='center' class='base'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
+    <td width='30%' align='right' valign='top' class='base'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
 </tr>
 </table>
 </form>
@@ -326,9 +331,11 @@ print <<END
 <tr>
     <td width='25%' class='base'>$Lang::tr{'service'}:</td>
     <td width='25%'><select size='1' name='SERVICE'>
+    <option $checked{'SERVICE'}{'all-inkl.com'}>all-inkl.com</option>
     <option $checked{'SERVICE'}{'cjb.net'}>cjb.net</option>
     <option $checked{'SERVICE'}{'dhs.org'}>dhs.org</option>
     <option $checked{'SERVICE'}{'dnspark.com'}>dnspark.com</option>
+    <option $checked{'SERVICE'}{'dns.lightningwirelabs.com'}>dns.lightningwirelabs.com</option>
     <option $checked{'SERVICE'}{'dtdns.com'}>dtdns.com</option>
     <option $checked{'SERVICE'}{'dyndns.org'}>dyndns.org</option>
     <option $checked{'SERVICE'}{'dyndns-custom'}>dyndns-custom</option>
@@ -345,8 +352,11 @@ print <<END
     <option $checked{'SERVICE'}{'ovh.com'}>ovh.com</option>
     <option $checked{'SERVICE'}{'regfish.com'}>regfish.com</option>
     <option $checked{'SERVICE'}{'selfhost.de'}>selfhost.de</option>
+    <option $checked{'SERVICE'}{'spdns.org'}>spdns.org</option>
     <option $checked{'SERVICE'}{'strato.com'}>strato.com</option>
+    <option $checked{'SERVICE'}{'twodns.de'}>twodns.de</option>
 <!--    <option $checked{'SERVICE'}{'tzo.com'}>tzo.com</option>        comment this service out until a working fix is developed -->
+    <option $checked{'SERVICE'}{'variomedia.de'}>variomedia.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>
@@ -373,13 +383,14 @@ print <<END
     <td><input type='password' name='PASSWORD2' value='$settings{'PASSWORD2'}' /></td>
 </tr>
 </table>
+<br>
 <hr />
 <table width='100%'>
 <tr>
     <td class='base' valign='top'><img src='/blob.gif' alt='*' /></td>
     <td width='70%' class='base'>$ddnsprefix</td>
     
-    <td width='30%' align='center' class='base'>
+    <td width='30%' align='right' class='base'>
        <input type='hidden' name='ACTION' value='$Lang::tr{'add'}' />
        <input type='submit' name='SUBMIT' value='$buttontext' />    </td>
 </tr>
@@ -394,14 +405,14 @@ END
 #
 &Header::openbox('100%', 'left', $Lang::tr{'current hosts'});
 print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
 <tr>
-    <td width='15%' align='center' class='boldbase'><b>$Lang::tr{'service'}</b></td>
-    <td width='25%' align='center' class='boldbase'><b>$Lang::tr{'hostname'}</b></td>
-    <td width='30%' align='center' class='boldbase'><b>$Lang::tr{'domain'}</b></td>
-    <td width='10%' align='center' class='boldbase'><b>$Lang::tr{'proxy'}</b></td>
-    <td width='10%' align='center' class='boldbase'><b>$Lang::tr{'wildcards'}</b></td>
-    <td width='10%' colspan='3' class='boldbase' align='center'><b>$Lang::tr{'action'}</b></td>
+    <th width='15%' align='center' class='boldbase'><b>$Lang::tr{'service'}</b></th>
+    <th width='25%' align='center' class='boldbase'><b>$Lang::tr{'hostname'}</b></th>
+    <th width='30%' align='center' class='boldbase'><b>$Lang::tr{'domain'}</b></th>
+    <th width='10%' align='center' class='boldbase'><b>$Lang::tr{'proxy'}</b></th>
+    <th width='10%' align='center' class='boldbase'><b>$Lang::tr{'wildcards'}</b></th>
+    <th width='10%' colspan='3' class='boldbase' align='center'><b>$Lang::tr{'action'}</b></th>
 </tr>
 END
 ;
@@ -424,7 +435,7 @@ foreach my $line (@current) {
        $descproxy = $Lang::tr{'click to disable'};
     } else {
        $gifproxy = 'off.gif';
-       $descproxy = $Lang::tr{'click to enable'}; 
+       $descproxy = $Lang::tr{'click to enable'};
     }
 
     my $gifwildcard='';
@@ -448,26 +459,30 @@ foreach my $line (@current) {
        $gif = 'off.gif';
        $gdesc = $Lang::tr{'click to enable'};
     }
-                               
+
+       my $col="";
     #Colorize each line
     if ($settings{'KEY1'} eq $key) {
-       print "<tr bgcolor='${Header::colouryellow}'>";
+       print "<tr>";
+       $col="bgcolor='${Header::colouryellow}'";
     } elsif ($key % 2) {
-       print "<tr bgcolor='$color{'color22'}'>";
+       print "<tr>";
+       $col="bgcolor='$color{'color20'}'";
     } else {
-       print "<tr bgcolor='$color{'color20'}'>"; 
+       print "<tr>";
+       $col="bgcolor='$color{'color22'}'";
     }
-    
+
     #if a field is empty, replace it with a '---' to see colorized info!
     $temp[1] = '---' if (!$temp[1]);
     $temp[2] = '---' if (!$temp[2]);
 
     print <<END
-<td align='center'><a href='http://$temp[0]'>$temp[0]</a></td>
-<td align='center'>$sync$temp[1]</td>
-<td align='center'>$sync$temp[2]</td>
+<td align='center' $col><a href='http://$temp[0]'>$temp[0]</a></td>
+<td align='center' $col>$sync$temp[1]</td>
+<td align='center' $col>$sync$temp[2]</td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
 <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gifproxy' alt='$descproxy' title='$descproxy' />
@@ -476,7 +491,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
 <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gifwildcard' alt='$descwildcard' title='$descwildcard' />
@@ -485,7 +500,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
 <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$gdesc' title='$gdesc' />
@@ -494,7 +509,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' 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'}' />
@@ -502,7 +517,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' 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'}' />
@@ -534,7 +549,7 @@ print <<END
     <td><img src='/images/delete.gif' alt='$Lang::tr{'remove'}' /></td>
     <td class='base'>$Lang::tr{'remove'}</td>
     <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-        <td align='center' width='30%'><input type='submit' name='ACTION' value='$Lang::tr{'instant update'}' /></td>
+        <td align='right' width='30%'><input type='submit' name='ACTION' value='$Lang::tr{'instant update'}' /></td>
     </form>
 </tr>
 </table>
index cde6065f57553dfd8c8d1098112dfa349a420c45..9a7d983eefd0233693a9e647a4c692ef2ef05442 100644 (file)
@@ -590,8 +590,7 @@ print <<END
 <tr>
     <td class='base' width='25%'><img src='/blob.gif' align='top' alt='*' />&nbsp;$Lang::tr{'this field may be blank'}</td>
     <td class='base' width='30%'>$warnNTPmessage</td>
-    <td width='40%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
-    <td width='5%' align='right'>&nbsp;</td>
+    <td width='40%' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
 </tr>
 </table>
 </form>
@@ -651,7 +650,7 @@ print <<END
 <table width='100%'>
 <tr>
     <td class='base' width='50%'><img src='/blob.gif' align='top' alt='*' />&nbsp;$Lang::tr{'dhcp advopt scope help'}</td>
-    <td width='50%' align='center'>
+    <td width='50%' align='right'>
     <input type='hidden' name='ACTION' value='$Lang::tr{'add'}1' />
     <input type='submit' name='SUBMIT' value='$buttontext' />
     <input type='submit' name='SUBMIT' value='$Lang::tr{'dhcp advopt help'}' />
@@ -851,7 +850,7 @@ print <<END
 <table width='100%'>
 <tr>
     <td class='base' width='50%'><img src='/blob.gif' align='top' alt='*' />&nbsp;$Lang::tr{'this field may be blank'}</td>
-    <td width='50%' align='center'>
+    <td width='50%' align='right'>
        <input type='hidden' name='ACTION' value='$Lang::tr{'add'}2' />
        <input type='submit' name='SUBMIT' value='$buttontext' />
        <input type='hidden' name='KEY2' value='$dhcpsettings{'KEY2'}' /></td>
@@ -864,15 +863,15 @@ END
 
 print <<END
 <hr />
-<table width='100%'>
+<table width='100%' class='tbl'>
 <tr>
-    <td width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?FETHER'><b>$Lang::tr{'mac address'}</b></a></td>
-    <td width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?FIPADDR'><b>$Lang::tr{'ip address'}</b></a></td>
-    <td width='15%' align='center'><b>$Lang::tr{'remark'}</b></td>
-    <td width='15%' class='boldbase' align='center'><b>next-server</b></td>
-    <td width='15%' class='boldbase' align='center'><b>filename</b></td>
-    <td width='15%' class='boldbase' align='center'><b>root path</b></td>
-    <td colspan='3' class='boldbase' align='center'><b>$Lang::tr{'action'}</b></td>
+    <th width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?FETHER'><b>$Lang::tr{'mac address'}</b></a></th>
+    <th width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?FIPADDR'><b>$Lang::tr{'ip address'}</b></a></th>
+    <th width='15%' align='center'><b>$Lang::tr{'remark'}</b></th>
+    <th width='15%' class='boldbase' align='center'><b>next-server</b></th>
+    <th width='15%' class='boldbase' align='center'><b>filename</b></th>
+    <th width='15%' class='boldbase' align='center'><b>root path</b></th>
+    <th colspan='3' class='boldbase' align='center'><b>$Lang::tr{'action'}</b></th>
 </tr>
 END
 ;
@@ -904,6 +903,7 @@ foreach my $line (@current2) {
 }
 
 $key = 0;
+my $col="";
 foreach my $line (@current2) {
     my $gif = '';
     my $gdesc = '';
@@ -919,11 +919,14 @@ foreach my $line (@current2) {
     }
 
     if ($dhcpsettings{'KEY2'} eq $key) {
-       print "<tr bgcolor='${Header::colouryellow}'>";
+       print "<tr>";
+       $col="bgcolor='${Header::colouryellow}'";
     } elsif ($key % 2) {
-       print "<tr bgcolor='$color{'color22'}'>";
+       print "<tr>";
+       $col="bgcolor='$color{'color20'}'";
     } else {
-       print "<tr bgcolor='$color{'color20'}'>"; 
+       print "<tr>";
+       $col="bgcolor='$color{'color22'}'";
     }
     my $TAG0 = '';
     my $TAG1 = '';
@@ -943,14 +946,14 @@ foreach my $line (@current2) {
     }
 
     print <<END
-<td align='center'>$TAG2$temp[0]$TAG3</td>
-<td align='center' $TAG4>$TAG0$temp[1]$TAG1</td>
-<td align='center'>$temp[6]&nbsp;</td>
-<td align='center'>$temp[3]&nbsp;</td>
-<td align='center'>$temp[4]&nbsp;</td>
-<td align='center'>$temp[5]&nbsp;</td>
-
-<td align='center'>
+<td align='center' $col>$TAG2$temp[0]$TAG3</td>
+<td align='center' $col $TAG4>$TAG0$temp[1]$TAG1</td>
+<td align='center' $col>$temp[6]&nbsp;</td>
+<td align='center' $col>$temp[3]&nbsp;</td>
+<td align='center' $col>$temp[4]&nbsp;</td>
+<td align='center' $col>$temp[5]&nbsp;</td>
+
+<td align='center' $col>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}2' />
 <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$gdesc' title='$gdesc' />
@@ -958,7 +961,7 @@ foreach my $line (@current2) {
 </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='ACTION' value='$Lang::tr{'edit'}2' />
 <input type='image' name='$Lang::tr{'edit'}' src='/images/edit.gif' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
@@ -966,7 +969,7 @@ foreach my $line (@current2) {
 </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='ACTION' value='$Lang::tr{'remove'}2' />
 <input type='image' name='$Lang::tr{'remove'}' src='/images/delete.gif' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' />
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/dnsforward.cgi b/html/cgi-bin/dnsforward.cgi
new file mode 100644 (file)
index 0000000..b66fa46
--- /dev/null
@@ -0,0 +1,363 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013  IPFire 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/>.       #
+#                                                                             #
+###############################################################################
+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 %cgiparams=();
+my %checked=();
+my %selected=();
+my $errormessage = '';
+my $filename = "${General::swroot}/dnsforward/config";
+my $changed = 'no';
+
+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();
+
+$cgiparams{'ENABLED'} = 'off';
+$cgiparams{'ACTION'} = '';
+$cgiparams{'ZONE'} = '';
+$cgiparams{'FORWARD_SERVER'} = '';
+$cgiparams{'REMARK'} ='';
+&Header::getcgihash(\%cgiparams);
+open(FILE, $filename) or die 'Unable to open config file.';
+my @current = <FILE>;
+close(FILE);
+
+###
+# Add / Edit entries.
+#
+if ($cgiparams{'ACTION'} eq $Lang::tr{'add'})
+{
+       # Check if the entered domainname is valid.
+       unless (&General::validdomainname($cgiparams{'ZONE'})) {
+               $errormessage = $Lang::tr{'invalid domain name'};
+       }
+
+       # Check if the settings for the forward server are valid.
+       unless(&General::validip($cgiparams{'FORWARD_SERVER'})) {
+               $errormessage = $Lang::tr{'invalid ip'};
+       }
+
+       # Go further if there was no error.
+       if ( ! $errormessage)
+       {
+           # Check if a remark has been entered.
+           $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'});
+
+               # Check if we want to edit an existing or add a new entry.
+               if($cgiparams{'EDITING'} eq 'no') {
+                       open(FILE,">>$filename") or die 'Unable to open config file.';
+                       flock FILE, 2;
+                       print FILE "$cgiparams{'ENABLED'},$cgiparams{'ZONE'},$cgiparams{'FORWARD_SERVER'},$cgiparams{'REMARK'}\n";
+               } 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{'ENABLED'},$cgiparams{'ZONE'},$cgiparams{'FORWARD_SERVER'},$cgiparams{'REMARK'}\n";
+                               } else { print FILE "$line"; }
+                       }
+               }
+               close(FILE);
+               undef %cgiparams;
+               $changed = 'yes';
+       } else {
+               # stay on edit mode if an error occur
+               if ($cgiparams{'EDITING'} ne 'no')
+               {
+                       $cgiparams{'ACTION'} = $Lang::tr{'edit'};
+                       $cgiparams{'ID'} = $cgiparams{'EDITING'};
+               }
+       }
+       # Restart dnsmasq.
+       system('/usr/local/bin/dnsmasqctrl restart >/dev/null');
+}
+
+###
+# Remove existing entries.
+#
+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);
+       # Restart dnsmasq.
+       system('/usr/local/bin/dnsmasqctrl restart >/dev/null');
+}
+
+###
+# Toggle Enable/Disable for entries.
+#
+if ($cgiparams{'ACTION'} eq $Lang::tr{'toggle enable disable'})
+{
+       open(FILE, ">$filename") or die 'Unable to open config file.';
+       flock FILE, 2;
+       my $id = 0;
+       foreach my $line (@current)
+       {
+               $id++;
+               unless ($cgiparams{'ID'} eq $id) { print FILE "$line"; }
+               else
+               {
+                       chomp($line);
+                       my @temp = split(/\,/,$line);
+                       print FILE "$cgiparams{'ENABLE'},$temp[1],$temp[2],$temp[3]\n";
+               }
+       }
+       close(FILE);
+       # Restart dnsmasq.
+       system('/usr/local/bin/dnsmasqctrl restart >/dev/null');
+}
+
+###
+# Read items for edit mode.
+#
+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{'ENABLED'} = $temp[0];
+                       $cgiparams{'ZONE'} = $temp[1];
+                       $cgiparams{'FORWARD_SERVER'} = $temp[2];
+                       $cgiparams{'REMARK'} = $temp[3];
+               }
+       }
+}
+
+$checked{'ENABLED'}{'off'} = '';
+$checked{'ENABLED'}{'on'} = '';
+$checked{'ENABLED'}{$cgiparams{'ENABLED'}} = "checked='checked'";
+
+&Header::openpage($Lang::tr{'dnsforward configuration'}, 1, '');
+
+&Header::openbigbox('100%', 'left', '', $errormessage);
+
+###
+# Error messages layout.
+#
+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{'dnsforward edit an entry'});
+       $buttontext = $Lang::tr{'update'};
+} else {
+       &Header::openbox('100%', 'left', $Lang::tr{'dnsforward add a new entry'});
+}
+
+###
+# Content of the main page.
+#
+print <<END
+<table width='100%'>
+       <tr>
+               <td width='20%' class='base'>$Lang::tr{'dnsforward zone'}:</td>
+               <td><input type='text' name='ZONE' value='$cgiparams{'ZONE'}' size='24' /></td>
+               <td width='30%' class='base'>$Lang::tr{'enabled'}<input type='checkbox' name='ENABLED' $checked{'ENABLED'}{'on'} /></td>
+       </tr>
+
+       <tr>
+               <td width='20%' class='base'>$Lang::tr{'dnsforward forward_server'}:</td>
+               <td><input type='text' name='FORWARD_SERVER' value='$cgiparams{'FORWARD_SERVER'}' size='24' /></td>
+       </tr>
+</table>
+
+<table width='100%'>
+       <tr>
+               <td width ='20%' class='base'>$Lang::tr{'remark'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
+               <td><input type='text' name='REMARK' value='$cgiparams{'REMARK'}' size='40' maxlength='50' /></td>
+       </tr>
+</table>
+<br>
+<hr>
+
+<table width='100%'>
+       <tr>
+               <td class='base' width='55%'><img src='/blob.gif' alt ='*' align='top' />&nbsp;$Lang::tr{'this field may be blank'}</td>
+               <td width='40%' align='right'>
+                       <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";
+
+###
+# Existing rules.
+#
+&Header::openbox('100%', 'left', $Lang::tr{'dnsforward entries'});
+print <<END
+<table width='100%' class='tbl'>
+       <tr>
+               <th width='35%' class='boldbase' align='center'><b>$Lang::tr{'dnsforward zone'}</b></th>
+               <th width='30%' class='boldbase' align='center'><b>$Lang::tr{'dnsforward forward_server'}</b></th>
+               <th width='30%' class='boldbase' align='center'><b>$Lang::tr{'remark'}</b></th>
+               <th width='5%' class='boldbase' colspan='3' align='center'><b>$Lang::tr{'action'}</b></th>
+       </tr>
+END
+;
+
+# If something has happened re-read config
+if($cgiparams{'ACTION'} ne '' or $changed ne 'no')
+{
+       open(FILE, $filename) or die 'Unable to open config file.';
+       @current = <FILE>;
+       close(FILE);
+}
+
+###
+# Re-read entries and highlight selected item for editing.
+#
+my $id = 0;
+my $col="";
+foreach my $line (@current)
+{
+       $id++;
+       chomp($line);
+       my @temp = split(/\,/,$line);
+       my $toggle = '';
+       my $gif = '';
+       my $gdesc = '';
+       my $toggle = '';
+       
+       if($cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'ID'} eq $id) {
+               print "<tr>";
+               $col="bgcolor='${Header::colouryellow}'"; }
+       elsif ($id % 2) {
+               print "<tr>";
+               $col="bgcolor='$color{'color22'}'"; }
+       else {
+               print "<tr>";
+               $col="bgcolor='$color{'color20'}'"; }
+
+       if ($temp[0] 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'}; }
+
+###
+# Display edit page.
+#
+print <<END
+       <td align='center' $col>$temp[1]</td>
+       <td align='center' $col>$temp[2]</td>
+       <td align='center' $col>$temp[3]</td>
+       <td align='center' $col>
+               <form method='post' name='frma$id' action='$ENV{'SCRIPT_NAME'}'>
+                       <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' title='$gdesc' 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' $col>
+               <form method='post' name='frmb$id' action='$ENV{'SCRIPT_NAME'}'>
+                       <input type='image' name='$Lang::tr{'edit'}' src='/images/edit.gif' title='$Lang::tr{'edit'}' 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' $col>
+               <form method='post' name='frmc$id' action='$ENV{'SCRIPT_NAME'}'>
+                       <input type='image' name='$Lang::tr{'remove'}' src='/images/delete.gif' title='$Lang::tr{'remove'}' 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";
+
+###
+# Print the legend at the bottom if there are any configured entries.
+#
+# Check if the file size is zero - no existing entries.
+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();
diff --git a/html/cgi-bin/entropy.cgi b/html/cgi-bin/entropy.cgi
new file mode 100644 (file)
index 0000000..8e016b6
--- /dev/null
@@ -0,0 +1,111 @@
+#!/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";
+require "${General::swroot}/graphs.pl";
+
+my @querry = split(/\?/,$ENV{'QUERY_STRING'});
+$querry[0] = '' unless defined $querry[0];
+$querry[1] = 'hour' unless defined $querry[1];
+
+if ( $querry[0] ne~ "") {
+       print "Content-type: image/png\n\n";
+       binmode(STDOUT);
+       &Graphs::updateentropygraph($querry[1]);
+
+} else {
+       &Header::showhttpheaders();
+       &Header::openpage($Lang::tr{'entropy'}, 1, '');
+       &Header::openbigbox('100%', 'left');
+
+       &Header::openbox('100%', 'center', $Lang::tr{'entropy'});
+       &Graphs::makegraphbox("entropy.cgi", "day", '', 350);
+       &Header::closebox();
+
+       # Check for hardware support.
+       my $message;
+       my $message_colour = $Header::colourred;
+       if (&has_hwrng()) {
+               $message = $Lang::tr{'system has hwrng'};
+               $message_colour = $Header::colourgreen;
+       } elsif (&has_rdrand()) {
+               $message = $Lang::tr{'system has rdrand'};
+               $message_colour = $Header::colourgreen;
+       } else {
+               $message = $Lang::tr{'no hardware random number generator'};
+       }
+
+       my $rngd_status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td>";
+       if (&rngd_is_running()) {
+               $rngd_status = "<td align='center' bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td>";
+       }
+
+       &Header::openbox('100%', 'center', $Lang::tr{'hardware support'});
+       print <<EOF;
+               <p style="color: $message_colour; text-align: center;">$message</p>
+
+               <table width='80%' cellspacing='1' class='tbl'>
+                       <tr>
+                               <th align='center'><b>$Lang::tr{'service'}</b></th>
+                               <th align='center'><b>$Lang::tr{'status'}</b></th>
+                       </tr>
+                       <tr>
+                               <td align='center'>
+                                       $Lang::tr{'random number generator daemon'}
+                               </td>
+                               $rngd_status
+                       </tr>
+               </table>
+EOF
+       &Header::closebox();
+
+       &Header::closebigbox();
+       &Header::closepage();
+}
+
+sub has_hwrng() {
+       return (-c "/dev/hwrng");
+}
+
+sub has_rdrand() {
+       open(FILE, "/proc/cpuinfo") or return 0;
+       my @cpuinfo = <FILE>;
+       close(FILE);
+
+       my @result = grep(/rdrand/, @cpuinfo);
+       if (@result) {
+               return 1;
+       }
+
+       return 0;
+}
+
+sub rngd_is_running() {
+       return (-e "/var/run/rngd.pid");
+}
index 86b0de5c37e6cfff31d2f87ca064f025bf73ddc7..5a6fbce8310201bb55287f550036536820d75312 100644 (file)
@@ -127,7 +127,6 @@ if ($errormessage) {
 ############################################################################################################################
 ############################################################################################################################
 
-&Header::openbox('100%', 'center', $Lang::tr{'extrahd'});
        open( FILE, "< $devicefile" ) or die "Unable to read $devicefile";
        @devices = <FILE>;
        close FILE;
@@ -153,7 +152,7 @@ END
                                                <input type='hidden' name='FS' value='$deviceline[1]' />
                                                <input type='hidden' name='PATH' value='$deviceline[2]' />
                                                <input type='hidden' name='ACTION' value=$Lang::tr{'delete'} />
-                                               <input type='image' alt=$Lang::tr{'delete'} src='/images/delete.gif' />
+                                               <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' />
                                        </form></td></tr>
 END
 ;
@@ -162,9 +161,6 @@ END
                </table>
 END
 ;
-
-&Header::closebox();
-
 &Header::openbox('100%', 'center', $Lang::tr{'extrahd detected drives'});
        print <<END
                <table border='0' width='600' cellspacing="0">
@@ -228,7 +224,7 @@ END
                                        <input type='hidden' name='DEVICE' value='$partitionline[0]' />
                                        <input type='hidden' name='UUID' value='$partitionline[2]' />
                                        <input type='hidden' name='ACTION' value=$Lang::tr{'add'} />
-                                       <input type='image' alt=$Lang::tr{'add'} src='/images/add.gif' />
+                                       <input type='image' alt='$Lang::tr{'add'}' title='$Lang::tr{'add'}' src='/images/add.gif' />
                                </form></td></tr>
 END
 ;
index 11c4637d69eba249a4634669d2af05affe7ac89e..0060a117cdf1db0d0ca4152e77a1f409b9e8038a 100644 (file)
@@ -79,7 +79,7 @@ END
 
 if ($errormessage) {
        &Header::openbox('100%', 'left', "$Lang::tr{'error messages'}");
-       print "<FONT CLASS='base'>$errormessage&nbsp;</FONT>\n";
+       print "<font class='base'>$errormessage&nbsp;</font>\n";
        &Header::closebox();
 }
 
@@ -156,7 +156,7 @@ print <<END;
        </tr>
        <tr>
                <td colspan='2'>
-                       <textarea rows="25" cols="75" readonly="true">$profile</textarea>
+                       <textarea rows="25" cols="75" readonly="readonly">$profile</textarea>
                </td>
        </tr>
 </table>
diff --git a/html/cgi-bin/firewall.cgi b/html/cgi-bin/firewall.cgi
new file mode 100644 (file)
index 0000000..e6ae527
--- /dev/null
@@ -0,0 +1,2853 @@
+#!/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;
+use utf8;
+use feature 'unicode_strings';
+
+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 "/usr/lib/firewall/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{'firewall rules'}, 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();
+
+               // Show/Hide elements when NAT checkbox is checked.
+               if (\$("#USE_NAT").attr("checked")) {
+                       \$("#actions").hide();
+               } else {
+                       \$(".NAT").hide();
+               }
+
+               // Show NAT area when "use nat" checkbox is clicked
+               \$("#USE_NAT").change(function() {
+                       \$(".NAT").toggle();
+                       \$("#actions").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");
+                       \$('#' + 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' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
+                                                       $errormessage=$Lang::tr{'fwdfw err remark'}."<br>";
+                                               }
+                                               if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && &validremark($fwdfwsettings{'ruleremark'})){
+                                                       $errormessage='';
+                                               }
+                                               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){
+                       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' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
+                                                       $errormessage=$Lang::tr{'fwdfw err remark'}."<br>";
+                                               }
+                                               if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && &validremark($fwdfwsettings{'ruleremark'})){
+                                                       $errormessage='';
+                                               }
+                                               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 %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){
+                       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' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
+                                                       $errormessage=$Lang::tr{'fwdfw err remark'}."<br>";
+                                               }
+                                               if($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && &validremark($fwdfwsettings{'ruleremark'})){
+                                                       $errormessage='';
+                                               }
+                                               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){
+                       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', "");
+       print <<END;
+               <form method="POST" action="">
+                       <table border='0' width="100%">
+                               <tr>
+                                       <td align='center'>
+                                               <input type='submit' name='ACTION' value='$Lang::tr{'fwdfw newrule'}'>
+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>
+
+               <br>
+END
+
+       &Header::closebox();
+       &viewtablerule;
+}
+sub base
+{
+       &hint;
+       &addrule;
+}
+sub changerule
+{
+       my $oldchain=shift;
+       $fwdfwsettings{'updatefwrule'}='';
+       $fwdfwsettings{'config'}=$oldchain;
+       $fwdfwsettings{'nobase'}='on';
+       &deleterule;
+}
+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 ''){
+               $fwdfwsettings{'grp1'}='std_net_src';
+               $fwdfwsettings{$fwdfwsettings{'grp1'}} = 'ALL';
+       }
+
+       #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{
+                       if ($fwdfwsettings{'grp2'} ne 'ipfire'){
+                               $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 ''){
+               $fwdfwsettings{'grp2'}='std_net_tgt';
+               $fwdfwsettings{$fwdfwsettings{'grp2'}} = 'ALL';
+       }
+       #check for mac in targetgroup
+       if ($fwdfwsettings{'grp2'} eq 'cust_grp_tgt'){
+               &General::readhasharray("$configgrp", \%customgrp);
+               &General::readhasharray("$confighost", \%customhost);
+               foreach my $grpkey (sort keys %customgrp){
+                       foreach my $hostkey (sort keys %customhost){
+                               if ($customgrp{$grpkey}[2] eq $customhost{$hostkey}[0] && $customhost{$hostkey}[1] eq 'mac'){
+                                       $hint=$Lang::tr{'fwdfw hint mac'};
+                                       return $hint;
+                               }
+                       }
+               }
+       }
+       #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{
+                                                               $errormessage=$Lang::tr{'fwdfw err tgt_port'};
+                                                               return $errormessage;
+                                                       }
+                                               }
+                                       }
+                                       $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'){
+               #RULE_ACTION must be ACCEPT if we use NAT
+               $fwdfwsettings{'RULE_ACTION'} = 'ACCEPT';
+
+               #if no dnat or snat selected errormessage
+               if ($fwdfwsettings{'nat'} eq ''){
+                       $errormessage=$Lang::tr{'fwdfw dnat nochoice'};
+                       return;
+               }
+
+               #if using snat, the external port has to be empty
+               if ($fwdfwsettings{'nat'} eq 'snat' && $fwdfwsettings{'dnatport'} ne ''){
+                       $errormessage=$Lang::tr{'fwdfw dnat extport'};
+                       return;
+               }
+               #if no dest 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'};}
+               if($fwdfwsettings{'TGT_PORT'} eq '' && $fwdfwsettings{'dnatport'} ne '' && ($fwdfwsettings{'PROT'} eq 'TCP' || $fwdfwsettings{'PROT'} eq 'UDP')){
+                       $errormessage=$Lang::tr{'fwdfw dnat porterr2'};
+                       return;
+               }
+               #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 service 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 if a rule with prot tcp or udp and ports is edited and now prot is "all", then delete all ports
+               if($fwdfwsettings{'PROT'} eq ''){
+                       $fwdfwsettings{'dnatport'}='';
+               }
+       }
+       #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 icmp selected, no source and 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{'ICMP_TYPES'}='';
+               $fwdfwsettings{'SRC_PORT'}='';
+               $fwdfwsettings{'TGT_PORT'}='';
+       }elsif($fwdfwsettings{'PROT'} ne 'ICMP'){
+               $fwdfwsettings{'ICMP_TYPES'}='';
+       }
+}
+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'}) {
+                       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 del_double
+{
+       my %all=();
+       @all{@_}=1;
+       return (keys %all);
+}
+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 error
+{
+       if ($errormessage) {
+               &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
+               print "<class name='base'>$errormessage\n";
+               print "&nbsp;</class>\n";
+               &Header::closebox();
+       }
+}
+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='95%' 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] && $customgrp{$key}[2] ne 'none'){
+                               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='95%' border='0' align='right'><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' && $ipsecconf{$key}[3] ne 'host')){
+                       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);
+       @protocols=();
+       my @specprot=("IPIP","IPV6","IGMP","GRE","AH","ESP");
+       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){
+                               if ($customservicegrp{$key}[2] ~~ @specprot){
+                                       push (@protocols," ".$customservicegrp{$key}[2]);
+                               }else{
+                                       foreach my $key1 (sort { ncmp($customservice{$a}[0],$customservice{$b}[0]) } keys %customservice){
+                                               if ($customservice{$key1}[0] eq $customservicegrp{$key}[2]){
+                                                       if (!grep(/$customservice{$key1}[2]/, @protocols)){
+                                                               push (@protocols,$customservice{$key1}[2]);}
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       # Sort protocols alphabetically.
+       @protocols = sort(@protocols);
+
+       return @protocols;
+}
+sub getcolor
+{
+       my $nettype=shift;
+       my $val=shift;
+       my $hash=shift;
+       if($optionsfw{'SHOWCOLORS'} eq 'on'){
+               # Don't colourise MAC addresses
+               if (&General::validmac($val)) {
+                       $tdcolor = "";
+                       return;
+               }
+
+               #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 eq 'OpenVPN-Dyn' ){
+                       $tdcolor="style='background-color: $Header::colourovpn;color:white;'";
+                       return;
+               }elsif ($val eq 'IPsec RW' ){
+                       $tdcolor="style='background-color: $Header::colourvpn;color:white;'";
+                       return;
+               }elsif($val =~ /^(.*?)\/(.*?)$/){
+                       my ($sip,$scidr) = split ("/",$val);
+                       if ( &Header::orange_used() && &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 ( &Header::blue_used() && &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){
+                               if ($ipsecconf{$key}[11]){
+                                       my ($a,$b) = split("/",$ipsecconf{$key}[11]);
+                                       $b=&General::iporsubtodec($b);
+                                       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();
+       }
+}
+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);
+       if (! $fwdfwsettings{'RULE_ACTION'} && $fwdfwsettings{'POLICY'} eq 'MODE2'){
+               $fwdfwsettings{'RULE_ACTION'}='DROP';
+       }elsif(! $fwdfwsettings{'RULE_ACTION'} && $fwdfwsettings{'POLICY'} eq 'MODE1'){
+               $fwdfwsettings{'RULE_ACTION'}='ACCEPT';
+       }
+       $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{'dnat'}}                               ='selected';
+                               $selected{'snat'}{$fwdfwsettings{'snat'}}                               ='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';
+               $fwdfwsettings{'nat'} = 'dnat';
+               $checked{'ACTIVE'}{$fwdfwsettings{'ACTIVE'}} = 'CHECKED';
+               $checked{'nat'}{$fwdfwsettings{'nat'}} = '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';
+                       }
+               }       
+       }
+       # Split manual source and target address and delete the subnet
+       my ($sip,$scidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp1'}});
+       if ($scidr eq '32'){$fwdfwsettings{$fwdfwsettings{'grp1'}}=$sip;}
+       my ($dip,$dcidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp2'}});
+       if ($dcidr eq '32'){$fwdfwsettings{$fwdfwsettings{'grp2'}}=$dip;}
+       &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_src'}{$alias}>$alias ($aliases{$alias}{'IPT'})</option>";
+                       }
+               }
+               print<<END;
+               </select></td></tr>
+               <tr><td><br></td></tr>
+               </table>
+END
+               &gen_dd_block('src','grp1');
+               &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 width='5%'></td>
+                                               <td width='40%'>
+                                                       <label>
+                                                               <input type='radio' name='nat'  value='dnat' $checked{'nat'}{'dnat'}>
+                                                               $Lang::tr{'fwdfw dnat'}
+                                                       </label>
+                                               </td>
+END
+
+       print <<END;
+                                               <td width='25%' align='right'>$Lang::tr{'dnat address'}:</td>
+                                               <td width='30%'>
+                                                       <select name='dnat' style='width: 100%;'>
+                                                               <option value='AUTO' $selected{'dnat'}{'AUTO'}>- $Lang::tr{'automatic'} -</option>
+                                                               <option value='Default IP' $selected{'dnat'}{'Default IP'}>$Lang::tr{'red1'} ($redip)</option>
+END
+               if (%aliases) {
+                       foreach my $alias (sort keys %aliases) {
+                               print "<option value='$alias' $selected{'dnat'}{$alias}>$alias ($aliases{$alias}{'IPT'})</option>";
+                       }
+               }
+               #DNAT Dropdown
+               foreach my $network (sort keys %defaultNetworks)
+               {
+                       if ($defaultNetworks{$network}{'NAME'} eq 'BLUE'||$defaultNetworks{$network}{'NAME'} eq 'GREEN' ||$defaultNetworks{$network}{'NAME'} eq 'ORANGE'){
+                               print "<option value='$defaultNetworks{$network}{'NAME'}'";
+                               print " selected='selected'" if ($fwdfwsettings{'dnat'} eq $defaultNetworks{$network}{'NAME'});
+                               print ">$network ($defaultNetworks{$network}{'NET'})</option>";
+                       }
+               }
+               print "</select>";
+               print "</tr>";
+
+               #SNAT
+               print <<END;
+                                       <tr>
+                                               <td width='5%'></td>
+                                               <td width='40%'>
+                                                       <label>
+                                                               <input type='radio' name='nat'  value='snat' $checked{'nat'}{'snat'}>
+                                                               $Lang::tr{'fwdfw snat'}
+                                                       </label>
+                                               </td>
+                                               <td width='25%' align='right'>$Lang::tr{'snat new source ip address'}:</td>
+                                               <td width='30%'>
+                                                       <select name='snat' style='width: 100%;'>
+END
+
+               foreach my $alias (sort keys %aliases) {
+                       print "<option value='$alias' $selected{'snat'}{$alias}>$alias ($aliases{$alias}{'IPT'})</option>";
+               }
+               # SNAT Dropdown
+               foreach my $network (sort keys %defaultNetworks) {
+                       if ($defaultNetworks{$network}{'NAME'} eq 'BLUE'||$defaultNetworks{$network}{'NAME'} eq 'GREEN' ||$defaultNetworks{$network}{'NAME'} eq 'ORANGE'){
+                               print "<option value='$defaultNetworks{$network}{'NAME'}'";
+                               print " selected='selected'" if ($fwdfwsettings{'snat'} eq $defaultNetworks{$network}{'NAME'});
+                               print ">$network ($defaultNetworks{$network}{'NET'})</option>";
+                       }
+               }
+               print <<END;
+                                                       </select>
+                                               </td>
+                                       </tr>
+                               </table>
+                       </div>
+END
+               &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 ($aliases{$alias}{'IPT'})</option>";
+                       }
+               }
+               print<<END;
+               </select></td></tr>
+               <tr><td><br></td></tr></table>
+END
+               &gen_dd_block('tgt','grp2');
+               &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] && $customservicegrp{$key}[2] ne 'none'){
+                               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"}{$fwdfwsettings{'RULE_ACTION'}}  = 'CHECKED';
+               print <<END;
+                       <center>
+                               <table width="80%" class='tbl' id='actions'>
+                                       <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>
+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";
+               }
+               $fwdfwsettings{'ruleremark'}=~ s/,/;/g;
+               utf8::decode($fwdfwsettings{'ruleremark'});
+               $fwdfwsettings{'ruleremark'}=&Header::escape($fwdfwsettings{'ruleremark'});
+               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];
+
+       # Try to decode $remark into UTF-8. If this doesn't work,
+       # we assume that the string it not sane.
+       if (!utf8::decode($remark)) {
+               return 0;
+       }
+
+       # Check if the string only contains of printable characters.
+       if ($remark =~ /^[[:print:]]*$/) {
+               return 1;
+       }
+       return 0;
+}
+sub viewtablerule
+{
+       &General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
+
+       &viewtablenew(\%configfwdfw, $configfwdfw, $Lang::tr{'firewall rules'});
+       &viewtablenew(\%configinputfw, $configinput, $Lang::tr{'incoming firewall access'});
+       &viewtablenew(\%configoutgoingfw, $configoutgoing, $Lang::tr{'outgoing firewall access'});
+}
+sub viewtablenew
+{
+       my $hash=shift;
+       my $config=shift;
+       my $title=shift;
+       my $go='';
+
+       my $show_box = (! -z $config) || ($optionsfw{'SHOWTABLES'} eq 'on');
+       return if (!$show_box);
+
+       &General::get_aliases(\%aliases);
+       &General::readhasharray("$confighost", \%customhost);
+       &General::readhasharray("$config", $hash);
+       &General::readhasharray("$configccdnet", \%ccdnet);
+       &General::readhasharray("$configccdhost", \%ccdhost);
+       &General::readhasharray("$configgrp", \%customgrp);
+       &General::readhasharray("$configsrvgrp", \%customservicegrp);
+
+       &Header::openbox('100%', 'left', $title);
+       print "<table width='100%' cellspacing='0' class='tbl'>";
+
+       if (! -z $config) {
+               my $count=0;
+               my ($gif,$log);
+               my $ruletype;
+               my $rulecolor;
+               my $tooltip;
+               my @tmpsrc=();
+               my @tmptgt=();
+               my $coloryellow='';
+
+               print <<END;
+                               <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'>
+                                               <b>$Lang::tr{'fwdfw log'}</b>
+                                       </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=();
+                       @tmptgt=();
+                       #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 (@tmptgt,$$hash{$key}[6]);
+                       }
+                       foreach my $host (@tmpsrc){
+                               if($$hash{$key}[3] eq  'ipsec_net_src'){
+                                       if(&fwlib::get_ipsec_net_ip($host,11) eq ''){
+                                               $coloryellow='on';
+                                       }
+                               }elsif($$hash{$key}[3] eq  'ovpn_net_src'){
+                                       if(&fwlib::get_ovpn_net_ip($host,1) eq ''){
+                                               $coloryellow='on';
+                                       }
+                               }elsif($$hash{$key}[3] eq  'ovpn_n2n_src'){
+                                       if(&fwlib::get_ovpn_n2n_ip($host,27) eq ''){
+                                               $coloryellow='on';
+                                       }
+                               }elsif($$hash{$key}[3] eq  'ovpn_host_src'){
+                                       if(&fwlib::get_ovpn_host_ip($host,33) eq ''){
+                                               $coloryellow='on';
+                                       }
+                               }
+                       }
+                       foreach my $host (@tmptgt){
+                               if($$hash{$key}[5] eq 'ipsec_net_tgt'){
+                                       if(&fwlib::get_ipsec_net_ip($host,11) eq ''){
+                                               $coloryellow='on';
+                                       }
+                               }elsif($$hash{$key}[5] eq 'ovpn_net_tgt'){
+                                       if(&fwlib::get_ovpn_net_ip($host,1) eq ''){
+                                               $coloryellow='on';
+                                       }
+                               }elsif($$hash{$key}[5] eq 'ovpn_n2n_tgt'){
+                                       if(&fwlib::get_ovpn_n2n_ip($host,27) eq ''){
+                                               $coloryellow='on';
+                                       }
+                               }elsif($$hash{$key}[5] eq 'ovpn_host_tgt'){
+                                       if(&fwlib::get_ovpn_host_ip($host,33) eq ''){
+                                               $coloryellow='on';
+                                       }
+                               }
+                       }
+                       #check if networkgroups or servicegroups are empty
+                       foreach my $netgroup (sort keys %customgrp){
+                               if(($$hash{$key}[4] eq $customgrp{$netgroup}[0] || $$hash{$key}[6] eq $customgrp{$netgroup}[0]) && $customgrp{$netgroup}[2] eq 'none'){
+                                       $coloryellow='on';
+                               }
+                       }
+                       foreach my $srvgroup (sort keys %customservicegrp){
+                               if($$hash{$key}[15] eq $customservicegrp{$srvgroup}[0] && $customservicegrp{$srvgroup}[2] eq 'none'){
+                                       $coloryellow='on';
+                               }
+                       }
+                       $$hash{'ACTIVE'}=$$hash{$key}[2];
+                       $count++;
+                       if($coloryellow eq 'on'){
+                               $color="$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;
+                                       }
+                               }
+                       }elsif($#protocols gt '3'){
+                               print"<td align='center'><span title='$protz'>$Lang::tr{'fwdfw many'}</span></td>";
+                       }else{
+                               print"<td align='center'>$protz</td>";
+                       }
+                       @protocols=();
+                       #SOURCE
+                       my $ipfireiface;
+                       &getcolor($$hash{$key}[3],$$hash{$key}[4],\%customhost);
+                       print"<td align='center' width='30%' $tdcolor>";
+                       if ($$hash{$key}[3] eq 'ipfire_src'){
+                               $ipfireiface=$Lang::tr{'fwdfw iface'};
+                       }
+                       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'}";
+                       }elsif ($$hash{$key}[4] eq 'ALL'){
+                               print "$ipfireiface $Lang::tr{'all'}";
+                       }else{
+                               if ($$hash{$key}[4] eq 'GREEN' || $$hash{$key}[4] eq 'ORANGE' || $$hash{$key}[4] eq 'BLUE' || $$hash{$key}[4] eq 'RED'){
+                                       print "$ipfireiface $Lang::tr{lc($$hash{$key}[4])}";
+                               }else{
+                                       print "$ipfireiface $$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?
+                       my $natstring;
+                       if ($$hash{$key}[31] eq 'dnat' && $$hash{$key}[28] eq 'ON'){
+                               if ($$hash{$key}[29] eq 'Default IP'){$$hash{$key}[29]=$Lang::tr{'red1'};}
+                               if ($$hash{$key}[29] eq 'AUTO'){
+                                       my @src_addresses=&fwlib::get_addresses(\%$hash,$key,'src');
+                                       my @nat_ifaces;
+                                       foreach my $val (@src_addresses){
+                                               push (@nat_ifaces,&fwlib::get_nat_address($$hash{$key}[29],$val));
+                                       }
+                                       @nat_ifaces=&del_double(@nat_ifaces);
+                                       $natstring = "";
+                               }else{
+                                       $natstring = "($$hash{$key}[29])";
+                               }
+                               print "$Lang::tr{'firewall'} $natstring";
+                               if($$hash{$key}[30] ne ''){
+                                       $$hash{$key}[30]=~ tr/|/,/;
+                                       print": $$hash{$key}[30]";
+                               }
+                               print"<br>-&gt;";
+                       }
+                       if ($$hash{$key}[5] eq 'std_net_tgt' || $$hash{$key}[5] eq 'ipfire'){
+                               if ($$hash{$key}[6] eq 'RED1'){
+                                       print "$Lang::tr{'red1'}";
+                               }elsif ($$hash{$key}[6] eq 'GREEN' || $$hash{$key}[6] eq 'ORANGE' || $$hash{$key}[6] eq 'BLUE'|| $$hash{$key}[6] eq 'ALL' || $$hash{$key}[6] eq 'RED')
+                               {
+                                       print &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>";
+               }
+       } elsif ($optionsfw{'SHOWTABLES'} eq 'on') {
+               print <<END;
+                       <tr>
+                               <td colspan='7' height='30' bgcolor=$color{'color22'} align='center'>$Lang::tr{'fwhost empty'}</td>
+                       </tr>
+END
+       }
+
+       #SHOW FINAL RULE
+       my $policy = 'fwdfw ' . $fwdfwsettings{'POLICY'};
+       my $colour = "bgcolor='green'";
+       if ($fwdfwsettings{'POLICY'} eq 'MODE1') {
+               $colour = "bgcolor='darkred'";
+       }
+
+       my $message;
+       if (($config eq '/var/ipfire/firewall/config') && ($fwdfwsettings{'POLICY'} ne 'MODE1')) {
+               print <<END;
+                       <tr>
+                               <td colspan='13'>&nbsp;</td>
+                       </tr>
+                       <tr>
+                               <td colspan='13' style="padding-left:0px;padding-right:0px">
+                                       <table width="100%" border='1' rules="cols" cellspacing='0'>
+END
+
+               # GREEN
+               print <<END;
+                       <tr>
+                               <td align='center'>
+                                       <font color="$Header::colourgreen">$Lang::tr{'green'}</font>
+                               </td>
+                               <td align='center'>
+                                       <font color="$Header::colourred">$Lang::tr{'red'}</font>
+                                       ($Lang::tr{'fwdfw pol allow'})
+                               </td>
+END
+
+               if (&Header::orange_used()) {
+                       print <<END;
+                               <td align='center'>
+                                       <font color="$Header::colourorange">$Lang::tr{'orange'}</font>
+                                       ($Lang::tr{'fwdfw pol allow'})
+                               </td>
+END
+               }
+
+               if (&Header::blue_used()) {
+                       print <<END;
+                               <td align='center'>
+                                       <font color="$Header::colourblue">$Lang::tr{'blue'}</font>
+                                       ($Lang::tr{'fwdfw pol allow'})
+                               </td>
+END
+               }
+
+               print"</tr>";
+
+               # ORANGE
+               if (&Header::orange_used()) {
+                       print <<END;
+                               <tr>
+                                       <td align='center' width='20%'>
+                                               <font color="$Header::colourorange">$Lang::tr{'orange'}</font>
+                                       </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>
+END
+
+                       if (&Header::blue_used()) {
+                               print <<END;
+                                       <td align='center'>
+                                               <font color="$Header::colourblue">$Lang::tr{'blue'}</font>
+                                               ($Lang::tr{'fwdfw pol block'})
+                                       </td>
+END
+                       }
+
+                       print"</tr>";
+               }
+
+               if (&Header::blue_used()) {
+                       print <<END;
+                               <tr>
+                                       <td align='center'>
+                                               <font color="$Header::colourblue">$Lang::tr{'blue'}</font>
+                                       </td>
+                                       <td align='center'>
+                                               <font color="$Header::colourred">$Lang::tr{'red'}</font>
+                                               ($Lang::tr{'fwdfw pol allow'})
+                                       </td>
+END
+
+                       if (&Header::orange_used()) {
+                               print <<END;
+                                       <td align='center'>
+                                               <font color="$Header::colourorange">$Lang::tr{'orange'}</font>
+                                               ($Lang::tr{'fwdfw pol block'})
+                                       </td>
+END
+                       }
+
+                       print <<END;
+                                       <td align='center'>
+                                               <font color="$Header::colourgreen">$Lang::tr{'green'}</font>
+                                               ($Lang::tr{'fwdfw pol block'})
+                                       </td>
+                               </tr>
+END
+               }
+
+               print <<END;
+                                       </table>
+                               </td>
+                       </tr>
+END
+
+               $message = $Lang::tr{'fwdfw pol allow'};
+
+       } elsif ($config eq '/var/ipfire/firewall/outgoing' && ($fwdfwsettings{'POLICY1'} ne 'MODE1')) {
+               $message = $Lang::tr{'fwdfw pol allow'};
+               $colour = "bgcolor='green'";
+       } else {
+               $message = $Lang::tr{'fwdfw pol block'};
+               $colour = "bgcolor='darkred'";
+       }
+
+       if ($message) {
+               print <<END;
+                       <tr>
+                               <td $colour align='center' colspan='13'>
+                                       <font color='#FFFFFF'>$Lang::tr{'policy'}: $message</font>
+                               </td>
+                       </tr>
+END
+       }
+
+       print "</table>";
+       print "<br>";
+
+       &Header::closebox();
+}
+
+&Header::closebigbox();
+&Header::closepage();
diff --git a/html/cgi-bin/fwhosts.cgi b/html/cgi-bin/fwhosts.cgi
new file mode 100644 (file)
index 0000000..eeb83ac
--- /dev/null
@@ -0,0 +1,2661 @@
+#!/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 %fwout=();
+my %ovpnsettings=();
+my %netsettings=();
+
+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 $fwconfigout                = "${General::swroot}/firewall/outgoing";
+my $configovpn         = "${General::swroot}/ovpn/settings";
+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);
+&General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
+&Header::getcgihash(\%fwhostsettings);
+
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'fwhost menu'}, 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();
+               // Automatically select radio buttons when corresponding
+               // dropdown menu changes.
+               \$("select").change(function() {
+                       var id = \$(this).attr("name");
+                       \$('#' + id).prop("checked", true);
+               });
+       });
+</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 ($fwhostsettings{'oldsrvname'} ne $fwhostsettings{'SRV_NAME'} && !&checkgroup($fwhostsettings{'SRV_NAME'})){
+               $errormessage=$Lang::tr{'fwhost err grpexist'};
+       }
+       if (!$errormessage){
+               &General::readhasharray("$configsrv", \%customservice);
+               foreach my $key (keys %customservice)
+               {
+                       if ($customservice{$key}[0] eq $fwhostsettings{'oldsrvname'})
+                       {
+                               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'};
+               &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);
+                       }
+                       if ( ! -z $fwconfigout ){
+                               &General::readhasharray("$fwconfigout", \%fwout);
+                               foreach my $line (sort keys %fwout){
+                                       if ($fwout{$line}[15] eq $fwhostsettings{'oldsrvname'}){
+                                               $fwout{$line}[15] = $fwhostsettings{'SRV_NAME'};
+                                       }
+                               }
+                               &General::writehasharray("$fwconfigout", \%fwout);
+                       }
+                       #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'};
+                                       &checkrulereload($customservicegrp{$key}[0]);
+                               }
+                       }
+                       &General::writehasharray("$configsrvgrp", \%customservicegrp);
+               }
+               &checkrulereload($fwhostsettings{'SRV_NAME'});
+               $fwhostsettings{'SRV_NAME'}     = '';
+               $fwhostsettings{'SRV_PORT'}     = '';
+               $fwhostsettings{'PROT'}         = '';
+               $fwhostsettings{'ICMP'}         = '';
+               $fwhostsettings{'oldsrvicmp'} = '';
+               $fwhostsettings{'updatesrv'} = '';
+       }else{
+               $fwhostsettings{'SRV_NAME'}     = $fwhostsettings{'oldsrvname'};
+               $fwhostsettings{'SRV_PORT'}     = $fwhostsettings{'oldsrvport'};
+               $fwhostsettings{'PROT'}         = $fwhostsettings{'oldsrvprot'};
+               $fwhostsettings{'ICMP'}         = $fwhostsettings{'oldsrvicmp'};
+               $fwhostsettings{'updatesrv'}= 'on';
+       }
+       &addservice;
+}
+# save
+if ($fwhostsettings{'ACTION'} eq 'savenet' )
+{
+       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'};
+                       &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'}){
+                                                       delete $customnetwork{$key};
+                                                       last;
+                                               }
+                                       }
+                               }
+                       }
+                       #get count if actualize is 'on'
+                       if($fwhostsettings{'actualize'} eq 'on'){
+                               $fwhostsettings{'actualize'} = '';
+                               #check if we need to reload rules
+                               if($fwhostsettings{'orgip'}  ne $fwhostsettings{'IP'}){
+                                       $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 .. 3) { $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'}) ;
+                       $customnetwork{$key}[3]         = $fwhostsettings{'NETREMARK'};
+                       &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 $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 .. 3) { $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'};
+                       &General::writehasharray("$confighost", \%customhost);
+                       undef %customhost;
+               } 
+               if (!$errormessage){
+                       #get count if host was edited
+                       if($fwhostsettings{'actualize'} eq 'on'){
+                               if($fwhostsettings{'orgip'} ne $fwhostsettings{'IP'}){
+                                       $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 .. 3) { $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'};
+                       }
+                       $customhost{$key}[3] = $fwhostsettings{'HOSTREMARK'};
+                       &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);
+       &General::readhasharray("$fwconfigfwd", \%fwfwd);
+       &General::readhasharray("$fwconfiginp", \%fwinp);
+       &General::readhasharray("$fwconfigout", \%fwout);
+       #check name
+       if (!&validhostname($grp)){$errormessage.=$Lang::tr{'fwhost err name'};}
+       #check existing name
+       if (!&checkgroup($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);
+               #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 .. 3) { $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;
+               }
+               &General::writehasharray("$configgrp", \%customgrp);
+               #update counter in Host/Net
+               $fwhostsettings{'update'}='on';
+       }
+               #check if ruleupdate is needed
+               my $netgrpcount=0;
+               $netgrpcount=&getnetcount($grp);
+               if($netgrpcount > 0 )
+               {
+                       &General::firewall_config_changed();
+               }
+               &addgrp;
+               &viewtablegrp;
+}
+if ($fwhostsettings{'ACTION'} eq 'saveservice')
+{
+       my $ICMP;
+       &General::readhasharray("$configsrv", \%customservice );
+       &General::readhasharray("$configgrp", \%customgrp);
+       $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 ($fwhostsettings{'PROT'} ne 'ICMP'){$ICMP='BLANK';}
+       #Check if a group with the same name already exists
+       if (!&checkgroup($fwhostsettings{'SRV_NAME'})){
+               $errormessage = $Lang::tr{'fwhost err grpexist'};
+       }
+       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;
+               &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 $tcpcounter=0;
+       my $udpcounter=0;
+       &General::readhasharray("$configsrvgrp", \%customservicegrp );
+       &General::readhasharray("$configsrv", \%customservice );
+       $errormessage=&checkservicegroup;
+       #Check if we have more than 15 services from one Protocol in the group
+       #iptables can only handle 15 ports/portranges via multiport
+       foreach my $key (keys %customservicegrp){
+               if($customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'}){
+                       foreach my $key1 (keys %customservice){
+                               $tcpcounter++ if $customservice{$key1}[2] eq 'TCP' && $customservicegrp{$key}[2] eq $customservice{$key1}[0];
+                               $tcpcounter++ if $customservice{$key1}[2] eq 'TCP' && $customservicegrp{$key}[2] eq $customservice{$key1}[0] && $customservice{$key1}[1] =~m/:/i;
+                               $udpcounter++ if $customservice{$key1}[2] eq 'UDP' && $customservicegrp{$key}[2] eq $customservice{$key1}[0];
+                               $udpcounter++ if $customservice{$key1}[2] eq 'UDP' && $customservicegrp{$key}[2] eq $customservice{$key1}[0] && $customservice{$key1}[1] =~m/:/i;
+                       }
+               }
+       }
+       if ($tcpcounter > 15){
+               $errormessage=$Lang::tr{'fwhost err maxservicetcp'};
+       }
+       if ($udpcounter > 15){
+               $errormessage=$Lang::tr{'fwhost err maxserviceudp'};
+       }
+       $tcpcounter=0;
+       $udpcounter=0;
+       #check remark
+       if ($fwhostsettings{'SRVGRP_REMARK'} ne '' && !&validremark($fwhostsettings{'SRVGRP_REMARK'})){
+               $errormessage .= $Lang::tr{'fwhost err remark'};
+       }
+       #Check if there is already a service with the same name
+       if(!&checkservice($fwhostsettings{'SRVGRP_NAME'})){
+               $errormessage .= $Lang::tr{'fwhost err srv exists'};
+       }
+       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' && $customservicegrp{$key}[0] eq $fwhostsettings{'SRVGRP_NAME'}){
+                               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'};
+                               }
+                       }
+               }
+               my $key = &General::findhasharraykey (\%customservicegrp);
+               foreach my $i (0 .. 2) { $customservice{$key}[$i] = "";}
+               $customservicegrp{$key}[0] = $fwhostsettings{'SRVGRP_NAME'};
+               $customservicegrp{$key}[1] = $fwhostsettings{'SRVGRP_REMARK'};
+               $customservicegrp{$key}[2] = $fwhostsettings{'CUST_SRV'};
+               &General::writehasharray("$configsrvgrp", \%customservicegrp );
+               $fwhostsettings{'updatesrvgrp'}='on';
+       }
+       &checkrulereload($fwhostsettings{'SRVGRP_NAME'});
+       &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'}){
+                       $grpname=$customgrp{$key}[0];
+                       $grpremark=$customgrp{$key}[1];
+                       #check if we delete the last entry, then generate dummy
+                       if ($fwhostsettings{'last'} eq 'on'){
+                               $customgrp{$key}[1] = '';
+                               $customgrp{$key}[2] = 'none';
+                               $customgrp{$key}[3] = '';
+                               $fwhostsettings{'last'}='';
+                               last;
+                       }else{
+                               delete $customgrp{$key};
+                       }
+               }
+       }
+       &General::writehasharray("$configgrp", \%customgrp);
+       &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'}){
+                       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);
+       foreach my $key (keys %customservicegrp){
+               if($customservicegrp{$key}[0].",".$customservicegrp{$key}[1].",".$customservicegrp{$key}[2] eq $fwhostsettings{'delsrvfromgrp'})
+               {
+                       $grpname=$customservicegrp{$key}[0];
+                       $grpremark=$customservicegrp{$key}[1];
+                       if($fwhostsettings{'last'} eq 'on'){
+                               $customservicegrp{$key}[2] = 'none';
+                               $fwhostsettings{'last'} = '';
+                               last;
+                       }else{
+                               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'};
+       }elsif($fwhostsettings{'oldsrvrem'} eq $fwhostsettings{'newsrvrem'}){
+               &addservicegrp;
+               &viewtableservicegrp;
+       }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;
+}
+if ($fwhostsettings{'ACTION'} eq 'changesrvgrpname')
+{
+       &General::readhasharray("$configsrvgrp", \%customservicegrp );
+       if ($fwhostsettings{'oldsrvgrpname'} ne $fwhostsettings{'srvgrp'}){
+               #Check new groupname
+               if (!&validhostname($fwhostsettings{'srvgrp'})){
+                       $errormessage.=$Lang::tr{'fwhost err name'}."<br>";
+               }
+               if (!$errormessage){
+                       #Rename group in customservicegroup
+                       foreach my $key (keys %customservicegrp) {
+                               if($customservicegrp{$key}[0] eq $fwhostsettings{'oldsrvgrpname'}){
+                                       $customservicegrp{$key}[0]=$fwhostsettings{'srvgrp'};
+                               }
+                       }
+                       &General::writehasharray("$configsrvgrp", \%customservicegrp );
+                       #change name in FW Rules
+                       &changenameinfw($fwhostsettings{'oldsrvgrpname'},$fwhostsettings{'srvgrp'},15);
+               }
+       }
+       &addservicegrp;
+       &viewtableservicegrp;
+}
+if ($fwhostsettings{'ACTION'} eq 'changegrpname')
+{
+       &General::readhasharray("$configgrp", \%customgrp );
+       if ($fwhostsettings{'oldgrpname'} ne $fwhostsettings{'grp'}){
+               #Check new groupname
+               if (!&validhostname($fwhostsettings{'grp'})){
+                       $errormessage.=$Lang::tr{'fwhost err name'}."<br>";
+               }
+               if (!$errormessage){
+                       #Rename group in customservicegroup
+                       foreach my $key (keys %customgrp) {
+                               if($customgrp{$key}[0] eq $fwhostsettings{'oldgrpname'}){
+                                       $customgrp{$key}[0]=$fwhostsettings{'grp'};
+                               }
+                       }
+                       &General::writehasharray("$configgrp", \%customgrp );
+                       #change name in FW Rules
+                       &changenameinfw($fwhostsettings{'oldgrpname'},$fwhostsettings{'grp'},6);
+               }
+       }
+       &addgrp;
+       &viewtablegrp;
+}
+###  VIEW  ###
+if($fwhostsettings{'ACTION'} eq '')
+{
+       &showmenu;
+}
+###  FUNCTIONS  ###
+sub showmenu {
+       &Header::openbox('100%', 'left',);
+       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'></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></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'}'>";
+       }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 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'><br></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'};
+       $fwhostsettings{'oldgrpname'}=$fwhostsettings{'grp_name'};
+       my $grp=$fwhostsettings{'grp_name'};
+       my $rem=$fwhostsettings{'remark'};
+               if ($fwhostsettings{'update'} eq ''){   
+                       print<<END;
+               <table width='100%' border='0'>
+                       <tr>
+                               <td style='width:15%;'>$Lang::tr{'fwhost addgrpname'}</td>
+                               <td><form method='post'><input type='TEXT' name='grp_name' value='$fwhostsettings{'grp_name'}' size='30'></td>
+                       </tr>
+                       <tr>
+                               <td>$Lang::tr{'remark'}:</td>
+                               <td ><input type='TEXT' name='remark' value='$fwhostsettings{'remark'}' style='width: 99%;'></td>
+                       </tr>
+                       <tr>
+                               <td colspan='2'><br></td>
+                       </tr>
+               </table>
+END
+               }else{
+                       print<<END;
+                       <table width='100%' border='0'><form method='post'>
+                               <tr>
+                                       <td style='width:15%;'>$Lang::tr{'fwhost addgrpname'}</td>
+                                       <td style='width:30%;'><input type='TEXT' name='grp'  value='$fwhostsettings{'grp_name'}' size='30'></td>
+                                       <td><input type='submit' value='$Lang::tr{'fwhost change'}'><input type='hidden' name='oldgrpname' value='$fwhostsettings{'oldgrpname'}'><input type='hidden' name='ACTION' value='changegrpname'></td>
+                                       <td></td></form>
+                               </tr>
+                               <tr><form method='post' style='display:inline'>
+                                       <td>$Lang::tr{'remark'}:</td>
+                                       <td colspan='2' style='width:98%;'><input type='TEXT' name='newrem' value='$fwhostsettings{'remark'}' style='width:98%;'></td>
+                                       <td align='right'><input type='submit' value='$Lang::tr{'fwhost change'}'><input type='hidden' name='grp' value='$fwhostsettings{'grp_name'}'><input type='hidden' name='oldrem' value='$fwhostsettings{'oldremark'}'><input type='hidden' name='ACTION' value='changegrpremark' ></td>
+                               </tr>
+                       </table></form>
+                       <br><br>
+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='90%' border='0'>
+                       <tr>
+                               <td style='width:15em;'>
+                                       <label>
+                                               <input type='radio' name='grp2' value='std_net' id='DEFAULT_SRC_ADR' checked>
+                                               $Lang::tr{'fwhost stdnet'}
+                                       </label>
+                               </td>
+                               <td style='text-align:right;'>
+                                       <select name='DEFAULT_SRC_ADR' style='width:16em;'>
+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<<END;
+                               <tr>
+                                       <td>
+                                               <label>
+                                                       <input type='radio' name='grp2' id='CUST_SRC_NET' value='cust_net' $checked{'grp2'}{'cust_net'}>
+                                                       $Lang::tr{'fwhost cust net'}:
+                                               </label>
+                                       </td>
+                                       <td style='text-align:right;'>
+                                               <select name='CUST_SRC_NET' style='width:16em;'>";
+END
+                               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<<END;
+                               <tr>
+                                       <td valign='top'>
+                                               <label>
+                                                       <input type='radio' name='grp2' id='CUST_SRC_HOST' value='cust_host' $checked{'grp2'}{'cust_host'}>
+                                                       $Lang::tr{'fwhost cust addr'}:
+                                               </label>
+                                       </td>
+                                       <td style='text-align:right;'>
+                                               <select name='CUST_SRC_HOST' style='width:16em;'>";
+END
+                               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 align='right' style='vertical-align:top;'><table width='90%' border='0'>";
+                       #OVPN networks
+                       if (! -z $configccdnet){
+                               print<<END;
+                               <td style='width:15em;'>
+                                       <label>
+                                               <input type='radio' name='grp2' id='OVPN_CCD_NET' value='ovpn_net'  $checked{'grp2'}{'ovpn_net'}>
+                                               $Lang::tr{'fwhost ccdnet'}
+                                       </label>
+                               </td>
+                               <td style='text-align:right;'>
+                                       <select name='OVPN_CCD_NET' style='width:16em;'>";
+END
+                               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
+                       my @ovpn_clients=();
+                       foreach my $key (sort { ncmp($ccdhost{$a}[0],$ccdhost{$b}[0]) } keys %ccdhost)
+                       {
+                               if ($ccdhost{$key}[33] ne ''){
+                                       $show='1';
+                                       push (@ovpn_clients,$ccdhost{$key}[1]);
+                               }
+                       }
+                       if ($show eq '1'){
+                               $show='';
+                               print<<END;
+                                       <td style='width:15em;'>
+                                               <label>
+                                                       <input type='radio' name='grp2' value='ovpn_host' $checked{'grp2'}{'ovpn_host'}>
+                                                       $Lang::tr{'fwhost ccdhost'}
+                                               </label>
+                                       </td>
+                                       <td style='text-align:right;'>
+                                               <select name='OVPN_CCD_HOST' style='width:16em;'>" if ($show eq '');
+END
+                               foreach(@ovpn_clients){
+                                       print"<option value='$_'>$_</option>";
+                               }
+                               print"</select></td></tr>";
+                       }
+                       #OVPN n2n networks
+                       my @OVPN_N2N=();
+                       foreach my $key (sort { ncmp($ccdhost{$a}[1],$ccdhost{$b}[1]) } keys %ccdhost) {
+                               if($ccdhost{$key}[3] eq 'net'){
+                                       $show='1';
+                                       push (@OVPN_N2N,$ccdhost{$key}[1]);
+                               }
+                       }
+                       if ($show eq '1'){
+                               $show='';
+                               print<<END;
+                                       <td style='width:15em;'>
+                                               <label>
+                                                       <input type='radio' name='grp2' id='OVPN_N2N' value='ovpn_n2n' $checked{'grp2'}{'ovpn_n2n'}>
+                                                       $Lang::tr{'fwhost ovpn_n2n'}:
+                                               </label>
+                                       </td>
+                                       <td style='text-align:right;'>
+                                               <select name='OVPN_N2N' style='width:16em;'>"
+END
+                               foreach(@OVPN_N2N){
+                                       print"<option>$_</option>";
+                               }
+                               print"</select></td></tr>";
+                       }
+                       #IPsec networks
+                       my @IPSEC_N2N=();
+                       foreach my $key (sort { ncmp($ipsecconf{$a}[0],$ipsecconf{$b}[0]) } keys %ipsecconf) {
+                               if ($ipsecconf{$key}[3] eq 'net'){
+                                       $show='1';
+                                       push (@IPSEC_N2N,$ipsecconf{$key}[1]);
+                               }
+                       }
+                       if ($show eq '1'){
+                               $show='';
+                               print<<END;
+                                       <td style='width:15em;'>
+                                               <label>
+                                                       <input type='radio' name='grp2' id='IPSEC_NET' value='ipsec_net' $checked{'grp2'}{'ipsec_net'}>
+                                                       $Lang::tr{'fwhost ipsec net'}
+                                               </label>
+                                       </td>
+                                       <td style='text-align:right;'>
+                                       <select name='IPSEC_NET' style='width:16em;'>"
+END
+                               foreach(@IPSEC_N2N){
+                                       print"<option value='$_'>$_</option>";
+                               }
+                       }
+                       print"</select></td></tr>";
+                       print"</table>";
+                       print"</td></tr></table>";
+                       print"<br><br>";
+               }
+               print"<table width='100%'>";
+               print"<tr><td style='text-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></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'};
+       $fwhostsettings{'oldsrvgrpname'}=$fwhostsettings{'SRVGRP_NAME'};
+       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></tr>
+               </table>
+END
+       }else{
+               print<<END;
+               <table width='100%'><form method='post' style='display:inline'>
+               <tr><td width='10%'>$Lang::tr{'fwhost addgrpname'}</td><td width='20%'><input type='text' name='srvgrp' value='$fwhostsettings{'SRVGRP_NAME'}' size='14'></td><td align='left'><input type='submit' value='$Lang::tr{'fwhost change'}'><input type='hidden' name='oldsrvgrpname' value='$fwhostsettings{'oldsrvgrpname'}'><input type='hidden' name='ACTION' value='changesrvgrpname'></td><td width='3%'></td></form></tr>
+               <tr>
+                       <form method='post'>
+                               <td width='10%'>
+                                       $Lang::tr{'remark'}:
+                               </td>
+                               <td colspan='2'>
+                                       <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='srvgrp' value='$fwhostsettings{'SRVGRP_NAME'}'>
+                                       <input type='hidden' name='ACTION' value='changesrvgrpremark' >
+                               </td>
+               </tr>
+               <tr>
+                               <td colspan='4'>
+                                       <br>
+                               </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='10%' nowrap='nowrap'>$Lang::tr{'add'}: </td><td><select name='CUST_SRV' style='min-width:185px;'>
+END
+       &General::readhasharray("$configsrv", \%customservice);
+       #Protocols for use in servicegroups
+       print "<optgroup label='$Lang::tr{'fwhost cust service'}'>";
+       foreach my $key (sort { ncmp($customservice{$a}[0],$customservice{$b}[0]) } keys %customservice)
+       {
+               print "<option>$customservice{$key}[0]</option>";
+       }
+       print "</optgroup>";
+       print "<optgroup label='$Lang::tr{'protocol'}'>";
+       print "<option>GRE</option>";
+       print "<option>AH</option>";
+       print "<option>ESP</option>";
+       print "<option>IGMP</option>";
+       print "<option>IPIP</option>";
+       print "<option value='IPV6'>IPv6 encap</option>";
+       print "</optgroup>";
+       print<<END;
+       </select></td></tr>
+       <tr><td colspan='4'><br><br></td></tr>
+       <tr><td colspan='4'></td></tr>
+       </table>
+END
+       }
+       print<<END;
+       <table width='100%'>
+       <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);
+               &General::readhasharray("$configgrp", \%customgrp);
+               &General::readhasharray("$fwconfigfwd", \%fwfwd);
+               &General::readhasharray("$fwconfiginp", \%fwinp);
+               &General::readhasharray("$fwconfigout", \%fwout);
+
+               if (!keys %customnetwork) 
+               { 
+                       print "<center><b>$Lang::tr{'fwhost empty'}</b>"; 
+               }else{
+                       print<<END;
+                       <table width='100%' cellspacing='0' class='tbl'>
+                       <tr><th align='center'><b>$Lang::tr{'name'}</b></th><th align='center'><b>$Lang::tr{'fwhost netaddress'}</b></th><th align='center'><b>$Lang::tr{'remark'}</b></th><th align='center'><b>$Lang::tr{'used'}</b></th><th></th><th width='3%'></th></tr>
+END
+               }
+               my $count=0;
+               my $col='';
+               foreach my $key (sort {ncmp($a,$b)} keys %customnetwork) {
+                       if ($fwhostsettings{'ACTION'} eq 'editnet' && $fwhostsettings{'HOSTNAME'} eq $customnetwork{$key}[0]) {
+                               print" <tr>";
+                               $col="bgcolor='${Header::colouryellow}'";
+                       }elsif ($count % 2)
+                       { 
+                               $col="bgcolor='$color{'color20'}'";
+                               print" <tr>";
+                       }else
+                       {
+                               $col="bgcolor='$color{'color22'}'";
+                               print" <tr>";
+                       }
+                       my $colnet="$customnetwork{$key}[1]/".&General::subtocidr($customnetwork{$key}[2]);
+                       my $netcount=&getnetcount($customnetwork{$key}[0]);
+                       print"<td width='20%' $col><form method='post'>$customnetwork{$key}[0]</td><td width='15%' align='center' $col>".&getcolor($colnet)."</td><td width='40%' $col>$customnetwork{$key}[3]</td><td align='center' $col>$netcount x</td>";
+                       print<<END;
+                       <td width='1%' $col><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($netcount == '0')
+                       {
+                               print"<td width='1%' $col><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 $col></td></tr>";
+                       }
+                       $count++;
+               }
+               print"</table>";
+               &Header::closebox();
+       }       
+
+}
+sub getcolor
+{
+               my $c=shift;
+               my $sip;
+               my $scidr;
+               my $tdcolor='';
+               #Check if MAC
+               if (&General::validmac($c)){ return $c;}
+
+               #Check if we got a full IP with subnet then split it
+               if($c =~ /^(.*?)\/(.*?)$/){
+                       ($sip,$scidr) = split ("/",$c);
+               }else{
+                       $sip=$c;
+               }
+
+               #Now check if IP is part of ORANGE,BLUE or GREEN
+               if ( &Header::orange_used() && &General::IpInSubnet($sip,$netsettings{'ORANGE_ADDRESS'},$netsettings{'ORANGE_NETMASK'})){
+                       $tdcolor="<font style='color: $Header::colourorange;'>$c</font>";
+                       return $tdcolor;
+               }
+               if ( &General::IpInSubnet($sip,$netsettings{'GREEN_ADDRESS'},$netsettings{'GREEN_NETMASK'})){
+                       $tdcolor="<font style='color: $Header::colourgreen;'>$c</font>";
+                       return $tdcolor;
+               }
+               if ( &Header::blue_used() && &General::IpInSubnet($sip,$netsettings{'BLUE_ADDRESS'},$netsettings{'BLUE_NETMASK'})){
+                       $tdcolor="<font style='color: $Header::colourblue;'>$c</font>";
+                       return $tdcolor;
+               }
+
+               #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($sip,$a,$b)){
+                                       $tdcolor="<font style='color:$Header::colourovpn ;'>$c</font>";
+                                       return $tdcolor;
+                               }
+                       }
+               }
+
+               #Check if IP is part of OpenVPN dynamic subnet
+               my ($a,$b) = split("/",$ovpnsettings{'DOVPN_SUBNET'});
+               if (&General::IpInSubnet($sip,$a,$b)){
+                       $tdcolor="<font style='color: $Header::colourovpn;'>$c</font>";
+                       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($sip,$a,$b)){
+                               $tdcolor="<font style='color: $Header::colourovpn;'>$c</font>";
+                               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($sip,$a,$b)){
+                               $tdcolor="<font style='color: $Header::colourvpn;'>$c</font>";
+                               return $tdcolor;
+                       }
+               }
+
+               #Check if IP is part of a IPsec N2N network
+               foreach my $key (sort keys %ipsecconf){
+                       if ($ipsecconf{$key}[11]){
+                               my ($a,$b) = split("/",$ipsecconf{$key}[11]);
+                               $b=&General::iporsubtodec($b);
+                               if (&General::IpInSubnet($sip,$a,$b)){
+                                       $tdcolor="<font style='color: $Header::colourvpn;'>$c</font>";
+                                       return $tdcolor;
+                               }
+                       }
+               }
+               return "$c";
+}
+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);
+               &General::readhasharray("$fwconfigfwd", \%fwfwd);
+               &General::readhasharray("$fwconfiginp", \%fwinp);
+               &General::readhasharray("$fwconfigout", \%fwout);
+               &General::readhasharray("$configgrp", \%customgrp);
+               if (!keys %customhost) 
+               { 
+                       print "<center><b>$Lang::tr{'fwhost empty'}</b>"; 
+               }else{
+               print<<END;
+               <table width='100%' cellspacing='0' class='tbl'>
+               <tr><th align='center'><b>$Lang::tr{'name'}</b></th><th align='center'><b>$Lang::tr{'fwhost ip_mac'}</b></th><th align='center'><b>$Lang::tr{'remark'}</b></th><th align='center'><b>$Lang::tr{'used'}</b></th><th></th><th width='3%'></th></tr>
+END
+       }
+               my $count=0;
+               my $col='';
+               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>";
+                               $col="bgcolor='${Header::colouryellow}'";
+                       }elsif ($count % 2){
+                               print" <tr>";
+                               $col="bgcolor='$color{'color20'}'";
+                       }else{
+                               $col="bgcolor='$color{'color22'}'";
+                               print" <tr>";
+                       }
+                       my ($ip,$sub)=split(/\//,$customhost{$key}[2]);
+                       $customhost{$key}[4]=~s/\s+//g;
+                       my $hostcount=0;
+                       $hostcount=&gethostcount($customhost{$key}[0]);
+                       print"<td width='20%' $col>$customhost{$key}[0]</td><td width='20%' align='center' $col >".&getcolor($ip)."</td><td width='50%' align='left' $col>$customhost{$key}[3]</td><td align='center' $col>$hostcount x</td>";
+                       print<<END;
+                       <td width='1%' $col><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($hostcount == '0')
+                       {
+                               print"<td width='1%' $col><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%' $col></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);
+       &General::readhasharray("$fwconfigfwd", \%fwfwd);
+       &General::readhasharray("$fwconfiginp", \%fwinp);
+       &General::readhasharray("$fwconfigout", \%fwout);
+       my @grp=();
+       my $helper='';
+       my $count=1;
+       my $grpname;
+       my $remark;
+       my $number;
+       my $delflag;
+       my @counter;
+       my %hash;
+       if (!keys %customgrp) 
+       {
+               print "<center><b>$Lang::tr{'fwhost err emptytable'}</b>";
+       }else{
+               #get all groups in a hash
+               foreach my $key (sort { ncmp($customgrp{$a}[0],$customgrp{$b}[0]) } sort { ncmp($customgrp{$a}[2],$customgrp{$b}[2]) } keys %customgrp){
+                       push (@counter,$customgrp{$key}[0]);
+               }
+               foreach my $key1 (@counter) {
+                       $hash{$key1}++ ;
+               }
+               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>";$count=1;}
+                               print "<br><b><u>$grpname</u></b>&nbsp; &nbsp;";
+                               print " <b>$Lang::tr{'remark'}:</b>&nbsp $remark &nbsp " if ($remark ne '');
+                               my $netgrpcount=&getnetcount($grpname);
+                               print "<b>$Lang::tr{'used'}:</b> $netgrpcount x";
+                               if($netgrpcount == '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%' cellspacing='0' class='tbl'><tr><th align='center'><b>$Lang::tr{'name'}</b></th><th align='center'><b>$Lang::tr{'fwhost ip_mac'}</b></th><th align='center' width='25%'><b>$Lang::tr{'fwhost type'}</th><th></th></tr>";
+                       }
+                       my $col='';
+                       if ( ($fwhostsettings{'ACTION'} eq 'editgrp' || $fwhostsettings{'update'} ne '') && $fwhostsettings{'grp_name'} eq $customgrp{$key}[0]) {
+                               print" <tr>";
+                               $col="bgcolor='${Header::colouryellow}'";
+                       }elsif ($count %2 == 0){
+                               print"<tr>";
+                               $col="bgcolor='$color{'color20'}'";
+                       }else{
+                               print"<tr>";
+                               $col="bgcolor='$color{'color22'}'";
+                       }
+                       my $ip=&getipforgroup($customgrp{$key}[2],$customgrp{$key}[3]); 
+                       if ($ip eq ''){
+                               print"<tr>";
+                               $col="bgcolor='${Header::colouryellow}'";
+                       }
+                       print "<td width='39%' align='left' $col>";
+                       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' $col>$Lang::tr{'fwhost deleted'}</td><td align='center' $col>$Lang::tr{'fwhost '.$customgrp{$key}[3]}</td><td width='1%' $col><form method='post'>";
+                       }else{
+                               my ($colip,$colsub) = split("/",$ip);
+                               $ip="$colip/".&General::iporsubtocidr($colsub) if ($colsub);
+                               print"<td align='center' $col>".&getcolor($ip)."</td><td align='center' $col>$Lang::tr{'fwhost '.$customgrp{$key}[3]}</td><td width='1%' $col><form method='post'>";
+                       }
+                       if ($delflag > 0 && $ip ne ''){
+                               print"<input type='image' src='/images/delete.gif' align='middle' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' />";
+                               #check if this group has only one entry
+                               foreach my $key2 (keys %hash) {
+                                       if ($hash{$key2}<2 && $key2 eq $customgrp{$key}[0]){
+                                               print "<input type='hidden' name='last' value='on'>"  ;
+                                       }
+                               }
+                       }
+                       print"<input type='hidden' name='ACTION' value='deletegrphost'><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;
+       my $srvcount;
+       if(! -z "$configsrv")
+       {
+               &Header::openbox('100%', 'left', $Lang::tr{'fwhost services'});
+               &General::readhasharray("$configsrv", \%customservice);
+               &General::readhasharray("$configsrvgrp", \%customservicegrp);
+               &General::readhasharray("$fwconfigfwd", \%fwfwd);
+               &General::readhasharray("$fwconfiginp", \%fwinp);
+               &General::readhasharray("$fwconfigout", \%fwout);
+               print<<END;
+                       <table width='100%' cellspacing='0' class='tbl'>
+                       <tr><th align='center'><b>$Lang::tr{'fwhost srv_name'}</b></th><th align='center'><b>$Lang::tr{'fwhost prot'}</b></th><th align='center'><b>$Lang::tr{'fwhost port'}</b></th><th align='center'><b>ICMP</b></th><th align='center'><b>$Lang::tr{'fwhost used'}</b></th><th></th><th width='3%'></th></tr>
+END
+               my $col='';
+               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>";
+                               $col="bgcolor='${Header::colouryellow}'";
+                       }elsif ($count % 2){
+                               print" <tr>";
+                               $col="bgcolor='$color{'color22'}'";
+                       }else{
+                               print" <tr>";
+                               $col="bgcolor='$color{'color20'}'";
+                       }
+                       print<<END;
+                       <td $col>$customservice{$key}[0]</td><td align='center' $col>$customservice{$key}[2]</td><td align='center' $col>$customservice{$key}[1]</td><td align='center' $col>
+END
+                       #Neuer count
+                       $srvcount=&getsrvcount($customservice{$key}[0]);
+                       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' $col>$srvcount x</td>
+                       <td width='1%' $col><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 ($srvcount eq '0')
+                       {
+                               print"<td width='1%' $col><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 $col></td></tr>";
+                       }
+               }
+               print"</table>";
+               &Header::closebox();
+       }
+}
+sub viewtableservicegrp
+{
+       my $count=0;
+       my $grpname;
+       my $remark;
+       my $helper;
+       my $helper1;
+       my $port;
+       my $protocol;
+       my $delflag;
+       my $grpcount=0;
+       my $col='';
+       my $lastentry=0;
+       my @counter;
+       my %hash;
+       if (! -z $configsrvgrp){
+               &Header::openbox('100%', 'left', $Lang::tr{'fwhost cust srvgrp'});
+               &General::readhasharray("$configsrvgrp", \%customservicegrp);
+               &General::readhasharray("$configsrv", \%customservice);
+               &General::readhasharray("$fwconfigfwd", \%fwfwd);
+               &General::readhasharray("$fwconfiginp", \%fwinp);
+               &General::readhasharray("$fwconfigout", \%fwout);
+               my $number= keys %customservicegrp;
+               foreach my $key (sort { ncmp($customservicegrp{$a}[0],$customservicegrp{$b}[0]) } sort { ncmp($customservicegrp{$a}[2],$customservicegrp{$b}[2]) }keys %customservicegrp){
+                       push (@counter,$customservicegrp{$key}[0]);
+               }
+               foreach my $key1 (@counter) {
+                       $hash{$key1}++ ;
+               }
+               foreach my $key (sort { ncmp($customservicegrp{$a}[0],$customservicegrp{$b}[0]) } sort { ncmp($customservicegrp{$a}[2],$customservicegrp{$b}[2]) }keys %customservicegrp){
+                       $count++;
+                       if ($helper ne $customservicegrp{$key}[0]){
+                               #Get used groupcounter
+                               $grpcount=&getsrvcount($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 err emptytable'};
+                                       $port='';
+                                       $protocol='';
+                               }
+                               $remark="$customservicegrp{$key}[1]";
+                               if($count >0){print"</table>";$count=1;}
+                               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> $grpcount x";
+                               if($grpcount == '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%' cellspacing='0' class='tbl'><tr><th align='center'><b>Name</b></th><th align='center'><b>$Lang::tr{'port'}</b></th><th align='center' width='25%'><b>$Lang::tr{'fwhost prot'}</th><th></th></tr>";
+                       }
+                       if( $fwhostsettings{'SRVGRP_NAME'} eq $customservicegrp{$key}[0]) {
+                               print"<tr>";
+                               $col="bgcolor='${Header::colouryellow}'";
+                       }elsif ($count %2 == 0){
+                               print"<tr>";
+                               $col="bgcolor='$color{'color20'}'";
+                       }else{
+                               print"<tr>";
+                               $col="bgcolor='$color{'color22'}'";
+                       }
+                       #make lines yellow if it is a dummy entry
+                       if ($customservicegrp{$key}[2] eq $Lang::tr{'fwhost err emptytable'}){
+                               print"<tr>";
+                               $col="bgcolor='${Header::colouryellow}'";
+                       }
+                       #Set fields if we use protocols in servicegroups
+                       if ($customservicegrp{$key}[2] ne 'TCP' || $customservicegrp{$key}[2] ne 'UDP' || $customservicegrp{$key}[2] ne 'ICMP'){
+                               $port='-';
+                       }
+                       if ($customservicegrp{$key}[2] eq 'GRE'){$protocol='GRE';$customservicegrp{$key}[2]="$Lang::tr{'protocol'} GRE";}
+                       if ($customservicegrp{$key}[2] eq 'ESP'){$protocol='ESP';$customservicegrp{$key}[2]="$Lang::tr{'protocol'} ESP";}
+                       if ($customservicegrp{$key}[2] eq 'AH'){$protocol='AH';$customservicegrp{$key}[2]="$Lang::tr{'protocol'} AH";}
+                       if ($customservicegrp{$key}[2] eq 'IGMP'){$protocol='IGMP';$customservicegrp{$key}[2]="$Lang::tr{'protocol'} IGMP";}
+                       if ($customservicegrp{$key}[2] eq 'IPIP'){$protocol='IPIP';$customservicegrp{$key}[2]="$Lang::tr{'protocol'} IPIP";}
+                       if ($customservicegrp{$key}[2] eq 'IPV6'){$protocol='IPV6';$customservicegrp{$key}[2]="$Lang::tr{'protocol'} IPv6 encapsulation";}
+                       print "<td width='39%' $col>$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' $col>$port</td><td align='center' $col>$protocol</td><td width='1%' $col><form method='post'>";
+                       if ($delflag gt '0'){
+                               if ($customservicegrp{$key}[2] ne $Lang::tr{'fwhost err emptytable'}){
+                                       print"<input type='image' src='/images/delete.gif' align='middle' alt='$Lang::tr{'delete'}' title=$Lang::tr{'delete'} />";
+                               }
+                               #check if this group has only one entry
+                               foreach my $key2 (keys %hash) {
+                                       if ($hash{$key2}<2 && $key2 eq $customservicegrp{$key}[0]){
+                                               print "<input type='hidden' name='last' value='on'>"  ;
+                                       }
+                               }
+                       }
+                       print"<input type='hidden' name='ACTION' value='delgrpservice'><input type='hidden' name='updatesrvgrp' value='$fwhostsettings{'updatesrvgrp'}'>";
+                       if($protocol eq 'TCP' || $protocol eq 'UDP' || $protocol eq 'ICMP'){
+                               print "<input type='hidden' name='delsrvfromgrp' value='$grpname,$remark,$customservicegrp{$key}[2]'></form></td></tr>";
+                       }else{
+                               print "<input type='hidden' name='delsrvfromgrp' value='$grpname,$remark,$protocol'></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
+{
+       &General::readhasharray("$configgrp", \%customgrp );
+       my $name=shift;
+       foreach my $key (keys %customservicegrp) {
+               if($customservicegrp{$key}[0] eq $name){
+                       return 0;
+               }
+       }
+       return 1;
+}
+sub checkservice
+{
+       &General::readhasharray("$configsrv", \%customservice );
+       my $name=shift;
+       foreach my $key (keys %customservice) {
+               if($customservice{$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 checkrulereload
+{
+       my $search=shift;
+       &General::readhasharray("$fwconfigfwd", \%fwfwd);
+       &General::readhasharray("$fwconfiginp", \%fwinp);
+       &General::readhasharray("$fwconfigout", \%fwout);
+
+       #check if service or servicegroup is used in rules
+       foreach my $key (keys %fwfwd){
+               if($search eq $fwfwd{$key}[15]){
+                       &General::firewall_config_changed();
+                       return;
+               }
+       }
+       foreach my $key (keys %fwinp){
+               if($search eq $fwinp{$key}[15]){
+                       &General::firewall_config_changed();
+                       return;
+               }
+       }
+       foreach my $key (keys %fwout){
+               if($search eq $fwout{$key}[15]){
+                       &General::firewall_config_changed();
+                       return;
+               }
+       }
+}
+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 gethostcount
+{
+       my $searchstring=shift;
+       my $srvcounter=0;
+       #Count services used in servicegroups
+       foreach my $key (keys %customgrp) {
+               if($customgrp{$key}[2] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       #Count services used in firewall - config
+       foreach my $key1 (keys %fwfwd) {
+               if($fwfwd{$key1}[4] eq $searchstring){
+                       $srvcounter++;
+               }
+               if($fwfwd{$key1}[6] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       #Count services used in firewall - input
+       foreach my $key2 (keys %fwinp) {
+               if($fwinp{$key2}[4] eq $searchstring){
+                       $srvcounter++;
+               }
+               if($fwinp{$key2}[6] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       #Count services used in firewall - outgoing
+       foreach my $key3 (keys %fwout) {
+               if($fwout{$key3}[4] eq $searchstring){
+                       $srvcounter++;
+               }
+               if($fwout{$key3}[6] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       return $srvcounter;
+}
+sub getnetcount
+{
+       my $searchstring=shift;
+       my $srvcounter=0;
+       #Count services used in servicegroups
+       foreach my $key (keys %customgrp) {
+               if($customgrp{$key}[2] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       #Count services used in firewall - config
+       foreach my $key1 (keys %fwfwd) {
+               if($fwfwd{$key1}[4] eq $searchstring){
+                       $srvcounter++;
+               }
+               if($fwfwd{$key1}[6] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       #Count services used in firewall - input
+       foreach my $key2 (keys %fwinp) {
+               if($fwinp{$key2}[4] eq $searchstring){
+                       $srvcounter++;
+               }
+               if($fwinp{$key2}[6] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       #Count services used in firewall - outgoing
+       foreach my $key3 (keys %fwout) {
+               if($fwout{$key3}[4] eq $searchstring){
+                       $srvcounter++;
+               }
+               if($fwout{$key3}[6] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       return $srvcounter;
+}
+sub getsrvcount
+{
+       my $searchstring=shift;
+       my $srvcounter=0;
+       #Count services used in servicegroups
+       foreach my $key (keys %customservicegrp) {
+               if($customservicegrp{$key}[2] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       #Count services used in firewall - config
+       foreach my $key1 (keys %fwfwd) {
+               if($fwfwd{$key1}[15] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       #Count services used in firewall - input
+       foreach my $key2 (keys %fwinp) {
+               if($fwinp{$key2}[15] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       #Count services used in firewall - outgoing
+       foreach my $key3 (keys %fwout) {
+               if($fwout{$key3}[15] eq $searchstring){
+                       $srvcounter++;
+               }
+       }
+       return $srvcounter;
+}
+sub deletefromgrp
+{
+       my $target=shift;
+       my $config=shift;
+       my %hash=();
+       &General::readhasharray("$config",\%hash);
+       foreach my $key (keys %hash) {
+               if($hash{$key}[2] eq $target){
+                       delete $hash{$key};
+               }
+       }
+       &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 changenameinfw
+{
+       my $old=shift;
+       my $new=shift;
+       my $fld=shift;
+       &General::readhasharray("$fwconfigfwd", \%fwfwd);
+       &General::readhasharray("$fwconfiginp", \%fwinp);
+       &General::readhasharray("$fwconfigout", \%fwout);
+       #Rename group in Firewall-CONFIG
+       foreach my $key1 (keys %fwfwd) {
+               if($fwfwd{$key1}[$fld] eq $old){
+                       $fwfwd{$key1}[$fld]=$new;
+               }
+       }
+       &General::writehasharray("$fwconfigfwd", \%fwfwd );
+       #Rename group in Firewall-INPUT
+       foreach my $key2 (keys %fwinp) {
+               if($fwinp{$key2}[$fld] eq $old){
+                       $fwinp{$key2}[$fld]=$new;
+               }
+       }
+       &General::writehasharray("$fwconfiginp", \%fwinp );
+       #Rename group in Firewall-OUTGOING
+       foreach my $key3 (keys %fwout) {
+               if($fwout{$key3}[$fld] eq $old){
+                       $fwout{$key3}[$fld]=$new;
+               }
+       }
+       &General::writehasharray("$fwconfigout", \%fwout );
+}
+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();
diff --git a/html/cgi-bin/gpl.cgi b/html/cgi-bin/gpl.cgi
new file mode 100644 (file)
index 0000000..94187ce
--- /dev/null
@@ -0,0 +1,89 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2012  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/>.       #
+#                                                                             #
+###############################################################################
+
+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";
+require "/opt/pakfire/lib/functions.pl";
+
+# If the license has already been accepted.
+if ( -e "/var/ipfire/main/gpl_accepted" ) {
+       &redirect();
+}
+
+my %cgiparams;
+$cgiparams{'ACTION'} = '';
+
+&Header::getcgihash(\%cgiparams);
+
+# Check if the license agreement has been accepted.
+if ($cgiparams{'ACTION'} eq "$Lang::tr{'yes'}" && $cgiparams{'gpl_accepted'} eq '1') {
+       open(FILE, ">/var/ipfire/main/gpl_accepted");
+       close(FILE);
+
+       &redirect();
+}
+
+&Header::showhttpheaders();
+
+&Header::openpage($Lang::tr{'main page'}, 1);
+&Header::openbigbox('', 'center');
+
+&Header::openbox('100%', 'left', $Lang::tr{'gpl license agreement'});
+print <<END;
+       $Lang::tr{'gpl please read carefully the general public license and accept it below'}.
+       <br /><br />
+END
+;      
+if ( -e "/usr/share/doc/licenses/GPLv3" ) {
+       print '<textarea rows=\'25\' cols=\'75\' readonly=\'readonly\'>';
+       print `cat /usr/share/doc/licenses/GPLv3`;
+       print '</textarea>';
+}
+else {
+       print '<br /><a href=\'http://www.gnu.org/licenses/gpl-3.0.txt\' target=\'_blank\'>GNU GENERAL PUBLIC LICENSE</a><br />';
+}
+print <<END;
+       <p>
+               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
+                       <input type='checkbox' name='gpl_accepted' value='1'/> $Lang::tr{'gpl i accept these terms and conditions'}.
+                       <br/ >
+                       <input type='submit' name='ACTION' value=$Lang::tr{'yes'} />
+               </form>
+       </p>
+       <a href='http://www.gnu.org/licenses/translations.html' target='_blank'>$Lang::tr{'gpl unofficial translation of the general public license v3'}</a>
+
+END
+
+&Header::closebox();
+&Header::closebigbox();
+&Header::closepage();
+
+sub redirect {
+       print "Status: 302 Moved Temporarily\n";
+       print "Location: index.cgi\n\n";
+       exit (0);
+}
index 5abf88e99a419f9ffbf842e770c87b69312a9c8a..726abf7dee5742d7b0b80ecf74f7ecf05f61b11e 100644 (file)
@@ -36,10 +36,8 @@ my %checked=();
 my $errormessage='';
 
 
-$cgiparams{'FX'} = 'off';
 $cgiparams{'SPEED'} = 'off';
 $cgiparams{'WINDOWWITHHOSTNAME'} = 'off';
-$cgiparams{'REBOOTQUESTION'} = 'off';
 $cgiparams{'REFRESHINDEX'} = 'off';
 $cgiparams{'ACTION'} = '';
 &Header::getcgihash(\%cgiparams);
@@ -65,7 +63,7 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}")
        close (FILE);
        if ( $found == 0 )
        {
-               $errormessage="$errormessage<P>$Lang::tr{'invalid input'}";
+               $errormessage="$errormessage<p>$Lang::tr{'invalid input'}</p>";
                goto SAVE_ERROR;
        }
 
@@ -88,9 +86,7 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}")
         # write cgi vars to the file.
        $mainsettings{'LANGUAGE'} = $cgiparams{'lang'};
        $mainsettings{'WINDOWWITHHOSTNAME'} = $cgiparams{'WINDOWWITHHOSTNAME'};
-       $mainsettings{'REBOOTQUESTION'} = $cgiparams{'REBOOTQUESTION'};
        $mainsettings{'PPPUPDOWNBEEP'} = $cgiparams{'PPPUPDOWNBEEP'};
-       $mainsettings{'FX'} = $cgiparams{'FX'};
        $mainsettings{'SPEED'} = $cgiparams{'SPEED'};
        $mainsettings{'THEME'} = $cgiparams{'theme'};
        $mainsettings{'REFRESHINDEX'} = $cgiparams{'REFRESHINDEX'};
@@ -101,13 +97,7 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}")
        if ($mainsettings{'WINDOWWITHHOSTNAME'}) {
                $cgiparams{'WINDOWWITHHOSTNAME'} = $mainsettings{'WINDOWWITHHOSTNAME'};
        } else {
-               $cgiparams{'WINDOWWITHHOSTNAME'} = 'off';
-       }
-       
-       if ($mainsettings{'REBOOTQUESTION'}) {
-               $cgiparams{'REBOOTQUESTION'} = $mainsettings{'REBOOTQUESTION'};
-       } else {
-               $cgiparams{'REBOOTQUESTION'} = 'on';
+               $cgiparams{'WINDOWWITHHOSTNAME'} = 'on';
        }
 
        if ($mainsettings{'PPPUPDOWNBEEP'}) {
@@ -116,12 +106,6 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}")
                $cgiparams{'PPPUPDOWNBEEP'} = 'on';
        }
 
-       if ($mainsettings{'FX'}) {
-               $cgiparams{'FX'} = $mainsettings{'FX'};
-       } else {
-               $cgiparams{'FX'} = 'on';
-       }
-
        if ($mainsettings{'THEME'}) {
                $cgiparams{'THEME'} = $mainsettings{'THEME'};
        } else {
@@ -146,11 +130,9 @@ if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}")
 # Default settings
 if ($cgiparams{'ACTION'} eq "$Lang::tr{'restore defaults'}")
 {
-       $cgiparams{'WINDOWWITHHOSTNAME'} = 'off';
-       $cgiparams{'REBOOTQUESTION'} = 'on';
+       $cgiparams{'WINDOWWITHHOSTNAME'} = 'on';
        $cgiparams{'PPPUPDOWNBEEP'} = 'on';
        $cgiparams{'REFRESHINDEX'} = 'off';
-       $cgiparams{'FX'} = 'on';
        $cgiparams{'SPEED'} = 'on';
        $cgiparams{'THEME'} = 'ipfire';
 }
@@ -159,10 +141,6 @@ $checked{'WINDOWWITHHOSTNAME'}{'off'} = '';
 $checked{'WINDOWWITHHOSTNAME'}{'on'} = '';
 $checked{'WINDOWWITHHOSTNAME'}{$cgiparams{'WINDOWWITHHOSTNAME'}} = "checked='checked'";
 
-$checked{'REBOOTQUESTION'}{'off'} = '';
-$checked{'REBOOTQUESTION'}{'on'} = '';
-$checked{'REBOOTQUESTION'}{$cgiparams{'REBOOTQUESTION'}} = "checked='checked'";
-
 $checked{'PPPUPDOWNBEEP'}{'off'} = '';
 $checked{'PPPUPDOWNBEEP'}{'on'} = '';
 $checked{'PPPUPDOWNBEEP'}{$cgiparams{'PPPUPDOWNBEEP'}} = "checked='checked'";
@@ -171,10 +149,6 @@ $checked{'REFRESHINDEX'}{'off'} = '';
 $checked{'REFRESHINDEX'}{'on'} = '';
 $checked{'REFRESHINDEX'}{$cgiparams{'REFRESHINDEX'}} = "checked='checked'";
 
-$checked{'FX'}{'off'} = '';
-$checked{'FX'}{'on'} = '';
-$checked{'FX'}{$cgiparams{'FX'}} = "checked='checked'";
-
 $checked{'SPEED'}{'off'} = '';
 $checked{'SPEED'}{'on'} = '';
 $checked{'SPEED'}{$cgiparams{'SPEED'}} = "checked='checked'";
@@ -188,26 +162,15 @@ if ($errormessage) {
        &Header::closebox();
 }
 
-&Header::openbox('100%','left',$Lang::tr{'gui settings'});
+&Header::openbox('100%','left',$Lang::tr{'display'});
 
 print <<END
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <table width='100%'>
-<tr>
-    <td colspan='2'><p><b>$Lang::tr{'display'}</b></td>
-</tr>
-<tr>
-    <td><input type='checkbox' name='FX' $checked{'FX'}{'on'} /></td>
-    <td>$Lang::tr{'display webinterface effects'}</td>
-</tr>
 <tr>
     <td><input type='checkbox' name='WINDOWWITHHOSTNAME' $checked{'WINDOWWITHHOSTNAME'}{'on'} /></td>
     <td>$Lang::tr{'display hostname in window title'}</td>
 </tr>
-<tr>
-    <td><input type='checkbox' name='REBOOTQUESTION' $checked{'REBOOTQUESTION'}{'on'} /></td>
-    <td>$Lang::tr{'reboot question'}</td>
-</tr>
 <tr>
     <td><input type='checkbox' name='REFRESHINDEX' $checked{'REFRESHINDEX'}{'on'} /></td>
     <td>$Lang::tr{'refresh index page while connected'}</td>
@@ -249,9 +212,13 @@ END
 
 print <<END
 </select></td></tr>
-<tr>
-    <td colspan='2'><hr /><p><b>$Lang::tr{'theme'}</b></td>
-</tr>
+</table>
+END
+;
+&Header::closebox();
+&Header::openbox('100%','left',$Lang::tr{'theme'});
+print<<END;
+<table>
 <tr>
     <td>&nbsp;</td>
     <td><select name='theme'>
@@ -282,22 +249,26 @@ foreach $item (sort (@files)) {
 
 print <<END
 </select></td></tr>
-<tr>
-    <td colspan='2'><hr /><p><b>$Lang::tr{'sound'}</b></td>
-</tr>
+</table>
+END
+;
+&Header::closebox();
+&Header::openbox('100%','left',$Lang::tr{'sound'});
+print <<END
 <tr>
     <td><input type ='checkbox' name='PPPUPDOWNBEEP' $checked{'PPPUPDOWNBEEP'}{'on'} /></td>
     <td>$Lang::tr{'beep when ppp connects or disconnects'}</td>
 </tr>
 <tr>
-    <td colspan='2'><hr /></td>
+    <td colspan='2'></td>
 </tr>
 </table>
-<div align='center'>
-<table width='80%'>
+<div align='right'>
+<br>
+<table width='100%'>
 <tr>
-    <td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'restore defaults'}' /></td>
-    <td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
+    <td width='90%' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'restore defaults'}' /></td>
+    <td width='10%' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
 </tr>
 </table>
 </div>
index 94a48d3264e76ccd828c92f35e0ece3817f10385..bb7df1fffa56203d358ec189688f37d0f84497a2 100644 (file)
@@ -4,7 +4,7 @@
 # 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        #
+# 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.                                         #
@@ -264,11 +264,12 @@ print <<END
     <td><input type='checkbox' name='EN' $checked{'EN'}{'on'} /></td>
 </tr>
 </table>
+<br>
 <hr />
 <table width='100%'>
 <tr>
     <td class='base' width='50%'><img src='/blob.gif' align='top' alt='*' />&nbsp;$Lang::tr{'this field may be blank'}</td>
-    <td width='50%' align='center'><input type='hidden' name='ACTION' value='$Lang::tr{'add'}' /><input type='submit' name='SUBMIT' value='$buttontext' /></td>
+    <td width='50%' align='right'><input type='hidden' name='ACTION' value='$Lang::tr{'add'}' /><input type='submit' name='SUBMIT' value='$buttontext' /></td>
 </tr>
 </table>
 </form>
@@ -283,12 +284,12 @@ END
 #
 &Header::openbox('100%', 'left', $Lang::tr{'current hosts'});
 print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
 <tr>
-    <td width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IP'><b>$Lang::tr{'host ip'}</b></a></td>
-    <td width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?HOST'><b>$Lang::tr{'hostname'}</b></a></td>
-    <td width='50%' align='center'><a href='$ENV{'SCRIPT_NAME'}?DOM'><b>$Lang::tr{'domain name'}</b></a></td>
-    <td width='10%' colspan='3' class='boldbase' align='center'><b>$Lang::tr{'action'}</b></td>
+    <th width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IP'><b>$Lang::tr{'host ip'}</b></a></th>
+    <th width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?HOST'><b>$Lang::tr{'hostname'}</b></a></th>
+    <th width='50%' align='center'><a href='$ENV{'SCRIPT_NAME'}?DOM'><b>$Lang::tr{'domain name'}</b></a></th>
+    <th width='10%' colspan='3' class='boldbase' align='center'><b>$Lang::tr{'action'}</b></th>
 </tr>
 END
 ;
@@ -296,7 +297,7 @@ END
 #
 # Print each line of @current list
 #
-
+my $col="";
 my $key = 0;
 foreach my $line (@current) {
     chomp($line);                              # remove newline
@@ -318,15 +319,17 @@ foreach my $line (@current) {
     if ($settings{'KEY1'} eq $key) {
        print "<tr bgcolor='${Header::colouryellow}'>";
     } elsif ($key % 2) {
-       print "<tr bgcolor='$color{'color22'}'>";
+       print "<tr>";
+       $col="bgcolor='$color{'color20'}'";
     } else {
-       print "<tr bgcolor='$color{'color20'}'>"; 
+       print "<tr>";
+       $col="bgcolor='$color{'color22'}'";
     }
     print <<END
-<td align='center'>$temp[1]</td>
-<td align='center'>$temp[2]</td>
-<td align='center'>$temp[3]</td>
-<td align='center'>
+<td align='center' $col>$temp[1]</td>
+<td align='center' $col>$temp[2]</td>
+<td align='center' $col>$temp[3]</td>
+<td align='center' $col>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
 <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$gdesc' title='$gdesc' />
@@ -334,7 +337,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' 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'}' />
@@ -342,7 +345,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' 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'}' />
index 5c0bcffe3f7984e3def120c46a489d4ad732a6bc..5a28daaedd2b5118b554b29f70429f5fc395bd5d 100644 (file)
@@ -263,9 +263,11 @@ if (-e "/etc/snort/snort.conf") {
 #######################  End added for snort rules control  #################################
 
 if ($snortsettings{'RULES'} eq 'subscripted') {
-       $url=" http://www.snort.org/sub-rules/snortrules-snapshot-2940.tar.gz/$snortsettings{'OINKCODE'}";
+       $url=" http://www.snort.org/sub-rules/snortrules-snapshot-2961.tar.gz/$snortsettings{'OINKCODE'}";
 } elsif ($snortsettings{'RULES'} eq 'registered') {
-       $url=" http://www.snort.org/reg-rules/snortrules-snapshot-2940.tar.gz/$snortsettings{'OINKCODE'}";
+       $url=" http://www.snort.org/reg-rules/snortrules-snapshot-2960.tar.gz/$snortsettings{'OINKCODE'}";
+} elsif ($snortsettings{'RULES'} eq 'community') {
+       $url=" http://s3.amazonaws.com/snort-org/www/rules/community/community-rules.tar.gz";
 } else {
        $url="http://rules.emergingthreats.net/open/snort-2.9.0/emerging.rules.tar.gz";
 }
@@ -274,8 +276,9 @@ if ($snortsettings{'ACTION'} eq $Lang::tr{'save'} && $snortsettings{'ACTION2'} e
 {
        $errormessage = $Lang::tr{'invalid input for oink code'} unless (
            ($snortsettings{'OINKCODE'} =~ /^[a-z0-9]+$/)  ||
-           ($snortsettings{'RULESTYPE'} eq 'nothing' ) ||
-           ($snortsettings{'RULESTYPE'} eq 'community' ));
+           ($snortsettings{'RULES'} eq 'nothing' ) ||
+           ($snortsettings{'RULES'} eq 'emerging' ) ||
+           ($snortsettings{'RULES'} eq 'community' ));
 
        &General::writehash("${General::swroot}/snort/settings", \%snortsettings);
        if ($snortsettings{'ENABLE_SNORT'} eq 'on')
@@ -402,6 +405,7 @@ $checked{'ENABLE_GUARDIAN'}{'on'} = '';
 $checked{'ENABLE_GUARDIAN'}{$snortsettings{'ENABLE_GUARDIAN'}} = "checked='checked'";
 $selected{'RULES'}{'nothing'} = '';
 $selected{'RULES'}{'community'} = '';
+$selected{'RULES'}{'emerging'} = '';
 $selected{'RULES'}{'registered'} = '';
 $selected{'RULES'}{'subscripted'} = '';
 $selected{'RULES'}{$snortsettings{'RULES'}} = "selected='selected'";
@@ -409,9 +413,9 @@ $selected{'RULES'}{$snortsettings{'RULES'}} = "selected='selected'";
 &Header::openpage($Lang::tr{'intrusion detection system'}, 1, '');
 
 ####################### Added for snort rules control #################################
-print "<SCRIPT LANGUAGE='JavaScript' SRC='/include/snortupdateutility.js'></SCRIPT>";
+print "<script type='text/javascript' src='/include/snortupdateutility.js'></script>";
 print <<END
-<STYLE TYPE="text/css">
+<style type="text/css">
 <!--
 .section {
        border: groove;
@@ -429,7 +433,7 @@ print <<END
        background-color: #DCDCDC;
 }
 -->
-</STYLE>
+</style>
 END
 ;
 #######################  End added for snort rules control  #################################
@@ -468,7 +472,7 @@ if ($return) {
                                $Lang::tr{'snort working'}
                <tr><td colspan='2' align='center'>
                        <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                               <input type='image' alt='$Lang::tr{'reload'}' src='/images/view-refresh.png' />
+                               <input type='image' alt='$Lang::tr{'reload'}' title='$Lang::tr{'reload'}' src='/images/view-refresh.png' />
                        </form>
                <tr><td colspan='2' align='left'><pre>
 END
@@ -487,7 +491,7 @@ END
        refreshpage();
 }
 
-&Header::openbox('100%', 'left', $Lang::tr{'intrusion detection system2'});
+&Header::openbox('100%', 'left', $Lang::tr{'intrusion detection system'});
 print <<END
 <form method='post' action='$ENV{'SCRIPT_NAME'}'><table width='100%'>
 <tr><td class='base'><input type='checkbox' name='ENABLE_SNORT_GREEN' $checked{'ENABLE_SNORT_GREEN'}{'on'} />GREEN Snort
@@ -507,7 +511,7 @@ if ( -e "/var/ipfire/guardian/guardian.conf" ) {
 print <<END
 </td></tr>
 <tr>
-       <td><hr /></td>
+       <td><br><br></td>
 </tr>
 <tr>
        <td><b>$Lang::tr{'ids rules update'}</b></td>
@@ -515,6 +519,7 @@ print <<END
 <tr>
        <td><select name='RULES'>
                                <option value='nothing' $selected{'RULES'}{'nothing'} >$Lang::tr{'no'}</option>
+                               <option value='emerging' $selected{'RULES'}{'emerging'} >$Lang::tr{'emerging rules'}</option>
                                <option value='community' $selected{'RULES'}{'community'} >$Lang::tr{'community rules'}</option>
                                <option value='registered' $selected{'RULES'}{'registered'} >$Lang::tr{'registered user rules'}</option>
                                <option value='subscripted' $selected{'RULES'}{'subscripted'} >$Lang::tr{'subscripted user rules'}</option>
@@ -531,7 +536,7 @@ print <<END
        <td nowrap='nowrap'>Oinkcode:&nbsp;<input type='text' size='40' name='OINKCODE' value='$snortsettings{'OINKCODE'}' /></td>
 </tr>
 <tr>
-       <td width='30%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'download new ruleset'}' />
+       <td width='30%' align='left'><br><input type='submit' name='ACTION' value='$Lang::tr{'download new ruleset'}' />
 END
 ;
 if ( -e "/var/tmp/snortrules.tar.gz"){
@@ -543,10 +548,10 @@ print "&nbsp;$Lang::tr{'updates installed'}: $snortsettings{'INSTALLDATE'}</td>"
 print <<END
 </tr>
 </table>
-<hr />
+<br><br>
 <table width='100%'>
 <tr>
-       <td align='center'><input type='hidden' name='ACTION2' value='snort' /><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
+       <td align='right'><input type='hidden' name='ACTION2' value='snort' /><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
 </tr>
 </table>
 </form>
@@ -574,7 +579,7 @@ END
        print `cat /var/ipfire/guardian/guardian.ignore`;
 print <<END
 </textarea></td></tr>
-<tr><td align='center' colspan='2'><input type='hidden' name='ACTION2' value='guardian' /><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td></tr>
+<tr><td align='right' colspan='2'><input type='hidden' name='ACTION2' value='guardian' /><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td></tr>
 </table>
 </form>
 END
@@ -589,7 +594,7 @@ END
 if ( -e "${General::swroot}/snort/enable" || -e "${General::swroot}/snort/enable_green" || -e "${General::swroot}/snort/enable_blue" || -e "${General::swroot}/snort/enable_orange" ) {
        &Header::openbox('100%', 'LEFT', $Lang::tr{'intrusion detection system rules'});
                # Output display table for rule files
-               print "<TABLE width='100%'><TR><TD VALIGN='TOP'><TABLE>";
+               print "<table width='100%'><tr><td valign='top'><table>";
 
                print "<form method='post'>";
 
@@ -610,7 +615,7 @@ if ( -e "${General::swroot}/snort/enable" || -e "${General::swroot}/snort/enable
 
                        # Check if reached half-way through rule file rules to start new column
                if ($ruledisplaycnt > $rulecnt) {
-                               print "</TABLE></TD><TD VALIGN='TOP'><TABLE>";
+                               print "</table></td><td valign='top'><table>";
                                $ruledisplaycnt = 0;
                        }
 
@@ -661,21 +666,21 @@ if ( -e "${General::swroot}/snort/enable" || -e "${General::swroot}/snort/enable
                        }
 
                        # Output rule file name and checkbox
-                       print "<TR><TD CLASS='base' VALIGN='TOP'><INPUT TYPE='checkbox' NAME='SNORT_RULE_$rulefile' $rulechecked> <A HREF='$rulefilelink'>$rulefile</A></TD></TR>";
-                       print "<TR><TD CLASS='base' VALIGN='TOP'>";
+                       print "<tr><td class='base' valign='top'><input type='checkbox' NAME='SNORT_RULE_$rulefile' $rulechecked> <a href='$rulefilelink'>$rulefile</a></td></tr>";
+                       print "<tr><td class='base' valign='top'>";
 
                        # Check for empty 'Description'
                        if ($snortrules{$rulefile}{'Description'} eq '') {
-                               print "<TABLE WIDTH='100%'><TR><TD CLASS='base'>No description available</TD></TR>";
+                               print "<table width='100%'><tr><td class='base'>No description available</td></tr>";
                        } else {
                                # Output rule file 'Description'
-                               print "<TABLE WIDTH='100%'><TR><TD CLASS='base'>$snortrules{$rulefile}{'Description'}</TD></TR>";
+                               print "<table width='100%'><tr><td class='base'>$snortrules{$rulefile}{'Description'}</td></tr>";
                        }
 
                        # Check for display flag
                        if ($displayrulefilerules) {
                                # Rule file definition rule display
-                               print "<TR><TD CLASS='base' VALIGN='TOP'><TABLE border=1><TR>";
+                               print "<tr><td class='base' valign='top'><table border='0'><tr>";
 
                                # Local vars
                                my $ruledefdisplaycnt = 0;
@@ -690,7 +695,7 @@ if ( -e "${General::swroot}/snort/enable" || -e "${General::swroot}/snort/enable
 
                                        # If have display 2 rules, start new row
                                        if (($ruledefdisplaycnt % 2) == 0) {
-                                               print "</TR><TR>";
+                                               print "</tr><tr>";
                                                $ruledefdisplaycnt = 0;
                                        }
 
@@ -702,7 +707,7 @@ if ( -e "${General::swroot}/snort/enable" || -e "${General::swroot}/snort/enable
                                        # Create rule file rule's checkbox
                                        $checkboxname = "SNORT_RULE_$rulefile";
                                        $checkboxname .= "_$ruledef";
-                                       print "<TD CLASS='base'><INPUT TYPE='checkbox' NAME='$checkboxname' $ruledefchecked> $snortrules{$rulefile}{'Definition'}{$ruledef}{'Description'}</TD>";
+                                       print "<td class='base'><input type='checkbox' NAME='$checkboxname' $ruledefchecked> $snortrules{$rulefile}{'Definition'}{$ruledef}{'Description'}</td>";
 
                                        # Increment count
                                        $ruledefdisplaycnt++;
@@ -710,26 +715,24 @@ if ( -e "${General::swroot}/snort/enable" || -e "${General::swroot}/snort/enable
 
                                # If do not have second rule for row, create empty cell
                                if (($ruledefdisplaycnt % 2) != 0) {
-                                       print "<TD CLASS='base'></TD>";
+                                       print "<td class='base'></td>";
                                }
 
                                # Close display table
-                               print "</TR></TABLE></TD></TR>";
+                               print "</tr></table></td></tr>";
                }
 
                        # Close display table
-                       print "</TABLE>";
+                       print "</table>";
 
                        # Increment ruledisplaycnt
                $ruledisplaycnt++;
                }
-       print "</TD></TR></TABLE></TD></TR></TABLE>";
+       print "</td></tr></table></td></tr></table>";
        print <<END
 <table width='100%'>
 <tr>
-       <td width='33%'>&nbsp;</td>
-       <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'update'}' /></td>
-       <td width='33%'>
+       <td width='100%' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'update'}' /></td>
                &nbsp; <!-- space for future online help link -->
        </td>
 </tr>
index 7cc2e64a5e9d67f8f6acf6583ff9465b16f4e804..fff4329d739c2a7c71ffe5dd51fc7ad19de3ebef 100644 (file)
@@ -92,7 +92,7 @@ sub scriptheader
        my $conversation = sprintf( "%.4d-%.2d-%.2d", $year, $mon, $mday );
 
        my $script = qq {
-<script language="Javascript">
+<script type="text/javascript">
 var section         ='none';
 var moveit          = 1;
 var skimhtml        = 1;
index ea19e26f5904cfae7feb21b11ae948091e643bc7..53adeacce8c9d852a99fc79629157eb53531b0a7 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        #
@@ -21,6 +21,7 @@
 
 use strict;
 use Net::Telnet;
+use Sort::Naturally;
 
 # enable only the following on debugging purpose
 #use warnings;
@@ -36,10 +37,22 @@ my %pppsettings=();
 my %modemsettings=();
 my %netsettings=();
 my %ddnssettings=();
+my %proxysettings=();
+my %vpnsettings=();
+my %vpnconfig=();
+my %ovpnconfig=();
 my $warnmessage = '';
 my $refresh = "";
 my $ipaddr='';
-
+my $showbox=0;
+my $showipsec=0;
+my $showovpn=0;
+
+if ( ! -e "/var/ipfire/main/gpl_accepted" ) {
+       print "Status: 302 Moved Temporarily\n";
+       print "Location: gpl.cgi\n\n";
+       exit (0);
+}
 
 &Header::showhttpheaders();
 
@@ -51,6 +64,8 @@ $pppsettings{'PROFILENAME'} = 'None';
 &General::readhash("${General::swroot}/modem/settings", \%modemsettings);
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 &General::readhash("${General::swroot}/ddns/settings", \%ddnssettings);
+&General::readhash("${General::swroot}/proxy/advanced/settings", \%proxysettings);
+&General::readhash("${General::swroot}/vpn/settings", \%vpnsettings);
 
 my %color = ();
 my %mainsettings = ();
@@ -59,14 +74,12 @@ my %mainsettings = ();
 
 my $connstate = &Header::connectionstatus();
 
-       if ( -e "/var/ipfire/main/gpl-accepted" ) {
-if ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown'} || $cgiparams{'ACTION'} eq $Lang::tr{'reboot'}) {
-       $refresh = "<meta http-equiv='refresh' content='300;'>";
-} elsif ($connstate =~ /$Lang::tr{'connecting'}/ || /$Lang::tr{'connection closed'}/ ){
-       $refresh = "<meta http-equiv='refresh' content='5;'>";
-} elsif ($connstate =~ /$Lang::tr{'dod waiting'}/ || -e "${General::swroot}/main/refreshindex") {
-       $refresh = "<meta http-equiv='refresh' content='30;'>";
-}
+if ( -e "/var/ipfire/main/gpl-accepted" ) {
+       if ($connstate =~ /$Lang::tr{'connecting'}/ || /$Lang::tr{'connection closed'}/ ){
+               $refresh = "<meta http-equiv='refresh' content='5;'>";
+       }elsif ($connstate =~ /$Lang::tr{'dod waiting'}/ || -e "${General::swroot}/main/refreshindex") {
+               $refresh = "<meta http-equiv='refresh' content='30;'>";
+       }
 }
 
 if ($cgiparams{'ACTION'} eq $Lang::tr{'dial profile'})
@@ -81,8 +94,8 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'dial profile'})
        unlink("${General::swroot}/ppp/settings");
        link("${General::swroot}/ppp/settings-$cgiparams{'PROFILE'}",
                "${General::swroot}/ppp/settings");
-       system ("/usr/bin/touch", "${General::swroot}/ppp/updatesettings");
-
+       open (TMP, ">${General::swroot}/ppp/updatesettings");
+       close TMP;
        # read in the new params "early" so we can write secrets.
        %cgiparams = ();
        &General::readhash("${General::swroot}/ppp/settings", \%cgiparams);
@@ -106,10 +119,11 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'dial profile'})
 
 if ($cgiparams{'ACTION'} eq $Lang::tr{'dial'}) {
        system('/usr/local/bin/redctrl start > /dev/null') == 0
-       or &General::log("Dial failed: $?"); sleep 1;}
-elsif ($cgiparams{'ACTION'} eq $Lang::tr{'hangup'}) {
+       or &General::log("Dial failed: $?"); sleep 1;
+}elsif ($cgiparams{'ACTION'} eq $Lang::tr{'hangup'}) {
        system('/usr/local/bin/redctrl stop > /dev/null') == 0
-       or &General::log("Hangup failed: $?"); sleep 1;}
+       or &General::log("Hangup failed: $?"); sleep 1;
+}
 
 my $c;
 my $maxprofiles = 5;
@@ -129,18 +143,15 @@ for ($c = 1; $c <= $maxprofiles; $c++) {
 $selected{'PROFILE'}{$pppsettings{'PROFILE'}} = "selected='selected'";
 my $dialButtonDisabled = "disabled='disabled'";
 
-
 &Header::openpage($Lang::tr{'main page'}, 1, $refresh);
 &Header::openbigbox('', 'center');
+if (open(IPADDR,"${General::swroot}/red/local-ipaddress")) {
+           $ipaddr = <IPADDR>;
+           close IPADDR;
+           chomp ($ipaddr);
+       }
 
-# licence agreement
-if ($cgiparams{'ACTION'} eq $Lang::tr{'yes'} && $cgiparams{'gpl_accepted'} eq '1') {
-       system('touch /var/ipfire/main/gpl_accepted')
-}
-if ( -e "/var/ipfire/main/gpl_accepted" ) {
-&Header::openbox('100%', 'center', &Header::cleanhtml(`/bin/uname -n`,"y"));
-
-
+&Header::openbox('100%', 'center', '');
 if ( ( $pppsettings{'VALID'} eq 'yes' && $modemsettings{'VALID'} eq 'yes' ) || ( $netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/ && $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ )) {
        if (open(IPADDR,"${General::swroot}/ddns/ipcache")) {
            $ipaddr = <IPADDR>;
@@ -158,306 +169,338 @@ if ( ( $pppsettings{'VALID'} eq 'yes' && $modemsettings{'VALID'} eq 'yes' ) || (
        print "$Lang::tr{'profile has errors'}\n </b></font>\n";
 }
 
-#if ( $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ ) {
-#      $ipaddr = $netsettings{'RED_ADDRESS'};
-#}
-
-my $death = 0;
-my $rebirth = 0;
-
-if ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown'}) {
-       $death = 1;
-       &General::log($Lang::tr{'shutting down ipfire'});
-       system '/usr/local/bin/ipfirereboot down';
-} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reboot'}) {
-       $rebirth = 1;
-       &General::log($Lang::tr{'rebooting ipfire'});
-       system '/usr/local/bin/ipfirereboot boot';
-}
-
-if ($death == 0 && $rebirth == 0) {
-       
-if ($mainsettings{'REBOOTQUESTION'} eq "off") {        
-print <<END
-       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-       <table width='100%'>
-       <tr>
-               <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'reboot'}' /></td>
-               <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'refresh'}' /></td>
-               <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'shutdown'}' /></td>
-       </tr>
-       </table>
-       </form>
-END
-;
-} else {               
-       if ($cgiparams{'ACTION'} eq $Lang::tr{'reboot ask'}) {
-print <<END
-       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-       <table width='100%'>
-         <tr>
-           <td colspan="3" align='left'><font color="red">$Lang::tr{'reboot sure'}</font></td>
-           </tr>
-         <tr>
-               <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'reboot'}' /></td>
-               <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'refresh'}' /></td>
-               <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'shutdown ask'}' /></td>
-       </tr>
-       </table>
-       </form>
+print <<END;
+<!-- Table of networks -->
+<table class='tbl' style='width:80%;'>
+  <tr>
+        <th style='background-color:$color{'color20'};'>$Lang::tr{'network'}</th>
+        <th style='background-color:$color{'color20'};'>$Lang::tr{'ip address'}</th>
+        <th style='background-color:$color{'color20'};'>$Lang::tr{'status'}</th>
+  </tr>
+  <tr>
+        <td style='width:25%; text-align:center; background-color:$Header::colourred;'><a href='/cgi-bin/pppsetup.cgi' style='color:white;'><b>$Lang::tr{'internet'}</b></a><br/></td>
+        <td style='width:30%; text-align:center;'>$ipaddr </td>
+        <td style='width:45%; text-align:center;'>$connstate </td>
+  </tr>
 END
-;
-       } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown ask'}) {
-print <<END
-       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-       <table width='100%'>
-         <tr>
-           <td colspan="3" align='right'><font color="red">$Lang::tr{'shutdown sure'}</font></td>
-           </tr>
-         <tr>
-               <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'reboot ask'}' /></td>
-               <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'refresh'}' /></td>
-               <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'shutdown'}' /></td>
-       </tr>
-       </table>
-       </form>
+       my $HOSTNAME = (gethostbyaddr(pack("C4", split(/\./, $ipaddr)), 2))[0];
+       if ( "$HOSTNAME" ne "" ) {
+               print <<END;
+       <tr><td><b>$Lang::tr{'hostname'}:</b><td style='text-align:center;'>$HOSTNAME</td><td></td>
 END
-;
-       } else {
-print <<END
-               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-               <table width='100%'>
-               <tr>
-                       <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'reboot ask'}' /></td>
-                       <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'refresh'}' /></td>
-                       <td width='33%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'shutdown ask'}' /></td>
-               </tr>
-               </table>
-               </form>
+       }
+
+       if ( -e "${General::swroot}/red/remote-ipaddress" ) {
+               open (TMP, "<${General::swroot}/red/remote-ipaddress");
+               my $GATEWAY = <TMP>;
+               chomp($GATEWAY);
+               close TMP;
+               print <<END;
+       <tr><td><b>$Lang::tr{'gateway'}:</b><td style='text-align:center;'>$GATEWAY</td><td></td></tr>
 END
-;
        }
-}
-print <<END;
 
+       my @dns_servers = ();
+       foreach my $f ("${General::swroot}/red/dns1", "${General::swroot}/red/dns2") {
+               open(DNS, "<$f");
+               my $dns_server = <DNS>;
+               close(DNS);
 
+               chomp($dns_server);
+               if ($dns_server) {
+                       push(@dns_servers, $dns_server);
+               }
+       }
+       my $dns_servers_str = join(", ", @dns_servers);
 
-<!-- Table of networks -->
-<table border='0' width=80%>
-  <tr>  <th bgcolor='$color{'color20'}'>$Lang::tr{'network'}</th>
-        <th bgcolor='$color{'color20'}'>IP</th>
-        <th bgcolor='$color{'color20'}'>$Lang::tr{'status'}</th></tr>
-  <tr>  <td align='center' bgcolor='$Header::colourred' width='25%'><a href="/cgi-bin/pppsetup.cgi"><font size='2' color='white'><b>$Lang::tr{'internet'}</b></font></a><br></td>
-        <td width='30%' align='center'>$ipaddr </td>
-        <td width='45%' align='center'>$connstate 
+       print <<END;
+               <tr>
+                       <td>
+                               <b>$Lang::tr{'dns servers'}:</b>
+                       </td>
+                       <td style='text-align:center;'>
+                               $dns_servers_str
+                       </td>
+                       <td></td>
+               </tr>
+       </table>
 END
-if ( $netsettings{'RED_TYPE'} ne "STATIC" && $netsettings{'RED_TYPE'} ne "DHCP" ){
-print `/usr/local/bin/dialctrl.pl show`;
-print <<END;
-        </td></tr>
-        <tr><td colspan='2'>
 
+#Dial profiles
+if ( $netsettings{'RED_TYPE'} ne "STATIC" && $netsettings{'RED_TYPE'} ne "DHCP" ){
+       if ( ( $pppsettings{'VALID'} eq 'yes' ) || ( $netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/ && $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ ) ) {
+               print <<END;
+               <br/>
+               <table style='width:80%;'>
+               <tr><td>
                <form method='post' action='$ENV{'SCRIPT_NAME'}'>$Lang::tr{'profile'}:
                        <select name='PROFILE'>
 END
-       for ($c = 1; $c <= $maxprofiles; $c++)
-       {
-               if ($profilenames[$c] ne '') {
-                       $dialButtonDisabled = "";
-                       print "\t<option value='$c' $selected{'PROFILE'}{$c}>$c. $profilenames[$c]</option>\n";
+               for ($c = 1; $c <= $maxprofiles; $c++)
+               {
+                       if ($profilenames[$c] ne '') {
+                               $dialButtonDisabled = "";
+                               print "<option value='$c' $selected{'PROFILE'}{$c}>$c. $profilenames[$c]</option>";
+                       }
                }
-       }
-       $dialButtonDisabled = "disabled='disabled'" if (-e '/var/run/ppp-ipfire.pid' || -e "${General::swroot}/red/active");
-       if ( ( $pppsettings{'VALID'} eq 'yes' ) || ( $netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/ && $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ ) ) {
+               $dialButtonDisabled = "disabled='disabled'" if (-e '/var/run/ppp-ipfire.pid' || -e "${General::swroot}/red/active");
                print <<END;
-                               </select>
-                               <input type='submit' name='ACTION' value='$Lang::tr{'dial profile'}' $dialButtonDisabled />
-                       </form>
-                       <td align='center'>
-                               <table width='100%' border='0'>
-                                       <tr>
-                                       <td width='50%' align='right'>  <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                                                                                       <input type='submit' name='ACTION' value='$Lang::tr{'dial'}'>
-                                                                               </form>
-                                       <td width='50%' align='left'>   <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                                                                                       <input type='submit' name='ACTION' value='$Lang::tr{'hangup'}'>
-                                                                               </form>
-                               </table>
+                       </select>
+                       <input type='submit' name='ACTION' value='$Lang::tr{'dial profile'}' $dialButtonDisabled />
+               </form>
+               </td>
+               <td style='text-align:center;'>
+                       <table style='width:100%;'>
+                               <tr>
+                               <td style='width=50%; text-align:right;'>
+                                       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
+                                               <input type='submit' name='ACTION' value='$Lang::tr{'dial'}'>
+                                       </form>
+                               </td>
+                               <td style='width=50%; text-align:left;'>
+                                       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
+                                               <input type='submit' name='ACTION' value='$Lang::tr{'hangup'}'>
+                                       </form>
+                               </td>
+                               </tr>
+                       </table>
+               </td>
+               </tr>
+               </table>
 END
        } else {
-       print "$Lang::tr{'profile has errors'}\n </b></font>\n";
+               print "<br/><span style='color:red;'>$Lang::tr{'profile has errors'}</span><br/>";
        }
 }
-       my $HOSTNAME = (gethostbyaddr(pack("C4", split(/\./, $ipaddr)), 2))[0];
-       if ( "$HOSTNAME" ne "" ) {
-               print <<END;
-       <tr><td><b>Hostname:</b><td align='center'>$HOSTNAME<td>&nbsp;
+
+
+print <<END;
+<br/>
+<table class='tbl' style='width:80%;'>
+<tr>
+       <th>$Lang::tr{'network'}</th>
+       <th>$Lang::tr{'ip address'}</th>
+       <th>$Lang::tr{'status'}</th>
+</tr>
 END
-       }
 
-       if ( -e "/var/ipfire/red/remote-ipaddress" ) {
-               my $GATEWAY = `cat /var/ipfire/red/remote-ipaddress`;
-               chomp($GATEWAY);
+if ( $netsettings{'GREEN_DEV'} ) {
+               my $sub=&General::iporsubtocidr($netsettings{'GREEN_NETMASK'});
                print <<END;
-       <tr><td><b>Gateway:</b><td align='center'>$GATEWAY<td>&nbsp;
+               <tr>
+                       <td style='width:25%; text-align:center; background-color:$Header::colourgreen;'>
+                               <a href='/cgi-bin/dhcp.cgi' style='color:white'><b>$Lang::tr{'lan'}</b></a>
+                       </td>
+                       <td style='width:30%; text-align:center;'>$netsettings{'GREEN_ADDRESS'}/$sub</td>
+                       <td style='width:45%; text-align:center;'>
 END
+               if ( $proxysettings{'ENABLE'} eq 'on' ) {
+                       print $Lang::tr{'advproxy on'};
+                       if ( $proxysettings{'TRANSPARENT'} eq 'on' ) { print " (transparent)"; }
+               }       else { print $Lang::tr{'advproxy off'};  }
+               print '</td>';
+               print '</tr>';
        }
-
-       my $DNS1 = `cat /var/ipfire/red/dns1`;
-       my $DNS2 = `cat /var/ipfire/red/dns2`;
-       chomp($DNS1);
-       chomp($DNS1);
-
-       if ( $DNS1 ) { print <<END;
-       <tr><td><b>DNS-Server:</b><td align='center'>$DNS1
+if ( $netsettings{'BLUE_DEV'} ) {
+               my $sub=&General::iporsubtocidr($netsettings{'BLUE_NETMASK'});
+               print <<END;
+               <tr>
+                       <td style='width:25%; text-align:center; background-color:$Header::colourblue;'>
+                               <a href='/cgi-bin/wireless.cgi' style='color:white'><b>$Lang::tr{'wireless'}</b></a>
+                       </td>
+                       <td style='width:30%; text-align:center;'>$netsettings{'BLUE_ADDRESS'}/$sub
+                       <td style='width:45%; text-align:center;'>
 END
+               if ( $proxysettings{'ENABLE_BLUE'} eq 'on' ) {
+                       print $Lang::tr{'advproxy on'};
+                       if ( $proxysettings{'TRANSPARENT_BLUE'} eq 'on' ) { print " (transparent)"; }
+               }       else { print $Lang::tr{'advproxy off'};  }
+               print '</td>';
+               print '</tr>';
        }
-       if ( $DNS2 ) { print <<END;
-       <td align='center'>$DNS2
-END
-       } else { print <<END;
-       <td>&nbsp;
+if ( $netsettings{'ORANGE_DEV'} ) {
+               my $sub=&General::iporsubtocidr($netsettings{'ORANGE_NETMASK'});
+               print <<END;
+               <tr>
+                       <td style='width:25%; text-align:center; background-color:$Header::colourorange;'>
+                               <a href='/cgi-bin/firewall.cgi' style='color:white'><b>$Lang::tr{'dmz'}</b></a>
+                       </td>
+                       <td style='width:30%; text-align:center;'>$netsettings{'ORANGE_ADDRESS'}/$sub</td>
+                       <td style='width:45%; text-align:center; color:$Header::colourgreen;'>Online</td>
+               </tr>
 END
        }
+#check if IPSEC is running
+if ( $vpnsettings{'ENABLED'} eq 'on' || $vpnsettings{'ENABLED_BLUE'} eq 'on' ) {
+       my $ipsecip = $vpnsettings{'VPN_IP'};
+print<<END;
+               <tr>
+                       <td style='width:25%; text-align:center; background-color:$Header::colourvpn;'>
+                               <a href='/cgi-bin/vpnmain.cgi' style='color:white'><b>$Lang::tr{'ipsec'}</b></a>
+                       </td>
+                       <td style='width:30%; text-align:center;'>$ipsecip</td>
+                       <td style='width:45%; text-align:center; color:$Header::colourgreen;'>Online</td>
+               </tr>
+END
+}
 
-       if ( $netsettings{'GREEN_DEV'} ) { print <<END;
-               <tr><td align='center' bgcolor='$Header::colourgreen' width='25%'><a href="/cgi-bin/dhcp.cgi"><font size='2' color='white'><b>$Lang::tr{'lan'}</b></font></a>
-               <td width='30%' align='center'>$netsettings{'GREEN_ADDRESS'}
-               <td width='45%' align='center'>
+#check if OpenVPN is running
+my %confighash=();
+&General::readhash("${General::swroot}/ovpn/settings", \%confighash);
+
+if (($confighash{'ENABLED'} eq "on") ||
+    ($confighash{'ENABLED_BLUE'} eq "on") ||
+    ($confighash{'ENABLED_ORANGE'} eq "on")) {
+       my ($ovpnip,$sub) = split("/",$confighash{'DOVPN_SUBNET'});
+       $sub=&General::iporsubtocidr($sub);
+       $ovpnip="$ovpnip/$sub";
+print <<END;
+       <tr>
+               <td style='width:25%; text-align:center; background-color:$Header::colourovpn;'>
+                       <a href='/cgi-bin/ovpnmain.cgi' style='color:white'><b>OpenVPN</b></a>
+               </td>
+               <td style='width:30%; text-align:center;'>$ovpnip</td>
+               <td style='width:45%; text-align:center; color:$Header::colourgreen;'>Online</td>
+       </tr>
 END
-               if ( `cat /var/ipfire/proxy/advanced/settings | grep ^ENABLE=on` ) { 
-                       print $Lang::tr{'advproxy on'}; 
-                       if ( `cat /var/ipfire/proxy/advanced/settings | grep ^TRANSPARENT=on` ) { print " (transparent)"; }
-               }       else { print $Lang::tr{'advproxy off'};  }
        }
-       if ( $netsettings{'BLUE_DEV'} ) { print <<END;
-               <tr><td align='center' bgcolor='$Header::colourblue' width='25%'><a href="/cgi-bin/wireless.cgi"><font size='2' color='white'><b>$Lang::tr{'wireless'}</b></font></a><br>
-               <td width='30%' align='center'>$netsettings{'BLUE_ADDRESS'}
-               <td width='45%' align='center'>
-END
-               if ( `cat /var/ipfire/proxy/advanced/settings | grep ^ENABLE_BLUE=on` ) { 
-                       print $Lang::tr{'advproxy on'};  
-                       if ( `cat /var/ipfire/proxy/advanced/settings | grep ^TRANSPARENT_BLUE=on` ) { print " (transparent)"; }
-               }       else { print $Lang::tr{'advproxy off'};  }
+print"</table>";
+&Header::closebox();
+
+#Check if there are any vpns configured (ipsec and openvpn)
+&General::readhasharray("${General::swroot}/vpn/config", \%vpnconfig);
+foreach my $key (sort { ncmp($vpnconfig{$a}[1],$vpnconfig{$b}[1]) } keys %vpnconfig) {
+       if ($vpnconfig{$key}[0] eq 'on' && $vpnconfig{$key}[3] ne 'host'){
+               $showipsec=1;
+               $showbox=1;
+               last;
        }
-       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>
-               <td width='30%' align='center'>$netsettings{'ORANGE_ADDRESS'}
-               <td width='45%' align='center'><font color=$Header::colourgreen>Online</font>
-END
+}
+&General::readhasharray("${General::swroot}/ovpn/ovpnconfig", \%ovpnconfig);
+foreach my $dkey (sort { ncmp($ovpnconfig{$a}[1],$ovpnconfig{$b}[1])} keys %ovpnconfig) {
+       if (($ovpnconfig{$dkey}[3] eq 'net') && (-e "/var/run/$ovpnconfig{$dkey}[1]n2n.pid")){
+               $showbox=1;
+               $showovpn=1;
+               last;
        }
-       if ( `cat /var/ipfire/vpn/settings | grep ^ENABLED=on` ||
-            `cat /var/ipfire/vpn/settings | grep ^ENABLED_BLUE=on` ) { 
-               my $ipsecip = `cat /var/ipfire/vpn/settings | grep ^VPN_IP= | cut -c 8-`;
+}
+
+if ($showbox){
+# Start of Box wich contains all vpn connections
+       &Header::openbox('100%', 'center', $Lang::tr{'vpn'});
+
+       #show ipsec connectiontable
+       if ( $showipsec ) {
+               my $ipsecip = $vpnsettings{'VPN_IP'};
                my @status = `/usr/local/bin/ipsecctrl I`;
                my %confighash = ();
-               &General::readhasharray("${General::swroot}/vpn/config", \%confighash);
-               print <<END;
-               <tr><td align='center' bgcolor='$Header::colourvpn' width='25%'><a href="/cgi-bin/vpnmain.cgi"><font size='2' color='white'><b>$Lang::tr{'vpn'}</b></font></a><br>
-               <td width='30%' align='center'>$ipsecip
-               <td width='45%' align='center'><font color=$Header::colourgreen>Online</font>
-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'; }
-
-                       if ($id % 2) {
-          print "<tr><td align='left' nowrap='nowrap' bgcolor='$color{'color20'}'>$confighash{$key}[1] / " . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")</td><td align='center'>$confighash{$key}[11]</td>";
-                       } else {
-          print "<tr></td><td align='left' nowrap='nowrap' bgcolor='$color{'color22'}'>$confighash{$key}[1] / " . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")</td><td align='center'>$confighash{$key}[11]</td>";
-                       }
-                       
-                       my $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourred}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b></td></tr></table>";
-                       if ($confighash{$key}[0] eq 'off') {
-                           $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourblue}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b></td></tr></table>";
-                       } else {
-                           foreach my $line (@status) {
-                               if (($line =~ /\"$confighash{$key}[1]\".*IPsec SA established/) ||
-                                   ($line =~/$confighash{$key}[1]\{.*INSTALLED/ ))
-                                   {
-                                   $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourgreen}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b></td></tr></table>";
+               my $col="";
+               my $count=0;
+               print <<END;
+               <table class='tbl' style='width:80%;'>
+               <tr>
+                       <th style='width:40%;'>$Lang::tr{'ipsec network'}</th>
+                       <th style='width:30%;'>$Lang::tr{'ip address'}</th>
+                       <th style='width:30%;'>$Lang::tr{'status'}</th>
+               </tr>
+END
+               foreach my $key (sort { uc($vpnconfig{$a}[1]) cmp uc($vpnconfig{$b}[1]) } keys %vpnconfig) {
+                       if ($vpnconfig{$key}[0] eq 'on' && $vpnconfig{$key}[3] ne 'host') {
+                               $count++;
+                               my ($vpnip,$vpnsub) = split("/",$vpnconfig{$key}[11]);
+                               $vpnsub=&General::iporsubtocidr($vpnsub);
+                               $vpnip="$vpnip/$vpnsub";
+                               if ($count % 2){
+                                       $col = $color{'color22'};
+                               }else{
+                                       $col = $color{'color20'};
+                               }
+                               print "<tr>";
+                               print "<td style='text-align:left; color:white; background-color:$Header::colourvpn;'>$vpnconfig{$key}[1]</td>";
+                               print "<td style='text-align:center; background-color:$col'>$vpnip</td>";
+
+                               my $activecolor = $Header::colourred;
+                               my $activestatus = $Lang::tr{'capsclosed'};
+                               if ($vpnconfig{$key}[0] eq 'off') {
+                                       $activecolor = $Header::colourblue;
+                                       $activestatus = $Lang::tr{'capsclosed'};
+                               } else {
+                                       foreach my $line (@status) {
+                                               if (($line =~ /\"$vpnconfig{$key}[1]\".*IPsec SA established/) || ($line =~/$vpnconfig{$key}[1]\{.*INSTALLED/ )){
+                                                       $activecolor = $Header::colourgreen;
+                                                       $activestatus = $Lang::tr{'capsopen'};
+                                               }
+                                       }
                                }
-                          }
+                               print "<td style='text-align:center; color:white; background-color:$activecolor;'><b>$activestatus</b></td>";
+                               print "</tr>";
                        }
-                       print "<td align='center'>$active</td>";
                }
+               print "</table>";
        }
 
-###
-# Check if there is any OpenVPN connection configured.
-###
-
-if ( -s "${General::swroot}/ovpn/ovpnconfig")
-       {
-       print <<END;
-       
-       <tr>
-               <td align='center' bgcolor='$Header::colourovpn' width='25%'>
-                       <a href="/cgi-bin/ovpnmain.cgi"><font size='2' color='white'><b>OpenVPN</b></font></a><br>
-               </td>
-END
-       # Check if the OpenVPN server for Road Warrior Connections is running and display status information.
-       my %confighash=();
-
-       &General::readhash("${General::swroot}/ovpn/settings", \%confighash);
-
-       if (($confighash{'ENABLED'} eq "on") ||
-           ($confighash{'ENABLED_BLUE'} eq "on") ||
-           ($confighash{'ENABLED_ORANGE'} eq "on")) {
-
-               my $ovpnip = $confighash{'DOVPN_SUBNET'};
+       # Check if there is any OpenVPN connection configured.
+       if ( $showovpn ){
                print <<END;
-               <td width='30%' align='center'>$ovpnip
-               <td width='45%' align='center'><font color=$Header::colourgreen>Online</font>   
+               <br/>
+               <table class='tbl' style='width:80%;'>
+               <tr>
+                       <th style='width:40%;'>$Lang::tr{'openvpn network'}</th>
+                       <th style='width:30%;'>$Lang::tr{'ip address'}</th>
+                       <th style='width:30%;'>$Lang::tr{'status'}</th>
 END
 
-       }
-
-       # Print the OpenVPN N2N connection status.
-       if ( -d "${General::swroot}/ovpn/n2nconf") {
-               my %confighash=();
-
-               &General::readhasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash);
-               foreach my $dkey (keys %confighash) {
-                       if (($confighash{$dkey}[3] eq 'net') && (-e "/var/run/$confighash{$dkey}[1]n2n.pid")) {
-                               my $tport = $confighash{$dkey}[22];
-                               next if ($tport eq '');
-
-                               my $tnet = new Net::Telnet ( Timeout=>5, Errmode=>'return', Port=>$tport); 
-                               $tnet->open('127.0.0.1');
-                               my @output = $tnet->cmd(String => 'state', Prompt => '/(END.*\n|ERROR:.*\n)/');
-                               my @tustate = split(/\,/, $output[1]);
-
-                               my $display;
-                               my $display_colour = $Header::colourred;
-                               if ( $tustate[1] eq 'CONNECTED') {
-                                       $display_colour = $Header::colourgreen;
-                                       $display = $Lang::tr{'capsopen'};
-                               } else {
-                                       $display = $tustate[1];
-                               }
-                               print <<END;
-                               <tr>
-                                       <td align='left' nowrap='nowrap' bgcolor='$color{'color22'}'>
-                                               $confighash{$dkey}[1]
-                                       </td>
-                                       <td align='center'>
-                                               $confighash{$dkey}[11]
-                                       </td>
-                                       <td align='center' bgcolor='$display_colour'>
-                                               <b>
-                                                       <font color='#FFFFFF'>
-                                                               $display
-                                                       </font>
-                                               </b>
-                                       </td>
-                               </tr>
+               # Check if the OpenVPN server for Road Warrior Connections is running and display status information.
+               my $active;
+               my $count=0;
+               # Print the OpenVPN N2N connection status.
+               if ( -d "${General::swroot}/ovpn/n2nconf") {
+                       my $col="";
+                       foreach my $dkey (sort { ncmp ($ovpnconfig{$a}[1],$ovpnconfig{$b}[1])} keys %ovpnconfig) {
+                               if (($ovpnconfig{$dkey}[3] eq 'net') && (-e "/var/run/$ovpnconfig{$dkey}[1]n2n.pid")){
+                                       $count++;
+                                       my $tport = $ovpnconfig{$dkey}[22];
+                                       next if ($tport eq '');
+                                       my $tnet = new Net::Telnet ( Timeout=>5, Errmode=>'return', Port=>$tport);
+                                       $tnet->open('127.0.0.1');
+                                       my @output = $tnet->cmd(String => 'state', Prompt => '/(END.*\n|ERROR:.*\n)/');
+                                       my @tustate = split(/\,/, $output[1]);
+                                       my $display;
+                                       my $display_colour = $Header::colourred;
+                                       if ( $tustate[1] eq 'CONNECTED' || ($tustate[1] eq 'WAIT')) {
+                                               $display_colour = $Header::colourgreen;
+                                               $display = $Lang::tr{'capsopen'};
+                                       } else {
+                                               $display = $tustate[1];
+                                       }
+                                       if ($count %2){
+                                               $col = $color{'color22'};
+                                       }else{
+                                               $col = $color{'color20'};
+                                       }
+                                       $active='off';
+                                       #make cidr from ip
+                                       my ($vpnip,$vpnsub) = split("/",$ovpnconfig{$dkey}[11]);
+                                       my $vpnsub=&General::iporsubtocidr($vpnsub);
+                                       my $vpnip="$vpnip/$vpnsub";
+                                       print <<END;
+                                       <tr>
+                                               <td style='text-align:left; color:white; background-color:$Header::colourovpn;'>$ovpnconfig{$dkey}[1]</td>
+                                               <td style='text-align:center; background-color:$col'>$vpnip</td>
+                                               <td style='text-align:center; color:white; background-color:$display_colour' ><b>$display</b></td>
+                                       </tr>
 END
+                               }
                        }
                }
+               if ($active ne 'off'){
+                       print "<tr><td colspan='3' style='text-align:center;'>$Lang::tr{'ovpn no connections'}</td></tr>";
+               }
+               print"</table>";
        }
+&Header::closebox();
 }
 
 # Fireinfo
@@ -473,7 +516,7 @@ $free[2] =~ m/(\d+)/;
 my $used = $1;
 my $pct = int 100 * ($mem - $used) / $mem;
 if ($used / $mem > 90) {
-       $warnmessage .= "<li> $Lang::tr{'high memory usage'}: $pct% !</li>\n";
+       $warnmessage .= "<li>$Lang::tr{'high memory usage'}: $pct% !</li>";
 }
 
 # Diskspace usage warning
@@ -488,7 +531,7 @@ foreach my $line (@df) {
                if ($1<5) {
                        # available:plain value in MB, and not %used as 10% is too much to waste on small disk
                        # and root size should not vary during time
-                       $warnmessage .= "<li> $Lang::tr{'filesystem full'}: $temp[0] <b>$Lang::tr{'free'}=$1M</b> !</li>\n";
+                       $warnmessage .= "<li>$Lang::tr{'filesystem full'}: $temp[0] <b>$Lang::tr{'free'}=$1M</b> !</li>";
                }
                
        } else {
@@ -497,7 +540,7 @@ foreach my $line (@df) {
                if ($1>90) {
                        @temp = split(/ /,$line);
                        $temp2=int(100-$1);
-                       $warnmessage .= "<li> $Lang::tr{'filesystem full'}: $temp[0] <b>$Lang::tr{'free'}=$temp2%</b> !</li>\n";
+                       $warnmessage .= "<li>$Lang::tr{'filesystem full'}: $temp[0] <b>$Lang::tr{'free'}=$temp2%</b> !</li>";
                }
        }
 }
@@ -509,7 +552,7 @@ foreach my $file (@files) {
        my $disk=`echo $file | cut -d"-" -f2`;
        chomp ($disk);
        if (`/bin/grep "SAVE ALL DATA" $file`) {
-               $warnmessage .= "<li> $Lang::tr{'smartwarn1'} /dev/$disk $Lang::tr{'smartwarn2'} !</li>\n\n";
+               $warnmessage .= "<li>$Lang::tr{'smartwarn1'} /dev/$disk $Lang::tr{'smartwarn2'} !</li>";
        }
 }
 
@@ -517,77 +560,25 @@ foreach my $file (@files) {
 my @files = `mount | grep " reiser4 (" 2>/dev/null`;
 foreach my $disk (@files) {
        chomp ($disk);
-       $warnmessage .= "<li>$disk - $Lang::tr{'deprecated fs warn'}</li>\n\n";
+       $warnmessage .= "<li>$disk - $Lang::tr{'deprecated fs warn'}</li>";
 }
 
-
 if ($warnmessage) {
-       print "<tr><td align='center' bgcolor=$Header::colourred colspan='3'><font color='white'>$warnmessage</font></table>";
+       &Header::openbox('100%','center', );
+       print "<table class='tbl' style='width:80%;'>";
+       print "<tr><th>$Lang::tr{'fwhost hint'}</th></tr>";
+       print "<tr><td style='color:white; background-color:$Header::colourred;'>$warnmessage</td></tr>";
+    print "</table>";
+       &Header::closebox();
 }
-print <<END;
-</table>
-END
-;
+
 &Pakfire::dblist("upgrade", "notice");
-print <<END;
-END
 if ( -e "/var/run/need_reboot" ) {
-       print "<br /><br /><font color='red'>$Lang::tr{'needreboot'}!</font>";
-}
-} else {
-       my $message='';
-       if ($death) {
-               $message = $Lang::tr{'ipfire has now shutdown'};
-       } else {
-               $message = $Lang::tr{'ipfire has now rebooted'};
-       }
-       print <<END
-<div align='center'>
-<table width='100%' bgcolor='#ffffff'>
-<tr><td align='center'>
-<br /><br /><img src='/images/IPFire.png' /><br /><br /><br />
-</td></tr>
-</table>
-<br />
-<font size='6'>$message</font>
-</div>
-END
-;
-
-} 
-
-&Header::closebox();
-}
-
-else {
-&Header::openbox('100%', 'left', $Lang::tr{'gpl license agreement'});
-print <<END;
-       $Lang::tr{'gpl please read carefully the general public license and accept it below'}.
-       <br /><br />
-END
-;      
-if ( -e "/usr/share/doc/licenses/GPLv3" ) {
-       print '<textarea rows=\'25\' cols=\'75\' readonly=\'true\'>';
-       print `cat /usr/share/doc/licenses/GPLv3`;
-       print '</textarea>';
-}
-else {
-       print '<br /><a href=\'http://www.gnu.org/licenses/gpl-3.0.txt\' target=\'_blank\'>GNU GENERAL PUBLIC LICENSE</a><br />';
-}
-print <<END;
-       <p>
-               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                       <input type='checkbox' name='gpl_accepted' value='1'/> $Lang::tr{'gpl i accept these terms and conditions'}.
-                       <br/ >
-                       <input type='submit' name='ACTION' value=$Lang::tr{'yes'} />
-               </form>
-       </p>
-       <a href='http://www.gnu.org/licenses/translations.html' target='_blank'>$Lang::tr{'gpl unofficial translation of the general public license v3'}</a>
-
-END
-
-&Header::closebox();
+       print "<div style='text-align:center; color:red;'>";
+       print "<br/><br/>$Lang::tr{'needreboot'}!";
+       print "</div>";
 }
 
 &Header::closebigbox();
 &Header::closepage();
+
index 886330d0e2a6ab3b7b36b8c163871ae7254f42ae..d456375891b5556e1314932b3c5b5ac5e9a9a1fd 100644 (file)
@@ -80,7 +80,7 @@ if ( $cgiparams{'selectedchain'} ne "" ){
 
 print <<END
 
-<DIV align='left'>
+<div align='left'>
 END
 ;
 
@@ -182,7 +182,7 @@ END
                }
                print "</td>\n</tr>\n";
        }
-print "</table></DIV><br />";
+print "</table></div><br />";
 &Header::closebox();
 
 ## MANGLE
@@ -202,7 +202,7 @@ if ( $cgiparams{'selectedchain'} ne "" ){
 
 print <<END
 
-<DIV align='left'>
+<div align='left'>
 END
 ;
 
@@ -309,7 +309,7 @@ END
                }
                print "</td>\n</tr>\n";
        }
-print "</table></DIV><br />";
+print "</table></div><br />";
 &Header::closebox();
 
 ## NAT
@@ -329,7 +329,7 @@ if ( $cgiparams{'selectedchain'} ne "" ){
 
 print <<END
 
-<DIV align='left'>
+<div align='left'>
 END
 ;
 
@@ -429,11 +429,11 @@ END
                }
                print "</td>\n</tr>\n";
        }
-print "</table></DIV><br />";
+print "</table></div><br />";
 &Header::closebox();
 &Header::closebigbox();
 &Header::closepage();
 
 system(rm -f "/srv/web/ipfire/html/iptables.txt");
 system(rm -f "/srv/web/ipfire/html/iptablesmangle.txt");
-system(rm -f "/srv/web/ipfire/html/iptablesnat.txt");
\ No newline at end of file
+system(rm -f "/srv/web/ipfire/html/iptablesnat.txt");
index 466a3cec7a95bda83f5b4a4fc823d1c6cb374c50..8bb4900638b7b1ce431c99c18d568c65f159aa84 100644 (file)
@@ -233,7 +233,7 @@ if ($errormessage) {
         &Header::closebox();
 }
 
-&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:");
+&Header::openbox('100%', 'left', "$Lang::tr{'settings'}");
 
 print <<END
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
@@ -285,7 +285,8 @@ END
 &Header::openbox('100%', 'left', $Lang::tr{'log'});
 print "<p><b>$Lang::tr{'firewall hits'} $date: $lines</b></p>";
 
-$start = $lines - ${Header::viewsize} if ($start >= $lines - ${Header::viewsize});
+my $lastPageIndex = $lines - ${Header::viewsize};
+$start = $lastPageIndex if ($start >= $lastPageIndex);
 $start = 0 if ($start < 0);
 
 my $prev;
@@ -297,7 +298,7 @@ my $prev;
     }
                                     
 my $next;
-    if ($start == $lines - ${Header::viewsize}) {
+    if ($start == $lastPageIndex) {
         $next = -1;
     } else {
         $next = $start + ${Header::viewsize};
@@ -308,16 +309,16 @@ if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @log = reverse @log; }
 if ($lines != 0) { &oldernewer(); }
 
 print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
 <tr>
-        <td align='center' class='boldbase'><b>$Lang::tr{'time'}</b></td>
-        <td align='center' class='boldbase'><b>$Lang::tr{'chain'}</b></td>
-        <td align='center' class='boldbase'><b>$Lang::tr{'iface'}</b></td>
-        <td align='center' class='boldbase'><b>$Lang::tr{'proto'}</b></td>
-        <td align='center' class='boldbase'><b>$Lang::tr{'source'}<br/>$Lang::tr{'destination'}</b></td>
-        <td align='center' class='boldbase'><b>$Lang::tr{'src port'}<br />$Lang::tr{'dst port'}</b></td>
-        <td align='center' class='boldbase'><b>Flag</b></td>
-        <td align='center' class='boldbase'><b>$Lang::tr{'mac address'}</b></td>
+        <th align='center' class='boldbase'><b>$Lang::tr{'time'}</b></th>
+        <th align='center' class='boldbase'><b>$Lang::tr{'chain'}</b></th>
+        <th align='center' class='boldbase'><b>$Lang::tr{'iface'}</b></th>
+        <th align='center' class='boldbase'><b>$Lang::tr{'proto'}</b></th>
+        <th align='center' class='boldbase'><b>$Lang::tr{'source'}<br/>$Lang::tr{'destination'}</b></th>
+        <th align='center' class='boldbase'><b>$Lang::tr{'src port'}<br />$Lang::tr{'dst port'}</b></th>
+        <th align='center' class='boldbase'><b>$Lang::tr{'country'}</b></th>
+        <th align='center' class='boldbase'><b>$Lang::tr{'mac address'}</b></th>
 </tr>
 END
 ;
@@ -353,26 +354,29 @@ foreach $_ (@log)
                 $dstport = "$dstport($servi)";}
         my @mactemp = split(/:/,$macaddr);
         $macaddr = "$mactemp[6]:$mactemp[7]:$mactemp[8]:$mactemp[9]:$mactemp[10]:$mactemp[11]";
+        my $col="";
         if ($lines % 2) {
-                print "<tr bgcolor='$color{'color20'}'>\n"; }
+                print "<tr>";
+                $col="bgcolor='$color{'color20'}'"; }
         else {
-                print "<tr bgcolor='$color{'color22'}'>\n"; }
+                print "<tr>";
+                $col="bgcolor='$color{'color22'}'"; }
         print <<END
 
-        <td align='center'>$time</td>
-        <td align='center'>$comment</td>
-        <td align='center'>$iface</td>
-        <td align='center'>$proto</td>
-        <td align='center'><a href='/cgi-bin/ipinfo.cgi?ip=$srcaddr'>$srcaddr</a><br /><a href='/cgi-bin/ipinfo.cgi?ip=$dstaddr'>$dstaddr</a></td>
-        <td align='center'>$srcport<br/>$dstport</td>
+        <td align='center' $col>$time</td>
+        <td align='center' $col>$comment</td>
+        <td align='center' $col>$iface</td>
+        <td align='center' $col>$proto</td>
+        <td align='center' $col><a href='/cgi-bin/ipinfo.cgi?ip=$srcaddr'>$srcaddr</a><br /><a href='/cgi-bin/ipinfo.cgi?ip=$dstaddr'>$dstaddr</a></td>
+        <td align='center' $col>$srcport<br/>$dstport</td>
 END
 ;
         if ( $fcode ne "" ){
-        print "<td align='center'><a href='../country.cgi#$fcode'><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$ccode'></a></td>";} 
+        print "<td align='center' $col><a href='../country.cgi#$fcode'><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$ccode'></a></td>";}
         else {
-        print "<td align='center'></td>";}
+        print "<td align='center' $col></td>";}
         print <<END
-        <td align='center'>$macaddr</td>
+        <td align='center' $col>$macaddr</td>
 </tr>
 END
         ;
@@ -399,16 +403,18 @@ END
 
 print "<td align='center' width='50%'>";
 if ($prev != -1) {
+        print "<a href='/cgi-bin/logs.cgi/firewalllog.dat?0,$cgiparams{'MONTH'},$cgiparams{'DAY'}'>$Lang::tr{'first'}</a> "; 
         print "<a href='/cgi-bin/logs.cgi/firewalllog.dat?$prev,$cgiparams{'MONTH'},$cgiparams{'DAY'}'>$Lang::tr{'older'}</a>"; }
 else {
-        print "$Lang::tr{'older'}"; }
+        print "$Lang::tr{'first'} $Lang::tr{'older'}"; }
 print "</td>\n";
 
 print "<td align='center' width='50%'>";
 if ($next >= 0) {
-        print "<a href='/cgi-bin/logs.cgi/firewalllog.dat?$next,$cgiparams{'MONTH'},$cgiparams{'DAY'}'>$Lang::tr{'newer'}</a>"; }
+        print "<a href='/cgi-bin/logs.cgi/firewalllog.dat?$next,$cgiparams{'MONTH'},$cgiparams{'DAY'}'>$Lang::tr{'newer'}</a> ";
+        print "<a href='/cgi-bin/logs.cgi/firewalllog.dat?$lastPageIndex,$cgiparams{'MONTH'},$cgiparams{'DAY'}'>$Lang::tr{'last'}</a>"; }      
 else {
-        print "$Lang::tr{'newer'}"; }
+        print "$Lang::tr{'newer'} $Lang::tr{'last'} "; }
 print "</td>\n";
 
 print <<END
diff --git a/html/cgi-bin/logs.cgi/firewalllogcountry.dat b/html/cgi-bin/logs.cgi/firewalllogcountry.dat
new file mode 100644 (file)
index 0000000..af14279
--- /dev/null
@@ -0,0 +1,523 @@
+#!/usr/bin/perl
+#
+# SmoothWall CGIs
+#
+# This code is distributed under the terms of the GPL
+#
+# JC HERITIER 
+# page inspired from the initial firewalllog.dat
+#
+# Modified for IPFire by Christian Schmidt
+#                            and Michael Tremer (www.ipfire.org)
+
+use strict;
+use Geo::IP::PurePerl;
+use Getopt::Std;
+
+# 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";
+
+use POSIX();
+
+my %cgiparams=();
+my %settings=();
+my $pienumber;
+my $otherspie;
+my $showpie;
+my $sortcolumn;
+my $errormessage = '';
+
+$cgiparams{'pienumber'} = 10;
+$cgiparams{'otherspie'} = 1;
+$cgiparams{'showpie'} = 1;
+$cgiparams{'sortcolumn'} = 1;
+
+my @shortmonths = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
+        'Sep', 'Oct', 'Nov', 'Dec' );
+my @longmonths = ( $Lang::tr{'january'}, $Lang::tr{'february'}, $Lang::tr{'march'},
+        $Lang::tr{'april'}, $Lang::tr{'may'}, $Lang::tr{'june'}, $Lang::tr{'july'}, $Lang::tr{'august'},
+        $Lang::tr{'september'}, $Lang::tr{'october'}, $Lang::tr{'november'},
+        $Lang::tr{'december'} );
+
+my @now = localtime();
+my $dow = $now[6];
+my $doy = $now[7];
+my $tdoy = $now[7];
+my $year = $now[5]+1900;
+
+$cgiparams{'DAY'} = $now[3];
+$cgiparams{'MONTH'} = $now[4];
+$cgiparams{'ACTION'} = '';
+
+&General::readhash("${General::swroot}/fwlogs/ipsettings", \%settings);
+if ($settings{'pienumber'} != 0) { $cgiparams{'pienumber'} = $settings{'pienumber'} };
+if ($settings{'otherspie'} != 0) { $cgiparams{'otherspie'} = $settings{'otherspie'} };
+if ($settings{'showpie'} != 0) { $cgiparams{'showpie'} = $settings{'showpie'} };
+if ($settings{'sortcolumn'} != 0) { $cgiparams{'sortcolumn'} = $settings{'sortcolumn'} };
+
+&Header::getcgihash(\%cgiparams);
+if ($cgiparams{'pienumber'} != 0) { $settings{'pienumber'} = $cgiparams{'pienumber'} };
+if ($cgiparams{'otherspie'} != 0) { $settings{'otherspie'} = $cgiparams{'otherspie'} };
+if ($cgiparams{'showpie'} != 0) { $settings{'showpie'} = $cgiparams{'showpie'} };
+if ($cgiparams{'sortcolumn'} != 0) { $settings{'sortcolumn'} = $cgiparams{'sortcolumn'} };
+
+if ($cgiparams{'ACTION'} eq $Lang::tr{'save'})
+{
+   &General::writehash("${General::swroot}/fwlogs/ipsettings", \%settings);
+}
+
+my $start = -1;
+if ($ENV{'QUERY_STRING'} && $cgiparams{'ACTION'} ne $Lang::tr{'update'})
+{
+        my @temp = split(',',$ENV{'QUERY_STRING'});
+        $start = $temp[0];
+        $cgiparams{'MONTH'} = $temp[1];
+        $cgiparams{'DAY'} = $temp[2];
+}
+
+if (!($cgiparams{'MONTH'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11)$/) ||
+    !($cgiparams{'DAY'} =~ /^(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)$/))
+{
+        $cgiparams{'DAY'} = $now[3];
+        $cgiparams{'MONTH'} = $now[4];
+}
+elsif($cgiparams{'ACTION'} eq '>>')
+{
+        my @temp_then=();
+        my @temp_now = localtime(time);
+        $temp_now[4] = $cgiparams{'MONTH'};
+        $temp_now[3] = $cgiparams{'DAY'};
+        @temp_then = localtime(POSIX::mktime(@temp_now) + 86400);
+           ## Retrieve the same time on the next day -
+           ## 86400 seconds in a day
+        $cgiparams{'MONTH'} = $temp_then[4];
+        $cgiparams{'DAY'} = $temp_then[3];
+}
+elsif($cgiparams{'ACTION'} eq '<<')
+{
+        my @temp_then=();
+        my @temp_now = localtime(time);
+        $temp_now[4] = $cgiparams{'MONTH'};
+        $temp_now[3] = $cgiparams{'DAY'};
+        @temp_then = localtime(POSIX::mktime(@temp_now) - 86400);
+           ## Retrieve the same time on the previous day -
+           ## 86400 seconds in a day
+        $cgiparams{'MONTH'} = $temp_then[4];
+        $cgiparams{'DAY'} = $temp_then[3];
+}
+
+if (($cgiparams{'DAY'} ne $now[3]) || ($cgiparams{'MONTH'} ne $now[4]))
+{
+        my @then = ();
+        if ( (  $cgiparams{'MONTH'} eq $now[4]) && ($cgiparams{'DAY'} > $now[3]) ||
+                        ( $cgiparams{'MONTH'} > $now[4] ) ) {
+                @then = localtime(POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1901 ));
+        } else {
+                @then = localtime(POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1900 ));
+        }
+        $tdoy = $then[7];
+        my $lastleap=($year-1)%4;
+        if ($tdoy>$doy) {
+                if ($lastleap == 0 && $tdoy < 60) {
+                        $doy=$tdoy+366;
+                } else {
+                        $doy=$doy+365;
+                }
+        }
+}
+
+my $datediff=0;
+my $dowd=0;
+my $multifile=0;
+if ($tdoy ne $doy) {
+        $datediff=int(($doy-$tdoy)/7);
+        $dowd=($doy-$tdoy)%7;
+        if (($dow-$dowd)<1) {
+                $datediff=$datediff+1;
+        }
+        if (($dow-$dowd)==0) {
+                $multifile=1;
+        }
+}
+
+my $monthstr = $shortmonths[$cgiparams{'MONTH'}];
+my $longmonthstr = $longmonths[$cgiparams{'MONTH'}];
+my $day = $cgiparams{'DAY'};
+my $daystr='';
+if ($day <= 9) {
+        $daystr = " $day"; }
+else {
+        $daystr = $day;
+}
+
+my $skip=0;
+my $filestr='';
+if ($datediff==0) {
+        $filestr="/var/log/messages";
+} else {
+       $filestr="/var/log/messages.$datediff";
+       $filestr = "$filestr.gz" if -f "$filestr.gz";
+}
+
+if (!(open (FILE,($filestr =~ /.gz$/ ? "gzip -dc $filestr |" : $filestr)))) {
+        $errormessage = "$Lang::tr{'date not in logs'}: $filestr $Lang::tr{'could not be opened'}";
+        $skip=1;
+        # Note: This is in case the log does not exist for that date
+}
+my $lines = 0;
+my @log=();
+
+if (!$skip)
+{
+        while (<FILE>)
+        {
+                if (/(^${monthstr} ${daystr} ..:..:..) [\w\-]+ kernel:.*(IN=.*)$/) {
+                        $log[$lines] = $_;
+                        $lines++;
+                }
+        }
+        close (FILE);   
+}
+
+$skip=0;
+if ($multifile) {
+        $datediff=$datediff-1;
+        if ($datediff==0) {
+                $filestr="/var/log/messages";
+        } else {
+                $filestr="/var/log/messages.$datediff";
+                $filestr = "$filestr.gz" if -f "$filestr.gz";
+        }
+        if (!(open (FILE,($filestr =~ /.gz$/ ? "gzip -dc $filestr |" : $filestr)))) {
+                $errormessage="$Lang::tr{'date not in logs'}: $filestr $Lang::tr{'could not be opened'}";
+                $skip=1;
+        }
+        if (!$skip) {
+                while (<FILE>) {
+                        if (/(^${monthstr} ${daystr} ..:..:..) [\w\-]+ kernel:.*(IN=.*)$/) {
+                                $log[$lines] = $_;
+                                $lines++;
+                        }
+                }
+                close (FILE);
+        }
+}
+
+my $MODNAME="fwlogs";
+
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'firewall log'}, 1, '');
+&Header::openbigbox('100%', 'left', '', $errormessage);
+
+
+if ($errormessage) {
+        &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
+        print "<font class='base'>$errormessage&nbsp;</font>\n";
+        &Header::closebox();
+}
+
+&Header::openbox('100%', 'left', "$Lang::tr{'settings'}");
+
+print <<END
+<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+<table width='100%'>
+<tr>
+        <td width='10%' class='base'>$Lang::tr{'month'}:&nbsp;</td>
+        <td width='10%'>
+        <select name='MONTH'>
+END
+;
+my $month;
+for ($month = 0; $month < 12; $month++)
+{
+        print "\t<option ";
+        if ($month == $cgiparams{'MONTH'}) {
+                print "selected='selected' "; }
+        print "value='$month'>$longmonths[$month]</option>\n";
+}
+print <<END
+        </select>
+        </td>
+        <td width='10%' class='base' align='right'>&nbsp;$Lang::tr{'day'}:&nbsp;</td>
+        <td width='40%'>
+        <select name='DAY'>
+END
+;
+for ($day = 1; $day <= 31; $day++) 
+{
+        print "\t<option ";
+        if ($day == $cgiparams{'DAY'}) {
+                print "selected='selected' "; }
+        print "value='$day'>$day</option>\n";
+}
+
+if( $cgiparams{'pienumber'} != 0){$pienumber=$cgiparams{'pienumber'};}
+if( $cgiparams{'otherspie'} != 0){$otherspie=$cgiparams{'otherspie'};}
+if( $cgiparams{'showpie'} != 0){$showpie=$cgiparams{'showpie'};}
+if( $cgiparams{'sortcolumn'} != 0){$sortcolumn=$cgiparams{'sortcolumn'};}
+
+print <<END
+</select>
+</td>
+<td width='5%'  align='center'><input type='submit' name='ACTION' title='$Lang::tr{'day before'}' value='&lt;&lt;' /></td>
+<td width='5%'  align='center'><input type='submit' name='ACTION' title='$Lang::tr{'day after'}' value='&gt;&gt;' /></td>
+<td width='20%' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'update'}' /></td>
+</tr>
+<tr>
+       <td colspan='3' align='left' valign="left">$Lang::tr{'Number of Countries for the pie chart'}:</td>
+       <td colspan='3' align='left' valign="center"><input type='text' name='pienumber' value='$pienumber' size='4'></td>
+       <td align='right'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
+</tr>
+</table>
+</form>
+END
+;
+
+&Header::closebox();
+
+&Header::openbox('100%', 'left', 'Firewall Logs');
+print "<p><b>$Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines</b></p>";
+
+my $linesjc = 0;
+my %tabjc;
+my $gi = Geo::IP::PurePerl->new();
+
+if ($pienumber == -1 || $pienumber > $lines || $sortcolumn == 2) { $pienumber = $lines; };
+$lines = 0;
+foreach $_ (@log)
+{
+  /^... (..) (..:..:..) [\w\-]+ kernel:(.*)(IN=.*)$/;
+  my $packet = $4;
+  $packet =~ /IN=(\w+)/;       my $iface=$1; if ( $1 =~ /2./ ){ $iface="";}
+  $packet =~ /SRC=([\d\.]+)/;  my $srcaddr=$1;
+
+  if($iface eq 'red0') {
+    if($srcaddr ne '') {
+      my $ccode = $gi->country_code_by_name($srcaddr);
+      if( $ccode eq '') {
+          $ccode = 'unknown';
+      }
+      $tabjc{$ccode} = $tabjc{$ccode} + 1 ;
+      if(($tabjc{$ccode} == 1) && ($lines < $pienumber)) { $lines = $lines + 1; }
+      $linesjc++;
+    }
+  }
+  else {
+    if($iface ne '') {
+        $tabjc{$iface} = $tabjc{$iface} + 1 ;
+        if(($tabjc{$iface} == 1) && ($lines < $pienumber)) { $lines = $lines + 1; }
+        $linesjc++;
+    }
+  }
+}
+
+$pienumber = $lines;
+
+my @keytabjc = keys %tabjc;
+
+my @slice;
+my $go;
+my $nblinejc;
+
+if( $cgiparams{'linejc'} eq 'all' ){ $nblinejc = $linesjc; $go=1; }
+if( ($cgiparams{'linejc'} != 0) && ($cgiparams{'linejc'} ne 'all') ){ $nblinejc = $cgiparams{'linejc'}; $go=1;}
+if( $go != 1){ $nblinejc = 1000; }
+
+my @key;
+my @value;
+my $indice=0;
+my @tabjc2;
+
+if ($sortcolumn == 1)
+{
+        @tabjc2 = sort { $b <=> $a } values (%tabjc);
+}
+else
+{
+        @tabjc2 = sort { $a <=> $b } keys (%tabjc);
+}
+
+my $colour=1;
+
+##############################################
+#pie chart generation
+use GD::Graph::pie;
+use GD::Graph::colour;
+#ips sort by hits number
+my $v;
+
+if ($sortcolumn == 1)
+{
+        for ($v=0;$v<$pienumber;$v++){
+          findkey($tabjc2[$v]);
+        }
+}
+else
+{
+        foreach $v (@tabjc2) {
+          $key[$indice] = $v;
+          $value[$indice] = $tabjc{$v};
+          $indice++;
+        }
+}
+
+my @ips;
+my @numb;
+
+@ips = @key;
+@numb = @value;
+
+my $o;
+
+if($cgiparams{'otherspie'} == 2 ){}
+else{ 
+        my $numothers;
+        for($o=0;$o<$pienumber;$o++){
+          $numothers = $numothers + $numb[$o];
+        }
+        $numothers =  $linesjc - $numothers;
+        if ($numothers > 0) {
+                $ips[$pienumber]="$Lang::tr{'otherip'}";
+                $numb[$pienumber] =  $numothers;
+        }
+}
+
+my @data = (\@ips,\@numb);
+use GD::Graph::colour qw( :files );
+
+my $color=0;
+my %color = ();
+my %mainsettings = ();
+&General::readhash("${General::swroot}/main/settings", \%mainsettings);
+&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+
+if ($showpie != 2 && $pienumber <= 50 && $pienumber != 0) {
+        my $mygraph = GD::Graph::pie->new(500, 350);
+        $mygraph->set(
+              'title' => '',
+              'pie_height' => 50,
+              'start_angle' => 89
+             ) or warn $mygraph->error;
+
+        $mygraph->set_value_font(GD::gdMediumBoldFont);
+        $mygraph->set( dclrs => [ "$color{'color1'}" , "$color{'color2'}" , "$color{'color3'}" , "$color{'color4'}" , "$color{'color5'}" , "$color{'color6'}" , "$color{'color7'}" , "$color{'color8'}" , "$color{'color9'}" , "$color{'color10'}" ] );
+        my $myimage = $mygraph->plot(\@data) or die $mygraph->error;
+
+        my @filenames = glob("/srv/web/ipfire/html/graphs/fwlog-country*.png");
+        unlink(@filenames);
+        my $imagerandom = rand(1000000);
+        my $imagename = "/srv/web/ipfire/html/graphs/fwlog-country$imagerandom.png";
+        open(FILE,">$imagename");
+        print FILE $myimage->png;
+        close(FILE);
+        #####################################################
+        print "<div style='text-align:center;'>";
+        print "<img src='/graphs/fwlog-country$imagerandom.png'>";
+        print "</div>";
+}
+
+print <<END
+<table width='100%' class='tbl'>
+<tr>
+<th width='10%' align='center' class='boldbase'></th>
+<th width='30%' align='center' class='boldbase'><b>$Lang::tr{'country'}</b></th>
+<th width='30%' align='center' class='boldbase'><b>Count</b></th>
+<th width='30%' align='center' class='boldbase'><b>$Lang::tr{'percentage'}</b></th>
+</tr>
+END
+;
+
+my $total=0;
+my $show=0;
+
+my $s;
+my $percent;
+my $col="";
+
+for($s=0;$s<$lines;$s++)
+{
+  $show++;
+  $percent = $value[$s] * 100 / $linesjc;
+  $percent = sprintf("%.f", $percent);
+  $total = $total + $value[$s];
+  my $colorIndex = $color % 10;
+  if($colorIndex == 0) {
+    $colorIndex = 10;
+  }
+  $col="bgcolor='$color{\"color$colorIndex\"}'";
+  $color++;
+  print "<tr>";
+
+  print "<td align='center' $col><form method='post' action='showrequestfromcountry.dat'><input type='hidden' name='MONTH' value='$cgiparams{'MONTH'}'> <input type='hidden' name='DAY' value='$cgiparams{'DAY'}'> <input type='hidden' name='country' value='$key[$s]'> <input type='submit' value='details'></form></td>";
+  if($key[$s] eq 'blue0' || $key[$s] eq 'green0' || $key[$s] eq 'orange0') {
+      print "<td align='center' $col>$key[$s]</td>";
+  }
+  else {
+      if($key[$s] ne 'unknown' ) {
+          my $fcode = lc($key[$s]);
+          print "<td align='center' $col><a href='/cgi-bin/country.cgi#$fcode'><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$key[$s]' title='$key[$s]'></a></td>";}
+      else {
+          print "<td align='center' $col>$key[$s]</td>";
+      }
+  }
+  print "<td align='center' $col>$value[$s]</td>";
+  print "<td align='center' $col>$percent</td>";
+  print "</tr>";
+}
+
+if($cgiparams{'otherspie'} == 2 ){}
+else{
+  my $colorIndex = $color % 10;
+  if($colorIndex == 0) {
+    $colorIndex = 10;
+  }
+  $col="bgcolor='$color{\"color$colorIndex\"}'";
+  print "<tr>";
+
+if ( $linesjc ne "0")
+{
+my $dif;
+$dif = $linesjc - $total;
+$percent = $dif * 100 / $linesjc;
+$percent = sprintf("%.f", $percent);
+print <<END
+<td align='center' $col></TD>
+<td align='center' $col>$Lang::tr{'other countries'}</td>
+<td align='center' $col>$dif</TD>
+<td align='center' $col>$percent</TD>
+</tr>
+END
+;
+}
+}
+print <<END
+</TABLE>
+END
+;
+
+&Header::closebox();
+&Header::closebigbox();
+&Header::closepage();
+
+sub findkey {
+  my $v;
+  foreach $v (@keytabjc) {
+    if ($tabjc{$v} eq $_[0]) {
+      delete $tabjc{$v};
+      $key[$indice] = "$v";
+      $value[$indice] = $_[0];
+      $indice++;
+      last;
+    }
+  }
+}
+sub checkversion {
+        #Automatic Updates is disabled
+        return "0","0";
+}
+
index 3ec3f6df2cf9b197fff133335328c4e77d01470e..07bcc77f813bdfd2ed17988103c717584dd37c23 100644 (file)
@@ -221,7 +221,7 @@ if ($errormessage) {
         &Header::closebox();
 }
 
-&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:");
+&Header::openbox('100%', 'left', "$Lang::tr{'settings'}");
 
 print <<END
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
@@ -266,15 +266,15 @@ print <<END
 </td>
 <td width='5%'  align='center'><input type='submit' name='ACTION' title='$Lang::tr{'day before'}' value='&lt;&lt;' /></td>
 <td width='5%'  align='center'><input type='submit' name='ACTION' title='$Lang::tr{'day after'}' value='&gt;&gt;' /></td>
-<td width='20%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'update'}' /></td>
+<td width='20%' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'update'}' /></td>
+</tr>
+<tr>
+       <td colspan='3' align='left' valign="left">$Lang::tr{'Number of IPs for the pie chart'}:</td>
+       <td colspan='3' align='left' valign="center"><input type='text' name='pienumber' value='$pienumber' size='4'></td>
+       <td align='right'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
 </tr>
 </table>
-<table width='100%'>
-<tr><td width='20%' align='right' valign="center">$Lang::tr{'Number of IPs for the pie chart'}:</td>
-          <td width='10%' align='left' valign="center"><input type='text' name='pienumber' value='$pienumber' size='4'></td>
-          <td width='20%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td></tr>
-       </table>
-       </form>
+</form>
 END
 ;
 
@@ -397,20 +397,20 @@ if ($showpie != 2 && $pienumber <= 50 && $pienumber != 0) {
         print FILE $myimage->png;
         close(FILE);
         #####################################################
-        print "<table align='center'><tr><td>";
+        print "<div style='text-align:center'>";
         print "<img src='/graphs/fwlog-ip$imagerandom.png'>";
-        print "</td></tr></table>";
+        print "</div>";
 }
 
 print <<END
-<TABLE WIDTH='100%'>
-<TR>
-<TD WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'></TD>
-<TD WIDTH='30%' ALIGN='CENTER' CLASS='boldbase'><B>IP</B></TD>
-<TD WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'><B>Flag</B></TD>
-<TD WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'><B>Count</B></TD>
-<TD WIDTH='30%' ALIGN='CENTER' CLASS='boldbase'><B>Percent</B></TD>
-</TR>
+<table width='100%' class='tbl'>
+<tr>
+<th width='10%' align='center' class='boldbase'></th>
+<th width='30%' align='center' class='boldbase'><b>$Lang::tr{'ip address'}</b></th>
+<th width='10%' align='center' class='boldbase'><b>$Lang::tr{'country'}</b></th>
+<th width='10%' align='center' class='boldbase'><b>$Lang::tr{'count'}</b></th>
+<th width='30%' align='center' class='boldbase'><b>$Lang::tr{'percentage'}</b></th>
+</tr>
 END
 ;
 
@@ -419,6 +419,7 @@ my $show=0;
 
 my $s;
 my $percent;
+my $col="";
 
 for($s=0;$s<$lines;$s++)
 {
@@ -426,45 +427,37 @@ for($s=0;$s<$lines;$s++)
   $percent = $value[$s] * 100 / $linesjc;
   $percent = sprintf("%.f", $percent);
   $total = $total + $value[$s];
-  if ( ($color % 10) == 1 ){print "<TR BGCOLOR='$color{'color1'}'>\n";}
-  if ( ($color % 10) == 2 ){print "<TR BGCOLOR='$color{'color2'}'>\n";}
-  if ( ($color % 10) == 3 ){print "<TR BGCOLOR='$color{'color3'}'>\n";}
-  if ( ($color % 10) == 4 ){print "<TR BGCOLOR='$color{'color4'}'>\n";}
-  if ( ($color % 10) == 5 ){print "<TR BGCOLOR='$color{'color5'}'>\n";}
-  if ( ($color % 10) == 6 ){print "<TR BGCOLOR='$color{'color6'}'>\n";}
-  if ( ($color % 10) == 7 ){print "<TR BGCOLOR='$color{'color7'}'>\n";}
-  if ( ($color % 10) == 8 ){print "<TR BGCOLOR='$color{'color8'}'>\n";}
-  if ( ($color % 10) == 9 ){print "<TR BGCOLOR='$color{'color9'}'>\n";}
-  if ( ($color % 10) == 0 ){print "<TR BGCOLOR='$color{'color10'}'>\n";}
+  my $colorIndex = $color % 10;
+  if($colorIndex == 0) {
+    $colorIndex = 10;
+  }
+  $col="bgcolor='$color{\"color$colorIndex\"}'";
+  print "<tr>";
   
   my $gi = Geo::IP::PurePerl->new();
   my $ccode = $gi->country_code_by_name($key[$s]);
   my $fcode = lc($ccode);
   
   $color++;
-  print "<TD ALIGN='CENTER'><form method='post' action='showrequestfromip.dat'><input type='hidden' name='MONTH' value='$cgiparams{'MONTH'}'> <input type='hidden' name='DAY' value='$cgiparams{'DAY'}'> <input type='hidden' name='ip' value='$key[$s]'> <input type='submit' value='details'></form></TD>";
-  print "<TD ALIGN='CENTER'><a href='/cgi-bin/ipinfo.cgi?ip=$key[$s]'>$key[$s]</a></TD>";
+  print "<td align='center' $col><form method='post' action='showrequestfromip.dat'><input type='hidden' name='MONTH' value='$cgiparams{'MONTH'}'> <input type='hidden' name='DAY' value='$cgiparams{'DAY'}'> <input type='hidden' name='ip' value='$key[$s]'> <input type='submit' value='$Lang::tr{'details'}'></form></td>";
+  print "<td align='center' $col><a href='/cgi-bin/ipinfo.cgi?ip=$key[$s]'>$key[$s]</a></td>";
   if ( $fcode ne "" ){
-  print "<TD ALIGN='CENTER'><a href='/cgi-bin/country.cgi#$fcode'><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$ccode'></a></TD>";} 
+    print "<td align='center' $col><a href='/cgi-bin/country.cgi#$fcode'><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$ccode' title='$ccode'></a></td>";}
   else {
-  print "<TD ALIGN='CENTER'></TD>";}
-  print "<TD ALIGN='CENTER'>$value[$s]</TD>";
-  print "<TD ALIGN='CENTER'>$percent</TD>";
-  print "</TR>";
-}
+    print "<td align='center' $col></td>";}
+    print "<td align='center' $col>$value[$s]</td>";
+    print "<td align='center' $col>$percent</td>";
+    print "</tr>";
+  }
 
 if($cgiparams{'otherspie'} == 2 ){}
 else{
-if ( ($color % 10) == 1 ){print "<TR BGCOLOR='$color{'color1'}'>\n";}
-if ( ($color % 10) == 2 ){print "<TR BGCOLOR='$color{'color2'}'>\n";}
-if ( ($color % 10) == 3 ){print "<TR BGCOLOR='$color{'color3'}'>\n";}
-if ( ($color % 10) == 4 ){print "<TR BGCOLOR='$color{'color4'}'>\n";}
-if ( ($color % 10) == 5 ){print "<TR BGCOLOR='$color{'color5'}'>\n";}
-if ( ($color % 10) == 6 ){print "<TR BGCOLOR='$color{'color6'}'>\n";}
-if ( ($color % 10) == 7 ){print "<TR BGCOLOR='$color{'color7'}'>\n";}
-if ( ($color % 10) == 8 ){print "<TR BGCOLOR='$color{'color8'}'>\n";}
-if ( ($color % 10) == 9 ){print "<TR BGCOLOR='$color{'color9'}'>\n";}
-if ( ($color % 10) == 0 ){print "<TR BGCOLOR='$color{'color10'}'>\n";}
+  my $colorIndex = $color % 10;
+  if($colorIndex == 0) {
+    $colorIndex = 10;
+  }
+  $col="bgcolor='$color{\"color$colorIndex\"}'";
+  print "<tr>";
 
 if ( $linesjc ne "0")
 {
@@ -473,18 +466,18 @@ $dif = $linesjc - $total;
 $percent = $dif * 100 / $linesjc;
 $percent = sprintf("%.f", $percent);
 print <<END
-<TD ALIGN='CENTER'></TD>
-<TD ALIGN='CENTER'>$Lang::tr{'otherip'}</TD>
-<TD ALIGN='CENTER'></TD>
-<TD ALIGN='CENTER'>$dif</TD>
-<TD ALIGN='CENTER'>$percent</TD> 
-</TR>
+<td align='center' $col></td>
+<td align='center' $col>$Lang::tr{'otherip'}</td>
+<td align='center' $col></td>
+<td align='center' $col>$dif</td>
+<td align='center' $col>$percent</td>
+</tr>
 END
 ;
 }
 }
 print <<END
-</TABLE>
+</table>
 END
 ;
 
@@ -503,7 +496,10 @@ sub findkey {
       last;
     }
   }
-}sub checkversion {
-        #Automatic Updates is disabled
-        return "0","0";
-        }
+}
+
+sub checkversion {
+    #Automatic Updates is disabled
+    return "0","0";
+}
+
index af9b852884161dd080e68e2250427a89f6053314..5b0db62314df237f3db248040b7e14815e722caa 100644 (file)
@@ -222,7 +222,7 @@ if ($errormessage) {
         &Header::closebox();
 }
 
-&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:");
+&Header::openbox('100%', 'left', "$Lang::tr{'settings'}");
 
 print <<END
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
@@ -267,15 +267,15 @@ print <<END
 </td>
 <td width='5%'  align='center'><input type='submit' name='ACTION' title='$Lang::tr{'day before'}' value='&lt;&lt;' /></td>
 <td width='5%'  align='center'><input type='submit' name='ACTION' title='$Lang::tr{'day after'}' value='&gt;&gt;' /></td>
-<td width='20%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'update'}' /></td>
+<td width='20%' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'update'}' /></td>
+</tr>
+<tr>
+       <td colspan='3' align='left' valign="center">$Lang::tr{'Number of Ports for the pie chart'}:</td>
+       <td colspan='3' align='left' valign="center"><input type='text' name='pienumber' value='$pienumber' size='4'></td>
+       <td align='right'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
 </tr>
 </table>
-<table width='100%'>
-<tr><td width='20%' align='right' valign="center">$Lang::tr{'Number of Ports for the pie chart'}:</td>
-    <td width='10%' align='left' valign="center"><input type='text' name='pienumber' value='$pienumber' size='4'></td>
-    <td width='20%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td></tr>
-       </table>
-       </form>
+</form>
 END
 ;
 
@@ -400,19 +400,19 @@ if ($showpie != 2 && $pienumber <= 50 && $pienumber != 0) {
         print FILE $myimage->png;
         close(FILE);
         #####################################################
-        print "<table align='center'><tr><td>";
+        print "<div style='text-align:center'>";
         print "<img src='/graphs/fwlog-port$imagerandom.png'>";
-        print "</td></tr></table>";
+        print "</div>";
 }
 
 print <<END
-<TABLE WIDTH='100%'>
-<TR>
-<TD WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'></TD>
-<TD WIDTH='33%' ALIGN='CENTER' CLASS='boldbase'><B>Port</B></TD>
-<TD WIDTH='33%' ALIGN='CENTER' CLASS='boldbase'><B>Count</B></TD>
-<TD WIDTH='33%' ALIGN='CENTER' CLASS='boldbase'><B>Percent</B></TD>
-</TR>
+<table width='100%' class='tbl'>
+<tr>
+<th width='10%' align='center' class='boldbase'></th>
+<th width='33%' align='center' class='boldbase'><b>$Lang::tr{'port'}</b></th>
+<th width='33%' align='center' class='boldbase'><b>$Lang::tr{'count'}</b></th>
+<th width='33%' align='center' class='boldbase'><b>$Lang::tr{'percentage'}</b></th>
+</tr>
 END
 ;
 
@@ -421,43 +421,37 @@ my $show=0;
 
 my $s;
 my $percent;
+my $col="";
+
 for($s=0;$s<$lines;$s++)
 {
   $show++;
   $percent = $value[$s] * 100 / $linesjc;
   $percent = sprintf("%.f", $percent);
   $total = $total + $value[$s];
-  if ( ($color % 10) == 1 ){print "<TR BGCOLOR='$color{'color1'}'>\n";}
-  if ( ($color % 10) == 2 ){print "<TR BGCOLOR='$color{'color2'}'>\n";}
-  if ( ($color % 10) == 3 ){print "<TR BGCOLOR='$color{'color3'}'>\n";}
-  if ( ($color % 10) == 4 ){print "<TR BGCOLOR='$color{'color4'}'>\n";}
-  if ( ($color % 10) == 5 ){print "<TR BGCOLOR='$color{'color5'}'>\n";}
-  if ( ($color % 10) == 6 ){print "<TR BGCOLOR='$color{'color6'}'>\n";}
-  if ( ($color % 10) == 7 ){print "<TR BGCOLOR='$color{'color7'}'>\n";}
-  if ( ($color % 10) == 8 ){print "<TR BGCOLOR='$color{'color8'}'>\n";}
-  if ( ($color % 10) == 9 ){print "<TR BGCOLOR='$color{'color9'}'>\n";}
-  if ( ($color % 10) == 0 ){print "<TR BGCOLOR='$color{'color10'}'>\n";}
+  my $colorIndex = $color % 10;
+  if($colorIndex == 0) {
+    $colorIndex = 10;
+  }
+  $col="bgcolor='$color{\"color$colorIndex\"}'";
+  print "<tr>";
 
   $color++;
-  print "<TD ALIGN='CENTER'><form method='post' action='showrequestfromport.dat'><input type='hidden' name='MONTH' value='$cgiparams{'MONTH'}'> <input type='hidden' name='DAY' value='$cgiparams{'DAY'}'> <input type='hidden' name='port' value='$key[$s]'> <input type='submit' value='details'></form></TD>";
-  print "<TD ALIGN='CENTER'>$key[$s]</TD>";
-  print "<TD ALIGN='CENTER'>$value[$s]</TD>";
-  print "<TD ALIGN='CENTER'>$percent</TD>";
-  print "</TR>";
+  print "<td align='center' $col><form method='post' action='showrequestfromport.dat'><input type='hidden' name='MONTH' value='$cgiparams{'MONTH'}'> <input type='hidden' name='DAY' value='$cgiparams{'DAY'}'> <input type='hidden' name='port' value='$key[$s]'> <input type='submit' value='$Lang::tr{'details'}'></form></td>";
+  print "<td align='center' $col>$key[$s]</td>";
+  print "<td align='center' $col>$value[$s]</td>";
+  print "<td align='center' $col>$percent</td>";
+  print "</tr>";
 }
 
 if($cgiparams{'otherspie'} == 2 ){}
 else{
-if ( ($color % 10) == 1 ){print "<TR BGCOLOR='$color{'color1'}'>\n";}
-if ( ($color % 10) == 2 ){print "<TR BGCOLOR='$color{'color2'}'>\n";}
-if ( ($color % 10) == 3 ){print "<TR BGCOLOR='$color{'color3'}'>\n";}
-if ( ($color % 10) == 4 ){print "<TR BGCOLOR='$color{'color4'}'>\n";}
-if ( ($color % 10) == 5 ){print "<TR BGCOLOR='$color{'color5'}'>\n";}
-if ( ($color % 10) == 6 ){print "<TR BGCOLOR='$color{'color6'}'>\n";}
-if ( ($color % 10) == 7 ){print "<TR BGCOLOR='$color{'color7'}'>\n";}
-if ( ($color % 10) == 8 ){print "<TR BGCOLOR='$color{'color8'}'>\n";}
-if ( ($color % 10) == 9 ){print "<TR BGCOLOR='$color{'color9'}'>\n";}
-if ( ($color % 10) == 0 ){print "<TR BGCOLOR='$color{'color10'}'>\n";}
+  my $colorIndex = $color % 10;
+  if($colorIndex == 0) {
+    $colorIndex = 10;
+  }
+  $col="bgcolor='$color{\"color$colorIndex\"}'";
+  print "<tr>";
 
 if ( $linesjc ne "0")
 {
@@ -466,17 +460,17 @@ $dif = $linesjc - $total;
 $percent = $dif * 100 / $linesjc;
 $percent = sprintf("%.f", $percent);
 print <<END
-<TD ALIGN='CENTER'></TD>
-<TD ALIGN='CENTER'>$Lang::tr{'otherport'}</TD>
-<TD ALIGN='CENTER'>$dif</TD>
-<TD ALIGN='CENTER'>$percent</TD> 
-</TR>
+<td align='center' $col></td>
+<td align='center' $col>$Lang::tr{'otherport'}</td>
+<td align='center' $col>$dif</td>
+<td align='center' $col>$percent</td>
+</tr>
 END
 ;
 }
 }
 print <<END
-</TABLE>
+</table>
 END
 ;
 
@@ -485,6 +479,7 @@ END
 &Header::closepage();
 
 sub findkey {
+  my $v;
   foreach $v (@keytabjc) {
     if ($tabjc{$v} eq $_[0]) {
       delete $tabjc{$v};
@@ -495,7 +490,9 @@ sub findkey {
     }
   }
 }
+
 sub checkversion {
-        #Automatic Updates is disabled
-        return "0","0";
-        }
+    #Automatic Updates is disabled
+    return "0","0";
+}
+
index e2d02447dce32225bbd9cd6e8d0e32e057ef444c..dacd518a142a6fcb9ebef99e6f8e22aa3fc5c7b2 100644 (file)
@@ -354,11 +354,11 @@ if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @log = reverse @log; }
 if ($lines != 0) { &oldernewer(); }
 
 print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
 <tr>
-       <td width='10%' align='center' class='boldbase'><b>$Lang::tr{'time'}</b></td>
-       <td width='10%' align='center' class='boldbase'><b>$Lang::tr{'section'}</b></td>
-       <td width='80%'>&nbsp;</td>
+       <th width='10%' align='center' class='boldbase'><b>$Lang::tr{'time'}</b></th>
+       <th width='10%' align='center' class='boldbase'><b>$Lang::tr{'section'}</b></th>
+       <th width='80%'>&nbsp;</th>
 </tr>
 END
 ;
@@ -383,13 +383,15 @@ foreach $_ (@log)
            $data = substr ($data,80);  #permit correct display in table cell
            $d .=  ' ' . substr ($data,0,80);
        }
-
+       my $col="";
 
        if ($lines % 2) {
-               print "<tr bgcolor='$color{'color20'}'>"; }
+               print "<tr>";
+               $col="bgcolor='$color{'color20'}'"; }
        else {
-               print "<tr bgcolor='$color{'color22'}'>"; }
-       print "<td>$time<td>$sec<td>" .&Header::cleanhtml ("$d", 'y') . "</td></tr>\n";
+               print "<tr>";
+               $col="bgcolor='$color{'color22'}'"; }
+       print "<td $col>$time<td $col>$sec<td $col>" .&Header::cleanhtml ("$d", 'y') . "</td></tr>\n";
        $lines++;
 }
 #print '</tt>';
index e529be061df78e9f4419e3ebddb6d1cf14cf3209..1d1844e7c4b0ffeee14f41a9cb6667a86d2cb532 100644 (file)
@@ -90,7 +90,7 @@ if ($ENV{'QUERY_STRING'} && $cgiparams{'ACTION'} ne $Lang::tr{'update'})
        $cgiparams{'MONTH'} = $temp[1];
        $cgiparams{'DAY'} = $temp[2];  
        $cgiparams{'SOURCE_IP'} = $temp[3];
-       $cgiparams{'USERNAME'} = $temp[4];
+       $cgiparams{'USERNAME'} = &Header::escape($temp[4]);
 }
 
 if (!($cgiparams{'MONTH'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11)$/) ||
@@ -182,7 +182,7 @@ my $thiscode = '$temp =~ /$filter/;';
 eval($thiscode);
 if ($@ ne '')
 {
-    $errormessage = "$Lang::tr{'bad ignore filter'}.$@<P>";
+    $errormessage = "$Lang::tr{'bad ignore filter'}.$@<p>";
     $filter = '';
 } else {
     my $loop = 1;
@@ -383,6 +383,7 @@ print <<END
 END
 ;
 foreach my $so (sort keys %users) {
+       $so = &Header::escape($so);
        print "<option value='$so' $selected{'USERNAME'}{$so}>$so</option>\n"; }
 print <<END
        </select>
@@ -436,22 +437,25 @@ if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @log = reverse @log; }
 print "<p><b>$Lang::tr{'web hits'} $daystr: $lines</b></p>";
 if ($lines != 0) { &oldernewer(); }
 print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
 <tr>
-<td width='10%' align='center' class='boldbase'><b>$Lang::tr{'time'}</b></td>
-<td width='15%' align='center' class='boldbase'><b>$Lang::tr{'source ip'}</b></td>
-<td width='12%' align='center' class='boldbase'><b>$Lang::tr{'advproxy NCSA username'}</b></td>
-<td width='63%' align='center' class='boldbase'><b>$Lang::tr{'website'}</b></td>
+<th width='10%' align='center' class='boldbase'><b>$Lang::tr{'time'}</b></th>
+<th width='15%' align='center' class='boldbase'><b>$Lang::tr{'source ip'}</b></th>
+<th width='12%' align='center' class='boldbase'><b>$Lang::tr{'advproxy NCSA username'}</b></th>
+<th width='63%' align='center' class='boldbase'><b>$Lang::tr{'website'}</b></th>
 </tr>
 END
 ;
 my $ll = 0;
+my $col='';
 foreach $_ (@log)
 {
        if ($ll % 2) {
-               print "<tr bgcolor='$color{'color20'}'>\n"; }
+               print "<tr>";
+               $col="bgcolor='$color{'color20'}'"; }
        else {
-               print "<tr bgcolor='$color{'color20'}'>\n"; }
+               print "<tr>";
+               $col="bgcolor='$color{'color22'}'"; }
        my ($datetime,$ip,$so,$url) = split;
         my ($SECdt, $MINdt, $HOURdt, $DAYdt, $MONTHdt, $YEARdt) = localtime($datetime);
        $SECdt = sprintf ("%.02d",$SECdt);
@@ -469,10 +473,10 @@ foreach $_ (@log)
            $DAYdt='';
        }
        print <<END
-       <td align='center'>$DAYdt$HOURdt:$MINdt:$SECdt</td>
-       <td align='center'>$ip</td>
-       <td align='center'>$so</td>
-       <td align='left'><a href='$url' title='$url' target='_new'>$part</a></td>
+       <td align='center' $col>$DAYdt$HOURdt:$MINdt:$SECdt</td>
+       <td align='center' $col>$ip</td>
+       <td align='center' $col>$so</td>
+       <td align='left' $col><a href='$url' title='$url' target='_new'>$part</a></td>
 </tr>
 END
        ;
diff --git a/html/cgi-bin/logs.cgi/showrequestfromcountry.dat b/html/cgi-bin/logs.cgi/showrequestfromcountry.dat
new file mode 100644 (file)
index 0000000..5283c42
--- /dev/null
@@ -0,0 +1,412 @@
+#!/usr/bin/perl
+# SmoothWall CGIs
+#
+# This code is distributed under the terms of the GPL
+#
+# JC HERITIER 
+# page inspired from the initial firewalllog.dat
+#
+# Modified for IPFire by Christian Schmidt (www.ipfire.org)
+
+# enable only the following on debugging purpose
+#use warnings;
+#use CGI::Carp 'fatalsToBrowser';
+
+#use strict;
+use Geo::IP::PurePerl;
+
+require '/var/ipfire/general-functions.pl';
+require "${General::swroot}/lang.pl";
+require "${General::swroot}/header.pl";
+
+use POSIX();
+
+#workaround to suppress a warning when a variable is used only once
+my @dummy = ( ${Header::table2colour} );
+undef (@dummy);
+
+my %cgiparams=();
+my %logsettings=();
+my $errormessage = '';
+
+my @shortmonths = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
+       'Sep', 'Oct', 'Nov', 'Dec' );
+my @longmonths = ( $Lang::tr{'january'}, $Lang::tr{'february'}, $Lang::tr{'march'},
+       $Lang::tr{'april'}, $Lang::tr{'may'}, $Lang::tr{'june'}, $Lang::tr{'july'}, $Lang::tr{'august'},
+       $Lang::tr{'september'}, $Lang::tr{'october'}, $Lang::tr{'november'},
+       $Lang::tr{'december'} );
+
+my @now = localtime();
+my $dow = $now[6];
+my $doy = $now[7];
+my $tdoy = $now[7];
+my $year = $now[5]+1900;
+
+$cgiparams{'DAY'} = $now[3];
+$cgiparams{'MONTH'} = $now[4];
+$cgiparams{'ACTION'} = '';
+
+&Header::getcgihash(\%cgiparams);
+
+$logsettings{'LOGVIEW_REVERSE'} = 'off';
+&General::readhash("${General::swroot}/logging/settings", \%logsettings);
+
+my $start = -1;
+if ($ENV{'QUERY_STRING'} && $cgiparams{'ACTION'} ne $Lang::tr{'update'})
+{
+       my @temp = split(',',$ENV{'QUERY_STRING'});
+       $start = $temp[0];
+       $cgiparams{'MONTH'} = $temp[1];
+       $cgiparams{'DAY'} = $temp[2];
+       $cgiparams{country} = $temp[3];
+}
+
+if (!($cgiparams{'MONTH'} =~ /^(0|1|2|3|4|5|6|7|8|9|10|11)$/) ||
+       !($cgiparams{'DAY'} =~ /^(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)$/))
+{
+       $cgiparams{'DAY'} = $now[3];
+       $cgiparams{'MONTH'} = $now[4];
+}
+elsif($cgiparams{'ACTION'} eq '>>')
+{
+        my @temp_then=();
+        my @temp_now = localtime(time);
+        $temp_now[4] = $cgiparams{'MONTH'};
+        $temp_now[3] = $cgiparams{'DAY'};
+        @temp_then = localtime(POSIX::mktime(@temp_now) + 86400);
+           ## Retrieve the same time on the next day -
+           ## 86400 seconds in a day
+        $cgiparams{'MONTH'} = $temp_then[4];
+        $cgiparams{'DAY'} = $temp_then[3];
+}
+elsif($cgiparams{'ACTION'} eq '<<')
+{
+        my @temp_then=();
+        my @temp_now = localtime(time);
+        $temp_now[4] = $cgiparams{'MONTH'};
+        $temp_now[3] = $cgiparams{'DAY'};
+        @temp_then = localtime(POSIX::mktime(@temp_now) - 86400);
+           ## Retrieve the same time on the previous day -
+           ## 86400 seconds in a day
+        $cgiparams{'MONTH'} = $temp_then[4];
+        $cgiparams{'DAY'} = $temp_then[3];
+}
+
+if (($cgiparams{'DAY'} ne $now[3]) || ($cgiparams{'MONTH'} ne $now[4]))
+{
+        my @then = ();
+        if ( (  $cgiparams{'MONTH'} eq $now[4]) && ($cgiparams{'DAY'} > $now[3]) ||
+                        ( $cgiparams{'MONTH'} > $now[4] ) ) {
+                @then = localtime(POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1901 ));
+        } else {
+                @then = localtime(POSIX::mktime( 0, 0, 0, $cgiparams{'DAY'}, $cgiparams{'MONTH'}, $year - 1900 ));
+        }
+        $tdoy = $then[7];
+        my $lastleap=($year-1)%4;
+        if ($tdoy>$doy) {
+                if ($lastleap == 0 && $tdoy < 60) {
+                        $doy=$tdoy+366;
+                } else {
+                        $doy=$doy+365;
+                }
+        }
+}
+my $datediff=0;
+my $dowd=0;
+my $multifile=0;
+if ($tdoy ne $doy) {
+        $datediff=int(($doy-$tdoy)/7);
+        $dowd=($doy-$tdoy)%7;
+        if (($dow-$dowd)<1) {
+                $datediff=$datediff+1;
+        }
+        if (($dow-$dowd)==0) {
+                $multifile=1;
+        }
+}
+
+my $monthstr = $shortmonths[$cgiparams{'MONTH'}];
+my $longmonthstr = $longmonths[$cgiparams{'MONTH'}];
+my $day = $cgiparams{'DAY'};
+my $daystr='';
+if ($day <= 9) {
+       $daystr = " $day"; }
+else {
+       $daystr = $day;
+}
+
+my $skip=0;
+my $filestr='';
+if ($datediff==0) {
+        $filestr="/var/log/messages";
+} else {
+       $filestr="/var/log/messages.$datediff";
+       $filestr = "$filestr.gz" if -f "$filestr.gz";
+}
+
+if (!(open (FILE,($filestr =~ /.gz$/ ? "gzip -dc $filestr |" : $filestr)))) {
+        $errormessage = "$Lang::tr{'date not in logs'}: $filestr $Lang::tr{'could not be opened'}";
+        $skip=1;
+        # Note: This is in case the log does not exist for that date
+}
+my $lines = 0;
+my @log=();
+my $country = $cgiparams{country};
+my $gi = Geo::IP::PurePerl->new();
+
+if (!$skip)
+{
+    while (<FILE>)
+    {
+               if (/(^${monthstr} ${daystr} ..:..:..) [\w\-]+ kernel:.*(IN=.*)$/) {
+            my $packet = $2;
+            $packet =~ /IN=(\w+)/;       my $iface=$1; if ( $1 =~ /2./ ){ $iface="";}
+            $packet =~ /SRC=([\d\.]+)/;  my $srcaddr=$1;
+
+            if($iface eq $country) {
+                $log[$lines] = $_;
+                $lines++;
+            }
+            elsif($srcaddr ne '') {
+                my $ccode = $gi->country_code_by_name($srcaddr);
+                if($ccode eq $country){
+                    $log[$lines] = $_;
+                    $lines++;
+                }
+            }
+               }
+       }
+       close (FILE);   
+}
+
+$skip=0;
+if ($multifile) {
+        $datediff=$datediff-1;
+        if ($datediff==0) {
+                $filestr="/var/log/messages";
+        } else {
+                $filestr="/var/log/messages.$datediff";
+                $filestr = "$filestr.gz" if -f "$filestr.gz";
+        }
+        if (!(open (FILE,($filestr =~ /.gz$/ ? "gzip -dc $filestr |" : $filestr)))) {
+                $errormessage="$Lang::tr{'date not in logs'}: $filestr $Lang::tr{'could not be opened'}";
+                $skip=1;
+        }
+        if (!$skip) {
+               while (<FILE>) {
+                       if (/(^${monthstr} ${daystr} ..:..:..) [\w\-]+ kernel:.*(IN=.*)$/) {
+                if($_ =~  /SRC\=([\d\.]+)/){
+                    my $srcaddr=$1;
+                    my $ccode = $gi->country_code_by_name($srcaddr);
+                    if($ccode eq $country){
+                        $log[$lines] = $_;
+                        $lines++;
+                    }
+                }
+                       }
+               }
+               close (FILE);
+       }
+}
+
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'firewall log'}, 1, '');
+&Header::openbigbox('100%', 'left', '', $errormessage);
+
+if ($errormessage) {
+       &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
+       print "<font class='base'>$errormessage&nbsp;</font>\n";
+       &Header::closebox();
+}
+
+&Header::openbox('100%', 'left', "$Lang::tr{'settings'}:");
+
+print <<END
+<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+<table width='100%'>
+<tr>
+       <td width='10%' class='base'>$Lang::tr{'month'}:&nbsp;</td>
+       <td width='10%'>
+       <select name='MONTH'>
+END
+;
+my $month;
+for ($month = 0; $month < 12; $month++)
+{
+       print "\t<option ";
+       if ($month == $cgiparams{'MONTH'}) {
+               print "selected='selected' "; }
+       print "value='$month'>$longmonths[$month]</option>\n";
+}
+print <<END
+       </select>
+       </td>
+       <td width='10%' class='base' align='right'>&nbsp;$Lang::tr{'day'}:&nbsp;</td>
+       <td width='40%'>
+       <select name='DAY'>
+END
+;
+for ($day = 1; $day <= 31; $day++) 
+{
+       print "\t<option ";
+       if ($day == $cgiparams{'DAY'}) {
+               print "selected='selected' "; }
+       print "value='$day'>$day</option>\n";
+}
+print <<END
+</select>
+</td>
+<td width='5%'  align='center'><input type='submit' name='ACTION' title='$Lang::tr{'day before'}' value='&lt;&lt;' /></td>
+<td width='5%'  align='center'><input type='submit' name='ACTION' title='$Lang::tr{'day after'}' value='&gt;&gt;' /></td>
+<td width='10%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'update'}' /></td>
+<tr><td width='15%'>$Lang::tr{'source ip country'}</td><td><input type='text' name='country' value='$cgiparams{country}'size='15'></td></tr>
+</tr>
+</table>
+</form>
+END
+;
+
+&Header::closebox();
+
+&Header::openbox('100%', 'left', $Lang::tr{'firewall log'});
+print "<p><b>$Lang::tr{'firewall hits'} $longmonthstr $daystr: $lines</b></p>";
+
+if ($start == -1) {
+        $start = $lines - ${Header::viewsize}; }
+if ($start >= $lines - ${Header::viewsize}) { $start = $lines - ${Header::viewsize}; };
+if ($start < 0) { $start = 0; }
+
+my $prev = $start - ${Header::viewsize};
+my $next = $start + ${Header::viewsize};
+
+if ($prev < 0) { $prev = 0; }
+if ($next >= $lines) { $next = -1 }
+if ($start == 0) { $prev = -1; }
+
+if ($lines != 0) { &oldernewer(); }
+
+print <<END
+<table width='100%'>
+<tr>
+<td width='10%' align='center' class='boldbase'><b>$Lang::tr{'time'}</b></td>
+<td width='13%' align='center' class='boldbase'><b>$Lang::tr{'chain'}</b></td>
+<td width='5%' align='center' class='boldbase'><b>$Lang::tr{'iface'}</b></td>
+<td width='5%' align='center' class='boldbase'><b>$Lang::tr{'proto'}</b></td>
+<td width='16%' align='center' class='boldbase'><b>$Lang::tr{'source'}</b></td>
+<td width='10%' align='center' class='boldbase'><b>$Lang::tr{'src port'}</b></td>
+<td width='16%' align='center' class='boldbase'><b>$Lang::tr{'destination'}</b></td>
+<td width='16%' align='center' class='boldbase'><b>$Lang::tr{'dst port'}</b></td>
+</tr>
+END
+;
+
+my @slice = splice(@log, $start, ${Header::viewsize});
+
+if ($logsettings{'LOGVIEW_REVERSE'} eq 'on') { @slice = reverse @slice; }
+
+$lines = 0;
+foreach $_ (@slice)
+{
+  $a = $_;
+  /^... (..) (..:..:..) [\w\-]+ kernel:(.*)(IN=.*)$/;
+  my $packet = $4;
+  $packet =~ /IN=(\w+)/;       my $iface=$1; if ( $1 =~ /2./ ){ $iface="";}
+  $packet =~ /SRC=([\d\.]+)/;  my $srcaddr=$1;
+
+  if($iface eq $country || $srcaddr ne '') {
+    my $ccode;
+    if($iface ne $country) {
+      $ccode = $gi->country_code_by_name($srcaddr);
+    }
+    if($iface eq $country || $ccode eq $country) {
+         my $chain = '';
+      my $in = '-'; my $out = '-';
+      my $srcaddr = ''; my $dstaddr = '';
+      my $protostr = '';
+      my $srcport = ''; my $dstport = '';
+
+      $_ =~ /(^.* ..:..:..) [\w\-]+ kernel:(.*)(IN=.*)$/;
+      my $timestamp = $1; my $chain = $2; my $packet = $3;
+      $timestamp =~ /(...) (..) (..:..:..)/;
+      my $month = $1; my $day = $2; my $time = $3;
+
+      if ($a =~ /IN\=(\w+)/) { $iface = $1; }
+      if ($a =~ /OUT\=(\w+)/) { $out = $1; }
+      if ($a =~ /SRC\=([\d\.]+)/) { $srcaddr = $1; }
+      if ($a =~ /DST\=([\d\.]+)/) { $dstaddr = $1; }
+      if ($a =~ /PROTO\=(\w+)/) { $protostr = $1; }
+      my $protostrlc = lc($protostr);
+      if ($a =~  /SPT\=([\d\.]+)/){ $srcport = $1; }
+      if ($a =~  /DPT\=([\d\.]+)/){ $dstport = $1; }
+
+      if ($lines % 2) {
+        print "<tr bgcolor='${Header::table1colour}'>\n"; }
+      else {
+        print "<tr bgcolor='${Header::table2colour}'>\n"; }
+      print <<END
+      <td align='center'>$time</td>
+      <td align='center'>$chain</td>
+      <td align='center'>$iface</td>
+      <td align='center'>$protostr</td>
+      <td align='center'>
+      <table width='100%' cellpadding='0' cellspacing='0'><tr>
+      <td align='center'><a href='/cgi-bin/ipinfo.cgi?ip=$srcaddr'>$srcaddr</a></td>
+      </tr></table>
+      </td>
+      <td align='center'>$srcport</td>
+      <td align='center'>
+      <table width='100%' cellpadding='0' cellspacing='0'><tr>
+      <td align='center'><a href='/cgi-bin/ipinfo.cgi?ip=$dstaddr'>$dstaddr</a></td>
+      </tr></table>
+      </td>
+      <td align='center'>$dstport</td>
+      </tr>
+END
+       ;
+      $lines++;
+    }
+  }
+}
+
+print <<END
+</table>
+END
+;
+
+&oldernewer();
+
+&Header::closebox();
+
+&Header::closebigbox();
+
+&Header::closepage();
+
+sub oldernewer
+{
+  print <<END
+  <table width='100%'>
+  <tr>
+END
+;
+
+  print "<td align='center' width='50%'>";
+  if ($prev != -1) {
+    print "<a href='/cgi-bin/logs.cgi/showrequestfromcountry.dat?$prev,$cgiparams{'MONTH'},$cgiparams{'DAY'},$cgiparams{country}'>$Lang::tr{'older'}</a>"; }
+  else {
+    print "$Lang::tr{'older'}"; }
+  print "</td>\n";
+
+  print "<td align='center' width='50%'>";
+  if ($next != -1) {
+    print "<a href='/cgi-bin/logs.cgi/showrequestfromcountry.dat?$next,$cgiparams{'MONTH'},$cgiparams{'DAY'},$cgiparams{country}'>$Lang::tr{'newer'}</a>"; }
+  else {
+   print "$Lang::tr{'newer'}"; }
+  print "</td>\n";
+
+print <<END
+  </tr>
+  </table>
+END
+;
+}
+
index 7aa5c0552f6344a11b4423cb15b793ea8b577f61..09a60b519bc1fb6ad20bea38253775ea023b32d5 100644 (file)
@@ -271,17 +271,17 @@ if ($start == 0) { $prev = -1; }
 if ($lines != 0) { &oldernewer(); }
 
 print <<END
-<TABLE WIDTH='100%'>
-<TR>
-<TD WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'time'}</B></TD>
-<TD WIDTH='13%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'chain'}</B></TD>
-<TD WIDTH='5%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'iface'}</B></TD>
-<TD WIDTH='5%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'proto'}</B></TD>
-<TD WIDTH='16%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'source'}</B></TD>
-<TD WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'src port'}</B></TD>
-<TD WIDTH='16%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'destination'}</B></TD>
-<TD WIDTH='16%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'dst port'}</B></TD>
-</TR>
+<table width='100%'>
+<tr>
+<td width='10%' align='center' class='boldbase'><b>$Lang::tr{'time'}</b></td>
+<td width='13%' align='center' class='boldbase'><b>$Lang::tr{'chain'}</b></td>
+<td width='5%' align='center' class='boldbase'><b>$Lang::tr{'iface'}</b></td>
+<td width='5%' align='center' class='boldbase'><b>$Lang::tr{'proto'}</b></td>
+<td width='16%' align='center' class='boldbase'><b>$Lang::tr{'source'}</b></td>
+<td width='10%' align='center' class='boldbase'><b>$Lang::tr{'src port'}</b></td>
+<td width='16%' align='center' class='boldbase'><b>$Lang::tr{'destination'}</b></td>
+<td width='16%' align='center' class='boldbase'><b>$Lang::tr{'dst port'}</b></td>
+</tr>
 END
 ;
 
@@ -320,23 +320,23 @@ foreach $_ (@slice)
        else {
                print "<tr bgcolor='${Header::table2colour}'>\n"; }
        print <<END
-       <TD ALIGN='CENTER'>$time</TD>
-       <TD ALIGN='CENTER'>$chain</TD>
-       <TD ALIGN='CENTER'>$iface</TD>
-       <TD ALIGN='CENTER'>$protostr</TD>
+       <td align='center'>$time</td>
+       <td align='center'>$chain</td>
+       <td align='center'>$iface</td>
+       <td align='center'>$protostr</td>
        <td align='center'>
        <table width='100%' cellpadding='0' cellspacing='0'><tr>
        <td align='center'><a href='/cgi-bin/ipinfo.cgi?ip=$srcaddr'>$srcaddr</a></td>
        </tr></table>
        </td>
-       <TD ALIGN='CENTER'>$srcport</TD>
+       <td align='center'>$srcport</td>
        <td align='center'>
        <table width='100%' cellpadding='0' cellspacing='0'><tr>
        <td align='center'><a href='/cgi-bin/ipinfo.cgi?ip=$dstaddr'>$dstaddr</a></td>
        </tr></table>
        </td>
-       <TD ALIGN='CENTER'>$dstport</TD>
-</TR>
+       <td align='center'>$dstport</td>
+</tr>
 END
        ;
        $lines++;
@@ -345,7 +345,7 @@ END
 }
 
 print <<END
-</TABLE>
+</table>
 END
 ;
 
index ee1d2eb010a45e367a6cc5a8969a7a9ee69f3746..ad9823cde7fc0183d49b901ce04ccac368b065be 100644 (file)
@@ -278,17 +278,17 @@ if ($start == 0) { $prev = -1; }
 if ($lines != 0) { &oldernewer(); }
 
 print <<END
-<TABLE WIDTH='100%'>
-<TR>
-<TD WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'time'}</B></TD>
-<TD WIDTH='5%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'chain'}</B></TD>
-<TD WIDTH='5%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'iface'}</B></TD>
-<TD WIDTH='5%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'proto'}</B></TD>
-<TD WIDTH='20%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'source'}</B></TD>
-<TD WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'src port'}</B></TD>
-<TD WIDTH='20%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'destination'}</B></TD>
-<TD WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'><B>$Lang::tr{'dst port'}</B></TD>
-</TR>
+<table width='100%'>
+<tr>
+<td width='10%' align='center' class='boldbase'><b>$Lang::tr{'time'}</b></td>
+<td width='5%' align='center' class='boldbase'><b>$Lang::tr{'chain'}</b></td>
+<td width='5%' align='center' class='boldbase'><b>$Lang::tr{'iface'}</b></td>
+<td width='5%' align='center' class='boldbase'><b>$Lang::tr{'proto'}</b></td>
+<td width='20%' align='center' class='boldbase'><b>$Lang::tr{'source'}</b></td>
+<td width='10%' align='center' class='boldbase'><b>$Lang::tr{'src port'}</b></td>
+<td width='20%' align='center' class='boldbase'><b>$Lang::tr{'destination'}</b></td>
+<td width='10%' align='center' class='boldbase'><b>$Lang::tr{'dst port'}</b></td>
+</rt>
 END
 ;
 my @slice = splice(@log, $start, ${Header::viewsize});
@@ -326,23 +326,23 @@ foreach $_ (@slice)
        else {
                print "<tr bgcolor='${Header::table2colour}'>\n"; }
        print <<END
-       <TD ALIGN='CENTER'>$time</TD>
-       <TD ALIGN='CENTER'>$chain</TD>
-       <TD ALIGN='CENTER'>$iface</TD>
-       <TD ALIGN='CENTER'>$protostr</TD>
+       <td align='center'>$time</td>
+       <td align='center'>$chain</td>
+       <td align='center'>$iface</td>
+       <td align='center'>$protostr</td>
        <td align='center'>
        <table width='100%' cellpadding='0' cellspacing='0'><tr>
        <td align='center'><a href='/cgi-bin/ipinfo.cgi?ip=$srcaddr'>$srcaddr</a></td>
        </tr></table>
        </td>
-       <TD ALIGN='CENTER'>$srcport</TD>
+       <td align='center'>$srcport</td>
        <td align='center'>
        <table width='100%' cellpadding='0' cellspacing='0'><tr>
        <td align='center'><a href='/cgi-bin/ipinfo.cgi?ip=$dstaddr'>$dstaddr</a></td>
        </tr></table>
        </td>
-       <TD ALIGN='CENTER'>$dstport</TD>
-</TR>
+       <td align='center'>$dstport</td>
+</tr>
 END
        ;
        $lines++;
@@ -351,7 +351,7 @@ END
 }
 
 print <<END
-</TABLE>
+</table>
 END
 ;
 
index 7fb2ff9c4f4b97f1be4a7c39d21e2c3b05433094..ce642e1cb539732029e409375f78ca9392aadc5e 100644 (file)
@@ -309,18 +309,19 @@ if ($lines)
 
        $lines = 0;
 
-       print "<table width='100%'>\n";
+       print "<table width='100%' class='tbl'>";
        unless ($cgiparams{'LOGTYPE'} eq 'squidGuard')
        {
                print "<tr>\n";
-               print "<td align='center'><b>$Lang::tr{'urlfilter time'}</b></td>\n";
-               print "<td align='center'><b>$Lang::tr{'urlfilter category'}</b></td>\n";
-               print "<td align='center'><b>$Lang::tr{'urlfilter client'}</b></td>\n";
-               if ($filtersettings{'ENABLE_USERNAME_LOG'} eq 'on') { print "<td align='center'><b>$Lang::tr{'urlfilter username'}</b></td>\n"; }
-               print "<td align='center'><b>$Lang::tr{'urlfilter dst'}</b></td>\n";
+               print "<th align='center'><b>$Lang::tr{'urlfilter time'}</b></th>\n";
+               print "<th align='center'><b>$Lang::tr{'urlfilter category'}</b></th>\n";
+               print "<th align='center'><b>$Lang::tr{'urlfilter client'}</b></th>\n";
+               if ($filtersettings{'ENABLE_USERNAME_LOG'} eq 'on') { print "<th align='center'><b>$Lang::tr{'urlfilter username'}</b></th>\n"; }
+               print "<th align='center'><b>$Lang::tr{'urlfilter dst'}</b></th>\n";
                print "</tr>\n";
        }
 
+       my $col="";
        foreach (@slice)
        {
                undef $attr1; undef $attr2;
@@ -336,17 +337,23 @@ if ($lines)
                        if (@loginfo[2] =~ /emergency/) { $attr1 .= "<b><font color='$Header::colourerr'>"; $attr2 .= "</font></b>"; }
                        print "<tr>\n";
                } else {
-                       if ($lines % 2) { print "<tr bgcolor='$color{'color20'}'>\n"; } else { print "<tr bgcolor='$color{'color22'}'>\n"; } 
+                       if ($lines % 2) {
+                               print "<tr>";
+                               $col="bgcolor='$color{'color22'}'";
+                       }else {
+                               print "<tr>";
+                               $col="bgcolor='$color{'color20'}'";
+                       }
                }
                if ($cgiparams{'LOGTYPE'} eq 'squidGuard') {
-                       print "<td nowrap>$time &nbsp; $pid &nbsp; $attr1@loginfo$attr2</td>\n";
+                       print "<td nowrap $col>$time &nbsp; $pid &nbsp; $attr1@loginfo$attr2</td>\n";
                } else {
-                       print "<td width='10%' align='center' nowrap>$time</td>\n";
-                       print "<td width='11%' align='center' nowrap>$category[1]</td>\n";
-                       print "<td width='15%' align='center' nowrap>$ip[0]</td>\n";
+                       print "<td width='10%' align='center' nowrap $col>$time</td>\n";
+                       print "<td width='11%' align='center' nowrap $col>$category[1]</td>\n";
+                       print "<td width='15%' align='center' nowrap $col>$ip[0]</td>\n";
                        if ($filtersettings{'ENABLE_USERNAME_LOG'} eq 'on')
                        {
-                               print "<td width='12%' align='center' nowrap>$loginfo[3]</td>\n";
+                               print "<td width='12%' align='center' nowrap $col>$loginfo[3]</td>\n";
                                $site = substr($dsturl,0,55);
                                if (length($dsturl) > 55) { $site .= "..."; }
                        } else {
@@ -354,7 +361,7 @@ if ($lines)
                                if (length($dsturl) > 69) { $site .= "..."; }
                        }
                        #print "<td>$site</td>\n";
-                       print "<td><a href='$dsturl' title='$dsturl' target='_blank'>$site</a></td>\n";
+                       print "<td $col><a href='$dsturl' title='$dsturl' target='_blank'>$site</a></td>\n";
                }
                print "</tr>\n";
        }
index f95c0d802623f7e549d084fd19db5e2e5bb0d89e..1d3436320c765ac45a68a6bc3bd6f767872bcfd9 100644 (file)
@@ -192,10 +192,11 @@ END
 print <<END    
   </tr>
     <tr>
-    <td colspan="2"><hr /></td>
+    <td colspan="2"><br><hr /></td>
   </tr>
   <tr>
-    <td colspan="2"><div align="center">
+    <td align='left'><img src='/blob.gif' alt='*' />&nbsp;$Lang::tr{'this field may be blank'}</td><div align="right"></td>
+    <td align='right'>
 END
 ;
 if ($macsettings{'ACTION'} eq $Lang::tr{'delete'} ) {
@@ -232,11 +233,6 @@ END
 print <<END
     </div></td>
   </tr>
-  <tr>
-    <td colspan="2"align='left'>
-        <img src='/blob.gif' alt='*' />&nbsp;$Lang::tr{'this field may be blank'}</td>
-  </tr>
-
 </table>
 
 END
index 35c7debf8ec27a89d1f943602393ea46df250013..e22856f1f88130d94eaa0b46dbc3836807048f19 100644 (file)
@@ -41,7 +41,7 @@ my %mainsettings = ();
 
 &Header::openbox('100%', 'left',"MD Raid State");
 
-print '<textarea rows="25" cols="80" readonly="true">';
+print '<textarea rows="25" cols="80" readonly="readonly">';
 print `cat "/proc/mdstat"`;
 print '</textarea>';
 
index 52d9337eb857caf8482e39bc52df64593e6977ba..4c94d1c8dd8b3d6b4cf8bf111da885c109329e24 100644 (file)
@@ -152,7 +152,7 @@ END
 
        for(my $i = 1; $i <= $#iostat1; $i++){
                if ( $i eq '1' ){
-                       print "<tr><td align='center' class='boldbase'><b>Device</b></td><td align='center' class='boldbase'><b>MB read</b></td><td align='center' class='boldbase'><b>MB writen</b></td></tr>";
+                       print "<tr><td align='center' class='boldbase'><b>$Lang::tr{'device'}</b></td><td align='center' class='boldbase'><b>$Lang::tr{'MB read'}</b></td><td align='center' class='boldbase'><b>$Lang::tr{'MB written'}</b></td></tr>";
                }else{
                        print "<tr><td align='center'>$iostat1[$i]</td><td align='center'>$iostat2[$i]</td><td align='center'>$iostat3[$i]</td></tr>";
                }
@@ -206,9 +206,9 @@ sub diskbox {
 
                if ( $status[1]=~/standby/){
                        my $ftime = localtime((stat("/var/run/hddshutdown-$disk"))[9]);
-                       print"<B>Disk $disk status:<font color=#FF0000>".$status[1]."</font></B> (since $ftime)";
+                       print"<b>Disk $disk status:<span style='color:#FF0000'>".$status[1]."</b> ($Lang::tr{'since'} $ftime)";
                }else{
-                       print"<B>Disk $disk status:<font color=#00FF00>".$status[1]."</font></B>";
+                       print"<b>Disk $disk status:<span style='color:#00FF00'>".$status[1]."</b>";
                }
        }
 
@@ -217,7 +217,7 @@ sub diskbox {
        print <<END
 <br /><input type="button" onClick="swapVisibility('smart_$disk')" value="$Lang::tr{'smart information'}" />
 <div id='smart_$disk' style='display: none'>
-       <hr /><table border=0><tr><td align=left><pre>$smart</pre></table>
+       <hr /><table border='0'><tr><td align='left'><pre>$smart</pre></table>
 </div>
 END
 ;
diff --git a/html/cgi-bin/modem-status.cgi b/html/cgi-bin/modem-status.cgi
new file mode 100644 (file)
index 0000000..2d33a3d
--- /dev/null
@@ -0,0 +1,211 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2014  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/>.       #
+#                                                                             #
+###############################################################################
+
+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";
+require "${General::swroot}/modem-lib.pl";
+
+my $modem;
+my %ethsettings = {};
+my %pppsettings = {};
+
+&General::readhash("${General::swroot}/ethernet/settings", \%ethsettings);
+
+if ($ethsettings{"RED_TYPE"} eq "PPPOE") {
+       &General::readhash("${General::swroot}/ppp/settings", \%pppsettings);
+
+       # Establish the connection to the modem.
+       my $port = $pppsettings{'MONPORT'};
+       if ($port) {
+               $port = "/dev/$port";
+               $modem = Modem->new($port, $pppsettings{"DTERATE"});
+       }
+}
+
+&Header::showhttpheaders();
+&Header::openpage($Lang::tr{'modem information'}, 1, '');
+&Header::openbigbox('100%', 'left');
+
+if ($modem) {
+       &Header::openbox("100%", "center", $Lang::tr{'modem hardware details'});
+
+       print <<END;
+               <table width="100%">
+                       <tbody>
+END
+
+       my $vendor = $modem->get_vendor();
+       if ($vendor) {
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'vendor'}</td>
+                               <td>$vendor</td>
+                       </tr>
+END
+       }
+
+       my $model = $modem->get_model();
+       if ($model) {
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'model'}</td>
+                               <td>$model</td>
+                       </tr>
+END
+       }
+
+       my $software_version = $modem->get_software_version();
+       if ($software_version) {
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'software version'}</td>
+                               <td>$software_version</td>
+                       </tr>
+END
+       }
+
+       my $imei = $modem->get_imei();
+       if ($imei) {
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'imei'}</td>
+                               <td>$imei</td>
+                       </tr>
+END
+       }
+
+       my @caps = $modem->get_capabilities();
+       if (@caps) {
+               my $caps_string = join(", ", @caps);
+
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'capabilities'}</td>
+                               <td>$caps_string</td>
+                       </tr>
+END
+       }
+
+       print <<END;
+                       </tbody>
+               </table>
+END
+       &Header::closebox();
+
+
+       &Header::openbox("100%", "center", $Lang::tr{'modem sim information'});
+       print <<END;
+               <table width="100%">
+                       <tbody>
+END
+
+       my $imsi = $modem->get_sim_imsi();
+       if ($imsi) {
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'imsi'}</td>
+                               <td>$imsi</td>
+                       </tr>
+END
+       }
+
+       print <<END;
+                       </tbody>
+               </table>
+END
+       &Header::closebox();
+
+       &Header::openbox("100%", "center", $Lang::tr{'modem network information'});
+       print <<END;
+               <table width="100%">
+                       <tbody>
+END
+
+       my $network_registration = $modem->get_network_registration();
+       if ($network_registration) {
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'modem network registration'}</td>
+                               <td>$network_registration</td>
+                       </tr>
+END
+       }
+
+       my $network_operator = $modem->get_network_operator();
+       if ($network_operator) {
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'modem network operator'}</td>
+                               <td>$network_operator</td>
+                       </tr>
+END
+       }
+
+       my $network_mode = $modem->get_network_mode();
+       if ($network_mode) {
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'modem network mode'}</td>
+                               <td>$network_mode</td>
+                       </tr>
+END
+       }
+
+       my $signal_quality = $modem->get_signal_quality();
+       if ($signal_quality) {
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'modem network signal quality'}</td>
+                               <td>$signal_quality dBm</td>
+                       </tr>
+END
+       }
+
+       my $bit_error_rate = $modem->get_bit_error_rate();
+       if ($bit_error_rate) {
+               print <<END;
+                       <tr>
+                               <td width="33%">$Lang::tr{'modem network bit error rate'}</td>
+                               <td>$bit_error_rate</td>
+                       </tr>
+END
+       }
+       print <<END;
+                       </tbody>
+               </table>
+END
+
+       &Header::closebox();
+} else {
+       &Header::openbox("100%", "center", $Lang::tr{'modem no connection'});
+       print "<p>$Lang::tr{'modem no connection message'}</p>";
+       &Header::closebox();
+}
+
+&Header::closebigbox();
+&Header::closepage();
index cd29d5da02cc85918a012b6d7a41f56504760f69..156ef2418c604f429f66390e9ef136aa267e1eaa 100644 (file)
@@ -83,8 +83,8 @@ if ( $querry[0] ne~ ""){
 
                        &General::readhash("${General::swroot}/dhcpc/dhcpcd-$netsettings{'RED_DEV'}.info", \%dhcpinfo);
 
-                       my $DNS1=`echo $dhcpinfo{'domain_name_servers'} | cut -f 1 -d ,`;
-                       my $DNS2=`echo $dhcpinfo{'domain_name_servers'} | cut -f 2 -d ,`;
+                       my $DNS1=`echo $dhcpinfo{'domain_name_servers'} | cut -f 1 -d " "`;
+                       my $DNS2=`echo $dhcpinfo{'domain_name_servers'} | cut -f 2 -d " "`;
 
                        my $lsetme=0;
                        my $leasetime="";
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..00fa1b45a253c7637805b357e9314e7d184ff2b0 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,8 +97,23 @@ $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'});
+&Header::openbox('100%', 'center',);
 print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>";
 
 print <<END
@@ -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>
+<table width='100%' cellspacing='0'>
+<tr><td align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
+<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();
diff --git a/html/cgi-bin/outgoinggrp.cgi b/html/cgi-bin/outgoinggrp.cgi
deleted file mode 100644 (file)
index 1c3d695..0000000
+++ /dev/null
@@ -1,466 +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 %outgrpsettings = ();
-my %netsettings = ();
-my %selected= () ;
-my $errormessage = "";
-
-my $configpath = "/var/ipfire/outgoing/groups/";
-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
-$outgrpsettings{'ACTION'} = '';
-$outgrpsettings{'ipgroup'} = 'none';
-$outgrpsettings{'macgroup'} = 'none';
-
-&Header::getcgihash(\%outgrpsettings);
-delete $outgrpsettings{'__CGI__'};delete $outgrpsettings{'x'};delete $outgrpsettings{'y'};
-
-$selected{'ipgroup'}{$outgrpsettings{'ipgroup'}} = "selected='selected'";
-$selected{'macgroup'}{$outgrpsettings{'macgroup'}} = "selected='selected'";
-
-&Header::openpage($Lang::tr{'outgoing firewall groups'}, 1, '');
-&Header::openbigbox('100%', 'left', '', $errormessage);
-
-###############
-# DEBUG DEBUG
-# &Header::openbox('100%', 'left', 'DEBUG');
-# my $debugCount = 0;
-# foreach my $line (sort keys %outgrpsettings) {
-# print "$line = $outgrpsettings{$line}<br />\n";
-# $debugCount++;
-# }
-# print "Count: $debugCount\n";
-# &Header::closebox();
-# DEBUG DEBUG
-###############
-
-############################################################################################################################
-############################################################################################################################
-
-if ($outgrpsettings{'ACTION'} eq 'newipgroup')
-{
-       &newipgroup();
-}elsif ($outgrpsettings{'ACTION'} eq 'editipgroup')
-{
-       &editipgroup();
-} elsif ($outgrpsettings{'ACTION'} eq 'deleteipgroup' ) {
-       unlink("$configpath/ipgroups/$outgrpsettings{'ipgroup'}");
-} elsif ($outgrpsettings{'ACTION'} eq 'addipgroup') {
-
-       if ( -e "$configpath/macgroups/$outgrpsettings{'ipgroup'}" ){
-               $errormessage =  "$Lang::tr{'outgoing firewall group error'}";
-       } elsif ( $outgrpsettings{'ipgroup'} =~ /\W/ ){
-               $errormessage = $Lang::tr{'name must only contain characters'}." - ".$outgrpsettings{'ipgroup'};
-       } elsif ( $outgrpsettings{'ipgroup'} eq "all" || $outgrpsettings{'ipgroup'} eq "red" || $outgrpsettings{'ipgroup'} eq "blue" ||
-                       $outgrpsettings{'ipgroup'} eq "green" || $outgrpsettings{'ipgroup'} eq "orange" || $outgrpsettings{'ipgroup'} eq "ip" ||
-                       $outgrpsettings{'ipgroup'} eq "mac" || $outgrpsettings{'ipgroup'} eq "ovpn" || $outgrpsettings{'ipgroup'} eq "ipsec" ) {
-               $errormessage =  "$Lang::tr{'outgoing firewall reserved groupname'}";
-       } else {
-               open (FILE, ">$configpath/ipgroups/$outgrpsettings{'ipgroup'}") or die "Can't save $outgrpsettings{'ipgroup'} settings $!";
-               $outgrpsettings{'ipgroupcontent'} =~ s/\s*$//;
-               flock (FILE, 2);
-               print FILE $outgrpsettings{'ipgroupcontent'}."\n";
-               close FILE;
-       }
-}
-
-if ($outgrpsettings{'ACTION'} eq 'newmacgroup')
-{
-       &newmacgroup();
-}elsif ($outgrpsettings{'ACTION'} eq 'editmacgroup')
-{
-       &editmacgroup();
-}elsif ($outgrpsettings{'ACTION'} eq 'deletemacgroup' ) {
-       unlink("$configpath/macgroups/$outgrpsettings{'macgroup'}");
-} elsif ($outgrpsettings{'ACTION'} eq 'addmacgroup') {
-
-       if ( -e "$configpath/ipgroups/$outgrpsettings{'macgroup'}" ){
-               $errormessage =  "$Lang::tr{'outgoing firewall group error'}";
-       } elsif ( $outgrpsettings{'macgroup'} =~ /\W/ ){
-               $errormessage = $Lang::tr{'name must only contain characters'}." - ".$outgrpsettings{'macgroup'};
-       } elsif ( $outgrpsettings{'macgroup'} eq "all" || $outgrpsettings{'macgroup'} eq "red" || $outgrpsettings{'macgroup'} eq "blue" ||
-                       $outgrpsettings{'macgroup'} eq "green" || $outgrpsettings{'macgroup'} eq "orange" || $outgrpsettings{'macgroup'} eq "ip" ||
-                       $outgrpsettings{'macgroup'} eq "mac" || $outgrpsettings{'macgroup'} eq "ovpn" || $outgrpsettings{'macgroup'} eq "ipsec" ) {
-               $errormessage =  "$Lang::tr{'outgoing firewall reserved groupname'}";
-       } else {
-               open (FILE, ">$configpath/macgroups/$outgrpsettings{'macgroup'}") or die "Can't save $outgrpsettings{'macgroup'} settings $!";
-               $outgrpsettings{'macgroupcontent'} =~ s/\s*$//;
-               flock (FILE, 2);
-               print FILE $outgrpsettings{'macgroupcontent'}."\n";
-               close FILE;
-       }
-}
-
-if ($errormessage)
-{
-       &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
-       print "<class name='base'><font color=red>$errormessage\n</font>";
-       print "&nbsp;</class>\n";
-       &Header::closebox();
-}
-
-############################################################################################################################
-############################################################################################################################
-
-my @ipgroups = qx(ls $configpath/ipgroups/);
-if ($outgrpsettings{'ipgroup'} eq "none" and $#ipgroups >= 0 ){ $outgrpsettings{'ipgroup'} = $ipgroups[0];}
-
-my $ipgroupcontent = `cat $configpath/ipgroups/$outgrpsettings{'ipgroup'} 2>/dev/null`;
-$ipgroupcontent =~ s/\n/<br \/>/g;
-
-&Header::openbox('100%', 'center', $Lang::tr{'outgoing firewall ip groups'});
-
-print <<END
-<a name="outgoing showipgroup"></a>
-<br />
-<form method='post' action='$ENV{'SCRIPT_NAME'}#outgoing showipgroup'>
-<table width='95%' cellspacing='0'>
-       <tr>
-               <td bgcolor='$color{'color20'}' colspan='3' align='left'><b>$Lang::tr{'outgoing firewall ip groups'}</b></td>
-       </tr>
-       <tr>
-               <td colspan='3'  align='left'><br /></td>
-       </tr>
-       <tr>
-               <td  align='left' colspan='2'><select name='ipgroup' style="width: 200px">
-END
-;
-foreach my $member (@ipgroups) {chomp $member;print"                   <option value='$member' $selected{'ipgroup'}{$member}>$member</option>\n";}
-print <<END
-               </select></td>
-               <td  align='left'>
-                               <input type='hidden' name='ACTION' value='showipgroup' />
-                               <input type='image' alt='$Lang::tr{'outgoing firewall view group'}' title='$Lang::tr{'outgoing firewall view group'}' src='/images/format-justify-fill.png' />
-               </td>
-       </tr>
-       <tr>
-               <td colspan='3' align='left'><br /></td>
-       </tr>
-       <tr>
-               <td colspan='3' align='left'><font size=1>$ipgroupcontent</font></td>
-       </tr>
-       <tr>
-               <td colspan='3' align='left'><br /></td>
-       </tr>
-       <tr>
-               <td colspan='3' align='center'><font size=1>$Lang::tr{'outgoing firewall ip groups'} - $outgrpsettings{'ipgroup'}</font></td>
-       </tr>
-</table>
-</form>
-<table width='10%' cellspacing='0'>
-<tr>
-       <td align='center'>
-               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                       <input type='hidden' name='ACTION' value='editipgroup' />
-                       <input type='hidden' name='ipgroup' value='$outgrpsettings{'ipgroup'}' />
-                       <input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
-               </form>
-       </td>
-       <td align='center'>
-               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                       <input type='hidden' name='ACTION' value='newipgroup' />
-                       <input type='image' alt='$Lang::tr{'new'}' title='$Lang::tr{'new'}' src='/images/list-add.png' />
-               </form>
-       </td>
-       <td align='center'>
-               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                       <input type='hidden' name='ACTION' value='saveipgroup' />
-                       <input type='hidden' name='ipgroup' value='$outgrpsettings{'ipgroup'}' />
-                       <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' />
-               </form>
-       </td>
-       <td align='center'>
-               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                       <input type='hidden' name='ACTION' value='deleteipgroup' />
-                       <input type='hidden' name='ipgroup' value='$outgrpsettings{'ipgroup'}' />
-                       <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/user-trash.png' />
-               </form>
-       </td>
-</tr>
-</table>
-
-END
-;
-&Header::closebox();
-
-############################################################################################################################
-############################################################################################################################
-
-my @macgroups = qx(ls $configpath/macgroups/);
-if ($outgrpsettings{'macgroup'} eq "none" and $#macgroups >= 0 ){ $outgrpsettings{'macgroup'} = $macgroups[0];}
-
-my $macgroupcontent = `cat $configpath/macgroups/$outgrpsettings{'macgroup'} 2>/dev/null`;
-$macgroupcontent =~ s/\n/<br \/>/g;
-
-&Header::openbox('100%', 'center', $Lang::tr{'outgoing firewall mac groups'});
-
-print <<END
-<a name="outgoing showmacgroup"></a>
-<br />
-<form method='post' action='$ENV{'SCRIPT_NAME'}#outgoing showmacgroup'>
-<table width='95%' cellspacing='0'>
-       <tr>
-               <td bgcolor='$color{'color20'}' colspan='3' align='left'><b>$Lang::tr{'outgoing firewall mac groups'}</b></td>
-       </tr>
-       <tr>
-               <td colspan='3'  align='left'><br /></td>
-       </tr>
-       <tr>
-               <td  align='left' colspan='2'><select name='macgroup' style="width: 200px">
-END
-;
-foreach my $member (@macgroups) {chomp $member;print"                  <option value='$member' $selected{'macgroup'}{$member}>$member</option>\n";}
-print <<END
-               </select></td>
-               <td  align='left'>
-                               <input type='hidden' name='ACTION' value='showmacgroup' />
-                               <input type='image' alt='$Lang::tr{'outgoing firewall view group'}' title='$Lang::tr{'outgoing firewall view group'}' src='/images/format-justify-fill.png' />
-               </td>
-       </tr>
-       <tr>
-               <td colspan='3' align='left'><br /></td>
-       </tr>
-       <tr>
-               <td colspan='3' align='left'><font size=1>$macgroupcontent</font></td>
-       </tr>
-       <tr>
-               <td colspan='3' align='left'><br /></td>
-       </tr>
-       <tr>
-               <td colspan='3' align='center'><font size=1>$Lang::tr{'outgoing firewall mac groups'} - $outgrpsettings{'macgroup'}</font></td>
-       </tr>
-</table>
-</form>
-<table width='10%' cellspacing='0'>
-<tr>
-       <td align='center'>
-               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                       <input type='hidden' name='ACTION' value='editmacgroup' />
-                       <input type='hidden' name='macgroup' value='$outgrpsettings{'macgroup'}' />
-                       <input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
-               </form>
-       </td>
-       <td align='center'>
-               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                       <input type='hidden' name='ACTION' value='newmacgroup' />
-                       <input type='image' alt='$Lang::tr{'new'}' title='$Lang::tr{'new'}' src='/images/list-add.png' />
-               </form>
-       </td>
-       <td align='center'>
-               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                       <input type='hidden' name='ACTION' value='savemacgroup' />
-                       <input type='hidden' name='macgroup' value='$outgrpsettings{'macgroup'}' />
-                       <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' />
-               </form>
-       </td>
-       <td align='center'>
-               <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                       <input type='hidden' name='ACTION' value='deletemacgroup' />
-                       <input type='hidden' name='macgroup' value='$outgrpsettings{'macgroup'}' />
-                       <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/user-trash.png' />
-               </form>
-       </td>
-</tr>
-</table>
-
-END
-;
-&Header::closebox();
-
-&Header::closebigbox();
-&Header::closepage();
-
-
-############################################################################################################################
-############################################################################################################################
-
-
-sub newipgroup
-{
-       &Header::openbox('100%', 'center', $Lang::tr{'outgoing firewall add ip group'});
-
-print <<END
-       <form method='post' action='$ENV{'SCRIPT_NAME'}#outgoing showipgroup'>
-       <table width='95%' cellspacing='0'>
-               <tr>
-                       <td bgcolor='$color{'color20'}' colspan='3' align='left'><b>$Lang::tr{'outgoing firewall add ip group'}</b></td>
-               </tr>
-               <tr>
-                       <td colspan='3'  align='left'><br /></td>
-               </tr>
-               <tr>
-                       <td  align='left' colspan='2'>
-                               <input type='text' name='ipgroup' value='newipgroup' size="30" />
-                       </td>
-                       <td  align='left'>
-                               <input type='hidden' name='ACTION' value='addipgroup' />
-                               <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' />
-                       </td>
-               </tr>
-               <tr>
-                       <td  align='left' colspan='3'>
-                               <textarea name="ipgroupcontent" cols="40" rows="5" Wrap="off">192.168.1.0/24\n192.168.3.0/255.255.255.0\n192.168.0.1\n192.168.0.2\n</textarea>
-                       </td>
-               </tr>
-       </table>
-       </form>
-END
-;
-       &Header::closebox();
-       &Header::closebigbox();
-       &Header::closepage();
-       exit 0;
-}
-
-sub editipgroup
-{
-my $ipgroupcontent = `cat $configpath/ipgroups/$outgrpsettings{'ipgroup'} 2>/dev/null`;
-
-       &Header::openbox('100%', 'center', $Lang::tr{'outgoing firewall edit ip group'});
-
-print <<END
-       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-       <table width='95%' cellspacing='0'>
-               <tr>
-                       <td bgcolor='$color{'color20'}' colspan='3' align='left'><b>$Lang::tr{'outgoing firewall edit ip group'}</b></td>
-               </tr>
-               <tr>
-                       <td colspan='3'  align='left'><br /></td>
-               </tr>
-               <tr>
-                       <td  align='left' colspan='2'>
-                               <input type='text' name='ipgroup' value='$outgrpsettings{'ipgroup'}' size='30' readonly style='color:$color{'color20'}'/>
-                       </td>
-                       <td  align='left'>
-                               <input type='hidden' name='ACTION' value='addipgroup' />
-                               <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' />
-                       </td>
-               </tr>
-               <tr>
-                       <td  align='left' colspan='3'>
-                               <textarea name="ipgroupcontent" cols="40" rows="5" Wrap="off">$ipgroupcontent</textarea>
-                       </td>
-               </tr>
-       </table>
-       </form>
-END
-;
-       &Header::closebox();
-       &Header::closebigbox();
-       &Header::closepage();
-       exit 0;
-}
-
-sub newmacgroup
-{
-       &Header::openbox('100%', 'center', $Lang::tr{'outgoing firewall add mac group'});
-
-print <<END
-       <form method='post' action='$ENV{'SCRIPT_NAME'}#outgoing showmacgroup'>
-       <table width='95%' cellspacing='0'>
-               <tr>
-                       <td bgcolor='$color{'color20'}' colspan='3' align='left'><b>$Lang::tr{'outgoing firewall add mac group'}</b></td>
-               </tr>
-               <tr>
-                       <td colspan='3'  align='left'><br /></td>
-               </tr>
-               <tr>
-                       <td  align='left' colspan='2'>
-                               <input type='text' name='macgroup' value='newmacgroup' size="30" />
-                       </td>
-                       <td  align='left'>
-                               <input type='hidden' name='ACTION' value='addmacgroup' />
-                               <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' />
-                       </td>
-               </tr>
-               <tr>
-                       <td  align='left' colspan='3'>
-                               <textarea name="macgroupcontent" cols="20" rows="5" Wrap="off">00:24:F6:04:5F:2b\n14:26:36:5A:5F:2B\n</textarea>
-                       </td>
-               </tr>
-       </table>
-       </form>
-END
-;
-       &Header::closebox();
-       &Header::closebigbox();
-       &Header::closepage();
-       exit 0;
-}
-
-sub editmacgroup
-{
-my $macgroupcontent = `cat $configpath/macgroups/$outgrpsettings{'macgroup'} 2>/dev/null`;
-
-       &Header::openbox('100%', 'center', $Lang::tr{'outgoing firewall edit mac group'});
-
-print <<END
-       <form method='post' action='$ENV{'SCRIPT_NAME'}#outgoing editmacgroup'>
-       <table width='95%' cellspacing='0'>
-               <tr>
-                       <td bgcolor='$color{'color20'}' colspan='3' align='left'><b>$Lang::tr{'outgoing firewall edit mac group'}</b></td>
-               </tr>
-               <tr>
-                       <td colspan='3'  align='left'><br /></td>
-               </tr>
-               <tr>
-                       <td  align='left' colspan='2'>
-                               <input type='text' name='macgroup' value='$outgrpsettings{'macgroup'}' size='30' readonly style='color:$color{'color20'}'/>
-                       </td>
-                       <td  align='left'>
-                               <input type='hidden' name='ACTION' value='addmacgroup' />
-                               <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' />
-                       </td>
-               </tr>
-               <tr>
-                       <td  align='left' colspan='3'>
-                               <textarea name="macgroupcontent" cols="20" rows="5" Wrap="off">$macgroupcontent</textarea>
-                       </td>
-               </tr>
-       </table>
-       </form>
-END
-;
-       &Header::closebox();
-       &Header::closebigbox();
-       &Header::closepage();
-       exit 0;
-}
index a4953ffe496185991e6ecd70996160604d391258..b2ce05e97ac8f1b75ca6d972eecb39725dbe96a9 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        #
@@ -19,7 +19,7 @@
 #                                                                             #
 ###############################################################################
 ###
-# Based on IPFireCore 55
+# Based on IPFireCore 77
 ###
 use CGI;
 use CGI qw/:standard/;
@@ -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";
@@ -68,6 +69,7 @@ my $confighost="${General::swroot}/fwhosts/customhosts";
 my $configgrp="${General::swroot}/fwhosts/customgroups";
 my $customnet="${General::swroot}/fwhosts/customnetworks";
 my $name;
+my $col="";
 &General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
 $cgiparams{'ENABLED'} = 'off';
 $cgiparams{'ENABLED_BLUE'} = 'off';
@@ -78,6 +80,8 @@ $cgiparams{'COMPRESSION'} = 'off';
 $cgiparams{'ONLY_PROPOSED'} = 'off';
 $cgiparams{'ACTION'} = '';
 $cgiparams{'CA_NAME'} = '';
+$cgiparams{'DH_NAME'} = 'dh1024.pem';
+$cgiparams{'DHLENGHT'} = '';
 $cgiparams{'DHCP_DOMAIN'} = '';
 $cgiparams{'DHCP_DNS'} = '';
 $cgiparams{'DHCP_WINS'} = '';
@@ -86,6 +90,9 @@ $cgiparams{'DCOMPLZO'} = 'off';
 $cgiparams{'MSSFIX'} = '';
 $cgiparams{'number'} = '';
 $cgiparams{'PMTU_DISCOVERY'} = '';
+$cgiparams{'DCIPHER'} = '';
+$cgiparams{'DAUTH'} = '';
+$cgiparams{'TLSAUTH'} = '';
 $routes_push_file = "${General::swroot}/ovpn/routes_push";
 unless (-e $routes_push_file)    { system("touch $routes_push_file"); }
 unless (-e "${General::swroot}/ovpn/ccd.conf")    { system("touch ${General::swroot}/ovpn/ccd.conf"); }
@@ -127,21 +134,6 @@ sub sizeformat{
     return("$newsize $units[$i]");
 }
 
-sub valid_dns_host {
-       my $hostname = $_[0];
-       unless ($hostname) { return "No hostname"};
-       my $res = new Net::DNS::Resolver;
-       my $query = $res->search("$hostname");
-       if ($query) {
-               foreach my $rr ($query->answer) {
-                       ## Potential bug - we are only looking at A records:
-                       return 0 if $rr->type eq "A";
-               }
-       } else {
-               return $res->errorstring;
-       }
-}
-
 sub cleanssldatabase
 {
     if (open(FILE, ">${General::swroot}/ovpn/certs/serial")) {
@@ -181,150 +173,6 @@ sub deletebackupcert
        }
 }
 
-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);
-               }
-       }
-    }
-#    $errormessage="$KEY2 $SRC_PORT $PROTOCOL $SRC_IP";
-
-    return;
-}
-
-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 - 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
-# 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 = (81,222,445);
-       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;
-}
-
 sub writeserverconf {
     my %sovpnsettings = ();  
     my @temp = ();  
@@ -346,14 +194,14 @@ sub writeserverconf {
     print CONF "ifconfig-pool-persist /var/ipfire/ovpn/ovpn-leases.db 3600\n";
     print CONF "client-config-dir /var/ipfire/ovpn/ccd\n";
     print CONF "tls-server\n";
-    print CONF "ca /var/ipfire/ovpn/ca/cacert.pem\n";
-    print CONF "cert /var/ipfire/ovpn/certs/servercert.pem\n";
-    print CONF "key /var/ipfire/ovpn/certs/serverkey.pem\n";
-    print CONF "dh /var/ipfire/ovpn/ca/dh1024.pem\n";
+    print CONF "ca ${General::swroot}/ovpn/ca/cacert.pem\n";
+    print CONF "cert ${General::swroot}/ovpn/certs/servercert.pem\n";
+    print CONF "key ${General::swroot}/ovpn/certs/serverkey.pem\n";
+    print CONF "dh ${General::swroot}/ovpn/ca/$cgiparams{'DH_NAME'}\n";
     my @tempovpnsubnet = split("\/",$sovpnsettings{'DOVPN_SUBNET'});
     print CONF "server $tempovpnsubnet[0] $tempovpnsubnet[1]\n";
     #print CONF "push \"route $netsettings{'GREEN_NETADDRESS'} $netsettings{'GREEN_NETMASK'}\"\n";
-   
+
     # Check if we are using mssfix, fragment or mtu-disc and set the corretct mtu of 1500.
     # If we doesn't use one of them, we can use the configured mtu value.
     if ($sovpnsettings{'MSSFIX'} eq 'on') 
@@ -361,8 +209,8 @@ sub writeserverconf {
     elsif ($sovpnsettings{'FRAGMENT'} ne '' && $sovpnsettings{'DPROTOCOL'} ne 'tcp') 
        { print CONF "$sovpnsettings{'DDEVICE'}-mtu 1500\n"; }
     elsif (($sovpnsettings{'PMTU_DISCOVERY'} eq 'yes') ||
-          ($sovpnsettings{'PMTU_DISCOVERY'} eq 'maybe') ||
-          ($sovpnsettings{'PMTU_DISCOVERY'} eq 'no' ))
+       ($sovpnsettings{'PMTU_DISCOVERY'} eq 'maybe') ||
+       ($sovpnsettings{'PMTU_DISCOVERY'} eq 'no' ))
        { print CONF "$sovpnsettings{'DDEVICE'}-mtu 1500\n"; } 
     else 
        { print CONF "$sovpnsettings{'DDEVICE'}-mtu $sovpnsettings{'DMTU'}\n"; }
@@ -397,10 +245,10 @@ sub writeserverconf {
        print CONF "client-to-client\n";
     }
     if ($sovpnsettings{MSSFIX} eq 'on') {
-       print CONF "mssfix\n";
+               print CONF "mssfix\n";
     }
     if ($sovpnsettings{FRAGMENT} ne '' && $sovpnsettings{'DPROTOCOL'} ne 'tcp') {
-       print CONF "fragment $sovpnsettings{'FRAGMENT'}\n";   
+               print CONF "fragment $sovpnsettings{'FRAGMENT'}\n";
     }
 
     # Check if a valid operating mode has been choosen and use it.
@@ -416,6 +264,14 @@ sub writeserverconf {
     print CONF "status-version 1\n";
     print CONF "status /var/log/ovpnserver.log 30\n";
     print CONF "cipher $sovpnsettings{DCIPHER}\n";
+    if ($sovpnsettings{'DAUTH'} eq '') {
+        print CONF "";
+    } else {
+       print CONF "auth $sovpnsettings{'DAUTH'}\n";
+    }
+    if ($sovpnsettings{'TLSAUTH'} eq 'on') {
+       print CONF "tls-auth ${General::swroot}/ovpn/certs/ta.key\n";
+    }
     if ($sovpnsettings{DCOMPLZO} eq 'on') {
         print CONF "comp-lzo\n";
     }
@@ -440,7 +296,7 @@ sub writeserverconf {
     if ($sovpnsettings{DHCP_WINS} ne '') {
        print CONF "max-clients $sovpnsettings{MAX_CLIENTS}\n";
     }  
-    print CONF "tls-verify /var/ipfire/ovpn/verify\n";
+    print CONF "tls-verify /usr/lib/openvpn/verify\n";
     print CONF "crl-verify /var/ipfire/ovpn/crls/cacrl.pem\n";
     print CONF "user nobody\n";
     print CONF "group nobody\n";
@@ -612,7 +468,7 @@ sub getccdadresses
        my @iprange=();
        my %ccdhash=();
        &General::readhasharray("${General::swroot}/ovpn/ovpnconfig", \%ccdhash);
-       $iprange[0]=$ip1.".".$ip2.".".$ip3.".".2;
+       $iprange[0]=$ip1.".".$ip2.".".$ip3.".".($ip4+2);
        for (my $i=1;$i<=$count;$i++) {
                my $tmpip=$iprange[$i-1];
                my $stepper=$i*4;
@@ -834,6 +690,8 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'save-adv-options'}) {
     $vpnsettings{'DHCP_WINS'} = $cgiparams{'DHCP_WINS'};
     $vpnsettings{'ROUTES_PUSH'} = $cgiparams{'ROUTES_PUSH'};
     $vpnsettings{'PMTU_DISCOVERY'} = $cgiparams{'PMTU_DISCOVERY'};
+    $vpnsettings{'DAUTH'} = $cgiparams{'DAUTH'};
+    $vpnsettings{'TLSAUTH'} = $cgiparams{'TLSAUTH'};
     my @temp=();
     
     if ($cgiparams{'FRAGMENT'} eq '') {
@@ -846,6 +704,7 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'save-adv-options'}) {
                        $vpnsettings{'FRAGMENT'} = $cgiparams{'FRAGMENT'};
        }
     }
+
     if ($cgiparams{'MSSFIX'} ne 'on') {
        delete $vpnsettings{'MSSFIX'};
     } else {
@@ -950,6 +809,16 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'save-adv-options'}) {
         $errormessage = $Lang::tr{'invalid input for keepalive 1:2'};
         goto ADV_ERROR;        
     }
+    # Create ta.key for tls-auth if not presant
+    if ($cgiparams{'TLSAUTH'} eq 'on') {
+       if ( ! -e "${General::swroot}/ovpn/certs/ta.key") {
+               system('/usr/sbin/openvpn', '--genkey', '--secret', "${General::swroot}/ovpn/certs/ta.key");
+               if ($?) {
+               $errormessage = "$Lang::tr{'openssl produced an error'}: $?";
+        goto ADV_ERROR;
+               }
+       }
+    }
     
     &General::writehash("${General::swroot}/ovpn/settings", \%vpnsettings);
     &writeserverconf();#hier ok
@@ -982,7 +851,11 @@ unless(-d "${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}"){mkdir "${General
   print SERVERCONF "persist-key\n";
   print SERVERCONF "script-security 2\n";
   print SERVERCONF "# IP/DNS for remote Server Gateway\n"; 
+
+  if ($cgiparams{'REMOTE'} ne '') {
   print SERVERCONF "remote $cgiparams{'REMOTE'}\n";
+  }
+
   print SERVERCONF "float\n";
   print SERVERCONF "# IP adresses of the VPN Subnet\n"; 
   print SERVERCONF "ifconfig $ovsubnet.1 $ovsubnet.2\n"; 
@@ -1024,9 +897,15 @@ unless(-d "${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}"){mkdir "${General
   print SERVERCONF "ca ${General::swroot}/ovpn/ca/cacert.pem\n"; 
   print SERVERCONF "cert ${General::swroot}/ovpn/certs/servercert.pem\n"; 
   print SERVERCONF "key ${General::swroot}/ovpn/certs/serverkey.pem\n"; 
-  print SERVERCONF "dh ${General::swroot}/ovpn/ca/dh1024.pem\n"; 
+  print SERVERCONF "dh ${General::swroot}/ovpn/ca/$cgiparams{'DH_NAME'}\n";
   print SERVERCONF "# Cipher\n"; 
-  print SERVERCONF "cipher AES-256-CBC\n"; 
+  print SERVERCONF "cipher $cgiparams{'DCIPHER'}\n";
+  if ($cgiparams{'DAUTH'} eq '') {
+       print SERVERCONF "auth SHA1\n";
+  } else {
+       print SERVERCONF "# HMAC algorithm\n";
+       print SERVERCONF "auth $cgiparams{'DAUTH'}\n";
+  }
   if ($cgiparams{'COMPLZO'} eq 'on') {
    print SERVERCONF "# Enable Compression\n";
    print SERVERCONF "comp-lzo\r\n";
@@ -1051,6 +930,7 @@ unless(-d "${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}"){mkdir "${General
 
 if ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'TYPE'} eq 'net' && $cgiparams{'SIDE'} eq 'client')
 {
+
         my @ovsubnettemp =  split(/\./,$cgiparams{'OVPN_SUBNET'});
         my $ovsubnet =  "$ovsubnettemp[0].$ovsubnettemp[1].$ovsubnettemp[2]";
         my @remsubnet =  split(/\//,$cgiparams{'REMOTE_SUBNET'});
@@ -1113,12 +993,18 @@ unless(-d "${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}"){mkdir "${General
   print CLIENTCONF "# Auth. Client\n"; 
   print CLIENTCONF "tls-client\n"; 
   print CLIENTCONF "# Cipher\n"; 
-  print CLIENTCONF "cipher AES-256-CBC\n"; 
+  print CLIENTCONF "cipher $cgiparams{'DCIPHER'}\n";
   print CLIENTCONF "pkcs12 ${General::swroot}/ovpn/certs/$cgiparams{'NAME'}.p12\r\n";
+  if ($cgiparams{'DAUTH'} eq '') {
+       print CLIENTCONF "auth SHA1\n";
+  } else {
+       print CLIENTCONF "# HMAC algorithm\n";
+       print CLIENTCONF "auth $cgiparams{'DAUTH'}\n";
+  }
   if ($cgiparams{'COMPLZO'} eq 'on') {
    print CLIENTCONF "# Enable Compression\n";
    print CLIENTCONF "comp-lzo\r\n";
-     }
+  }
   print CLIENTCONF "# Debug Level\n"; 
   print CLIENTCONF "verb 3\n"; 
   print CLIENTCONF "# Tunnel check\n"; 
@@ -1137,7 +1023,6 @@ unless(-d "${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}"){mkdir "${General
 ### Save main settings
 ###
 
-
 if ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'TYPE'} eq '' && $cgiparams{'KEY'} eq '') {
     &General::readhash("${General::swroot}/ovpn/settings", \%vpnsettings);
     #DAN do we really need (to to check) this value? Besides if we listen on blue and orange too,
@@ -1148,21 +1033,10 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'TYPE'} eq '' && $cg
        goto SETTINGS_ERROR;
        }
     }
-    if ($cgiparams{'ENABLED'} eq 'on'){
-       &disallowreserved($cgiparams{'DDEST_PORT'},0,$cgiparams{'DPROTOCOL'},"dest");
-    }  
-    if ($errormessage) { goto SETTINGS_ERROR; }
-    
-    
-    if ($cgiparams{'ENABLED'} eq 'on'){
-       &checkportfw(0,$cgiparams{'DDEST_PORT'},$cgiparams{'DPROTOCOL'},'0.0.0.0');
-    }
-       
-    if ($errormessage) { goto SETTINGS_ERROR; }
-    
+
     if (! &General::validipandmask($cgiparams{'DOVPN_SUBNET'})) {
             $errormessage = $Lang::tr{'ovpn subnet is invalid'};
-       goto SETTINGS_ERROR;
+                       goto SETTINGS_ERROR;
     }
     my @tmpovpnsubnet = split("\/",$cgiparams{'DOVPN_SUBNET'});
     
@@ -1218,6 +1092,7 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'TYPE'} eq '' && $cg
        $errormessage = $Lang::tr{'invalid port'};
        goto SETTINGS_ERROR;
     }
+
     $vpnsettings{'ENABLED_BLUE'} = $cgiparams{'ENABLED_BLUE'};
     $vpnsettings{'ENABLED_ORANGE'} =$cgiparams{'ENABLED_ORANGE'};
     $vpnsettings{'ENABLED'} = $cgiparams{'ENABLED'};
@@ -1242,7 +1117,7 @@ SETTINGS_ERROR:
 ###
 ### Reset all step 2
 ###
-}elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reset'} && $cgiparams{'AREUSURE'} eq 'yes') {
+}elsif ($cgiparams{'ACTION'} eq $Lang::tr{'remove x509'} && $cgiparams{'AREUSURE'} eq 'yes') {
     my $file = '';
     &General::readhasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash);
 
@@ -1252,37 +1127,66 @@ SETTINGS_ERROR:
        }
     }
     while ($file = glob("${General::swroot}/ovpn/ca/*")) {
-       unlink $file
+       unlink $file;
     }
     while ($file = glob("${General::swroot}/ovpn/certs/*")) {
-       unlink $file
+       unlink $file;
     }
     while ($file = glob("${General::swroot}/ovpn/crls/*")) {
-       unlink $file
+       unlink $file;
     }
-    &cleanssldatabase();
+       &cleanssldatabase();
     if (open(FILE, ">${General::swroot}/ovpn/caconfig")) {
         print FILE "";
         close FILE;
     }
-    &General::writehasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash);
+    if (open(FILE, ">${General::swroot}/ovpn/ccdroute")) {
+       print FILE "";
+       close FILE;
+    }
+    if (open(FILE, ">${General::swroot}/ovpn/ccdroute2")) {
+       print FILE "";
+       close FILE;
+    }
+    while ($file = glob("${General::swroot}/ovpn/ccd/*")) {
+       unlink $file
+    }
+    if (open(FILE, ">${General::swroot}/ovpn/ovpn-leases.db")) {
+       print FILE "";
+       close FILE;
+    }
+    if (open(FILE, ">${General::swroot}/ovpn/ovpnconfig")) {
+       print FILE "";
+       close FILE;
+    }
+    while ($file = glob("${General::swroot}/ovpn/n2nconf/*")) {
+       system ("rm -rf $file");
+    }
+
     #&writeserverconf();
 ###
 ### Reset all step 1
 ###
-}elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reset'}) {
+}elsif ($cgiparams{'ACTION'} eq $Lang::tr{'remove x509'}) {
     &Header::showhttpheaders();
-    &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
-    &Header::openbigbox('100%', 'LEFT', '', '');
-    &Header::openbox('100%', 'LEFT', $Lang::tr{'are you sure'});
-    print <<END
-       <table><form method='post'><input type='hidden' name='AREUSURE' value='yes' />
-           <tr><td align='center'>             
-               <b><font color='${Header::colourred}'>$Lang::tr{'capswarning'}</font></b>: 
-               $Lang::tr{'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections'}
-           <tr><td align='center'><input type='submit' name='ACTION' value='$Lang::tr{'reset'}' />
-               <input type='submit' name='ACTION' value='$Lang::tr{'cancel'}' /></td></tr>
-       </form></table>
+    &Header::openpage($Lang::tr{'ovpn'}, 1, '');
+    &Header::openbigbox('100%', 'left', '', '');
+    &Header::openbox('100%', 'left', $Lang::tr{'are you sure'});
+    print <<END;
+       <form method='post'>
+               <table width='100%'>
+                       <tr>
+                               <td align='center'>
+                               <input type='hidden' name='AREUSURE' value='yes' />
+                               <b><font color='${Header::colourred}'>$Lang::tr{'capswarning'}</font></b>:
+                               $Lang::tr{'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections'}</td>
+                       </tr>
+                       <tr>
+                               <td align='center'><input type='submit' name='ACTION' value='$Lang::tr{'remove x509'}' />
+                               <input type='submit' name='ACTION' value='$Lang::tr{'cancel'}' /></td>
+                       </tr>
+               </table>
+       </form>
 END
     ;
     &Header::closebox();
@@ -1290,6 +1194,104 @@ END
     &Header::closepage();
     exit (0);
 
+###
+### Generate DH key step 2
+###
+} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'generate dh key'} && $cgiparams{'AREUSURE'} eq 'yes') {
+    # Delete if old key exists
+    if (-f "${General::swroot}/ovpn/ca/$cgiparams{'DH_NAME'}") {
+        unlink "${General::swroot}/ovpn/ca/$cgiparams{'DH_NAME'}";
+       }
+       # Create Diffie Hellmann Parameter
+       system('/usr/bin/openssl', 'dhparam', '-rand', '/proc/interrupts:/proc/net/rt_cache',
+       '-out', "${General::swroot}/ovpn/ca/dh1024.pem", "$cgiparams{'DHLENGHT'}");
+       if ($?) {
+               $errormessage = "$Lang::tr{'openssl produced an error'}: $?";
+               unlink ("${General::swroot}/ovpn/ca/dh1024.pem");
+       }
+
+###
+### Generate DH key step 1
+###
+} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'generate dh key'}) {
+       &Header::showhttpheaders();
+       &Header::openpage($Lang::tr{'ovpn'}, 1, '');
+       &Header::openbigbox('100%', 'LEFT', '', '');
+       &Header::openbox('100%', 'LEFT', "$Lang::tr{'gen dh'}:");
+       print <<END;
+       <table width='100%'>
+       <tr>
+               <td width='20%'> </td> <td width='15%'></td> <td width='65%'></td>
+       </tr>
+       <tr>
+               <td class='base'>$Lang::tr{'ovpn dh'}:</td>
+               <td align='center'>
+               <form method='post'><input type='hidden' name='AREUSURE' value='yes' />
+               <input type='hidden' name='KEY' value='$cgiparams{'KEY'}' />
+                       <select name='DHLENGHT'>
+                               <option value='1024' $selected{'DHLENGHT'}{'1024'}>1024 $Lang::tr{'bit'}</option>
+                               <option value='2048' $selected{'DHLENGHT'}{'2048'}>2048 $Lang::tr{'bit'}</option>
+                               <option value='3072' $selected{'DHLENGHT'}{'3072'}>3072 $Lang::tr{'bit'}</option>
+                               <option value='4096' $selected{'DHLENGHT'}{'4096'}>4096 $Lang::tr{'bit'}</option>
+                       </select>
+               </td>
+       </tr>
+       <tr><td colspan='4'><br></td></tr>
+       </table>
+       <table width='100%'>
+       <tr>
+               <b><font color='${Header::colourred}'>$Lang::tr{'capswarning'}: </font></b>$Lang::tr{'dh key warn'}
+       </tr>
+       <tr>
+               <td class='base'>$Lang::tr{'dh key warn1'}</td>
+       </tr>
+       <tr><td colspan='2'><br></td></tr>
+       <tr>
+               <td align='center'><input type='submit' name='ACTION' value='$Lang::tr{'generate dh key'}' /></td>
+               </form>
+       </tr>
+       </table>
+
+END
+       ;
+       &Header::closebox();
+       print "<div align='center'><a href='/cgi-bin/ovpnmain.cgi'>$Lang::tr{'back'}</a></div>";
+       &Header::closebigbox();
+       &Header::closepage();
+       exit (0);
+
+###
+### Upload DH key
+###
+} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'upload dh key'}) {
+    if (ref ($cgiparams{'FH'}) ne 'Fh') {
+         $errormessage = $Lang::tr{'there was no file upload'};
+         goto UPLOADCA_ERROR;
+    }
+    # Move uploaded dh key to a temporary file
+    (my $fh, my $filename) = tempfile( );
+    if (copy ($cgiparams{'FH'}, $fh) != 1) {
+        $errormessage = $!;
+       goto UPLOADCA_ERROR;
+    }
+    my $temp = `/usr/bin/openssl dhparam -text -in $filename`;
+    if ($temp !~ /DH Parameters: \((1024|2048|3072|4096) bit\)/) {
+        $errormessage = $Lang::tr{'not a valid dh key'};
+        unlink ($filename);
+        goto UPLOADCA_ERROR;
+    } else {
+    # Delete if old key exists
+    if (-f "${General::swroot}/ovpn/ca/$cgiparams{'DH_NAME'}") {
+        unlink "${General::swroot}/ovpn/ca/$cgiparams{'DH_NAME'}";
+       }
+    move($filename, "${General::swroot}/ovpn/ca/$cgiparams{'DH_NAME'}");
+       if ($? ne 0) {
+               $errormessage = "$Lang::tr{'dh key move failed'}: $!";
+               unlink ($filename);
+               goto UPLOADCA_ERROR;
+       }
+    }
+
 ###
 ### Upload CA Certificate
 ###
@@ -1308,7 +1310,7 @@ END
 
     if ($cgiparams{'CA_NAME'} eq 'ca') {
        $errormessage = $Lang::tr{'name is invalid'};
-       goto UPLOAD_CA_ERROR;
+       goto UPLOADCA_ERROR;
     }
 
     # Check if there is no other entry with this name
@@ -1366,7 +1368,7 @@ END
 
     if ( -f "${General::swroot}/ovpn/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem") {
        &Header::showhttpheaders();
-       &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+       &Header::openpage($Lang::tr{'ovpn'}, 1, '');
        &Header::openbigbox('100%', 'LEFT', '', $errormessage);
        &Header::openbox('100%', 'LEFT', "$Lang::tr{'ca certificate'}:");
        my $output = `/usr/bin/openssl x509 -text -in ${General::swroot}/ovpn/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem`;
@@ -1443,10 +1445,10 @@ END
        }
        if ($assignedcerts) {
            &Header::showhttpheaders();
-           &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+           &Header::openpage($Lang::tr{'ovpn'}, 1, '');
            &Header::openbigbox('100%', 'LEFT', '', $errormessage);
            &Header::openbox('100%', 'LEFT', $Lang::tr{'are you sure'});
-           print <<END
+           print <<END;
                <table><form method='post'><input type='hidden' name='AREUSURE' value='yes' />
                       <input type='hidden' name='KEY' value='$cgiparams{'KEY'}' />
                    <tr><td align='center'>
@@ -1478,7 +1480,7 @@ END
     $cgiparams{'ACTION'} eq $Lang::tr{'show host certificate'}) {
     my $output;
     &Header::showhttpheaders();
-    &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+    &Header::openpage($Lang::tr{'ovpn'}, 1, '');
     &Header::openbigbox('100%', 'LEFT', '', '');
     if ($cgiparams{'ACTION'} eq $Lang::tr{'show root certificate'}) {
        &Header::openbox('100%', 'LEFT', "$Lang::tr{'root certificate'}:");
@@ -1516,6 +1518,18 @@ END
        print `/usr/bin/openssl x509 -in ${General::swroot}/ovpn/certs/servercert.pem`;
        exit(0);
     }
+
+###
+### Download tls-auth key
+###
+}elsif ($cgiparams{'ACTION'} eq $Lang::tr{'download tls-auth key'}) {
+    if ( -f "${General::swroot}/ovpn/certs/ta.key" ) {
+       print "Content-Type: application/octet-stream\r\n";
+       print "Content-Disposition: filename=ta.key\r\n\r\n";
+       print `/bin/cat ${General::swroot}/ovpn/certs/ta.key`;
+       exit(0);
+    }
+
 ###
 ### Form for generating a root certificate
 ###
@@ -1744,7 +1758,7 @@ END
            }
        } else {        # child
            unless (exec ('/usr/bin/openssl', 'req', '-x509', '-nodes', '-rand', '/proc/interrupts:/proc/net/rt_cache',
-                       '-days', '999999', '-newkey', 'rsa:2048',
+                       '-days', '999999', '-newkey', 'rsa:4096', '-sha512',
                        '-keyout', "${General::swroot}/ovpn/ca/cakey.pem",
                        '-out', "${General::swroot}/ovpn/ca/cacert.pem",
                        '-config',"${General::swroot}/ovpn/openssl/ovpn.cnf")) {
@@ -1775,7 +1789,7 @@ END
            }
        } else {        # child
            unless (exec ('/usr/bin/openssl', 'req', '-nodes', '-rand', '/proc/interrupts:/proc/net/rt_cache',
-                       '-newkey', 'rsa:1024',
+                       '-newkey', 'rsa:2048',
                        '-keyout', "${General::swroot}/ovpn/certs/serverkey.pem",
                        '-out', "${General::swroot}/ovpn/certs/serverreq.pem",
                        '-extensions', 'server',
@@ -1827,8 +1841,7 @@ END
        }
        # Create Diffie Hellmann Parameter
        system('/usr/bin/openssl', 'dhparam', '-rand', '/proc/interrupts:/proc/net/rt_cache',
-              '-out', "${General::swroot}/ovpn/ca/dh1024.pem",
-              '1024' );
+              '-out', "${General::swroot}/ovpn/ca/dh1024.pem", "$cgiparams{'DHLENGHT'}");
        if ($?) {
            $errormessage = "$Lang::tr{'openssl produced an error'}: $?";
            unlink ("${General::swroot}/ovpn/certs/serverkey.pem");
@@ -1840,13 +1853,20 @@ END
            goto ROOTCERT_ERROR;
 #      } else {
 #          &cleanssldatabase();
-       }       
+       }
+       # Create ta.key for tls-auth
+       system('/usr/sbin/openvpn', '--genkey', '--secret', "${General::swroot}/ovpn/certs/ta.key");
+       if ($?) {
+           $errormessage = "$Lang::tr{'openssl produced an error'}: $?";
+           &cleanssldatabase();
+           goto ROOTCERT_ERROR;
+       }
        goto ROOTCERT_SUCCESS;
     }
     ROOTCERT_ERROR:
     if ($cgiparams{'ACTION'} ne '') {
        &Header::showhttpheaders();
-       &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+       &Header::openpage($Lang::tr{'ovpn'}, 1, '');
        &Header::openbigbox('100%', 'LEFT', '', '');
        if ($errormessage) {
            &Header::openbox('100%', 'LEFT', $Lang::tr{'error messages'});
@@ -1855,7 +1875,7 @@ END
            &Header::closebox();
        }
        &Header::openbox('100%', 'LEFT', "$Lang::tr{'generate root/host certificates'}:");
-       print <<END
+       print <<END;
        <form method='post' enctype='multipart/form-data'>
        <table width='100%' border='0' cellspacing='1' cellpadding='0'>
        <tr><td width='30%' class='base'>$Lang::tr{'organization name'}:</td>
@@ -1888,19 +1908,38 @@ END
            }
            print ">$country</option>";
        }
-       print <<END
+       print <<END;
            </select></td>
-           <td colspan='2'>&nbsp;</td></tr>
+       <tr><td class='base'>$Lang::tr{'ovpn dh'}:</td>
+               <td class='base'><select name='DHLENGHT'>
+                               <option value='1024' $selected{'DHLENGHT'}{'1024'}>1024 $Lang::tr{'bit'}</option>
+                               <option value='2048' $selected{'DHLENGHT'}{'2048'}>2048 $Lang::tr{'bit'}</option>
+                               <option value='3072' $selected{'DHLENGHT'}{'3072'}>3072 $Lang::tr{'bit'}</option>
+                               <option value='4096' $selected{'DHLENGHT'}{'4096'}>4096 $Lang::tr{'bit'}</option>
+                       </select>
+               </td>
+       </tr>
+
        <tr><td>&nbsp;</td>
            <td><input type='submit' name='ACTION' value='$Lang::tr{'generate root/host certificates'}' /></td>
            <td>&nbsp;</td><td>&nbsp;</td></tr> 
        <tr><td class='base' colspan='4' align='left'>
            <img src='/blob.gif' valign='top' alt='*' />&nbsp;$Lang::tr{'this field may be blank'}</td></tr>
-       <tr><td class='base' colspan='4' align='left'>
-           <b><font color='${Header::colourred}'>$Lang::tr{'capswarning'}</font></b>: 
-           $Lang::tr{'generating the root and host certificates may take a long time. it can take up to several minutes on older hardware. please be patient'}
-       </td></tr>
-       <tr><td colspan='4' bgcolor='#000000'><img src='/images/null.gif' width='1' height='1' border='0' /></td></tr>
+       <tr><td colspan='2'><br></td></tr>
+       <table width='100%'>
+       <tr>
+               <b><font color='${Header::colourred}'>$Lang::tr{'capswarning'}: </font></b>$Lang::tr{'ovpn generating the root and host certificates'}
+               <td class='base'>$Lang::tr{'dh key warn'}</td>
+       </tr>
+       <tr>
+               <td class='base'>$Lang::tr{'dh key warn1'}</td>
+       </tr>
+       <tr><td colspan='2'><br></td></tr>
+       <tr>
+       </table>
+
+       <table width='100%'>
+       <tr><td colspan='4'><hr></td></tr>
        <tr><td class='base' nowrap='nowrap'>$Lang::tr{'upload p12 file'}:</td>
            <td nowrap='nowrap'><input type='file' name='FH' size='32'></td>
            <td colspan='2'>&nbsp;</td></tr>
@@ -1911,12 +1950,13 @@ END
            <td><input type='submit' name='ACTION' value='$Lang::tr{'upload p12 file'}' /></td>
             <td colspan='2'>&nbsp;</td></tr>
        <tr><td class='base' colspan='4' align='left'>
-           <img src='/blob.gif' valign='top' al='*' >&nbsp;$Lang::tr{'this field may be blank'}</td></tr>
+           <img src='/blob.gif' valign='top' al='*' >&nbsp;$Lang::tr{'this field may be blank'}</td>
+       </tr>
        </form></table>
 END
        ;
        &Header::closebox();
-
+       print "<div align='center'><a href='/cgi-bin/ovpnmain.cgi'>$Lang::tr{'back'}</a></div>";
        &Header::closebigbox();
        &Header::closepage();
         exit(0)
@@ -2048,13 +2088,20 @@ if ($confighash{$cgiparams{'KEY'}}[3] eq 'net'){
    print CLIENTCONF "ns-cert-type server\n";   
    print CLIENTCONF "# Auth. Client\n"; 
    print CLIENTCONF "tls-client\n"; 
-   print CLIENTCONF "# Cipher\n"; 
-   print CLIENTCONF "cipher AES-256-CBC\n"; 
+   print CLIENTCONF "# Cipher\n";
+   print CLIENTCONF "cipher $confighash{$cgiparams{'KEY'}}[40]\n";
     if ($confighash{$cgiparams{'KEY'}}[4] eq 'cert' && -f "${General::swroot}/ovpn/certs/$confighash{$cgiparams{'KEY'}}[1].p12") { 
         print CLIENTCONF "pkcs12 ${General::swroot}/ovpn/certs/$confighash{$cgiparams{'KEY'}}[1].p12\r\n";
      $zip->addFile( "${General::swroot}/ovpn/certs/$confighash{$cgiparams{'KEY'}}[1].p12", "$confighash{$cgiparams{'KEY'}}[1].p12") or die "Can't add file $confighash{$cgiparams{'KEY'}}[1].p12\n";
-   } 
-    if ($confighash{$cgiparams{'KEY'}}[30] eq 'on') {
+   }
+   if ($confighash{$cgiparams{'KEY'}}[39] eq '') {
+       print CLIENTCONF "# HMAC algorithm\n";
+       print CLIENTCONF "auth SHA1\n";
+   } else {
+   print CLIENTCONF "# HMAC algorithm\n";
+   print CLIENTCONF "auth $confighash{$cgiparams{'KEY'}}[39]\n";
+   }
+   if ($confighash{$cgiparams{'KEY'}}[30] eq 'on') {
    print CLIENTCONF "# Enable Compression\n";
    print CLIENTCONF "comp-lzo\r\n";
      }
@@ -2149,6 +2196,15 @@ else
        $zip->addFile( "${General::swroot}/ovpn/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem", "$confighash{$cgiparams{'KEY'}}[1]cert.pem") or die "Can't add file $confighash{$cgiparams{'KEY'}}[1]cert.pem\n";    
     }
     print CLIENTCONF "cipher $vpnsettings{DCIPHER}\r\n";
+    if ($vpnsettings{'DAUTH'} eq '') {
+        print CLIENTCONF "";
+    } else {
+       print CLIENTCONF "auth $vpnsettings{'DAUTH'}\r\n";
+    }
+    if ($vpnsettings{'TLSAUTH'} eq 'on') {
+       print CLIENTCONF "tls-auth ta.key\r\n";
+       $zip->addFile( "${General::swroot}/ovpn/certs/ta.key", "ta.key")  or die "Can't add file ta.key\n";
+    }
     if ($vpnsettings{DCOMPLZO} eq 'on') {
         print CLIENTCONF "comp-lzo\r\n";
     }
@@ -2206,14 +2262,15 @@ else
 # m.a.d net2net
 ###
 
- if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') {
-
+if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') {
        my $conffile = glob("${General::swroot}/ovpn/n2nconf/$confighash{$cgiparams{'KEY'}}[1]/$confighash{$cgiparams{'KEY'}}[1].conf");
-  my $certfile = glob("${General::swroot}/ovpn/certs/$confighash{$cgiparams{'KEY'}}[1].p12");
-  unlink ($certfile) or die "Removing $certfile fail: $!";
-  unlink ($conffile) or die "Removing $conffile fail: $!";
-  rmdir ("${General::swroot}/ovpn/n2nconf/$confighash{$cgiparams{'KEY'}}[1]") || die "Kann Verzeichnis nicht loeschen: $!";
-  
+       my $certfile = glob("${General::swroot}/ovpn/certs/$confighash{$cgiparams{'KEY'}}[1].p12");
+       unlink ($certfile);
+       unlink ($conffile);
+
+       if (-e "${General::swroot}/ovpn/n2nconf/$confighash{$cgiparams{'KEY'}}[1]") {
+               rmdir ("${General::swroot}/ovpn/n2nconf/$confighash{$cgiparams{'KEY'}}[1]") || die "Kann Verzeichnis nicht loeschen: $!";
+       }
 }
 
   unlink ("${General::swroot}/ovpn/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem");
@@ -2256,7 +2313,7 @@ else
     } else {
        $errormessage = $Lang::tr{'invalid key'};
     }
-
+       &General::firewall_reload();
 
 ###
 ### Download PKCS12 file
@@ -2277,7 +2334,7 @@ else
 
     if ( -f "${General::swroot}/ovpn/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem") {
        &Header::showhttpheaders();
-       &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+       &Header::openpage($Lang::tr{'ovpn'}, 1, '');
        &Header::openbigbox('100%', 'LEFT', '', '');
        &Header::openbox('100%', 'LEFT', "$Lang::tr{'certificate'}:");
        my $output = `/usr/bin/openssl x509 -text -in ${General::swroot}/ovpn/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem`;
@@ -2289,15 +2346,62 @@ else
        &Header::closepage();
        exit(0);
     }
+
+###
+### Display Diffie-Hellman key
+###
+} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'show dh'}) {
+
+    if (! -e "${General::swroot}/ovpn/ca/dh1024.pem") {
+       $errormessage = $Lang::tr{'not present'};
+       } else {
+               &Header::showhttpheaders();
+               &Header::openpage($Lang::tr{'ovpn'}, 1, '');
+               &Header::openbigbox('100%', 'LEFT', '', '');
+               &Header::openbox('100%', 'LEFT', "$Lang::tr{'dh'}:");
+               my $output = `/usr/bin/openssl dhparam -text -in ${General::swroot}/ovpn/ca/dh1024.pem`;
+               $output = &Header::cleanhtml($output,"y");
+               print "<pre>$output</pre>\n";
+               &Header::closebox();
+               print "<div align='center'><a href='/cgi-bin/ovpnmain.cgi'>$Lang::tr{'back'}</a></div>";
+               &Header::closebigbox();
+               &Header::closepage();
+               exit(0);
+    }
+
+###
+### Display tls-auth key
+###
+} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'show tls-auth key'}) {
+
+    if (! -e "${General::swroot}/ovpn/certs/ta.key") {
+       $errormessage = $Lang::tr{'not present'};
+       } else {
+               &Header::showhttpheaders();
+               &Header::openpage($Lang::tr{'ovpn'}, 1, '');
+               &Header::openbigbox('100%', 'LEFT', '', '');
+               &Header::openbox('100%', 'LEFT', "$Lang::tr{'ta key'}:");
+               my $output = `/bin/cat ${General::swroot}/ovpn/certs/ta.key`;
+               $output = &Header::cleanhtml($output,"y");
+               print "<pre>$output</pre>\n";
+               &Header::closebox();
+               print "<div align='center'><a href='/cgi-bin/ovpnmain.cgi'>$Lang::tr{'back'}</a></div>";
+               &Header::closebigbox();
+               &Header::closepage();
+               exit(0);
+    }
+
 ###
 ### Display Certificate Revoke List
 ###
 } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'show crl'}) {
 #    &General::readhasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash);
 
-    if ( -f "${General::swroot}/ovpn/crls/cacrl.pem") {
+    if (! -e "${General::swroot}/ovpn/crls/cacrl.pem") {
+       $errormessage = $Lang::tr{'not present'};
+       } else {
        &Header::showhttpheaders();
-       &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+       &Header::openpage($Lang::tr{'ovpn'}, 1, '');
        &Header::openbigbox('100%', 'LEFT', '', '');
        &Header::openbox('100%', 'LEFT', "$Lang::tr{'crl'}:");
        my $output = `/usr/bin/openssl crl -text -noout -in ${General::swroot}/ovpn/crls/cacrl.pem`;
@@ -2328,16 +2432,25 @@ else
 #    }
 ADV_ERROR:
     if ($cgiparams{'MAX_CLIENTS'} eq '') {
-       $cgiparams{'MAX_CLIENTS'} =  '100';     
+               $cgiparams{'MAX_CLIENTS'} =  '100';
     }
     if ($cgiparams{'KEEPALIVE_1'} eq '') {
-       $cgiparams{'KEEPALIVE_1'} =  '10';     
+               $cgiparams{'KEEPALIVE_1'} =  '10';
     }
     if ($cgiparams{'KEEPALIVE_2'} eq '') {
-       $cgiparams{'KEEPALIVE_2'} =  '60';     
+               $cgiparams{'KEEPALIVE_2'} =  '60';
     }
     if ($cgiparams{'LOG_VERB'} eq '') {
-       $cgiparams{'LOG_VERB'} =  '3';
+               $cgiparams{'LOG_VERB'} =  '3';
+    }
+    if ($cgiparams{'PMTU_DISCOVERY'} eq '') {
+               $cgiparams{'PMTU_DISCOVERY'} = 'off';
+    }
+    if ($cgiparams{'DAUTH'} eq '') {
+               $cgiparams{'DAUTH'} = 'SHA1';
+    }
+    if ($cgiparams{'TLSAUTH'} eq '') {
+               $cgiparams{'TLSAUTH'} = 'off';
     }
     $checked{'CLIENT2CLIENT'}{'off'} = '';
     $checked{'CLIENT2CLIENT'}{'on'} = '';
@@ -2345,11 +2458,11 @@ ADV_ERROR:
     $checked{'REDIRECT_GW_DEF1'}{'off'} = '';
     $checked{'REDIRECT_GW_DEF1'}{'on'} = '';
     $checked{'REDIRECT_GW_DEF1'}{$cgiparams{'REDIRECT_GW_DEF1'}} = 'CHECKED';
-    $selected{'ENGINES'}{$cgiparams{'ENGINES'}} = 'SELECTED';
     $checked{'MSSFIX'}{'off'} = '';
     $checked{'MSSFIX'}{'on'} = '';
     $checked{'MSSFIX'}{$cgiparams{'MSSFIX'}} = 'CHECKED';
     $checked{'PMTU_DISCOVERY'}{$cgiparams{'PMTU_DISCOVERY'}} = 'checked=\'checked\'';
+    $selected{'LOG_VERB'}{'0'} = '';
     $selected{'LOG_VERB'}{'1'} = '';
     $selected{'LOG_VERB'}{'2'} = '';
     $selected{'LOG_VERB'}{'3'} = '';
@@ -2361,8 +2474,16 @@ ADV_ERROR:
     $selected{'LOG_VERB'}{'9'} = '';
     $selected{'LOG_VERB'}{'10'} = '';
     $selected{'LOG_VERB'}{'11'} = '';
-    $selected{'LOG_VERB'}{'0'} = '';
     $selected{'LOG_VERB'}{$cgiparams{'LOG_VERB'}} = 'SELECTED';
+    $selected{'DAUTH'}{'whirlpool'} = '';
+    $selected{'DAUTH'}{'SHA512'} = '';
+    $selected{'DAUTH'}{'SHA384'} = '';
+    $selected{'DAUTH'}{'SHA256'} = '';
+    $selected{'DAUTH'}{'SHA1'} = '';
+    $selected{'DAUTH'}{$cgiparams{'DAUTH'}} = 'SELECTED';
+    $checked{'TLSAUTH'}{'off'} = '';
+    $checked{'TLSAUTH'}{'on'} = '';
+    $checked{'TLSAUTH'}{$cgiparams{'TLSAUTH'}} = 'CHECKED';
    
     &Header::showhttpheaders();
     &Header::openpage($Lang::tr{'status ovpn'}, 1, '');
@@ -2374,34 +2495,34 @@ ADV_ERROR:
        &Header::closebox();
     }
     &Header::openbox('100%', 'LEFT', $Lang::tr{'advanced server'});
-    print <<END
+    print <<END;
     <form method='post' enctype='multipart/form-data'>
-    <table width='100%' border=0>
-    <tr>
-       <td colspan='4'><b>$Lang::tr{'dhcp-options'}</b></td>
+<table width='100%' border=0>
+       <tr>
+               <td colspan='4'><b>$Lang::tr{'dhcp-options'}</b></td>
     </tr>
     <tr>
-       <td width='25%'></td> <td width='20%'> </td><td width='25%'> </td><td width='30%'></td>
+               <td width='25%'></td> <td width='20%'> </td><td width='25%'> </td><td width='30%'></td>
     </tr>      
     <tr>               
-       <td class='base'>Domain</td>
+               <td class='base'>Domain</td>
         <td><input type='TEXT' name='DHCP_DOMAIN' value='$cgiparams{'DHCP_DOMAIN'}' size='30'  /></td>
     </tr>
     <tr>       
-       <td class='base'>DNS</td>
-       <td><input type='TEXT' name='DHCP_DNS' value='$cgiparams{'DHCP_DNS'}' size='30' /></td>
+               <td class='base'>DNS</td>
+               <td><input type='TEXT' name='DHCP_DNS' value='$cgiparams{'DHCP_DNS'}' size='30' /></td>
     </tr>      
     <tr>       
-       <td class='base'>WINS</td>
-       <td><input type='TEXT' name='DHCP_WINS' value='$cgiparams{'DHCP_WINS'}' size='30' /></td>
-       </tr>
+               <td class='base'>WINS</td>
+               <td><input type='TEXT' name='DHCP_WINS' value='$cgiparams{'DHCP_WINS'}' size='30' /></td>
+       </tr>
     <tr>
-       <td colspan='4'><b>$Lang::tr{'ovpn routes push options'}</b></td>
+               <td colspan='4'><b>$Lang::tr{'ovpn routes push options'}</b></td>
     </tr>
     <tr>       
-       <td class='base'>$Lang::tr{'ovpn routes push'}</td>
-  <td colspan='2'>
-       <textarea name='ROUTES_PUSH' cols='26' rows='6' wrap='off'>
+               <td class='base'>$Lang::tr{'ovpn routes push'}</td>
+               <td colspan='2'>
+               <textarea name='ROUTES_PUSH' cols='26' rows='6' wrap='off'>
 END
 ;
 
@@ -2416,40 +2537,39 @@ print <<END;
     </tr>
 </table>
 <hr size='1'>
-    <table width='100%'>
+<table width='100%'>
     <tr>
-       <td class'base'><b>$Lang::tr{'misc-options'}</b></td>
+               <td class'base'><b>$Lang::tr{'misc-options'}</b></td>
     </tr>
     <tr>
-       <td width='20%'></td> <td width='15%'> </td><td width='15%'> </td><td width='15%'></td><td width='35%'></td>
+               <td width='20%'></td> <td width='15%'> </td><td width='15%'> </td><td width='15%'></td><td width='35%'></td>
     </tr>
     <tr>
-       <td class='base'>Client-To-Client</td>
-       <td><input type='checkbox' name='CLIENT2CLIENT' $checked{'CLIENT2CLIENT'}{'on'} /></td>
+               <td class='base'>Client-To-Client</td>
+               <td><input type='checkbox' name='CLIENT2CLIENT' $checked{'CLIENT2CLIENT'}{'on'} /></td>
     </tr>
     <tr>       
-       <td class='base'>Redirect-Gateway def1</td>
-       <td><input type='checkbox' name='REDIRECT_GW_DEF1' $checked{'REDIRECT_GW_DEF1'}{'on'} /></td>
+               <td class='base'>Redirect-Gateway def1</td>
+               <td><input type='checkbox' name='REDIRECT_GW_DEF1' $checked{'REDIRECT_GW_DEF1'}{'on'} /></td>
     </tr>
     <tr>       
         <td class='base'>Max-Clients</td>
         <td><input type='text' name='MAX_CLIENTS' value='$cgiparams{'MAX_CLIENTS'}' size='10' /></td>
     </tr>      
-       <tr>
+       <tr>
          <td class='base'>Keepalive <br />
            (ping/ping-restart)</td>
          <td><input type='TEXT' name='KEEPALIVE_1' value='$cgiparams{'KEEPALIVE_1'}' size='10' /></td>
          <td><input type='TEXT' name='KEEPALIVE_2' value='$cgiparams{'KEEPALIVE_2'}' size='10' /></td>
     </tr>
-       <tr>
+       <tr>
          <td class='base'>fragment <br></td>
          <td><input type='TEXT' name='FRAGMENT' value='$cgiparams{'FRAGMENT'}' size='10' /></td>
-        <td>Default: <span class="base">1300</span></td>
       </tr>
        <tr>
          <td class='base'>mssfix</td>
          <td><input type='checkbox' name='MSSFIX' $checked{'MSSFIX'}{'on'} /></td>
-         <td>Default: on</td>
+         <td>$Lang::tr{'openvpn default'}: off</td>
          </tr>
 
        <tr>
@@ -2461,53 +2581,70 @@ print <<END;
        </tr>
 </table>
 
-<!--
 <hr size='1'>
-    <table width='100%'>
+<table width='100%'>
     <tr>
- <td class'base'><b>Crypto-Engines</b></td>
+       <td class'base'><b>$Lang::tr{'log-options'}</b></td>
+    </tr>
+    <tr>
+       <td width='20%'></td> <td width='30%'> </td><td width='25%'> </td><td width='25%'></td>
     </tr>
+
+    <tr><td class='base'>VERB</td>
+        <td><select name='LOG_VERB'>
+                       <option value='0'  $selected{'LOG_VERB'}{'0'}>0</option>
+                       <option value='1'  $selected{'LOG_VERB'}{'1'}>1</option>
+                       <option value='2'  $selected{'LOG_VERB'}{'2'}>2</option>
+                       <option value='3'  $selected{'LOG_VERB'}{'3'}>3</option>
+                       <option value='4'  $selected{'LOG_VERB'}{'4'}>4</option>
+                       <option value='5'  $selected{'LOG_VERB'}{'5'}>5</option>
+                       <option value='6'  $selected{'LOG_VERB'}{'6'}>6</option>
+                       <option value='7'  $selected{'LOG_VERB'}{'7'}>7</option>
+                       <option value='8'  $selected{'LOG_VERB'}{'8'}>8</option>
+                       <option value='9'  $selected{'LOG_VERB'}{'9'}>9</option>
+                       <option value='10' $selected{'LOG_VERB'}{'10'}>10</option>
+                       <option value='11' $selected{'LOG_VERB'}{'11'}>11</option>
+       </td></select>
+    </table>
+
+<hr size='1'>
+<table width='100%'>
     <tr>
-       <td width='15%'></td> <td width='30%'> </td><td width='25%'> </td><td width='30%'></td>
+               <td class'base'><b>$Lang::tr{'ovpn crypt options'}</b></td>
+       </tr>
+       <tr>
+               <td width='20%'></td> <td width='30%'> </td><td width='25%'> </td><td width='25%'></td>
     </tr>      
-    <tr><td class='base'>Engines:</td>        
-        <td><select name='ENGINES'><option value="none" $selected{'ENGINES'}{'none'}>none</option>
-                                   <option value="cryptodev" $selected{'ENGINES'}{'cryptodev'}>cryptodev</option>
-                                   <option value="padlock" $selected{'ENGINES'}{'padlock'}>padlock</option>
+    <tr><td class='base'>$Lang::tr{'ovpn ha'}</td>
+               <td><select name='DAUTH'>
+                               <option value='whirlpool'               $selected{'DAUTH'}{'whirlpool'}>Whirlpool (512 $Lang::tr{'bit'})</option>
+                               <option value='SHA512'                  $selected{'DAUTH'}{'SHA512'}>SHA2 (512 $Lang::tr{'bit'})</option>
+                               <option value='SHA384'                  $selected{'DAUTH'}{'SHA384'}>SHA2 (384 $Lang::tr{'bit'})</option>
+                               <option value='SHA256'                  $selected{'DAUTH'}{'SHA256'}>SHA2 (256 $Lang::tr{'bit'})</option>
+                               <option value='SHA1'                    $selected{'DAUTH'}{'SHA1'}>SHA1 (160 $Lang::tr{'bit'})</option>
                        </select>
-               </td>   
+               </td>
+               <td>$Lang::tr{'openvpn default'}: <span class="base">SHA1 (160 $Lang::tr{'bit'})</span></td>
+    </tr>
 </table>
--->
-<hr size='1'>
-    <table width='100%'>
+
+<table width='100%'>
     <tr>
-       <td class'base'><b>$Lang::tr{'log-options'}</b></td>
+       <td width='20%'></td> <td width='15%'> </td><td width='15%'> </td><td width='15%'></td><td width='35%'></td>
     </tr>
+
     <tr>
-       <td width='15%'></td> <td width='30%'> </td><td width='25%'> </td><td width='30%'></td>
-    </tr>      
-       
-    <tr><td class='base'>VERB</td>        
-        <td><select name='LOG_VERB'><option value='1'  $selected{'LOG_VERB'}{'1'}>1</option>
-                                   <option value='2'  $selected{'LOG_VERB'}{'2'}>2</option>
-                                   <option value='3'  $selected{'LOG_VERB'}{'3'}>3</option>
-                                   <option value='4'  $selected{'LOG_VERB'}{'4'}>4</option>
-                                   <option value='5'  $selected{'LOG_VERB'}{'5'}>5</option>
-                                   <option value='6'  $selected{'LOG_VERB'}{'6'}>6</option>                                                                
-                                   <option value='7'  $selected{'LOG_VERB'}{'7'}>7</option>
-                                   <option value='8'  $selected{'LOG_VERB'}{'8'}>8</option>
-                                   <option value='9'  $selected{'LOG_VERB'}{'9'}>9</option>
-                                   <option value='10' $selected{'LOG_VERB'}{'10'}>10</option>
-                                   <option value='11' $selected{'LOG_VERB'}{'11'}>11</option>
-                                   <option value='0'  $selected{'LOG_VERB'}{'0'}>0</option></select></td>      
-</table><hr>
+       <td class='base'>HMAC tls-auth</td>
+       <td><input type='checkbox' name='TLSAUTH' $checked{'TLSAUTH'}{'on'} /></td>
+    </tr>
+    </table><hr>
 END
 
 if ( -e "/var/run/openvpn.pid"){
 print" <br><b><font color='#990000'>$Lang::tr{'attention'}:</b></font><br>
                $Lang::tr{'server restart'}<br><br>
                <hr>";
-               print<<END
+       print<<END;
 <table width='100%'>
 <tr>
     <td>&nbsp;</td>
@@ -2523,7 +2660,7 @@ END
                
 }else{
 
-print<<END
+       print<<END;
 <table width='100%'>
 <tr>
     <td>&nbsp;</td>
@@ -2578,11 +2715,11 @@ if ($cgiparams{'ACTION'} eq "edit"){
        
        &Header::openbox('100%', 'LEFT', $Lang::tr{'ccd modify'});
 
-       print <<END
-    <table width='100%' border=0>
+       print <<END;
+    <table width='100%' border='0'>
     <tr><form method='post'>
        <td width='10%' nowrap='nowrap'>$Lang::tr{'ccd name'}:</td><td><input type='TEXT' name='ccdname' value='$cgiparams{'ccdname'}' /></td>
-       <td width='8%'>$Lang::tr{'ccd subnet'}:</td><td><input type='TEXT' name='ccdsubnet' value='$cgiparams{'ccdsubnet'}' readonly /></td></tr>
+       <td width='8%'>$Lang::tr{'ccd subnet'}:</td><td><input type='TEXT' name='ccdsubnet' value='$cgiparams{'ccdsubnet'}' readonly='readonly' /></td></tr>
        <tr><td colspan='4' align='right'><hr><input type='submit' value='$Lang::tr{'save'}' /><input type='hidden' name='ACTION' value='editsave'/>
        <input type='hidden' name='ccdname' value='$cgiparams{'ccdname'}'/><input type='submit' value='$Lang::tr{'cancel'}' />
        </td></tr>
@@ -2592,7 +2729,7 @@ END
        &Header::closebox();
 
        &Header::openbox('100%', 'LEFT',$Lang::tr{'ccd net'} );
-       print <<END
+       print <<END;
     <table width='100%' border='0'  cellpadding='0' cellspacing='1'>
     <tr>
        <td class='boldbase' align='center'><b>$Lang::tr{'ccd name'}</td><td class='boldbase' align='center'><b>$Lang::tr{'network'}</td><td class='boldbase' width='15%' align='center'><b>$Lang::tr{'ccd used'}</td><td width='3%'></td><td width='3%'></td></tr>
@@ -2602,7 +2739,7 @@ END
 else{
        if (! -e "/var/run/openvpn.pid"){
        &Header::openbox('100%', 'LEFT', $Lang::tr{'ccd add'});
-               print <<END;
+       print <<END;
            <table width='100%' border='0'>
            <tr><form method='post'>
                <td colspan='4'>$Lang::tr{'ccd hint'}<br><br></td></tr>
@@ -2622,8 +2759,8 @@ END
                print "$Lang::tr{'ccd noaddnet'}<br><hr>";
        }
        
-       print <<END
-    <table width='100%' border='0'  cellpadding='0' cellspacing='1'>
+    print <<END;
+    <table width='100%' cellpadding='0' cellspacing='1'>
     <tr>
        <td class='boldbase' align='center' nowrap='nowrap' width='20%'><b>$Lang::tr{'ccd name'}</td><td class='boldbase' align='center' width='8%'><b>$Lang::tr{'network'}</td><td class='boldbase' width='8%' align='center' nowrap='nowrap'><b>$Lang::tr{'ccd used'}</td><td width='1%' align='center'></td><td width='1%' align='center'></td></tr>
 END
@@ -2640,9 +2777,9 @@ END
                if ($count % 2){ print" <tr bgcolor='$color{'color22'}'>";}
                else{            print" <tr bgcolor='$color{'color20'}'>";}
                print"<td>$ccdconf[0]</td><td align='center'>$ccdconf[1]</td><td align='center'>$ccdhosts/".(&ccdmaxclients($ccdconf[1])+1)."</td><td>";
-print <<END
+        print <<END;
                <form method='post' />
-               <input type='image' src='/images/edit.gif' align='middle' alt=$Lang::tr{'edit'} title=$Lang::tr{'edit'} />
+               <input type='image' src='/images/edit.gif' align='middle' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
                <input type='hidden' name='ACTION' value='edit'/>
                <input type='hidden' name='ccdname' value='$ccdconf[0]' />
                <input type='hidden' name='ccdsubnet' value='$ccdconf[1]' />
@@ -2651,7 +2788,7 @@ print <<END
                <td><input type='hidden' name='ACTION' value='kill'/>
                <input type='hidden' name='number' value='$count' />
                <input type='hidden' name='net' value='$ccdconf[0]' />
-               <input type='image' src='/images/delete.gif' align='middle' alt=$Lang::tr{'remove'} title=$Lang::tr{'remove'} /></form></td></tr>
+               <input type='image' src='/images/delete.gif' align='middle' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' /></form></td></tr>
 END
 ;
        }       
@@ -2676,16 +2813,16 @@ END
 #
 #      <td><b>$Lang::tr{'protocol'}</b></td>
 # protocol temp removed 
-    print <<END
-    <table width='100%' border='0' cellpadding='2' cellspacing='0'>
+    print <<END;
+    <table width='100%' cellpadding='2' cellspacing='0' class='tbl'>
     <tr>
-       <td><b>$Lang::tr{'common name'}</b></td>
-       <td><b>$Lang::tr{'real address'}</b></td>
-       <td><b>$Lang::tr{'virtual address'}</b></td>
-       <td><b>$Lang::tr{'loged in at'}</b></td>
-       <td><b>$Lang::tr{'bytes sent'}</b></td>
-       <td><b>$Lang::tr{'bytes received'}</b></td>
-       <td><b>$Lang::tr{'last activity'}</b></td>
+       <th><b>$Lang::tr{'common name'}</b></th>
+       <th><b>$Lang::tr{'real address'}</b></th>
+       <th><b>$Lang::tr{'virtual address'}</b></th>
+       <th><b>$Lang::tr{'loged in at'}</b></th>
+       <th><b>$Lang::tr{'bytes sent'}</b></th>
+       <th><b>$Lang::tr{'bytes received'}</b></th>
+       <th><b>$Lang::tr{'last activity'}</b></th>
     </tr>
 END
 ;
@@ -2736,25 +2873,26 @@ END
        }
        my $user2 = @users;
        if ($user2 >= 1){
-           for (my $idx = 1; $idx <= $user2; $idx++){
+               for (my $idx = 1; $idx <= $user2; $idx++){
                                                if ($idx % 2) {
-                                       print "<tr bgcolor='$color{'color20'}'>\n";
-                               } else {
-                                       print "<tr bgcolor='$color{'color22'}'>\n";
+                                                       print "<tr>";
+                                                       $col="bgcolor='$color{'color22'}'";
+                                               } else {
+                                                       print "<tr>";
+                                                       $col="bgcolor='$color{'color20'}'";
                                                }
-                                               print "<td align='left'>$users[$idx-1]{'CommonName'}</td>";
-                                               print "<td align='left'>$users[$idx-1]{'RealAddress'}</td>";
-                                               print "<td align='left'>$users[$idx-1]{'VirtualAddress'}</td>";
-                                               print "<td align='left'>$users[$idx-1]{'Since'}</td>";
-                                               print "<td align='left'>$users[$idx-1]{'BytesSent'}</td>";
-                                               print "<td align='left'>$users[$idx-1]{'BytesReceived'}</td>";
-                                               print "<td align='left'>$users[$idx-1]{'LastRef'}</td>";
-#                      print "<td align='left'>$users[$idx-1]{'Proto'}</td>";
-           }
-       }        
+                                               print "<td align='left' $col>$users[$idx-1]{'CommonName'}</td>";
+                                               print "<td align='left' $col>$users[$idx-1]{'RealAddress'}</td>";
+                                               print "<td align='left' $col>$users[$idx-1]{'VirtualAddress'}</td>";
+                                               print "<td align='left' $col>$users[$idx-1]{'Since'}</td>";
+                                               print "<td align='left' $col>$users[$idx-1]{'BytesSent'}</td>";
+                                               print "<td align='left' $col>$users[$idx-1]{'BytesReceived'}</td>";
+                                               print "<td align='left' $col>$users[$idx-1]{'LastRef'}</td>";
+                       }
+       }
        
        print "</table>";
-       print <<END
+       print <<END;
        <table width='100%' border='0' cellpadding='2' cellspacing='0'>
        <tr><td></td></tr>
        <tr><td></td></tr>
@@ -2863,13 +3001,13 @@ END
 } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'add'} && $cgiparams{'TYPE'} eq '') {
        &General::readhash("${General::swroot}/ovpn/settings", \%vpnsettings);
        &Header::showhttpheaders();
-       &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+       &Header::openpage($Lang::tr{'ovpn'}, 1, '');
        &Header::openbigbox('100%', 'LEFT', '', '');
        &Header::openbox('100%', 'LEFT', $Lang::tr{'connection type'});
 
 if ( -s "${General::swroot}/ovpn/settings") {
 
-       print <<END
+       print <<END;
            <b>$Lang::tr{'connection type'}:</b><br />
            <table border='0' width='100%'><form method='post' ENCTYPE="multipart/form-data">
            <tr><td><input type='radio' name='TYPE' value='host' checked /></td>
@@ -2880,7 +3018,7 @@ if ( -s "${General::swroot}/ovpn/settings") {
                <td class='base'>$Lang::tr{'net to net vpn'} (Upload Client Package)</td></tr>
          <tr><td>&nbsp;</td><td class='base'><input type='file' name='FH' size='30'></td></tr>
          <tr><td>&nbsp;</td><td>Import Connection Name <img src='/blob.gif' /></td></tr>
-    <tr><td>&nbsp;</td><td class='base'><input type='text' name='n2nname' size='30'>Default : Client Packagename</td></tr>
+    <tr><td>&nbsp;</td><td class='base'><input type='text' name='n2nname' size='30'>$Lang::tr{'openvpn default'}: Client Packagename</td></tr>
          <tr><td colspan='3'><hr /></td></tr>
     <tr><td align='right' colspan='3'><input type='submit' name='ACTION' value='$Lang::tr{'add'}' /></td></tr>
          <tr><td class='base' colspan='3' align='left'><img src='/blob.gif' alt='*' />&nbsp;$Lang::tr{'this field may be blank'}</td></tr>
@@ -2890,7 +3028,7 @@ END
        
 
 } else {
-       print <<END
+       print <<END;
                    <b>$Lang::tr{'connection type'}:</b><br />
            <table border='0' width='100%'><form method='post' ENCTYPE="multipart/form-data">
            <tr><td><input type='radio' name='TYPE' value='host' checked /></td> <td class='base'>$Lang::tr{'host to net vpn'}</td></tr>
@@ -2902,6 +3040,7 @@ END
 }
 
        &Header::closebox();
+       print "<div align='center'><a href='/cgi-bin/ovpnmain.cgi'>$Lang::tr{'back'}</a></div>";
        &Header::closebigbox();
        &Header::closepage();
        exit (0);
@@ -3036,8 +3175,9 @@ END
        
 my $complzoactive;
 my $mssfixactive;
+my $authactive;
 my $n2nfragment;
-my @n2nmtudisc = split(/ /, (grep { /^mtu-disc/ } @firen2nconf)[0]);;
+my @n2nmtudisc = split(/ /, (grep { /^mtu-disc/ } @firen2nconf)[0]);
 my @n2nproto2 = split(/ /, (grep { /^proto/ } @firen2nconf)[0]);
 my @n2nproto = split(/-/, $n2nproto2[1]);
 my @n2nport = split(/ /, (grep { /^port/ } @firen2nconf)[0]);
@@ -3054,7 +3194,8 @@ my @n2novpnsub =  split(/\./,$n2novpnsuball[1]);
 my @n2nremsub = split(/ /, (grep { /^route/ } @firen2nconf)[0]);
 my @n2nmgmt =  split(/ /, (grep { /^management/ } @firen2nconf)[0]);
 my @n2nlocalsub  = split(/ /, (grep { /^# remsub/ } @firen2nconf)[0]);
-
+my @n2ncipher = split(/ /, (grep { /^cipher/ } @firen2nconf)[0]);
+my @n2nauth = split(/ /, (grep { /^auth/ } @firen2nconf)[0]);;
 
 ###
 # m.a.d delete CR and LF from arrays for this chomp doesnt work
@@ -3073,6 +3214,8 @@ $n2nlocalsub[2] =~ s/\n|\r//g;
 $n2nfragment[1] =~ s/\n|\r//g;
 $n2nmgmt[2] =~ s/\n|\r//g;
 $n2nmtudisc[1] =~ s/\n|\r//g;
+$n2ncipher[1] =~ s/\n|\r//g;
+$n2nauth[1] =~ s/\n|\r//g;
 chomp ($complzoactive);
 chomp ($mssfixactive);
 
@@ -3109,7 +3252,7 @@ foreach my $dkey (keys %confighash) {
        }
 
 ###
-# Check im Dest Port is vaild
+# Check if Dest Port is vaild
 ###
 
 foreach my $dkey (keys %confighash) {
@@ -3126,7 +3269,7 @@ foreach my $dkey (keys %confighash) {
        
   $key = &General::findhasharraykey (\%confighash);
 
-       foreach my $i (0 .. 39) { $confighash{$key}[$i] = "";}
+       foreach my $i (0 .. 42) { $confighash{$key}[$i] = "";}
 
        $confighash{$key}[0] = 'off';
        $confighash{$key}[1] = $n2nname[0];
@@ -3147,8 +3290,10 @@ foreach my $dkey (keys %confighash) {
        $confighash{$key}[29] = $n2nport[1];
        $confighash{$key}[30] = $complzoactive;
        $confighash{$key}[31] = $n2ntunmtu[1];
-       $confighash{$key}[38] = $n2nmtudisc[1]; 
-
+       $confighash{$key}[38] = $n2nmtudisc[1];
+       $confighash{$key}[39] = $n2nauth[1];
+       $confighash{$key}[40] = $n2ncipher[1];
+       $confighash{$key}[41] = 'disabled';
 
   &General::writehasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash);
  
@@ -3168,7 +3313,7 @@ foreach my $dkey (keys %confighash) {
                &Header::openbox('100%', 'LEFT', 'import ipfire net2net config');
        }
        if ($errormessage eq ''){
-               print <<END             
+       print <<END;
                <!-- ipfire net2net config gui -->
                <table width='100%'>
                <tr><td width='25%'>&nbsp;</td><td width='25%'>&nbsp;</td></tr>
@@ -3177,16 +3322,18 @@ foreach my $dkey (keys %confighash) {
                <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'Act as'}</td><td><b>$confighash{$key}[6]</b></td></tr>                                                              
                <tr><td class='boldbase' nowrap='nowrap'>Remote Host </td><td><b>$confighash{$key}[10]</b></td></tr>
                <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'local subnet'}</td><td><b>$confighash{$key}[8]</b></td></tr>
-               <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'remote subnet'}</td><td><b>$confighash{$key}[11]</b></td></tr>
+               <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'remote subnet'}:</td><td><b>$confighash{$key}[11]</b></td></tr>
                <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'ovpn subnet'}</td><td><b>$confighash{$key}[27]</b></td></tr>
                <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'protocol'}</td><td><b>$confighash{$key}[28]</b></td></tr>
                <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'destination port'}:</td><td><b>$confighash{$key}[29]</b></td></tr>
                <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'comp-lzo'}</td><td><b>$confighash{$key}[30]</b></td></tr>
-               <tr><td class='boldbase' nowrap='nowrap'>MSSFIX </td><td><b>$confighash{$key}[23]</b></td></tr>
-               <tr><td class='boldbase' nowrap='nowrap'>Fragment </td><td><b>$confighash{$key}[24]</b></td></tr>
+               <tr><td class='boldbase' nowrap='nowrap'>MSSFIX:</td><td><b>$confighash{$key}[23]</b></td></tr>
+               <tr><td class='boldbase' nowrap='nowrap'>Fragment:</td><td><b>$confighash{$key}[24]</b></td></tr>
                <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'MTU'}</td><td><b>$confighash{$key}[31]</b></td></tr>
                <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'ovpn mtu-disc'}</td><td><b>$confighash{$key}[38]</b></td></tr>
                <tr><td class='boldbase' nowrap='nowrap'>Management Port </td><td><b>$confighash{$key}[22]</b></td></tr>
+               <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'ovpn hmac'}:</td><td><b>$confighash{$key}[39]</b></td></tr>
+               <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'cipher'}</td><td><b>$confighash{$key}[40]</b></td></tr>
                <tr><td>&nbsp;</td><td>&nbsp;</td></tr> 
     </table>
 END
@@ -3204,7 +3351,7 @@ END
        }       
        &Header::closebigbox();
        &Header::closepage();
-       exit(0);        
+       exit(0);
 
 
 ##
@@ -3257,33 +3404,36 @@ if ($confighash{$cgiparams{'KEY'}}) {
                    $errormessage = $Lang::tr{'invalid key'};
                    goto VPNCONF_END;
                }
-               $cgiparams{'ENABLED'}                   = $confighash{$cgiparams{'KEY'}}[0];
-               $cgiparams{'NAME'}                              = $confighash{$cgiparams{'KEY'}}[1];
-               $cgiparams{'TYPE'}                              = $confighash{$cgiparams{'KEY'}}[3];
-               $cgiparams{'AUTH'}                              = $confighash{$cgiparams{'KEY'}}[4];
-               $cgiparams{'PSK'}                               = $confighash{$cgiparams{'KEY'}}[5];
-               $cgiparams{'SIDE'}                              = $confighash{$cgiparams{'KEY'}}[6];
-               $cgiparams{'LOCAL_SUBNET'}              = $confighash{$cgiparams{'KEY'}}[8];
-               $cgiparams{'REMOTE'}                    = $confighash{$cgiparams{'KEY'}}[10];
+               $cgiparams{'ENABLED'}           = $confighash{$cgiparams{'KEY'}}[0];
+               $cgiparams{'NAME'}              = $confighash{$cgiparams{'KEY'}}[1];
+               $cgiparams{'TYPE'}              = $confighash{$cgiparams{'KEY'}}[3];
+               $cgiparams{'AUTH'}              = $confighash{$cgiparams{'KEY'}}[4];
+               $cgiparams{'PSK'}               = $confighash{$cgiparams{'KEY'}}[5];
+               $cgiparams{'SIDE'}              = $confighash{$cgiparams{'KEY'}}[6];
+               $cgiparams{'LOCAL_SUBNET'}      = $confighash{$cgiparams{'KEY'}}[8];
+               $cgiparams{'REMOTE'}            = $confighash{$cgiparams{'KEY'}}[10];
                $cgiparams{'REMOTE_SUBNET'}     = $confighash{$cgiparams{'KEY'}}[11];
-               $cgiparams{'OVPN_MGMT'}                 = $confighash{$cgiparams{'KEY'}}[22];
-               $cgiparams{'MSSFIX'}                    = $confighash{$cgiparams{'KEY'}}[23];
-               $cgiparams{'FRAGMENT'}                  = $confighash{$cgiparams{'KEY'}}[24];
-               $cgiparams{'REMARK'}                    = $confighash{$cgiparams{'KEY'}}[25];
-               $cgiparams{'INTERFACE'}                 = $confighash{$cgiparams{'KEY'}}[26];
-               $cgiparams{'OVPN_SUBNET'}               = $confighash{$cgiparams{'KEY'}}[27];
-               $cgiparams{'PROTOCOL'}                  = $confighash{$cgiparams{'KEY'}}[28];
-               $cgiparams{'DEST_PORT'}                 = $confighash{$cgiparams{'KEY'}}[29];
-               $cgiparams{'COMPLZO'}                   = $confighash{$cgiparams{'KEY'}}[30];
-               $cgiparams{'MTU'}                               = $confighash{$cgiparams{'KEY'}}[31];
-               $cgiparams{'CHECK1'}                    = $confighash{$cgiparams{'KEY'}}[32];
+               $cgiparams{'OVPN_MGMT'}         = $confighash{$cgiparams{'KEY'}}[22];
+               $cgiparams{'MSSFIX'}            = $confighash{$cgiparams{'KEY'}}[23];
+               $cgiparams{'FRAGMENT'}          = $confighash{$cgiparams{'KEY'}}[24];
+               $cgiparams{'REMARK'}            = $confighash{$cgiparams{'KEY'}}[25];
+               $cgiparams{'INTERFACE'}         = $confighash{$cgiparams{'KEY'}}[26];
+               $cgiparams{'OVPN_SUBNET'}       = $confighash{$cgiparams{'KEY'}}[27];
+               $cgiparams{'PROTOCOL'}          = $confighash{$cgiparams{'KEY'}}[28];
+               $cgiparams{'DEST_PORT'}         = $confighash{$cgiparams{'KEY'}}[29];
+               $cgiparams{'COMPLZO'}           = $confighash{$cgiparams{'KEY'}}[30];
+               $cgiparams{'MTU'}               = $confighash{$cgiparams{'KEY'}}[31];
+               $cgiparams{'CHECK1'}            = $confighash{$cgiparams{'KEY'}}[32];
                $name=$cgiparams{'CHECK1'}      ;
-               $cgiparams{$name}                               = $confighash{$cgiparams{'KEY'}}[33];
-               $cgiparams{'RG'}                                = $confighash{$cgiparams{'KEY'}}[34];
-               $cgiparams{'CCD_DNS1'}                  = $confighash{$cgiparams{'KEY'}}[35];
-               $cgiparams{'CCD_DNS2'}                  = $confighash{$cgiparams{'KEY'}}[36];
-               $cgiparams{'CCD_WINS'}                  = $confighash{$cgiparams{'KEY'}}[37];
+               $cgiparams{$name}               = $confighash{$cgiparams{'KEY'}}[33];
+               $cgiparams{'RG'}                = $confighash{$cgiparams{'KEY'}}[34];
+               $cgiparams{'CCD_DNS1'}          = $confighash{$cgiparams{'KEY'}}[35];
+               $cgiparams{'CCD_DNS2'}          = $confighash{$cgiparams{'KEY'}}[36];
+               $cgiparams{'CCD_WINS'}          = $confighash{$cgiparams{'KEY'}}[37];
                $cgiparams{'PMTU_DISCOVERY'}    = $confighash{$cgiparams{'KEY'}}[38];
+               $cgiparams{'DAUTH'}             = $confighash{$cgiparams{'KEY'}}[39];
+               $cgiparams{'DCIPHER'}           = $confighash{$cgiparams{'KEY'}}[40];
+               $cgiparams{'TLSAUTH'}           = $confighash{$cgiparams{'KEY'}}[41];
        } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'save'}) {
        $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'});
        
@@ -3520,6 +3670,14 @@ if ($cgiparams{'TYPE'} eq 'net') {
       goto VPNCONF_ERROR;                      
                }
 
+    # Check if the input for the transfer net is valid.
+    if (!&General::validipandmask($cgiparams{'OVPN_SUBNET'})){
+                       $errormessage = $Lang::tr{'ccd err invalidnet'};
+                       unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
+           rmdir ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}") || die "Removing Directory fail: $!";
+                       goto VPNCONF_ERROR;
+               }
+
     if ($cgiparams{'OVPN_SUBNET'} eq  $vpnsettings{'DOVPN_SUBNET'}) {
                        $errormessage = $Lang::tr{'openvpn subnet is used'};
                        unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
@@ -3576,12 +3734,31 @@ if ($cgiparams{'TYPE'} eq 'net') {
                  unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
            rmdir ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}") || die "Removing Directory fail: $!";
                  goto VPNCONF_ERROR;
-               } 
+               }
+       
+       if ($cgiparams{'DEST_PORT'} <= 1023) {
+               $errormessage = $Lang::tr{'ovpn port in root range'};
+                 unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
+           rmdir ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}") || die "Removing Directory fail: $!";
+                 goto VPNCONF_ERROR;
+               }
 
-    if ($cgiparams{'OVPN_MGMT'} eq  '') {
-                       $cgiparams{'OVPN_MGMT'} = $cgiparams{'DEST_PORT'};              
+       if ($cgiparams{'OVPN_MGMT'} eq '') {
+               $cgiparams{'OVPN_MGMT'} = $cgiparams{'DEST_PORT'};              
                }
-   
+       
+       if ($cgiparams{'OVPN_MGMT'} <= 1023) {
+               $errormessage = $Lang::tr{'ovpn mgmt in root range'};
+                 unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
+           rmdir ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}") || die "Removing Directory fail: $!";
+                 goto VPNCONF_ERROR;
+       }
+       #Check if remote subnet is used elsewhere
+       my ($n2nip,$n2nsub)=split("/",$cgiparams{'REMOTE_SUBNET'});
+       $warnmessage=&General::checksubnets('',$n2nip,'ovpn');
+       if ($warnmessage){
+               $warnmessage=$Lang::tr{'remote subnet'}." ($cgiparams{'REMOTE_SUBNET'}) <br>".$warnmessage;
+       }
 }
 
 #      if (($cgiparams{'TYPE'} eq 'net') && ($cgiparams{'SIDE'} !~ /^(left|right)$/)) {
@@ -3603,34 +3780,36 @@ if ($cgiparams{'TYPE'} eq 'net') {
            }
        }
 
-       if (($cgiparams{'TYPE'} eq 'net') && (! $cgiparams{'REMOTE'})) {
-           $errormessage = $Lang::tr{'invalid input for remote host/ip'};
-           if ($cgiparams{'TYPE'} eq 'net') {
-      unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
-           rmdir ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}") || die "Removing Directory fail: $!";
-      }
-           goto VPNCONF_ERROR;
-       }
+       # Check if a remote host/IP has been set for the client.
+       if ($cgiparams{'TYPE'} eq 'net') {
+               if ($cgiparams{'SIDE'} ne 'server' && $cgiparams{'REMOTE'} eq '') {
+                       $errormessage = $Lang::tr{'invalid input for remote host/ip'};
 
-       if ($cgiparams{'REMOTE'}) {
-           if (! &General::validip($cgiparams{'REMOTE'})) {
-               if (! &General::validfqdn ($cgiparams{'REMOTE'}))  {
-                   $errormessage = $Lang::tr{'invalid input for remote host/ip'};
-                   if ($cgiparams{'TYPE'} eq 'net') {
-        unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
-             rmdir ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}") || die "Removing Directory fail: $!";
-        }
-                   goto VPNCONF_ERROR;
-               } else {
-                   if (&valid_dns_host($cgiparams{'REMOTE'})) {
-                       $warnmessage = "$Lang::tr{'check vpn lr'} $cgiparams{'REMOTE'}. $Lang::tr{'dns check failed'}";
-                       if ($cgiparams{'TYPE'} eq 'net') {
+                       # Check if this is a N2N connection and drop temporary config.
+                       unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
+                       rmdir ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}") || die "Removing Directory fail: $!";
 
-      }
-                   }
+                       goto VPNCONF_ERROR;
+               }
+
+               # Check if a remote host/IP has been configured - the field can be empty on the server side.
+               if ($cgiparams{'REMOTE'} ne '') {
+                       # Check if the given IP is valid - otherwise check if it is a valid domain.
+                       if (! &General::validip($cgiparams{'REMOTE'})) {
+                               # Check for a valid domain.
+                               if (! &General::validfqdn ($cgiparams{'REMOTE'}))  {
+                                       $errormessage = $Lang::tr{'invalid input for remote host/ip'};
+
+                                       # Check if this is a N2N connection and drop temporary config.
+                                       unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
+                                       rmdir ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}") || die "Removing Directory fail: $!";
+
+                                       goto VPNCONF_ERROR;
+                               }
+                       }
                }
-           }
        }
+
        if ($cgiparams{'TYPE'} ne 'host') {
             unless (&General::validipandmask($cgiparams{'LOCAL_SUBNET'})) {
                    $errormessage = $Lang::tr{'local subnet is invalid'}; 
@@ -3791,6 +3970,8 @@ if ($cgiparams{'TYPE'} eq 'net') {
            }
            if ($cgiparams{'CERT_NAME'} !~ /^[a-zA-Z0-9 ,\.\-_]+$/) {
                $errormessage = $Lang::tr{'invalid input for name'};
+               unlink ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}/$cgiparams{'NAME'}.conf") or die "Removing Configfile fail: $!";
+               rmdir ("${General::swroot}/ovpn/n2nconf/$cgiparams{'NAME'}") || die "Removing Directory fail: $!";
                goto VPNCONF_ERROR;
            }
            if ($cgiparams{'CERT_EMAIL'} ne '' && (! &General::validemail($cgiparams{'CERT_EMAIL'}))) {
@@ -3863,7 +4044,7 @@ if ($cgiparams{'TYPE'} eq 'net') {
                }
            } else {    # child
                unless (exec ('/usr/bin/openssl', 'req', '-nodes', '-rand', '/proc/interrupts:/proc/net/rt_cache',
-                       '-newkey', 'rsa:1024',
+                       '-newkey', 'rsa:2048',
                        '-keyout', "${General::swroot}/ovpn/certs/$cgiparams{'NAME'}key.pem",
                        '-out', "${General::swroot}/ovpn/certs/$cgiparams{'NAME'}req.pem",
                        '-config',"${General::swroot}/ovpn/openssl/ovpn.cnf")) {
@@ -3932,7 +4113,7 @@ if ($cgiparams{'TYPE'} eq 'net') {
        
        if (! $key) {
            $key = &General::findhasharraykey (\%confighash);
-           foreach my $i (0 .. 38) { $confighash{$key}[$i] = "";}
+           foreach my $i (0 .. 43) { $confighash{$key}[$i] = "";}
        }
        $confighash{$key}[0]            = $cgiparams{'ENABLED'};
        $confighash{$key}[1]            = $cgiparams{'NAME'};
@@ -3951,13 +4132,13 @@ if ($cgiparams{'TYPE'} eq 'net') {
            $confighash{$key}[6]        = $cgiparams{'SIDE'};
            $confighash{$key}[11]       = $cgiparams{'REMOTE_SUBNET'};
        }
-       $confighash{$key}[8]                    = $cgiparams{'LOCAL_SUBNET'};
+       $confighash{$key}[8]            = $cgiparams{'LOCAL_SUBNET'};
        $confighash{$key}[10]           = $cgiparams{'REMOTE'};
-  if ($cgiparams{'OVPN_MGMT'} eq '') {
+       if ($cgiparams{'OVPN_MGMT'} eq '') {
        $confighash{$key}[22]           = $confighash{$key}[29];
-  } else {
+       } else {
        $confighash{$key}[22]           = $cgiparams{'OVPN_MGMT'};
-  }
+       }
        $confighash{$key}[23]           = $cgiparams{'MSSFIX'};
        $confighash{$key}[24]           = $cgiparams{'FRAGMENT'};
        $confighash{$key}[25]           = $cgiparams{'REMARK'};
@@ -3975,8 +4156,9 @@ if ($cgiparams{'TYPE'} eq 'net') {
        $confighash{$key}[35]           = $cgiparams{'CCD_DNS1'};
        $confighash{$key}[36]           = $cgiparams{'CCD_DNS2'};
        $confighash{$key}[37]           = $cgiparams{'CCD_WINS'};
-       $confighash{$key}[38]                   = $cgiparams{'PMTU_DISCOVERY'};
-
+       $confighash{$key}[38]           = $cgiparams{'PMTU_DISCOVERY'};
+       $confighash{$key}[39]           = $cgiparams{'DAUTH'};
+       $confighash{$key}[40]           = $cgiparams{'DCIPHER'};
 
        &General::writehasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash);
        
@@ -3987,7 +4169,6 @@ if ($cgiparams{'TYPE'} eq 'net') {
                        if ( -e "${General::swroot}/ovpn/ccd/$confighash{$key}[2]"){
                                unlink "${General::swroot}/ovpn/ccd/$cgiparams{'CERT_NAME'}";
                        }
-                       $confighash{$key}[2] =~ s/ /_/gi;
                        open ( CCDRWCONF,'>',"${General::swroot}/ovpn/ccd/$confighash{$key}[2]") or die "Unable to create clientconfigfile $!";
                        print CCDRWCONF "# OpenVPN clientconfig from ccd extension by Copymaster#\n\n";
                        if($cgiparams{'CHECK1'} eq 'dynamic'){
@@ -4088,10 +4269,11 @@ if ($cgiparams{'TYPE'} eq 'net') {
         $cgiparams{'MSSFIX'} = 'on';
         $cgiparams{'FRAGMENT'} = '1300';
        $cgiparams{'PMTU_DISCOVERY'} = 'off';
+       $cgiparams{'DAUTH'} = 'SHA1';
 ###
 # m.a.d n2n end
 ###    
-       $cgiparams{'SIDE'} = 'left';
+        $cgiparams{'SIDE'} = 'left';
        if ( ! -f "${General::swroot}/ovpn/ca/cakey.pem" ) {
            $cgiparams{'AUTH'} = 'psk';
        } elsif ( ! -f "${General::swroot}/ovpn/ca/cacert.pem") {
@@ -4147,12 +4329,45 @@ if ($cgiparams{'TYPE'} eq 'net') {
     $checked{'MSSFIX'}{'on'} = '';
     $checked{'MSSFIX'}{$cgiparams{'MSSFIX'}} = 'CHECKED';
 
+    if ($cgiparams{'PMTU_DISCOVERY'} eq '') {
+       $cgiparams{'PMTU_DISCOVERY'} = 'off';
+    }
     $checked{'PMTU_DISCOVERY'}{$cgiparams{'PMTU_DISCOVERY'}} = 'checked=\'checked\'';
 
+    $selected{'DCIPHER'}{'CAMELLIA-256-CBC'} = '';
+    $selected{'DCIPHER'}{'CAMELLIA-192-CBC'} = '';
+    $selected{'DCIPHER'}{'CAMELLIA-128-CBC'} = '';
+    $selected{'DCIPHER'}{'AES-256-CBC'} = '';
+    $selected{'DCIPHER'}{'AES-192-CBC'} = '';
+    $selected{'DCIPHER'}{'AES-128-CBC'} = '';
+    $selected{'DCIPHER'}{'DESX-CBC'} = '';
+    $selected{'DCIPHER'}{'SEED-CBC'} = '';
+    $selected{'DCIPHER'}{'DES-EDE3-CBC'} = '';
+    $selected{'DCIPHER'}{'DES-EDE-CBC'} = '';
+    $selected{'DCIPHER'}{'CAST5-CBC'} = '';
+    $selected{'DCIPHER'}{'BF-CBC'} = '';
+    $selected{'DCIPHER'}{'DES-CBC'} = '';
+    # If no cipher has been chossen yet, select
+    # the old default (AES-256-CBC) for compatiblity reasons.
+    if ($cgiparams{'DCIPHER'} eq '') {
+       $cgiparams{'DCIPHER'} = 'AES-256-CBC';
+    }
+    $selected{'DCIPHER'}{$cgiparams{'DCIPHER'}} = 'SELECTED';
+    $selected{'DAUTH'}{'whirlpool'} = '';
+    $selected{'DAUTH'}{'SHA512'} = '';
+    $selected{'DAUTH'}{'SHA384'} = '';
+    $selected{'DAUTH'}{'SHA256'} = '';
+    $selected{'DAUTH'}{'SHA1'} = '';
+    # If no hash algorythm has been choosen yet, select
+    # the old default value (SHA1) for compatiblity reasons.
+    if ($cgiparams{'DAUTH'} eq '') {
+       $cgiparams{'DAUTH'} = 'SHA1';
+    }
+    $selected{'DAUTH'}{$cgiparams{'DAUTH'}} = 'SELECTED';
 
     if (1) {
        &Header::showhttpheaders();
-       &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+       &Header::openpage($Lang::tr{'ovpn'}, 1, '');
        &Header::openbigbox('100%', 'LEFT', '', $errormessage);
        if ($errormessage) {
            &Header::openbox('100%', 'LEFT', $Lang::tr{'error messages'});
@@ -4178,28 +4393,25 @@ if ($cgiparams{'TYPE'} eq 'net') {
 
        &Header::openbox('100%', 'LEFT', "$Lang::tr{'connection'}:");
        print "<table width='100%'  border='0'>\n";
-       
-       
-       
+
        print "<tr><td width='14%' class='boldbase'>$Lang::tr{'name'}: </td>";
        
        if ($cgiparams{'TYPE'} eq 'host') {
            if ($cgiparams{'KEY'}) {
                print "<td width='35%' class='base'><input type='hidden' name='NAME' value='$cgiparams{'NAME'}' />$cgiparams{'NAME'}</td>";
            } else {
-                       
                print "<td width='35%'><input type='text' name='NAME' value='$cgiparams{'NAME'}' maxlength='20' size='30' /></td>";
            }
 #          print "<tr><td>$Lang::tr{'interface'}</td>";
 #          print "<td><select name='INTERFACE'>";
 #          print "<option value='RED' $selected{'INTERFACE'}{'RED'}>RED</option>";
-#          if ($netsettings{'BLUE_DEV'} ne '') {
-#              print "<option value='BLUE' $selected{'INTERFACE'}{'BLUE'}>BLUE</option>";
-#          }
-#          print "<option value='GREEN' $selected{'INTERFACE'}{'GREEN'}>GREEN</option>";
-#          print "<option value='ORANGE' $selected{'INTERFACE'}{'ORANGE'}>ORANGE</option>";
-#          print "</select></td></tr>";
-#          print <<END
+#              if ($netsettings{'BLUE_DEV'} ne '') {
+#                      print "<option value='BLUE' $selected{'INTERFACE'}{'BLUE'}>BLUE</option>";
+#              }
+#              print "<option value='GREEN' $selected{'INTERFACE'}{'GREEN'}>GREEN</option>";
+#              print "<option value='ORANGE' $selected{'INTERFACE'}{'ORANGE'}>ORANGE</option>";
+#              print "</select></td></tr>";
+#              print <<END;
        } else {
            print "<input type='hidden' name='INTERFACE' value='red' />";
            if ($cgiparams{'KEY'}) {
@@ -4207,51 +4419,70 @@ if ($cgiparams{'TYPE'} eq 'net') {
            } else {
                print "<td width='25%'><input type='text' name='NAME' value='$cgiparams{'NAME'}' maxlength='20' /></td>";
            }
-           
-           
-           
-           print <<END
+           print <<END;
                    <td width='25%'>&nbsp;</td>
-                   <td width='25%'>&nbsp;</td></tr>
-               <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'Act as'}</td>
-                   <td><select name='SIDE'><option value='server' $selected{'SIDE'}{'server'}>$Lang::tr{'openvpn server'}</option>
-                                           <option value='client' $selected{'SIDE'}{'client'}>$Lang::tr{'openvpn client'}</option></select></td>
-                   <td class='boldbase'>$Lang::tr{'remote host/ip'}:</td>
-                   <td><input type='TEXT' name='REMOTE' value='$cgiparams{'REMOTE'}' /></td></tr>
-               <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'local subnet'}</td>
-                   <td><input type='TEXT' name='LOCAL_SUBNET' value='$cgiparams{'LOCAL_SUBNET'}' /></td>
-                   <td class='boldbase' nowrap='nowrap'>$Lang::tr{'remote subnet'}</td>
-                   <td><input type='text' name='REMOTE_SUBNET' value='$cgiparams{'REMOTE_SUBNET'}' /></td></tr>
-               <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'ovpn subnet'}</td>
-                   <td><input type='TEXT' name='OVPN_SUBNET' value='$cgiparams{'OVPN_SUBNET'}' /></td></tr>
-               <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'protocol'}</td>
-                
-     <td><select name='PROTOCOL'><option value='udp' $selected{'PROTOCOL'}{'udp'}>UDP</option>
-                                               <option value='tcp' $selected{'PROTOCOL'}{'tcp'}>TCP</option></select></td>   
-                   
-        <td class='boldbase'>$Lang::tr{'destination port'}:</td>
-                   <td><input type='TEXT' name='DEST_PORT' value='$cgiparams{'DEST_PORT'}' size='5' /></td></tr>
-               <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'comp-lzo'} &nbsp;<img src='/blob.gif'</td>
-                   <td><input type='checkbox' name='COMPLZO' $checked{'COMPLZO'}{'on'} /></td>
-                   
-                     <tr><td class='boldbase' nowrap='nowrap'>mssfix &nbsp;<img src='/blob.gif' /></td>
-                   <td><input type='checkbox' name='MSSFIX' $checked{'MSSFIX'}{'on'} /></td>
-        <td>$Lang::tr{'openvpn default'}: <span class="base">on</span></td>
-        
-          <tr><td class='boldbase' nowrap='nowrap'>fragment &nbsp;<img src='/blob.gif' /></td>
-                   <td><input type='TEXT' name='FRAGMENT' VALUE='$cgiparams{'FRAGMENT'}'size='5' /></td>
-                   <td>$Lang::tr{'openvpn default'}: <span class="base">1300</span></td>
-                   
-               <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'MTU'}&nbsp;<img src='/blob.gif' /></td>
-                   <td> <input type='TEXT' name='MTU' VALUE='$cgiparams{'MTU'}'size='5' /></td>
-        <td colspan='2'>$Lang::tr{'openvpn default'}: udp/tcp <span class="base">1500/1400</span></td>
-        
-        <tr><td class='boldbase' nowrap='nowrap'>Management Port&nbsp;<img src='/blob.gif' /></td>
-                   <td> <input type='TEXT' name='OVPN_MGMT' VALUE='$cgiparams{'OVPN_MGMT'}'size='5' /></td>
-        <td colspan='2'>$Lang::tr{'openvpn default'}: <span class="base">$Lang::tr{'destination port'}</span></td>
+                   <td width='25%'>&nbsp;</td></tr>    
+       <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'Act as'}</td>
+               <td><select name='SIDE'>
+                               <option value='server' $selected{'SIDE'}{'server'}>$Lang::tr{'openvpn server'}</option>
+                               <option value='client' $selected{'SIDE'}{'client'}>$Lang::tr{'openvpn client'}</option>
+                       </select>
+               </td>
+
+               <td class='boldbase'>$Lang::tr{'remote host/ip'}:</td>
+               <td><input type='TEXT' name='REMOTE' value='$cgiparams{'REMOTE'}' /></td>
+       </tr>
 
+       <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'local subnet'}</td>
+               <td><input type='TEXT' name='LOCAL_SUBNET' value='$cgiparams{'LOCAL_SUBNET'}' /></td>
+
+               <td class='boldbase' nowrap='nowrap'>$Lang::tr{'remote subnet'}</td>
+               <td><input type='text' name='REMOTE_SUBNET' value='$cgiparams{'REMOTE_SUBNET'}' /></td>
+       </tr>
+
+       <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'ovpn subnet'}</td>
+               <td><input type='TEXT' name='OVPN_SUBNET' value='$cgiparams{'OVPN_SUBNET'}' /></td>
+
+               <td class='boldbase' nowrap='nowrap'>$Lang::tr{'protocol'}</td>
+               <td><select name='PROTOCOL'>
+                       <option value='udp' $selected{'PROTOCOL'}{'udp'}>UDP</option>
+                       <option value='tcp' $selected{'PROTOCOL'}{'tcp'}>TCP</option></select></td>
+       </tr>
+       
        <tr>
-               <td class='boldbase' nowrap='nowrap'>$Lang::tr{'ovpn mtu-disc'}</td>
+               <td class='boldbase'>$Lang::tr{'destination port'}:</td>
+               <td><input type='TEXT' name='DEST_PORT' value='$cgiparams{'DEST_PORT'}' size='5' /></td>
+
+               <td class='boldbase' nowrap='nowrap'>Management Port ($Lang::tr{'openvpn default'}: <span class="base">$Lang::tr{'destination port'}): &nbsp;<img src='/blob.gif' /></td>
+               <td> <input type='TEXT' name='OVPN_MGMT' VALUE='$cgiparams{'OVPN_MGMT'}'size='5' /></td>
+       </tr>
+
+       <tr><td colspan=4><hr /></td></tr><tr>
+       
+       <tr>
+               <td class'base'><b>$Lang::tr{'MTU settings'}</b></td>
+       </tr>
+
+        <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'MTU'}&nbsp;<img src='/blob.gif' /></td>
+               <td><input type='TEXT' name='MTU' VALUE='$cgiparams{'MTU'}'size='5' /></td>
+               <td colspan='2'>$Lang::tr{'openvpn default'}: udp/tcp <span class="base">1500/1400</span></td>
+       </tr>
+
+       <tr><td class='boldbase' nowrap='nowrap'>fragment &nbsp;<img src='/blob.gif' /></td>
+               <td><input type='TEXT' name='FRAGMENT' VALUE='$cgiparams{'FRAGMENT'}'size='5' /></td>
+               <td>$Lang::tr{'openvpn default'}: <span class="base">1300</span></td>
+       </tr>
+
+       <tr><td class='boldbase' nowrap='nowrap'>mssfix &nbsp;<img src='/blob.gif' /></td>
+               <td><input type='checkbox' name='MSSFIX' $checked{'MSSFIX'}{'on'} /></td>
+               <td>$Lang::tr{'openvpn default'}: <span class="base">on</span></td>
+       </tr>
+
+        <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'comp-lzo'} &nbsp;<img src='/blob.gif'</td>
+               <td><input type='checkbox' name='COMPLZO' $checked{'COMPLZO'}{'on'} /></td>
+       </tr>
+
+       <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'ovpn mtu-disc'}</td>
                <td colspan='3'>
                        <input type='radio' name='PMTU_DISCOVERY' value='yes' $checked{'PMTU_DISCOVERY'}{'yes'} /> $Lang::tr{'ovpn mtu-disc yes'}
                        <input type='radio' name='PMTU_DISCOVERY' value='maybe' $checked{'PMTU_DISCOVERY'}{'maybe'} /> $Lang::tr{'ovpn mtu-disc maybe'}
@@ -4260,6 +4491,40 @@ if ($cgiparams{'TYPE'} eq 'net') {
                </td>
        </tr>
 
+<tr><td colspan=4><hr /></td></tr><tr>
+       <tr>
+               <td class'base'><b>$Lang::tr{'ovpn crypt options'}:</b></td>
+       </tr>
+
+       <tr><td class='boldbase'>$Lang::tr{'cipher'}</td>
+               <td><select name='DCIPHER'>
+                               <option value='CAMELLIA-256-CBC'        $selected{'DCIPHER'}{'CAMELLIA-256-CBC'}>CAMELLIA-CBC (256 $Lang::tr{'bit'})</option>
+                               <option value='CAMELLIA-192-CBC'        $selected{'DCIPHER'}{'CAMELLIA-192-CBC'}>CAMELLIA-CBC (192 $Lang::tr{'bit'})</option>
+                               <option value='CAMELLIA-128-CBC'        $selected{'DCIPHER'}{'CAMELLIA-128-CBC'}>CAMELLIA-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='AES-256-CBC'             $selected{'DCIPHER'}{'AES-256-CBC'}>AES-CBC (256 $Lang::tr{'bit'}, $Lang::tr{'default'})</option>
+                               <option value='AES-192-CBC'             $selected{'DCIPHER'}{'AES-192-CBC'}>AES-CBC (192 $Lang::tr{'bit'})</option>
+                               <option value='AES-128-CBC'             $selected{'DCIPHER'}{'AES-128-CBC'}>AES-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='DES-EDE3-CBC'            $selected{'DCIPHER'}{'DES-EDE3-CBC'}>DES-EDE3-CBC (192 $Lang::tr{'bit'})</option>
+                               <option value='DESX-CBC'                $selected{'DCIPHER'}{'DESX-CBC'}>DESX-CBC (192 $Lang::tr{'bit'})</option>
+                               <option value='SEED-CBC'                $selected{'DCIPHER'}{'SEED-CBC'}>SEED-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='DES-EDE-CBC'             $selected{'DCIPHER'}{'DES-EDE-CBC'}>DES-EDE-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='BF-CBC'                  $selected{'DCIPHER'}{'BF-CBC'}>BF-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='CAST5-CBC'               $selected{'DCIPHER'}{'CAST5-CBC'}>CAST5-CBC (128 $Lang::tr{'bit'})</option>
+                       </select>
+               </td>
+
+               <td class='boldbase'>$Lang::tr{'ovpn ha'}:</td>
+               <td><select name='DAUTH'>
+                               <option value='whirlpool'               $selected{'DAUTH'}{'whirlpool'}>Whirlpool (512 $Lang::tr{'bit'})</option>
+                               <option value='SHA512'                  $selected{'DAUTH'}{'SHA512'}>SHA2 (512 $Lang::tr{'bit'})</option>
+                               <option value='SHA384'                  $selected{'DAUTH'}{'SHA384'}>SHA2 (384 $Lang::tr{'bit'})</option>
+                               <option value='SHA256'                  $selected{'DAUTH'}{'SHA256'}>SHA2 (256 $Lang::tr{'bit'})</option>
+                               <option value='SHA1'                    $selected{'DAUTH'}{'SHA1'}>SHA1 (160 $Lang::tr{'bit'} Default)</option>
+                       </select>
+               </td>
+       </tr>
+       <tr><td colspan=4><hr /></td></tr><tr>
+
 END
 ;
        }
@@ -4322,7 +4587,7 @@ if ($cgiparams{'TYPE'} eq 'host') {
  
  if ($cgiparams{'TYPE'} eq 'host') {
 
-print <<END
+       print <<END;
            <table width='100%' cellpadding='0' cellspacing='5' border='0'>
            
            <tr><td><input type='radio' name='AUTH' value='certreq' $checked{'AUTH'}{'certreq'} $cakeydisabled /></td><td class='base'>$Lang::tr{'upload a certificate request'}</td><td class='base' rowspan='2'><input type='file' name='FH' size='30' $cacrtdisabled></td></tr>
@@ -4347,7 +4612,7 @@ END
 
 } else {
 
-print <<END
+       print <<END;
            <table width='100%' cellpadding='0' cellspacing='5' border='0'>
       
            <tr><td><input type='radio' name='AUTH' value='certgen' $checked{'AUTH'}{'certgen'} $cakeydisabled /></td><td class='base'>$Lang::tr{'generate a certificate'}</td><td>&nbsp;</td></tr>
@@ -4381,7 +4646,7 @@ END
 ###
 
 if ($cgiparams{'TYPE'} eq 'host') {
-           print <<END
+       print <<END;
            </select></td></tr>
 
        <td>&nbsp;</td><td class='base'>$Lang::tr{'valid till'} (days):</td>
@@ -4389,7 +4654,7 @@ if ($cgiparams{'TYPE'} eq 'host') {
    <tr><td>&nbsp;</td>
                <td class='base'>$Lang::tr{'pkcs12 file password'}:</td>
                <td class='base' nowrap='nowrap'><input type='password' name='CERT_PASS1' value='$cgiparams{'CERT_PASS1'}' size='32' $cakeydisabled /></td></tr>
-           <tr><td>&nbsp;</td><td class='base'>$Lang::tr{'pkcs12 file password'}:<BR>($Lang::tr{'confirmation'})</td>
+           <tr><td>&nbsp;</td><td class='base'>$Lang::tr{'pkcs12 file password'}:<br>($Lang::tr{'confirmation'})</td>
                <td class='base' nowrap='nowrap'><input type='password' name='CERT_PASS2' value='$cgiparams{'CERT_PASS2'}' size='32' $cakeydisabled /></td></tr>
      <tr><td colspan='3'>&nbsp;</td></tr>
      <tr><td colspan='3'><hr /></td></tr>
@@ -4397,7 +4662,7 @@ if ($cgiparams{'TYPE'} eq 'host') {
      </table>
 END
 }else{
-           print <<END
+       print <<END;
            </select></td></tr>
    <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
         <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
@@ -4525,7 +4790,7 @@ END
        if (&haveOrangeNet() && $selorange == '1'){ print"<option selected>$Lang::tr{'orange'}</option>";$selorange=0;}elsif(&haveOrangeNet() && $selorange == '0'){print"<option>$Lang::tr{'orange'}</option>";}                       
        if ($selgreen == '1' || $other == '0'){ print"<option selected>$Lang::tr{'green'}</option>";$set=0;}else{print"<option>$Lang::tr{'green'}</option>";};
        
-       print<<END
+       print<<END;
        </select></td><td valign='top'>DNS1:</td><td valign='top'><input type='TEXT' name='CCD_DNS1' value='$cgiparams{'CCD_DNS1'}' size='30' /></td></tr>
        <tr valign='top'><td>DNS2:</td><td><input type='TEXT' name='CCD_DNS2' value='$cgiparams{'CCD_DNS2'}' size='30' /></td></tr>
        <tr valign='top'><td valign='top'>WINS:</td><td><input type='TEXT' name='CCD_WINS' value='$cgiparams{'CCD_WINS'}' size='30' /></td></tr></table><br><hr>
@@ -4573,18 +4838,24 @@ END
     
 #default setzen
     if ($cgiparams{'DCIPHER'} eq '') {
-       $cgiparams{'DCIPHER'} =  'BF-CBC';     
+               $cgiparams{'DCIPHER'} =  'AES-256-CBC';
     }
     if ($cgiparams{'DDEST_PORT'} eq '') {
-       $cgiparams{'DDEST_PORT'} =  '1194';     
+               $cgiparams{'DDEST_PORT'} =  '1194';
     }
     if ($cgiparams{'DMTU'} eq '') {
-       $cgiparams{'DMTU'} =  '1400';     
+               $cgiparams{'DMTU'} =  '1400';
+    }
+    if ($cgiparams{'MSSFIX'} eq '') {
+               $cgiparams{'MSSFIX'} = 'off';
+    }
+       if ($cgiparams{'DAUTH'} eq '') {
+               $cgiparams{'DAUTH'} = 'SHA1';
     }
     if ($cgiparams{'DOVPN_SUBNET'} eq '') {
-       $cgiparams{'DOVPN_SUBNET'} = '10.' . int(rand(256)) . '.' . int(rand(256)) . '.0/255.255.255.0';
+               $cgiparams{'DOVPN_SUBNET'} = '10.' . int(rand(256)) . '.' . int(rand(256)) . '.0/255.255.255.0';
     }
-       $checked{'ENABLED'}{'off'} = '';
+    $checked{'ENABLED'}{'off'} = '';
     $checked{'ENABLED'}{'on'} = '';
     $checked{'ENABLED'}{$cgiparams{'ENABLED'}} = 'CHECKED';
     $checked{'ENABLED_BLUE'}{'off'} = '';
@@ -4600,23 +4871,33 @@ END
     $selected{'DPROTOCOL'}{'udp'} = '';
     $selected{'DPROTOCOL'}{'tcp'} = '';
     $selected{'DPROTOCOL'}{$cgiparams{'DPROTOCOL'}} = 'SELECTED';
-    
-    $selected{'DCIPHER'}{'DES-CBC'} = '';
-    $selected{'DCIPHER'}{'DES-EDE-CBC'} = '';
+
+    $selected{'DCIPHER'}{'CAMELLIA-256-CBC'} = '';
+    $selected{'DCIPHER'}{'CAMELLIA-192-CBC'} = '';
+    $selected{'DCIPHER'}{'CAMELLIA-128-CBC'} = '';
+    $selected{'DCIPHER'}{'AES-256-CBC'} = '';
+    $selected{'DCIPHER'}{'AES-192-CBC'} = '';
+    $selected{'DCIPHER'}{'AES-128-CBC'} = '';
     $selected{'DCIPHER'}{'DES-EDE3-CBC'} = '';
     $selected{'DCIPHER'}{'DESX-CBC'} = '';
-    $selected{'DCIPHER'}{'RC2-CBC'} = '';
-    $selected{'DCIPHER'}{'RC2-40-CBC'} = '';
-    $selected{'DCIPHER'}{'RC2-64-CBC'} = '';
+    $selected{'DCIPHER'}{'SEED-CBC'} = '';
+    $selected{'DCIPHER'}{'DES-EDE-CBC'} = '';
+    $selected{'DCIPHER'}{'CAST5-CBC'} = '';
     $selected{'DCIPHER'}{'BF-CBC'} = '';
-    $selected{'DCIPHER'}{'CAST5-CBC'} = '';    
-    $selected{'DCIPHER'}{'AES-128-CBC'} = '';
-    $selected{'DCIPHER'}{'AES-192-CBC'} = '';
-    $selected{'DCIPHER'}{'AES-256-CBC'} = '';
+    $selected{'DCIPHER'}{'DES-CBC'} = '';
     $selected{'DCIPHER'}{$cgiparams{'DCIPHER'}} = 'SELECTED';
+
+    $selected{'DAUTH'}{'whirlpool'} = '';
+    $selected{'DAUTH'}{'SHA512'} = '';
+    $selected{'DAUTH'}{'SHA384'} = '';
+    $selected{'DAUTH'}{'SHA256'} = '';
+    $selected{'DAUTH'}{'SHA1'} = '';
+    $selected{'DAUTH'}{$cgiparams{'DAUTH'}} = 'SELECTED';
+
     $checked{'DCOMPLZO'}{'off'} = '';
     $checked{'DCOMPLZO'}{'on'} = '';
     $checked{'DCOMPLZO'}{$cgiparams{'DCOMPLZO'}} = 'CHECKED';
+
 # m.a.d
     $checked{'MSSFIX'}{'off'} = '';
     $checked{'MSSFIX'}{'on'} = '';
@@ -4633,6 +4914,16 @@ END
        &Header::closebox();
     }
 
+       if ($warnmessage) {
+               &Header::openbox('100%', 'LEFT', $Lang::tr{'warning messages'});
+               print "$warnmessage<br>";
+               print "$Lang::tr{'fwdfw warn1'}<br>";
+               &Header::closebox();
+               print"<center><form method='post'><input type='submit' name='ACTION' value='$Lang::tr{'ok'}' style='width: 5em;'></form>";
+               &Header::closepage();
+               exit 0;
+       }
+
     my $sactive = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourred}' width='50%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'stopped'}</font></b></td></tr></table>";
     my $srunning = "no";
     my $activeonrun = "";
@@ -4644,8 +4935,8 @@ END
        $activeonrun = "disabled='disabled'";
     }  
     &Header::openbox('100%', 'LEFT', $Lang::tr{'global settings'});    
-       print <<END     
-    <table width='100%' border=0>
+       print <<END;
+    <table width='100%' border='0'>
     <form method='post'>
     <td width='25%'>&nbsp;</td>
     <td width='25%'>&nbsp;</td>
@@ -4664,7 +4955,7 @@ END
        print "<tr><td class='boldbase'>$Lang::tr{'ovpn on orange'}</td>";
        print "<td><input type='checkbox' name='ENABLED_ORANGE' $checked{'ENABLED_ORANGE'}{'on'} /></td>";
     }  
-    print <<END        
+    print <<END;
     <tr><td class='base' nowrap='nowrap' colspan='2'>$Lang::tr{'local vpn hostname/ip'}:<br /><input type='text' name='VPN_IP' value='$cgiparams{'VPN_IP'}' size='30' /></td>
        <td class='boldbase' nowrap='nowrap' colspan='2'>$Lang::tr{'ovpn subnet'}<br /><input type='TEXT' name='DOVPN_SUBNET' value='$cgiparams{'DOVPN_SUBNET'}' size='30' /></td></tr>
     <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'ovpn device'}</td>
@@ -4677,23 +4968,28 @@ END
         <td class='boldbase'>$Lang::tr{'destination port'}:</td>
         <td><input type='TEXT' name='DDEST_PORT' value='$cgiparams{'DDEST_PORT'}' size='5' /></td></tr>
     <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'MTU'}&nbsp;</td>
-        <td> <input type='TEXT' name='DMTU' VALUE='$cgiparams{'DMTU'}'size='5' /></TD>
+        <td> <input type='TEXT' name='DMTU' VALUE='$cgiparams{'DMTU'}' size='5' /></td>
+
+               <td class='boldbase' nowrap='nowrap'>$Lang::tr{'cipher'}</td>
+               <td><select name='DCIPHER'>
+                               <option value='CAMELLIA-256-CBC' $selected{'DCIPHER'}{'CAMELLIA-256-CBC'}>CAMELLIA-CBC (256 $Lang::tr{'bit'})</option>
+                               <option value='CAMELLIA-192-CBC' $selected{'DCIPHER'}{'CAMELLIA-192-CBC'}>CAMELLIA-CBC (192 $Lang::tr{'bit'})</option>
+                               <option value='CAMELLIA-128-CBC' $selected{'DCIPHER'}{'CAMELLIA-128-CBC'}>CAMELLIA-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='AES-256-CBC' $selected{'DCIPHER'}{'AES-256-CBC'}>AES-CBC (256 $Lang::tr{'bit'})</option>
+                               <option value='AES-192-CBC' $selected{'DCIPHER'}{'AES-192-CBC'}>AES-CBC (192 $Lang::tr{'bit'})</option>
+                               <option value='AES-128-CBC' $selected{'DCIPHER'}{'AES-128-CBC'}>AES-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='DES-EDE3-CBC' $selected{'DCIPHER'}{'DES-EDE3-CBC'}>DES-EDE3-CBC (192 $Lang::tr{'bit'})</option>
+                               <option value='DESX-CBC' $selected{'DCIPHER'}{'DESX-CBC'}>DESX-CBC (192 $Lang::tr{'bit'})</option>
+                               <option value='SEED-CBC' $selected{'DCIPHER'}{'SEED-CBC'}>SEED-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='DES-EDE-CBC' $selected{'DCIPHER'}{'DES-EDE-CBC'}>DES-EDE-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='BF-CBC' $selected{'DCIPHER'}{'BF-CBC'}>BF-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='CAST5-CBC' $selected{'DCIPHER'}{'CAST5-CBC'}>CAST5-CBC (128 $Lang::tr{'bit'})</option>
+                       </select>
+               </td>
     <tr><td class='boldbase' nowrap='nowrap'>$Lang::tr{'comp-lzo'}</td>
         <td><input type='checkbox' name='DCOMPLZO' $checked{'DCOMPLZO'}{'on'} /></td>
-        <td class='boldbase' nowrap='nowrap'>$Lang::tr{'cipher'}</td>
-        <td><select name='DCIPHER'><option value='DES-CBC' $selected{'DCIPHER'}{'DES-CBC'}>DES-CBC</option>
-                                  <option value='DES-EDE-CBC' $selected{'DCIPHER'}{'DES-EDE-CBC'}>DES-EDE-CBC</option>
-                                  <option value='DES-EDE3-CBC' $selected{'DCIPHER'}{'DES-EDE3-CBC'}>DES-EDE3-CBC</option>
-                                  <option value='DESX-CBC' $selected{'DCIPHER'}{'DESX-CBC'}>DESX-CBC</option>
-                                  <option value='RC2-CBC' $selected{'DCIPHER'}{'RC2-CBC'}>RC2-CBC</option>                                                                 
-                                  <option value='RC2-40-CBC' $selected{'DCIPHER'}{'RC2-40-CBC'}>RC2-40-CBC</option>
-                                  <option value='RC2-64-CBC' $selected{'DCIPHER'}{'RC2-64-CBC'}>RC2-64-CBC</option>
-                                  <option value='BF-CBC' $selected{'DCIPHER'}{'BF-CBC'}>BF-CBC</option>
-                                  <option value='CAST5-CBC' $selected{'DCIPHER'}{'CAST5-CBC'}>CAST5-CBC</option>
-                                  <option value='AES-128-CBC' $selected{'DCIPHER'}{'AES-128-CBC'}>AES-128-CBC</option>
-                                  <option value='AES-192-CBC' $selected{'DCIPHER'}{'AES-192-CBC'}>AES-192-CBC</option>
-                                  <option value='AES-256-CBC' $selected{'DCIPHER'}{'AES-256-CBC'}>AES-256-CBC</option></select></td></tr>
-                                  <tr><td colspan='4'><hr /></td></tr>
+       </tr>
+    <tr><td colspan='4'><br><br></td></tr>
 END
 ;                                 
     
@@ -4720,187 +5016,42 @@ END
     }
     print "</form></table>";
     &Header::closebox();
-    &Header::openbox('100%', 'LEFT', "$Lang::tr{'certificate authorities'}:");
-    print <<EOF#'
-    <table width='100%' border='0' cellspacing='1' cellpadding='0'>
-    <tr>
-       <td width='25%' class='boldbase' align='center'><b>$Lang::tr{'name'}</b></td>
-       <td width='65%' class='boldbase' align='center'><b>$Lang::tr{'subject'}</b></td>
-       <td width='10%' class='boldbase' colspan='3' align='center'><b>$Lang::tr{'action'}</b></td>
-    </tr>
-EOF
-    ;
-    if (-f "${General::swroot}/ovpn/ca/cacert.pem") {
-       my $casubject = `/usr/bin/openssl x509 -text -in ${General::swroot}/ovpn/ca/cacert.pem`;
-       $casubject    =~ /Subject: (.*)[\n]/;
-       $casubject    = $1;
-       $casubject    =~ s+/Email+, E+;
-       $casubject    =~ s/ ST=/ S=/;
 
-       print <<END
-       <tr bgcolor='$color{'color22'}'>
-       <td class='base'>$Lang::tr{'root certificate'}</td>
-       <td class='base'>$casubject</td>
-       <form method='post' name='frmrootcrta'><td width='3%' align='center'>
-           <input type='hidden' name='ACTION' value='$Lang::tr{'show root certificate'}' />
-           <input type='image' name='$Lang::tr{'edit'}' src='/images/info.gif' alt='$Lang::tr{'show root certificate'}' title='$Lang::tr{'show root certificate'}' width='20' height='20' border='0' />
-       </td></form>
-       <form method='post' name='frmrootcrtb'><td width='3%' align='center'>
-           <input type='image' name='$Lang::tr{'download root certificate'}' src='/images/media-floppy.png' alt='$Lang::tr{'download root certificate'}' title='$Lang::tr{'download root certificate'}' border='0' />
-           <input type='hidden' name='ACTION' value='$Lang::tr{'download root certificate'}' />
-       </td></form>
-       <td width='4%'>&nbsp;</td></tr>
-END
-       ;
-    } else {
-       # display rootcert generation buttons
-       print <<END
-       <tr bgcolor='$color{'color22'}'>
-       <td class='base'>$Lang::tr{'root certificate'}:</td>
-       <td class='base'>$Lang::tr{'not present'}</td>
-       <td colspan='3'>&nbsp;</td></tr>
-END
-       ;
-    }
-
-    if (-f "${General::swroot}/ovpn/certs/servercert.pem") {
-       my $hostsubject = `/usr/bin/openssl x509 -text -in ${General::swroot}/ovpn/certs/servercert.pem`;
-       $hostsubject    =~ /Subject: (.*)[\n]/;
-       $hostsubject    = $1;
-       $hostsubject    =~ s+/Email+, E+;
-       $hostsubject    =~ s/ ST=/ S=/;
-
-       print <<END
-       <tr bgcolor='$color{'color20'}'>
-       <td class='base'>$Lang::tr{'host certificate'}</td>
-       <td class='base'>$hostsubject</td>
-       <form method='post' name='frmhostcrta'><td width='3%' align='center'>
-           <input type='hidden' name='ACTION' value='$Lang::tr{'show host certificate'}' />
-           <input type='image' name='$Lang::tr{'show host certificate'}' src='/images/info.gif' alt='$Lang::tr{'show host certificate'}' title='$Lang::tr{'show host certificate'}' width='20' height='20' border='0' />
-       </td></form>
-       <form method='post' name='frmhostcrtb'><td width='3%' align='center'>
-           <input type='image' name='$Lang::tr{'download host certificate'}' src='/images/media-floppy.png' alt='$Lang::tr{'download host certificate'}' title='$Lang::tr{'download host certificate'}' border='0' />
-           <input type='hidden' name='ACTION' value='$Lang::tr{'download host certificate'}' />
-       </td></form>
-       <td width='4%'>&nbsp;</td></tr>
-END
-       ;
-    } else {
-       # Nothing
-       print <<END
-       <tr bgcolor='$color{'color20'}'>
-       <td width='25%' class='base'>$Lang::tr{'host certificate'}:</td>
-       <td class='base'>$Lang::tr{'not present'}</td>
-       </td><td colspan='3'>&nbsp;</td></tr>
-END
-       ;
-    }
-
-    if (! -f "${General::swroot}/ovpn/ca/cacert.pem") {
-        print "<tr><td colspan='5' align='center'><form method='post'>";
-       print "<input type='submit' name='ACTION' value='$Lang::tr{'generate root/host certificates'}' />";
-        print "</form></td></tr>\n";
-    }
-
-    if (keys %cahash > 0) {
-       foreach my $key (keys %cahash) {
-           if (($key + 1) % 2) {
-               print "<tr bgcolor='$color{'color20'}'>\n";
-           } else {
-               print "<tr bgcolor='$color{'color22'}'>\n";
-           }
-           print "<td class='base'>$cahash{$key}[0]</td>\n";
-           print "<td class='base'>$cahash{$key}[1]</td>\n";
-           print <<END
-           <form method='post' name='cafrm${key}a'><td align='center'>
-               <input type='image' name='$Lang::tr{'show ca certificate'}' src='/images/info.gif' alt='$Lang::tr{'show ca certificate'}' title='$Lang::tr{'show ca certificate'}' border='0' />
-               <input type='hidden' name='ACTION' value='$Lang::tr{'show ca certificate'}' />
-               <input type='hidden' name='KEY' value='$key' />
-           </td></form>
-           <form method='post' name='cafrm${key}b'><td align='center'>
-               <input type='image' name='$Lang::tr{'download ca certificate'}' src='/images/media-floppy.png' alt='$Lang::tr{'download ca certificate'}' title='$Lang::tr{'download ca certificate'}' border='0' />
-               <input type='hidden' name='ACTION' value='$Lang::tr{'download ca certificate'}' />
-               <input type='hidden' name='KEY' value='$key' />
-           </td></form>
-           <form method='post' name='cafrm${key}c'><td align='center'>
-               <input type='hidden' name='ACTION' value='$Lang::tr{'remove ca certificate'}' />
-               <input type='image'  name='$Lang::tr{'remove ca certificate'}' src='/images/delete.gif' alt='$Lang::tr{'remove ca certificate'}' title='$Lang::tr{'remove ca certificate'}' width='20' height='20' border='0' />
-               <input type='hidden' name='KEY' value='$key' />
-           </td></form></tr>
-END
-           ;
-       }
-    }
-
-    print "</table>";
-
-    # If the file contains entries, print Key to action icons
-    if ( -f "${General::swroot}/ovpn/ca/cacert.pem") {
-    print <<END
-    <table>
-    <tr>
-       <td class='boldbase'>&nbsp; <b>$Lang::tr{'legend'}:</b></td>
-       <td>&nbsp; &nbsp; <img src='/images/info.gif' alt='$Lang::tr{'show certificate'}' /></td>
-       <td class='base'>$Lang::tr{'show certificate'}</td>
-       <td>&nbsp; &nbsp; <img src='/images/media-floppy.png' alt='$Lang::tr{'download certificate'}' /></td>
-       <td class='base'>$Lang::tr{'download certificate'}</td>
-    </tr>
-    </table>
-END
-;
-    }
-    
-print <<END
-<form method='post' enctype='multipart/form-data'>
-<table width='100%' border='0'>
-<tr><td class='base' nowrap='nowrap'>$Lang::tr{'ca name'}:</td><td nowrap='nowrap' width='8%'><input type='text' name='CA_NAME' value='$cgiparams{'CA_NAME'}' size='15' align='left'/></td><td nowrap='nowrap' align='right'><input type='file' name='FH' size='25' /><input type='submit' name='ACTION' value='$Lang::tr{'upload ca certificate'}' /></td></tr>
-<tr><td colspan='4'><hr /></td></tr>
-<tr align='right'><td colspan='4' align='right' width='80%'><input type='submit' name='ACTION' value='$Lang::tr{'show crl'}' /></td></tr>
-</table>
-END
-;
-
-    &Header::closebox();
-    if ( $srunning eq "yes" ) {    
-       print "<div align='center'><form method='post'><input type='submit' name='ACTION' value='$Lang::tr{'reset'}' disabled='disabled' /></div></form>\n";    
-    }else{
-       print "<div align='center'><form method='post'><input type='submit' name='ACTION' value='$Lang::tr{'reset'}' /></div></form>\n";
-    }      
     if ( -f "${General::swroot}/ovpn/ca/cacert.pem" ) {
-
 ###
 # m.a.d net2net
 #<td width='25%' class='boldbase' align='center'><b>$Lang::tr{'remark'}</b><br /><img src='/images/null.gif' width='125' height='1' border='0' alt='L2089' /></td>
 ###
 
-    &Header::openbox('100%', 'LEFT', $Lang::tr{'Client status and controlc' });
-    print <<END
+    &Header::openbox('100%', 'LEFT', $Lang::tr{'connection status and controlc' });
+    print <<END;
 
 
-    <table width='100%' border='0' cellspacing='1' cellpadding='0'>
+    <table width='100%' cellspacing='1' cellpadding='0' class='tbl'>
 <tr>
-    <td width='10%' class='boldbase' align='center'><b>$Lang::tr{'name'}</b></td>
-    <td width='15%' class='boldbase' align='center'><b>$Lang::tr{'type'}</b></td>
-    <td width='22%' class='boldbase' align='center'><b>$Lang::tr{'network'}</b></td>
-    <td width='20%' class='boldbase' align='center'><b>$Lang::tr{'remark'}</b></td>
-    <td width='10%' class='boldbase' align='center'><b>$Lang::tr{'status'}</b></td>
-    <td width='5%' class='boldbase' colspan='6' align='center'><b>$Lang::tr{'action'}</b></td>
+    <th width='10%' class='boldbase' align='center'><b>$Lang::tr{'name'}</b></th>
+    <th width='15%' class='boldbase' align='center'><b>$Lang::tr{'type'}</b></th>
+    <th width='22%' class='boldbase' align='center'><b>$Lang::tr{'network'}</b></th>
+    <th width='20%' class='boldbase' align='center'><b>$Lang::tr{'remark'}</b></th>
+    <th width='10%' class='boldbase' align='center'><b>$Lang::tr{'status'}</b></th>
+    <th width='5%' class='boldbase' colspan='6' align='center'><b>$Lang::tr{'action'}</b></th>
 </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;
+       my $col1="";
+       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";
+               print "<tr>";
+               $col="bgcolor='$color{'color20'}'";
        } else {
-           print "<tr bgcolor='$color{'color22'}'>\n";
+               print "<tr>";
+               $col="bgcolor='$color{'color22'}'";
        }
-       print "<td align='center' nowrap='nowrap'>$confighash{$key}[1]</td>";
-       print "<td align='center' nowrap='nowrap'>" . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")</td>";
+       print "<td align='center' nowrap='nowrap' $col>$confighash{$key}[1]</td>";
+       print "<td align='center' nowrap='nowrap' $col>" . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")</td>";
        #if ($confighash{$key}[4] eq 'cert') {
            #print "<td align='left' nowrap='nowrap'>$confighash{$key}[2]</td>";
        #} else {
@@ -4911,19 +5062,20 @@ END
        $cavalid    = $1;
        if ($confighash{$key}[32] eq "" && $confighash{$key}[3] eq 'net' ){$confighash{$key}[32]="net-2-net";}
        if ($confighash{$key}[32] eq "" && $confighash{$key}[3] eq 'host' ){$confighash{$key}[32]="dynamic";}
-       print "<td align='center'>$confighash{$key}[32]</td>";
-       print "<td align='center'>$confighash{$key}[25]</td>";
-
-       my $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourred}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b></td></tr></table>";
+       print "<td align='center' $col>$confighash{$key}[32]</td>";
+       print "<td align='center' $col>$confighash{$key}[25]</td>";
+       $col1="bgcolor='${Header::colourred}'";
+       my $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b>";
 
        if ($confighash{$key}[0] eq 'off') {
-        $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourblue}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b></td></tr></table>";
+               $col1="bgcolor='${Header::colourblue}'";
+               $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b>";
        } else {
 
 ###
 # m.a.d net2net
-###       
-       
+###
+
        if ($confighash{$key}[3] eq 'net') {
 
         if (-e "/var/run/$confighash{$key}[1]n2n.pid") {
@@ -4947,39 +5099,41 @@ END
 #EXITING       -- A graceful exit is in progress.
 ####
 
-        if ( $tustate[1] eq 'CONNECTED') {
-          $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourgreen}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b></tr></td></table>";
-                          } else {
-          $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourred}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$tustate[1]</font></b></td></tr></table>";                          
+               if (($tustate[1] eq 'CONNECTED') || ($tustate[1] eq 'WAIT')) {
+                       $col1="bgcolor='${Header::colourgreen}'";
+                       $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b>";
+               }else {
+                       $col1="bgcolor='${Header::colourred}'";
+                       $active = "<b><font color='#FFFFFF'>$tustate[1]</font></b>";
+               }
            }
-           } 
            }
-        }      else {
-
-               my $cn;
-           my @match = ();     
-         foreach my $line (@status) {
-               chomp($line);
-               if ( $line =~ /^(.+),(\d+\.\d+\.\d+\.\d+\:\d+),(\d+),(\d+),(.+)/) {
-                   @match = split(m/^(.+),(\d+\.\d+\.\d+\.\d+\:\d+),(\d+),(\d+),(.+)/, $line);
-                   if ($match[1] ne "Common Name") {
-                       $cn = $match[1];
-                   }       
-               $cn =~ s/[_]/ /g;
-                   if ($cn eq "$confighash{$key}[2]") {
-                       $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourgreen}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b></td></tr></table>";
-                   }
-   }
-      
+        }else {
+
+                               my $cn;
+                               my @match = ();
+               foreach my $line (@status) {
+                       chomp($line);
+                       if ( $line =~ /^(.+),(\d+\.\d+\.\d+\.\d+\:\d+),(\d+),(\d+),(.+)/) {
+                               @match = split(m/^(.+),(\d+\.\d+\.\d+\.\d+\:\d+),(\d+),(\d+),(.+)/, $line);
+                               if ($match[1] ne "Common Name") {
+                                       $cn = $match[1];
+                               }
+                               $cn =~ s/[_]/ /g;
+                               if ($cn eq "$confighash{$key}[2]") {
+                                       $col1="bgcolor='${Header::colourgreen}'";
+                                       $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b>";
+                               }
+                       }
+               }
        }
 }
-}
 
 
-       print <<END
-       <td align='center'>$active</td>
+    print <<END;
+       <td align='center' $col1>$active</td>
                
-       <form method='post' name='frm${key}a'><td align='center'>
+       <form method='post' name='frm${key}a'><td align='center' $col>
            <input type='image'  name='$Lang::tr{'dl client arch'}' src='/images/openvpn.png' alt='$Lang::tr{'dl client arch'}' title='$Lang::tr{'dl client arch'}' border='0' />
            <input type='hidden' name='ACTION' value='$Lang::tr{'dl client arch'}' />
            <input type='hidden' name='KEY' value='$key' />
@@ -4987,8 +5141,8 @@ END
 END
        ;
        if ($confighash{$key}[4] eq 'cert') {
-           print <<END
-           <form method='post' name='frm${key}b'><td align='center'>
+           print <<END;
+           <form method='post' name='frm${key}b'><td align='center' $col>
                <input type='image' name='$Lang::tr{'show certificate'}' src='/images/info.gif' alt='$Lang::tr{'show certificate'}' title='$Lang::tr{'show certificate'}' border='0' />
                <input type='hidden' name='ACTION' value='$Lang::tr{'show certificate'}' />
                <input type='hidden' name='KEY' value='$key' />
@@ -4998,16 +5152,16 @@ END
            print "<td>&nbsp;</td>";
        }
        if ($confighash{$key}[4] eq 'cert' && -f "${General::swroot}/ovpn/certs/$confighash{$key}[1].p12") { 
-           print <<END
-           <form method='post' name='frm${key}c'><td align='center'>
+           print <<END;
+           <form method='post' name='frm${key}c'><td align='center' $col>
                <input type='image' name='$Lang::tr{'download pkcs12 file'}' src='/images/media-floppy.png' alt='$Lang::tr{'download pkcs12 file'}' title='$Lang::tr{'download pkcs12 file'}' border='0' />
                <input type='hidden' name='ACTION' value='$Lang::tr{'download pkcs12 file'}' />
                <input type='hidden' name='KEY' value='$key' />
            </td></form>
 END
        ; } elsif ($confighash{$key}[4] eq 'cert') {
-           print <<END
-           <form method='post' name='frm${key}c'><td align='center'>
+           print <<END;
+           <form method='post' name='frm${key}c'><td align='center' $col>
                <input type='image' name='$Lang::tr{'download certificate'}' src='/images/media-floppy.png' alt='$Lang::tr{'download certificate'}' title='$Lang::tr{'download certificate'}' border='0' />
                <input type='hidden' name='ACTION' value='$Lang::tr{'download certificate'}' />
                <input type='hidden' name='KEY' value='$key' />
@@ -5017,18 +5171,18 @@ END
            print "<td>&nbsp;</td>";
        }
        print <<END
-       <form method='post' name='frm${key}d'><td align='center'>
+       <form method='post' name='frm${key}d'><td align='center' $col>
            <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$Lang::tr{'toggle enable disable'}' title='$Lang::tr{'toggle enable disable'}' border='0' />
            <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
            <input type='hidden' name='KEY' value='$key' />
        </td></form>
 
-       <form method='post' name='frm${key}e'><td align='center'>
+       <form method='post' name='frm${key}e'><td align='center' $col>
            <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'}' width='20' height='20' border='0'/>
            <input type='hidden' name='KEY' value='$key' />
        </td></form>
-       <form method='post' name='frm${key}f'><td align='center'>
+       <form method='post' name='frm${key}f'><td align='center' $col>
            <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'}' width='20' height='20' border='0' />
            <input type='hidden' name='KEY' value='$key' />
@@ -5042,45 +5196,303 @@ END
 
     # If the config file contains entries, print Key to action icons
     if ( $id ) {
-    print <<END
+    print <<END;
     <table border='0'>
     <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/info.gif' alt='$Lang::tr{'show certificate'}' /></td>
-       <td class='base'>$Lang::tr{'show certificate'}</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>
+               <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/info.gif' alt='$Lang::tr{'show certificate'}' /></td>
+               <td class='base'>$Lang::tr{'show certificate'}</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>
     <tr>
-       <td>&nbsp; </td>
-       <td>&nbsp; <img src='/images/off.gif' alt='?OFF' /></td>
-       <td class='base'>$Lang::tr{'click to enable'}</td>
-       <td> <img src='/images/media-floppy.png' alt='?FLOPPY' /></td>
-       <td class='base'>$Lang::tr{'download certificate'}</td>
-       <td> <img src='/images/openvpn.png' alt='?RELOAD'/></td>
-       <td class='base'>$Lang::tr{'dl client arch'}</td>
-    </tr>
-    </table><hr>
+               <td>&nbsp; </td>
+               <td>&nbsp; <img src='/images/off.gif' alt='?OFF' /></td>
+               <td class='base'>$Lang::tr{'click to enable'}</td>
+               <td>&nbsp; &nbsp; <img src='/images/media-floppy.png' alt='?FLOPPY' /></td>
+               <td class='base'>$Lang::tr{'download certificate'}</td>
+               <td>&nbsp; &nbsp; <img src='/images/openvpn.png' alt='?RELOAD'/></td>
+               <td class='base'>$Lang::tr{'dl client arch'}</td>
+               </tr>
+    </table><br>
 END
     ;
     }
 
-    print <<END
+    print <<END;
     <table width='100%'>
     <form method='post'>
-    <tr><td align='right'><input type='submit' name='ACTION' value='$Lang::tr{'add'}' />
-    <input type='submit' name='ACTION' value='$Lang::tr{'ovpn con stat'}' $activeonrun /></td></tr>
+    <tr><td align='right'>
+               <input type='submit' name='ACTION' value='$Lang::tr{'add'}' />
+               <input type='submit' name='ACTION' value='$Lang::tr{'ovpn con stat'}' $activeonrun /></td>
+       </tr>
     </form>
     </table>
 END
-    ;    
-    &Header::closebox();
-}
-&Header::closepage();
+    ;
+       &Header::closebox();
+       }
+
+    # CA/key listing
+    &Header::openbox('100%', 'LEFT', "$Lang::tr{'certificate authorities'}");
+    print <<END;
+    <table width='100%' cellspacing='1' cellpadding='0' class='tbl'>
+    <tr>
+               <th width='25%' class='boldbase' align='center'><b>$Lang::tr{'name'}</b></th>
+               <th width='65%' class='boldbase' align='center'><b>$Lang::tr{'subject'}</b></th>
+               <th width='10%' class='boldbase' colspan='3' align='center'><b>$Lang::tr{'action'}</b></th>
+    </tr>
+END
+    ;
+    my $col1="bgcolor='$color{'color22'}'";
+    my $col2="bgcolor='$color{'color20'}'";
+    # DH parameter line
+    my $col3="bgcolor='$color{'color22'}'";
+    # ta.key line
+    my $col4="bgcolor='$color{'color20'}'";
+
+    if (-f "${General::swroot}/ovpn/ca/cacert.pem") {
+               my $casubject = `/usr/bin/openssl x509 -text -in ${General::swroot}/ovpn/ca/cacert.pem`;
+               $casubject    =~ /Subject: (.*)[\n]/;
+               $casubject    = $1;
+               $casubject    =~ s+/Email+, E+;
+               $casubject    =~ s/ ST=/ S=/;
+               print <<END;
+               <tr>
+                       <td class='base' $col1>$Lang::tr{'root certificate'}</td>
+                       <td class='base' $col1>$casubject</td>
+                       <form method='post' name='frmrootcrta'><td width='3%' align='center' $col1>
+                       <input type='hidden' name='ACTION' value='$Lang::tr{'show root certificate'}' />
+                       <input type='image' name='$Lang::tr{'edit'}' src='/images/info.gif' alt='$Lang::tr{'show root certificate'}' title='$Lang::tr{'show root certificate'}' width='20' height='20' border='0' />
+                       </form>
+                       <form method='post' name='frmrootcrtb'><td width='3%' align='center' $col1>
+                       <input type='image' name='$Lang::tr{'download root certificate'}' src='/images/media-floppy.png' alt='$Lang::tr{'download root certificate'}' title='$Lang::tr{'download root certificate'}' border='0' />
+                       <input type='hidden' name='ACTION' value='$Lang::tr{'download root certificate'}' />
+                       </form>
+                       <td width='4%' $col1>&nbsp;</td>
+               </tr>
+END
+               ;
+    } else {
+               # display rootcert generation buttons
+               print <<END;
+               <tr>
+                       <td class='base' $col1>$Lang::tr{'root certificate'}:</td>
+                       <td class='base' $col1>$Lang::tr{'not present'}</td>
+                       <td colspan='3' $col1>&nbsp;</td>
+               </tr>
+END
+               ;
+    }
 
+    if (-f "${General::swroot}/ovpn/certs/servercert.pem") {
+               my $hostsubject = `/usr/bin/openssl x509 -text -in ${General::swroot}/ovpn/certs/servercert.pem`;
+               $hostsubject    =~ /Subject: (.*)[\n]/;
+               $hostsubject    = $1;
+               $hostsubject    =~ s+/Email+, E+;
+               $hostsubject    =~ s/ ST=/ S=/;
 
+               print <<END;
+               <tr>
+                       <td class='base' $col2>$Lang::tr{'host certificate'}</td>
+                       <td class='base' $col2>$hostsubject</td>
+                       <form method='post' name='frmhostcrta'><td width='3%' align='center' $col2>
+                       <input type='hidden' name='ACTION' value='$Lang::tr{'show host certificate'}' />
+                       <input type='image' name='$Lang::tr{'show host certificate'}' src='/images/info.gif' alt='$Lang::tr{'show host certificate'}' title='$Lang::tr{'show host certificate'}' width='20' height='20' border='0' />
+                       </form>
+                       <form method='post' name='frmhostcrtb'><td width='3%' align='center' $col2>
+                       <input type='image' name="$Lang::tr{'download host certificate'}" src='/images/media-floppy.png' alt="$Lang::tr{'download host certificate'}" title="$Lang::tr{'download host certificate'}" border='0' />
+                       <input type='hidden' name='ACTION' value="$Lang::tr{'download host certificate'}" />
+                       </td></form>
+                       <td width='4%' $col2>&nbsp;</td>
+               </tr>
+END
+               ;
+    } else {
+               # Nothing
+               print <<END;
+               <tr>
+                       <td width='25%' class='base' $col2>$Lang::tr{'host certificate'}:</td>
+                       <td class='base' $col2>$Lang::tr{'not present'}</td>
+                       </td><td colspan='3' $col2>&nbsp;</td>
+               </tr>
+END
+               ;
+    }
+
+    # Adding DH parameter to chart
+    if (-f "${General::swroot}/ovpn/ca/dh1024.pem") {
+               my $dhsubject = `/usr/bin/openssl dhparam -text -in ${General::swroot}/ovpn/ca/dh1024.pem`;
+               $dhsubject    =~ /    (.*)[\n]/;
+               $dhsubject    = $1;
+
+
+       print <<END;
+               <tr>
+                       <td class='base' $col3>$Lang::tr{'dh parameter'}</td>
+                       <td class='base' $col3>$dhsubject</td>
+                       <form method='post' name='frmdhparam'><td width='3%' align='center' $col3>
+                       <input type='hidden' name='ACTION' value='$Lang::tr{'show dh'}' />
+                       <input type='image' name='$Lang::tr{'show dh'}' src='/images/info.gif' alt='$Lang::tr{'show dh'}' title='$Lang::tr{'show dh'}' width='20' height='20' border='0' />
+                       </form>
+                       <form method='post' name='frmdhparam'><td width='3%' align='center' $col3>
+                       </form>
+                       <td width='4%' $col3>&nbsp;</td>
+               </tr>
+END
+               ;
+    } else {
+               # Nothing
+               print <<END;
+               <tr>
+                       <td width='25%' class='base' $col3>$Lang::tr{'dh parameter'}:</td>
+                       <td class='base' $col3>$Lang::tr{'not present'}</td>
+                       </td><td colspan='3' $col3>&nbsp;</td>
+               </tr>
+END
+               ;
+    }
+
+    # Adding ta.key to chart
+    if (-f "${General::swroot}/ovpn/certs/ta.key") {
+               my $tasubject = `/bin/cat ${General::swroot}/ovpn/certs/ta.key`;
+               $tasubject    =~ /# (.*)[\n]/;
+               $tasubject    = $1;
+               print <<END;
+
+               <tr>
+                       <td class='base' $col4>$Lang::tr{'ta key'}</td>
+                       <td class='base' $col4>$tasubject</td>
+                       <form method='post' name='frmtakey'><td width='3%' align='center' $col4>
+                       <input type='hidden' name='ACTION' value='$Lang::tr{'show tls-auth key'}' />
+                       <input type='image' name='$Lang::tr{'edit'}' src='/images/info.gif' alt='$Lang::tr{'show tls-auth key'}' title='$Lang::tr{'show tls-auth key'}' width='20' height='20' border='0' />
+                       </form>
+                       <form method='post' name='frmtakey'><td width='3%' align='center' $col4>
+                       <input type='image' name='$Lang::tr{'download tls-auth key'}' src='/images/media-floppy.png' alt='$Lang::tr{'download tls-auth key'}' title='$Lang::tr{'download tls-auth key'}' border='0' />
+                       <input type='hidden' name='ACTION' value='$Lang::tr{'download tls-auth key'}' />
+                       </form>
+                       <td width='4%' $col4>&nbsp;</td>
+               </tr>
+END
+               ;
+    } else {
+               # Nothing
+               print <<END;
+               <tr>
+                       <td width='25%' class='base' $col4>$Lang::tr{'ta key'}:</td>
+                       <td class='base' $col4>$Lang::tr{'not present'}</td>
+                       <td colspan='3' $col4>&nbsp;</td>
+               </tr>
+END
+               ;
+    }
+
+    if (! -f "${General::swroot}/ovpn/ca/cacert.pem") {
+        print "<tr><td colspan='5' align='center'><form method='post'>";
+               print "<input type='submit' name='ACTION' value='$Lang::tr{'generate root/host certificates'}' />";
+        print "</form></td></tr>\n";
+    }
+
+    if (keys %cahash > 0) {
+               foreach my $key (keys %cahash) {
+                       if (($key + 1) % 2) {
+                               print "<tr bgcolor='$color{'color20'}'>\n";
+                       } else {
+                               print "<tr bgcolor='$color{'color22'}'>\n";
+                       }
+                       print "<td class='base'>$cahash{$key}[0]</td>\n";
+                       print "<td class='base'>$cahash{$key}[1]</td>\n";
+                       print <<END;
+                       <form method='post' name='cafrm${key}a'><td align='center'>
+                               <input type='image' name='$Lang::tr{'show ca certificate'}' src='/images/info.gif' alt='$Lang::tr{'show ca certificate'}' title='$Lang::tr{'show ca certificate'}' border='0' />
+                               <input type='hidden' name='ACTION' value='$Lang::tr{'show ca certificate'}' />
+                               <input type='hidden' name='KEY' value='$key' />
+                       </td></form>
+                       <form method='post' name='cafrm${key}b'><td align='center'>
+                               <input type='image' name='$Lang::tr{'download ca certificate'}' src='/images/media-floppy.png' alt='$Lang::tr{'download ca certificate'}' title='$Lang::tr{'download ca certificate'}' border='0' />
+                               <input type='hidden' name='ACTION' value='$Lang::tr{'download ca certificate'}' />
+                               <input type='hidden' name='KEY' value='$key' />
+                       </td></form>
+                       <form method='post' name='cafrm${key}c'><td align='center'>
+                               <input type='hidden' name='ACTION' value='$Lang::tr{'remove ca certificate'}' />
+                               <input type='image'  name='$Lang::tr{'remove ca certificate'}' src='/images/delete.gif' alt='$Lang::tr{'remove ca certificate'}' title='$Lang::tr{'remove ca certificate'}' width='20' height='20' border='0' />
+                               <input type='hidden' name='KEY' value='$key' />
+                       </td></form></tr>
+END
+                       ;
+               }
+    }
+
+    print "</table>";
+
+    # If the file contains entries, print Key to action icons
+    if ( -f "${General::swroot}/ovpn/ca/cacert.pem") {
+               print <<END;
+               <table>
+               <tr>
+                       <td class='boldbase'>&nbsp; <b>$Lang::tr{'legend'}:</b></td>
+                       <td>&nbsp; &nbsp; <img src='/images/info.gif' alt='$Lang::tr{'show certificate'}' /></td>
+                       <td class='base'>$Lang::tr{'show certificate'}</td>
+                       <td>&nbsp; &nbsp; <img src='/images/media-floppy.png' alt='$Lang::tr{'download certificate'}' /></td>
+                       <td class='base'>$Lang::tr{'download certificate'}</td>
+               </tr>
+               </table>
+END
+               ;
+    }
+
+       print <<END
+       <hr size='1'>
+       <form method='post' enctype='multipart/form-data'>
+       <table width='100%' border='0'cellspacing='1' cellpadding='0'>
+       <tr>
+               <td class'base'><b>$Lang::tr{'upload ca certificate'}</b></td>
+       </tr>
+       <tr>
+               <td class='base' nowrap='nowrap'>$Lang::tr{'ca name'}:</td>
+               <td nowrap='nowrap'><input type='text' name='CA_NAME' value='$cgiparams{'CA_NAME'}' size='15' align='left'/></td>
+               <td nowrap='nowrap'><input type='file' name='FH' size='25' />
+               <td nowrap='nowrap' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'upload ca certificate'}' /></td>
+       </tr>
+
+       <tr align='right'>
+               <td colspan='4' align='right' width='80%'><input type='submit' name='ACTION' value='$Lang::tr{'show crl'}' /></td>
+       </tr>
+
+       <tr><td colspan=4><hr /></td></tr><tr>
+       <tr>
+               <td class'base'><b>$Lang::tr{'ovpn dh parameters'}</b></td>
+       </tr>
+
+       <tr>
+               <td class='base' nowrap='nowrap'>$Lang::tr{'ovpn dh upload'}:</td>
+               <td nowrap='nowrap'><size='15' align='left'/></td>
+               <td nowrap='nowrap'><input type='file' name='FH' size='25' />
+               <td colspan='4' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'upload dh key'}' /></td>
+       </tr>
+       <tr>
+               <td class='base' nowrap='nowrap'>$Lang::tr{'ovpn dh new key'}:</td>
+               <td nowrap='nowrap'><size='15' align='left'/></td>
+               <td nowrap='nowrap'><input type='submit' name='ACTION' value='$Lang::tr{'generate dh key'}' /></td>
+       </tr>
+       </table>
+       
+       <tr><td colspan=4><hr /></td></tr><tr>
+END
+       ;
+
+    if ( $srunning eq "yes" ) {
+               print "<div align='center'><form method='post'><input type='submit' name='ACTION' value='$Lang::tr{'remove x509'}' disabled='disabled' /></div></form>\n";
+    } else {
+               print "<div align='center'><form method='post'><input type='submit' name='ACTION' value='$Lang::tr{'remove x509'}' /></div></form>\n";
+    }
+       &Header::closebox();
+END
+       ;
+
+&Header::closepage();
 
diff --git a/html/cgi-bin/p2p-block.cgi b/html/cgi-bin/p2p-block.cgi
new file mode 100644 (file)
index 0000000..04f1331
--- /dev/null
@@ -0,0 +1,154 @@
+#!/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 $notice;
+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);
+
+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();
+
+       $notice = $Lang::tr{'p2p block save notice'};
+}
+
+&Header::openpage($Lang::tr{'p2p block'}, 1, '');
+&Header::openbigbox('100%', 'center', $errormessage);
+
+if ($notice) {
+    &Header::openbox('100%', 'left', $Lang::tr{'notice'});
+    print "<font class='base'>$notice</font>";
+    &Header::closebox();
+}
+
+my $gif;
+
+open(FILE, "<$p2pfile") or die "Unable to read $p2pfile";
+@p2ps = <FILE>;
+close FILE;
+
+&Header::openbox('100%', 'center',);
+print <<END;
+       <table width='35%' class='tbl'>
+               <tr>
+                       <th align='center' colspan='2' bgcolor='$color{'color22'}' >
+                               <b>$Lang::tr{'protocol'}</b>
+                       </th>
+                       <th align='center' bgcolor='$color{'color22'}' >
+                               <b>$Lang::tr{'status'}</b>
+                       </th>
+               </tr>
+END
+my $lines=0;
+my $col="";
+foreach my $p2pentry (sort @p2ps) {
+       my @p2pline = split( /\;/, $p2pentry);
+       if ($p2pline[2] eq 'on') {
+               $gif = "/images/on.gif"
+       } else {
+               $gif = "/images/off.gif"
+       }
+       if ($lines % 2) {
+                print "<tr>";
+                $col="bgcolor='$color{'color20'}'"; }
+        else {
+                print "<tr>";
+                $col="bgcolor='$color{'color22'}'"; }
+       print <<END;
+                       <td align='center' colspan='2' $col>
+                               $p2pline[0]:
+                       </td>
+                       <td align='center' $col>
+                               <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
+$lines++;
+}
+
+print <<END;
+</table><table>
+               <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();
index 5903d8525939d02ba3c2c4c770fd79699907ddda..2a7ca8407f08a29546cb5bf9148a2cc824ac4dc6 100644 (file)
@@ -81,12 +81,12 @@ END
                                                        <input type='hidden' name='INSPAKS' value='$pakfiresettings{'INSPAKS'}' />
                                                        <input type='hidden' name='FORCE' value='on' />
                                                        <input type='hidden' name='ACTION' value='install' />
-                                                       <input type='image' alt='$Lang::tr{'install'}' src='/images/go-next.png' />
+                                                       <input type='image' alt='$Lang::tr{'install'}' title='$Lang::tr{'install'}' src='/images/go-next.png' />
                                                </form>
                                <td align='left'>
                                                <form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                        <input type='hidden' name='ACTION' value='' />
-                                                       <input type='image' alt='$Lang::tr{'abort'}' src='/images/dialog-error.png' />
+                                                       <input type='image' alt='$Lang::tr{'abort'}' title='$Lang::tr{'abort'}' src='/images/dialog-error.png' />
                                                </form>
                </table>
 END
@@ -121,12 +121,12 @@ END
                                                        <input type='hidden' name='DELPAKS' value='$pakfiresettings{'DELPAKS'}' />
                                                        <input type='hidden' name='FORCE' value='on' />
                                                        <input type='hidden' name='ACTION' value='remove' />
-                                                       <input type='image' alt='$Lang::tr{'uninstall'}' src='/images/go-next.png' />
+                                                       <input type='image' alt='$Lang::tr{'uninstall'}' title='$Lang::tr{'uninstall'}' src='/images/go-next.png' />
                                                </form>
                                <td align='left'>
                                                <form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                        <input type='hidden' name='ACTION' value='' />
-                                                       <input type='image' alt='$Lang::tr{'abort'}' src='/images/dialog-error.png' />
+                                                       <input type='image' alt='$Lang::tr{'abort'}' title='$Lang::tr{'abort'}' src='/images/dialog-error.png' />
                                                </form>
                </table>
 END
@@ -184,12 +184,12 @@ if ($return) {
        print <<END;
        <table>
                <tr><td>
-                               <img src='/images/indicator.gif' alt='$Lang::tr{'aktiv'}' />&nbsp;
+                               <img src='/images/indicator.gif' alt='$Lang::tr{'aktiv'}' title='$Lang::tr{'aktiv'}' />&nbsp;
                        <td>
                                $Lang::tr{'pakfire working'}
                <tr><td colspan='2' align='center'>
                        <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-                               <input type='image' alt='$Lang::tr{'reload'}' src='/images/view-refresh.png' />
+                               <input type='image' alt='$Lang::tr{'reload'}' title='$Lang::tr{'reload'}' src='/images/view-refresh.png' />
                        </form>
                <tr><td colspan='2' align='left'><pre>
 END
@@ -245,7 +245,7 @@ END
                                        </select>
                                        <br />
                                        <input type='hidden' name='ACTION' value='upgrade' />
-                                       <input type='image' alt='$Lang::tr{'upgrade'}' src='/images/document-save.png' />
+                                       <input type='image' alt='$Lang::tr{'upgrade'}' title='$Lang::tr{'upgrade'}' src='/images/document-save.png' />
                                 </form>
 
                <tr><td colspan="2"><!-- Just an empty line -->&nbsp;
@@ -262,7 +262,7 @@ print <<END;
                                </select>
                                <br />
                                <input type='hidden' name='ACTION' value='install' />
-                               <input type='image' alt='$Lang::tr{'install'}' src='/images/list-add.png' />
+                               <input type='image' alt='$Lang::tr{'install'}' title='$Lang::tr{'install'}' src='/images/list-add.png' />
                        </form>
 
                <td align="center">
@@ -277,7 +277,7 @@ print <<END;
                        </select>
                        <br />
                        <input type='hidden' name='ACTION' value='remove' />
-                       <input type='image' alt='$Lang::tr{'remove'}' src='/images/list-remove.png' />
+                       <input type='image' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' src='/images/list-remove.png' />
                </form>
        </table>
 END
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 f6b29e199bd5ac8b0c840dba6c8dda178e62ecb4..33f521e7569adcb7bf640ce44e0b81c59be280ab 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2011  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        #
@@ -70,7 +70,10 @@ elsif ($pppsettings{'ACTION'} eq $Lang::tr{'refresh'})
 }
 elsif ($pppsettings{'ACTION'} eq $Lang::tr{'save'})
 {
-        if ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn)$/ && $pppsettings{'COMPORT'} !~ /^(ttyS0|ttyS1|ttyS2|ttyS3|ttyS4|ttyACM0|ttyACM1|ttyACM2|ttyACM3|ttyUSB0|ttyUSB1|ttyUSB2|ttyUSB3|rfcomm0|rfcomm1|isdn1|isdn2)$/) {
+        if ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn)$/ && $pppsettings{'COMPORT'} !~ /^(ttyS0|ttyS1|ttyS2|ttyS3|ttyS4|ttyACM[0-9]|ttyUSB[0-9]|rfcomm0|rfcomm1|isdn1|isdn2)$/) {
+                $errormessage = $Lang::tr{'invalid input'};
+                goto ERROR; }
+        if ($pppsettings{'TYPE'} =~ /^(modem|serial|isdn)$/ && $pppsettings{'MONPORT'} !~ /^(|ttyACM[0-9]|ttyUSB[0-9]|rfcomm0|rfcomm1)$/) {
                 $errormessage = $Lang::tr{'invalid input'};
                 goto ERROR; }
         if ($pppsettings{'TYPE'} =~ /^(modem|serial)$/ && $pppsettings{'DTERATE'} !~ /^(9600|19200|38400|57600|115200|230400|460800|921600)$/) {
@@ -150,6 +153,9 @@ elsif ($pppsettings{'ACTION'} eq $Lang::tr{'save'})
                 if (($pppsettings{'VPI'} eq '0') && ($pppsettings{'VCI'} eq '0')) {
                         $errormessage = $Lang::tr{'invalid vpi vpci'};
                         goto ERROR; }
+                if ($pppsettings{'ATM_DEV'} eq '') {
+                        $errormessage = $Lang::tr{'invalid input'};
+                        goto ERROR; }
                 if ( $pppsettings{'PROTOCOL'} eq '' ) {
                         $errormessage = $Lang::tr{'invalid input'};
                         goto ERROR; }
@@ -327,14 +333,51 @@ $selected{'COMPORT'}{'ttyACM0'} = '';
 $selected{'COMPORT'}{'ttyACM1'} = '';
 $selected{'COMPORT'}{'ttyACM2'} = '';
 $selected{'COMPORT'}{'ttyACM3'} = '';
+$selected{'COMPORT'}{'ttyACM4'} = '';
+$selected{'COMPORT'}{'ttyACM5'} = '';
+$selected{'COMPORT'}{'ttyACM6'} = '';
+$selected{'COMPORT'}{'ttyACM7'} = '';
+$selected{'COMPORT'}{'ttyACM8'} = '';
+$selected{'COMPORT'}{'ttyACM9'} = '';
 $selected{'COMPORT'}{'ttyUSB0'} = '';
 $selected{'COMPORT'}{'ttyUSB1'} = '';
 $selected{'COMPORT'}{'ttyUSB2'} = '';
 $selected{'COMPORT'}{'ttyUSB3'} = '';
+$selected{'COMPORT'}{'ttyUSB4'} = '';
+$selected{'COMPORT'}{'ttyUSB5'} = '';
+$selected{'COMPORT'}{'ttyUSB6'} = '';
+$selected{'COMPORT'}{'ttyUSB7'} = '';
+$selected{'COMPORT'}{'ttyUSB8'} = '';
+$selected{'COMPORT'}{'ttyUSB9'} = '';
 $selected{'COMPORT'}{'rfcomm0'} = '';
 $selected{'COMPORT'}{'rfcomm1'} = '';
 $selected{'COMPORT'}{$pppsettings{'COMPORT'}} = "selected='selected'";
 
+$selected{'MONPORT'}{''} = '';
+$selected{'MONPORT'}{'ttyACM0'} = '';
+$selected{'MONPORT'}{'ttyACM1'} = '';
+$selected{'MONPORT'}{'ttyACM2'} = '';
+$selected{'MONPORT'}{'ttyACM3'} = '';
+$selected{'MONPORT'}{'ttyACM4'} = '';
+$selected{'MONPORT'}{'ttyACM5'} = '';
+$selected{'MONPORT'}{'ttyACM6'} = '';
+$selected{'MONPORT'}{'ttyACM7'} = '';
+$selected{'MONPORT'}{'ttyACM8'} = '';
+$selected{'MONPORT'}{'ttyACM9'} = '';
+$selected{'MONPORT'}{'ttyUSB0'} = '';
+$selected{'MONPORT'}{'ttyUSB1'} = '';
+$selected{'MONPORT'}{'ttyUSB2'} = '';
+$selected{'MONPORT'}{'ttyUSB3'} = '';
+$selected{'MONPORT'}{'ttyUSB4'} = '';
+$selected{'MONPORT'}{'ttyUSB5'} = '';
+$selected{'MONPORT'}{'ttyUSB6'} = '';
+$selected{'MONPORT'}{'ttyUSB7'} = '';
+$selected{'MONPORT'}{'ttyUSB8'} = '';
+$selected{'MONPORT'}{'ttyUSB9'} = '';
+$selected{'MONPORT'}{'rfcomm0'} = '';
+$selected{'MONPORT'}{'rfcomm1'} = '';
+$selected{'MONPORT'}{$pppsettings{'MONPORT'}} = "selected='selected'";
+
 $selected{'DTERATE'}{'9600'} = '';
 $selected{'DTERATE'}{'19200'} = '';
 $selected{'DTERATE'}{'38400'} = '';
@@ -432,8 +475,8 @@ if ($pppsettings{'IPTV_VLAN'} eq '') { $pppsettings{'IPTV_VLAN'}='8'; }
 if ($netsettings{'RED_TYPE'} ne 'PPPOE') {
        $errormessage = $Lang::tr{'dialup red not ppp'};
        &Header::openbox('100%', 'center', $Lang::tr{'error messages'});
-        print "<CLASS name='base'>$errormessage\n";
-        print "&nbsp;</CLASS>\n";
+        print "<class name='base'>$errormessage\n";
+        print "&nbsp;</class>\n";
         &Header::closebox();
        &Header::closebigbox();
 
@@ -443,8 +486,8 @@ if ($netsettings{'RED_TYPE'} ne 'PPPOE') {
 
 if ($errormessage) {
         &Header::openbox('100%', 'center', $Lang::tr{'error messages'});
-        print "<CLASS name='base'>$errormessage\n";
-        print "&nbsp;</CLASS>\n";
+        print "<class name='base'>$errormessage\n";
+        print "&nbsp;</class>\n";
         &Header::closebox();
 }
 
@@ -530,7 +573,7 @@ END
 ;
         if ($pppsettings{'TYPE'} =~ /^(modem)$/) {
         print <<END
-            <td colspan='1' width='25%'><A HREF=modem.cgi>$Lang::tr{'modem configuration'}</A></td>
+            <td colspan='1' width='25%'><a href='modem.cgi'>$Lang::tr{'modem configuration'}</a></td>
 END
 ;
 }
@@ -569,20 +612,68 @@ END
                 <option value='ttyUSB1' $selected{'COMPORT'}{'ttyUSB1'}>ttyUSB1</option>
                 <option value='ttyUSB2' $selected{'COMPORT'}{'ttyUSB2'}>ttyUSB2</option>
                 <option value='ttyUSB3' $selected{'COMPORT'}{'ttyUSB3'}>ttyUSB3</option>
+                <option value='ttyUSB4' $selected{'COMPORT'}{'ttyUSB4'}>ttyUSB4</option>
+                <option value='ttyUSB5' $selected{'COMPORT'}{'ttyUSB5'}>ttyUSB5</option>
+                <option value='ttyUSB6' $selected{'COMPORT'}{'ttyUSB6'}>ttyUSB6</option>
+                <option value='ttyUSB7' $selected{'COMPORT'}{'ttyUSB7'}>ttyUSB7</option>
+                <option value='ttyUSB8' $selected{'COMPORT'}{'ttyUSB8'}>ttyUSB8</option>
+                <option value='ttyUSB9' $selected{'COMPORT'}{'ttyUSB9'}>ttyUSB9</option>
                 <option value='rfcomm0' $selected{'COMPORT'}{'rfcomm0'}>rfcomm0 (bluetooth)</option>
                 <option value='rfcomm1' $selected{'COMPORT'}{'rfcomm1'}>rfcomm1 (bluetooth)</option>
 END
 ;
                 if ($pppsettings{'TYPE'} ne 'serial' ) {
                         print <<END
-                <option value='ttyACM0' $selected{'COMPORT'}{'ttyACM0'}>$Lang::tr{'usb modem on acm0'}</option>
-                <option value='ttyACM1' $selected{'COMPORT'}{'ttyACM1'}>$Lang::tr{'usb modem on acm1'}</option>
-                <option value='ttyACM2' $selected{'COMPORT'}{'ttyACM2'}>$Lang::tr{'usb modem on acm2'}</option>
-                <option value='ttyACM3' $selected{'COMPORT'}{'ttyACM3'}>$Lang::tr{'usb modem on acm3'}</option>
+                <option value='ttyACM0' $selected{'COMPORT'}{'ttyACM0'}>ttyACM0</option>
+                <option value='ttyACM1' $selected{'COMPORT'}{'ttyACM1'}>ttyACM1</option>
+                <option value='ttyACM2' $selected{'COMPORT'}{'ttyACM2'}>ttyACM2</option>
+                <option value='ttyACM3' $selected{'COMPORT'}{'ttyACM3'}>ttyACM3</option>
+                <option value='ttyACM4' $selected{'COMPORT'}{'ttyACM4'}>ttyACM4</option>
+                <option value='ttyACM5' $selected{'COMPORT'}{'ttyACM5'}>ttyACM5</option>
+                <option value='ttyACM6' $selected{'COMPORT'}{'ttyACM6'}>ttyACM6</option>
+                <option value='ttyACM7' $selected{'COMPORT'}{'ttyACM7'}>ttyACM7</option>
+                <option value='ttyACM8' $selected{'COMPORT'}{'ttyACM8'}>ttyACM8</option>
+                <option value='ttyACM9' $selected{'COMPORT'}{'ttyACM9'}>ttyACM9</option>
 END
 ;
                 }
     print "</select></td>       "}
+
+       if ($pppsettings{'TYPE'} =~ /^(modem|serial)$/) {
+               print <<END;
+                       <tr>
+                               <td colspan='3' width='75%'>$Lang::tr{'monitor interface'}:</td>
+                               <td width='25%'>
+                                       <select name="MONPORT" style="width: 165px;">
+                                               <option value="" $selected{'MONPORT'}{''}>---</option>
+                                               <option value="ttyUSB0" $selected{'MONPORT'}{'ttyUSB0'}>ttyUSB0</option>
+                                               <option value="ttyUSB1" $selected{'MONPORT'}{'ttyUSB1'}>ttyUSB1</option>
+                                               <option value="ttyUSB2" $selected{'MONPORT'}{'ttyUSB2'}>ttyUSB2</option>
+                                               <option value="ttyUSB3" $selected{'MONPORT'}{'ttyUSB3'}>ttyUSB3</option>
+                                               <option value="ttyUSB4" $selected{'MONPORT'}{'ttyUSB4'}>ttyUSB4</option>
+                                               <option value="ttyUSB5" $selected{'MONPORT'}{'ttyUSB5'}>ttyUSB5</option>
+                                               <option value="ttyUSB6" $selected{'MONPORT'}{'ttyUSB6'}>ttyUSB6</option>
+                                               <option value="ttyUSB7" $selected{'MONPORT'}{'ttyUSB7'}>ttyUSB7</option>
+                                               <option value="ttyUSB8" $selected{'MONPORT'}{'ttyUSB8'}>ttyUSB8</option>
+                                               <option value="ttyUSB9" $selected{'MONPORT'}{'ttyUSB9'}>ttyUSB9</option>
+                                               <option value="rfcomm0" $selected{'COMPORT'}{'rfcomm0'}>rfcomm0 (bluetooth)</option>
+                                               <option value="rfcomm1" $selected{'COMPORT'}{'rfcomm1'}>rfcomm1 (bluetooth)</option>
+                                               <option value="ttyACM0" $selected{'COMPORT'}{'ttyACM0'}>ttyACM0</option>
+                                               <option value="ttyACM1" $selected{'COMPORT'}{'ttyACM1'}>ttyACM1</option>
+                                               <option value="ttyACM2" $selected{'COMPORT'}{'ttyACM2'}>ttyACM2</option>
+                                               <option value="ttyACM3" $selected{'COMPORT'}{'ttyACM3'}>ttyACM3</option>
+                                               <option value="ttyACM4" $selected{'COMPORT'}{'ttyACM4'}>ttyACM4</option>
+                                               <option value="ttyACM5" $selected{'COMPORT'}{'ttyACM5'}>ttyACM5</option>
+                                               <option value="ttyACM6" $selected{'COMPORT'}{'ttyACM6'}>ttyACM6</option>
+                                               <option value="ttyACM7" $selected{'COMPORT'}{'ttyACM7'}>ttyACM7</option>
+                                               <option value="ttyACM8" $selected{'COMPORT'}{'ttyACM8'}>ttyACM8</option>
+                                               <option value="ttyACM9" $selected{'COMPORT'}{'ttyACM9'}>ttyACM9</option>
+                                       </select>
+                               </td>
+                       </tr>
+END
+       }
+
                 if ($pppsettings{'TYPE'} =~ /^(modem|serial)$/ ) {
                         print <<END
   <tr>
@@ -723,11 +814,12 @@ if ($pppsettings{'TYPE'} =~ /^(pppoeatm|pptpatm)$/)
 
 print <<END
 <tr>
-        <td colspan='4' width='100%' bgcolor='$color{'color20'}'><b>$Lang::tr{'adsl settings'}:</b></td>
+        <td colspan='4' width='100%' bgcolor='$color{'color20'}'><b>$Lang::tr{'atm settings'}:</b></td>
 <tr>
-
+        <td nowrap='nowrap'>$Lang::tr{'atm device'}</td>
+        <td><input type='text' size='5' name='ATM_DEV' value='$pppsettings{'ATM_DEV'}' /></td>
         <td> $Lang::tr{'encapsulation'}:</td>
-        <td colspan='2' width='30%'>
+        <td>
                 <select name='ENCAP'>
                    <option value='0' $selected{'ENCAP'}{'0'}>LLC</option>
                    <option value='1' $selected{'ENCAP'}{'1'}>VCmux</option>
@@ -735,11 +827,10 @@ print <<END
         </td>
 </tr>
 <tr>
-
         <td nowrap='nowrap'>$Lang::tr{'vpi number'}</td>
         <td><input type='text' size='5' name='VPI' value='$pppsettings{'VPI'}' /></td>
-        <td align='right'>$Lang::tr{'vci number'}</td>
-        <td colspan='2'><input type='text' size='5' name='VCI' value='$pppsettings{'VCI'}' /></td>
+        <td$Lang::tr{'vci number'}</td>
+        <td><input type='text' size='5' name='VCI' value='$pppsettings{'VCI'}' /></td>
 </tr>
 END
 ;
@@ -818,11 +909,11 @@ print <<END
 </tr>
 <tr>
 <tr>
-        <td width='25%'>MTU</td>
+        <td width='25%'>MTU&nbsp;<img src='/blob.gif' alt='*' /></td>
         <td width='25%'><input type='text' name='MTU' value='$pppsettings{'MTU'}' /></td>
 </tr>
 <tr>
-        <td width='25%'>MRU</td>
+        <td width='25%'>MRU&nbsp;<img src='/blob.gif' alt='*' /></td>
         <td width='25%'><input type='text' name='MRU' value='$pppsettings{'MRU'}' /></td>
 </tr>
 END
@@ -926,6 +1017,7 @@ sub initprofile
 {
         $pppsettings{'PROFILENAME'} = $Lang::tr{'unnamed'};
         $pppsettings{'COMPORT'} = 'ttyS0';
+        $pppsettings{'MONPORT'} = '';
         $pppsettings{'DTERATE'} = 115200;
         $pppsettings{'SPEAKER'} = 'off';
         $pppsettings{'RECONNECTION'} = 'persistent';
@@ -939,12 +1031,13 @@ sub initprofile
         $pppsettings{'ENCAP'} = '0';
         $pppsettings{'VPI'} = '1';
         $pppsettings{'VCI'} = '32';
+        $pppsettings{'ATM_DEV'} = '0';
         $pppsettings{'PPTP_PEER'} = '10.0.0.138';
        $pppsettings{'PPTP_NICCFG'} = '10.0.0.140/24 broadcast 10.0.0.255';
        $pppsettings{'PPTP_ROUTE'} = '';
         $pppsettings{'PROTOCOL'} = 'RFC2364';
-        $pppsettings{'MTU'} = '1492';
-        $pppsettings{'MRU'} = '1492';
+        $pppsettings{'MTU'} = '';
+        $pppsettings{'MRU'} = '';
         $pppsettings{'DIALMODE'} = 'T';
         $pppsettings{'MAXRETRIES'} = 5;
         $pppsettings{'HOLDOFF'} = 30;
index 901ed7250466d84a2aa6a0c043a3b3745d5e6098..2a9d49394276a83233b4928b5737b1facb5141e9 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'}");
 }
 
@@ -195,6 +195,7 @@ $proxysettings{'ENABLE_BLUE'} = 'off';
 $proxysettings{'TRANSPARENT'} = 'off';
 $proxysettings{'TRANSPARENT_BLUE'} = 'off';
 $proxysettings{'PROXY_PORT'} = '800';
+$proxysettings{'TRANSPARENT_PORT'} = '3128';
 $proxysettings{'VISIBLE_HOSTNAME'} = '';
 $proxysettings{'ADMIN_MAIL_ADDRESS'} = '';
 $proxysettings{'ADMIN_PASSWORD'} = '';
@@ -212,7 +213,7 @@ $proxysettings{'LOGGING'} = 'off';
 $proxysettings{'CACHEMGR'} = 'off';
 $proxysettings{'LOGQUERY'} = 'off';
 $proxysettings{'LOGUSERAGENT'} = 'off';
-$proxysettings{'FILEDESCRIPTORS'} = '4096';
+$proxysettings{'FILEDESCRIPTORS'} = '16384';
 $proxysettings{'CACHE_MEM'} = '2';
 $proxysettings{'CACHE_SIZE'} = '50';
 $proxysettings{'MAX_SIZE'} = '4096';
@@ -359,6 +360,15 @@ if (($proxysettings{'ACTION'} eq $Lang::tr{'save'}) || ($proxysettings{'ACTION'}
                $errormessage = $Lang::tr{'advproxy errmsg invalid proxy port'};
                goto ERROR;
        }
+       if (!(&General::validport($proxysettings{'TRANSPARENT_PORT'})))
+       {
+               $errormessage = $Lang::tr{'advproxy errmsg invalid proxy port'};
+               goto ERROR;
+       }
+       if ($proxysettings{'PROXY_PORT'} eq $proxysettings{'TRANSPARENT_PORT'}) {
+               $errormessage = $Lang::tr{'advproxy errmsg proxy ports equal'};
+               goto ERROR;
+       }
        if (!($proxysettings{'UPSTREAM_PROXY'} eq ''))
        {
                my @temp = split(/:/,$proxysettings{'UPSTREAM_PROXY'});
@@ -381,7 +391,7 @@ if (($proxysettings{'ACTION'} eq $Lang::tr{'save'}) || ($proxysettings{'ACTION'}
                }
        }
        if (!($proxysettings{'FILEDESCRIPTORS'} =~ /^\d+/) ||
-               ($proxysettings{'FILEDESCRIPTORS'} < 1) || ($proxysettings{'FILEDESCRIPTORS'} > 16384))
+               ($proxysettings{'FILEDESCRIPTORS'} < 1) || ($proxysettings{'FILEDESCRIPTORS'} > 1048576))
        {
                $errormessage = $Lang::tr{'proxy errmsg filedescriptors'};
                goto ERROR;
@@ -699,6 +709,16 @@ if (!$errormessage)
        &read_acls;
 }
 
+# ------------------------------------------------------------------
+
+# Hook to regenerate the configuration files, if cgi got called from command line.
+if ($ENV{"REMOTE_ADDR"} eq "") {
+        writeconfig();
+        exit(0);
+}
+
+# -------------------------------------------------------------------
+
 $checked{'ENABLE'}{'off'} = '';
 $checked{'ENABLE'}{'on'} = '';
 $checked{'ENABLE'}{$proxysettings{'ENABLE'}} = "checked='checked'";
@@ -946,8 +966,8 @@ print <<END
 <tr>
        <td class='base'>$Lang::tr{'advproxy transparent on'} <font color="$Header::colourgreen">Green</font>:</td>
        <td><input type='checkbox' name='TRANSPARENT' $checked{'TRANSPARENT'}{'on'} /></td>
-       <td class='base'>$Lang::tr{'advproxy visible hostname'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
-       <td><input type='text' name='VISIBLE_HOSTNAME' value='$proxysettings{'VISIBLE_HOSTNAME'}' /></td>
+       <td width='25%' class='base'>$Lang::tr{'advproxy proxy port transparent'}:</td>
+       <td width='30%'><input type='text' name='TRANSPARENT_PORT' value='$proxysettings{'TRANSPARENT_PORT'}' size='5' /></td>
 </tr>
 <tr>
 END
@@ -959,7 +979,8 @@ if ($netsettings{'BLUE_DEV'}) {
        print "<td colspan='2'>&nbsp;</td>";
 }
 print <<END
-       <td colspan='2'>&nbsp;</td>
+       <td class='base'>$Lang::tr{'advproxy visible hostname'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
+       <td><input type='text' name='VISIBLE_HOSTNAME' value='$proxysettings{'VISIBLE_HOSTNAME'}' /></td>
 </tr>
 <tr>
 END
@@ -1185,7 +1206,7 @@ print <<END
        <td colspan='4'><b>$Lang::tr{'advproxy destination ports'}</b></td>
 </tr>
 <tr>
-       <td width='25%' align=center></td> <td width='20%' align=center></td><td width='25%' align=center></td><td width='30%' align=center></td>
+       <td width='25%' align='center'></td> <td width='20%' align='center'></td><td width='25%' align='center'></td><td width='30%' align='center'></td>
 </tr>
 <tr>
        <td colspan='2' class='base'>$Lang::tr{'advproxy standard ports'}:</td>
@@ -1657,8 +1678,8 @@ print <<END
        <td class='base'>$Lang::tr{'advproxy fake referer'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
 </tr>
 <tr>
-       <td><input type='text' name='FAKE_USERAGENT' value='$proxysettings{'FAKE_USERAGENT'}' size='56' /></td>
-       <td><input type='text' name='FAKE_REFERER' value='$proxysettings{'FAKE_REFERER'}' size='56' /></td>
+       <td><input type='text' name='FAKE_USERAGENT' value='$proxysettings{'FAKE_USERAGENT'}' size='40%' /></td>
+       <td><input type='text' name='FAKE_REFERER' value='$proxysettings{'FAKE_REFERER'}' size='40%' /></td>
 </tr>
 </table>
 <hr size='1'>
@@ -2215,7 +2236,7 @@ print <<END
        <td width='25%'><input type='text' name='NCSA_USERNAME' value='$proxysettings{'NCSA_USERNAME'}' size='12'
 END
 ;
-       if ($proxysettings{'ACTION'} eq $Lang::tr{'edit'}) { print " readonly "; }
+       if ($proxysettings{'ACTION'} eq $Lang::tr{'edit'}) { print " readonly='readonly' "; }
        print <<END
         /></td>
        <td width='25%' class='base'>$Lang::tr{'advproxy NCSA group'}:</td>
@@ -2951,11 +2972,23 @@ sub writepacfile
                print FILE <<END
 if (
      (isPlainHostName(host)) ||
-     (dnsDomainIs(host, ".$mainsettings{'DOMAINNAME'}")) ||
      (isInNet(host, "127.0.0.1", "255.0.0.0")) ||
-     (isInNet(host, "10.0.0.0", "255.0.0.0")) ||
-     (isInNet(host, "172.16.0.0", "255.240.0.0")) ||
-     (isInNet(host, "192.168.0.0", "255.255.0.0")) ||
+END
+;
+
+       if ($netsettings{'GREEN_DEV'}) {
+               print FILE "     (isInNet(host, \"$netsettings{'GREEN_NETADDRESS'}\", \"$netsettings{'GREEN_NETMASK'}\")) ||\n";
+       }
+
+       if (&Header::blue_used() && $netsettings{'BLUE_DEV'}) {
+               print FILE "     (isInNet(host, \"$netsettings{'BLUE_NETADDRESS'}\", \"$netsettings{'BLUE_NETMASK'}\")) ||\n";
+       }
+
+       if (&Header::orange_used() && $netsettings{'ORANGE_DEV'}) {
+               print FILE "     (isInNet(host, \"$netsettings{'ORANGE_NETADDRESS'}\", \"$netsettings{'ORANGE_NETMASK'}\")) ||\n";
+       }
+
+       print FILE <<END
      (isInNet(host, "169.254.0.0", "255.255.0.0"))
    )
      return "DIRECT";
@@ -3061,16 +3094,32 @@ icp_port 0
 
 END
        ;
+
+       # Include file with user defined settings.
+       if (-e "/etc/squid/squid.conf.pre.local") {
+               print FILE "include /etc/squid/squid.conf.pre.local\n\n";
+       }
+
        print FILE "http_port $netsettings{'GREEN_ADDRESS'}:$proxysettings{'PROXY_PORT'}";
-       if ($proxysettings{'TRANSPARENT'} eq 'on') { print FILE " transparent" }
        if ($proxysettings{'NO_CONNECTION_AUTH'} eq 'on') { print FILE " no-connection-auth" }
        print FILE "\n";
 
+       if ($proxysettings{'TRANSPARENT'} eq 'on') {
+               print FILE "http_port $netsettings{'GREEN_ADDRESS'}:$proxysettings{'TRANSPARENT_PORT'} intercept";
+               if ($proxysettings{'NO_CONNECTION_AUTH'} eq 'on') { print FILE " no-connection-auth" }
+               print FILE "\n";
+       }
+
        if ($netsettings{'BLUE_DEV'} && $proxysettings{'ENABLE_BLUE'} eq 'on') {
                print FILE "http_port $netsettings{'BLUE_ADDRESS'}:$proxysettings{'PROXY_PORT'}";
-               if ($proxysettings{'TRANSPARENT_BLUE'} eq 'on') { print FILE " transparent" }
                if ($proxysettings{'NO_CONNECTION_AUTH'} eq 'on') { print FILE " no-connection-auth" }
                print FILE "\n";
+
+               if ($proxysettings{'TRANSPARENT_BLUE'} eq 'on') {
+                       print FILE "http_port $netsettings{'BLUE_ADDRESS'}:$proxysettings{'TRANSPARENT_PORT'} intercept";
+                       if ($proxysettings{'NO_CONNECTION_AUTH'} eq 'on') { print FILE " no-connection-auth" }
+                       print FILE "\n";
+               }
        }
 
        if ($proxysettings{'CACHE_SIZE'} > 0)
@@ -3128,12 +3177,12 @@ END
        if ($proxysettings{'LOGGING'} eq 'on')
        {
                print FILE <<END
-access_log /var/log/squid/access.log
+access_log stdio:/var/log/squid/access.log
 cache_log /var/log/squid/cache.log
 cache_store_log none
 END
        ;
-               if ($proxysettings{'LOGUSERAGENT'} eq 'on') { print FILE "useragent_log \/var\/log\/squid\/user_agent.log\n"; }
+               if ($proxysettings{'LOGUSERAGENT'} eq 'on') { print FILE "access_log stdio:\/var\/log\/squid\/user_agent.log useragent\n"; }
                if ($proxysettings{'LOGQUERY'} eq 'on') { print FILE "\nstrip_query_terms off\n"; }
        } else {
                print FILE <<END
@@ -3166,7 +3215,7 @@ END
        {
                if ($proxysettings{'AUTH_METHOD'} eq 'ncsa')
                {
-                       print FILE "auth_param basic program $authdir/ncsa_auth $userdb\n";
+                       print FILE "auth_param basic program $authdir/basic_ncsa_auth $userdb\n";
                        print FILE "auth_param basic children $proxysettings{'AUTH_CHILDREN'}\n";
                        print FILE "auth_param basic realm $authrealm\n";
                        print FILE "auth_param basic credentialsttl $proxysettings{'AUTH_CACHE_TTL'} minutes\n";
@@ -3176,7 +3225,7 @@ END
                if ($proxysettings{'AUTH_METHOD'} eq 'ldap')
                {
                        print FILE "auth_param basic utf8 on\n";
-                       print FILE "auth_param basic program $authdir/squid_ldap_auth -b \"$proxysettings{'LDAP_BASEDN'}\"";
+                       print FILE "auth_param basic program $authdir/basic_ldap_auth -b \"$proxysettings{'LDAP_BASEDN'}\"";
                        if (!($proxysettings{'LDAP_BINDDN_USER'} eq '')) { print FILE " -D \"$proxysettings{'LDAP_BINDDN_USER'}\""; }
                        if (!($proxysettings{'LDAP_BINDDN_PASS'} eq '')) { print FILE " -w $proxysettings{'LDAP_BINDDN_PASS'}"; }
                        if ($proxysettings{'LDAP_TYPE'} eq 'ADS')
@@ -3227,7 +3276,7 @@ END
                                print FILE "auth_param ntlm children $proxysettings{'AUTH_CHILDREN'}\n";
                                if (!($proxysettings{'AUTH_IPCACHE_TTL'} eq '0')) { print FILE "\nauthenticate_ip_ttl $proxysettings{'AUTH_IPCACHE_TTL'} minutes\n"; }
                        } else {
-                               print FILE "auth_param basic program $authdir/msnt_auth\n";
+                               print FILE "auth_param basic program $authdir/basic_msnt_auth\n";
                                print FILE "auth_param basic children $proxysettings{'AUTH_CHILDREN'}\n";
                                print FILE "auth_param basic realm $authrealm\n";
                                print FILE "auth_param basic credentialsttl $proxysettings{'AUTH_CACHE_TTL'} minutes\n";
@@ -3253,7 +3302,7 @@ END
 
                if ($proxysettings{'AUTH_METHOD'} eq 'radius')
                {
-                       print FILE "auth_param basic program $authdir/squid_radius_auth -h $proxysettings{'RADIUS_SERVER'} -p $proxysettings{'RADIUS_PORT'} ";
+                       print FILE "auth_param basic program $authdir/basic_radius_auth -h $proxysettings{'RADIUS_SERVER'} -p $proxysettings{'RADIUS_PORT'} ";
                        if (!($proxysettings{'RADIUS_IDENTIFIER'} eq '')) { print FILE "-i $proxysettings{'RADIUS_IDENTIFIER'} "; }
                        print FILE "-w $proxysettings{'RADIUS_SECRET'}\n";
                        print FILE "auth_param basic children $proxysettings{'AUTH_CHILDREN'}\n";
@@ -3346,11 +3395,6 @@ END
                print FILE "acl blocked_mimetypes rep_mime_type \"$mimetypes\"\n\n";
        }
 
-       print FILE <<END
-#acl all src all
-acl localhost src 127.0.0.1/32
-END
-;
 open (PORTS,"$acl_ports_ssl");
 @temp = <PORTS>;
 close PORTS;
@@ -3442,6 +3486,18 @@ END
                close (ACL);
        }
        if ((!-z $extgrp) && ($proxysettings{'AUTH_METHOD'} eq 'ncsa') && ($proxysettings{'NCSA_BYPASS_REDIR'} eq 'on')) { print FILE "\nredirector_access deny for_extended_users\n"; }
+
+       # Check if squidclamav is enabled.
+       if ($proxysettings{'ENABLE_CLAMAV'} eq 'on') {
+               print FILE "\n#Settings for squidclamav:\n";
+               print FILE "http_port 127.0.0.1:$proxysettings{'PROXY_PORT'}\n";
+               print FILE "acl purge method PURGE\n";
+               print FILE "http_access deny to_localhost\n";
+               print FILE "http_access allow localhost\n";
+               print FILE "http_access allow purge localhost\n";
+               print FILE "http_access deny purge\n";
+               print FILE "url_rewrite_access deny localhost\n";
+       }
        print FILE <<END
 
 #Access to squid:
@@ -3957,6 +4013,18 @@ END
                print FILE "include /etc/squid/squid.conf.local\n";
        }
        close FILE;
+
+       # Proxy settings for squidclamav - if installed.
+       #
+       # Check if squidclamav is enabled.
+       if ($proxysettings{'ENABLE_CLAMAV'} eq 'on') {
+
+               my $configfile='/etc/squidclamav.conf';
+
+               my $data = &General::read_file_utf8($configfile);
+               $data =~ s/squid_port [0-9]+/squid_port $proxysettings{'PROXY_PORT'}/g;
+               &General::write_file_utf8($configfile, $data);
+       }
 }
 
 # -------------------------------------------------------------------
index de732842ca429d780f0ab93a8f4c60a727140a76..5542f65309d7863e9f14489d73cde0373f6d1658 100644 (file)
@@ -251,13 +251,13 @@ END
 if ($qossettings{'DOLEVEL7'} eq $Lang::tr{'save'})
 {
        if ( $qossettings{'QIP'} ne '' ) {
-               unless ( &General::validip($qossettings{'QIP'}) ) {
+               if ((!&General::validipandmask($qossettings{'QIP'})) && (!&General::validip($qossettings{'QIP'}))) {
                        $qossettings{'VALID'} = 'no';
                        $message = $Lang::tr{'The source IP address is invalid.'};
                }
        }
        if ( $qossettings{'DIP'} ne '' ) {
-               unless ( &General::validip($qossettings{'DIP'}) ) {
+               if ((!&General::validipandmask($qossettings{'DIP'})) && (!&General::validip($qossettings{'DIP'}))) {
                        $qossettings{'VALID'} = 'no';
                        $message = $Lang::tr{'The destination IP address is invalid.'};
                }
@@ -326,15 +326,15 @@ END
 if ($qossettings{'DOPORT'} eq $Lang::tr{'save'})
 {
        if ( $qossettings{'QIP'} ne '' ) {
-               unless ( &General::validip($qossettings{'QIP'}) ) {
+               if ((!&General::validipandmask($qossettings{'QIP'})) && (!&General::validip($qossettings{'QIP'}))) {
                        $qossettings{'VALID'} = 'no';
-                       $message = "$Lang::tr{'The source IP address is invalid.'}";
+                       $message = $Lang::tr{'The source IP address is invalid.'};
                }
        }
        if ( $qossettings{'DIP'} ne '' ) {
-               unless ( &General::validip($qossettings{'DIP'}) ) {
+               if ((!&General::validipandmask($qossettings{'DIP'})) && (!&General::validip($qossettings{'DIP'}))) {
                        $qossettings{'VALID'} = 'no';
-                       $message = "$Lang::tr{'The destination IP address is invalid.'}";
+                       $message = $Lang::tr{'The destination IP address is invalid.'};
                }
        }
        if ($qossettings{'CLASS'} >= 100 && $qossettings{'CLASS'} < 121) {
@@ -699,7 +699,7 @@ if ($errormessage) {
 ############################################################################################################################
 ############################################################################################################################
 
-&Header::openbox('100%', 'center', 'Quality of Service');
+&Header::openbox('100%', 'center', );
 
 print <<END
   <form method='post' action='$ENV{'SCRIPT_NAME'}'>
@@ -707,15 +707,18 @@ print <<END
 END
 ;
        if ( $message ne "" ) {
-               print "<tr><td colspan='2' align='center'><font color='red'>$message</font>";
+               print "<tr><td colspan='2' align='center'><font color='red'>$message</font></tr>";
        }
        print <<END
-               <tr><td width='50%' align='left'><b>Quality of Service:</b>
-                   <td width='50%' align='center' bgcolor='$statuscolor'><font color='white'>$status</font>
-               <tr><td width='100%' align='center' colspan='2'>
-               <input type='submit' name='ACTION' value="$Lang::tr{'start'}" />
-               <input type='submit' name='ACTION' value="$Lang::tr{'stop'}" />
-               <input type='submit' name='ACTION' value="$Lang::tr{'restart'}" /></table></form>
+               <tr><td width='50%' align='left'><b>Quality of Service:</b></td>
+                   <td width='50%' align='center' bgcolor='$statuscolor'><font color='white'>$status</font></td></tr>
+                   <tr>
+                               <td colspan='2'><br></td>
+                       </tr>
+               <tr><td width='100%' align='right' colspan='2'>
+               <input type='submit' name='ACTION' value="$Lang::tr{'start'}">
+               <input type='submit' name='ACTION' value="$Lang::tr{'stop'}">
+               <input type='submit' name='ACTION' value="$Lang::tr{'restart'}" ></td></tr></table></form>
 END
 ;
        if (($qossettings{'OUT_SPD'} ne '') && ($qossettings{'INC_SPD'} ne '')) {
@@ -769,10 +772,10 @@ if ( ($qossettings{'DEFCLASS_INC'} eq '') || ($qossettings{'DEFCLASS_OUT'} eq ''
        exit
 }
 
-       &Header::openbox('100%', 'center', "$qossettings{'RED_DEV'} $Lang::tr{'graph'}");
+       &Header::openbox('100%', 'center', "$qossettings{'RED_DEV'} $Lang::tr{'graph'}, $Lang::tr{'uplink'}");
        &Graphs::makegraphbox("qos.cgi",$qossettings{'RED_DEV'},"hour","325");
        &Header::closebox();
-       &Header::openbox('100%', 'center', "$qossettings{'IMQ_DEV'} $Lang::tr{'graph'}");
+       &Header::openbox('100%', 'center', "$qossettings{'IMQ_DEV'} $Lang::tr{'graph'}, $Lang::tr{'downlink'}");
        &Graphs::makegraphbox("qos.cgi",$qossettings{'IMQ_DEV'},"hour","325");
        &Header::closebox();
 
@@ -793,7 +796,7 @@ sub changedefclasses {
                <form method='post' action='$ENV{'SCRIPT_NAME'}'>
                <table width='66%'>
                <tr><td width='100%' colspan='3'>$Lang::tr{'no filter pass'}
-               <tr><td width='33%' align='right'>Download:<td width='33%' align='left'><select name='DEFCLASS_INC'>
+               <tr><td width='33%' align='right'>$Lang::tr{'download'}:<td width='33%' align='left'><select name='DEFCLASS_INC'>
 END
 ;
                for ( $c = 200 ; $c <= 220 ; $c++ )
@@ -804,7 +807,7 @@ END
                }
                print <<END
                </select><td width='33%' align='center'>&nbsp;
-               <tr><td width='33%' align='right'>Upload:<td width='33%' align='left'><select name='DEFCLASS_OUT'>
+               <tr><td width='33%' align='right'>$Lang::tr{'upload'}:<td width='33%' align='left'><select name='DEFCLASS_OUT'>
 END
 ;
                for ( $c = 100 ; $c <= 120 ; $c++ )
@@ -1076,10 +1079,10 @@ END
        print <<END
                    </select><td width='33%' align='center'>&nbsp;
                <tr><td width='33%' align='right'>$Lang::tr{'source ip'}:
-                   <td width='33%' align='left'><input type='text' name='QIP' maxlength='15' value='$qossettings{'QIP'}' />
+                   <td width='33%' align='left'><input type='text' name='QIP' maxlength='31' value='$qossettings{'QIP'}' />
                    <td width='33%' align='center'>&nbsp;
                <tr><td width='33%' align='right'>$Lang::tr{'destination ip'}:
-                   <td width='33%' align='left'><input type='text' name='DIP' maxlength='15' value='$qossettings{'DIP'}' />
+                   <td width='33%' align='left'><input type='text' name='DIP' maxlength='31' value='$qossettings{'DIP'}' />
                    <td width='33%' align='center'><input type='hidden' name='CLASS' value='$qossettings{'CLASS'}' /><input type='submit' name='DOLEVEL7' value='$Lang::tr{'save'}' />
                <tr><td colspan="3" align='center'><font color="red"><em>$Lang::tr{'qos warning'}</em></font>
                </table></form>
@@ -1120,10 +1123,10 @@ END
                    <td width='33%' align='left'><input type='text' name='DPORT' maxlength='11' value='$qossettings{'DPORT'}' />
                    <td width='33%' align='center'>&nbsp;
                <tr><td width='33%' align='right'>$Lang::tr{'source ip'}:
-                   <td width='33%' align='left'><input type='text' name='QIP' maxlength='15' value='$qossettings{'QIP'}' />
+                   <td width='33%' align='left'><input type='text' name='QIP' maxlength='31' value='$qossettings{'QIP'}' />
                    <td width='33%' align='center'>&nbsp;
                <tr><td width='33%' align='right'>$Lang::tr{'destination ip'}:
-                   <td width='33%' align='left'><input type='text' name='DIP' maxlength='15' value='$qossettings{'DIP'}' />
+                   <td width='33%' align='left'><input type='text' name='DIP' maxlength='31' value='$qossettings{'DIP'}' />
                    <td width='33%' align='center'><input type='hidden' name='CLASS' value='$qossettings{'CLASS'}' /><input type='submit' name='DOPORT' value='$Lang::tr{'save'}' />
                </table></form>
 END
@@ -1181,7 +1184,7 @@ sub showclasses {
                        @classline = split( /\;/, $classentry );
                        if ( $classline[0] eq $qossettings{'DEV'} )
                        {
-                         &Header::openbox('100%', 'center', "$Lang::tr{'Class'}: $classline[1]");
+                         &Header::openbox('100%', 'center', "$Lang::tr{'Class'}: $classline[1] $classline[8]");
                                print <<END
                                <table border='0' width='100%' cellspacing='0'>
                                <tr><td bgcolor='$color{'color20'}' width='10%' align='center'><b>$Lang::tr{'interface'}</b>
@@ -1206,22 +1209,22 @@ sub showclasses {
                                        <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                <input type='hidden' name='CLASS' value='$classline[1]' />
                                                <input type='hidden' name='ACTION' value='$Lang::tr{'qos add subclass'}' />
-                                               <input type='image' alt='$Lang::tr{'add subclass'}' src='/images/addblue.gif' />
+                                               <input type='image' alt='$Lang::tr{'add subclass'}' title='$Lang::tr{'add subclass'}' src='/images/addblue.gif' />
                                        </form>
                                        <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                <input type='hidden' name='CLASS' value='$classline[1]' />
                                                <input type='hidden' name='ACTION' value='$Lang::tr{'Add Rule'}' />
-                                               <input type='image' alt='$Lang::tr{'Add Rule'}' src='/images/addgreen.gif' />
+                                               <input type='image' alt='$Lang::tr{'Add Rule'}' title='$Lang::tr{'Add Rule'}' src='/images/addgreen.gif' />
                                        </form>
                                        <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                <input type='hidden' name='CLASS' value='$classline[1]' />
                                                <input type='hidden' name='DOCLASS' value='$Lang::tr{'edit'}' />
-                                               <input type='image' alt='$Lang::tr{'edit'}' src='/images/edit.gif' />
+                                               <input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
                                        </form>
                                        <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                <input type='hidden' name='CLASS' value='$classline[1]' />
                                                <input type='hidden' name='DOCLASS' value='$Lang::tr{'delete'}' />
-                                               <input type='image' alt='$Lang::tr{'delete'}' src='/images/delete.gif' />
+                                               <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' />
                                        </form>
                                        </table>
                                    </td>
@@ -1246,13 +1249,13 @@ END
                                                <input type='hidden' name='CLASS' value='$l7ruleline[0]' />
                                                <input type='hidden' name='L7PROT' value='$l7ruleline[2]' />
                                                <input type='hidden' name='DOLEVEL7' value='$Lang::tr{'edit'}' />
-                                               <input type='image' alt='$Lang::tr{'edit'}' src='/images/edit.gif' />
+                                               <input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
                                        </form>
                                        <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                <input type='hidden' name='CLASS' value='$l7ruleline[0]' />
                                                <input type='hidden' name='L7PROT' value='$l7ruleline[2]' />
                                                <input type='hidden' name='DOLEVEL7' value='$Lang::tr{'delete'}' />
-                                               <input type='image' alt='$Lang::tr{'delete'}' src='/images/delete.gif' />
+                                               <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' />
                                        </form>
                                        </table>
 END
@@ -1311,7 +1314,7 @@ END
                                                <input type='hidden' name='DIP' value='$portruleline[5]' />
                                                <input type='hidden' name='DPORT' value='$portruleline[6]' />
                                                <input type='hidden' name='DOPORT' value='$Lang::tr{'edit'}' />
-                                               <input type='image' alt='$Lang::tr{'edit'}' src='/images/edit.gif' />
+                                               <input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
                                        </form>
                                        <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                <input type='hidden' name='CLASS' value='$portruleline[0]' />
@@ -1321,7 +1324,7 @@ END
                                                <input type='hidden' name='DIP' value='$portruleline[5]' />
                                                <input type='hidden' name='DPORT' value='$portruleline[6]' />
                                                <input type='hidden' name='DOPORT' value='$Lang::tr{'delete'}' />
-                                               <input type='image' alt='$Lang::tr{'delete'}' src='/images/delete.gif' />
+                                               <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' />
                                        </form>
                                    </table>
 END
@@ -1369,14 +1372,14 @@ END
                                                                <input type='hidden' name='DEV' value='$tosruleline[1]' />
                                                                <input type='hidden' name='TOS' value='$tosruleline[2]' />
                                                                <input type='hidden' name='DOTOS' value='$Lang::tr{'edit'}' />
-                                                               <input type='image' alt='$Lang::tr{'edit'}' src='/images/edit.gif' />
+                                                               <input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
                                                        </form>
                                                        <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                                <input type='hidden' name='CLASS' value='$tosruleline[0]' />
                                                                <input type='hidden' name='DEV' value='$tosruleline[1]' />
                                                                <input type='hidden' name='TOS' value='$tosruleline[2]' />
                                                                <input type='hidden' name='DOTOS' value='$Lang::tr{'delete'}' />
-                                                               <input type='image' alt='$Lang::tr{'delete'}' src='/images/delete.gif' />
+                                                               <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' />
                                                        </form>
                                                </table>
 END
@@ -1404,17 +1407,17 @@ END
                                                <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                        <input type='hidden' name='CLASS' value='$subclassline[2]' />
                                                        <input type='hidden' name='ACTION' value='$Lang::tr{'Add Rule'}' />
-                                                       <input type='image' alt='$Lang::tr{'Add Rule'}' src='/images/addgreen.gif' />
+                                                       <input type='image' alt='$Lang::tr{'Add Rule'}' title='$Lang::tr{'Add Rule'}' src='/images/addgreen.gif' />
                                                </form>
                                                <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                        <input type='hidden' name='CLASS' value='$subclassline[2]' />
                                                        <input type='hidden' name='DOSCLASS' value='$Lang::tr{'edit'}' />
-                                                       <input type='image' alt='$Lang::tr{'edit'}' src='/images/edit.gif' />
+                                                       <input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
                                                </form>
                                                <td><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                                        <input type='hidden' name='CLASS' value='$subclassline[2]' />
                                                        <input type='hidden' name='DOSCLASS' value='$Lang::tr{'delete'}' />
-                                                       <input type='image' alt='$Lang::tr{'delete'}' src='/images/delete.gif' />
+                                                       <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' />
                                                </form>
                                                </table>
 END
index ed8a94d246877251648acbaa63a85ee0069e9790..10a3e87cc0c1ed9305e9a6d19423180b83105c40 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2011  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        #
@@ -120,13 +120,13 @@ $checked{'SSH_PORT'}{$remotesettings{'SSH_PORT'}} = "checked='checked'";
 
 if ($errormessage) {
        &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
-       print "<FONT CLASS='base'>$errormessage&nbsp;</FONT>\n";
+       print "<font class='base'>$errormessage&nbsp;</font>\n";
        &Header::closebox();
 }
 
 print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";
 
-&Header::openbox('100%', 'left', 'SSH:');
+&Header::openbox('100%', 'left', $Lang::tr{'ssh'});
 print <<END
 <table width='100%'>
 <tr>
@@ -154,7 +154,7 @@ print <<END
        <td width='100%' class='base'>$Lang::tr{'ssh port'}</td>
 </tr>
 <tr>
-       <td align='center' colspan='3'><hr />
+       <td align='right' colspan='3'>
        <input type='submit' name='ACTION' value='$Lang::tr{'ssh tempstart15'}' />
        <input type='submit' name='ACTION' value='$Lang::tr{'ssh tempstart30'}' />
        <input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
@@ -181,6 +181,7 @@ END
 &viewkey("/etc/ssh/ssh_host_rsa_key.pub","RSA2");
 &viewkey("/etc/ssh/ssh_host_dsa_key.pub","DSA");
 &viewkey("/etc/ssh/ssh_host_ecdsa_key.pub","ECDSA");
+&viewkey("/etc/ssh/ssh_host_ed25519_key.pub","ED25519");
 
 print "</table>\n";
 
index afcd38822d6fff49a5d0c592e1431df074d6ce99..5798fb89689172ccf8a8903ac1295da809616b4f 100644 (file)
@@ -126,7 +126,7 @@ if ($settings{'ACTION'} eq $Lang::tr{'add'}) {
        $errormessage = $Lang::tr{'invalid ip'}." / ".$Lang::tr{'invalid netmask'};
        }
 
-       if ($settings{'IP'} =~ /0.0.0.0/){
+       if ($settings{'IP'} =~ /^0\.0\.0\.0/){
        $errormessage = $Lang::tr{'invalid ip'}." - 0.0.0.0";
        }
 
@@ -244,10 +244,10 @@ print <<END
     <td><input type='text' name='REMARK' value='$settings{'REMARK'}' size='25'/></td>
 </tr>
 </table>
-<hr />
+<br>
 <table width='100%'>
 <tr>
-    <td width='50%' align='center'><input type='hidden' name='ACTION' value='$Lang::tr{'add'}' /><input type='submit' name='SUBMIT' value='$buttontext' /></td>
+    <td width='50%' align='right'><input type='hidden' name='ACTION' value='$Lang::tr{'add'}' /><input type='submit' name='SUBMIT' value='$buttontext' /></td>
 </tr>
 </table>
 </form>
@@ -257,13 +257,13 @@ END
 
 &Header::openbox('100%', 'left', $Lang::tr{'routing table'});
 print <<END
-<hr />
-<table width='100%'>
+
+<table width='100%' class='tbl'>
 <tr>
-    <td width='30%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IP'><b>$Lang::tr{'host ip'} / $Lang::tr{'network'}</b></a></td>
-    <td width='30%' align='center'><a href='$ENV{'SCRIPT_NAME'}?GATEWAY'><b>$Lang::tr{'gateway'}</b></a></td>
-    <td width='30%' align='center'><a href='$ENV{'SCRIPT_NAME'}?REMARK'><b>$Lang::tr{'remark'}</b></a></td>
-    <td width='10%' colspan='3' class='boldbase' align='center'><b>$Lang::tr{'action'}</b></td>
+    <th width='30%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IP'><b>$Lang::tr{'host ip'} / $Lang::tr{'network'}</b></a></th>
+    <th width='30%' align='center'><a href='$ENV{'SCRIPT_NAME'}?GATEWAY'><b>$Lang::tr{'gateway'}</b></a></th>
+    <th width='30%' align='center'><a href='$ENV{'SCRIPT_NAME'}?REMARK'><b>$Lang::tr{'remark'}</b></a></th>
+    <th width='10%' colspan='3' class='boldbase' align='center'><b>$Lang::tr{'action'}</b></th>
 </tr>
 END
 ;
@@ -273,6 +273,7 @@ END
 #
 
 my $key = 0;
+my $col="";
 foreach my $line (@current) {
     chomp($line);                              # remove newline
     my @temp=split(/\,/,$line);
@@ -294,15 +295,17 @@ foreach my $line (@current) {
     if ($settings{'KEY1'} eq $key) {
        print "<tr bgcolor='${Header::colouryellow}'>";
     } elsif ($key % 2) {
-       print "<tr bgcolor='$color{'color22'}'>";
+       print "<tr>";
+       $col="bgcolor='$color{'color20'}'";
     } else {
-       print "<tr bgcolor='$color{'color20'}'>"; 
+       print "<tr>";
+       $col="bgcolor='$color{'color22'}'";
     }
     print <<END
-<td align='center'>$temp[1]</td>
-<td align='center'>$temp[2]</td>
-<td align='center'>$temp[3]</td>
-<td align='center'>
+<td align='center' $col>$temp[1]</td>
+<td align='center' $col>$temp[2]</td>
+<td align='center' $col>$temp[3]</td>
+<td align='center' $col>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
 <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$gdesc' title='$gdesc' />
@@ -310,7 +313,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' 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'}' />
@@ -318,7 +321,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
 <form method='post' 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'}' />
index 74f10bd3437d515b71f1aee198d0b408fddb39a2..bfa0b89edb272fc013fb65a87543f4653af626a3 100644 (file)
@@ -816,10 +816,10 @@ END
                <form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'accounting'}'>
                <table width='95%' cellspacing='0'>
                <tr bgcolor='$color{'color20'}'><td colspan='2' align='left'><b>$Lang::tr{'change passwords'}</b></td></tr>
-               <tr><td align='left'>$Lang::tr{'username'}</td><td><input type='text' name='USERNAME' value='$username' size='30' readonly /></td></tr>
+               <tr><td align='left'>$Lang::tr{'username'}</td><td><input type='text' name='USERNAME' value='$username' size='30' readonly='readonly' /></td></tr>
                <tr><td align='left'>$Lang::tr{'password'}</td><td><input type='password' name='PASSWORD' value='$password' size='30' /></td></tr>
                <tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbchangepw' />
-                                                                                                                                                               <input type='image' alt=$Lang::tr{'save'} title=$Lang::tr{'save'} src='/images/media-floppy.png' /></td></tr>
+                       <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' /></td></tr>
                </table>
                </form>
 END
@@ -844,7 +844,7 @@ END
                <tr><td align='left'>$Lang::tr{'unix group'}</td><td><input type='text' name='GROUP' value='sambauser' size='30' /></td></tr>
                <tr><td align='left'>$Lang::tr{'unix shell'}</td><td><input type='text' name='SHELL' value='/bin/false' size='30' /></td></tr>
                <tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbuseradd' />
-                                                                                                                                                               <input type='image' alt=$Lang::tr{'save'} title=$Lang::tr{'save'} src='/images/media-floppy.png' /></td></tr>
+                       <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' /></td></tr>
                </table>
                </form>
 END
@@ -865,7 +865,7 @@ END
                <tr><td align='left'>$Lang::tr{'unix group'}</td><td><input type='text' name='GROUP' value='sambawks' size='30' /></td></tr>
                <tr><td align='left'>$Lang::tr{'unix shell'}</td><td><input type='text' name='SHELL' value='/bin/false' size='30' /></td></tr>
                <tr><td colspan='2' align='center'><input type='hidden' name='ACTION' value='smbpcadd' />
-                                                                                                                                                               <input type='image' title=$Lang::tr{'save'} alt=$Lang::tr{'save'} src='/images/media-floppy.png' /></td></tr>
+                       <input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/media-floppy.png' /></td></tr>
                </table>
                </form>
 END
@@ -886,27 +886,33 @@ my %shares =  config("${General::swroot}/samba/shares");
 print <<END
 <a name="$Lang::tr{'manage shares'}"></a>
 <br />
-<table width='95%' cellspacing='0'>
-<tr><td bgcolor='$color{'color20'}' colspan='3' align='left'><b>$Lang::tr{'manage shares'}</b>
-<tr><td align='left'><u>$Lang::tr{'sharename'}</u></td><td colspan='2' width="5%" align='center'><u>$Lang::tr{'options'}</u></td></tr>
+<table width='95%' cellspacing='0' class='tbl'>
+<tr><th bgcolor='$color{'color20'}' colspan='3' align='left'><b>$Lang::tr{'manage shares'}</b></th></tr>
+<tr><th align='left'><u>$Lang::tr{'sharename'}</u></th><th colspan='2' width="5%" align='center'><u>$Lang::tr{'options'}</u></th></tr>
 END
 ;
 
 my @Shares = keys(%shares);
 my $lines = 0;
-
+my $col="";
 foreach my $shareentry (sort @Shares)
        {
        chomp $shareentry;
-       if ($lines % 2) {print "<tr bgcolor='$color{'color20'}'>";} else {print "<tr bgcolor='$color{'color22'}'>";}
+       if ($lines % 2) {
+               print "<tr>";
+               $col="bgcolor='$color{'color20'}'";
+       } else {
+               print "<tr>";
+               $col="bgcolor='$color{'color22'}'";
+       }
        print <<END
-       <td align='left'>$shareentry</td>
-       <td><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'manage shares'}'>
+       <td align='left' $col>$shareentry</td>
+       <td $col><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'manage shares'}'>
                        <input type='hidden' name='NAME' value='$shareentry' />
                        <input type='hidden' name='ACTION' value='sharechange' />
                        <input type='image' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' src='/images/edit.gif' />
        </form></td>
-       <td><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'manage shares'}'>
+       <td $col><form method='post' action='$ENV{'SCRIPT_NAME'}#$Lang::tr{'manage shares'}'>
                        <input type='hidden' name='NAME' value='$shareentry' />
                        <input type='hidden' name='ACTION' value='smbsharedel' />
                        <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/user-trash.png' />
index 131cad8f0a9e92f67599cbc397d50752de99b293..6bfa5bbbe81a5607b91deb6991a70b0ee055e72c 100644 (file)
@@ -116,25 +116,33 @@ if ( $querry[0] =~ "processescpu"){
        &Header::openbox('100%', 'left', $Lang::tr{'services'});
        print <<END
 <div align='center'>
-<table width='80%' cellspacing='1' border='0'>
-<tr bgcolor='$color{'color20'}'><td align='left'><b>$Lang::tr{'services'}</b></td><td align='center' ><b>$Lang::tr{'status'}</b></td><td align='center'><b>PID</b></td><td align='center'><b>$Lang::tr{'memory'}</b></td></tr>
+<table width='80%' cellspacing='1' class='tbl'>
+<tr>
+       <th align='left'><b>$Lang::tr{'services'}</b></th>
+       <th align='center' ><b>$Lang::tr{'status'}</b></th>
+       <th align='center'><b>PID</b></th>
+       <th align='center'><b>$Lang::tr{'memory'}</b></th>
+</tr>
 END
 ;
        my $key = '';
+       my $col="";
        foreach $key (sort keys %servicenames){
                $lines++;
                if ($lines % 2){
-                       print "<tr bgcolor='$color{'color22'}'>\n<td align='left'>";
+                       $col="bgcolor='$color{'color22'}'";
+                       print "<tr><td align='left' $col>";
                        print $link{$key};
-                       print "</td>\n";
+                       print "</td>";
                }else{
-                       print "<tr bgcolor='$color{'color20'}'>\n<td align='left'>";
+                       $col="bgcolor='$color{'color20'}'";
+                       print "<tr><td align='left' $col>";
                        print $link{$key};
-                       print "</td>\n";
+                       print "</td>";
                }
 
                my $shortname = $servicenames{$key};
-               my $status = &isrunning($shortname);
+               my $status = &isrunning($shortname,$col);
 
                print "$status\n";
                print "</tr>\n";
@@ -152,14 +160,14 @@ END
 
        print <<END
 <div align='center'>
-<table width='80%' cellspacing='1' border='0'>
-<tr bgcolor='$color{'color20'}'>
-<td align='center'><b>Addon</b></td>
-<td align='center'><b>Boot</b></td>
-<td align='center' colspan=2><b>$Lang::tr{'action'}</b></td>
-<td align='center'><b>$Lang::tr{'status'}</b></td>
-<td align='center'><b>PID</b></td>
-<td align='center'><b>$Lang::tr{'memory'}</b></td>
+<table width='80%' cellspacing='1' class='tbl'>
+<tr>
+       <th align='center'><b>Addon</b></th>
+       <th align='center'><b>Boot</b></th>
+       <th align='center' colspan=2><b>$Lang::tr{'action'}</b></th>
+       <th align='center'><b>$Lang::tr{'status'}</b></th>
+       <th align='center'><b>PID</b></th>
+       <th align='center'><b>$Lang::tr{'memory'}</b></th>
 </tr>
 END
 ;
@@ -183,16 +191,18 @@ END
                        if ( ($_ ne "alsa") && ($_ ne "mdadm") ) {
                                $lines++;
                                if ($lines % 2){
-                                       print "<tr bgcolor='$color{'color22'}'>";
+                                       print "<tr>";
+                                       $col="bgcolor='$color{'color22'}'";
                                }else{
-                                       print "<tr bgcolor='$color{'color20'}'>";
+                                       print "<tr>";
+                                       $col="bgcolor='$color{'color20'}'";
                                }
-                               print "<td align='left'>$_</td> ";
-                               my $status = isautorun($_);
+                               print "<td align='left' $col width='31%'>$_</td> ";
+                               my $status = isautorun($_,$col);
                                print "$status ";
-                               print "<td align='center'><A HREF=services.cgi?$_!start><img alt='$Lang::tr{'start'}' title='$Lang::tr{'start'}' src='/images/go-up.png' border='0' /></A></td>";
-                               print "<td align='center'><A HREF=services.cgi?$_!stop><img alt='$Lang::tr{'stop'}' title='$Lang::tr{'stop'}' src='/images/go-down.png' border='0' /></A></td> ";
-                               my $status = &isrunningaddon($_);
+                               print "<td align='center' $col width='8%'><a href='services.cgi?$_!start'><img alt='$Lang::tr{'start'}' title='$Lang::tr{'start'}' src='/images/go-up.png' border='0' /></a></td>";
+                               print "<td align='center' $col width='8%'><a href='services.cgi?$_!stop'><img alt='$Lang::tr{'stop'}' title='$Lang::tr{'stop'}' src='/images/go-down.png' border='0' /></a></td> ";
+                               my $status = &isrunningaddon($_,$col);
                                $status =~ s/\\e\[[0-1]\;[0-9]+m//g;
 
                                chomp($status);
@@ -219,16 +229,17 @@ END
 
 sub isautorun{
        my $cmd = $_[0];
-       my $status = "<td align='center'></td>";
+       my $col = $_[1];
+       my $status = "<td align='center' $col></td>";
        my $init = `find /etc/rc.d/rc3.d/S??${cmd} 2>/dev/null`;
        chomp ($init);
        if ($init ne ''){
-               $status = "<td align='center'><A HREF=services.cgi?$_!disable><img alt='$Lang::tr{'deactivate'}' title='$Lang::tr{'deactivate'}' src='/images/on.gif' border='0' width='16' height='16' /></A></td>";
+               $status = "<td align='center' $col><a href='services.cgi?$_!disable'><img alt='$Lang::tr{'deactivate'}' title='$Lang::tr{'deactivate'}' src='/images/on.gif' border='0' width='16' height='16' /></a></td>";
        }
        $init = `find /etc/rc.d/rc3.d/off/S??${cmd} 2>/dev/null`;
        chomp ($init);
        if ($init ne ''){
-               $status = "<td align='center'><A HREF=services.cgi?$_!enable><img alt='$Lang::tr{'activate'}' title='$Lang::tr{'activate'}' src='/images/off.gif' border='0' width='16' height='16' /></A></td>";
+               $status = "<td align='center' $col><a href='services.cgi?$_!enable'><img alt='$Lang::tr{'activate'}' title='$Lang::tr{'activate'}' src='/images/off.gif' border='0' width='16' height='16' /></a></td>";
        }
 
        return $status;
@@ -236,7 +247,8 @@ sub isautorun{
 
 sub isrunning{
        my $cmd = $_[0];
-       my $status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td><td colspan='2'></td>";
+       my $col = $_[1];
+       my $status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td><td colspan='2' $col></td>";
        my $pid = '';
        my $testcmd = '';
        my $exename;
@@ -267,7 +279,7 @@ sub isrunning{
                        close(FILE);
                }
                if ($testcmd =~ /$exename/){
-                       $status = "<td align='center' bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td><td align='center'>$pid</td><td align='center'>$memory</td>";
+                       $status = "<td align='center' bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td><td align='center' $col>$pid</td><td align='center' $col>$memory</td>";
                }
        }
        return $status;
@@ -275,7 +287,8 @@ sub isrunning{
 
 sub isrunningaddon{
        my $cmd = $_[0];
-       my $status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td><td colspan='2'></td>";
+       my $col = $_[1];
+       my $status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td><td colspan='2' $col></td>";
        my $pid = '';
        my $testcmd = '';
        my $exename;
@@ -293,7 +306,7 @@ sub isrunningaddon{
                $testcmd =~ s/\e//gi;
 
                my @pid = split(/\s/,$testcmd);
-               $status .="<td align='center'>$pid[0]</td>";
+               $status .="<td align='center' $col>$pid[0]</td>";
 
                my $memory = 0;
 
@@ -305,9 +318,9 @@ sub isrunningaddon{
                        }
                        $memory+=$memory[0];
                }
-               $status .="<td align='center'>$memory KB</td>";
+               $status .="<td align='center' $col>$memory KB</td>";
        }else{
-               $status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td><td colspan='2'></td>";
+               $status = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td><td colspan='2' $col></td>";
        }
        return $status;
 }
diff --git a/html/cgi-bin/shutdown.cgi b/html/cgi-bin/shutdown.cgi
new file mode 100644 (file)
index 0000000..998f9f8
--- /dev/null
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+#
+# SmoothWall CGIs
+#
+# This code is distributed under the terms of the GPL
+#
+# (c) The SmoothWall Team
+#
+
+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 %cgiparams=();
+my $death = 0;
+my $rebirth = 0;
+
+&Header::showhttpheaders();
+
+$cgiparams{'ACTION'} = '';
+&Header::getcgihash(\%cgiparams);
+
+if ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown'}) {
+       $death = 1;
+       &General::log($Lang::tr{'shutting down ipfire'});
+       system '/usr/local/bin/ipfirereboot down';
+} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reboot'}) {
+       $rebirth = 1;
+       &General::log($Lang::tr{'rebooting ipfire'});
+       system '/usr/local/bin/ipfirereboot boot';
+}
+if ($death == 0 && $rebirth == 0) {
+
+       &Header::openpage($Lang::tr{'shutdown control'}, 1, '');
+
+       &Header::openbigbox('100%', 'left');
+
+       print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";
+
+       &Header::openbox('100%', 'left', );
+       print <<END
+<table width='100%'>
+<tr>
+       <td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'reboot'}' /></td>
+       <td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'shutdown'}' /></td>
+</tr>
+</table>
+END
+       ;
+       &Header::closebox();
+
+} else {
+       my $message='';
+       my $title='';
+       my $refresh = "<meta http-equiv='refresh' content='5; URL=/cgi-bin/index.cgi' />";
+       if ($death) {
+               $title = $Lang::tr{'shutting down'};
+               $message = $Lang::tr{'ipfire has now shutdown'};
+       } else {
+               $title = $Lang::tr{'rebooting'};
+               $message = $Lang::tr{'ipfire has now rebooted'};
+       }
+       &Header::openpage($title, 0, $refresh);
+
+       &Header::openbigbox('100%', 'center');
+       print <<END
+<div align='center'>
+<table width='100%' bgcolor='#ffffff'>
+<tr><td align='center'>
+<br /><br /><img src='/images/IPFire.png' /><br /><br /><br />
+</td></tr>
+</table>
+<br />
+<font size='6'>$message</font>
+</div>
+END
+       ;
+}
+
+&Header::closebigbox();
+&Header::closepage();
+
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 caa17181ba90f188c38caf68a2afd344a6562f24..39d71f84257b9c353d9ee884c13d959f5c2ae148 100644 (file)
@@ -233,13 +233,9 @@ if ($errormessage) {
 
 print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";
 
-&Header::openbox('100%', 'left', $Lang::tr{'network time'});
+&Header::openbox('100%', 'left', $Lang::tr{'ntp common settings'});
 print <<END
 <table width='100%'>
-<tr>
-       <td colspan='2'><strong>$Lang::tr{'ntp common settings'}</strong></td>
-</tr>
-
 <tr>
        <td><input type='checkbox' name='ENABLENTP' $checked{'ENABLENTP'}{'on'} /></td>
        <td width='100%' colspan='4' class='base'>$Lang::tr{'network time from'}</td>
@@ -281,10 +277,12 @@ print <<END
        <td class='base' colspan='4'><input type='checkbox' name='ENABLESETONBOOT' $checked{'ENABLESETONBOOT'}{'on'} /> $Lang::tr{'Set time on boot'}</td>
 </tr>
 </table>
+END
+;
+&Header::closebox();
+&Header::openbox('100%',1,$Lang::tr{'ntp sync'});
+print <<END
 <table width='100%'>
-<tr>
-       <td colspan='4'><hr /><strong>$Lang::tr{'ntp sync'}</strong></td>
-</tr>
 <tr>
        <td class='base'><input type='radio' name='UPDATE_METHOD' value='periodically' $checked{'UPDATE_METHOD'}{'periodically'} /></td>
        <td width='10%'>$Lang::tr{'every'}</td>
@@ -302,7 +300,7 @@ print <<END
        <td colspan='2'>$Lang::tr{'manually'}</td>
 </tr>
 <tr>
-       <td colspan='4'><hr /><strong>$Lang::tr{'update time'}</strong></td>
+       <td colspan='4'><br><br><strong>$Lang::tr{'update time'}</strong></td>
 </tr>
 <tr>
        <td>&nbsp;</td>
@@ -322,9 +320,8 @@ print <<END
 <table width='100%'>
 <tr>
        <td width='30%'><img src='/blob.gif' alt='*' /> $Lang::tr{'this field may be blank'}</td>
-       <td width='40%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'set time now'}' /></td>
-       <td width='25%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
-       <td width='5%' align='right'>&nbsp;</td>
+       <td width='65%' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'set time now'}' /></td>
+       <td width='5%' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
 </tr>
 </table>
 END
diff --git a/html/cgi-bin/tor.cgi b/html/cgi-bin/tor.cgi
new file mode 100644 (file)
index 0000000..228b5d4
--- /dev/null
@@ -0,0 +1,987 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# 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        #
+# 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 Locale::Country;
+
+# 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 @bandwidth_limits = (
+       1000 * 1024, # 1G
+        500 * 1024,
+        200 * 1024,
+        100 * 1024, # 100M
+         64 * 1024,
+         50 * 1024,
+         25 * 1024,
+         20 * 1024,
+         16 * 1024,
+         10 * 1024,
+          8 * 1024,
+          4 * 1024,
+          2 * 1024,
+              1024, # 1M
+               512,
+               256,
+               160
+);
+my @accounting_periods = ('daily', 'weekly', 'monthly');
+
+my $TOR_CONTROL_PORT = 9051;
+
+my $string=();
+my $memory=();
+my @memory=();
+my @pid=();
+my @tor=();
+sub daemonstats
+{
+       $memory = 0;
+       # for pid and memory
+       open(FILE, '/usr/local/bin/addonctrl tor status | ');
+       @tor = <FILE>;
+       close(FILE);
+       $string = join("", @tor);
+       $string =~ s/[a-z_]//gi;
+       $string =~ s/\[[0-1]\;[0-9]+//gi;
+       $string =~ s/[\(\)\.]//gi;
+       $string =~ s/  //gi;
+       $string =~ s/\e//gi;
+       @pid = split(/\s/,$string);
+       if (open(FILE, "/proc/$pid[0]/statm")){
+               my $temp = <FILE>;
+               @memory = split(/ /,$temp);
+               close(FILE);
+               }
+       $memory+=$memory[0];
+}
+daemonstats();
+
+our %netsettings = ();
+&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
+
+our %color = ();
+our %mainsettings = ();
+&General::readhash("${General::swroot}/main/settings", \%mainsettings);
+&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+
+our %settings = ();
+
+$settings{'TOR_ENABLED'} = 'off';
+$settings{'TOR_SOCKS_PORT'} = 9050;
+$settings{'TOR_EXIT_COUNTRY'} = '';
+$settings{'TOR_USE_EXIT_NODES'} = '';
+$settings{'TOR_ALLOWED_SUBNETS'} = "$netsettings{'GREEN_NETADDRESS'}\/$netsettings{'GREEN_NETMASK'}";
+if (&Header::blue_used()) {
+       $settings{'TOR_ALLOWED_SUBNETS'} .= ",$netsettings{'BLUE_NETADDRESS'}\/$netsettings{'BLUE_NETMASK'}";
+}
+
+$settings{'TOR_RELAY_ENABLED'} = 'off';
+$settings{'TOR_RELAY_MODE'} = 'exit';
+$settings{'TOR_RELAY_ADDRESS'} = '';
+$settings{'TOR_RELAY_PORT'} = 9001;
+$settings{'TOR_RELAY_DIRPORT'} = 0;
+$settings{'TOR_RELAY_NICKNAME'} = '';
+$settings{'TOR_RELAY_CONTACT_INFO'} = '';
+$settings{'TOR_RELAY_BANDWIDTH_RATE'} = 0;
+$settings{'TOR_RELAY_BANDWIDTH_BURST'} = 0;
+$settings{'TOR_RELAY_ACCOUNTING_LIMIT'} = 0;
+$settings{'TOR_RELAY_ACCOUNTING_PERIOD'} = 'daily';
+
+$settings{'ACTION'} = '';
+
+my $errormessage = '';
+my $warnmessage = '';
+
+&Header::showhttpheaders();
+
+# Get GUI values.
+&Header::getcgihash(\%settings);
+
+# Create tor command connection.
+our $torctrl = &TorConnect();
+
+# Toggle enable/disable field.
+if ($settings{'ACTION'} eq $Lang::tr{'save'}) {
+       if ($settings{'TOR_RELAY_NICKNAME'} ne '') {
+               if ($settings{'TOR_RELAY_NICKNAME'} !~ /^[a-zA-Z0-9]+$/) {
+                       $errormessage = "$Lang::tr{'tor errmsg invalid relay name'}: $settings{'TOR_RELAY_NICKNAME'}";
+               }
+       }
+
+       if (!&General::validport($settings{'TOR_SOCKS_PORT'})) {
+               $errormessage = "$Lang::tr{'tor errmsg invalid socks port'}: $settings{'TOR_SOCKS_PORT'}";
+       }
+
+       if (!&General::validport($settings{'TOR_RELAY_PORT'})) {
+               $errormessage = "$Lang::tr{'tor errmsg invalid relay port'}: $settings{'TOR_RELAY_PORT'}";
+       }
+       if ($settings{'TOR_RELAY_DIRPORT'} ne '0') {
+               if (!&General::validport($settings{'TOR_RELAY_DIRPORT'})) {
+                       $errormessage = "$Lang::tr{'tor errmsg invalid directory port'}: $settings{'TOR_RELAY_DIRPORT'}";
+               }
+       }
+
+       if ($settings{'TOR_RELAY_ADDRESS'} ne '') {
+               if ((!&General::validfqdn($settings{'TOR_RELAY_ADDRESS'})) && (!&General::validip($settings{'TOR_RELAY_ADDRESS'}))) {
+                       $errormessage = "$Lang::tr{'tor errmsg invalid relay address'}: $settings{'TOR_RELAY_ADDRESS'}";
+               }
+       }
+
+       if ($settings{'TOR_RELAY_ACCOUNTING_LIMIT'} !~ /^\d+$/) {
+               $errormessage = "$Lang::tr{'tor errmsg invalid accounting limit'}: $settings{'TOR_RELAY_ACCOUNTING_LIMIT'}";
+       }
+
+       my @temp = split(/[\n,]/,$settings{'TOR_ALLOWED_SUBNETS'});
+       $settings{'TOR_ALLOWED_SUBNETS'} = "";
+       foreach (@temp) {
+               s/^\s+//g; s/\s+$//g;
+               if ($_) {
+                       unless (&General::validipandmask($_)) {
+                               $errormessage = "$Lang::tr{'tor errmsg invalid ip or mask'}: $_";
+                       }
+                       $settings{'TOR_ALLOWED_SUBNETS'} .= $_.",";
+               }
+       }
+
+       @temp = split(/[\n,]/,$settings{'TOR_USE_EXIT_NODES'});
+       $settings{'TOR_USE_EXIT_NODES'} = "";
+       foreach (@temp) {
+               s/^\s+//g; s/\s+$//g;
+               if ($_) {
+                       $settings{'TOR_USE_EXIT_NODES'} .= $_.",";
+               }
+       }
+
+       # Burst bandwidth must be less or equal to bandwidth rate.
+       if ($settings{'TOR_RELAY_BANDWIDTH_RATE'} == 0) {
+               $settings{'TOR_RELAY_BANDWIDTH_BURST'} = 0;
+
+       } elsif ($settings{'TOR_RELAY_BANDWIDTH_BURST'} < $settings{'TOR_RELAY_BANDWIDTH_RATE'}) {
+               $settings{'TOR_RELAY_BANDWIDTH_BURST'} = $settings{'TOR_RELAY_BANDWIDTH_RATE'};
+       }
+
+       if ($errormessage eq '') {
+               # Write configuration settings to file.
+               &General::writehash("${General::swroot}/tor/settings", \%settings);
+
+               # Update configuration files.
+               &BuildConfiguration();
+       }
+} else {
+       # Load settings from file.
+       &General::readhash("${General::swroot}/tor/settings", \%settings);
+}
+
+&showMainBox();
+
+# Close Tor control connection.
+&TorClose($torctrl);
+
+# Functions
+
+sub showMainBox() {
+       my %checked = ();
+       my %selected = ();
+
+       $checked{'TOR_ENABLED'}{'on'} = '';
+       $checked{'TOR_ENABLED'}{'off'} = '';
+       $checked{'TOR_ENABLED'}{$settings{'TOR_ENABLED'}} = 'checked';
+
+       $checked{'TOR_RELAY_ENABLED'}{'on'} = '';
+       $checked{'TOR_RELAY_ENABLED'}{'off'} = '';
+       $checked{'TOR_RELAY_ENABLED'}{$settings{'TOR_RELAY_ENABLED'}} = 'checked';
+
+       &Header::openpage($Lang::tr{'tor configuration'}, 1, '');
+       &Header::openbigbox('100%', 'left', '', $errormessage);
+
+       if ($errormessage) {
+               &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
+               print "<font class='base'>$errormessage&nbsp;</font>\n";
+               &Header::closebox();
+       }
+
+       print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n";
+
+       &Header::openbox('100%', 'center', $Lang::tr{'tor'});
+
+
+if ( ($memory != 0) && (@pid[0] ne "///") ){
+               print "<table width='95%' cellspacing='0' class='tbl'>";
+               print "<tr><th bgcolor='$color{'color20'}' colspan='3' align='left'><strong>$Lang::tr{'tor service'}</strong></th></tr>";
+               print "<tr><td class='base'>$Lang::tr{'tor daemon'}</td>";
+               print "<td align='center' colspan='2' width='75%' bgcolor='${Header::colourgreen}'><font color='white'><strong>$Lang::tr{'running'}</strong></font></td></tr>";
+               print "<tr><td class='base'></td>";
+               print "<td bgcolor='$color{'color20'}' align='center'><strong>PID</strong></td>";
+               print "<td bgcolor='$color{'color20'}' align='center'><strong>$Lang::tr{'memory'}</strong></td></tr>";
+               print "<tr><td class='base'></td>";
+               print "<td bgcolor='$color{'color22'}' align='center'>@pid[0]</td>";
+               print "<td bgcolor='$color{'color22'}' align='center'>$memory KB</td></tr>";
+               print "</table>";
+       } else {
+               print "<table width='95%' cellspacing='0' class='tbl'>";
+               print "<tr><th bgcolor='$color{'color20'}' colspan='3' align='left'><strong>$Lang::tr{'tor service'}</strong></th></tr>";
+               print "<tr><td class='base'>$Lang::tr{'tor daemon'}</td>";
+               print "<td align='center' width='75%' bgcolor='${Header::colourred}'><font color='white'><strong>$Lang::tr{'stopped'}</strong></font></td></tr>";
+               print "</table>";
+       }
+
+       &Header::closebox();
+
+       &Header::openbox('100%', 'center', $Lang::tr{'tor configuration'});
+
+       print <<END;
+               <table width='95%'>
+                       <tr>
+                               <td colspan='4' class='base' bgcolor='$color{'color20'}'><b>$Lang::tr{'tor common settings'}</b></td>
+                       </tr>
+                       <tr>
+                               <td width='25%' class='base'>$Lang::tr{'tor enabled'}:</td>
+                               <td width='30%'><input type='checkbox' name='TOR_ENABLED' $checked{'TOR_ENABLED'}{'on'} /></td>
+                               <td width='25%' class='base'>$Lang::tr{'tor socks port'}:</td>
+                               <td width='20%'><input type='text' name='TOR_SOCKS_PORT' value='$settings{'TOR_SOCKS_PORT'}' size='5' /></td>
+                       </tr>
+                       <tr>
+                               <td width='25%' class='base'>$Lang::tr{'tor relay enabled'}:</td>
+                               <td width='30%'><input type='checkbox' name='TOR_RELAY_ENABLED' $checked{'TOR_RELAY_ENABLED'}{'on'} /></td>
+                               <td width='25%' class='base'></td>
+                               <td width='20%'></td>
+                       </tr>
+               </table>
+END
+
+       my @temp = split(",", $settings{'TOR_ALLOWED_SUBNETS'});
+       $settings{'TOR_ALLOWED_SUBNETS'} = join("\n", @temp);
+
+       @temp = split(",", $settings{'TOR_USE_EXIT_NODES'});
+       $settings{'TOR_USE_EXIT_NODES'} = join("\n", @temp);
+
+       print <<END;
+               <br>
+               <br>
+
+               <table width='95%'>
+                       <tr>
+                               <td colspan='4' class='base' bgcolor='$color{'color20'}'><b>$Lang::tr{'tor acls'}</b></td>
+                       </tr>
+                       <tr>
+                               <td colspan='2' class='base' width='55%'>
+                                       $Lang::tr{'tor allowed subnets'}:
+                               </td>
+                               <td colspan='2' width='45%'></td>
+                       </tr>
+                       <tr>
+                               <td colspan='2' class='base' width='55%'>
+                                       <textarea name='TOR_ALLOWED_SUBNETS' cols='32' rows='3' wrap='off'>$settings{'TOR_ALLOWED_SUBNETS'}</textarea>
+                               </td>
+                               <td colspan='2' width='45%'></td>
+                       </tr>
+               </table>
+
+               <br>
+               <br>
+
+               <table width='95%'>
+                       <tr>
+                               <td colspan='4' class='base' bgcolor='$color{'color20'}'><b>$Lang::tr{'tor exit nodes'}</b></td>
+                       </tr>
+                       <tr>
+                               <td colspan='2' class='base' width='55%'></td>
+                               <td colspan='2' class='base' width='45%'>$Lang::tr{'tor use exit nodes'}:</td>
+                       </tr>
+                       <tr>
+                               <td width='50%' colspan='2'>
+                                       <select name='TOR_EXIT_COUNTRY'>
+                                               <option value=''>- $Lang::tr{'tor exit country any'} -</option>
+END
+
+               my @country_names = Locale::Country::all_country_names();
+               foreach my $country_name (sort @country_names) {
+                       my $country_code = Locale::Country::country2code($country_name);
+                       $country_code = uc($country_code);
+                       print "<option value='$country_code'";
+
+                       if ($settings{'TOR_EXIT_COUNTRY'} eq $country_code) {
+                               print " selected";
+                       }
+
+                       print ">$country_name ($country_code)</option>\n";
+               }
+
+       print <<END;
+                                       </select>
+                               </td>
+                               <td width='50%' colspan='2'>
+                                       <textarea name='TOR_USE_EXIT_NODES' cols='32' rows='3' wrap='off'>$settings{'TOR_USE_EXIT_NODES'}</textarea>
+                               </td>
+                       </tr>
+               </table>
+END
+
+       &Header::closebox();
+
+       # Tor relay box
+       $selected{'TOR_RELAY_MODE'}{'bridge'} = '';
+       $selected{'TOR_RELAY_MODE'}{'exit'} = '';
+       $selected{'TOR_RELAY_MODE'}{'private-bridge'} = '';
+       $selected{'TOR_RELAY_MODE'}{'relay'} = '';
+       $selected{'TOR_RELAY_MODE'}{$settings{'TOR_RELAY_MODE'}} = 'selected';
+
+       $selected{'TOR_RELAY_BANDWIDTH_RATE'}{'0'} = '';
+       foreach (@bandwidth_limits) {
+               $selected{'TOR_RELAY_BANDWIDTH_RATE'}{$_} = '';
+       }
+       $selected{'TOR_RELAY_BANDWIDTH_RATE'}{$settings{'TOR_RELAY_BANDWIDTH_RATE'}} = 'selected';
+
+       $selected{'TOR_RELAY_BANDWIDTH_BURST'}{'0'} = '';
+       foreach (@bandwidth_limits) {
+               $selected{'TOR_RELAY_BANDWIDTH_BURST'}{$_} = '';
+       }
+       $selected{'TOR_RELAY_BANDWIDTH_BURST'}{$settings{'TOR_RELAY_BANDWIDTH_BURST'}} = 'selected';
+
+       foreach (@accounting_periods) {
+               $selected{'TOR_RELAY_ACCOUNTING_PERIOD'}{$_} = '';
+       }
+       $selected{'TOR_RELAY_ACCOUNTING_PERIOD'}{$settings{'TOR_RELAY_ACCOUNTING_PERIOD'}} = 'selected';
+
+       &Header::openbox('100%', 'center', $Lang::tr{'tor relay configuration'});
+
+       print <<END;
+               <table width='95%'>
+                       <tr>
+                               <td width='25%' class='base'>$Lang::tr{'tor relay mode'}:</td>
+                               <td width='30%'>
+                                       <select name='TOR_RELAY_MODE'>
+                                               <option value='exit' $selected{'TOR_RELAY_MODE'}{'exit'}>$Lang::tr{'tor relay mode exit'}</option>
+                                               <option value='relay' $selected{'TOR_RELAY_MODE'}{'relay'}>$Lang::tr{'tor relay mode relay'}</option>
+                                               <option value='bridge' $selected{'TOR_RELAY_MODE'}{'bridge'}>$Lang::tr{'tor relay mode bridge'}</option>
+                                               <option value='private-bridge' $selected{'TOR_RELAY_MODE'}{'private-bridge'}>$Lang::tr{'tor relay mode private bridge'}</option>
+                                       </select>
+                               </td>
+                               <td width='25%' class='base'>$Lang::tr{'tor relay nickname'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
+                               <td width='20%'>
+                                       <input type='text' name='TOR_RELAY_NICKNAME' value='$settings{'TOR_RELAY_NICKNAME'}' maxlength='19' />
+                               </td>
+                       </tr>
+                       <tr>
+                               <td width='25%' class='base'>$Lang::tr{'tor relay address'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
+                               <td width='30%'>
+                                       <input type='text' name='TOR_RELAY_ADDRESS' value='$settings{'TOR_RELAY_ADDRESS'}' />
+                               </td>
+                               <td width='25%' class='base'>$Lang::tr{'tor relay port'}:</td>
+                               <td width='20%'>
+                                       <input type='text' name='TOR_RELAY_PORT' value='$settings{'TOR_RELAY_PORT'}' size='5' />
+                               </td>
+                       </tr>
+                       <tr>
+                               <td width='25%'>&nbsp;</td>
+                               <td width='30%'>&nbsp;</td>
+                               <td width='25%' class='base'>$Lang::tr{'tor directory port'}:</td>
+                               <td width='20%'>
+                                       <input type='text' name='TOR_RELAY_DIRPORT' value='$settings{'TOR_RELAY_DIRPORT'}' size='5' />&nbsp;$Lang::tr{'tor 0 = disabled'}
+                               </td>
+                       </tr>
+                       <tr>
+                               <td width='25%' class='base'>$Lang::tr{'tor contact info'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
+                               <td width='75%' colspan='3'>
+                                       <input type='text' name='TOR_RELAY_CONTACT_INFO' value='$settings{'TOR_RELAY_CONTACT_INFO'}' style='width: 98%;' />
+                               </td>
+                       </tr>
+               </table>
+
+               <br>
+
+               <table width='95%'>
+                       <tr>
+                               <td colspan='4' class='base' bgcolor='$color{'color20'}'><b>$Lang::tr{'tor bandwidth settings'}</b></td>
+                       </tr>
+                       <tr>
+                               <td width='25%' class='base'>$Lang::tr{'tor bandwidth rate'}:</td>
+                               <td width='30%' class='base'>
+                                       <select name='TOR_RELAY_BANDWIDTH_RATE'>
+END
+
+       foreach (@bandwidth_limits) {
+               if ($_ >= 1024) {
+                       print "<option value='$_' $selected{'TOR_RELAY_BANDWIDTH_RATE'}{$_}>". $_ / 1024 ." MBit/s</option>\n";
+               } else {
+                       print "<option value='$_' $selected{'TOR_RELAY_BANDWIDTH_RATE'}{$_}>$_ kBit/s</option>\n";
+               }
+       }
+
+       print <<END;
+                                               <option value='0' $selected{'TOR_RELAY_BANDWIDTH_RATE'}{'0'}>$Lang::tr{'tor bandwidth unlimited'}</option>
+                                       </select>
+                               </td>
+                               <td width='25%' class='base'>$Lang::tr{'tor accounting limit'}:</td>
+                               <td width='20%'>
+                                       <input type='text' name='TOR_RELAY_ACCOUNTING_LIMIT' value='$settings{'TOR_RELAY_ACCOUNTING_LIMIT'}' size='12' />
+                               </td>
+                       </tr>
+                       <tr>
+                               <td width='25%' class='base'>$Lang::tr{'tor bandwidth burst'}:</td>
+                               <td width='20%' class='base'>
+                                       <select name='TOR_RELAY_BANDWIDTH_BURST'>
+END
+
+       foreach (@bandwidth_limits) {
+               if ($_ >= 1024) {
+                       print "<option value='$_' $selected{'TOR_RELAY_BANDWIDTH_BURST'}{$_}>". $_ / 1024 ." MBit/s</option>\n";
+               } else {
+                       print "<option value='$_' $selected{'TOR_RELAY_BANDWIDTH_BURST'}{$_}>$_ kBit/s</option>\n";
+               }
+       }
+       print <<END;
+                                               <option value='0' $selected{'TOR_RELAY_BANDWIDTH_BURST'}{'0'}>$Lang::tr{'tor bandwidth unlimited'}</option>
+                                       </select>
+                               </td>
+                               <td width='25%' class='base'>$Lang::tr{'tor accounting period'}:</td>
+                               <td width='20%'>
+                                       <select name='TOR_RELAY_ACCOUNTING_PERIOD'>
+END
+
+       foreach (@accounting_periods) {
+               print "<option value='$_' $selected{'TOR_RELAY_ACCOUNTING_PERIOD'}{$_}>$Lang::tr{'tor accounting period '.$_}</option>";
+       }
+
+       print <<END;
+                                       </select>
+                               </td>
+                       </tr>
+               </table>
+END
+
+       &Header::closebox();
+
+       print <<END;
+               <table width='95%'>
+                       <tr>
+                               <td>
+                                       <img src='/blob.gif' align='top' alt='*' />&nbsp;<font class='base'>$Lang::tr{'this field may be blank'}</font>
+                               </td>
+                               <td align='right'>&nbsp;</td>
+                       </tr>
+               </table>
+
+               <hr>
+
+               <table width='95%'>
+                       <tr>
+                               <td>&nbsp;</td>
+                               <td align='center'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
+                               <td>&nbsp;</td>
+                       </tr>
+               </table>
+END
+
+       # If we have a control connection, show the stats.
+       if ($torctrl) {
+               &Header::openbox('100%', 'center', $Lang::tr{'tor stats'});
+
+               my @traffic = &TorTrafficStats($torctrl);
+
+               if (@traffic) {
+                       print <<END;
+                               <table width='95%'>
+END
+
+               if ($settings{'TOR_RELAY_ENABLED'} eq 'on') {
+                       my $fingerprint = &TorRelayFingerprint($torctrl);
+                       if ($fingerprint) {
+                               print <<END;
+                                       <tr>
+                                               <td width='40%' class='base'>$Lang::tr{'tor relay fingerprint'}:</td>
+                                               <td width='60%'>
+                                                       <a href='https://atlas.torproject.org/#details/$fingerprint' target='_blank'>$fingerprint</a>
+                                               </td>
+                                       </tr>
+END
+                       }
+               }
+
+               my $address = TorGetInfo($torctrl, "address");
+               if ($address) {
+                       print <<END;
+                               <tr>
+                                       <td width='40%' class='base'>$Lang::tr{'tor relay external address'}:</td>
+                                       <td width='60%'>$address</td>
+                               </tr>
+END
+               }
+
+               print <<END;
+                                       <tr>
+                                               <td width='40%'>$Lang::tr{'tor traffic read written'}:</td>
+END
+                       print "<td width='60%'>" . &FormatBytes($traffic[0]) ."/". &FormatBytes($traffic[1]) . "</td>";
+                       print <<END;
+                                       </tr>
+                               </table>
+END
+               }
+
+               my $accounting = &TorAccountingStats($torctrl);
+               if ($accounting) {
+                       print <<END;
+                               <table width='95%'>
+                                       <tr>
+                                               <td colspan='2' class='base'><b>$Lang::tr{'tor accounting'}</b></td>
+                                       </tr>
+END
+
+                       if ($accounting->{'hibernating'} eq "hard") {
+                               print <<END;
+                                       <tr>
+                                               <td class='base' colspan='2' bgcolor="$Header::colourred" align='center'>
+                                                       <font color='white'>$Lang::tr{'tor traffic limit hard'}</font>
+                                               </td>
+                                       </tr>
+END
+                       } elsif ($accounting->{'hibernating'} eq "soft") {
+                               print <<END;
+                                       <tr>
+                                               <td class='base' colspan='2' bgcolor="$Header::colourorange" align='center'>
+                                                       <font color='white'>$Lang::tr{'tor traffic limit soft'}</font>
+                                               </td>
+                                       </tr>
+END
+                       }
+
+                       print <<END;
+                                       <tr>
+                                               <td width='40%' class='base'>$Lang::tr{'tor accounting interval'}</td>
+                                               <td width='60%'>
+                                                       $accounting->{'interval-start'} - $accounting->{'interval-end'}
+                                               </td>
+                                       </tr>
+                                       <tr>
+                                               <td width='40%' class='base'>$Lang::tr{'tor accounting bytes'}</td>
+                                               <td width='60%'>
+END
+
+                       print &FormatBytes($accounting->{'bytes_read'}) . "/" . &FormatBytes($accounting->{'bytes_written'});
+                       print " (" . &FormatBytes($accounting->{'bytes-left_read'}) . "/" . &FormatBytes($accounting->{'bytes-left_written'});
+                       print " $Lang::tr{'tor accounting bytes left'})";
+
+                       print <<END;
+                                               </td>
+                                       </tr>
+                               </table>
+END
+               }
+
+               my @nodes = &TorORConnStatus($torctrl);
+               if (@nodes) {
+                       my $nodes_length = scalar @nodes;
+                       print <<END;
+                               <table width='95%'>
+                                       <tr>
+                                               <td width='40%' class='base'><b>$Lang::tr{'tor connected relays'}</b></td>
+                                               <td width='60%' colspan='2'>($nodes_length)</td>
+                                       </tr>
+END
+
+                       foreach my $node (@nodes) {
+                               print <<END;
+                                       <tr>
+                                               <td width='40%'>
+                                                       <a href='https://atlas.torproject.org/#details/$node->{'fingerprint'}' target='_blank'>
+                                                               $node->{'name'}
+                                                       </a>
+                                               </td>
+                                               <td width='30%'>
+END
+
+                               if (exists($node->{'country_code'})) {
+                                       if (!$node->{'country_code'} or $node->{'country_code'} eq '??') {
+                                               print "<img src='/images/flags/blank.png' border='0' align='absmiddle'/>";
+                                       } else {
+                                               print "<a href='country.cgi#$node->{'country_code'}'><img src='/images/flags/$node->{'country_code'}.png' border='0' align='absmiddle' alt='$node->{'country_code'}'></a>";
+                                       }
+                               }
+
+                               print <<END;
+                                                       <a href='ipinfo.cgi?ip=$node->{'address'}'>$node->{'address'}</a>:$node->{'port'}
+                                               </td>
+                                               <td width='30%' align='right'>
+                                                       ~$node->{'bandwidth_string'}
+                                               </td>
+                                       </tr>
+END
+                       }
+                       print "</table>";
+               }
+
+               &Header::closebox();
+       }
+
+       print "</form>\n";
+
+       &Header::closebigbox();
+       &Header::closepage();
+}
+
+sub BuildConfiguration() {
+       my %settings = ();
+       &General::readhash("${General::swroot}/tor/settings", \%settings);
+
+       my $torrc = "${General::swroot}/tor/torrc";
+
+       open(FILE, ">$torrc");
+
+       # Global settings.
+       print FILE "ControlPort $TOR_CONTROL_PORT\n";
+
+       if ($settings{'TOR_ENABLED'} eq 'on') {
+               my $strict_nodes = 0;
+
+               print FILE "SocksPort 0.0.0.0:$settings{'TOR_SOCKS_PORT'}\n";
+
+               my @subnets = split(",", $settings{'TOR_ALLOWED_SUBNETS'});
+               foreach (@subnets) {
+                       print FILE "SocksPolicy accept $_\n" if (&General::validipandmask($_));
+               }
+               print FILE "SocksPolicy reject *\n" if (@subnets);
+
+               if ($settings{'TOR_EXIT_COUNTRY'} ne '') {
+                       $strict_nodes = 1;
+
+                       print FILE "ExitNodes {$settings{'TOR_EXIT_COUNTRY'}}\n";
+               }
+
+               if ($settings{'TOR_USE_EXIT_NODES'} ne '') {
+                       $strict_nodes = 1;
+
+                       my @nodes = split(",", $settings{'TOR_USE_EXIT_NODES'});
+                       foreach (@nodes) {
+                               print FILE "ExitNode $_\n";
+                       }
+               }
+
+               if ($strict_nodes > 0) {
+                       print FILE "StrictNodes 1\n";
+               }
+       }
+
+       if ($settings{'TOR_RELAY_ENABLED'} eq 'on') {
+               # Reject access to private networks.
+               print FILE "ExitPolicyRejectPrivate 1\n";
+
+               print FILE "ORPort $settings{'TOR_RELAY_PORT'}\n";
+
+               if ($settings{'TOR_RELAY_DIRPORT'} ne '0') {
+                       print FILE "DirPort $settings{'TOR_RELAY_DIRPORT'}\n";
+               }
+
+               if ($settings{'TOR_RELAY_ADDRESS'} ne '') {
+                       print FILE "Address $settings{'TOR_RELAY_ADDRESS'}\n";
+               }
+
+               if ($settings{'TOR_RELAY_NICKNAME'} ne '') {
+                       print FILE "Nickname $settings{'TOR_RELAY_NICKNAME'}\n";
+               }
+
+               if ($settings{'TOR_RELAY_CONTACT_INFO'} ne '') {
+                       print FILE "ContactInfo $settings{'TOR_RELAY_CONTACT_INFO'}\n";
+               }
+
+               # Limit to bridge mode.
+               my $is_bridge = 0;
+
+               if ($settings{'TOR_RELAY_MODE'} eq 'bridge') {
+                       $is_bridge++;
+
+               # Private bridge.
+               } elsif ($settings{'TOR_RELAY_MODE'} eq 'private-bridge') {
+                       $is_bridge++;
+
+                       print FILE "PublishServerDescriptor 0\n";
+
+               # Exit node.
+               } elsif ($settings{'TOR_RELAY_MODE'} eq 'exit') {
+                       print FILE "ExitPolicy accept *:*\n";
+
+               # Relay only.
+               } elsif ($settings{'TOR_RELAY_MODE'} eq 'relay') {
+                       print FILE "ExitPolicy reject *:*\n";
+               }
+
+               if ($is_bridge > 0) {
+                       print FILE "BridgeRelay 1\n";
+                       print FILE "Exitpolicy reject *:*\n";
+               }
+
+               if ($settings{'TOR_RELAY_BANDWIDTH_RATE'} > 0) {
+                       print FILE "RelayBandwidthRate ";
+                       print FILE $settings{'TOR_RELAY_BANDWIDTH_RATE'} / 8;
+                       print FILE " KB\n";
+
+                       if ($settings{'TOR_RELAY_BANDWIDTH_BURST'} > 0) {
+                               print FILE "RelayBandwidthBurst ";
+                               print FILE $settings{'TOR_RELAY_BANDWIDTH_BURST'} / 8;
+                               print FILE " KB\n";
+                       }
+               }
+
+               if ($settings{'TOR_RELAY_ACCOUNTING_LIMIT'} > 0) {
+                       print FILE "AccountingMax ".$settings{'TOR_RELAY_ACCOUNTING_LIMIT'}." MB\n";
+
+                       if ($settings{'TOR_RELAY_ACCOUNTING_PERIOD'} eq 'daily') {
+                               print FILE "AccountingStart day 00:00\n";
+                       } elsif ($settings{'TOR_RELAY_ACCOUNTING_PERIOD'} eq 'weekly') {
+                               print FILE "AccountingStart week 1 00:00\n";
+                       } elsif ($settings{'TOR_RELAY_ACCOUNTING_PERIOD'} eq 'monthly') {
+                               print FILE "AccountingStart month 1 00:00\n";
+                       }
+               }
+       }
+
+       close(FILE);
+
+       # Restart the service.
+       if (($settings{'TOR_ENABLED'} eq 'on') || ($settings{'TOR_RELAY_ENABLED'} eq 'on')) {
+               system("/usr/local/bin/torctrl restart &>/dev/null");
+       } else {
+               system("/usr/local/bin/torctrl stop &>/dev/null");
+       }
+       # Update pid and memory
+       daemonstats();
+}
+
+sub TorConnect() {
+       my $socket = new IO::Socket::INET(
+               Proto => 'tcp', PeerAddr => '127.0.0.1', PeerPort => $TOR_CONTROL_PORT,
+       ) or return;
+
+       $socket->autoflush(1);
+
+       # Authenticate.
+       &TorSendCommand($socket, "AUTHENTICATE");
+
+       return $socket;
+}
+
+sub TorSendCommand() {
+       my ($socket, $cmd) = @_;
+
+       # Replace line ending with \r\n.
+       chomp $cmd;
+       $cmd .= "\r\n";
+
+       $socket->send($cmd);
+
+       my @output = ();
+       while (my $line = <$socket>) {
+               # Skip empty lines.
+               if ($line =~ /^.\r\n$/) {
+                       next;
+               }
+
+               # Command has been successfully executed.
+               if ($line =~ /250 OK/) {
+                       last;
+
+               # Error.
+               } elsif ($line =~ /^5\d+/) {
+                       last;
+
+               } else {
+                       # Remove line endings.
+                       $line =~ s/\r\n$//;
+
+                       push(@output, $line);
+               }
+       }
+
+       return @output;
+}
+
+sub TorSendCommandOneLine() {
+       my ($tor, $cmd) = @_;
+
+       my @output = &TorSendCommand($tor, $cmd);
+       return $output[0];
+}
+
+sub TorGetInfo() {
+       my ($tor, $cmd) = @_;
+
+       my $output = &TorSendCommandOneLine($tor, "GETINFO ".$cmd);
+
+       my ($key, $value) = split("=", $output);
+       return $value;
+}
+
+sub TorClose() {
+       my $socket = shift;
+
+       if ($socket) {
+               $socket->shutdown(2);
+       }
+}
+
+sub TorTrafficStats() {
+       my $tor = shift;
+
+       my $output_read    = &TorGetInfo($tor, "traffic/read");
+       my $output_written = &TorGetInfo($tor, "traffic/written");
+
+       return ($output_read, $output_written);
+}
+
+sub TorRelayFingerprint() {
+       my $tor = shift;
+
+       return &TorGetInfo($tor, "fingerprint");
+}
+
+sub TorORConnStatus() {
+       my $tor = shift;
+       my @nodes = ();
+
+       my @output = &TorSendCommand($tor, "GETINFO orconn-status");
+       foreach (@output) {
+               $_ =~ s/^250[\+-]orconn-status=//;
+               next if ($_ eq "");
+               last if ($_ eq ".");
+               next unless ($_ =~ /^\$/);
+
+               my @line = split(" ", $_);
+               my @node = split(/[=~]/, $line[0]);
+
+               my $node = &TorNodeDescription($tor, $node[0]);
+               if ($node) {
+                       push(@nodes, $node);
+               }
+       }
+
+       # Sort by names.
+       @nodes = sort { $a->{'name'} cmp $b->{'name'} } @nodes;
+
+       return @nodes;
+}
+
+sub TorNodeDescription() {
+       my ($tor, $fingerprint) = @_;
+       $fingerprint =~ s/\$//;
+
+       my $node = {
+               fingerprint  => $fingerprint,
+               exit_node    => 0,
+       };
+
+       my @output = &TorSendCommand($tor, "GETINFO ns/id/$node->{'fingerprint'}");
+
+       foreach (@output) {
+               # Router
+               if ($_ =~ /^r (\w+) (.*) (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) (\d+)/) {
+                       $node->{'name'}    = $1;
+                       $node->{'address'} = $3;
+                       $node->{'port'}    = $4;
+
+                       my $country_code = &TorGetInfo($tor, "ip-to-country/$node->{'address'}");
+                       $node->{'country_code'} = $country_code;
+
+               # Flags
+               } elsif ($_ =~ /^s (.*)$/) {
+                       $node->{'flags'} = split(" ", $1);
+
+                       foreach my $flag ($node->{'flags'}) {
+                               if ($flag eq "Exit") {
+                                       $node->{'exit_node'}++;
+                               }
+                       }
+
+               # Bandwidth
+               } elsif ($_ =~ /^w Bandwidth=(\d+)/) {
+                       $node->{'bandwidth'} = $1 * 8;
+                       $node->{'bandwidth_string'} = &FormatBitsPerSecond($node->{'bandwidth'});
+               }
+       }
+
+       if (exists($node->{'name'})) {
+               return $node;
+       }
+}
+
+sub TorAccountingStats() {
+       my $tor = shift;
+       my $ret = {};
+
+       my $enabled = &TorGetInfo($tor, "accounting/enabled");
+       if ($enabled ne '1') {
+               return;
+       }
+
+       my @cmds = ("hibernating", "interval-start", "interval-end");
+       foreach (@cmds) {
+               $ret->{$_} = &TorGetInfo($tor, "accounting/$_");
+       }
+
+       my @cmds = ("bytes", "bytes-left");
+       foreach (@cmds) {
+               my $output = &TorGetInfo($tor, "accounting/$_");
+               my @bytes = split(" ", $output);
+
+               $ret->{$_."_read"}    = $bytes[0];
+               $ret->{$_."_written"} = $bytes[1];
+       }
+
+       return $ret;
+}
+
+sub FormatBytes() {
+       my $bytes = shift;
+
+       my @units = ("B", "KB", "MB", "GB", "TB");
+       my $units_index = 0;
+
+       while (($units_index <= $#units) && ($bytes >= 1024)) {
+               $units_index++;
+               $bytes /= 1024;
+       }
+
+       return sprintf("%.2f %s", $bytes, $units[$units_index]);
+}
+
+sub FormatBitsPerSecond() {
+       my $bits = shift;
+
+       my @units = ("Bit/s", "KBit/s", "MBit/s", "GBit/s", "TBit/s");
+       my $units_index = 0;
+
+       while (($units_index <= $#units) && ($bits >= 1024)) {
+               $units_index++;
+               $bits /= 1024;
+       }
+
+       return sprintf("%.2f %s", $bits, $units[$units_index]);
+}
index 70e5726c907b6498b85c92bd63f04cea1d341966..58a51d0751d46d7c56a45fbd917314f1ea7eb853 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-2014  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        #
@@ -88,10 +88,7 @@ sub display_vnstat
        if ( $testdata =~ 'enough') {
                print"No data for $device !<br>";
        } else {
-           # Falls back to textoutput if there was no % value because vnstati hang in this case
-           if (!($testdata =~ 'nan%')) {
-                   system("/usr/bin/vnstati -c 5 -s -i $device -o /srv/web/ipfire/html/graphs/vnstat-s-$device.png");
-           }
+           system("/usr/bin/vnstati -c 5 -s -i $device -o /srv/web/ipfire/html/graphs/vnstat-s-$device.png");
            # Hour graph
            system("/usr/bin/vnstati -c 5 -h -i $device -o /srv/web/ipfire/html/graphs/vnstat-h-$device.png");
            # Day graph
@@ -102,15 +99,9 @@ sub display_vnstat
            system("/usr/bin/vnstati -c 5 -t -i $device -o /srv/web/ipfire/html/graphs/vnstat-t-$device.png");
 
 # Generate HTML-Table with the graphs
-           print "<table>";
-           if ($testdata =~ 'nan%') {
-               print "<tr><td><b><pre>";
-               system("/usr/bin/vnstat -i $device");
-               print "</pre></b></td></tr>";
-           } else {
-               print"<tr><td><img src=\"/graphs/vnstat-s-$device.png\"></td></tr>";
-           }
 print <<END
+<table>
+<tr><td><img src="/graphs/vnstat-s-$device.png"></td></tr>
 <tr><td><img src="/graphs/vnstat-h-$device.png"></td></tr>
 <tr><td><img src="/graphs/vnstat-d-$device.png"></td></tr>
 <tr><td><img src="/graphs/vnstat-m-$device.png"></td></tr>
index 696a52e1ee1f343f467f16ab007933a2c5d0780e..fb48a270f76bc323e6c45502cac96c21d61b5bde 100644 (file)
@@ -167,7 +167,7 @@ if ($tripwiresettings{'ACTION'} eq 'generatepolicypw')
        <tr><td align='left' width='40%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>$Lang::tr{'sitekey'}</td><td align='left'><input type='password' name='SITEKEY' value='$tripwiresettings{'SITEKEY'}' size="30" /></td></tr>
        <tr><td align='left' width='40%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>$Lang::tr{'localkey'}</td><td align='left'><input type='password' name='LOCALKEY' value='$tripwiresettings{'LOCALKEY'}' size="30" /><br /><br /></td></tr>
        <tr><td align='right' width='50%'>
-                                        $Lang::tr{'ok'} <input type='image' alt='$Lang::tr{'ok'}' tilte='$Lang::tr{'ok'}' src='/images/edit-redo.png' />
+                                        $Lang::tr{'ok'} <input type='image' alt='$Lang::tr{'ok'}' title='$Lang::tr{'ok'}' src='/images/edit-redo.png' />
                                        <input type='hidden' name='ACTION' value='generatepolicyyes' /></form></td>
                        <td align='left'  width='50%'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
                                        <input type='image' alt='$Lang::tr{'cancel'}' title='$Lang::tr{'cancel'}' src='/images/dialog-error.png' /> $Lang::tr{'cancel'} 
@@ -487,7 +487,7 @@ print <<END
 <tr><td><br /></td></tr>
 <tr><td><pre>$Log</pre></td></tr>
 <tr><td><br /></td></tr>
-<tr><td align=center>$tripwiresettings{'LOG'}</td></tr>
+<tr><td align='center'>$tripwiresettings{'LOG'}</td></tr>
 </table>
 END
 ;
@@ -506,17 +506,17 @@ END
 #<tr><td colspan='3'  align='left'><br /></td></tr>
 #END
 #;
-#foreach my $cronjob (@cronjobs) {chomp $cronjob;my $time=$cronjob; $time=~s/\/etc\/fcron.daily\/tripwire//g;print"<form method='post' action='$ENV{'SCRIPT_NAME'}'><tr><td  align='left' colspan='2'>$cronjob at $time daily</td><td><input type='hidden' name='ACTION' value='deletecron' /><input type='hidden' name='CRON' value='$time' /><input type='image' alt='delete cron' src='/images/user-trash.png' /></td></tr></form>";}
+#foreach my $cronjob (@cronjobs) {chomp $cronjob;my $time=$cronjob; $time=~s/\/etc\/fcron.daily\/tripwire//g;print"<form method='post' action='$ENV{'SCRIPT_NAME'}'><tr><td  align='left' colspan='2'>$cronjob at $time daily</td><td><input type='hidden' name='ACTION' value='deletecron' /><input type='hidden' name='CRON' value='$time' /><input type='image' alt='delete cron' title='delete cron' src='/images/user-trash.png' /></td></tr></form>";}
 #print <<END
 #</table>
 #<br />
 #<table width='10%' cellspacing='0'>
 #<tr><td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
 #                                                                                              <input type='hidden' name='ACTION' value='addcron'/>
-#                                                                                              <input type='image' alt='$Lang::tr{'add cron'}' src='/images/appointment-new.png' /></form></td>
+#                                                                                              <input type='image' alt='$Lang::tr{'add cron'}' title='$Lang::tr{'add cron'}' src='/images/appointment-new.png' /></form></td>
 #<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
 #                                                                              <input type='hidden' name='ACTION' value='croncaption' />
-#                                                                              <input type='image' alt='$Lang::tr{'caption'}' src='/images/help-browser.png' /></form></td></tr>
+#                                                                              <input type='image' alt='$Lang::tr{'caption'}' title='$Lang::tr{'caption'}' src='/images/help-browser.png' /></form></td></tr>
 #</table>
 #END
 #;
index df77a86afdb2e690464d0b3d23b96821a7631bca..6cd9668db893ccee7162c3747eeeb07c83f3cb4f 100644 (file)
@@ -517,7 +517,7 @@ END
                $id = 0;
                foreach $updatefile (@downloadfiles)
                {
-                       $updatefile =~ s/.*://;
+                       $updatefile =~ s/.*:download/download/;
                        my $size_updatefile = 0;
                        my $mtime = 0;
                        if(-e "$repository/$updatefile") {
@@ -971,7 +971,8 @@ foreach (@sources)
                {
                        next if(/\.info$/);
                        $updatefile = substr($_,rindex($_,"/")+1);
-                       $updatefile .= ":download/$vendorid/$updatefile";
+                       $_ = $updatefile; tr/[A-Z]/[a-z]/;
+                       $updatefile = "$_:separator:download/$vendorid/$updatefile";
                        $updatefile = " ".$updatefile;
                        push(@repositoryfiles,$updatefile);
                }
@@ -1002,7 +1003,7 @@ foreach (@sources)
                        chomp($sourceurl);
                        $updatefile = substr($sourceurl,rindex($sourceurl,'/')+1,length($sourceurl));
                        $_ = $updatefile; tr/[A-Z]/[a-z]/;
-                       $updatefile = "$_:$vendorid/$uuid/$updatefile";
+                       $updatefile = "$_:separator:$vendorid/$uuid/$updatefile";
                        push(@repositoryfiles,$updatefile);
                }
        }
@@ -1145,7 +1146,7 @@ END
        $id = 0;
        foreach $updatefile (@files)
        {
-               $updatefile =~ s/.*://;
+               $updatefile =~ s/.*:separator://;
                my $size_updatefile = 0;
                my $mtime = 0;
                if(-e "$repository/$updatefile") {
index 8d2666ec75be4292aac4611dbf5efe8becf2438e..07dfa2677c970e49a9be6ae9ffe5f209fb26616c 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'}
@@ -133,7 +133,7 @@ print <<END
 <table width='95%' cellspacing='0'>
 END
 ;
-if ( $message ne "" ) {print "<tr><td colspan='3' align='center'><font color='red'>$message</font>";}
+if ( $message ne "" ) {print "<tr><td colspan='3' style='text-align:center; color:red;'>$message</td></tr>";}
 
 my $lines = 0;
 my $key = '';
@@ -164,7 +164,7 @@ print <<END
 <tr><td align='left'>Upstream in KB:</td><td><input type='text' name='UPSTREAM' value='$upnpsettings{'UPSTREAM'}' size="30" /></td></tr>
 <tr><td align='left' colspan='2'><br /></td></tr>
 <tr><td colspan='2' align='center'>    <input type='hidden' name='ACTION' value=$Lang::tr{'save'} />
-                                                                                                                                               <input type='image' alt=$Lang::tr{'save'} src='/images/floppy.gif' /></td></tr>
+<input type='image' alt='$Lang::tr{'save'}' title='$Lang::tr{'save'}' src='/images/floppy.gif' /></td></tr>
 </table></form>
 END
 ;
@@ -199,9 +199,9 @@ print "</table>";
 ############################################################################################################################
 
 sub isrunning
-       {
+{
        my $cmd = $_[0];
-       my $status = "<td bgcolor='${Header::colourred}' align='center'><font color='white'><b>$Lang::tr{'stopped'}</b></font></td>";
+       my $status = "<td bgcolor='${Header::colourred}' style='text-align:center; color:white;'><b>$Lang::tr{'stopped'}</b></td>";
        my $pid = '';
        my $testcmd = '';
        my $exename;
@@ -219,9 +219,10 @@ sub isrunning
                                {if (/^Name:\W+(.*)/) {$testcmd = $1; }}
                        close FILE;
                        if ($testcmd =~ /$exename/)
-                               {$status = "<td bgcolor='${Header::colourgreen}'><font color='white'><b>$Lang::tr{'running'}</b></font></td>";}
+                               {$status = "<td style='color:white; background-color:${Header::colourgreen};'><b>$Lang::tr{'running'}</b></td>";}
                        }
                }
 
                return $status;
-       }
+}
+
index 1bfc0392cd6c788cf5115f48d99538c9dded0170..9f7e6ff8240356aba1322650c6f8b6076234d7db 100644 (file)
@@ -59,6 +59,7 @@ my $tcfile = "${General::swroot}/urlfilter/timeconst";
 my $uqfile = "${General::swroot}/urlfilter/userquota";
 my $dbdir = "${General::swroot}/urlfilter/blacklists";
 my $editdir = "${General::swroot}/urlfilter/editor";
+my $templatedir = "/srv/web/ipfire/html/redirect-templates";
 my $repository = "/var/urlrepo";
 my $hintcolour = '#FFFFCC';
 
@@ -142,6 +143,7 @@ $filtersettings{'ENABLE_LOG'} = 'off';
 $filtersettings{'ENABLE_USERNAME_LOG'} = 'off';
 $filtersettings{'ENABLE_CATEGORY_LOG'} = 'off';
 $filtersettings{'ENABLE_AUTOUPDATE'} = 'off';
+$filtersettings{'REDIRECT_TEMPLATE'} = 'legacy';
 
 $filtersettings{'ACTION'} = '';
 $filtersettings{'VALID'} = '';
@@ -1074,6 +1076,8 @@ foreach $category (@filtergroups) {
        $checked{$category}{$filtersettings{$category}} = "checked='checked'";
 }
 
+$selected{'REDIRECT_TEMPLATE'}{$filtersettings{'REDIRECT_TEMPLATE'}} = "selected='selected'";
+
 $selected{'DEFINITION'}{$tcsettings{'DEFINITION'}} = "selected='selected'";
 $selected{'FROM_HOUR'}{$tcsettings{'FROM_HOUR'}} = "selected='selected'";
 $selected{'FROM_MINUTE'}{$tcsettings{'FROM_MINUTE'}} = "selected='selected'";
@@ -1166,7 +1170,7 @@ if (!($filtersettings{'ACTION'} eq $Lang::tr{'urlfilter manage repository'})) {
 
 print "<form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>\n";
 
-&Header::openbox('100%', 'left', "$Lang::tr{'urlfilter filter settings'}:");
+&Header::openbox('100%', 'left', "$Lang::tr{'urlfilter filter settings'}");
 print <<END
 <table width='100%'>
 <tr>
@@ -1415,6 +1419,24 @@ print <<END
 <tr>
         <td colspan='4'><b>$Lang::tr{'urlfilter block settings'}</b></td>
 </tr>
+<tr>
+       <td width='25%' class='base'>$Lang::tr{'urlfilter redirect template'}</td>
+       <td width='75%' colspan='2'>
+               <select name='REDIRECT_TEMPLATE'>
+END
+;
+
+       foreach (<$templatedir/*>) {
+               if ((-d "$_") && (-e "$_/template.html")) {
+                       my $template = substr($_,rindex($_,"/")+1);
+                       print "<option value='$template' $selected{'REDIRECT_TEMPLATE'}{$template}>$template</option>\n";
+               }
+       }
+
+print <<END
+               </select>
+       </td>
+</tr>
 <tr>
        <td width='25%' class='base'>$Lang::tr{'urlfilter show category'}:</td>
        <td width='12%'><input type='checkbox' name='SHOW_CATEGORY' $checked{'SHOW_CATEGORY'}{'on'} /></td>
@@ -1502,7 +1524,7 @@ print "</form>\n";
 
 print "<form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>\n";
 
-&Header::openbox('100%', 'left', "$Lang::tr{'urlfilter maintenance'}:");
+&Header::openbox('100%', 'left', "$Lang::tr{'urlfilter maintenance'}");
 
 print <<END
 <table width='100%'>
index 26f1793416e8840c9285674e23b7e4c6a356558e..f5ec50079a64dd9ff0f0577a3ed6e2e1cb437624 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,14 +61,16 @@ 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'}");
 }
 
+my $col="";
+
 $cgiparams{'ENABLED'} = 'off';
 $cgiparams{'EDIT_ADVANCED'} = 'off';
 $cgiparams{'ACTION'} = '';
@@ -104,7 +106,8 @@ $cgiparams{'ROOTCERT_OU'} = '';
 $cgiparams{'ROOTCERT_CITY'} = '';
 $cgiparams{'ROOTCERT_STATE'} = '';
 $cgiparams{'RW_NET'} = '';
-
+$cgiparams{'DPD_DELAY'} = '30';
+$cgiparams{'DPD_TIMEOUT'} = '120';
 &Header::getcgihash(\%cgiparams, {'wantfile' => 1, 'filevar' => 'FH'});
 
 ###
@@ -316,9 +319,16 @@ sub writeipsecfiles {
                foreach my $j (@ints) {
                    foreach my $k (@groups) {
                        if ($comma != 0) { print CONF ","; } else { $comma = 1; }
-                   print CONF "$i-$j-modp$k";
-               }
+
+                       my @l = split("", $k);
+                       if ($l[0] eq "e") {
+                           shift @l;
+                           print CONF "$i-$j-ecp".join("", @l);
+                       } else {
+                           print CONF "$i-$j-modp$k";
+                       }
                    }
+               }
            }
            if ($lconfighash{$key}[24] eq 'on') {       #only proposed algorythms?
                print CONF "!\n";
@@ -339,7 +349,12 @@ sub writeipsecfiles {
                                foreach my $k (@groups) {
                                    if ($comma != 0) { print CONF ","; } else { $comma = 1; }
                                    if ($pfs eq "on") {
-                                       $modp = "-modp$k";
+                                       my @l = split("", $k);
+                                       if ($l[0] eq "e") {
+                                               $modp = "";
+                                       } else {
+                                               $modp = "-modp$k";
+                                       }
                                    } else {
                                        $modp = "";
                                    }
@@ -372,9 +387,27 @@ sub writeipsecfiles {
        print CONF "\tcompress=yes\n" if ($lconfighash{$key}[13] eq 'on');
 
        # Dead Peer Detection
-       print CONF "\tdpddelay=30\n";
-       print CONF "\tdpdtimeout=120\n";
-       print CONF "\tdpdaction=$lconfighash{$key}[27]\n";
+       my $dpdaction = $lconfighash{$key}[27];
+       print CONF "\tdpdaction=$dpdaction\n";
+
+       # If the dead peer detection is disabled and IKEv2 is used,
+       # dpddelay must be set to zero, too.
+       if ($dpdaction eq "none") {
+               if ($lconfighash{$key}[29] eq "ikev2") {
+                       print CONF "\tdpddelay=0\n";
+               }
+       } else {
+               my $dpddelay = $lconfighash{$key}[30];
+               if (!$dpddelay) {
+                       $dpddelay = 30;
+               }
+               print CONF "\tdpddelay=$dpddelay\n";
+               my $dpdtimeout = $lconfighash{$key}[31];
+               if (!$dpdtimeout) {
+                       $dpdtimeout = 120;
+               }
+               print CONF "\tdpdtimeout=$dpdtimeout\n";
+       }
 
        # Build Authentication details:  LEFTid RIGHTid : PSK psk
        my $psk_line;
@@ -411,7 +444,7 @@ sub writeipsecfiles {
 
 # Hook to regenerate the configuration files.
 if ($ENV{"REMOTE_ADDR"} eq "") {
-       writeipsecfiles;
+       writeipsecfiles();
        exit(0);
 }
 
@@ -478,7 +511,7 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'TYPE'} eq '' && $cg
 ###
 } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'remove x509'}) {
     &Header::showhttpheaders();
-    &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+    &Header::openpage($Lang::tr{'ipsec'}, 1, '');
     &Header::openbigbox('100%', 'left', '', '');
     &Header::openbox('100%', 'left', $Lang::tr{'are you sure'});
     print <<END
@@ -574,7 +607,7 @@ END
 
     if ( -f "${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem") {
        &Header::showhttpheaders();
-       &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+       &Header::openpage($Lang::tr{'ipsec'}, 1, '');
        &Header::openbigbox('100%', 'left', '', '');
        &Header::openbox('100%', 'left', "$Lang::tr{'ca certificate'}:");
        my $output = `/usr/bin/openssl x509 -text -in ${General::swroot}/ca/$cahash{$cgiparams{'KEY'}}[0]cert.pem`;
@@ -650,7 +683,7 @@ END
        }
        if ($assignedcerts) {
            &Header::showhttpheaders();
-           &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+           &Header::openpage($Lang::tr{'ipsec'}, 1, '');
            &Header::openbigbox('100%', 'left', '', '');
            &Header::openbox('100%', 'left', $Lang::tr{'are you sure'});
            print <<END
@@ -695,7 +728,7 @@ END
        $cgiparams{'ACTION'} eq $Lang::tr{'show host certificate'}) {
     my $output;
     &Header::showhttpheaders();
-    &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+    &Header::openpage($Lang::tr{'ipsec'}, 1, '');
     &Header::openbigbox('100%', 'left', '', '');
     if ($cgiparams{'ACTION'} eq $Lang::tr{'show root certificate'}) {
        &Header::openbox('100%', 'left', "$Lang::tr{'root certificate'}:");
@@ -1021,7 +1054,7 @@ END
 
     ROOTCERT_ERROR:
     &Header::showhttpheaders();
-    &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+    &Header::openpage($Lang::tr{'ipsec'}, 1, '');
     &Header::openbigbox('100%', 'left', '', $errormessage);
     if ($errormessage) {
         &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
@@ -1066,7 +1099,7 @@ END
         <b><font color='${Header::colourred}'>$Lang::tr{'capswarning'}</font></b>: 
         $Lang::tr{'generating the root and host certificates may take a long time. it can take up to several minutes on older hardware. please be patient'}
     </td></tr>
-    <tr><td colspan='2'><hr /></td></tr>
+    <tr><td colspan='2'><hr></td></tr>
     <tr><td class='base' nowrap='nowrap'>$Lang::tr{'upload p12 file'}:</td>
         <td nowrap='nowrap'><input type='file' name='FH' size='32' /></td></tr>
     <tr><td class='base'>$Lang::tr{'pkcs12 file password'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
@@ -1108,7 +1141,7 @@ END
 
     if ( -f "${General::swroot}/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem") {
        &Header::showhttpheaders();
-       &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+       &Header::openpage($Lang::tr{'ipsec'}, 1, '');
        &Header::openbigbox('100%', 'left', '', '');
        &Header::openbox('100%', 'left', "$Lang::tr{'cert'}:");
        my $output = `/usr/bin/openssl x509 -text -in ${General::swroot}/certs/$confighash{$cgiparams{'KEY'}}[1]cert.pem`;
@@ -1192,13 +1225,13 @@ END
     } else {
        $errormessage = $Lang::tr{'invalid key'};
     }
-
+       &General::firewall_reload();
 ###
 ### Choose between adding a host-net or net-net connection
 ###
 } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'add'} && $cgiparams{'TYPE'} eq '') {
        &Header::showhttpheaders();
-       &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+       &Header::openpage($Lang::tr{'ipsec'}, 1, '');
        &Header::openbigbox('100%', 'left', '', '');
        &Header::openbox('100%', 'left', $Lang::tr{'connection type'});
        print <<END
@@ -1262,6 +1295,16 @@ END
        $cgiparams{'ONLY_PROPOSED'}     = $confighash{$cgiparams{'KEY'}}[24];
        $cgiparams{'PFS'}               = $confighash{$cgiparams{'KEY'}}[28];
        $cgiparams{'VHOST'}             = $confighash{$cgiparams{'KEY'}}[14];
+       $cgiparams{'DPD_TIMEOUT'}               = $confighash{$cgiparams{'KEY'}}[30];
+       $cgiparams{'DPD_DELAY'}         = $confighash{$cgiparams{'KEY'}}[31];
+
+       if (!$cgiparams{'DPD_DELAY'}) {
+               $cgiparams{'DPD_DELAY'} = 30;
+       }
+
+       if (!$cgiparams{'DPD_TIMEOUT'}) {
+               $cgiparams{'DPD_TIMEOUT'} = 120;
+       }
 
     } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'save'}) {
        $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'});
@@ -1364,14 +1407,13 @@ END
            goto VPNCONF_ERROR;
        }
 
-#temporary disabled (BUG 10294)
-#      if ($cgiparams{'TYPE'} eq 'net'){
-#              $errormessage=&General::checksubnets($cgiparams{'NAME'},$cgiparams{'REMOTE_SUBNET'});
-#              if ($errormessage ne ''){
-#                      goto VPNCONF_ERROR;
-#              }
-#              
-#      }
+       if ($cgiparams{'TYPE'} eq 'net'){
+               $warnmessage=&General::checksubnets('',$cgiparams{'REMOTE_SUBNET'},'ipsec');
+               if ($warnmessage ne ''){
+                       $warnmessage=$Lang::tr{'remote subnet'}." ($cgiparams{'REMOTE_SUBNET'}) <br>".$warnmessage;
+               }
+       }
+
        if ($cgiparams{'AUTH'} eq 'psk') {
            if (! length($cgiparams{'PSK'}) ) {
                $errormessage = $Lang::tr{'pre-shared key is too short'};
@@ -1736,7 +1778,7 @@ END
        my $key = $cgiparams{'KEY'};
        if (! $key) {
            $key = &General::findhasharraykey (\%confighash);
-           foreach my $i (0 .. 28) { $confighash{$key}[$i] = "";}
+           foreach my $i (0 .. 31) { $confighash{$key}[$i] = "";}
        }
        $confighash{$key}[0] = $cgiparams{'ENABLED'};
        $confighash{$key}[1] = $cgiparams{'NAME'};
@@ -1776,6 +1818,8 @@ END
        $confighash{$key}[24] = $cgiparams{'ONLY_PROPOSED'};
        $confighash{$key}[28] = $cgiparams{'PFS'};
        $confighash{$key}[14] = $cgiparams{'VHOST'};
+       $confighash{$key}[30] = $cgiparams{'DPD_TIMEOUT'};
+       $confighash{$key}[31] = $cgiparams{'DPD_DELAY'};
 
        #free unused fields!
        $confighash{$key}[6] = 'off';
@@ -1811,9 +1855,17 @@ END
 
        # choose appropriate dpd action 
        if ($cgiparams{'TYPE'} eq 'host') {
-           $cgiparams{'DPD_ACTION'} = 'clear';
+               $cgiparams{'DPD_ACTION'} = 'clear';
        } else {
-           $cgiparams{'DPD_ACTION'} = 'restart';
+               $cgiparams{'DPD_ACTION'} = 'restart';
+       }
+
+       if (!$cgiparams{'DPD_DELAY'}) {
+               $cgiparams{'DPD_DELAY'} = 30;
+       }
+
+       if (!$cgiparams{'DPD_TIMEOUT'}) {
+               $cgiparams{'DPD_TIMEOUT'} = 120;
        }
 
        # Default IKE Version to v2
@@ -1828,7 +1880,7 @@ END
        #use default advanced value
        $cgiparams{'IKE_ENCRYPTION'} = 'aes256|aes192|aes128|3des';     #[18];
        $cgiparams{'IKE_INTEGRITY'}  = 'sha2_256|sha|md5';      #[19];
-       $cgiparams{'IKE_GROUPTYPE'}  = '8192|6144|4096|3072|2048|1536|1024';            #[20];
+       $cgiparams{'IKE_GROUPTYPE'}  = '4096|3072|2048|1536|1024';              #[20];
        $cgiparams{'IKE_LIFETIME'}   = '3';             #[16];
        $cgiparams{'ESP_ENCRYPTION'} = 'aes256|aes192|aes128|3des';     #[21];
        $cgiparams{'ESP_INTEGRITY'}  = 'sha2_256|sha1|md5';     #[22];
@@ -1857,17 +1909,8 @@ END
     $checked{'AUTH'}{'auth-dn'} = '';
     $checked{'AUTH'}{$cgiparams{'AUTH'}} = "checked='checked'";
 
-    $selected{'DPD_ACTION'}{'clear'} = '';
-    $selected{'DPD_ACTION'}{'hold'} = '';
-    $selected{'DPD_ACTION'}{'restart'} = '';
-    $selected{'DPD_ACTION'}{$cgiparams{'DPD_ACTION'}} = "selected='selected'";
-
-    $selected{'IKE_VERSION'}{'ikev1'} = '';
-    $selected{'IKE_VERSION'}{'ikev2'} = '';
-    $selected{'IKE_VERSION'}{$cgiparams{'IKE_VERSION'}} = "selected='selected'";
-
     &Header::showhttpheaders();
-    &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+    &Header::openpage($Lang::tr{'ipsec'}, 1, '');
     &Header::openbigbox('100%', 'left', '', $errormessage);
     if ($errormessage) {
        &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
@@ -1886,6 +1929,7 @@ END
     print "<form method='post' enctype='multipart/form-data' action='$ENV{'SCRIPT_NAME'}'>";
     print<<END
        <input type='hidden' name='TYPE' value='$cgiparams{'TYPE'}' />
+       <input type='hidden' name='IKE_VERSION' value='$cgiparams{'IKE_VERSION'}' />
        <input type='hidden' name='IKE_ENCRYPTION' value='$cgiparams{'IKE_ENCRYPTION'}' />
        <input type='hidden' name='IKE_INTEGRITY' value='$cgiparams{'IKE_INTEGRITY'}' />
        <input type='hidden' name='IKE_GROUPTYPE' value='$cgiparams{'IKE_GROUPTYPE'}' />
@@ -1898,23 +1942,30 @@ END
        <input type='hidden' name='ONLY_PROPOSED' value='$cgiparams{'ONLY_PROPOSED'}' />
        <input type='hidden' name='PFS' value='$cgiparams{'PFS'}' />
        <input type='hidden' name='VHOST' value='$cgiparams{'VHOST'}' />
+       <input type='hidden' name='DPD_ACTION' value='$cgiparams{'DPD_ACTION'}' />
+       <input type='hidden' name='DPD_DELAY' value='$cgiparams{'DPD_DELAY'}' />
+       <input type='hidden' name='DPD_TIMEOUT' value='$cgiparams{'DPD_TIMEOUT'}' />
 END
     ;
     if ($cgiparams{'KEY'}) {
        print "<input type='hidden' name='KEY' value='$cgiparams{'KEY'}' />";
+       print "<input type='hidden' name='NAME' value='$cgiparams{'NAME'}' />";
        print "<input type='hidden' name='AUTH' value='$cgiparams{'AUTH'}' />";
     }
 
-    &Header::openbox('100%', 'left', "$Lang::tr{'connection'}:");
+    &Header::openbox('100%', 'left', "$Lang::tr{'connection'}: $cgiparams{'NAME'}");
     print "<table width='100%'>";
-    print "<tr><td width='25%' class='boldbase'>$Lang::tr{'name'}:</td>";
-    if ($cgiparams{'KEY'}) {
-       print "<td width='25%' class='base'><input type='hidden' name='NAME' value='$cgiparams{'NAME'}' /><b>$cgiparams{'NAME'}</b></td>";
-    } else {
-       print "<td width='25%'><input type='text' name='NAME' value='$cgiparams{'NAME'}' size='30' /></td>";
+    if (!$cgiparams{'KEY'}) {
+       print <<EOF;
+               <tr>
+                       <td width='20%'>$Lang::tr{'name'}:</td>
+                       <td width='30%'>
+                               <input type='text' name='NAME' value='$cgiparams{'NAME'}' size='25' />
+                       </td>
+                       <td colspan="2"></td>
+               </tr>
+EOF
     }
-    print "<td>$Lang::tr{'enabled'}</td><td><input type='checkbox' name='ENABLED' $checked{'ENABLED'}{'on'} /></td></tr>";
-    print '</tr><td><br /></td><tr>';
 
     my $disabled;
     my $blob;
@@ -1925,44 +1976,41 @@ END
 
     print <<END
        <tr>
-           <td class='boldbase'>$Lang::tr{'remote host/ip'}:&nbsp;$blob</td>
-           <td>
-               <input type='text' name='REMOTE' value='$cgiparams{'REMOTE'}' size='30' />
-           </td>
-           <td class='boldbase' nowrap='nowrap'>$Lang::tr{'remote subnet'}</td>
-           <td>
-               <input $disabled type='text' name='REMOTE_SUBNET' value='$cgiparams{'REMOTE_SUBNET'}' size='30' />
+               <td width='20%'>$Lang::tr{'enabled'}</td>
+               <td width='30%'>
+                       <input type='checkbox' name='ENABLED' $checked{'ENABLED'}{'on'} />
+               </td>
+           <td class='boldbase' nowrap='nowrap' width='20%'>$Lang::tr{'local subnet'}</td>
+           <td width='30%'>
+               <input type='text' name='LOCAL_SUBNET' value='$cgiparams{'LOCAL_SUBNET'}' size="25" />
            </td>
        </tr>
        <tr>
-           <td class='boldbase' nowrap='nowrap'>$Lang::tr{'local subnet'}</td>
-           <td colspan='3'>
-               <input type='text' name='LOCAL_SUBNET' value='$cgiparams{'LOCAL_SUBNET'}' size='30' />
+           <td class='boldbase' width='20%'>$Lang::tr{'remote host/ip'}:&nbsp;$blob</td>
+           <td width='30%'>
+               <input type='text' name='REMOTE' value='$cgiparams{'REMOTE'}' size="25" />
+           </td>
+           <td class='boldbase' nowrap='nowrap' width='20%'>$Lang::tr{'remote subnet'}</td>
+           <td width='30%'>
+               <input $disabled type='text' name='REMOTE_SUBNET' value='$cgiparams{'REMOTE_SUBNET'}' size="25" />
            </td>
        </tr>
        <tr>
-           <td class='boldbase'>$Lang::tr{'vpn local id'}:<br />($Lang::tr{'eg'} <tt>&#64;xy.example.com</tt>)</td>
-           <td><input type='text' name='LOCAL_ID' value='$cgiparams{'LOCAL_ID'}' /></td>
-           <td class='boldbase'>$Lang::tr{'vpn remote id'}:</td>
-           <td><input type='text' name='REMOTE_ID' value='$cgiparams{'REMOTE_ID'}' /></td>
-       </tr><tr>
-       </tr><td><br /></td><tr>
-           <td>$Lang::tr{'vpn keyexchange'}:</td>
-           <td><select name='IKE_VERSION'>
-               <option value='ikev2' $selected{'IKE_VERSION'}{'ikev2'}>IKEv2</option>
-               <option value='ikev1' $selected{'IKE_VERSION'}{'ikev1'}>IKEv1</option>
-               </select>
+           <td class='boldbase' width='20%'>$Lang::tr{'vpn local id'}:</td>
+           <td width='30%'>
+               <input type='text' name='LOCAL_ID' value='$cgiparams{'LOCAL_ID'}' size="25" />
            </td>
-           <td>$Lang::tr{'dpd action'}:</td>
-           <td><select name='DPD_ACTION'>
-               <option value='clear' $selected{'DPD_ACTION'}{'clear'}>clear</option>
-               <option value='hold' $selected{'DPD_ACTION'}{'hold'}>hold</option>
-               <option value='restart' $selected{'DPD_ACTION'}{'restart'}>restart</option>
-               </select>
+           <td class='boldbase' width='20%'>$Lang::tr{'vpn remote id'}:</td>
+           <td width='30%'>
+               <input type='text' name='REMOTE_ID' value='$cgiparams{'REMOTE_ID'}' size="25" />
+           </td>
+       </tr>
+       <tr><td colspan="4"><br /></td></tr>
+       <tr>
+           <td class='boldbase' width='20%'>$Lang::tr{'remark title'}&nbsp;<img src='/blob.gif' alt='*' /></td>
+           <td colspan='3'>
+               <input type='text' name='REMARK' value='$cgiparams{'REMARK'}' maxlength='50' size="73" />
            </td>
-       </tr><tr>
-           <td class='boldbase'>$Lang::tr{'remark title'}&nbsp;<img src='/blob.gif' alt='*' /></td>
-           <td colspan='3'><input type='text' name='REMARK' value='$cgiparams{'REMARK'}' size='55' maxlength='50' /></td>
        </tr>
 END
     ;
@@ -2089,7 +2137,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
            goto ADVANCED_ERROR;
        }
        foreach my $val (@temp) {
-           if ($val !~ /^(aes256|aes192|aes128|3des)$/) {
+           if ($val !~ /^(aes256|aes192|aes128|3des|camellia256|camellia192|camellia128)$/) {
                $errormessage = $Lang::tr{'invalid input'};
                goto ADVANCED_ERROR;
            }
@@ -2111,7 +2159,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
            goto ADVANCED_ERROR;
        }
        foreach my $val (@temp) {
-           if ($val !~ /^(1024|1536|2048|3072|4096|6144|8192)$/) {
+           if ($val !~ /^(e521|e384|e256|e224|e192|e512bp|e384bp|e256bp|e224bp|1024|1536|2048|2048s256|2048s224|2048s160|3072|4096|6144|8192)$/) {
                $errormessage = $Lang::tr{'invalid input'};
                goto ADVANCED_ERROR;
            }
@@ -2130,7 +2178,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
            goto ADVANCED_ERROR;
        }
        foreach my $val (@temp) {
-           if ($val !~ /^(aes256|aes192|aes128|3des)$/) {
+           if ($val !~ /^(aes256|aes192|aes128|3des|camellia256|camellia192|camellia128)$/) {
                $errormessage = $Lang::tr{'invalid input'};
                goto ADVANCED_ERROR;
            }
@@ -2147,7 +2195,8 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
            }
        }
        if ($cgiparams{'ESP_GROUPTYPE'} ne '' &&
-           $cgiparams{'ESP_GROUPTYPE'} !~  /^modp(1024|1536|2048|3072|4096|6144|8192)$/) {
+           $cgiparams{'ESP_GROUPTYPE'} !~  /^ecp(192|224|256|384|512)(bp)?$/ &&
+           $cgiparams{'ESP_GROUPTYPE'} !~  /^modp(1024|1536|2048|2048s(256|224|160)|3072|4096|6144|8192)$/) {
            $errormessage = $Lang::tr{'invalid input'};
            goto ADVANCED_ERROR;
        }
@@ -2171,6 +2220,17 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
            goto ADVANCED_ERROR;
        }
 
+       if ($cgiparams{'DPD_DELAY'} !~ /^\d+$/) {
+           $errormessage = $Lang::tr{'invalid input for dpd delay'};
+           goto ADVANCED_ERROR;
+       }
+
+       if ($cgiparams{'DPD_TIMEOUT'} !~ /^\d+$/) {
+           $errormessage = $Lang::tr{'invalid input for dpd timeout'};
+           goto ADVANCED_ERROR;
+       }
+
+       $confighash{$cgiparams{'KEY'}}[29] = $cgiparams{'IKE_VERSION'};
        $confighash{$cgiparams{'KEY'}}[18] = $cgiparams{'IKE_ENCRYPTION'};
        $confighash{$cgiparams{'KEY'}}[19] = $cgiparams{'IKE_INTEGRITY'};
        $confighash{$cgiparams{'KEY'}}[20] = $cgiparams{'IKE_GROUPTYPE'};
@@ -2184,6 +2244,9 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
        $confighash{$cgiparams{'KEY'}}[24] = $cgiparams{'ONLY_PROPOSED'};
        $confighash{$cgiparams{'KEY'}}[28] = $cgiparams{'PFS'};
        $confighash{$cgiparams{'KEY'}}[14] = $cgiparams{'VHOST'};
+       $confighash{$cgiparams{'KEY'}}[27] = $cgiparams{'DPD_ACTION'};
+       $confighash{$cgiparams{'KEY'}}[30] = $cgiparams{'DPD_TIMEOUT'};
+       $confighash{$cgiparams{'KEY'}}[31] = $cgiparams{'DPD_DELAY'};
        &General::writehasharray("${General::swroot}/vpn/config", \%confighash);
        &writeipsecfiles();
        if (&vpnenabled) {
@@ -2192,6 +2255,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
        }
        goto ADVANCED_END;
     } else {
+    $cgiparams{'IKE_VERSION'}    = $confighash{$cgiparams{'KEY'}}[29];
        $cgiparams{'IKE_ENCRYPTION'} = $confighash{$cgiparams{'KEY'}}[18];
        $cgiparams{'IKE_INTEGRITY'}  = $confighash{$cgiparams{'KEY'}}[19];
        $cgiparams{'IKE_GROUPTYPE'}  = $confighash{$cgiparams{'KEY'}}[20];
@@ -2204,6 +2268,17 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
        $cgiparams{'ONLY_PROPOSED'}  = $confighash{$cgiparams{'KEY'}}[24];
        $cgiparams{'PFS'}            = $confighash{$cgiparams{'KEY'}}[28];
        $cgiparams{'VHOST'}          = $confighash{$cgiparams{'KEY'}}[14];
+       $cgiparams{'DPD_ACTION'}     = $confighash{$cgiparams{'KEY'}}[27];
+       $cgiparams{'DPD_TIMEOUT'}    = $confighash{$cgiparams{'KEY'}}[30];
+       $cgiparams{'DPD_DELAY'}      = $confighash{$cgiparams{'KEY'}}[31];
+
+       if (!$cgiparams{'DPD_DELAY'}) {
+               $cgiparams{'DPD_DELAY'} = 30;
+       }
+
+       if (!$cgiparams{'DPD_TIMEOUT'}) {
+               $cgiparams{'DPD_TIMEOUT'} = 120;
+       }
 
        if ($confighash{$cgiparams{'KEY'}}[3] eq 'net' || $confighash{$cgiparams{'KEY'}}[10]) {
            $cgiparams{'VHOST'}            = 'off';
@@ -2215,6 +2290,9 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
     $checked{'IKE_ENCRYPTION'}{'aes192'} = '';
     $checked{'IKE_ENCRYPTION'}{'aes128'} = '';
     $checked{'IKE_ENCRYPTION'}{'3des'} = '';
+    $checked{'IKE_ENCRYPTION'}{'camellia256'} = '';
+    $checked{'IKE_ENCRYPTION'}{'camellia192'} = '';
+    $checked{'IKE_ENCRYPTION'}{'camellia128'} = '';
     my @temp = split('\|', $cgiparams{'IKE_ENCRYPTION'});
     foreach my $key (@temp) {$checked{'IKE_ENCRYPTION'}{$key} = "selected='selected'"; }
     $checked{'IKE_INTEGRITY'}{'sha2_512'} = '';
@@ -2243,6 +2321,9 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
     $checked{'ESP_ENCRYPTION'}{'aes192'} = '';
     $checked{'ESP_ENCRYPTION'}{'aes128'} = '';
     $checked{'ESP_ENCRYPTION'}{'3des'} = '';
+    $checked{'ESP_ENCRYPTION'}{'camellia256'} = '';
+    $checked{'ESP_ENCRYPTION'}{'camellia192'} = '';
+    $checked{'ESP_ENCRYPTION'}{'camellia128'} = '';
     @temp = split('\|', $cgiparams{'ESP_ENCRYPTION'});
     foreach my $key (@temp) {$checked{'ESP_ENCRYPTION'}{$key} = "selected='selected'"; }
     $checked{'ESP_INTEGRITY'}{'sha2_512'} = '';
@@ -2260,8 +2341,18 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
     $checked{'PFS'} = $cgiparams{'PFS'} eq 'on' ? "checked='checked'" : '' ;
     $checked{'VHOST'} = $cgiparams{'VHOST'} eq 'on' ? "checked='checked'" : '' ;
 
+    $selected{'IKE_VERSION'}{'ikev1'} = '';
+    $selected{'IKE_VERSION'}{'ikev2'} = '';
+    $selected{'IKE_VERSION'}{$cgiparams{'IKE_VERSION'}} = "selected='selected'";
+
+    $selected{'DPD_ACTION'}{'clear'} = '';
+    $selected{'DPD_ACTION'}{'hold'} = '';
+    $selected{'DPD_ACTION'}{'restart'} = '';
+    $selected{'DPD_ACTION'}{'none'} = '';
+    $selected{'DPD_ACTION'}{$cgiparams{'DPD_ACTION'}} = "selected='selected'";
+
     &Header::showhttpheaders();
-    &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+    &Header::openpage($Lang::tr{'ipsec'}, 1, '');
     &Header::openbigbox('100%', 'left', '', $errormessage);
 
     if ($errormessage) {
@@ -2285,91 +2376,191 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
     <input type='hidden' name='KEY' value='$cgiparams{'KEY'}' />
 
     <table width='100%'>
-       <tr><td class='boldbase' align='right' valign='top'>$Lang::tr{'ike encryption'}</td><td class='boldbase' valign='top'>
-               <select name='IKE_ENCRYPTION' multiple='multiple' size='4'>
-               <option value='aes256' $checked{'IKE_ENCRYPTION'}{'aes256'}>AES (256 bit)</option>
-               <option value='aes192' $checked{'IKE_ENCRYPTION'}{'aes192'}>AES (192 bit)</option>
-               <option value='aes128' $checked{'IKE_ENCRYPTION'}{'aes128'}>AES (128 bit)</option>
-               <option value='3des' $checked{'IKE_ENCRYPTION'}{'3des'}>3DES</option>
-               </select></td>
-
-           <td class='boldbase' align='right' valign='top'>$Lang::tr{'ike integrity'}</td><td class='boldbase' valign='top'>
-               <select name='IKE_INTEGRITY' multiple='multiple' size='4'>
-               <option value='sha2_512' $checked{'IKE_INTEGRITY'}{'sha2_512'}>SHA2 512 bit</option>
-               <option value='sha2_384' $checked{'IKE_INTEGRITY'}{'sha2_384'}>SHA2 384 bit</option>
-               <option value='sha2_256' $checked{'IKE_INTEGRITY'}{'sha2_256'}>SHA2 256 bit</option>
-               <option value='sha' $checked{'IKE_INTEGRITY'}{'sha'}>SHA1</option>
-               <option value='md5' $checked{'IKE_INTEGRITY'}{'md5'}>MD5</option>
-               <option value='aesxcbc' $checked{'IKE_INTEGRITY'}{'aesxcbc'}>AES XCBC</option>
-               </select></td>
-       
-           <td class='boldbase' align='right' valign='top'>$Lang::tr{'ike grouptype'}</td><td class='boldbase' valign='top'>
-               <select name='IKE_GROUPTYPE' multiple='multiple' size='4'>
-               <option value='8192' $checked{'IKE_GROUPTYPE'}{'8192'}>MODP-8192</option>
-               <option value='6144' $checked{'IKE_GROUPTYPE'}{'6144'}>MODP-6144</option>
-               <option value='4096' $checked{'IKE_GROUPTYPE'}{'4096'}>MODP-4096</option>
-               <option value='3072' $checked{'IKE_GROUPTYPE'}{'3072'}>MODP-3072</option>
-               <option value='2048' $checked{'IKE_GROUPTYPE'}{'2048'}>MODP-2048</option>
-               <option value='1536' $checked{'IKE_GROUPTYPE'}{'1536'}>MODP-1536</option>
-               <option value='1024' $checked{'IKE_GROUPTYPE'}{'1024'}>MODP-1024</option>
-               </select></td>
-       </tr><tr>
-           <td class='boldbase' align='right' valign='top'>$Lang::tr{'ike lifetime'}</td><td class='boldbase' valign='top'>
-           <input type='text' name='IKE_LIFETIME' value='$cgiparams{'IKE_LIFETIME'}' size='5' /> $Lang::tr{'hours'}</td>
-
-       </tr><tr>
-           <td colspan='1'><hr /></td>
-       </tr><tr>
-           <td class='boldbase' align='right' valign='top'>$Lang::tr{'esp encryption'}</td><td class='boldbase' valign='top'>
-               <select name='ESP_ENCRYPTION' multiple='multiple' size='4'>
-               <option value='aes256' $checked{'ESP_ENCRYPTION'}{'aes256'}>AES (256 bit)</option>
-               <option value='aes192' $checked{'ESP_ENCRYPTION'}{'aes192'}>AES (192 bit)</option>
-               <option value='aes128' $checked{'ESP_ENCRYPTION'}{'aes128'}>AES (128 bit)</option>
-               <option value='3des' $checked{'ESP_ENCRYPTION'}{'3des'}>3DES</option>
-
-           <td class='boldbase' align='right' valign='top'>$Lang::tr{'esp integrity'}</td><td class='boldbase' valign='top'>
-               <select name='ESP_INTEGRITY' multiple='multiple' size='4'>
-               <option value='sha2_512' $checked{'ESP_INTEGRITY'}{'sha2_512'}>SHA2 512 bit</option>
-               <option value='sha2_384' $checked{'ESP_INTEGRITY'}{'sha2_384'}>SHA2 384 bit</option>
-               <option value='sha2_256' $checked{'ESP_INTEGRITY'}{'sha2_256'}>SHA2 256 bit</option>
-               <option value='sha1' $checked{'ESP_INTEGRITY'}{'sha1'}>SHA1</option>
-               <option value='md5' $checked{'ESP_INTEGRITY'}{'md5'}>MD5</option>
-               <option value='aesxcbc' $checked{'ESP_INTEGRITY'}{'aesxcbc'}>AES XCBC</option>
-               </select></td>
-
-           <td class='boldbase' align='right' valign='top'>$Lang::tr{'esp grouptype'}</td><td class='boldbase' valign='top'>
-               <select name='ESP_GROUPTYPE'>
-               <option value=''>$Lang::tr{'phase1 group'}</option></select></td>
-       </tr><tr>
-           <td class='boldbase' align='right' valign='top'>$Lang::tr{'esp keylife'}</td><td class='boldbase' valign='top'>
-               <input type='text' name='ESP_KEYLIFE' value='$cgiparams{'ESP_KEYLIFE'}' size='5' /> $Lang::tr{'hours'}</td>
-       </tr><tr>
-           <td colspan='1'><hr /></td>
-       </tr><tr>
-           <td colspan='5'><input type='checkbox' name='ONLY_PROPOSED' $checked{'ONLY_PROPOSED'} />
-               IKE+ESP: $Lang::tr{'use only proposed settings'}</td>
-       </tr><tr>
-           <td colspan='5'><input type='checkbox' name='PFS' $checked{'PFS'} />
-               $Lang::tr{'pfs yes no'}</td>
-               <td align='right'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
-       </tr><tr>
-           <td colspan='5'><input type='checkbox' name='COMPRESSION' $checked{'COMPRESSION'} />
-               $Lang::tr{'vpn payload compression'}</td>
-               <td align='right'><input type='submit' name='ACTION' value='$Lang::tr{'cancel'}' /></td>
+       <thead>
+               <tr>
+                       <th width="15%"></th>
+                       <th>IKE</th>
+                       <th>ESP</th>
+               </tr>
+       </thead>
+       <tbody>
+               <tr>
+                       <td>$Lang::tr{'vpn keyexchange'}:</td>
+                       <td>
+                               <select name='IKE_VERSION'>
+                                       <option value='ikev2' $selected{'IKE_VERSION'}{'ikev2'}>IKEv2</option>
+                                       <option value='ikev1' $selected{'IKE_VERSION'}{'ikev1'}>IKEv1</option>
+                               </select>
+                       </td>
+                       <td></td>
+               </tr>
+               <tr>
+                       <td class='boldbase' width="15%">$Lang::tr{'encryption'}</td>
+                       <td class='boldbase'>
+                               <select name='IKE_ENCRYPTION' multiple='multiple' size='6' style='width: 100%'>
+                                       <option value='aes256' $checked{'IKE_ENCRYPTION'}{'aes256'}>AES (256 bit)</option>
+                                       <option value='aes192' $checked{'IKE_ENCRYPTION'}{'aes192'}>AES (192 bit)</option>
+                                       <option value='aes128' $checked{'IKE_ENCRYPTION'}{'aes128'}>AES (128 bit)</option>
+                                       <option value='3des' $checked{'IKE_ENCRYPTION'}{'3des'}>3DES</option>
+                                       <option value='camellia256' $checked{'IKE_ENCRYPTION'}{'camellia256'}>Camellia (256 bit)</option>
+                                       <option value='camellia192' $checked{'IKE_ENCRYPTION'}{'camellia192'}>Camellia (192 bit)</option>
+                                       <option value='camellia128' $checked{'IKE_ENCRYPTION'}{'camellia128'}>Camellia (128 bit)</option>
+                               </select>
+                       </td>
+                       <td class='boldbase'>
+                               <select name='ESP_ENCRYPTION' multiple='multiple' size='6' style='width: 100%'>
+                                       <option value='aes256' $checked{'ESP_ENCRYPTION'}{'aes256'}>AES (256 bit)</option>
+                                       <option value='aes192' $checked{'ESP_ENCRYPTION'}{'aes192'}>AES (192 bit)</option>
+                                       <option value='aes128' $checked{'ESP_ENCRYPTION'}{'aes128'}>AES (128 bit)</option>
+                                       <option value='3des' $checked{'ESP_ENCRYPTION'}{'3des'}>3DES</option>
+                                       <option value='camellia256' $checked{'ESP_ENCRYPTION'}{'camellia256'}>Camellia (256 bit)</option>
+                                       <option value='camellia192' $checked{'ESP_ENCRYPTION'}{'camellia192'}>Camellia (192 bit)</option>
+                                       <option value='camellia128' $checked{'ESP_ENCRYPTION'}{'camellia128'}>Camellia (128 bit)</option>
+                               </select>
+                       </td>
+               </tr>
+
+               <tr>
+                       <td class='boldbase' width="15%">$Lang::tr{'integrity'}</td>
+                       <td class='boldbase'>
+                               <select name='IKE_INTEGRITY' multiple='multiple' size='6' style='width: 100%'>
+                                       <option value='sha2_512' $checked{'IKE_INTEGRITY'}{'sha2_512'}>SHA2 512 bit</option>
+                                       <option value='sha2_384' $checked{'IKE_INTEGRITY'}{'sha2_384'}>SHA2 384 bit</option>
+                                       <option value='sha2_256' $checked{'IKE_INTEGRITY'}{'sha2_256'}>SHA2 256 bit</option>
+                                       <option value='sha' $checked{'IKE_INTEGRITY'}{'sha'}>SHA1</option>
+                                       <option value='md5' $checked{'IKE_INTEGRITY'}{'md5'}>MD5</option>
+                                       <option value='aesxcbc' $checked{'IKE_INTEGRITY'}{'aesxcbc'}>AES XCBC</option>
+                               </select>
+                       </td>
+                       <td class='boldbase'>
+                               <select name='ESP_INTEGRITY' multiple='multiple' size='6' style='width: 100%'>
+                                       <option value='sha2_512' $checked{'ESP_INTEGRITY'}{'sha2_512'}>SHA2 512 bit</option>
+                                       <option value='sha2_384' $checked{'ESP_INTEGRITY'}{'sha2_384'}>SHA2 384 bit</option>
+                                       <option value='sha2_256' $checked{'ESP_INTEGRITY'}{'sha2_256'}>SHA2 256 bit</option>
+                                       <option value='sha1' $checked{'ESP_INTEGRITY'}{'sha1'}>SHA1</option>
+                                       <option value='md5' $checked{'ESP_INTEGRITY'}{'md5'}>MD5</option>
+                                       <option value='aesxcbc' $checked{'ESP_INTEGRITY'}{'aesxcbc'}>AES XCBC</option>
+                               </select>
+                       </td>
+               </tr>
+               <tr>
+                       <td class='boldbase' width="15%">$Lang::tr{'lifetime'}</td>
+                       <td class='boldbase'>
+                               <input type='text' name='IKE_LIFETIME' value='$cgiparams{'IKE_LIFETIME'}' size='5' /> $Lang::tr{'hours'}
+                       </td>
+                       <td class='boldbase'>
+                               <input type='text' name='ESP_KEYLIFE' value='$cgiparams{'ESP_KEYLIFE'}' size='5' /> $Lang::tr{'hours'}
+                       </td>
+               </tr>
+               <tr>
+                       <td class='boldbase' width="15%">$Lang::tr{'grouptype'}</td>
+                       <td class='boldbase'>
+                               <select name='IKE_GROUPTYPE' multiple='multiple' size='6' style='width: 100%'>
+                                       <option value='e521' $checked{'IKE_GROUPTYPE'}{'e521'}>ECP-521 (NIST)</option>
+                                       <option value='e384' $checked{'IKE_GROUPTYPE'}{'e384'}>ECP-384 (NIST)</option>
+                                       <option value='e256' $checked{'IKE_GROUPTYPE'}{'e256'}>ECP-256 (NIST)</option>
+                                       <option value='e224' $checked{'IKE_GROUPTYPE'}{'e224'}>ECP-224 (NIST)</option>
+                                       <option value='e192' $checked{'IKE_GROUPTYPE'}{'e192'}>ECP-192 (NIST)</option>
+                                       <option value='e512bp' $checked{'IKE_GROUPTYPE'}{'e512bp'}>ECP-512 (Brainpool)</option>
+                                       <option value='e384bp' $checked{'IKE_GROUPTYPE'}{'e384bp'}>ECP-384 (Brainpool)</option>
+                                       <option value='e256bp' $checked{'IKE_GROUPTYPE'}{'e256bp'}>ECP-256 (Brainpool)</option>
+                                       <option value='e224bp' $checked{'IKE_GROUPTYPE'}{'e224bp'}>ECP-224 (Brainpool)</option>
+                                       <option value='8192' $checked{'IKE_GROUPTYPE'}{'8192'}>MODP-8192</option>
+                                       <option value='6144' $checked{'IKE_GROUPTYPE'}{'6144'}>MODP-6144</option>
+                                       <option value='4096' $checked{'IKE_GROUPTYPE'}{'4096'}>MODP-4096</option>
+                                       <option value='3072' $checked{'IKE_GROUPTYPE'}{'3072'}>MODP-3072</option>
+                                       <option value='2048s256' $checked{'IKE_GROUPTYPE'}{'2048s256'}>MODP-2048/256</option>
+                                       <option value='2048s224' $checked{'IKE_GROUPTYPE'}{'2048s224'}>MODP-2048/224</option>
+                                       <option value='2048s160' $checked{'IKE_GROUPTYPE'}{'2048s160'}>MODP-2048/160</option>
+                                       <option value='2048' $checked{'IKE_GROUPTYPE'}{'2048'}>MODP-2048</option>
+                                       <option value='1536' $checked{'IKE_GROUPTYPE'}{'1536'}>MODP-1536</option>
+                                       <option value='1024' $checked{'IKE_GROUPTYPE'}{'1024'}>MODP-1024</option>
+                               </select>
+                       </td>
+                       <td></td>
+               </tr>
+       </tbody>
+    </table>
+
+       <br><br>
+
+       <h2>$Lang::tr{'dead peer detection'}</h2>
+
+    <table width="100%">
+    <tr>
+               <td width="15%">$Lang::tr{'dpd action'}:</td>
+               <td>
+                       <select name='DPD_ACTION'>
+                               <option value='none' $selected{'DPD_ACTION'}{'none'}>- $Lang::tr{'disabled'} -</option>
+                               <option value='clear' $selected{'DPD_ACTION'}{'clear'}>clear</option>
+                               <option value='hold' $selected{'DPD_ACTION'}{'hold'}>hold</option>
+                               <option value='restart' $selected{'DPD_ACTION'}{'restart'}>restart</option>
+                       </select>
+               </td>
+       </tr>
+       <tr>
+               <td width="15%">$Lang::tr{'dpd timeout'}:</td>
+               <td>
+                       <input type='text' name='DPD_TIMEOUT' size='5' value='$cgiparams{'DPD_TIMEOUT'}' />
+               </td>
+       </tr>
+       <tr>
+               <td width="15%">$Lang::tr{'dpd delay'}:</td>
+               <td>
+                       <input type='text' name='DPD_DELAY' size='5' value='$cgiparams{'DPD_DELAY'}' />
+               </td>
+       </tr>
+    </table>
+
+    <hr>
+
+    <table width="100%">
+       <tr>
+               <td>
+                       <label>
+                               <input type='checkbox' name='ONLY_PROPOSED' $checked{'ONLY_PROPOSED'} />
+                               IKE+ESP: $Lang::tr{'use only proposed settings'}
+                       </label>
+               </td>
+       </tr>
+       <tr>
+               <td>
+                       <label>
+                               <input type='checkbox' name='PFS' $checked{'PFS'} />
+                               $Lang::tr{'pfs yes no'}
+                       </label>
+               </td>
+       </tr>
+       <tr>
+               <td>
+                       <label>
+                               <input type='checkbox' name='COMPRESSION' $checked{'COMPRESSION'} />
+                               $Lang::tr{'vpn payload compression'}
+                       </label>
+               </td>
        </tr>
 EOF
     ;
     if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') {
        print "<tr><td><input type='hidden' name='VHOST' value='off' /></td></tr>";
     } elsif ($confighash{$cgiparams{'KEY'}}[10]) {
-       print "<tr><td colspan='5'><input type='checkbox' name='VHOST' $checked{'VHOST'} disabled='disabled' />";
-       print " $Lang::tr{'vpn vhost'}</td></tr>";
+       print "<tr><td><label><input type='checkbox' name='VHOST' $checked{'VHOST'} disabled='disabled' />";
+       print " $Lang::tr{'vpn vhost'}</label></td></tr>";
     } else {
-       print "<tr><td colspan='5'><input type='checkbox' name='VHOST' $checked{'VHOST'} />";
-       print " $Lang::tr{'vpn vhost'}</td></tr>";
+       print "<tr><td><label><input type='checkbox' name='VHOST' $checked{'VHOST'} />";
+       print " $Lang::tr{'vpn vhost'}</label></td></tr>";
     }
 
-    print "</table></form>";
+    print <<EOF;
+       <tr>
+               <td align='right' colspan='2'>
+                       <input type='submit' name='ACTION' value='$Lang::tr{'save'}' />
+                       <input type='submit' name='ACTION' value='$Lang::tr{'cancel'}' />
+               </td>
+       </tr>
+    </table></form>
+EOF
+
     &Header::closebox();
     &Header::closebigbox();
     &Header::closepage();
@@ -2410,7 +2601,7 @@ EOF
     $checked{'ENABLED'} = $cgiparams{'ENABLED'} eq 'on' ? "checked='checked'" : '';
 
     &Header::showhttpheaders();
-    &Header::openpage($Lang::tr{'vpn configuration main'}, 1, '');
+    &Header::openpage($Lang::tr{'ipsec'}, 1, '');
     &Header::openbigbox('100%', 'left', '', $errormessage);
 
     if ($errormessage) {
@@ -2420,6 +2611,16 @@ EOF
        &Header::closebox();
     }
 
+       if ($warnmessage) {
+               &Header::openbox('100%', 'left', $Lang::tr{'warning messages'});
+               print "$warnmessage<br>";
+               print "$Lang::tr{'fwdfw warn1'}<br>";
+               &Header::closebox();
+               print"<center><form method='post'><input type='submit' name='ACTION' value='$Lang::tr{'ok'}' style='width: 5em;'></form>";
+               &Header::closepage();
+               exit 0;
+       }
+
     &Header::openbox('100%', 'left', $Lang::tr{'global settings'});
     print <<END
     <form method='post' action='$ENV{'SCRIPT_NAME'}'>
@@ -2440,17 +2641,18 @@ print <<END
        <td  class='base' nowrap='nowrap'>$Lang::tr{'host to net vpn'}:&nbsp;<img src='/blob.gif' alt='*' /></td>
        <td ><input type='text' name='RW_NET' value='$cgiparams{'RW_NET'}' /></td>
     </tr>
- </table>
+</table>
+<br>
 <hr />
 <table width='100%'>
 <tr>
     <td class='base' valign='top'><img src='/blob.gif' alt='*' /></td>
-    <td width='70%' class='base' valign='top'>$Lang::tr{'this field may be blank'}</td>
+    <td width='70%' class='base' valign='top'>$Lang::tr{'this field may be blank'}</td><td width='30%' align='right' class='base'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
 </tr>
 <tr>
     <td class='base' valign='top' nowrap='nowrap'><img src='/blob.gif' alt='*' /><img src='/blob.gif' alt='*' />&nbsp;</td>
     <td class='base'>  <font class='base'>$Lang::tr{'vpn delayed start help'}</font></td>
-    <td width='30%' align='center' class='base'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td>
+    <td></td>
 </tr>
 </table>
 END
@@ -2460,53 +2662,58 @@ END
 
     &Header::openbox('100%', 'left', $Lang::tr{'connection status and controlc'});
     print <<END
-    <table width='100%' border='0' cellspacing='1' cellpadding='0'>
+    <table width='100%' cellspacing='1' cellpadding='0' class='tbl'>
     <tr>
-       <td width='10%' class='boldbase' align='center'><b>$Lang::tr{'name'}</b></td>
-       <td width='22%' class='boldbase' align='center'><b>$Lang::tr{'type'}</b></td>
-       <td width='23%' class='boldbase' align='center'><b>$Lang::tr{'common name'}</b></td>
-       <td width='30%' class='boldbase' align='center'><b>$Lang::tr{'remark'}</b></td>
-       <td width='10%' class='boldbase' align='center'><b>$Lang::tr{'status'}</b></td>
-       <td class='boldbase' align='center' colspan='6'><b>$Lang::tr{'action'}</b></td>
+       <th width='10%' class='boldbase' align='center'><b>$Lang::tr{'name'}</b></th>
+       <th width='22%' class='boldbase' align='center'><b>$Lang::tr{'type'}</b></th>
+       <th width='23%' class='boldbase' align='center'><b>$Lang::tr{'common name'}</b></th>
+       <th width='30%' class='boldbase' align='center'><b>$Lang::tr{'remark'}</b></th>
+       <th width='10%' class='boldbase' align='center'><b>$Lang::tr{'status'}</b></th>
+       <th class='boldbase' align='center' colspan='6'><b>$Lang::tr{'action'}</b></th>
     </tr>
 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) {
-           print "<tr bgcolor='$color{'color20'}'>\n";
+               print "<tr>";
+               $col="bgcolor='$color{'color20'}'";
        } else {
-           print "<tr bgcolor='$color{'color22'}'>\n";
+               print "<tr>";
+               $col="bgcolor='$color{'color22'}'";
        }
-       print "<td align='center' nowrap='nowrap'>$confighash{$key}[1]</td>";
-       print "<td align='center' nowrap='nowrap'>" . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ") $confighash{$key}[29]</td>";
+       print "<td align='center' nowrap='nowrap' $col>$confighash{$key}[1]</td>";
+       print "<td align='center' nowrap='nowrap' $col>" . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ") $confighash{$key}[29]</td>";
        if ($confighash{$key}[2] eq '%auth-dn') {
-           print "<td align='left' nowrap='nowrap'>$confighash{$key}[9]</td>";
+           print "<td align='left' nowrap='nowrap' $col>$confighash{$key}[9]</td>";
        } elsif ($confighash{$key}[4] eq 'cert') {
-           print "<td align='left' nowrap='nowrap'>$confighash{$key}[2]</td>";
+           print "<td align='left' nowrap='nowrap' $col>$confighash{$key}[2]</td>";
        } else {
-           print "<td align='left'>&nbsp;</td>";
+           print "<td align='left' $col>&nbsp;</td>";
        }
-       print "<td align='center'>$confighash{$key}[25]</td>";
+       print "<td align='center' $col>$confighash{$key}[25]</td>";
+       my $col1="bgcolor='${Header::colourred}'";
        # get real state
-       my $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourred}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b></td></tr></table>";
+       my $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b>";
        foreach my $line (@status) {
            if (($line =~ /\"$confighash{$key}[1]\".*IPsec SA established/) ||
               ($line =~ /$confighash{$key}[1]\{.*INSTALLED/))
            {
-               $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourgreen}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b></td></tr></table>";
+               $col1="bgcolor='${Header::colourgreen}'";
+               $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b>";
            }
        }
        # move to blueif really down
-       if ($confighash{$key}[0] eq 'off' && $active =~ /${Header::colourred}/ ) {
-           $active = "<table cellpadding='2' cellspacing='0' bgcolor='${Header::colourblue}' width='100%'><tr><td align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b></td></tr></table>";
+       if ($confighash{$key}[0] eq 'off' && $col1 =~ /${Header::colourred}/ ) {
+               $col1="bgcolor='${Header::colourblue}'";
+           $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b>";
        }
        print <<END
-       <td align='center'>$active</td>
-       <td align='center'>
+       <td align='center' $col1>$active</td>
+       <td align='center' $col>
            <form method='post' action='$ENV{'SCRIPT_NAME'}'>
            <input type='image'  name='$Lang::tr{'restart'}' src='/images/reload.gif' alt='$Lang::tr{'restart'}' title='$Lang::tr{'restart'}' />
            <input type='hidden' name='ACTION' value='$Lang::tr{'restart'}' />
@@ -2517,7 +2724,7 @@ END
        ;
        if (($confighash{$key}[4] eq 'cert') && ($confighash{$key}[2] ne '%auth-dn')) {
            print <<END
-           <td align='center'>
+           <td align='center' $col>
            <form method='post' action='$ENV{'SCRIPT_NAME'}'>
                <input type='image' name='$Lang::tr{'show certificate'}' src='/images/info.gif' alt='$Lang::tr{'show certificate'}' title='$Lang::tr{'show certificate'}' />
                <input type='hidden' name='ACTION' value='$Lang::tr{'show certificate'}' />
@@ -2526,11 +2733,11 @@ END
            </td>
 END
        ; } else {
-           print "<td width='2%'>&nbsp;</td>";
+           print "<td width='2%' $col>&nbsp;</td>";
        }
        if ($confighash{$key}[4] eq 'cert' && -f "${General::swroot}/certs/$confighash{$key}[1].p12") { 
            print <<END
-           <td align='center'>
+           <td align='center' $col>
            <form method='post' action='$ENV{'SCRIPT_NAME'}'>
                <input type='image' name='$Lang::tr{'download pkcs12 file'}' src='/images/floppy.gif' alt='$Lang::tr{'download pkcs12 file'}' title='$Lang::tr{'download pkcs12 file'}' />
                <input type='hidden' name='ACTION' value='$Lang::tr{'download pkcs12 file'}' />
@@ -2540,7 +2747,7 @@ END
 END
        ; } elsif (($confighash{$key}[4] eq 'cert') && ($confighash{$key}[2] ne '%auth-dn')) {
            print <<END
-           <td align='center'>
+           <td align='center' $col>
            <form method='post' action='$ENV{'SCRIPT_NAME'}'>
                <input type='image' name='$Lang::tr{'download certificate'}' src='/images/floppy.gif' alt='$Lang::tr{'download certificate'}' title='$Lang::tr{'download certificate'}' />
                <input type='hidden' name='ACTION' value='$Lang::tr{'download certificate'}' />
@@ -2549,10 +2756,10 @@ END
        </td>
 END
        ; } else {
-           print "<td width='2%'>&nbsp;</td>";
+           print "<td width='2%' $col>&nbsp;</td>";
        }
        print <<END
-       <td align='center'>
+       <td align='center' $col>
            <form method='post' 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'}' />
@@ -2560,14 +2767,14 @@ END
            </form>
        </td>
 
-       <td align='center'>
+       <td align='center' $col>
            <form method='post' 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='KEY' value='$key' />
            </form>
        </td>
-       <td align='center' >
+       <td align='center' $col>
            <form method='post' 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'}' />
@@ -2612,7 +2819,7 @@ END
 
     print <<END
     <table width='100%'>
-    <tr><td align='center' colspan='9'>
+    <tr><td align='right' colspan='9'>
        <form method='post' action='$ENV{'SCRIPT_NAME'}'>
        <input type='submit' name='ACTION' value='$Lang::tr{'add'}' />
        </form>
@@ -2622,45 +2829,46 @@ END
     ;
     &Header::closebox();
 
-    &Header::openbox('100%', 'left', "$Lang::tr{'certificate authorities'}:");
+    &Header::openbox('100%', 'left', "$Lang::tr{'certificate authorities'}");
     print <<EOF
-    <table width='100%' border='0' cellspacing='1' cellpadding='0'>
+    <table width='100%' cellspacing='1' cellpadding='0' class='tbl'>
     <tr>
-       <td width='25%' class='boldbase' align='center'><b>$Lang::tr{'name'}</b></td>
-       <td width='65%' class='boldbase' align='center'><b>$Lang::tr{'subject'}</b></td>
-       <td width='10%' class='boldbase' colspan='3' align='center'><b>$Lang::tr{'action'}</b></td>
+       <th width='25%' class='boldbase' align='center'><b>$Lang::tr{'name'}</b></th>
+       <th width='65%' class='boldbase' align='center'><b>$Lang::tr{'subject'}</b></th>
+       <th width='10%' class='boldbase' colspan='3' align='center'><b>$Lang::tr{'action'}</b></th>
     </tr>
 EOF
     ;
+    my $col1="bgcolor='$color{'color22'}'";
+       my $col2="bgcolor='$color{'color20'}'";
     if (-f "${General::swroot}/ca/cacert.pem") {
        my $casubject = &Header::cleanhtml(getsubjectfromcert ("${General::swroot}/ca/cacert.pem"));
-
        print <<END
-       <tr bgcolor='$color{'color22'}'>
-       <td class='base'>$Lang::tr{'root certificate'}</td>
-       <td class='base'>$casubject</td>
-       <td width='3%' align='center'>
+       <tr>
+       <td class='base' $col1>$Lang::tr{'root certificate'}</td>
+       <td class='base' $col1>$casubject</td>
+       <td width='3%' align='center' $col1>
            <form method='post' action='$ENV{'SCRIPT_NAME'}'>
            <input type='hidden' name='ACTION' value='$Lang::tr{'show root certificate'}' />
            <input type='image' name='$Lang::tr{'edit'}' src='/images/info.gif' alt='$Lang::tr{'show root certificate'}' title='$Lang::tr{'show root certificate'}' />
            </form>
        </td>
-       <td width='3%' align='center'>
+       <td width='3%' align='center' $col1>
            <form method='post' action='$ENV{'SCRIPT_NAME'}'>
            <input type='image' name='$Lang::tr{'download root certificate'}' src='/images/floppy.gif' alt='$Lang::tr{'download root certificate'}' title='$Lang::tr{'download root certificate'}' />
            <input type='hidden' name='ACTION' value='$Lang::tr{'download root certificate'}' />
            </form>
        </td>
-       <td width='4%'>&nbsp;</td></tr>
+       <td width='4%' $col1>&nbsp;</td></tr>
 END
        ;
     } else {
        # display rootcert generation buttons
        print <<END
-       <tr bgcolor='$color{'color22'}'>
-       <td class='base'>$Lang::tr{'root certificate'}:</td>
-       <td class='base'>$Lang::tr{'not present'}</td>
-       <td colspan='3'>&nbsp;</td></tr>
+       <tr>
+       <td class='base' $col1>$Lang::tr{'root certificate'}:</td>
+       <td class='base' $col1>$Lang::tr{'not present'}</td>
+       <td colspan='3' $col1>&nbsp;</td></tr>
 END
        ;
     }
@@ -2669,61 +2877,63 @@ END
        my $hostsubject = &Header::cleanhtml(getsubjectfromcert ("${General::swroot}/certs/hostcert.pem"));
 
        print <<END
-       <tr bgcolor='$color{'color20'}'>
-       <td class='base'>$Lang::tr{'host certificate'}</td>
-       <td class='base'>$hostsubject</td>
-       <td width='3%' align='center'>
+       <tr>
+       <td class='base' $col2>$Lang::tr{'host certificate'}</td>
+       <td class='base' $col2>$hostsubject</td>
+       <td width='3%' align='center' $col2>
            <form method='post' action='$ENV{'SCRIPT_NAME'}'>
            <input type='hidden' name='ACTION' value='$Lang::tr{'show host certificate'}' />
            <input type='image' name='$Lang::tr{'show host certificate'}' src='/images/info.gif' alt='$Lang::tr{'show host certificate'}' title='$Lang::tr{'show host certificate'}' />
            </form>
        </td>
-       <td width='3%' align='center'>
+       <td width='3%' align='center' $col2>
            <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-           <input type='image' name='$Lang::tr{'download host certificate'}' src='/images/floppy.gif' alt='$Lang::tr{'download host certificate'}' title='$Lang::tr{'download host certificate'}' />
-           <input type='hidden' name='ACTION' value='$Lang::tr{'download host certificate'}' />
+           <input type='image' name="$Lang::tr{'download host certificate'}" src='/images/floppy.gif' alt="$Lang::tr{'download host certificate'}" title="$Lang::tr{'download host certificate'}" />
+           <input type='hidden' name='ACTION' value="$Lang::tr{'download host certificate'}" />
            </form>
        </td>
-       <td width='4%'>&nbsp;</td></tr>
+       <td width='4%' $col2>&nbsp;</td></tr>
 END
        ;
     } else {
        # Nothing
        print <<END
-       <tr bgcolor='$color{'color20'}'>
-       <td width='25%' class='base'>$Lang::tr{'host certificate'}:</td>
-       <td class='base'>$Lang::tr{'not present'}</td>
-       <td colspan='3'>&nbsp;</td></tr>
+       <tr>
+       <td width='25%' class='base' $col2>$Lang::tr{'host certificate'}:</td>
+       <td class='base' $col2>$Lang::tr{'not present'}</td>
+       <td colspan='3' $col2>&nbsp;</td></tr>
 END
        ;
     }
  
-    my $rowcolor = 0;
-    if (keys %cahash > 0) {
-   foreach my $key (keys %cahash) {
-       if ($rowcolor++ % 2) {
-      print "<tr bgcolor='$color{'color20'}'>\n";
-       } else {
-      print "<tr bgcolor='$color{'color22'}'>\n";
-       }
-           print "<td class='base'>$cahash{$key}[0]</td>\n";
-           print "<td class='base'>$cahash{$key}[1]</td>\n";
+       my $rowcolor = 0;
+       if (keys %cahash > 0) {
+               foreach my $key (keys %cahash) {
+                       if ($rowcolor++ % 2) {
+                               print "<tr>";
+                               $col="bgcolor='$color{'color20'}'";
+                       } else {
+                               print "<tr>";
+                               $col="bgcolor='$color{'color22'}'";
+                       }
+           print "<td class='base' $col>$cahash{$key}[0]</td>\n";
+           print "<td class='base' $col>$cahash{$key}[1]</td>\n";
            print <<END
-           <td align='center'>
+           <td align='center' $col>
                <form method='post' name='cafrm${key}a' action='$ENV{'SCRIPT_NAME'}'>
                <input type='image' name='$Lang::tr{'show ca certificate'}' src='/images/info.gif' alt='$Lang::tr{'show ca certificate'}' title='$Lang::tr{'show ca certificate'}' />
                <input type='hidden' name='ACTION' value='$Lang::tr{'show ca certificate'}' />
                <input type='hidden' name='KEY' value='$key' />
                </form>
            </td>
-           <td align='center'>
+           <td align='center' $col>
                <form method='post' name='cafrm${key}b' action='$ENV{'SCRIPT_NAME'}'>
                <input type='image' name='$Lang::tr{'download ca certificate'}' src='/images/floppy.gif' alt='$Lang::tr{'download ca certificate'}' title='$Lang::tr{'download ca certificate'}' />
                <input type='hidden' name='ACTION' value='$Lang::tr{'download ca certificate'}' />
                <input type='hidden' name='KEY' value='$key' />
                </form>
            </td>
-           <td align='center'>
+           <td align='center' $col>
                <form method='post' name='cafrm${key}c' action='$ENV{'SCRIPT_NAME'}'>
                <input type='hidden' name='ACTION' value='$Lang::tr{'remove ca certificate'}' />
                <input type='image'  name='$Lang::tr{'remove ca certificate'}' src='/images/delete.gif' alt='$Lang::tr{'remove ca certificate'}' title='$Lang::tr{'remove ca certificate'}' />
@@ -2752,6 +2962,7 @@ END
     }
     my $createCA = -f "${General::swroot}/ca/cacert.pem" ? '' : "<tr><td colspan='3'></td><td><input type='submit' name='ACTION' value='$Lang::tr{'generate root/host certificates'}' /></td></tr>";
     print <<END
+    <br>
     <hr />
     <form method='post' enctype='multipart/form-data' action='$ENV{'SCRIPT_NAME'}'>
     <table width='100%' border='0' cellspacing='1' cellpadding='0'>
@@ -2764,7 +2975,7 @@ END
     </tr>
     <tr>
        <td colspan='3'>$Lang::tr{'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections'}:</td>
-       <td><input type='submit' name='ACTION' value='$Lang::tr{'remove x509'}' /></td>
+       <td align='right'><input type='submit' name='ACTION' value='$Lang::tr{'remove x509'}' /></td>
     </tr>
     </table>
     </form>
index 8ea4ae0355733020572b4efa7ce9e1096cefbba3..4a7fc84f0def61b167eb434feda196e8bef5abda 100644 (file)
@@ -260,12 +260,12 @@ print <<END
   <td colspan='4' align='left'><input type='text' name='CLIENT_COMMENT' value='$cgiparams{'CLIENT_COMMENT'}' size='40' /></td>
 </tr>
 </table>
+<br>
 <hr />
 <table width='100%'>
 <tr>
-  <td class='base' valign='top'><img src='/blob.gif' alt='*' /></td>
-  <td width='55%' class='base'>$Lang::tr{'this field may be blank'}</td>
-  <td width='40%' align='center'>
+  <td class='base' valign='top'><img src='/blob.gif' alt='*' />$Lang::tr{'this field may be blank'}</td>
+  <td width='40%' align='right'>
 END
 ;
 
@@ -292,16 +292,17 @@ print "</form>\n";
 &Header::openbox('100%', 'left', "$Lang::tr{'current devices'}");
 
 print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
 <tr>
-<td align='center' width='20%'><b>$Lang::tr{'mac address'}</b></td>
-<td align='center' width='10%'><b>$Lang::tr{'interface'}</b></td>
-<td align='center' width='60%'><b>$Lang::tr{'remark'}</b></td>
-<td align='center' colspan='2'><b>$Lang::tr{'action'}</b></td>
+<th align='center' width='20%'><b>$Lang::tr{'mac address'}</b></th>
+<th align='center' width='10%'><b>$Lang::tr{'interface'}</b></th>
+<th align='center' width='60%'><b>$Lang::tr{'remark'}</b></th>
+<th align='center' colspan='2'><b>$Lang::tr{'action'}</b></th>
+<th></th>
 </tr>
 END
 ;
-
+my $col="";
 for $i ( 0 .. $#wol_devices )
 {
   my $wol_mac = $wol_devices[$i]{'MAC'};
@@ -310,22 +311,25 @@ for $i ( 0 .. $#wol_devices )
 
   if ( (($cgiparams{'ACTION'} eq 'edit') || ($cgiparams{'ACTION'} eq 'update')) && ($i == $cgiparams{'ID'}) ) 
   {
-    print "<tr bgcolor='${Header::colouryellow}'>";
+    print "<tr>";
+    $col="bgcolor='${Header::colouryellow}'";
   }
   elsif ( $i % 2) 
   {
-    print "<tr bgcolor='$color{'color22'}'>";
+    print "<tr>";
+    $col="bgcolor='$color{'color20'}'";
   }
-  else 
+  else
   {
-    print "<tr bgcolor='$color{'color20'}'>";
+    print "<tr>";
+    $col="bgcolor='$color{'color22'}'";
   }
 
   print <<END
-<td align='center'>$wol_mac</td>
-<td align='center'>$Lang::tr{"$wol_iface"}</td>
-<td align='left'>$wol_txt</td>
-<td align='center'>
+<td align='center' $col>$wol_mac</td>
+<td align='center' $col>$Lang::tr{"$wol_iface"}</td>
+<td align='left' $col>$wol_txt</td>
+<td align='center' $col>
 END
 ;
   if ( (($wol_iface eq 'blue') && ! &haveBlueNet()) 
@@ -347,14 +351,14 @@ END
   }
   print <<END
 </td>
-<td align='center'>
+<td align='center' $col>
   <form method='post' name='frmb$i' action='$ENV{'SCRIPT_NAME'}'>
   <input type='hidden' name='ACTION' value='edit' />
   <input type='image' name='$Lang::tr{'edit'}' src='/images/edit.gif' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
   <input type='hidden' name='ID' value='$i' />
   </form>
 </td>
-<td align='center'>
+<td align='center' $col>
   <form method='post' name='frmc$i' action='$ENV{'SCRIPT_NAME'}'>
   <input type='hidden' name='ACTION' value='remove' />
   <input type='image' name='$Lang::tr{'remove'}' src='/images/delete.gif' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' />
index ecff1796b97967f97c8574d5507f2e52a9e9aac0..358f318df08af8559460388cd5760217f785f835 100644 (file)
@@ -225,16 +225,15 @@ print <<END
 <td colspan='3'><input type='text' name='REMARK' value='$cgiparams{'REMARK'}' size='40' /></td>
 </tr>
 </table>
-<hr />
+<br>
+<hr>
 <table width='100%'>
 <tr>
-    <td class='base' valign='top'><img src='/blob.gif' alt='*' /></td>
-    <td width='55%' class='base'>$Lang::tr{'this field may be blank'}</td>
-    <td width='40%' align='center'>
+    <td class='base' valign='top'><img src='/blob.gif' alt='*' /> $Lang::tr{'this field may be blank'}</td>
+    <td width='40%' align='right'>
       <input type='hidden' name='ACTION' value='add' />
       <input type='submit' name='SUBMIT' value='$buttontext' />
     </td>
-    <td width='5%' align='right'>&nbsp;</td>
 </tr>
 </table>
 END
@@ -260,13 +259,13 @@ my @current = <FILE>;
 close (FILE);
 
 print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
 <tr>
-<td align='center' width='20%'><b>$Lang::tr{'hostname'}</b></td>
-<td align='center' width='20%'><b>$Lang::tr{'source ip'}</b></td>
-<td align='center' width='20%'><b>$Lang::tr{'mac address'}</b></td>
-<td align='center' width='35%'><b>$Lang::tr{'remark'}</b></td>
-<td align='center' colspan='3'><b>$Lang::tr{'action'}</b></td>
+<th align='center' width='20%'><b>$Lang::tr{'hostname'}</b></th>
+<th align='center' width='20%'><b>$Lang::tr{'source ip'}</b></th>
+<th align='center' width='20%'><b>$Lang::tr{'mac address'}</b></t>
+<th align='center' width='35%'><b>$Lang::tr{'remark'}</b></th>
+<th align='center' colspan='3'><b>$Lang::tr{'action'}</b></th>
 </tr>
 END
 ;
@@ -333,20 +332,24 @@ foreach my $line (@current)
                else { $gif = 'off.gif'; $toggle='on'; $gdesc=$Lang::tr{'click to enable'};}
 
        my $remark    = &Header::cleanhtml($temp[4]);
+       my $col="";
 
        if ($cgiparams{'ACTION'} eq 'edit' && $cgiparams{'ID'} eq $id) {
-               print "<tr bgcolor='${Header::colouryellow}'>\n";
+               print "<tr>";
+               $col="bgcolor='${Header::colouryellow}'";
        } elsif ($id % 2) {
-               print "<tr bgcolor='${Header::table1colour}'>\n";
+               print "<tr>";
+               $col="bgcolor='${Header::table1colour}'";
        } else {
-               print "<tr bgcolor='${Header::table2colour}'>\n";
+               print "<tr>";
+               $col="bgcolor='${Header::table2colour}'";
        }
-       print "<td align='center'>$hname</td>\n";
-       print "<td align='center'>$sourceip</td>\n";
-       print "<td align='center'>$sourcemac</td>\n";
-       print "<td align='center'>$remark</td>\n";
+       print "<td align='center' $col>$hname</td>\n";
+       print "<td align='center' $col>$sourceip</td>\n";
+       print "<td align='center' $col>$sourcemac</td>\n";
+       print "<td align='center' $col>$remark</td>\n";
 print<<END
-<td align='center'>
+<td align='center' $col>
        <form method='post' name='frma$id' 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='toggle'}' />
@@ -355,7 +358,7 @@ print<<END
        </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
        <form method='post' name='frmb$id' action='$ENV{'SCRIPT_NAME'}'>
        <input type='hidden' name='ACTION' value='edit' />
        <input type='image' name='$Lang::tr{'edit'}' src='/images/edit.gif' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
@@ -363,7 +366,7 @@ print<<END
        </form>
 </td>
 
-<td align='center'>
+<td align='center' $col>
        <form method='post' name='frmc$id' action='$ENV{'SCRIPT_NAME'}'>
        <input type='hidden' name='ACTION' value='remove' />
        <input type='image' name='$Lang::tr{'remove'}' src='/images/delete.gif' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' />
@@ -405,12 +408,13 @@ sub printblueleases
 
        &Header::openbox('100%', 'left', "$Lang::tr{'current dhcp leases on blue'}");
        print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
 <tr>
-<td width='25%' align='center'><b>$Lang::tr{'ip address'}</b></td>
-<td width='25%' align='center'><b>$Lang::tr{'mac address'}</b></td>
-<td width='20%' align='center'><b>$Lang::tr{'hostname'}</b></td>
-<td width='30%' align='center'><b>$Lang::tr{'lease expires'} (local time d/m/y)</b></td>
+<th width='25%' align='center'><b>$Lang::tr{'ip address'}</b></th>
+<th width='25%' align='center'><b>$Lang::tr{'mac address'}</b></th>
+<th width='20%' align='center'><b>$Lang::tr{'hostname'}</b></th>
+<th width='30%' align='center'><b>$Lang::tr{'lease expires'} (local time d/m/y)</b></th>
+<th></th>
 </tr>
 END
        ;
@@ -459,18 +463,21 @@ END
        foreach my $key (sort blueleasesort keys %entries) {
 
                my $hostname = &Header::cleanhtml($entries{$key}->{HOSTNAME},"y");
+               my $col="";
 
                if ($id % 2) {
-                       print "<tr bgcolor='$Header::table2colour'>";
+                       print "<tr>";
+                       $col="bgcolor='$Header::table2colour'";
                } else {
-                       print "<tr bgcolor='$Header::table1colour'>";
+                       print "<tr>";
+                       $col="bgcolor='$Header::table1colour'";
                }
 
                print <<END
-<td align='center'>$entries{$key}->{IPADDR}</td>
-<td align='center'>$entries{$key}->{ETHER}</td>
-<td align='center'>&nbsp;$hostname </td>
-<td align='center'>
+<td align='center' $col>$entries{$key}->{IPADDR}</td>
+<td align='center' $col>$entries{$key}->{ETHER}</td>
+<td align='center' $col>&nbsp;$hostname </td>
+<td align='center' $col>
 END
                ;
 
@@ -493,7 +500,7 @@ END
                }
 
                print <<END
-<td align='center'>
+<td align='center' $col>
        <form method='post' name='frmd$id' action='$ENV{'SCRIPT_NAME'}'>
        <input type='hidden' name='ACTION' value='add' />
        <input type='hidden' name='SOURCE_IP' value='' />
diff --git a/html/cgi-bin/wirelessclient.cgi b/html/cgi-bin/wirelessclient.cgi
new file mode 100644 (file)
index 0000000..a2d0273
--- /dev/null
@@ -0,0 +1,709 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2012  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/>.       #
+#                                                                             #
+###############################################################################
+
+# DEVICE,ENABLED,MODE,WPA_MODE,SSID,PSK,PRIO
+# wlan0,on,WPA2,,Use This One Mum,ThisIsTheKey,2
+
+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);
+
+# Files used
+my $setting = "${General::swroot}/main/settings";
+our $datafile = "${General::swroot}/ethernet/wireless";
+
+my %color = ();
+my %mainsettings = ();
+&General::readhash("${General::swroot}/main/settings", \%mainsettings);
+&General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color);
+
+our %settings = ();
+our %netsettings = ();
+
+$settings{'ID'} = '';
+$settings{'INTERFACE'} = '';
+$settings{'ENABLED'} = '';
+$settings{'ENCRYPTION'} = '';
+$settings{'WPA_MODE'} = '';
+$settings{'SSID'} = '';
+$settings{'PSK'} = '';
+$settings{'PRIO'} = '';
+
+$settings{'ACTION'} = '';              # add/edit/remove
+$settings{'ID'} = '';                  # point record for ACTION
+
+my $errormessage = '';
+my $warnmessage = '';
+
+&Header::showhttpheaders();
+
+#Get GUI values
+&Header::getcgihash(\%settings);
+
+# Load multiline data
+our @configs = ();
+if (open(FILE, "$datafile")) {
+    @configs = <FILE>;
+    close (FILE);
+}
+
+&General::readhash("${General::swroot}/main/settings", \%settings);
+&General::readhash("${General::swroot}/ethernet/settings", \%netsettings);
+
+# Toggle enable/disable field.
+if ($settings{'ACTION'} eq $Lang::tr{'toggle enable disable'}) {
+       my @update;
+
+       foreach my $line (@configs) {
+               chomp($line);
+               my @config = split(/\,/, $line);
+
+               # Update the entry with the matching ID.
+               if ($config[0] eq $settings{'ID'}) {
+                       # Toggle enabled/disabled status.
+
+                       if ($config[2] eq 'on') {
+                               $config[2] = 'off';
+                       } else {
+                               $config[2] = 'on';
+                       }
+
+                       $line = join(',', @config);
+               }
+
+               push(@update, $line."\n");
+       }
+
+    # Save updated configuration settings.
+    open(FILE, ">$datafile") or die 'wlan client datafile error';
+    print FILE @update;
+    close(FILE);
+
+       @configs = @update;
+
+       # Update configuration files.
+       &BuildConfiguration();
+
+       # Reset ACTION.
+       $settings{'ACTION'} = '';
+}
+
+if ($settings{'ACTION'} eq $Lang::tr{'add'}) {
+       # Validate input data.
+       $errormessage = ValidateInput("add");
+
+       unless ($errormessage) {
+               # Search for the next free id.
+               my $next_id = NextID();
+
+               my @config = ($next_id);
+               push(@config, $settings{'INTERFACE'});
+               push(@config, $settings{'ENABLED'});
+               push(@config, $settings{'ENCRYPTION'});
+               push(@config, $settings{'WPA_MODE'});
+               push(@config, $settings{'SSID'});
+               push(@config, $settings{'PSK'});
+               push(@config, $settings{'PRIO'});
+
+               # Add the new configuration and write all the stuff to the configuration file.
+               my $line = join(',', @config) . "\n";
+               push(@configs, $line);
+
+               # Save updated configuration settings.
+               open(FILE, ">$datafile") or die 'wlan client datafile error';
+               print FILE @configs;
+               close(FILE);
+
+               # Update configuration files.
+               &BuildConfiguration();
+
+               # Reset ACTION.
+               $settings{'ACTION'} = '';
+       }
+}
+
+if ($settings{'ACTION'} eq $Lang::tr{'edit'}) {
+       foreach my $line (@configs) {
+               chomp($line);
+               my @config = split(/\,/, $line);
+
+               if ($config[0] eq $settings{'ID'}) {
+                       $settings{'ID'}         = $config[0];
+                       $settings{'INTERFACE'}  = $config[1];
+                       $settings{'ENABLED'}    = $config[2];
+                       $settings{'ENCRYPTION'} = $config[3];
+                       $settings{'WPA_MODE'}   = $config[4];
+                       $settings{'SSID'}       = $config[5];
+                       $settings{'PSK'}        = $config[6];
+                       $settings{'PRIO'}       = $config[7];
+               }
+       }
+}
+
+if ($settings{'ACTION'} eq $Lang::tr{'update'}) {
+       $errormessage = ValidateInput("update");
+
+       unless ($errormessage) {
+               my @update;
+               foreach my $line (@configs) {
+                       chomp($line);
+                       my @config = split(/\,/, $line);
+
+                       # Update the entry with the matching ID.
+                       if ($config[0] eq $settings{'ID'}) {
+                               # Update all configuration settings.
+                               # ID and INTERFACE cannot be changed.
+                               $config[2] = $settings{'ENABLED'};
+                               $config[3] = $settings{'ENCRYPTION'};
+                               $config[4] = $settings{'WPA_MODE'};
+                               $config[5] = $settings{'SSID'};
+                               $config[6] = $settings{'PSK'};
+                               $config[7] = $settings{'PRIO'};
+
+                               $line = join(',', @config);
+                       }
+
+                       push(@update, $line."\n");
+               }
+
+               # Save updated configuration settings.
+               open(FILE, ">$datafile") or die 'wlan client datafile error';
+               print FILE @update;
+               close(FILE);
+
+               @configs = @update;
+
+               # Update configuration files.
+               &BuildConfiguration();
+
+               # Reset ACTION.
+               $settings{'ACTION'} = '';
+       }
+}
+
+if ($settings{'ACTION'} eq $Lang::tr{'remove'}) {
+       my @update;
+
+       foreach my $line (@configs) {
+               chomp($line);
+               my @config = split(/\,/, $line);
+
+               # Skip the to be removed entry.
+               if ($config[0] eq $settings{'ID'}) {
+                       next;
+               }
+
+               push(@update, $line."\n");
+       }
+
+    # Save updated configuration settings.
+    open(FILE, ">$datafile") or die 'wlan client datafile error';
+    print FILE @update;
+    close(FILE);
+
+       @configs = @update;
+
+       # Update configuration files.
+       &BuildConfiguration();
+
+       # Reset ACTION.
+       $settings{'ACTION'} = '';
+}
+
+if ($settings{'ACTION'} eq '') { # First launch from GUI
+       &showMainBox();
+} else {
+       # Action has been set, so show the edit box.
+       &showEditBox();
+}
+
+sub showMainBox() {
+       &Header::openpage($Lang::tr{'wlan client configuration'}, 1, '');
+       &Header::openbigbox('100%', 'left', '', $errormessage);
+
+       &Header::openbox('100%', 'left', $Lang::tr{'wlan client configuration'});
+
+       print <<END;
+               <form method='POST' action='$ENV{'SCRIPT_NAME'}' style='text-align: center;'>
+                       <input type='submit' name='ACTION' value='$Lang::tr{'wlan client new network'}' />
+               </form>
+
+               <br><hr><br>
+
+               <table width="100%" class='tbl'>
+                       <tr>
+                               <th align='center'>$Lang::tr{'wlan client ssid'}</th>
+                               <th align='center'>$Lang::tr{'wlan client encryption'}</th>
+                               <th align='center'>$Lang::tr{'priority'}</th>
+                               <th></th>
+                               <th></th>
+                               <th></th>
+                       </tr>
+END
+
+       #
+       # Print each line of @configs list
+       #
+
+       my $key = 0;
+       my $col="";
+       foreach my $line (@configs) {
+               # Skip commented lines.
+               my $firstchar = substr($line, 0, 1);
+               next if ($firstchar eq "#");
+
+               chomp($line);
+               my @config = split(/\,/,$line);
+
+               #Choose icon for checkbox
+               my $gif = '';
+               my $gdesc = '';
+               if ($config[2] eq 'on' ) {
+                       $gif = 'on.gif';
+                       $gdesc = $Lang::tr{'click to disable'};
+               } else {
+                       $gif = 'off.gif';
+                       $gdesc = $Lang::tr{'click to enable'}; 
+               }
+
+               # Colorize each line
+               if ($key % 2) {
+                       print "<tr>";
+                       $col="bgcolor='$color{'color20'}'";
+               } else {
+                       print "<tr>";
+                       $col="bgcolor='$color{'color22'}'";
+               }
+
+               my $encryption_mode = $Lang::tr{'unknown'};
+               if ($config[3] eq "NONE") {
+                       $encryption_mode = $Lang::tr{'wlan client encryption none'};
+               } elsif ($config[3] eq "WEP") {
+                       $encryption_mode = $Lang::tr{'wlan client encryption wep'};
+               } elsif ($config[3] eq "WPA") {
+                       $encryption_mode = $Lang::tr{'wlan client encryption wpa'};
+               } elsif ($config[3] eq "WPA2") {
+                       $encryption_mode = $Lang::tr{'wlan client encryption wpa2'};
+               }
+
+               if (($config[3] eq "WPA") || ($config[3] eq "WPA2")) {
+                       my $wpa_pairwise = "$Lang::tr{'wlan client ccmp'} $Lang::tr{'wlan client and'} $Lang::tr{'wlan client tkip'}";
+                       my $wpa_group = "$Lang::tr{'wlan client ccmp'} $Lang::tr{'wlan client and'} $Lang::tr{'wlan client tkip'}";
+
+                       if ($config[4] eq "CCMP-CCMP") {
+                               $wpa_pairwise = $Lang::tr{'wlan client ccmp'};
+                               $wpa_group = $Lang::tr{'wlan client ccmp'};
+                       } elsif ($config[4] eq "CCMP-TKIP") {
+                               $wpa_pairwise = $Lang::tr{'wlan client ccmp'};
+                               $wpa_group = $Lang::tr{'wlan client tkip'};
+                       } elsif ($config[4] eq "TKIP-TKIP") {
+                               $wpa_pairwise = $Lang::tr{'wlan client tkip'};
+                               $wpa_group = $Lang::tr{'wlan client tkip'};
+                       }
+
+                       $encryption_mode .= "<hr>";
+                       $encryption_mode .= "<strong>$Lang::tr{'wlan client pairwise key algorithm'}</strong>: ";
+                       $encryption_mode .= $wpa_pairwise;
+                       $encryption_mode .= "<br>";
+                       $encryption_mode .= "<strong>$Lang::tr{'wlan client group key algorithm'}</strong>: ";
+                       $encryption_mode .= $wpa_group;
+               }
+
+               print <<END;
+                               <td align='center' $col>$config[5]</td>
+                               <td align='center' $col>$encryption_mode</td>
+                               <td align='center' $col>$config[7]</td>
+                               <td align='center' width='5%' $col>
+                                       <form method='post' action='$ENV{'SCRIPT_NAME'}'>
+                                               <input type='hidden' name='ACTION' value='$Lang::tr{'toggle enable disable'}' />
+                                               <input type='image' name='$Lang::tr{'toggle enable disable'}' src='/images/$gif' alt='$gdesc' title='$gdesc' />
+                                               <input type='hidden' name='ID' value='$config[0]' />
+                                       </form>
+                               </td>
+                               <td align='center' width='5%' $col>
+                                       <form method='post' 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='ID' value='$config[0]' />
+                                       </form>
+                               </td>
+                               <td align='center' width='5%' $col>
+                                       <form method='post' 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='ID' value='$config[0]' />
+                                       </form>
+                               </td>
+                       </tr>
+END
+               $key++;
+       }
+       print "</table>";
+
+       # If table contains entries, print 'Key to action icons'
+       if ($key) {
+               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/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();
+
+       # Show status box.
+       &ShowStatus();
+
+       &Header::closebigbox();
+       &Header::closepage();
+}
+
+sub showEditBox() {
+       &Header::openpage($Lang::tr{'wlan client configuration'}, 1, '');
+       &Header::openbigbox('100%', 'left', '', $errormessage);
+
+       if ($errormessage) {
+               &Header::openbox('100%', 'left', $Lang::tr{'error messages'});
+               print "<font class='base'>$errormessage&nbsp;</font>";
+               &Header::closebox();
+       }
+
+       my $buttontext = $Lang::tr{'add'};
+       if ($settings{'ID'} ne '') {
+               $buttontext = $Lang::tr{'update'};
+               &Header::openbox('100%', 'left', $Lang::tr{'wlan client edit entry'});
+       } else {
+               &Header::openbox('100%', 'left', $Lang::tr{'wlan client new entry'});
+               $settings{'ENABLED'} = 'on';
+       }
+       my $action = $buttontext;
+
+       my %checked = ();
+       $checked{'ENABLED'} = ($settings{'ENABLED'} ne 'on' ) ? '' : "checked='checked'";
+
+       my %selected = ();
+       $selected{'ENCRYPTION'} = ();
+       $selected{'ENCRYPTION'}{'NONE'} = '';
+       $selected{'ENCRYPTION'}{'WPA2'} = '';
+       $selected{'ENCRYPTION'}{'WPA'} = '';
+       $selected{'ENCRYPTION'}{'WEP'} = '';
+       $selected{'ENCRYPTION'}{$settings{'ENCRYPTION'}} = "selected='selected'";
+
+       $selected{'WPA_MODE'} = ();
+       $selected{'WPA_MODE'}{''} = '';
+       $selected{'WPA_MODE'}{'CCMP-CCMP'} = '';
+       $selected{'WPA_MODE'}{'CCMP-TKIP'} = '';
+       $selected{'WPA_MODE'}{'TKIP-TKIP'} = '';
+       $selected{'WPA_MODE'}{$settings{'WPA_MODE'}} = "selected='selected'";
+
+       $selected{'PRIO'} = ();
+       $selected{'PRIO'}{'0'} = '';
+       $selected{'PRIO'}{'1'} = '';
+       $selected{'PRIO'}{'2'} = '';
+       $selected{'PRIO'}{'3'} = '';
+       $selected{'PRIO'}{'4'} = '';
+       $selected{'PRIO'}{$settings{'PRIO'}} = "selected='selected'";
+
+       print <<END;
+               <form method='POST' action='$ENV{'SCRIPT_NAME'}'>
+                       <input type='hidden' name='ID' value='$settings{'ID'}'>
+
+                       <table width='100%'>
+                               <tr>
+                                       <td class='base' width='20%'>$Lang::tr{'wlan client ssid'}:</td>
+                                       <td width='40%'><input type='text' name='SSID' value="$settings{'SSID'}" size='25'/></td>
+                                       <td class='base' width='10%'>$Lang::tr{'enabled'}</td>
+                                       <td width='30%'><input type='checkbox' name='ENABLED' $checked{'ENABLED'} /></td>
+                               </tr>
+                               <tr>
+                                       <td class='base' width='20%'>$Lang::tr{'wlan client encryption'}:</td>
+                                       <td width='40%'>
+                                               <select name='ENCRYPTION'>
+                                                       <option value="NONE" $selected{'ENCRYPTION'}{'NONE'}>$Lang::tr{'wlan client encryption none'}</option>
+                                                       <option value="WPA2" $selected{'ENCRYPTION'}{'WPA2'}>$Lang::tr{'wlan client encryption wpa2'}</option>
+                                                       <option value="WPA"  $selected{'ENCRYPTION'}{'WPA'}>$Lang::tr{'wlan client encryption wpa'}</option>
+                                                       <option value="WEP"  $selected{'ENCRYPTION'}{'WEP'}>$Lang::tr{'wlan client encryption wep'}</option>                                                    
+                                               </select>
+                                       </td>
+                                       <td colspan="2" width='40%'></td>
+                               </tr>
+                               <tr>
+                                       <td class='base' width='20%'>$Lang::tr{'wlan client psk'}:&nbsp;</td>
+                                       <td width='40%'><input type='password' name='PSK' value="$settings{'PSK'}" size='25'/></td>
+                                       <td colspan="2" width='40%'></td>
+                               </tr>
+                       </table>
+
+                       <br>
+                       <hr>
+                       
+                       <strong>
+                               $Lang::tr{'wlan client advanced settings'}:
+                       </strong>
+
+                       <table width='100%'>
+                               <tr>
+                                       <td class='base' width='20%'>
+                                               $Lang::tr{'wlan client wpa mode'}:
+                                       </td>
+                                       <td width='40%'>
+                                               <select name='WPA_MODE'>
+                                                       <option value="" $selected{'WPA_MODE'}{''}>$Lang::tr{'wlan client wpa mode all'}</option>
+                                                       <option value="CCMP-CCMP" $selected{'WPA_MODE'}{'CCMP-CCMP'}>$Lang::tr{'wlan client wpa mode ccmp ccmp'}</option>
+                                                       <option value="CCMP-TKIP" $selected{'WPA_MODE'}{'CCMP-TKIP'}>$Lang::tr{'wlan client wpa mode ccmp tkip'}</option>
+                                                       <option value="TKIP-TKIP" $selected{'WPA_MODE'}{'TKIP-TKIP'}>$Lang::tr{'wlan client wpa mode tkip tkip'}</option>
+                                               </select>
+                                       </td>
+                                       <td colspan="2" width='40%'>
+                                               <em>($Lang::tr{'wlan client pairwise key group key'})</em>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td class='base' width='20%'>
+                                               $Lang::tr{'priority'}:
+                                       </td>
+                                       <td width='40%'>
+                                               <select name='PRIO'>
+                                                       <option value="0" $selected{'PRIO'}{'0'}>0 ($Lang::tr{'most preferred'})</option>
+                                                       <option value="1" $selected{'PRIO'}{'1'}>1</option>
+                                                       <option value="2" $selected{'PRIO'}{'2'}>2</option>
+                                                       <option value="3" $selected{'PRIO'}{'3'}>3</option>
+                                                       <option value="4" $selected{'PRIO'}{'4'}>4 ($Lang::tr{'least preferred'})</option>
+                                               </select>
+                                       </td>
+                                       <td colspan="2" width='40%'></td>
+                               </tr>
+                       </table>
+
+                       <br>
+                       <hr>
+
+                       <table width='100%'>
+                               <tr>
+                                       <td width='50%' align='center'>
+                                               <input type='hidden' name='ACTION' value='$action' />
+                                               <input type='submit' name='SUBMIT' value='$buttontext' />
+                                       </td>
+                               </tr>
+                       </table>
+               </form>
+END
+       &Header::closebox();
+
+       &Header::closebigbox();
+       &Header::closepage();
+}
+
+sub ShowStatus() {
+       my $device = $netsettings{'RED_DEV'};
+
+       # Exit if no device is configured.
+       return if ($device eq "");
+
+       # Exit if wpa_supplicant is not running on this interface.
+       #return if (! -e "/var/run/wpa_supplicant/$device");
+
+       open(FILE, "/usr/local/bin/wirelessclient status |");
+
+       my %status = ();
+       while (<FILE>) {
+               chomp($_);
+
+               my ($key, $value) = split("=", $_);
+               $status{$key} = $value;
+       }
+
+       close(FILE);
+
+       # End here, if no there is no input.
+       return if (!keys %status);
+
+       &Header::openbox('100%', 'left', $Lang::tr{'status'});
+
+       if ($status{'ssid'} eq "") {
+               print "<p>$Lang::tr{'wlan client disconnected'}</p>";
+
+       } else {
+               print <<END;
+                       <table width='100%'>
+                               <tr>
+                                       <td width='20%'>
+                                               $Lang::tr{'wlan client ssid'}
+                                       </td>
+                                       <td width='80%'>
+                                               $status{'ssid'}
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td width='20%'>
+                                               $Lang::tr{'wlan client bssid'}
+                                       </td>
+                                       <td width='80%'>
+                                               $status{'bssid'}
+                                       </td>
+                               </tr>
+END
+
+               if (($status{'pairwise_cipher'} ne "NONE") || ($status{'group_cipher'} ne "NONE")) {
+                       print <<END;
+                               <tr>
+                                       <td colspan='2'>
+                                               <strong>$Lang::tr{'wlan client encryption wpa'}</strong>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td width='20%'>
+                                               $Lang::tr{'wlan client pairwise cipher'}
+                                       </td>
+                                       <td width='80%'>
+                                               $status{'pairwise_cipher'}
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td width='20%'>
+                                               $Lang::tr{'wlan client group cipher'}
+                                       </td>
+                                       <td width='80%'>
+                                               $status{'group_cipher'}
+                                       </td>
+                               </tr>
+END
+               }
+
+               print "</table>";
+       }
+
+       &Header::closebox();
+}
+
+sub BuildConfiguration() {
+       system("/usr/local/bin/wirelessclient restart");
+}
+
+sub NextID() {
+       my $highest_id = 0;
+       foreach my $line (@configs) {
+               # Skip commented lines.
+               my $firstchar = substr($line, 0, 1);
+               next if ($firstchar eq "#");
+
+               my @config = split(/\,/, $line);
+               if ($config[0] > $highest_id) {
+                       $highest_id = $config[0];
+               }
+       }
+
+       return $highest_id + 1;
+}
+
+sub DuplicateSSID($) {
+       my $ssid = shift;
+
+       foreach my $line (@configs) {
+               # Skip commented lines.
+               my $firstchar = substr($line, 0, 1);
+               next if ($firstchar eq "#");
+
+               my @config = split(/\,/, $line);
+               if ($config[5] eq $ssid) {
+                       return 1;
+               }
+       }
+
+       return 0;
+}
+
+sub ValidKeyLength($$) {
+       my $algo = shift;
+       my $key = shift;
+
+       my $key_length = length($key);
+
+       if ($algo eq "WEP") {
+               # Key must be 13 or 26 characters.
+               if (($key_length == 13) || ($key_length == 26)) {
+                       return 0;
+               }
+
+               return 1;
+
+       } elsif (($algo eq "WPA2") || ($algo eq "WPA")) {
+               # Key must be between 8 and 63 chars.
+               if (($key_length >= 8) && ($key_length <= 63)) {
+                       return 0;
+               }
+
+               return 1;
+       }
+
+       # Say okay for all other algorithms.
+       return 0;
+}
+
+sub ValidateInput($) {
+       my $mode = shift;
+
+       # Check for duplicate SSIDs.
+       if (($mode eq "add") && (DuplicateSSID($settings{'SSID'}))) {
+               return "$Lang::tr{'wlan client duplicate ssid'}: $settings{'SSID'}";
+
+       # Check for invalid key length.
+       } elsif (ValidKeyLength($settings{'ENCRYPTION'}, $settings{'PSK'})) {
+               return "$Lang::tr{'wlan client invalid key length'}";
+
+       }
+
+       # Reset WPA mode, if WPA(2) is not selected.
+       if (($settings{'ENCRYPTION'} ne "WPA") && ($settings{'ENCRYPTION'} ne "WPA2")) {
+               $settings{'WPA_MODE'} = '';
+       }
+
+       if ($settings{'ENABLED'} ne "") {
+               $settings{'ENABLED'} = 'on';
+       } else {
+               $settings{'ENABLED'} = 'off';
+       }
+
+       return;
+}
index 58c6376feac996a2bdb018370bdc0e63ce9cf48e..50806ac787b219685e682cd1d01d8aaeb1b50dab 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2005-2013  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        #
@@ -35,9 +35,10 @@ require '/var/ipfire/header.pl';
 my $debug = 0;
 my $status = '';
 my $errormessage = '';
-my $status_started = "<td align='center' width='75%' bgcolor='${Header::colourgreen}'><font color='white'><strong>$Lang::tr{'running'}</strong></font></td></tr>";
-my $status_stopped = "<td align='center' width='75%' bgcolor='${Header::colourred}'><font color='white'><strong>$Lang::tr{'stopped'}</strong></font></td></tr>";
-
+my $status_started = "<td align='center' bgcolor='${Header::colourgreen}'><font color='white'><strong>$Lang::tr{'running'}</strong></font></td>";
+my $status_stopped = "<td align='center' bgcolor='${Header::colourred}'><font color='white'><strong>$Lang::tr{'stopped'}</strong></font></td>";
+my $count=0;
+my $col='';
 # get rid of used only once warnings
 my @onlyonce = ( $Header::colourgreen, $Header::colourred );
 undef @onlyonce;
@@ -151,12 +152,9 @@ if ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'save'}" ){
 }elsif ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'stop'}" ){
        system("/usr/local/bin/wlanapctrl stop >/dev/null 2>&1");
        $memory=0;
-}elsif ( $wlanapsettings{'ACTION'} eq "$Lang::tr{'restart'}" ){
-       system("/usr/local/bin/wlanapctrl restart >/dev/null 2>&1");
-       pid();
 }
 
-&Header::openpage('Wireless LAN', 1, '', '');
+&Header::openpage('', 1, '', '');
 &Header::openbigbox('100%', 'left', '', $errormessage);
 
 if ( $errormessage ){
@@ -260,7 +258,25 @@ if ( -d '/sys/class/net/mon.'.$wlanapsettings{'INTERFACE'} ) {
        $monwlaninterface =  'mon.'.$wlanapsettings{'INTERFACE'};
 }
 
-my @channellist_cmd = `iwlist $monwlaninterface channel 2>/dev/null`;
+my @channellist_cmd;
+my @channellist;
+
+if ( $wlanapsettings{'DRIVER'} eq 'NL80211' ){
+my $wiphy = `iw dev $wlanapsettings{'INTERFACE'} info | grep wiphy | cut -d" " -f2`;
+chomp $wiphy;
+
+@channellist_cmd = `iw phy phy$wiphy info | grep " MHz \\\[" | grep -v "(disabled)" | grep -v "no IBSS" | grep -v "passive scanning" 2>/dev/null`;
+# get available channels
+
+my @temp;
+foreach (@channellist_cmd){
+$_ =~ /(.*) \[(\d+)(.*)\]/;
+$channel = $2;chomp $channel;
+if ( $channel =~ /\d+/ ){push(@temp,$channel);}
+}
+@channellist = @temp;
+} else {
+@channellist_cmd = `iwlist $monwlaninterface channel|tail -n +2 2>/dev/null`;
 # get available channels
 
 my @temp;
@@ -269,7 +285,8 @@ $_ =~ /(.*)Channel (\d+)(.*):/;
 $channel = $2;chomp $channel;
 if ( $channel =~ /\d+/ ){push(@temp,$channel);}
 }
-my @channellist = @temp;
+@channellist = @temp;
+}
 
 my @countrylist_cmd = `regdbdump /usr/lib/crda/regulatory.bin 2>/dev/null`;
 # get available country codes
@@ -306,64 +323,48 @@ $selected{'DEBUG'}{$wlanapsettings{'DEBUG'}} = "selected='selected'";
 #
 &Header::openbox('100%', 'center', "WLAN AP");
 print <<END
-<table width='95%' cellspacing='0'>
+<table width='80%' cellspacing='1' class='tbl'>
 END
 ;
 
 if ( $wlan_card_status ne '' ){
-       print "<tr><td bgcolor='$color{'color20'}' colspan='3' align='left'><strong>$Lang::tr{'wlanap wlan services'}</strong></td></tr>";
-       print "<tr><td colspan='1' class='base'>$Lang::tr{'wlanap wlan card'} ($wlanapsettings{'DRIVER'})</td>";
+       print "<tr><th align='left' width='50%'><strong>$Lang::tr{'service'}</strong></th><th width='22%'>Status</th><th width='10%'>PID</th><th width='15%'>$Lang::tr{'memory'}</th><th colspan='2'width='5%'>$Lang::tr{'action'}</th></tr>";
+       print "<tr><td class='base'>$Lang::tr{'wlanap wlan card'} ($wlanapsettings{'DRIVER'})</td>";
        print $wlan_card_status eq 'up' ? $status_started : $status_stopped;
-       print "<tr><td colspan='1' class='base'>$Lang::tr{'wlanap access point'}</td>";
+       print"<td colspan='4'></td></tr>";
+       print "<tr><td class='base' bgcolor='$color{'color22'}'>$Lang::tr{'wlanap access point'}</td>";
        print $wlan_ap_status eq 'up' ? $status_started : $status_stopped;
+       if ( ($memory != 0) && (@pid[0] ne "///") ){
+               print "<td bgcolor='$color{'color22'}' align='center'>@pid[0]</td>";
+               print "<td bgcolor='$color{'color22'}' align='center'>$memory KB</td>";
+               print "<td bgcolor='$color{'color22'}'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='$Lang::tr{'start'}' /><input type='image' alt='$Lang::tr{'start'}' title='$Lang::tr{'start'}' src='/images/go-up.png' /></form></td>";
+               print "<td bgcolor='$color{'color22'}'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='$Lang::tr{'stop'}' /><input type='image' alt='$Lang::tr{'stop'}' title='$Lang::tr{'stop'}' src='/images/go-down.png' /></form></td>";
+       }else{
+               print"<td colspan='2' bgcolor='$color{'color22'}'></td>";
+               print "<td bgcolor='$color{'color22'}'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='$Lang::tr{'start'}' /><input type='image' alt='$Lang::tr{'start'}' title='$Lang::tr{'start'}' src='/images/go-up.png' /></form></td>";
+               print "<td bgcolor='$color{'color22'}'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='$Lang::tr{'stop'}' /><input type='image' alt='$Lang::tr{'stop'}' title='$Lang::tr{'stop'}' src='/images/go-down.png' /></form></td>";
+       }
 
 }else{
-       print "<tr><td colspan='2' class='base'>$message";
+       print "<tr><td class='base'>$message";
 }
        print "</table>";
 
-if ( ($memory != 0) && (@pid[0] ne "///") && ($wlan_card_status ne '') ){
-       print "<table width='95%' cellspacing='0' border='0'>";
-       print "<tr>";
-       print "<td align='center'></td>";
-       print "<td bgcolor='$color{'color20'}' align='center'><strong>PID</strong></td>";
-       print "<td bgcolor='$color{'color20'}' align='center'><strong>$Lang::tr{'memory'}</strong></td>";
+if ( $wlan_card_status eq '' ){
+       print "<br />";
+       print "<table width='80%' cellspacing='0' border='0'>";
+       print "<tr align='center'>";
+       print "<td colspan='4'></td>";
        print "</tr>";
-       print "<tr>";
-       print "<td width='35%' align='right'><strong>hostapd</strong>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
-       print "<td bgcolor='$color{'color22'}' align='center'>@pid[0]</td>";
-       print "<td bgcolor='$color{'color22'}' align='center'>$memory KB</td>";
+       print "<tr align='center'>";
+       print "<td width='40%'>&nbsp;</td>";
+       print "<td width='20%'><form method='post' action='/cgi-bin/wlanap.cgi'><input type='submit' name='ACTION' value='$Lang::tr{'wlanap del interface'}' /></form></td>";
+       print "<td width='20%'></td>";
+       print "<td width='20%'></td>";
        print "</tr>";
        print "</table>";
 }
 
-if ( $wlan_card_status ne '' ){
-print "<br />";
-print "<table width='95%' cellspacing='0' border='0'>";
-print "<tr align='center'>";
-print "</tr>";
-print "<tr align='center'>";
-print "<td width='40%'>&nbsp;</td>";
-print "<td width='20%'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='$Lang::tr{'start'}' /><input type='image' alt='$Lang::tr{'start'}' title='$Lang::tr{'start'}' src='/images/go-up.png' /></form></td>";
-print "<td width='20%'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='$Lang::tr{'stop'}' /><input type='image' alt='$Lang::tr{'stop'}' title='$Lang::tr{'stop'}' src='/images/go-down.png' /></form></td>";
-print "<td width='20%'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='$Lang::tr{'restart'}' /><input type='image' alt='$Lang::tr{'restart'}' title='$Lang::tr{'restart'}' src='/images/view-refresh.png' /></form></td>";
-print "</tr>";
-print "</table>";
-}else{
-print "<br />";
-print "<table width='95%' cellspacing='0' border='0'>";
-print "<tr align='center'>";
-print "<td colspan='4'><hr size='1'></td>";
-print "</tr>";
-print "<tr align='center'>";
-print "<td width='40%'>&nbsp;</td>";
-print "<td width='20%'><form method='post' action='/cgi-bin/wlanap.cgi'><input type='submit' name='ACTION' value='$Lang::tr{'wlanap del interface'}' /></form></td>";
-print "<td width='20%'></td>";
-print "<td width='20%'></td>";
-print "</tr>";
-print "</table>";
-}
-
 if ( $wlan_card_status eq '' ){
        &Header::closebox();
        &Header::closebigbox();
@@ -371,13 +372,25 @@ if ( $wlan_card_status eq '' ){
        exit 0;
 }
 print <<END
-<br />
+<br><br>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
-<table width='95%' cellspacing='0'>
-<tr><td bgcolor='$color{'color20'}' colspan='4' align='left'><strong>$Lang::tr{'wlanap wlan settings'}</strong>
-<tr><td width='25%' class='base'>SSID:&nbsp;</td><td class='base' colspan='3'><input type='text' name='SSID' size='40' value='$wlanapsettings{'SSID'}' /></td></tr>
+<table width='80%' cellspacing='0' class='tbl' border='0'>
+<tr><th bgcolor='$color{'color20'}' colspan='4' align='left'><strong>$Lang::tr{'wlanap wlan settings'}</strong></th></tr>
+<tr><td colspan='4'><br></td></tr>
+<tr><td width='25%' class='base'>SSID:&nbsp;</td><td class='base' colspan='3'><input type='text' name='SSID' size='30' value='$wlanapsettings{'SSID'}' /></td></tr>
 <!--SSID Broadcast: on => HIDESSID: off -->
 <tr><td width='25%' class='base'>SSID Broadcast:&nbsp;</td><td class='base' colspan='3'>on <input type='radio' name='HIDESSID' value='off' $checked{'HIDESSID'}{'off'} /> | <input type='radio' name='HIDESSID' value='on' $checked{'HIDESSID'}{'on'} /> off</td></tr>
+
+
+<tr><td width='25%' class='base'>$Lang::tr{'wlanap country'}:&nbsp;</td><td class='base' colspan='3'>
+       <select name='COUNTRY'>
+END
+;
+foreach $country (@countrylist){
+       print "<option $selected{'COUNTRY'}{$country}>$country</option>";
+}
+print<<END
+</select></td></tr>
 <tr><td width='25%' class='base'>HW Mode:&nbsp;</td><td class='base' colspan='3'>
        <select name='HW_MODE'>
                <option value='a' $selected{'HW_MODE'}{'a'}>802.11a</option>
@@ -387,15 +400,6 @@ print <<END
                <option value='gn' $selected{'HW_MODE'}{'gn'}>802.11gn</option>
        </select>
 </td></tr>
-
-<tr><td width='25%' class='base'>$Lang::tr{'wlanap encryption'}:&nbsp;</td><td class='base' colspan='3'>
-       <select name='ENC'>
-               <option value='none' $selected{'ENC'}{'none'}>$Lang::tr{'wlanap none'}</option>
-               <option value='wpa1' $selected{'ENC'}{'wpa1'}>WPA1</option>
-               <option value='wpa2' $selected{'ENC'}{'wpa2'}>WPA2</option>
-               <option value='wpa1+2' $selected{'ENC'}{'wpa1+2'}>WPA1+2</option>
-       </select>
-</td></tr>
 END
 ;
 
@@ -417,18 +421,22 @@ END
 END
 ;
 }
-
-print <<END
-<tr><td width='25%' class='base'>$Lang::tr{'wlanap country'}:&nbsp;</td><td class='base' colspan='3'>
-       <select name='COUNTRY'>
+print<<END
+<tr><td colspan='4'><br></td></tr>
+<tr><td width='25%' class='base'>$Lang::tr{'wlanap encryption'}:&nbsp;</td><td class='base' colspan='3'>
+       <select name='ENC'>
+               <option value='none' $selected{'ENC'}{'none'}>$Lang::tr{'wlanap none'}</option>
+               <option value='wpa1' $selected{'ENC'}{'wpa1'}>WPA1</option>
+               <option value='wpa2' $selected{'ENC'}{'wpa2'}>WPA2</option>
+               <option value='wpa1+2' $selected{'ENC'}{'wpa1+2'}>WPA1+2</option>
+       </select>
+</td></tr>
+<tr><td width='25%' class='base'>Passphrase:&nbsp;</td><td class='base' colspan='3'><input type='text' name='PWD' size='30' value='$wlanapsettings{'PWD'}' /></td></tr>
+<tr><td colspan='4'><br></td></tr>
 END
 ;
-foreach $country (@countrylist){
-       print "<option $selected{'COUNTRY'}{$country}>$country</option>";
-}
-
 print <<END
-</select></td></tr>
+<tr><td width='25%' class='base'>HT Caps:&nbsp;</td><td class='base' colspan='3'><input type='text' name='HTCAPS' size='30' value='$wlanapsettings{'HTCAPS'}' /></td></tr>
 <tr><td width='25%' class='base'>Tx Power:&nbsp;</td><td class='base' colspan='3'>
 END
 ;
@@ -443,8 +451,6 @@ if ( $wlanapsettings{'DRIVER'} eq 'MADWIFI' ){
        print "<input type='text' name='TXPOWER' size='10' value='$wlanapsettings{'TXPOWER'}' /></td></tr>"
 }
 print <<END
-<tr><td width='25%' class='base'>Passphrase:&nbsp;</td><td class='base' colspan='3'><input type='text' name='PWD' size='63' value='$wlanapsettings{'PWD'}' /></td></tr>
-<tr><td width='25%' class='base'>HT Caps:&nbsp;</td><td class='base' colspan='3'><input type='text' name='HTCAPS' size='63' value='$wlanapsettings{'HTCAPS'}' /></td></tr>
 <tr><td width='25%' class='base'>Loglevel (hostapd):&nbsp;</td><td class='base' width='25%'>
        <select name='SYSLOGLEVEL'>
                <option value='0' $selected{'SYSLOGLEVEL'}{'0'}>0 ($Lang::tr{'wlanap verbose'})</option>
@@ -463,13 +469,17 @@ print <<END
                <option value='4' $selected{'DEBUG'}{'4'}>4 ($Lang::tr{'wlanap warnings'})</option>
        </select>
 </td></tr>
+<tr><td colspan='4'><br></td></tr>
 </table>
 END
 ;
 if ( $wlanapsettings{'INTERFACE'} =~ /green0/ ){
        print <<END
 <br />
-<table width='95%' cellspacing='0'>
+<table width='80%' cellspacing='0' class='tbl' border='1'>
+<tr>
+       <th colspan='3' align='left'>$Lang::tr{'mac filter'}</th>
+</tr>
 <td width='25%' class='base'>Mac Filter:&nbsp;</td><td class='base' width='25%'>
        <select name='MACMODE'>
                <option value='0' $selected{'MACMODE'}{'0'}>0 (off)</option>
@@ -488,7 +498,7 @@ END
 }
 print <<END
 <br />
-<table width='95%' cellspacing='0'>
+<table width='80%' cellspacing='0'>
 <tr><td align='center'>
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
        <input type='hidden' name='ACTION' value=$Lang::tr{'save'} />
@@ -497,25 +507,60 @@ print <<END
 </table>
 END
 ;
-
+my @status;
 if ( $wlanapsettings{'DRIVER'} eq 'MADWIFI' ){
-        $status =  `wlanconfig $wlanapsettings{'INTERFACE'} list`;
+        @status =  `wlanconfig $wlanapsettings{'INTERFACE'} list`;
 }
 if ( $wlanapsettings{'DRIVER'} eq 'NL80211' ){
-        $status =  `iw dev $wlanapsettings{'INTERFACE'} station dump`;
+        @status =  `iw dev $wlanapsettings{'INTERFACE'} info && iw dev $wlanapsettings{'INTERFACE'} station dump && echo ""`;
 }
 print <<END
 <br />
-<table width='95%' cellspacing='0'>
-<tr><td bgcolor='$color{'color20'}' colspan='2' align='left'><strong>$Lang::tr{'wlanap wlan status'}</strong></td></tr>
-<tr><td><pre>@channellist_cmd</pre></td><td><pre>@txpower_cmd</pre></td></tr>
-<tr><td colspan='2'><pre>$status</pre></td></tr>
-</table>
+<table width='80%' cellspacing='0' class='tbl'>
+<tr><th colspan='3' bgcolor='$color{'color20'}' align='left'><strong>$Lang::tr{'wlanap wlan status'}</strong></th></tr>
+END
+;
+
+for (my $i=0;$i<$#status;$i++){
+
+if (@status[$i]=~"^Station ") { $count++; }
+if ($count % 2){
+               $col="bgcolor='$color{'color20'}'";
+       }else{
+               $col="bgcolor='$color{'color22'}'";
+       }
+       print"<tr><td colspan='3' $col><pre>@status[$i]</pre></td></tr>";
+       if (! @status[$i]=~"^/t" ) { $count++; }
+}
+       $count++;
+
+foreach my $nr (@channellist_cmd){
+       if ($count % 2){
+               $col="bgcolor='$color{'color20'}'";
+       }else{
+               $col="bgcolor='$color{'color22'}'";
+       }
+       print"<tr><td colspan='3' $col>$nr</td></tr>";
+       $count++;
+}
+
+for (my $i=0;$i<$#txpower_cmd;$i=$i+2){
+       if ($count % 2){
+               $col="bgcolor='$color{'color20'}'";
+       }else{
+               $col="bgcolor='$color{'color22'}'";
+       }
+       print "<tr><td $col>@txpower_cmd[$i]</td></tr>";
+       $count++;
+}
+print "</table><br>";
+print <<END
 <br />
-<table width='95%' cellspacing='0'>
-<tr><td bgcolor='$color{'color20'}' align='left'><strong>WLan Clients</strong></td></tr>
+<table width='80%' cellspacing='0' class='tbl' border='0'>
+<tr><td bgcolor='$color{'color20'}' align='left'><strong>$Lang::tr{'wlan clients'}</strong></td></tr>
 <tr><td>&nbsp;<a href="/cgi-bin/wireless.cgi">$Lang::tr{'wlanap link wireless'}</a></td></tr>
 <tr><td>&nbsp;<a href="/cgi-bin/dhcp.cgi">$Lang::tr{'wlanap link dhcp'}</a></td></tr>
+<tr><td><br></td></tr>
 </table>
 END
 ;
@@ -535,6 +580,7 @@ driver=$wlanapsettings{'DRIVER_HOSTAPD'}
 interface=$wlanapsettings{'INTERFACE'}
 country_code=$wlanapsettings{'COUNTRY'}
 ieee80211d=1
+ieee80211h=1
 channel=$wlanapsettings{'CHANNEL'}
 END
 ;
diff --git a/html/cgi-bin/xtaccess.cgi b/html/cgi-bin/xtaccess.cgi
deleted file mode 100644 (file)
index 3fc2190..0000000
+++ /dev/null
@@ -1,377 +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 %cgiparams=();
-my %checked=();
-my %selected=();
-my $errormessage = '';
-my $filename = "${General::swroot}/xtaccess/config";
-my $aliasfile = "${General::swroot}/ethernet/aliases";
-my $changed = 'no';
-
-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();
-
-$cgiparams{'ENABLED'} = 'off';
-$cgiparams{'ACTION'} = '';
-$cgiparams{'SRC'} = '';
-$cgiparams{'DEST_PORT'} = '';
-$cgiparams{'REMARK'} ='';
-&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'}))
-       {
-               if ($cgiparams{'SRC'} ne '') {
-                       $errormessage = $Lang::tr{'source ip bad'}; }
-               else {
-                       $cgiparams{'SRC'} = '0.0.0.0/0'; }
-       }
-       unless($errormessage){ $errormessage = &General::validportrange($cgiparams{'DEST_PORT'},'dst'); }
-       if ( ! $errormessage)
-       {
-           $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'});
-
-               if($cgiparams{'EDITING'} eq 'no') {
-                       open(FILE,">>$filename") or die 'Unable to open config file.';
-                       flock FILE, 2;
-                       print FILE "$cgiparams{'PROTOCOL'},$cgiparams{'SRC'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},$cgiparams{'DEST'},$cgiparams{'REMARK'}\n";
-               } 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'},$cgiparams{'SRC'},$cgiparams{'DEST_PORT'},$cgiparams{'ENABLED'},$cgiparams{'DEST'},$cgiparams{'REMARK'}\n";
-                               } else { print FILE "$line"; }
-                       }
-               }
-               close(FILE);
-               undef %cgiparams;
-               $changed = 'yes';
-               &General::log($Lang::tr{'external access rule added'});
-               system('/usr/local/bin/setxtaccess');
-       } else {
-               # stay on edit mode if an error occur
-               if ($cgiparams{'EDITING'} ne 'no')
-               {
-                       $cgiparams{'ACTION'} = $Lang::tr{'edit'};
-                       $cgiparams{'ID'} = $cgiparams{'EDITING'};
-               }
-       }
-}
-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/setxtaccess');
-       &General::log($Lang::tr{'external access rule removed'});
-}
-if ($cgiparams{'ACTION'} eq $Lang::tr{'toggle enable disable'})
-{
-       open(FILE, ">$filename") or die 'Unable to open config file.';
-       flock FILE, 2;
-       my $id = 0;
-       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],$cgiparams{'ENABLE'},$temp[4],$temp[5]\n";
-               }
-       }
-       close(FILE);
-       system('/usr/local/bin/setxtaccess');
-}
-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'} = $temp[1];
-                       $cgiparams{'DEST_PORT'} = $temp[2];
-                       $cgiparams{'ENABLED'} = $temp[3];
-                       $cgiparams{'DEST'} = $temp[4];
-                       $cgiparams{'REMARK'} = $temp[5];
-               }
-       }
-}
-
-if ($cgiparams{'ACTION'} eq '')
-{
-       $cgiparams{'PROTOCOL'} = 'tcp';
-       $cgiparams{'DEST'} = '0.0.0.0';
-       $cgiparams{'ENABLED'} = 'on';
-}
-
-$selected{'PROTOCOL'}{'udp'} = '';
-$selected{'PROTOCOL'}{'tcp'} = '';
-$selected{'PROTOCOL'}{$cgiparams{'PROTOCOL'}} = "selected='selected'";
-
-$selected{'DEST'}{$cgiparams{'DEST'}} = "selected='selected'";
-
-$checked{'ENABLED'}{'off'} = '';
-$checked{'ENABLED'}{'on'} = '';
-$checked{'ENABLED'}{$cgiparams{'ENABLED'}} = "checked='checked'";
-
-&Header::openpage($Lang::tr{'external access 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 width='10%'>
-<select name='PROTOCOL'>
-<option value='udp' $selected{'PROTOCOL'}{'udp'}>UDP</option>
-<option value='tcp' $selected{'PROTOCOL'}{'tcp'}>TCP</option>
-</select>
-</td>
-<td class='base'><font color='${Header::colourred}'>$Lang::tr{'source network'}</font></td>
-<td><input type='text' name='SRC' value='$cgiparams{'SRC'}' size='32' /></td>
-<td class='base'><font color='${Header::colourred}'>$Lang::tr{'destination port'}:</font></td>
-<td><input type='text' name='DEST_PORT' value='$cgiparams{'DEST_PORT'}' size='5' /></td>
-</tr>
-</table>
-<table width='100%'>
-<tr>
-<td width='10%' class='base'>$Lang::tr{'enabled'}<input type='checkbox' name='ENABLED' $checked{'ENABLED'}{'on'} /></td>
-<td class='base'><font color='${Header::colourred}'>$Lang::tr{'destination ip'}:&nbsp;</font>
-<select name='DEST'>
-<option value='0.0.0.0' $selected{'DEST'}{'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{'DEST'}{$temp[0]}>$temp[0]";
-               if (defined $temp[2] and ($temp[2] ne '')) { print " ($temp[2])"; }
-               print "</option>\n";
-       }
-}
-close(ALIASES);
-print <<END
-</select>
-</td>
-</tr>
-</table>
-<table width='100%'>
-<tr>
-<td width ='10%' class='base'>
-<font class='boldbase'>$Lang::tr{'remark'}:</font>&nbsp;<img src='/blob.gif' alt='*' />
-</td>
-<td width='65%'>
-<input type='text' name='REMARK' value='$cgiparams{'REMARK'}' size='55' maxlength='50' />
-</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>
-<table width='100%'>
-<tr>
-<td class='base' width='30%'><img src='/blob.gif' alt ='*' align='top' />&nbsp;<font class='base'>$Lang::tr{'this field may be blank'}</font>
-</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='10%' class='boldbase' align='center'><b>$Lang::tr{'proto'}</b></td>
-<td width='20%' class='boldbase' align='center'><b>$Lang::tr{'source ip'}</b></td>
-<td width='20%' class='boldbase' align='center'><b>$Lang::tr{'destination ip'}</b></td>
-<td width='15%' class='boldbase' align='center'><b>$Lang::tr{'destination port'}</b></td>
-<td width='30%' class='boldbase' align='center'><b>$Lang::tr{'remark'}</b></td>
-<td width='5%' class='boldbase' colspan='3' align='center'><b>$Lang::tr{'action'}</b></td>
-</tr>
-END
-;
-
-# If something has happened re-read config
-if($cgiparams{'ACTION'} ne '' or $changed ne 'no')
-{
-       open(FILE, $filename) or die 'Unable to open config file.';
-       @current = <FILE>;
-       close(FILE);
-}
-my $id = 0;
-foreach my $line (@current)
-{
-       $id++;
-       chomp($line);
-       my @temp = split(/\,/,$line);
-       my $protocol = '';
-       my $gif = '';
-       my $gdesc = '';
-       my $toggle = '';
-       if ($temp[0] eq 'udp') {
-               $protocol = 'UDP'; }
-       else {
-               $protocol = 'TCP' }
-       if($cgiparams{'ACTION'} eq $Lang::tr{'edit'} && $cgiparams{'ID'} eq $id) {
-               print "<tr bgcolor='${Header::colouryellow}'>\n"; }
-       elsif ($id % 2) {
-               print "<tr bgcolor='$color{'color22'}'>\n"; }
-       else {
-               print "<tr bgcolor='$color{'color20'}'>\n"; }
-       if ($temp[3] 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'}; }
-       if ($temp[1] eq '0.0.0.0/0') {
-               $temp[1] = $Lang::tr{'caps all'}; }
-       # catch for 'old-style' rules file - assume default ip if
-       # none exists
-       if (!&General::validip($temp[4]) || $temp[4] eq '0.0.0.0') {
-               $temp[4] = 'DEFAULT IP'; }
-       $temp[5] = '' unless defined $temp[5];
-print <<END
-<td align='center'>$protocol</td>
-<td align='center'>$temp[1]</td>
-<td align='center'>$temp[4]</td>
-<td align='center'>$temp[2]</td>
-<td align='left'>&nbsp;$temp[5]</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' title='$gdesc' 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' title='$Lang::tr{'edit'}' 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' title='$Lang::tr{'remove'}' 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 xt access 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();
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 81ae7dc92d7733d76208a9bf201b015d6fa0d342..f33f7019e8d39a3dbf5afcc3f5d5236c16a40cc9 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-2014  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        #
 #                                                                             #
 ###############################################################################
 
-print "Status: 302 Moved\n";
+if (! -e "/var/ipfire/main/gpl_accepted" ) {
+       print "Status: 302 Moved Temporarily\n";
+       print "Location: /cgi-bin/gpl.cgi\n\n";
+       exit (0);
+}
+
+print "Status: 302 Moved Temporarily\n";
 print "Location: /cgi-bin/index.cgi\n\n";
diff --git a/html/html/redirect-templates/legacy/template.html b/html/html/redirect-templates/legacy/template.html
new file mode 100644 (file)
index 0000000..b5fb61e
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
+       <head>
+               <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
+               <title>ACCESS MESSAGE</title>
+       </head>
+       <body>
+               <table width="100%" height='100%' border="0">
+                       <tr>
+                               <td colspan='3' width='100%' height='130' align="center" background="<TMPL_VAR NAME="ADDRESS">/images/background.gif">
+                       <tr>
+                               <td width='10%'>
+                               <td align='center' bgcolor='#CC000000' width='80%'>
+                                       <font face="verdana, arial, sans serif" color="#FFFFFF" size="5">
+                                               <b><TMPL_VAR NAME="MSG_TEXT_1"></b>
+                                       </font>
+                               <td width='10%'>
+
+                       <TMPL_IF NAME="CATEGORY">
+                               <tr>
+                                       <td colspan='3' align='center'>
+                                               <font face="verdana, arial, sans serif" color="#CC000000" size="1">
+                                                       <b>[<TMPL_VAR NAME="CATEGORY">]</b>
+                                               </font>
+                       </TMPL_IF>
+
+                       <tr>
+                               <td colspan='3' align="center">
+                                       <font face="verdana, arial, sans serif" color="#000000" size="4">
+                                               <b><TMPL_VAR NAME="MSG_TEXT_2"></b>
+                                       </font>
+                                       <font face="verdana,arial,sans serif" color="#000000" size="2">
+                                               <TMPL_IF NAME="URL">
+                                                       <p>URL: <a href="<TMPL_VAR NAME="URL">"><TMPL_VAR NAME="URL"></a>
+                                               </TMPL_IF>
+
+                                               <TMPL_IF NAME="IP_ADDRESS">
+                                                       <p>Client IP address: <i><TMPL_VAR NAME="IP_ADDRESS"></i>
+                                               </TMPL_IF>
+
+                                               <br><p><TMPL_VAR NAME="MSG_TEXT_3">
+                                       </font>
+
+                       <tr>
+                               <td colspan='3' height='60%' valign="bottom" align="right">
+                                       <font face="verdana,arial,sans serif" color="#656565" size="1">
+                                               Web Filtering by
+                                       </font>
+                                       <a href="http://www.ipfire.org" target="_blank">
+                                               <font face="verdana,arial,sans serif" color="#656565" size="1"><b>IPFire</b></font>
+                                       </a>
+
+               </table>
+       </body>
+</html>
index 93f1ea4a96aece6bdc9064120b614ab086f49ee6..4f9d2278e2ba5e3ce99dd28df1848b683c766b7d 100644 (file)
 #                                                                             #
 ###############################################################################
 
-use CGI qw(param);
+use CGI;
+use HTML::Entities;
+use HTML::Template;
 
-$swroot="/var/ipfire";
+my $swroot="/var/ipfire";
+my $templateroot = "/srv/web/ipfire/html/redirect-templates";
 
 my %netsettings;
 my %filtersettings;
@@ -29,117 +32,75 @@ my %filtersettings;
 &readhash("$swroot/ethernet/settings", \%netsettings);
 &readhash("$swroot/urlfilter/settings", \%filtersettings);
 
-$category=param("category");
-$url=param("url");
-$ip=param("ip");
+# Read the template file.
+my $template = $filtersettings{'REDIRECT_TEMPLATE'};
+if (($template eq '') || (! -e "$templateroot/$template")) {
+       $template = "legacy";
+}
+my $tmpl = HTML::Template->new(
+       filename => "$templateroot/$template/template.html",
+       die_on_bad_params => 0
+);
+
+# Address where to load more resources from.
+$tmpl->param(ADDRESS => "http://$netsettings{'GREEN_ADDRESS'}:81");
 
-if ($filtersettings{'MSG_TEXT_1'} eq '') {
+# Message text 1
+my $msgtext1 = $filtersettings{'MSG_TEXT_1'};
+if ($msgtext1 eq '') {
        $msgtext1 = "A C C E S S &nbsp;&nbsp; D E N I E D";
-} else { $msgtext1 = $filtersettings{'MSG_TEXT_1'}; }
-if ($filtersettings{'MSG_TEXT_2'} eq '') {
+}
+$tmpl->param(MSG_TEXT_1 => $msgtext1);
+
+# Message text 2
+my $msgtext2 = $filtersettings{'MSG_TEXT_2'};
+if ($msgtext2 eq '') {
        $msgtext2 = "Access to the requested page has been denied";
-} else { $msgtext2 = $filtersettings{'MSG_TEXT_2'}; }
-if ($filtersettings{'MSG_TEXT_3'} eq '') {
+}
+$tmpl->param(MSG_TEXT_2 => $msgtext2);
+
+# Message text 3
+my $msgtext3 = $filtersettings{'MSG_TEXT_3'};
+if ($msgtext3 eq '') {
        $msgtext3 = "Please contact the Network Administrator if you think there has been an error";
-} else { $msgtext3 = $filtersettings{'MSG_TEXT_3'}; }
+}
+$tmpl->param(MSG_TEXT_3 => $msgtext3);
+
+# Category
+my $category = CGI::param("category");
+$tmpl->param(CATEGORY => &escape($category));
+
+# URL
+my $url = CGI::param("url");
+$tmpl->param(URL => &escape($url));
 
-if ($category eq '') { $category = '&nbsp;'; } else { $category = '['.$category.']'; }
+# IP address
+my $ip_address = CGI::param("ip");
+$tmpl->param(IP_ADDRESS => &escape($ip_address));
 
+# Print header
 print "Pragma: no-cache\n";
 print "Cache-control: no-cache\n";
 print "Connection: close\n";
 print "Content-type: text/html\n\n";
+print $tmpl->output;
 
-print <<END
-
-<html>
-<head>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
-<title>ACCESS MESSAGE</title>
-</head>
-
-<body>
-<table width="100%" height='100%' border="0">
-<tr>
-               <td colspan='3' width='100%' height='130' align="center" background="http://$netsettings{'GREEN_ADDRESS'}:81/images/background.gif">
-<tr>           <td width='10%'><td align='center' bgcolor='#CC000000' width='80%'><font face="verdana, arial, sans serif" color="#FFFFFF" size="5">
-                                       <b>$msgtext1</b>
-                                       </font>
-               <td width='10%'>
-END
-;
-
-if (!($category eq ""))
-{
-       print <<END
-       <tr>            <td colspan='3' align='center'>
-                               <font face="verdana, arial, sans serif" color="#CC000000" size="1">
-                                       <b>$category</b>
-                               </font>
-END
-;
+sub escape($) {
+       my $s = shift;
+       return HTML::Entities::encode_entities($s);
 }
-print <<END
-<tr>
-                       <td colspan='3' align="center">
-                               <font face="verdana, arial, sans serif" color="#000000" size="4">
-                               <b>$msgtext2</b>
-                               </font>
-                               <font face="verdana,arial,sans serif" color="#000000" size="2">
-END
-;
-
-if (!($url eq ""))
-{
-print <<END
-                                       <p>URL: <a href="$url">$url</a>
-END
-;
-}
-
-if (!($ip eq ""))
-{
-print <<END
-                                       <p>Client IP address: <i>$ip</i>
-END
-;
-}
-
-print <<END
-                                       <br><p>$msgtext3
-                                       </font>
 
-<tr>
-       <td colspan='3' height='60%' valign="bottom" align="right">
-               <font face="verdana,arial,sans serif" color="#656565" size="1">Web Filtering by
-               </font>
-               <a href="http://www.ipfire.org" target="_blank"><b>
-               <font face="verdana,arial,sans serif" color="#656565" size="1">IPFire</b></a>
-               </font>
-
-</table>
-</body>
-
-</html>
-END
-;
-
-sub readhash
-{
+sub readhash {
        my $filename = $_[0];
        my $hash = $_[1];
        my ($var, $val);
 
-       if (-e $filename)
-       {
+       if (-e $filename) {
                open(FILE, $filename) or die "Unable to read file $filename";
-               while (<FILE>)
-               {
+               while (<FILE>) {
                        chop;
                        ($var, $val) = split /=/, $_, 2;
-                       if ($var)
-                       {
+                       if ($var) {
                                $val =~ s/^\'//g;
                                $val =~ s/\'$//g;
        
@@ -149,6 +110,7 @@ sub readhash
                                $hash->{$var} = $val;
                        }
                }
+
                close FILE;
        }
 }
diff --git a/html/html/themes/darkdos/images/IPFire.png b/html/html/themes/darkdos/images/IPFire.png
new file mode 100644 (file)
index 0000000..ec56b7a
Binary files /dev/null and b/html/html/themes/darkdos/images/IPFire.png differ
diff --git a/html/html/themes/darkdos/images/b1.gif b/html/html/themes/darkdos/images/b1.gif
new file mode 100644 (file)
index 0000000..123ff91
Binary files /dev/null and b/html/html/themes/darkdos/images/b1.gif differ
diff --git a/html/html/themes/darkdos/images/b2.gif b/html/html/themes/darkdos/images/b2.gif
new file mode 100644 (file)
index 0000000..0172874
Binary files /dev/null and b/html/html/themes/darkdos/images/b2.gif differ
diff --git a/html/html/themes/darkdos/images/b3.gif b/html/html/themes/darkdos/images/b3.gif
new file mode 100644 (file)
index 0000000..8c8fba3
Binary files /dev/null and b/html/html/themes/darkdos/images/b3.gif differ
diff --git a/html/html/themes/darkdos/images/b4.gif b/html/html/themes/darkdos/images/b4.gif
new file mode 100644 (file)
index 0000000..5964fa7
Binary files /dev/null and b/html/html/themes/darkdos/images/b4.gif differ
diff --git a/html/html/themes/darkdos/images/b5.gif b/html/html/themes/darkdos/images/b5.gif
new file mode 100644 (file)
index 0000000..a032242
Binary files /dev/null and b/html/html/themes/darkdos/images/b5.gif differ
diff --git a/html/html/themes/darkdos/images/b6.gif b/html/html/themes/darkdos/images/b6.gif
new file mode 100644 (file)
index 0000000..ed1781c
Binary files /dev/null and b/html/html/themes/darkdos/images/b6.gif differ
diff --git a/html/html/themes/darkdos/include/colors.txt b/html/html/themes/darkdos/include/colors.txt
new file mode 100644 (file)
index 0000000..6efefc5
--- /dev/null
@@ -0,0 +1,25 @@
+color1=#CD0000
+color2=#FF0000
+color3=#CD0000
+color4=#FA1818
+color5=#CD0000
+color6=#FF0000
+color7=#FF2424
+color8=#FF5050
+color9=#EE0F0F
+color10=#EE0000
+color11=#0000FF
+color12=#00FF00
+color13=#FF0000
+color14=#F32020
+color15=#CCCCCC
+color16=#40E0D0
+color17=#90EE90
+color18=#F4A460
+color19=#EAE9EE
+color20=#1C1C1C
+color21=#CD6600
+color22=#4F4F4F
+color23=#FF00FF
+color24=#6464FF
+color25=#FF6464
diff --git a/html/html/themes/darkdos/include/functions.pl b/html/html/themes/darkdos/include/functions.pl
new file mode 100644 (file)
index 0000000..737e051
--- /dev/null
@@ -0,0 +1,404 @@
+#!/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/>.       #
+#                                                                             #
+###############################################################################
+
+sub showmenu() {
+    print <<EOF
+               <div id="menu">
+                       <ul>
+EOF
+;
+    foreach my $k1 ( sort keys %$menu ) {
+       if (! $menu->{$k1}{'enabled'}) {
+           next;
+       }
+       my $link = getlink($menu->{$k1});
+       if ($link eq '') {
+           next;
+       }
+       if (! is_menu_visible($link)) {
+           next;
+       }
+       if ($menu->{$k1}->{'selected'}) {
+           print "<li><a href=\"$link\" class=\"active\">$menu->{$k1}{'caption'}</a></li>";
+       } else {
+           print "<li><a href=\"$link\">$menu->{$k1}{'caption'}</a></li>";
+       }
+    }
+    print <<EOF
+                       </ul>
+               </div>
+EOF
+;    
+}
+
+sub getselected($) {
+    my $root = shift;
+    if (!$root) {
+       return 0;
+    }
+
+    foreach my $item (%$root) {
+       if ($root->{$item}{'selected'}) {
+           return $root->{$item};
+       }
+    }
+}
+
+sub showsubsection($$) {
+    my $root = shift;
+
+    if (! $root) {
+       return;
+    }
+    my $selected = getselected($root);
+    if (! $selected) {
+       return;
+    }
+    my $submenus = $selected->{'subMenu'};
+    if (! $submenus) {
+       return;
+    }
+
+    print <<EOF
+       <h4><span>Side</span>menu</h4>
+       <ul class="links">
+EOF
+;
+    foreach my $item (sort keys %$submenus) {
+       my $hash = $submenus->{$item};
+       if (! $hash->{'enabled'}) {
+           next;
+       }
+       my $link = getlink($hash);
+       if ($link eq '') {
+           next;
+       }
+       if (! is_menu_visible($link)) {
+           next;
+       }
+       if ($hash->{'selected'}) {
+           print '<li class="selected">';
+       } else {
+           print '<li>';
+       }
+
+       print "<a href=\"$link\">$hash->{'caption'}</a></li>";
+    }
+
+    print <<EOF
+       </ul>
+EOF
+;
+}
+
+
+sub showsubsubsection($) {
+    my $root = shift;
+    if (!$root) {
+       return;
+    }
+    my $selected = getselected($root);
+    if (! $selected) {
+       return
+    }
+    if (! $selected->{'subMenu'}) {
+       return
+    }
+
+    showsubsection($selected->{'subMenu'}, 'menu-subtop');
+}
+
+sub openpage {
+    my $title = shift;
+    my $boh = shift;
+    my $extrahead = shift;
+
+    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
+    &General::readhash("${swroot}/main/settings", \%settings);
+    &genmenu();
+
+    my $h2 = gettitle($menu);
+
+    $title = "-= IPFire - $title =-";
+    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
+        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
+    }
+
+    print <<END
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+               <title>$title</title>
+    $extrahead
+    <link rel="shortcut icon" href="/favicon.ico" />
+    <link rel="stylesheet" type="text/css" href="/themes/darkdos/include/style.css" />
+    <script language="javascript" type="text/javascript">
+      
+        function swapVisibility(id) {
+            el = document.getElementById(id);
+            if(el.style.display != 'block') {
+                el.style.display = 'block'
+            }
+            else {
+                el.style.display = 'none'
+            }
+        }
+    </script>
+END
+;
+if ($settings{'SPEED'} ne 'off') {
+print <<END
+    <script type="text/javascript" src="/include/jquery.js"></script>
+    <script type="text/javascript">
+        var t_current;
+        var t_last;
+        var rxb_current;
+        var rxb_last;
+        var txb_current;
+        var txb_last;
+                               function refreshInetInfo() {
+                                               \$.ajax({
+                                                               url: '/cgi-bin/speed.cgi',
+                                                                                       success: function(xml){
+                                                                                       t_current = new Date();
+                                                                                       var t_diff = t_current - t_last;
+                                                                                       t_last = t_current;
+                               
+                                                                                       rxb_current = \$("rxb",xml).text();
+                                                                                       var rxb_diff = rxb_current - rxb_last;
+                                                                                       rxb_last = rxb_current;
+                               
+                                                                                       var rx_kbs = rxb_diff/t_diff;
+                                                                                       rx_kbs = Math.round(rx_kbs*10)/10;
+                               
+                                                                                       txb_current = \$("txb",xml).text();
+                                                                                       var txb_diff = txb_current - txb_last;
+                                                                                       txb_last = txb_current;
+                               
+                                                                                       var tx_kbs = txb_diff/t_diff;
+                                                                                       tx_kbs = Math.round(tx_kbs*10)/10;
+                               
+                                                                                       \$("#rx_kbs").text(rx_kbs + ' kb/s');
+                                                                                       \$("#tx_kbs").text(tx_kbs + ' kb/s');
+                                                                                       }
+                                                               });
+                                                               window.setTimeout("refreshInetInfo()", 3000);
+                                               }
+                                               \$(document).ready(function(){
+                                               refreshInetInfo();
+                               });
+    </script>
+  </head>
+  <body>
+END
+;
+}
+else {
+print "</head>\n<body>";}
+print <<END
+<!-- IPFIRE HEADER -->
+
+<div id="header">
+
+       <div id="header_inner" class="fixed">
+
+               <div id="logo">
+END
+;
+    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
+        print "<h1><span>$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}</span></h1><br />"; 
+    } else {
+                               print "<h1><span>-= IPFire =-</span></h1><br />";
+               }
+               print <<END
+                       <h2>+ $h2 +</h2>
+               </div>
+
+END
+;
+       &showmenu();
+
+print <<END    
+       </div>
+</div>
+
+<div id="main">
+       <div id="main_inner" class="fixed">
+               <div id="primaryContent_2columns">
+                       <div id="columnA_2columns">
+END
+;
+}
+
+sub openpagewithoutmenu {
+    my $title = shift;
+    my $boh = shift;
+    my $extrahead = shift;
+
+    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
+    &General::readhash("${swroot}/main/settings", \%settings);
+    &genmenu();
+
+    my $h2 = gettitle($menu);
+
+    $title = "-= IPFire - $title =-";
+    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
+        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
+    }
+
+    print <<END
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+               <title>$title</title>
+               $extrahead
+END
+;
+    if ($settings{'FX'} ne 'off') {
+    print <<END
+    <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5,Transition=12)" />
+    <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5,Transition=12)" />
+END
+;
+    }
+    print <<END
+    <link rel="shortcut icon" href="/favicon.ico" />
+    <link rel="stylesheet" type="text/css" href="/include/style.css" />
+    <script language="javascript" type="text/javascript">
+      
+        function swapVisibility(id) {
+            el = document.getElementById(id);
+           if(el.style.display != 'block') {
+               el.style.display = 'block'
+           }
+           else {
+               el.style.display = 'none'
+           }
+        }
+    </script>
+
+  </head>
+  <body>
+<!-- IPFIRE HEADER -->
+
+<div id="header">
+
+       <div id="header_inner" class="fixed">
+
+               <div id="logo">
+                       <h1><span>-= IPFire =-</span></h1>
+                       <h2>+ $h2 +</h2>
+               </div>  
+       </div>
+</div>
+
+<div id="main">
+       <div id="main_inner" class="fixed">
+               <div id="primaryContent_2columns">
+                       <div id="columnA_2columns">
+END
+;
+}
+
+sub closepage () {
+       my $status = &connectionstatus();
+       my $uptime = `/usr/bin/uptime|cut -d \" \" -f 4-`;
+       $uptime =~ s/year(s|)/$Lang::tr{'year'}/;
+       $uptime =~ s/month(s|)/$Lang::tr{'month'}/;
+       $uptime =~ s/day(s|)/$Lang::tr{'day'}/;
+       $uptime =~ s/user(s|)/$Lang::tr{'user'}/;
+       $uptime =~ s/load average/$Lang::tr{'uptime load average'}/;     
+                               
+    print <<END
+                       </div>
+               </div>
+
+               <div id="secondaryContent_2columns">
+               
+                       <div id="columnC_2columns">
+END
+;
+    &showsubsection($menu);
+    &showsubsubsection($menu);
+
+       print <<END
+                               </div>
+                       </div>
+                       <br class="clear" />    
+                       <div id="footer" class="fixed">
+                               <b>Status:</b> $status <b>Uptime:</b> $uptime
+END
+;
+if ($settings{'SPEED'} ne 'off') {
+print <<END                        
+                        <br />
+                                <b>$Lang::tr{'bandwidth usage'}:</b>
+                               $Lang::tr{'incoming'}: <span id="rx_kbs"></span>&nbsp;$Lang::tr{'outgoing'}: <span id="tx_kbs"></span>
+
+END
+;
+}
+print <<END
+                </div>
+        </div>
+</div>
+</body>
+</html>
+END
+;
+}
+
+sub openbigbox
+{
+}
+
+sub closebigbox
+{
+}
+
+sub openbox
+{
+       $width = $_[0];
+       $align = $_[1];
+       $caption = $_[2];
+
+       print <<END
+<!-- openbox -->
+       <div class="post" align="$align">
+END
+;
+
+       if ($caption) { print "<h3>$caption</h3>\n"; } else { print "&nbsp;"; }
+}
+
+sub closebox
+{
+       print <<END
+       </div>
+       <br class="clear" />
+       <!-- closebox -->
+END
+;
+}
+
+1;
diff --git a/html/html/themes/darkdos/include/style.css b/html/html/themes/darkdos/include/style.css
new file mode 100644 (file)
index 0000000..e7140cd
--- /dev/null
@@ -0,0 +1,464 @@
+/*darkdos theme by d4rkd0s*/
+
+/* This controls the width of the fluid width layouts */
+
+div.fluid
+{
+width: 90% !important;
+}
+
+/* This controls the width of the fixed width layouts */
+
+div.fixed
+{
+width: 950px !important;
+}
+
+/* Basic Stuff */
+
+*
+{
+margin: 0em;
+padding: 0em;
+}
+
+body
+{
+background-color: #000000;
+color: rgb(255,128,0); 
+font-size: 10pt;
+font-family: "trebuchet ms", helvetica, sans-serif;
+}
+
+h1,h2,h3,h4,h5,h6
+{
+background-color: #000000;
+font-weight: normal;
+letter-spacing: -1px;
+text-transform: lowercase;
+text-align: left;
+}
+
+h3,h4,h5,h6
+{
+background-color: #000000;
+color: silver;
+}
+
+h1 span
+{
+font-weight: bold;
+color: rgb(255,58,58); 
+}
+
+h3 span
+{
+background-color: #000000;
+font-weight: bold;
+}
+
+h4 span
+{
+background-color: #000000;
+font-weight: bold;
+}
+
+br.clear
+{
+background-color: #000000;
+clear: both;
+}
+
+img
+{
+}
+
+img.floatTL
+{
+float: left;
+margin-right: 1.5em;
+margin-bottom: 1.5em;
+margin-top: 0.5em;
+}
+
+a
+{
+text-decoration: underline;
+color: white;
+}
+
+a:hover
+{
+text-decoration: none;
+}
+
+ul.links
+{
+list-style: none;
+}
+
+ul.links li
+{
+line-height: 2em;
+}
+
+ul.links li.first
+{
+}
+
+p
+{
+line-height: 1.8em;
+}
+
+/* Header */
+
+#header
+{
+width:100%;
+height:100px;
+background: #000000 url('/themes/darkdos/images/b1.gif') repeat-x;
+}
+
+#header_inner
+{
+position: relative;
+width: 700px;
+height:110px;
+margin: 0 auto;
+}
+
+/* Logo */
+
+#logo
+{
+position: absolute;
+bottom: 0.6em;
+}
+
+#logo h1
+{
+display: inline;
+color: #fff;
+font-size: 2.6em;
+}
+
+#logo h2
+{
+display: inline;
+padding-left: 0.5em;
+color: white;
+font-size: 1.0em;
+}
+
+/* Menu */
+
+#menu
+{
+position: absolute;
+right: 0em;
+bottom: 0em;
+}
+
+#menu ul
+{
+list-style: none;
+}
+
+#menu li
+{
+float: left;
+}
+
+#menu li a
+{
+margin-left: 0.5em;
+display: block;
+padding: 1.1em 1.4em 1.0em 1.4em;
+background: url('/themes/darkdos/images/b4.gif') repeat-x;
+border: solid 1px #fff;
+color: #616161;
+font-weight: bold;
+font-size: 1.0em;
+text-transform: lowercase;
+text-decoration: none;
+}
+
+#menu li a.active
+{
+background: url('/themes/darkdos/images/b3.gif') repeat-x;
+color: #fff;
+border: solid 1px silver;
+}
+
+/* Main */
+
+#main
+{
+background: #000000 url('/themes/darkdos/images/b2.gif') 0px 1px repeat-x;
+}
+
+#main_inner p
+{
+text-align: justify;
+margin-bottom: 2.0em;
+}
+
+#main_inner ul
+{
+margin-bottom: 2.0em;
+}
+
+#main_inner
+{
+position: relative;
+width: 950px;
+margin: 0 auto;
+padding-top: 3.5em;
+}
+
+#main_inner h3,h4
+{
+border-bottom: dotted 1px #E1E1E1;
+position: relative;
+padding-bottom: 0.4em;
+}
+
+#main_inner h3
+{
+font-size: 2.1em;
+padding-bottom: 0.1em;
+}
+
+#main_inner h4
+{
+font-size: 1.2em;
+padding-bottom: 0.175em;
+margin-bottom: 1.4em;
+margin-top: 0.95em;
+}
+
+#main_inner .post
+{
+position: relative;
+}
+
+#main_inner .post h3
+{
+position: relative;
+font-size: 1.7em;
+padding-bottom: 0.4em;
+}
+
+#main_inner .post ul.post_info
+{
+list-style: none;
+position: absolute;
+top: 3em;
+font-size: 0.8em;
+}
+
+#main_inner .post ul.post_info li
+{
+background-position: 0em 0.2em;
+background-repeat: no-repeat;
+display: inline;
+padding-left: 18px;
+}
+
+#main_inner .post ul.post_info li.date
+{
+background-image: url('/themes/darkdos/images/b5.gif');
+}
+
+#main_inner .post ul.post_info li.comments
+{
+background-image: url('/themes/darkdos/images/b6.gif');
+margin-left: 1.1em;
+}
+
+/* Footer */
+
+#footer
+{
+width: 950px;
+margin: 0 auto;
+text-align: center;
+clear: both;
+border-top: dotted 1px #E1E1E1;
+margin-top: 1.0em;
+margin-bottom: 1.0em;
+padding-top: 1.0em;
+text-transform: lowercase;
+}
+
+/* Search */
+
+select
+{
+margin: 0.2em;
+background-color: rgb(255,58,58); color:black; border:1px solid silver;
+}
+
+textarea
+{
+margin: 0.2em;
+background-color: rgb(255,58,58); color:black; border:1px solid silver;
+}
+
+checkbox
+{
+margin: 0.2em;
+background-color: rgb(255,58,58); color:black; border:1px solid silver;
+}
+
+radio
+{
+margin: 0.2em;
+background-color: rgb(255,58,58); color:black; border:1px solid silver;
+}
+
+input
+{
+margin: 0.2em;
+background-color: rgb(255,58,58); color:black; border:1px solid silver;
+}
+
+input.button
+{
+background: #CA2F2F url('/themes/darkdos/images/b3.gif') repeat-x;
+color: #fff;
+border: solid 1px #2941BC;
+font-weight: bold;
+text-transform: lowercase;
+font-size: 0.8em;
+height: 2.0em;
+}
+
+input.text
+{
+border: solid 1px #F1F1F1;
+font-size: 1.0em;
+padding: 0.25em 0.25em 0.25em 0.25em;
+}
+
+#search
+{
+position: relative;
+width: 100%;
+margin-bottom: 2.0em;
+}
+
+#search input.text
+{
+position: absolute;
+top: 0em;
+left: 0em;
+width: 9.5em;
+}
+
+#search input.button
+{
+position: absolute;
+top: 0em;
+right: 0em;
+min-width: 2.0em;
+max-width: 2.5em;
+}
+
+/* LAYOUT - 3 COLUMNS */
+
+       /* Primary content */
+       
+       #primaryContent_3columns
+       {
+       position: relative;
+       margin-right: 34em;
+       }
+       
+       #columnA_3columns
+       {
+       position: relative;
+       float: left;
+       width: 100%;
+       margin-right: -34em;
+       padding-right: 2em;
+       }
+       
+       /* Secondary Content */
+       
+       #secondaryContent_3columns
+       {
+       float: right;
+       }
+       
+       #columnB_3columns
+       {
+       width: 13.0em;
+       float: left;
+       padding: 0em 2em 0.5em 2em;
+       border-left: dotted 1px #E1E1E1;
+       }
+       
+       #columnC_3columns
+       {
+       width: 13.0em;
+       float: left;
+       padding: 0em 0em 0.5em 2em;
+       border-left: dotted 1px #E1E1E1;
+       }
+       
+/* LAYOUT - 2 COLUMNS */
+
+       /* Primary content */
+       
+       #primaryContent_2columns
+       {
+       position: relative;
+       margin-right: 17em;
+       }
+       
+       #columnA_2columns
+       {
+       position: relative;
+       float: left;
+       width: 100%;
+       margin-right: -17em;
+       padding-right: 2em;
+       }
+       
+       /* Secondary Content */
+       
+       #secondaryContent_2columns
+       {
+       float: right;
+       }
+       
+       #columnC_2columns
+       {
+       width: 13.0em;
+       float: left;
+       padding: 0em 0em 0.5em 2em;
+       border-left: dotted 1px #E1E1E1;
+       }
+
+/* LAYOUT - COLUMNLESS */
+
+       /* Primary content */
+       
+       #primaryContent_columnless
+       {
+       position: relative;
+       }
+       
+       #columnA_columnless
+       {
+       position: relative;
+       width: 100%;
+       }
+
+/* FOOTER      COLORIZE BANDWIDTH */
+
+#rx_kbs { color: green; }
+
+#tx_kbs { color: red; }
diff --git a/html/html/themes/ipfire-legacy/images/n2.gif b/html/html/themes/ipfire-legacy/images/n2.gif
new file mode 100644 (file)
index 0000000..b92a19d
Binary files /dev/null and b/html/html/themes/ipfire-legacy/images/n2.gif differ
diff --git a/html/html/themes/ipfire-legacy/images/n3.gif b/html/html/themes/ipfire-legacy/images/n3.gif
new file mode 100644 (file)
index 0000000..6627c91
Binary files /dev/null and b/html/html/themes/ipfire-legacy/images/n3.gif differ
diff --git a/html/html/themes/ipfire-legacy/images/n5.gif b/html/html/themes/ipfire-legacy/images/n5.gif
new file mode 100644 (file)
index 0000000..a032242
Binary files /dev/null and b/html/html/themes/ipfire-legacy/images/n5.gif differ
diff --git a/html/html/themes/ipfire-legacy/images/n6.gif b/html/html/themes/ipfire-legacy/images/n6.gif
new file mode 100644 (file)
index 0000000..ed1781c
Binary files /dev/null and b/html/html/themes/ipfire-legacy/images/n6.gif differ
diff --git a/html/html/themes/ipfire-legacy/images/spacer.gif b/html/html/themes/ipfire-legacy/images/spacer.gif
new file mode 100644 (file)
index 0000000..5bfd67a
Binary files /dev/null and b/html/html/themes/ipfire-legacy/images/spacer.gif differ
diff --git a/html/html/themes/ipfire-legacy/include/colors.txt b/html/html/themes/ipfire-legacy/include/colors.txt
new file mode 100644 (file)
index 0000000..6d7dd1c
--- /dev/null
@@ -0,0 +1,25 @@
+color1=#CD5B45
+color2=#EE6A50
+color3=#FF7256
+color4=#EE9572
+color5=#FFA07A
+color6=#CDAF95
+color7=#EECBAD
+color8=#FFDAB9
+color9=#FFE4C4
+color10=#FFCCCC
+color11=#0000FF
+color12=#00FF00
+color13=#FF0000
+color14=#FFD700
+color15=#CCCCCC
+color16=#40E0D0
+color17=#90EE90
+color18=#F4A460
+color19=#EAE9EE
+color20=#D6D6D6
+color21=#FFFFFF
+color22=#F0F0F0
+color23=#FF00FF
+color24=#6464FF
+color25=#FF6464
diff --git a/html/html/themes/ipfire-legacy/include/functions.pl b/html/html/themes/ipfire-legacy/include/functions.pl
new file mode 100644 (file)
index 0000000..1401030
--- /dev/null
@@ -0,0 +1,404 @@
+#!/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/>.       #
+#                                                                             #
+###############################################################################
+
+sub showmenu() {
+    print <<EOF
+                <div id="menu">
+                        <ul>
+EOF
+;
+    foreach my $k1 ( sort keys %$menu ) {
+        if (! $menu->{$k1}{'enabled'}) {
+            next;
+        }
+        my $link = getlink($menu->{$k1});
+        if ($link eq '') {
+            next;
+        }
+        if (! is_menu_visible($link)) {
+            next;
+        }
+        if ($menu->{$k1}->{'selected'}) {
+            print "<li><a href=\"$link\" class=\"active\">$menu->{$k1}{'caption'}</a></li>";
+        } else {
+            print "<li><a href=\"$link\">$menu->{$k1}{'caption'}</a></li>";
+        }
+    }
+    print <<EOF
+                        </ul>
+                </div>
+EOF
+;    
+}
+
+sub getselected($) {
+    my $root = shift;
+    if (!$root) {
+        return 0;
+    }
+
+    foreach my $item (%$root) {
+        if ($root->{$item}{'selected'}) {
+            return $root->{$item};
+        }
+    }
+}
+
+sub showsubsection($$) {
+    my $root = shift;
+
+    if (! $root) {
+        return;
+    }
+    my $selected = getselected($root);
+    if (! $selected) {
+        return;
+    }
+    my $submenus = $selected->{'subMenu'};
+    if (! $submenus) {
+        return;
+    }
+
+    print <<EOF
+        <h4><span>Side</span>menu</h4>
+        <ul class="links">
+EOF
+;
+    foreach my $item (sort keys %$submenus) {
+        my $hash = $submenus->{$item};
+        if (! $hash->{'enabled'}) {
+            next;
+        }
+        my $link = getlink($hash);
+        if ($link eq '') {
+            next;
+        }
+        if (! is_menu_visible($link)) {
+            next;
+        }
+        if ($hash->{'selected'}) {
+            print '<li class="selected">';
+        } else {
+            print '<li>';
+        }
+
+        print "<a href=\"$link\">$hash->{'caption'}</a></li>";
+    }
+
+    print <<EOF
+        </ul>
+EOF
+;
+}
+
+
+sub showsubsubsection($) {
+    my $root = shift;
+    if (!$root) {
+        return;
+    }
+    my $selected = getselected($root);
+    if (! $selected) {
+        return
+    }
+    if (! $selected->{'subMenu'}) {
+        return
+    }
+
+    showsubsection($selected->{'subMenu'}, 'menu-subtop');
+}
+
+sub openpage {
+    my $title = shift;
+    my $boh = shift;
+    my $extrahead = shift;
+
+    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
+    &General::readhash("${swroot}/main/settings", \%settings);
+    &genmenu();
+
+    my $h2 = gettitle($menu);
+
+    $title = "IPFire - $title";
+    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
+        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
+    }
+
+    print <<END
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+               <title>$title</title>
+    $extrahead
+    <link rel="shortcut icon" href="/favicon.ico" />
+    <link rel="stylesheet" type="text/css" href="/themes/ipfire-legacy/include/style.css" />
+    <script language="javascript" type="text/javascript">
+      
+        function swapVisibility(id) {
+            el = document.getElementById(id);
+            if(el.style.display != 'block') {
+                el.style.display = 'block'
+            }
+            else {
+                el.style.display = 'none'
+            }
+        }
+    </script>
+END
+;
+if ($settings{'SPEED'} ne 'off') {
+print <<END
+    <script type="text/javascript" src="/include/jquery.js"></script>
+    <script type="text/javascript">
+        var t_current;
+        var t_last;
+        var rxb_current;
+        var rxb_last;
+        var txb_current;
+        var txb_last;
+       function refreshInetInfo() {
+               \$.ajax({
+                       url: '/cgi-bin/speed.cgi',
+                        success: function(xml){
+                        t_current = new Date();
+                        var t_diff = t_current - t_last;
+                        t_last = t_current;
+
+                        rxb_current = \$("rxb",xml).text();
+                        var rxb_diff = rxb_current - rxb_last;
+                        rxb_last = rxb_current;
+
+                        var rx_kbs = rxb_diff/t_diff;
+                        rx_kbs = Math.round(rx_kbs*10)/10;
+
+                        txb_current = \$("txb",xml).text();
+                        var txb_diff = txb_current - txb_last;
+                        txb_last = txb_current;
+
+                        var tx_kbs = txb_diff/t_diff;
+                        tx_kbs = Math.round(tx_kbs*10)/10;
+
+                        \$("#rx_kbs").text(rx_kbs + ' kb/s');
+                        \$("#tx_kbs").text(tx_kbs + ' kb/s');
+                        }
+               });
+                window.setTimeout("refreshInetInfo()", 3000);
+       }
+       \$(document).ready(function(){
+               refreshInetInfo();
+       });
+    </script>
+  </head>
+  <body>
+END
+;
+}
+else {
+print "</head><body>";}
+print <<END
+<!-- IPFIRE HEADER -->
+
+<div id="header">
+
+        <div id="header_inner" class="fixed">
+
+                <div id="logo">
+END
+;
+    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
+        print "<h1><span>$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}</span></h1><br />"; 
+    } else {
+                                print "<h1><span>IPFire</span></h1><br />";
+                }
+                print <<END
+                        <h2>$h2</h2>
+                </div>
+
+END
+;
+        &showmenu();
+
+print <<END     
+        </div>
+</div>
+
+<div id="main">
+        <div id="main_inner" class="fixed">
+                <div id="primaryContent_2columns">
+                        <div id="columnA_2columns">
+END
+;
+}
+
+sub openpagewithoutmenu {
+    my $title = shift;
+    my $boh = shift;
+    my $extrahead = shift;
+
+    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
+    &General::readhash("${swroot}/main/settings", \%settings);
+    &genmenu();
+
+    my $h2 = gettitle($menu);
+
+    $title = "IPFire - $title";
+    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
+        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
+    }
+
+    print <<END
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+               <title>$title</title>
+               $extrahead
+END
+;
+    if ($settings{'FX'} ne 'off') {
+    print <<END
+    <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5,Transition=12)" />
+    <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5,Transition=12)" />
+END
+;
+    }
+    print <<END
+    <link rel="shortcut icon" href="/favicon.ico" />
+    <link rel="stylesheet" type="text/css" href="/include/style.css" />
+    <script language="javascript" type="text/javascript">
+      
+        function swapVisibility(id) {
+            el = document.getElementById(id);
+            if(el.style.display != 'block') {
+                el.style.display = 'block'
+            }
+            else {
+                el.style.display = 'none'
+            }
+        }
+    </script>
+
+  </head>
+  <body>
+<!-- IPFIRE HEADER -->
+
+<div id="header">
+
+        <div id="header_inner" class="fixed">
+
+                <div id="logo">
+                        <h1><span>IPFire</span></h1>
+                        <h2>$h2</h2>
+                </div>  
+        </div>
+</div>
+
+<div id="main">
+        <div id="main_inner" class="fixed">
+                <div id="primaryContent_2columns">
+                        <div id="columnA_2columns">
+END
+;
+}
+
+sub closepage () {
+       my $status = &connectionstatus();
+       my $uptime = `/usr/bin/uptime|cut -d \" \" -f 4-`;
+       $uptime =~ s/year(s|)/$Lang::tr{'year'}/;
+       $uptime =~ s/month(s|)/$Lang::tr{'month'}/;
+       $uptime =~ s/day(s|)/$Lang::tr{'day'}/;
+       $uptime =~ s/user(s|)/$Lang::tr{'user'}/;
+       $uptime =~ s/load average/$Lang::tr{'uptime load average'}/;     
+                               
+    print <<END
+                        </div>
+                </div>
+
+                <div id="secondaryContent_2columns">
+                
+                        <div id="columnC_2columns">
+END
+;
+    &showsubsection($menu);
+    &showsubsubsection($menu);
+
+        print <<END                     
+                               </div>
+            </div>
+            <br class="clear" />    
+                       <div id="footer" class="fixed">
+                               <b>Status:</b> $status <b>Uptime:</b> $uptime
+END
+;
+if ($settings{'SPEED'} ne 'off') {
+print <<END                        
+                        <br />
+                                <b>$Lang::tr{'bandwidth usage'}:</b>
+                               $Lang::tr{'incoming'}: <span id="rx_kbs"></span>&nbsp;$Lang::tr{'outgoing'}: <span id="tx_kbs"></span>
+
+END
+;
+}
+print <<END
+                </div>
+        </div>
+</div>
+</body>
+</html>
+END
+;
+}
+
+sub openbigbox
+{
+}
+
+sub closebigbox
+{
+}
+
+sub openbox
+{
+        $width = $_[0];
+        $align = $_[1];
+        $caption = $_[2];
+
+        print <<END
+<!-- openbox -->
+        <div class="post" align="$align">
+END
+;
+
+        if ($caption) { print "<h3>$caption</h3>\n"; } else { print "&nbsp;"; }
+}
+
+sub closebox
+{
+        print <<END
+        </div>
+        <br class="clear" />
+        <!-- closebox -->
+END
+;
+}
+
+1;
similarity index 91%
rename from html/html/themes/ipfire/include/style.css
rename to html/html/themes/ipfire-legacy/include/style.css
index 2461a1499e1f6a8fd7e58aa401a0fbcff702802a..d2c458e51012025594181b91bed960092203e6b0 100644 (file)
@@ -119,7 +119,7 @@ line-height: 1.8em;
 {
 width:100%;
 height:122px;
-background: #440000 url('/themes/ipfire/images/n1.gif') repeat-x;
+background: #440000 url('../images/n1.gif') repeat-x;
 }
 
 #header_inner
@@ -177,7 +177,7 @@ float: left;
 margin-left: 0.5em;
 display: block;
 padding: 1.1em 1.4em 1.0em 1.4em;
-background: #fff url('/themes/ipfire/images/n4.gif') repeat-x;
+background: #fff url('../images/n4.gif') repeat-x;
 border: solid 1px #fff;
 color: #616161;
 font-weight: bold;
@@ -188,7 +188,7 @@ text-decoration: none;
 
 #menu li a.active
 {
-background: #CA2F2F url('/themes/ipfire/images/n3.gif') repeat-x;
+background: #CA2F2F url('../images/n3.gif') repeat-x;
 color: #fff;
 border: solid 1px #A94B4B;
 }
@@ -197,7 +197,7 @@ border: solid 1px #A94B4B;
 
 #main
 {
-background: #fff url('/themes/ipfire/images/n2.gif') 0px 1px repeat-x;
+background: #fff url('../images/n2.gif') 0px 1px repeat-x;
 }
 
 #main_inner p
@@ -270,12 +270,12 @@ padding-left: 18px;
 
 #main_inner .post ul.post_info li.date
 {
-background-image: url('/themes/ipfire/images/n5.gif');
+background-image: url('../images/n5.gif');
 }
 
 #main_inner .post ul.post_info li.comments
 {
-background-image: url('/themes/ipfire/images/n6.gif');
+background-image: url('../images/n6.gif');
 margin-left: 1.1em;
 }
 
@@ -303,7 +303,7 @@ margin: 0.2em;
 
 input.button
 {
-background: #CA2F2F url('/themes/ipfire/images/n3.gif') repeat-x;
+background: #CA2F2F url('../images/n3.gif') repeat-x;
 color: #fff;
 border: solid 1px #A94B4B;
 font-weight: bold;
diff --git a/html/html/themes/ipfire/images/tux2.png b/html/html/themes/ipfire/images/tux2.png
new file mode 100644 (file)
index 0000000..cd84ad5
Binary files /dev/null and b/html/html/themes/ipfire/images/tux2.png differ
diff --git a/html/html/themes/ipfire/include/css/style-rounded.css b/html/html/themes/ipfire/include/css/style-rounded.css
new file mode 100644 (file)
index 0000000..886d61f
--- /dev/null
@@ -0,0 +1,82 @@
+
+.bigbox {
+       margin-top: 1em;
+       border-radius: 8px 8px 8px 8px;
+       -webkit-border-radius: 8px 8px 8px 8px;
+}
+
+#main_inner .post {
+       border-radius: 8px 8px 8px 8px;
+       -webkit-border-radius: 8px 8px 8px 8px;
+}
+
+#cssmenu a {
+       border-radius: 8px 8px 8px 8px;
+       -webkit-border-radius: 8px 8px 8px 8px;
+}
+
+#cssmenu .has-sub ul li a {
+       border-radius: 7px 7px 7px 7px;
+}
+
+#cssmenu .has-sub ul li:hover a {
+       box-shadow: inset 0  5px 1px rgba(0, 0, 0, 0.15);
+       -webkit-box-shadow: inset 0  5px 1px rgba(0, 0, 0, 0.15);
+}
+
+/* Table */
+/* when using class='bordered' after tabletag */
+
+.tbl th:first-child {
+       -moz-border-radius: 6px 0 0 0;
+       -webkit-border-radius: 6px 0 0 0;
+       border-radius: 6px 0 0 0;
+}
+
+.tbl th:last-child {
+       -moz-border-radius: 0 6px 0 0;
+       -webkit-border-radius: 0 6px 0 0;
+       border-radius: 0 6px 0 0;
+}
+
+.tbl th:only-child {
+       -moz-border-radius: 6px 6px 0 0;
+       -webkit-border-radius: 6px 6px 0 0;
+       border-radius: 6px 6px 0 0;
+}
+
+.tbl tr:first-child td:first-child {
+       -moz-border-radius: 6px 0 0 0;
+       -webkit-border-radius: 6px 0 0 0;
+       border-radius: 6px 0 0 0;
+}
+
+.tbl tr:first-child td:last-child {
+       -moz-border-radius: 0 6px 0 0;
+       -webkit-border-radius: 0 6px 0 0;
+       border-radius: 0 6px 0 0;
+}
+
+.tbl tr:first-child td:only-child {
+       -moz-border-radius: 6px 6px 0 0;
+       -webkit-border-radius: 6px 6px 0 0;
+       border-radius: 6px 6px 0 0;
+}
+
+.tbl tr:last-child td:first-child {
+       -moz-border-radius: 0 0 0 6px;
+       -webkit-border-radius: 0 0 0 6px;
+       border-radius: 0 0 0 6px;
+}
+
+.tbl tr:last-child td:last-child {
+       -moz-border-radius: 0 0 6px 0;
+       -webkit-border-radius: 0 0 6px 0;
+       border-radius: 0 0 6px 0;
+}
+
+.tbl tr:last-child td:only-child {
+       -moz-border-radius: 0 0 6px 6px;
+       -webkit-border-radius: 0 0 6px 6px;
+       border-radius: 0 0 6px 6px;
+}
diff --git a/html/html/themes/ipfire/include/css/style.css b/html/html/themes/ipfire/include/css/style.css
new file mode 100644 (file)
index 0000000..0e990d6
--- /dev/null
@@ -0,0 +1,326 @@
+
+/* This controls the width of the fixed width layouts */
+
+.fixed {
+       width: 960px !important;
+}
+
+/* Basic Stuff */
+
+* {
+       margin: 0;
+       padding: 0;
+}
+
+html {
+       height: 100%;
+}
+
+body {
+       /* SVG as background image (IE9/Chrome/Safari/Opera) */
+       background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxIDEiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPgo8bGluZWFyR3JhZGllbnQgaWQ9Imc2ODQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMTAwJSIgeTE9IjEwMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMDAwMDAwIiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjODgwNDAwIiBvZmZzZXQ9IjU3JSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2c2ODQpIiAvPgo8L3N2Zz4=);
+
+       background-image: linear-gradient(
+               bottom,
+               #000000 0%,
+               #880400 57%
+       );
+       background-image: -o-linear-gradient(
+               bottom,
+               #000000 0%,
+               #880400 57%
+       );
+       background-image: -moz-linear-gradient(
+               bottom,
+               #000000 0%,
+               #880400 57%
+       );
+       background-image: -webkit-linear-gradient(
+               bottom,
+               #000000 0%,
+               #880400 57
+       );
+       background-image: -ms-linear-gradient(
+               bottom,
+               #000000 0%,
+               #880400 57%
+       );
+       background-image: -webkit-gradient(
+               linear,
+               left bottom,
+               left top,
+               color-stop(0, #000000),
+               color-stop(0.57, #880400)
+       );
+       background-attachment: fixed;
+
+       font-size: 9pt;
+       font-family: "DejaVu Sans", Helvetica, sans-serif;
+}
+
+
+h1, h2, h3, h4, h5, h6 {
+       font-size: 20px;
+       font-weight: normal;
+       letter-spacing: -1px;
+       text-align: left;
+}
+
+h1 {
+       color: #66000F;
+}
+
+br.clear {
+       clear: both;
+}
+
+img {
+       padding: 3px;
+}
+
+a {
+       text-decoration: underline;
+       color: #d90000;
+}
+
+a:hover {
+       text-decoration: none;
+}
+
+p {
+       line-height: 1.8em;
+}
+
+hr {
+       margin: 0.3em 0 0.3em 0;
+}
+
+iframe {
+       border: 0;
+}
+
+.pull-right {
+       float: right !important;
+}
+
+/* Header */
+
+#header {
+       height: 70px;
+       margin: 0 auto;
+}
+
+/* Logo */
+
+#logo {
+       height: 65px;
+       margin-top: 1em;
+       background: url('../../images/tux2.png') no-repeat;
+}
+
+#logo h1 {
+       color: #fff;
+       font-size: 3.6em;
+       font-weight: bold;
+       padding-top: 0.2em;
+       padding-left: 1.7em;
+}
+
+/* Main */
+
+.bigbox {
+       margin: 0 auto;
+       margin-top: 0.5em;
+       padding: 1.5em 2em 0 2em;
+       background: #fff url('../../images/n2.gif') 0px 0px repeat-x;
+       border: 1px solid black;
+
+       border-radius: 3px 3px 3px 3px;
+       -webkit-border-radius: 3px 3px 3px 3px;
+}
+
+#main_inner {
+       padding-bottom: 1.5em;
+}
+
+#main_inner p {
+       text-align: justify;
+       margin-bottom: 2em;
+}
+
+#main_inner ul {
+       margin-bottom: 2em;
+}
+
+#main_inner h1 {
+       font-size: 1.8em;
+       margin-bottom: 1em;
+}
+
+#main_inner .post {
+       border: 1px solid silver;
+       padding: 1em 2em 1em 2em;
+       margin-bottom: 1em;
+       clear: both;
+}
+
+#main_inner .post h2 {
+       border-bottom: dotted 1px #e1e1e1;
+       font-size: 1.6em;
+       margin-bottom: 1em;
+}
+
+#footer {
+       height: 2.5em;
+       margin-bottom: 1em;
+}
+
+#footer a {
+       color: inherit;
+       text-decoration: none;
+}
+
+#footer a:hover {
+       text-decoration: underline;
+}
+
+input {
+       margin: 0.2em;
+}
+
+input.button {
+       background: #ca2f2f url('../../images/n3.gif') repeat-x;
+       color: #fff;
+       border: solid 1px #a94b4b;
+       font-weight: bold;
+       font-size: 0.8em;
+       height: 2.0em;
+}
+
+input.text {
+       border: solid 1px #f1f1f1;
+       padding: 0.25em;
+}
+
+#traffic {
+       float: right;
+       min-width: 20em;
+       line-height: 32px;
+}
+
+/* Menu */
+#cssmenu {
+       margin: 0 auto;
+       margin-top: 0;
+       padding-top: 0;
+       font-weight: 600;
+       height: 32px;
+       border: 1px solid black;
+}
+
+#cssmenu a {
+       color: #111111;
+       display: inline-block;
+       line-height: 32px;
+       padding: 0 1em;
+       text-decoration: none;
+}
+
+#cssmenu ul {
+       list-style: none;
+}
+
+#cssmenu > ul > li {
+       display: inline-block;
+}
+
+#cssmenu > ul > li.active a, #cssmenu > ul > li:hover > a {
+       color: white;
+       background: #aaaaaa;
+}
+
+#cssmenu .has-sub:hover > ul {
+       display: block;
+}
+
+#cssmenu .has-sub ul {
+       display: none;
+       position: absolute;
+}
+
+#cssmenu .has-sub ul li a {
+       min-width: 12em;
+       background: #ffffff;
+       color: grey;
+       display: block;
+       line-height: 40%;
+       padding: 12px 5px;
+       border: 1px solid black;
+}
+
+#cssmenu .has-sub ul li:hover a {
+       background: #dddddd;
+}
+
+/* This decorates all tables with class="tbl" */
+
+table {
+       *border-collapse: collapse; /* IE7 and lower */
+       border-spacing: 0;
+}
+
+.tbl th {
+       color: #000000;
+       border-top: 1px solid lightgrey;
+       border-bottom: 1px solid lightgrey;
+       background: #cccccc;
+       padding-left: 0.5em;
+       padding-right: 0.5em;
+}
+
+.tbl th:first-child {
+       border-left: 1px solid lightgrey;
+       border-top: 1px solid lightgrey;
+       border-bottom: 1px solid lightgrey;
+}
+
+.tbl th:last-child {
+       border-right: 1px solid lightgrey;
+       border-top: 1px solid lightgrey;
+       border-bottom: 1px solid lightgrey;
+}
+
+.tbl th:only-child {
+       border: 1px solid lightgrey;
+}
+.tbl td{
+       padding-left: 0.5em;
+       padding-right: 0.5em;
+}
+.tbl tr td:first-child {
+       border-left: 1px solid lightgrey;
+}
+
+.tbl tr td:last-child {
+       border-right: 1px solid lightgrey;
+}
+
+.tbl tr:first-child td {
+       border-top: 1px solid lightgrey;
+}
+
+.tbl tr:last-child td:only-child {
+       border-bottom: 1px solid lightgrey;
+}
+
+.tbl tr:last-child td:first-child {
+       border-bottom: 1px solid lightgrey;
+}
+
+.tbl tr:last-child td:last-child {
+       border-bottom: 1px solid lightgrey;
+}
+
+.tbl tr:last-child td {
+       border-bottom: 1px solid lightgrey;
+}
index c557e8b17b12d486e7566cc21c5204feadf38c60..63740d42d8385cf008b86d30d6fd2d376bca5329 100644 (file)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
 #                                                                             #
 ###############################################################################
+#                                                                             #
+# Theme file for IPfire (based on ipfire theme)                               #
+# Author kay-michael köhler kmk <michael@koehler.tk>                          #
+#                                                                             #
+# Version 1.0  March, 6th 2013                                               #
+###############################################################################
+#                                                                             #
+# Modyfied theme by a.marx@ipfire.org January 2014                            #
+#                                                                             #
+# Cleanup code, deleted unused code and rewrote the rest to get a new working #
+# IPFire default theme.                                                       #
+###############################################################################
 
-sub showmenu() {
-    print <<EOF
-                <div id="menu">
-                        <ul>
-EOF
-;
-    foreach my $k1 ( sort keys %$menu ) {
-        if (! $menu->{$k1}{'enabled'}) {
-            next;
-        }
-        my $link = getlink($menu->{$k1});
-        if ($link eq '') {
-            next;
-        }
-        if (! is_menu_visible($link)) {
-            next;
-        }
-        if ($menu->{$k1}->{'selected'}) {
-            print "<li><a href=\"$link\" class=\"active\">$menu->{$k1}{'caption'}</a></li>";
-        } else {
-            print "<li><a href=\"$link\">$menu->{$k1}{'caption'}</a></li>";
-        }
-    }
-    print <<EOF
-                        </ul>
-                </div>
-EOF
-;    
-}
+require "${General::swroot}/lang.pl";
 
-sub getselected($) {
-    my $root = shift;
-    if (!$root) {
-        return 0;
-    }
-
-    foreach my $item (%$root) {
-        if ($root->{$item}{'selected'}) {
-            return $root->{$item};
-        }
-    }
+###############################################################################
+#
+# print menu html elements for submenu entries
+# @param submenu entries
+sub showsubmenu() {
+       my $submenus = shift;
+       
+       print "<ul>";
+       foreach my $item (sort keys %$submenus) {
+               $link = getlink($submenus->{$item});
+               next if (!is_menu_visible($link) or $link eq '');
+
+               my $subsubmenus = $submenus->{$item}->{'subMenu'};
+
+               if ($subsubmenus) {
+                       print '<li class="has-sub ">';
+               } else {
+                       print '<li>';
+               }
+               print '<a href="'.$link.'">'.$submenus->{$item}->{'caption'}.'</a>';
+
+               &showsubmenu($subsubmenus) if ($subsubmenus);
+               print '</li>';
+       }
+       print "</ul>"
 }
 
-sub showsubsection($$) {
-    my $root = shift;
-
-    if (! $root) {
-        return;
-    }
-    my $selected = getselected($root);
-    if (! $selected) {
-        return;
-    }
-    my $submenus = $selected->{'subMenu'};
-    if (! $submenus) {
-        return;
-    }
-
-    print <<EOF
-        <h4><span>Side</span>menu</h4>
-        <ul class="links">
-EOF
-;
-    foreach my $item (sort keys %$submenus) {
-        my $hash = $submenus->{$item};
-        if (! $hash->{'enabled'}) {
-            next;
-        }
-        my $link = getlink($hash);
-        if ($link eq '') {
-            next;
-        }
-        if (! is_menu_visible($link)) {
-            next;
-        }
-        if ($hash->{'selected'}) {
-            print '<li class="selected">';
-        } else {
-            print '<li>';
-        }
-
-        print "<a href=\"$link\">$hash->{'caption'}</a></li>";
-    }
-
-    print <<EOF
-        </ul>
+###############################################################################
+#
+# print menu html elements
+sub showmenu() {
+       print '<div id="cssmenu" class="bigbox fixed">';
+
+       if ($settings{'SPEED'} ne 'off') {
+               print <<EOF;
+                       <div id='traffic'>
+                               <strong>Traffic:</strong>
+                               In  <span id='rx_kbs'>--.-- Bit/s</span> &nbsp;
+                               Out <span id='tx_kbs'>--.-- Bit/s</span>
+                       </div>
 EOF
-;
-}
+       }
 
+       print "<ul>";
+       foreach my $k1 ( sort keys %$menu ) {
+               $link = getlink($menu->{$k1});
+               next if (!is_menu_visible($link) or $link eq '');
+               print '<li class="has-sub "><a href="#"><span>'.$menu->{$k1}->{'caption'}.'</span></a>';
+               my $submenus = $menu->{$k1}->{'subMenu'};
+               &showsubmenu($submenus) if ($submenus);
+               print "</li>";
+       }
 
-sub showsubsubsection($) {
-    my $root = shift;
-    if (!$root) {
-        return;
-    }
-    my $selected = getselected($root);
-    if (! $selected) {
-        return
-    }
-    if (! $selected->{'subMenu'}) {
-        return
-    }
-
-    showsubsection($selected->{'subMenu'}, 'menu-subtop');
+       print "</ul></div>";
 }
 
+###############################################################################
+#
+# print page opening html layout
+# @param page title
+# @param boh
+# @param extra html code for html head section
+# @param suppress menu option, can be numeric 1 or nothing.
+#               menu will be suppressed if param is 1
 sub openpage {
-    my $title = shift;
-    my $boh = shift;
-    my $extrahead = shift;
-
-    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
-    &General::readhash("${swroot}/main/settings", \%settings);
-    &genmenu();
-
-    my $h2 = gettitle($menu);
-
-    $title = "IPFire - $title";
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
-    }
-
-    print <<END
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml'>
-<head>
-               <title>$title</title>
-    $extrahead
-END
-;
-    if ($settings{'FX'} ne 'off') {
-    print <<END
-    <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5,Transition=12)" />
-    <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5,Transition=12)" />
-END
-;
-    }
-    print <<END
-    <link rel="shortcut icon" href="/favicon.ico" />
-    <link rel="stylesheet" type="text/css" href="/themes/ipfire/include/style.css" />
-    <script language="javascript" type="text/javascript">
-      
-        function swapVisibility(id) {
-            el = document.getElementById(id);
-            if(el.style.display != 'block') {
-                el.style.display = 'block'
-            }
-            else {
-                el.style.display = 'none'
-            }
-        }
-    </script>
+       my $title = shift;
+       my $boh = shift;
+       my $extrahead = shift;
+       my $suppressMenu = shift;
+       my @tmp = split(/\./, basename($0));
+       my $scriptName = @tmp[0];
+
+       @URI=split ('\?',  $ENV{'REQUEST_URI'} );
+       &General::readhash("${swroot}/main/settings", \%settings);
+       &genmenu();
+
+       my $headline = "IPFire";
+       if (($settings{'WINDOWWITHHOSTNAME'} eq 'on') || ($settings{'WINDOWWITHHOSTNAME'} eq '')) {
+               $headline =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}";
+       }
+
+       my @stylesheets = ("style.css");
+       if ($THEME_NAME eq "ipfire-rounded") {
+               push(@stylesheets, "style-rounded.css");
+       }
+
+print <<END;
+<!DOCTYPE html>
+<html>
+       <head>
+       <title>$headline - $title</title>
+       $extrahead
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+       <link rel="shortcut icon" href="/favicon.ico" />
+       <script type="text/javascript" src="/include/jquery.js"></script>
+
+       <script type="text/javascript">
+               function swapVisibility(id) {
+                       \$('#' + id).toggle();
+               }
+       </script>
 END
-;
+
+       foreach my $stylesheet (@stylesheets) {
+               print "<link href=\"/themes/ipfire/include/css/$stylesheet\" rel=\"stylesheet\" type=\"text/css\" />\n";
+       }
+
 if ($settings{'SPEED'} ne 'off') {
 print <<END
-    <script type="text/javascript" src="/include/jquery-1.9.1.min.js"></script>
-    <script type="text/javascript">
-        var t_current;
-        var t_last;
-        var rxb_current;
-        var rxb_last;
-        var txb_current;
-        var txb_last;
-       function refreshInetInfo() {
-               \$.ajax({
-                       url: '/cgi-bin/speed.cgi',
-                        success: function(xml){
-                        t_current = new Date();
-                        var t_diff = t_current - t_last;
-                        t_last = t_current;
-
-                        rxb_current = \$("rxb",xml).text();
-                        var rxb_diff = rxb_current - rxb_last;
-                        rxb_last = rxb_current;
-
-                        var rx_kbs = rxb_diff/t_diff;
-                        rx_kbs = Math.round(rx_kbs*10)/10;
-
-                        txb_current = \$("txb",xml).text();
-                        var txb_diff = txb_current - txb_last;
-                        txb_last = txb_current;
-
-                        var tx_kbs = txb_diff/t_diff;
-                        tx_kbs = Math.round(tx_kbs*10)/10;
-
-                        \$("#rx_kbs").text(rx_kbs + ' kb/s');
-                        \$("#tx_kbs").text(tx_kbs + ' kb/s');
-                        }
-               });
-                window.setTimeout("refreshInetInfo()", 3000);
-       }
-       \$(document).ready(function(){
-               refreshInetInfo();
-       });
-    </script>
-  </head>
-  <body>
+       <script type="text/javascript" src="/themes/ipfire/include/js/refreshInetInfo.js"></script>
 END
 ;
 }
-else {
-print "</head><body>";}
-print <<END
-<!-- IPFIRE HEADER -->
-
-<div id="header">
 
-        <div id="header_inner" class="fixed">
-
-                <div id="logo">
+print <<END
+       </head>
+       <body>
+               <div id="header" class="fixed">
+                       <div id="logo">
 END
 ;
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        print "<h1><span>$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}</span></h1><br />"; 
-    } else {
-                                print "<h1><span>IPFire</span></h1><br />";
-                }
-                print <<END
-                        <h2>$h2</h2>
-                </div>
+       if ($settings{'WINDOWWITHHOSTNAME'} ne 'off') {
+               print "<h1>$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}</h1>";
+       } else {
+               print "<h1>IPFire</h1>";
+       }
 
+print <<END
+                       </div>
+               </div>
 END
 ;
-        &showmenu();
 
-print <<END     
-        </div>
-</div>
+&showmenu() if ($suppressMenu != 1);
 
-<div id="main">
-        <div id="main_inner" class="fixed">
-                <div id="primaryContent_2columns">
-                        <div id="columnA_2columns">
+print <<END
+       <div class="bigbox fixed">
+               <div id="main_inner" class="fixed">
+                       <h1>$title</h1>
 END
 ;
 }
 
+###############################################################################
+#
+# print page opening html layout without menu
+# @param page title
+# @param boh
+# @param extra html code for html head section
 sub openpagewithoutmenu {
-    my $title = shift;
-    my $boh = shift;
-    my $extrahead = shift;
-
-    @URI=split ('\?',  $ENV{'REQUEST_URI'} );
-    &General::readhash("${swroot}/main/settings", \%settings);
-    &genmenu();
-
-    my $h2 = gettitle($menu);
-
-    $title = "IPFire - $title";
-    if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
-        $title =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'} - $title"; 
-    }
-
-    print <<END
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
-<html xmlns='http://www.w3.org/1999/xhtml'>
-<head>
-               <title>$title</title>
-               $extrahead
-END
-;
-    if ($settings{'FX'} ne 'off') {
-    print <<END
-    <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5,Transition=12)" />
-    <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5,Transition=12)" />
-END
-;
-    }
-    print <<END
-    <link rel="shortcut icon" href="/favicon.ico" />
-    <link rel="stylesheet" type="text/css" href="/include/style.css" />
-    <script language="javascript" type="text/javascript">
-      
-        function swapVisibility(id) {
-            el = document.getElementById(id);
-            if(el.style.display != 'block') {
-                el.style.display = 'block'
-            }
-            else {
-                el.style.display = 'none'
-            }
-        }
-    </script>
-
-  </head>
-  <body>
-<!-- IPFIRE HEADER -->
-
-<div id="header">
-
-        <div id="header_inner" class="fixed">
-
-                <div id="logo">
-                        <h1><span>IPFire</span></h1>
-                        <h2>$h2</h2>
-                </div>  
-        </div>
-</div>
-
-<div id="main">
-        <div id="main_inner" class="fixed">
-                <div id="primaryContent_2columns">
-                        <div id="columnA_2columns">
-END
-;
+       openpage(shift,shift,shift,1);
+       return;
 }
 
-sub closepage () {
-       my $status = &connectionstatus();
-       my $uptime = `/usr/bin/uptime|cut -d \" \" -f 4-`;
-       $uptime =~ s/year(s|)/$Lang::tr{'year'}/;
-       $uptime =~ s/month(s|)/$Lang::tr{'month'}/;
-       $uptime =~ s/day(s|)/$Lang::tr{'day'}/;
-       $uptime =~ s/user(s|)/$Lang::tr{'user'}/;
-       $uptime =~ s/load average/$Lang::tr{'uptime load average'}/;     
-                               
-    print <<END
-                        </div>
-                </div>
-
-                <div id="secondaryContent_2columns">
-                
-                        <div id="columnC_2columns">
-END
-;
-    &showsubsection($menu);
-    &showsubsubsection($menu);
-
-        print <<END                     
-                               </div>
-            </div>
-            <br class="clear" />    
-                       <div id="footer" class="fixed">
-                               <b>Status:</b> $status <b>Uptime:</b> $uptime
-END
-;
-if ($settings{'SPEED'} ne 'off') {
-print <<END                        
-                        <br />
-                                <b>$Lang::tr{'bandwidth usage'}:</b>
-                               $Lang::tr{'incoming'}: <span id="rx_kbs"></span>&nbsp;$Lang::tr{'outgoing'}: <span id="tx_kbs"></span>
+###############################################################################
+#
+# print page closing html layout
 
-END
-;
-}
-print <<END
-                </div>
-        </div>
-</div>
+sub closepage () {
+       open(FILE, "</etc/system-release");
+       my $system_release = <FILE>;
+       $system_release =~ s/core/Core Update /;
+       close(FILE);
+
+print <<END;
+               </div>
+       </div>
+
+       <div id="footer" class='bigbox fixed'>
+               <span class="pull-right">
+                       <a href="http://www.ipfire.org/" target="_blank"><strong>IPFire.org</strong></a> &bull;
+                       <a href="http://www.ipfire.org/donate" target="_blank">$Lang::tr{'support donation'}</a>
+               </span>
+
+               <strong>$system_release</strong>
+       </div>
 </body>
 </html>
 END
 ;
 }
 
-sub openbigbox
-{
+###############################################################################
+#
+# print big box opening html layout
+sub openbigbox {
 }
 
-sub closebigbox
-{
+###############################################################################
+#
+# print big box closing html layout
+sub closebigbox {
 }
 
-sub openbox
-{
-        $width = $_[0];
-        $align = $_[1];
-        $caption = $_[2];
-
-        print <<END
-<!-- openbox -->
-        <div class="post" align="$align">
-END
-;
+###############################################################################
+#
+# print box opening html layout
+# @param page width
+# @param page align
+# @param page caption
+sub openbox {
+       $width = $_[0];
+       $align = $_[1];
+       $caption = $_[2];
+
+       if($align eq 'center') {
+               print "<div class='post' align='center'>\n"
+       }
+       else {
+               print "<div class='post'>\n";
+       }
 
-        if ($caption) { print "<h3>$caption</h3>\n"; } else { print "&nbsp;"; }
+       if ($caption) {
+               print "<h2>$caption</h2>\n";
+       }
 }
 
-sub closebox
-{
-        print <<END
-        </div>
-        <br class="clear" />
-        <!-- closebox -->
-END
-;
+###############################################################################
+#
+# print box closing html layout
+sub closebox {
+       print "</div>";
 }
 
 1;
diff --git a/html/html/themes/ipfire/include/js/refreshInetInfo.js b/html/html/themes/ipfire/include/js/refreshInetInfo.js
new file mode 100644 (file)
index 0000000..259f86e
--- /dev/null
@@ -0,0 +1,69 @@
+/* refreshInetInfo.js
+* functions for retrieving status information via jQuery
+* Modified: March 6th, 2013 by michael@koehler.tk
+* Authors:     IPFire Team (info@ipfire.org)
+                       Kay-Michael Köhler (michael@koehler.tk)
+* Visit http://www.ipfire.org/
+*/
+
+var t_current;
+var t_last = 0;
+var rxb_current;
+var rxb_last = 0;
+var txb_current;
+var txb_last = 0;
+
+$(document).ready(function(){
+       refreshInetInfo();
+});
+
+function refreshInetInfo() {
+       $.ajax({
+               url: '/cgi-bin/speed.cgi',
+               success: function(xml) {
+                       t_current = new Date();
+                       var t_diff = t_current - t_last;
+
+                       rxb_current = $("rxb", xml).text();
+                       var rxb_diff = rxb_current - rxb_last;
+                       rxb_last = rxb_current;
+
+                       var rx_bits = rxb_diff * 8192 / t_diff;
+                       var rx_fmt = format_bytes(rx_bits);
+
+                       txb_current = $("txb", xml).text();
+                       var txb_diff = txb_current - txb_last;
+                       txb_last = txb_current;
+
+                       var tx_bits = txb_diff * 8192 / t_diff;
+                       var tx_fmt = format_bytes(tx_bits);
+
+                       if (t_last != 0) {
+                               $("#rx_kbs").text(rx_fmt);
+                               $("#tx_kbs").text(tx_fmt);
+                       }
+
+                       t_last = t_current;
+               }
+       });
+
+       window.setTimeout("refreshInetInfo()", 2000);
+}
+
+function format_bytes(bytes) {
+       var units = ["Bit/s", "kBit/s", "MBit/s", "GBit/s", "TBit/s"];
+
+       var unit = units[0];
+       for (var i = 1; i < units.length; i++) {
+               if (bytes < 1024)
+                       break;
+
+               unit = units[i];
+               bytes /= 1024;
+       }
+
+       // Round the output.
+       bytes = bytes.toFixed(2);
+
+       return bytes + " " + unit;
+}
index 62bbf101e724e6f4e44ab72b04f94059c4b76c83..e8514adfbf8e241de29c14353f6f9303523e0e7b 100644 (file)
@@ -149,19 +149,9 @@ sub openpage {
 <head>
                <title>$title</title>
     $extrahead
-END
-;
-    if ($settings{'FX'} ne 'off') {
-    print <<END
-    <meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5,Transition=12)" />
-    <meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5,Transition=12)" />
-END
-;
-    }
-    print <<END
     <link rel="shortcut icon" href="/favicon.ico" />
     <link rel="stylesheet" type="text/css" href="/themes/maniac/include/style.css" />
-    <script language="javascript" type="text/javascript">
+    <script type="text/javascript">
       
         function swapVisibility(id) {
             el = document.getElementById(id);
@@ -177,7 +167,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;
@@ -294,7 +284,7 @@ END
     print <<END
     <link rel="shortcut icon" href="/favicon.ico" />
     <link rel="stylesheet" type="text/css" href="/include/style.css" />
-    <script language="javascript" type="text/javascript">
+    <script type="text/javascript">
       
         function swapVisibility(id) {
             el = document.getElementById(id);
index 6275d8a0782758807b2cc97cf3b6cbc0076f6eba..33a2fd40d2818d3581ab1441541777d54f48a56e 100644 (file)
@@ -1,7 +1,7 @@
 %tr = ( 
 %tr,
 
-'Act as' => 'Konfiguriert als',
+'Act as' => 'Konfiguriert als:',
 'Add Level7 rule' => 'Level7-Regel hinzufügen',
 'Add Port Rule' => 'Port-Regel hinzufügen',
 'Add Rule' => 'Regel hinzufügen',
 'Choose Rule' => 'Wählen Sie <u>eine</u> der untenstehenden Regeln aus.',
 'Class' => 'Klasse',
 'Class was deleted' => 'wurde mit eventuell vorhandenen Unterklassen gelöscht',
-'Client status and controlc' => 'Client-Status und -Kontrolle',
 'ConnSched action' => 'Aktion:',
 'ConnSched add action' => 'Aktion hinzufügen',
 'ConnSched change profile title' => 'Wechsle zu Profil:',
 'ConnSched days' => 'Tage:',
+'ConnSched dial' => 'Verbinden',
 'ConnSched down' => 'Runter',
-'ConnSched ipsecstart' => 'IPSec (neu)starten',
-'ConnSched ipsecstop' => 'IPSec stop',
+'ConnSched hangup' => 'Trennen',
+'ConnSched ipsecstart' => 'IPsec (neu)starten',
+'ConnSched ipsecstop' => 'IPsec stop',
+'ConnSched reboot' => 'Neustarten',
 'ConnSched reconnect' => 'Neu verbinden',
 'ConnSched scheduled actions' => 'Geplante Aktionen',
 'ConnSched scheduler' => 'Scheduler',
 'ConnSched select profile' => 'Wähle Profil',
+'ConnSched shutdown' => 'Herunterfahren',
 'ConnSched time' => 'Zeit:',
 'ConnSched up' => 'Hoch',
 'ConnSched weekdays' => 'Wochentage:',
 'Level7 Rule' => 'Level7-Regel',
 'Level7 rule' => 'Level7-Regel',
 'Local VPN IP' => 'Internes Netzwerk (GREEN)',
-'MTU' => 'MTU Size',
+'MB read' => 'MB gelesen',
+'MB written' => 'MB geschrieben',
+'MTU' => 'MTU-Größe:',
+'MTU settings' => 'MTU-Einstellungen:',
+'Number of Countries for the pie chart' => 'Anzahl der angezeigten Länder im Diagramm',
 'Number of IPs for the pie chart' => 'Anzahl der angezeigten IPs im Diagramm',
 'Number of Ports for the pie chart' => 'Anzahl der angezeigten Ports im Diagramm',
 'OVPN' => 'OpenVPN',
 'action' => 'Aktion',
 'activate' => 'aktivieren',
 'activate user' => 'Benutzer aktivieren',
-'active' => 'aktiv',
+'active' => 'Aktiv',
 'add' => 'Hinzufügen',
-'add a host' => 'Host hinzufügen:',
+'add a host' => 'Host hinzufügen',
 'add a new rule' => 'Neue Regel hinzufügen:',
 'add cron' => 'Cronjob hinzufügen',
 'add device' => 'Gerät hinzufügen',
 'add network' => 'Netzwerk hinzufügen',
-'add new alias' => 'Neue Alias-Adresse hinzufügen:',
+'add new alias' => 'Neue Alias-Adresse hinzufügen',
 'add new lease' => 'Neue Zuordnung definieren',
 'add new ovpn' => 'OpenVPN-Einstellungen',
 'add printer' => 'Drucker hinzufügen',
 'add xtaccess' => 'Externen Zugang hinzugefügt',
 'add-route' => 'Additional push route',
 'added from dhcp lease list' => 'hinzugefügt von der DHCP-Zuordnungsliste',
+'addon' => 'Addons',
 'admin user password has been changed' => 'Passwort für Benutzer admin wurde geändert.',
 'admin users' => 'Liste der Benutzer mit Super User Rechten',
 'administrator user password' => 'Passwort für Benutzer &quot;admin&quot;:',
-'adsl settings' => 'ADSL-Einstellungen',
 'advanced' => 'Erweitert',
 'advanced server' => 'Erweiterte Server-Optionen',
 'advproxy AUTH always required' => 'Authentifizierung für uneingeschränkte Quelladressen erforderlich',
 'advproxy errmsg password length 1' => 'Passwort muss mindestens',
 'advproxy errmsg password length 2' => ' Zeichen enthalten',
 'advproxy errmsg passwords different' => 'Passwörter stimmen nicht überein',
+'advproxy errmsg proxy ports equal' => 'Der Proxy-Port darf nicht identisch mit dem transparenten Port sein.',
 'advproxy errmsg radius port' => 'Ungültige RADIUS Portnummer',
 'advproxy errmsg radius secret' => 'Shared Secret erforderlich',
 'advproxy errmsg radius server' => 'Ungültige IP-Adresse für den RADIUS-Server',
 'advproxy on' => 'Proxy an',
 'advproxy privacy' => 'Datenschutz',
 'advproxy proxy port' => 'Proxy-Port',
+'advproxy proxy port transparent' => 'Transparenter Port',
 'advproxy ram cache size' => 'Cachegröße im Arbeitsspeicher (MB)',
 'advproxy redirector children' => 'Anzahl der Filterprozesse',
 'advproxy reset' => 'Zurücksetzen',
 'april' => 'April',
 'archive not exist' => 'Konfigurationsarchiv existiert nicht',
 'are you sure' => 'Sind Sie sicher?',
-'arp table entries' => 'Einträge der ARP-Tabelle:',
+'arp table entries' => 'Einträge der ARP-Tabelle',
 'artist' => 'Künstler',
+'atm device' => 'Device:',
+'atm settings' => 'ATM-Einstellungen',
 'attemps' => 'Versuche',
 'attention' => 'ACHTUNG',
 'august' => 'August',
 'basic options' => 'Basisoptionen',
 'beep when ppp connects or disconnects' => 'Piepen, wenn IPFire verbindet oder trennt',
 'behind a proxy' => 'Hinter einem Proxy:',
+'bit' => 'Bit',
 'bitrate' => 'Bitrate',
 'bleeding rules' => 'Bleeding Edge Snort Rules',
 'blue' => 'BLAU',
 'cant change certificates' => 'Kann Zertifikate nicht ändern.',
 'cant enable xtaccess' => 'Die zugehörige Port-Weiterleitungsregel ist deaktiviert, daher können Sie den externen Zugang für diese Regel nicht aktivieren.',
 'cant start openssl' => 'Kann OpenSSL nicht starten',
+'capabilities' => 'Unterstützte Features',
 'caps all' => 'ALLE',
 'capsclosed' => 'GETRENNT',
 'capsinactive' => 'INAKTIV',
 'ccd err iroute' => 'Netzadresse für Route ungültig.',
 'ccd err irouteexist' => 'Diese Route wird bereits verwendet.',
 'ccd err isipsecnet' => 'Diese Subnetzadresse wird bereits für ein IPsec-Netzwerk verwendet.',
-'ccd err isovpnnet' => 'Subnetzadresse wird für bereits für den OpenVPN-Server verwendet!',
-'ccd err issubnet' => 'Subnetzadresse wird bereits verwendet.',
+'ccd err isipsecrw' => 'Diese Subnetzadresse wird bereits für das IPsec-RW Netz verwendet.',
+'ccd err isovpnn2n' => 'Die Subnetzadresse wird für bereits für eine OpenVPN Netz-zu-Netz-Verbindung verwendet.',
+'ccd err isovpnnet' => 'Die Subnetzadresse wird für bereits für den OpenVPN-Server verwendet.',
+'ccd err issubnet' => 'Die Subnetzadresse wird bereits verwendet.',
 'ccd err name' => 'Es muss ein Name angegeben werden.',
 'ccd err nameexist' => 'Name existiert bereits.',
 'ccd err netadr' => 'Subnetzadresse ist ungültig oder Bereich zu groß.',
 'ccd used' => 'Genutzte Adressen',
 'cert' => 'Zertifikat',
 'certificate' => 'Zertifikat',
-'certificate authorities' => 'Zertifizierungsstellen (CAs)',
+'certificate authorities' => 'Zertifizierungsstellen und -Schlüssel',
 'certificate does not have a valid ca associated with it' => 'Mit dem Zertifikat ist keine gültige CA verbunden.',
 'certificate file move failed' => 'Verschieben der Zertifikatsdatei fehlgeschlagen',
 'cfg restart' => 'Nach dem Wiederherstellen eines Konfigurationsarchivs wird ein Neustart empfohlen.',
 'check for net traffic update' => 'Prüfe auf Net-Traffic-Updates',
 'check vpn lr' => 'Überprüfen',
 'choose config' => 'Konfiguration auswählen',
-'cipher' => 'Verschlüsselung',
+'cipher' => 'Verschlüsselung:',
 'city' => 'Stadt',
 'class in use' => 'Die aktuelle Klasse wird bereits verwendet.',
 'clear cache' => 'Zwischenspeicher löschen',
 'clock last synchronized at' => 'Die Uhr wurde zuletzt synchronisiert um',
 'comment' => 'Kommentar',
 'common name' => 'Gemeinsamer Name',
-'community rules' => 'Emergingthreats.net Community Rules',
 'comp-lzo' => 'LZO-Kompression',
 'compression' => 'Kompression:',
 'computer to modem rate' => 'Übertragungsrate zwischen Computer und Modem:',
 'connection' => 'Verbindung',
 'connection closed' => 'Nicht Verbunden...',
 'connection debugging' => 'Verbindungs-Debugging',
-'connection status and controlc' => 'Verbindungsstatus und -kontrolle:',
-'connection tracking' => 'IPTables-Verbindungsverfolgung',
+'connection status and controlc' => 'Verbindungsstatus und -Kontrolle',
+'connection tracking' => 'iptables-Verbindungsverfolgung',
 'connection type' => 'Verbindungstyp',
 'connection type is invalid' => 'Verbindungstyp ist ungültig',
 'connections' => 'Verbindungen',
 'could not open installed updates file' => 'Datei mit Update-Liste konnte nicht geöffnet werden',
 'could not open update information file' => 'Datei mit den Update-Information konnte nicht geöffnet werden. Die Update-Datei ist beschädigt.',
 'could not retrieve common name from certificate' => 'Der Gemeinsame Name (CN) konnte nicht aus dem Zertifikat gelesen werden.',
+'count' => 'Anzahl',
+'countries' => 'Länder',
 'country' => 'Land',
+'country codes and flags' => 'Länder und Länderkennungen',
+'countrycode' => 'Kennung',
 'cpu frequency per' => 'CPU-Frequenz pro',
 'cpu idle usage' => 'Leerlauf CPU-Nutzung',
 'cpu interrupt usage' => 'Interrupt CPU-Nutzung',
 'crl' => 'Certificate Revocation List',
 'cron server' => 'Cron-Server',
 'current' => 'Aktuell',
-'current aliases' => 'Aktuelle Alias-Adresse:',
+'current aliases' => 'Aktuelle Alias-Adresse',
 'current class' => 'Aktuelle Klasse',
 'current devices' => 'Schnittstellen',
 'current dhcp leases on blue' => 'Aktuelle DHCP-Zuordnungen auf Blau',
 'current dynamic leases' => 'Aktuelle dynamische Zuordnungen',
 'current fixed leases' => 'Aktuelle feste Zuordnungen',
-'current hosts' => 'Aktuelle Hosts:',
+'current hosts' => 'Aktuelle Hosts',
 'current media' => 'Aktuelles Medium',
 'current ovpn' => 'Aktive OVPN-Verbindung',
 'current playlist' => 'Aktuelle Playlist',
 'december' => 'Dezember',
 'deep scan directories' => 'rekursiv scannen',
 'def lease time' => 'Standardzeit für Zuordnung',
+'default' => 'Voreinstellung',
+'default ip' => 'Standard IP-Adresse',
 'default lease time' => 'Haltezeit-Voreinstellung in min:',
 'default networks' => 'Standard Netzwerke',
 'default renewal time' => 'Standard-Aktualisierungszeit',
 'destination port numbers' => 'Zielport muß ein(e) gültige(r) Portnummer oder Portbereich sein.',
 'destination port overlaps' => 'Der Zielportbereich überlappt einen bereits bestehenden Portbereich.',
 'detail level' => 'Detaillierungsgrad',
+'details' => 'Mehr',
 'device' => 'Gerät',
 'devices on blue' => 'Geräte auf Blau',
+'dh' => 'Diffie-Hellman-Parameter',
+'dh key move failed' => 'Verschieben der Diffie-Hellman-Parameter fehlgeschlagen.',
+'dh key warn' => 'Das Generieren der DH-Parameter mit 1024 oder 2048 Bit dauert üblicherweise mehrere Minuten. Schlüssellängen von 3072 oder 4096 Bit beanspruchen mehrere Stunden. Bitte haben Sie etwas Geduld.',
+'dh key warn1' => 'Bei schwachen Systemen oder Systeme mit wenig Entropie wird empfohlen lange Diffie-Hellman-Parameter über die Upload-Funktion hochzuladen.',
+'dh parameter' => 'Diffie-Hellman-Parameter',
 'dhcp advopt add' => 'DHCP Option hinzufügen',
 'dhcp advopt added' => 'DHCP Option hinzugefügt',
 'dhcp advopt blank value' => 'Wert für DHCP Option darf nicht leer sein',
 'dmz pinhole rule added' => 'Regel für DMZ-Schlupfloch hinzugefügt; Starte DMZ-Schlupfloch neu',
 'dmz pinhole rule removed' => 'Regel für DMZ-Schlupfloch entfernt; Starte DMZ-Schlupfloch neu',
 'dmzpinholes for same net not necessary' => 'DMZ-Schlupflöcher werden im gleichen Netz nicht benötigt. Wählen Sie ein anderes Quell- oder Ziel-Netz.',
+'dnat address' => 'Firewall-Interface',
 'dns address deleted' => 'Erfolgreich gelöscht! ',
 'dns address deleted txt' => 'DNS Server Adressen wurden erfolgreich gelöscht. Änderungen werden jedoch erst nach einem Neustart oder einer Wiederverbindung übernommen.',
 'dns address done' => 'Die DNS-Server Adressen Einstellungen werden übernommen.',
 'dns saved' => 'Erfolgreich gespeichert!',
 'dns saved txt' => 'Die beiden eingegebenen DNS-Server-Adressen wurde erfolgreich gespeichert.<br/>Um die Änderung wirksam zu machen, müssen Sie neustarten oder wiederverbinden!',
 'dns server' => 'DNS Server',
+'dns servers' => 'DNS-Server',
 'dns title' => 'Domain Name System',
+'dnsforward' => 'DNS-Weiterleitung',
+'dnsforward add a new entry' => 'Neuen Eintrag hinzufügen',
+'dnsforward configuration' => 'Einstellungen für DNS Weiterleitung',
+'dnsforward edit an entry' => 'Existierenden Eintrag bearbeiten',
+'dnsforward entries' => 'Aktuelle Einträge',
+'dnsforward forward_server' => 'DNS-Server',
+'dnsforward zone' => 'Zone',
 'do not log this port list' => 'Verwerfe diese Port-Liste kurz bevor sie protokolliert werden (reduziert Protokollgröße)',
 'dod' => 'Dial-on-Demand-Modus',
 'dod for dns' => 'Dial-on-Demand für DNS:',
 'downlink std class' => 'Downloadstandardklasse',
 'download' => 'herunterladen',
 'download ca certificate' => 'CA-Zertifikat herunterladen',
-'download certificate' => 'Zertifikate herunterladen',
+'download certificate' => 'Datei herunterladen',
+'download dh parameter' => 'Diffie-Hellman-Parameter herunterladen',
 'download host certificate' => 'Host-Zertifikat herunterladen',
 'download new ruleset' => 'Neuen Regelsatz herunterladen',
 'download pkcs12 file' => 'PKCS12-Datei herunterladen',
 'download root certificate' => 'Root-Zertifikat herunterladen',
+'download tls-auth key' => 'tls-auth Key herunterladen',
 'dpd action' => 'Aktion für Dead Peer Detection',
+'dpd delay' => 'Verzögerung',
+'dpd timeout' => 'Zeitüberschreitung',
 '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',
 'enabledtitle' => 'Aktiviert',
 'encapsulation' => 'Encapsulation',
 'encrypted' => 'Verschlüsselt',
+'encryption' => 'Verschlüsselung:',
 'end address' => 'Endadresse:',
 'enter ack class' => 'Legen Sie hier die ACK-Klasse fest <br /> und klicken Sie danach auf <i>Speichern</i>.',
 'enter data' => 'Geben Sie die Daten ein <br /> und klicken Sie danach auf <i>Speichern</i>.',
+'entropy' => 'Entropie',
+'entropy graphs' => 'Entropiegraphen',
 'err bk 1' => 'Fehler beim Erzeugen des Archivs',
 'err bk 10 password' => 'Fehler beim Datensicherungs-Passwort',
 'err bk 2 key' => 'Fehler beim Erzeugen der Schlüsseldatei',
 'err rs 8 untar' => 'Fehler beim un-tar-en des Archivs',
 'error config' => 'Kann /var/ipfire/ovpn/config/ZERINA.ovpn nicht öffnen!',
 'error external access' => 'Kann /var/ipfire/xtaccess/config nicht öffnen (external acccess could not be granted)!',
-'error messages' => 'Fehlermeldungen:',
+'error messages' => 'Fehlermeldungen',
 'esp encryption' => 'ESP Verschlüsselung:',
 'esp grouptype' => 'ESP Gruppentyp:',
 'esp integrity' => 'ESP Integrität:',
 'extrahd' => 'ExtraHD',
 'extrahd because there is already a device mounted' => ' mounten, weil bereits ein Gerät gemountet ist',
 'extrahd cant umount' => 'Konnte',
-'extrahd detected drives' => 'gefundene Laufwerke',
+'extrahd detected drives' => 'Gefundene Laufwerke',
 'extrahd install or load driver' => 'Wenn Ihre Festplatte nicht angezeigt wird, müssen Sie zuerst den Treiber laden oder ggf. auch nachinstallieren. Wenn diese jedoch angezeigt wird, aber keine Partitionen zu sehen sind, müssen diese erst angelegt werden.',
 'extrahd maybe the device is in use' => 'nicht mounten. Vielleicht wird das Gerät bereits verwendet',
 'extrahd to' => 'nicht nach',
 'firewall log' => 'Firewall-Protokoll',
 'firewall log viewer' => 'Betrachter der Firewall-Logdateien',
 'firewall logs' => 'Firewall-Logdateien',
+'firewall logs country' => 'Fw-Logdiagramme (Land)',
 'firewall logs ip' => 'Fw-Logdiagramme (IP)',
 'firewall logs port' => 'Fw-Logdiagramme (Port)',
+'firewall rules' => 'Firewallregeln',
 'firewallhits' => 'Firewalltreffer',
 'firmware' => 'Firmware',
 'firmware upload' => 'Hochladen der Firmware/Treiber',
 'fixed ip lease added' => 'Feste IP-Zuordnung hinzugefügt',
 'fixed ip lease modified' => 'Feste IP-Zuordnung geändert',
 'fixed ip lease removed' => 'Feste IP-Zuordnung gelöscht',
+'flag' => 'Flagge',
 '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 server' => 'Von Email Server',
 '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 blue' => 'Firewalloptionen 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 extport' => 'Bei Source-NAT-Regeln darf der externe Port nicht gesetzt sein.',
+'fwdfw dnat nochoice' => 'Bitte wählen Sie Source-NAT oder Destination-NAT im NAT-Bereich aus.',
+'fwdfw dnat porterr' => 'Für NAT-Regeln muss ein einzelner Port oder Portbereich angegeben werden.',
+'fwdfw dnat porterr2' => 'Externer Port (NAT) darf nur angegeben werden, wenn ein Ziel-Port definiert ist.',
+'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 hint mac' => 'Sie nutzen MAC-Adressen in der Zielgruppe. Diese werden bei der Regelerstellung übersprungen.',
+'fwdfw iface' => 'Interface',
+'fwdfw ipsec network' => 'IPsec-Netzwerke:',
+'fwdfw log' => 'Log',
+'fwdfw log rule' => 'Logging aktivieren',
+'fwdfw man port' => 'Port(s):',
+'fwdfw many' => 'Diverse',
+'fwdfw menu' => 'Firewall',
+'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-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 warn1' => 'Dies kann dazu führen, dass Firewallregeln auf Netze angewendet werden, für die sie nicht gedacht sind.',
+'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 Custom Host' => 'Host',
+'fwhost Custom Network' => 'Netzwerk',
+'fwhost IpSec Host' => 'IPsec-Host',
+'fwhost IpSec Network' => 'IPsec-Netzwerk',
+'fwhost OpenVPN N-2-N' => 'OpenVPN Netz-zu-Netz',
+'fwhost OpenVPN static host' => 'OpenVPN statischer Host',
+'fwhost OpenVPN static network' => 'OpenVPN statisches Netzwerk',
+'fwhost Standard Network' => 'Standard-Netzwerk',
+'fwhost addgrp' => 'Neue Gruppe hinzufügen',
+'fwhost addgrpname' => 'Gruppenname:',
+'fwhost addhost' => 'Neuen Host hinzufügen',
+'fwhost addnet' => 'Neues Netzwerk hinzufügen',
+'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' => 'Eine Gruppe mit diesem Namen 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 maxservicetcp' => 'Die maximale Anzahl von 15 TCP-Diensten in einer Gruppe wurde erreicht (Portranges zählen zweifach)',
+'fwhost err maxserviceudp' => 'Die maximale Anzahl von 15 UDP-Diensten in einer Gruppe wurde erreicht (Portranges zählen zweifach)',
+'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 dh' => 'Neuen Diffie-Hellman-Parameter erzeugen',
 'gen static key' => 'Statischen Schlüssel erzeugen',
 'generate' => 'Root/Host-Zertifikate generieren',
 'generate a certificate' => 'Erzeuge ein Zertifikat:',
+'generate dh key' => 'Diffie-Hellman Key generieren',
 'generate iso' => 'ISO erstellen',
 'generate root/host certificates' => 'Erzeuge Root/Host-Zertifikate',
 'generate tripwire keys and init' => 'Tripwire Initalisierung',
 'graph per' => 'pro',
 'green' => 'GRÜN',
 'green interface' => 'Grünes Interface',
+'grouptype' => 'Gruppentyp:',
 'guaranteed bandwith' => 'Garantierte Bandbreite',
 'guardian alertfile' => 'Alertfile',
 'guardian configuration' => 'Guardian Konfiguration',
 'hangup' => 'Trennen',
 'hangup string' => 'Auflegen:',
 'harddisk temperature' => 'Festplattentemperatur',
-'harddisk temperature graphs' => 'HDD-Temperatur-Diagramme',
+'harddisk temperature graphs' => 'HDD-Diagramme',
 'hardware graphs' => 'Hardware-Diagramme',
+'hardware support' => 'Hardware-Unterstützung',
 'hdd temperature in' => 'Festplattentemperatur in',
 'help' => 'Hilfe',
 'high' => 'Hoch',
 'ike integrity' => 'IKE Integrität:',
 'ike lifetime' => 'IKE Lebensdauer:',
 'ike lifetime should be between 1 and 8 hours' => 'IKE Lebensdauer sollte zwischen 1 und 8 Stunden betragen.',
+'imei' => 'IMEI',
 'import' => 'Import',
 'importkey' => 'PSK importieren',
+'imsi' => 'IMSI',
 'in' => 'Ein',
 'inactive' => 'inaktiv',
 'include logfiles' => 'mit Logdateien',
 'incoming' => 'eingehend',
+'incoming firewall access' => 'Eingehender Firewallzugang',
 'incoming traffic in bytes per second' => 'Eingehender Verkehr',
 'incorrect password' => 'Fehlerhaftes Passwort',
 'info' => 'Info',
 'installed' => 'Installiert',
 'installed updates' => 'Installierte Updates:',
 'instant update' => 'Sofortiges Update',
+'integrity' => 'Integrität:',
 'interface' => 'Schnittstelle',
 'interfaces' => 'Interfaces',
 'internet' => 'INTERNET',
 'invalid input for dhcp dns' => 'Ungültige Eingabe für DHCP DNS',
 'invalid input for dhcp domain' => 'Ungültige Eingabe für DHCP Domain',
 'invalid input for dhcp wins' => 'Ungültige Eingabe für DHCP WINS',
+'invalid input for dpd delay' => 'Ungültige Eingabe für DPD-Verzögerung',
+'invalid input for dpd timeout' => 'Ungültige Eingabe für DPD-Zeitüberschreitung',
 'invalid input for e-mail address' => 'Ungültige Eingabe für die E-mail Adresse',
 'invalid input for esp keylife' => 'Ungültige Eingabe für ESP Schlüssel-Lebensdauer',
 'invalid input for hostname' => 'Ungültige Eingabe für Hostname',
 'ipfire side is invalid' => 'IPFire Seite ist ungültig.',
 'ipfires hostname' => 'IPFire\'s Hostname',
 'ipinfo' => 'IP-Info',
+'ipsec' => 'IPsec',
+'ipsec network' => 'IPsec-Netzwerke',
+'ipsec no connections' => 'Keine aktiven IPsec Verbindungen',
 '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',
 'last activity' => 'Letzte Aktivität',
 'lateprompting' => 'Late prompting',
 'lease expires' => 'Zuordnung verfällt',
+'least preferred' => 'weniger präferiert',
 'legend' => 'Legende',
 'length' => 'Länge',
+'lifetime' => 'Lebensdauer:',
 'line' => 'Leitung',
 'linkq' => 'Antwortzeit',
 'load printer' => 'Load Printer',
 'local vpn hostname/ip' => 'Lokaler VPN Hostname/IP',
 'localkey' => 'Localkey',
 'localkeyfile' => 'Localkeyfile',
-'log' => 'Protokoll:',
+'log' => 'Protokoll',
 'log enabled' => 'Log aktiviert',
 'log level' => 'Log Level',
 'log lines per page' => 'Zeilen pro Seite',
 'log view' => 'Log Anzeige',
 'log viewer' => 'Protokollansicht',
 'log viewing options' => 'Log Ansichts-Optionen',
-'log-options' => 'Logfile options',
+'log-options' => 'Logfile Optionen',
 'loged in at' => 'Angemeldet seit',
 'logging' => 'Logging',
 'logging server' => 'Protokollierungs-Server',
 'mac address recon' => 'Es wird neu Verbunden!',
 'mac address saved' => 'Erfolgreich gespeichert!',
 'mac address saved txt' => 'Die MAC-Adresse wurde erfolgreich gespeichert. Änderungen werden jedoch erst nach einem Neustart oder einer Wiederverbindung übernommen.',
-'mac address title' => 'Medium Access Control Adresse',
+'mac address title' => 'MAC Adresse zuweisen',
 'mac desc' => 'Sie können an dieser Stelle die MAC-Adresse von red0 ändern. Die Adresse muss in hexadezimal (0-9,a-f) eingegeben werden, eine gültige Eingaben ist z.B. 00-01-02-0e-b8-d6 oder 00:01:02:0e:b8:d6.',
+'mac filter' => 'MAC-Filter',
 'mac new' => 'Neue MAC-Adresse:',
 'mac1 new' => 'Neue MAC-Adresse 1 (vdsl-inet):',
 'mac2 new' => 'Neue MAC-Adresse 2 (vdsl-iptv):',
 'max size' => 'Max. Objektgröße (kB):',
 'max throughput' => 'Maximaler Durchsatz',
 'maximal' => 'Maximal',
+'maximum' => 'Maximum',
 'maximum retries' => 'Maximale Wiederholversuche:',
 'may' => 'Mai',
 'mbmon display' => 'Anzeigen',
 'min delay' => 'Minimale Verzögerung',
 'min size' => 'Min. Objektgröße (kB):',
 'minimal' => 'Minimal',
+'minimum' => 'Minimum',
 'minute' => 'Minute',
 'minutes' => 'Minuten',
 'misc-options' => 'Sonstige Optionen',
 'missing dat' => 'Verschlüsseltes Archiv wurde nicht gefunden',
 'missing gz' => 'Nichtverschlüsseltes Archiv wurde nicht gefunden',
 'mode' => 'Modus',
+'model' => 'Modell',
 'modem' => 'Modem',
 'modem configuration' => 'Modem-Konfiguration',
+'modem hardware details' => 'Modem-Hardware',
+'modem information' => 'Modem-Informationen',
+'modem network bit error rate' => 'Bit-Fehlerrate',
+'modem network information' => 'Netzwerkinformationen',
+'modem network mode' => 'Netzwerkmodus',
+'modem network operator' => 'Netzbetreiber',
+'modem network registration' => 'Netzregistrierung',
+'modem network signal quality' => 'Signalqualität',
+'modem no connection' => 'Keine Verbindung',
+'modem no connection message' => 'Es konnte keine Verbindung zum Modem aufgebaut werden.',
 'modem on com1' => 'Modem an COM1',
 'modem on com2' => 'Modem an COM2',
 'modem on com3' => 'Modem an COM3',
 'modem on com4' => 'Modem an COM4',
 'modem on com5' => 'Modem an COM5',
 'modem settings have errors' => 'Modemeinstellungen fehlerhaft',
+'modem sim information' => 'SIM-Informationen',
 'modem speaker on' => 'Modemlautsprecher an:',
+'modem status' => 'Modem-Status',
 'modify' => 'Ändern',
 'modulation' => 'Modulation',
 'monday' => 'Montag',
+'monitor interface' => 'Monitor-Schnittstelle',
 'month' => 'Monat',
 'month-graph' => 'Monat',
 'monthly firewallhits' => 'monatliche Firewalltreffer',
 'monthly volume start day short' => 'Erste Tag',
 'months' => 'Monate',
 'more' => 'weitere',
+'most preferred' => 'präferiert',
 'mount' => 'Einbinden',
 'mounted on' => 'Mounted auf',
 'mpfire' => 'Media Player für IPFire',
 'network red' => 'Netzwerk (extern)',
 'network removed' => 'Benutzerdefiniertes Netzwerk entfernt',
 'network status information' => 'Netzwerk-Statusinformationen',
-'network time' => 'Benutze NTP-Server:',
+'network time' => 'Benutze NTP-Server',
 'network time from' => 'Uhrzeit von einem Netzwerk Zeitserver ermitteln',
 'network traffic graphs' => 'Diagramme zur Netzwerkauslastung',
 'network traffic graphs external' => 'Net-Traffic-Diagramme (extern)',
 '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',
+'never' => 'Nie',
+'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',
 'no eciadsl synch.bin file' => 'Keine ECI ADSL Datei synch.bin vorhanden. Bitte hochladen.',
 'no filter pass' => 'Legen Sie hier die Standardklassen fest durch die nicht-gefilterte Pakete gehen.',
 'no fritzdsl driver' => 'Kein Fritz!DSL-Treiber vorhanden. Bitte hochladen.',
+'no hardware random number generator' => 'Dieses System hat keine Entropiequelle.',
 'no information available' => 'Keine Informationen verfügbar.',
 'no log selected' => 'kein Log ausgewählt',
 'no modem selected' => 'Kein Modem ausgewählt',
 'nonetworkname' => 'Kein Netzwerkname wurde eingegeben',
 'noservicename' => 'Kein Dienstname wurde eingegeben',
 'not a valid ca certificate' => 'Kein gültiges CA Zertifikat.',
+'not a valid dh key' => 'Kein gültiger Diffie-Hellman-Parameter. Es sind nur Parameter mit einer Länge von 1024, 2048, 3072 oder 4096 Bit im PKCS#3-Format erlaubt.',
 'not enough disk space' => 'Nicht genügend Plattenplatz vorhanden',
 'not present' => '<B>Nicht</B> vorhanden',
 'not running' => 'nicht gestartet',
 'not set' => 'nicht gesetzt',
+'notice' => 'Hinweis',
 'november' => 'November',
 'ntp common settings' => 'Allgemeine Einstellungen',
-'ntp configuration' => 'NTP-Konfiguration',
+'ntp configuration' => 'Zeitserver-Konfiguration',
 'ntp must be enabled to have clients' => 'Um Clients annehmen zu können, muß NTP vorher aktiviert sein.',
 'ntp server' => 'NTP-Server',
 'ntp sync' => 'Synchronisation',
 'openvpn fragment allowed with udp' => '"fragment" kann nur in Kombination mit dem UDP-Protokoll genutzt werden.',
 'openvpn log' => 'OpenVPN Log',
 'openvpn mssfix allowed with udp' => '"mssfix" kann nur in Kombination mit dem UDP-Protokoll genutzt werden.',
+'openvpn network' => 'OpenVPN-Netzwerke',
 'openvpn prefix local subnet' => 'Die Prefix-Notation wird nicht unterstützt. Bitte geben Sie eine Subnetzmaske beim lokalen Subnetz ein wie z.B. 255.255.255.0.',
 'openvpn prefix openvpn subnet' => 'Die Prefix-Notation wird nicht unterstützt. Bitte geben Sie eine Subnetzmaske beim OpenVPN-Subnetz ein wie z.B. 255.255.255.0.',
 'openvpn prefix remote subnet' => 'Die Prefix-Notation wird nicht unterstützt. Bitte geben Sie eine Subnetzmaske beim entfernten Subnetz ein wie z.B. 255.255.255.0.',
 'optional at cmd' => 'zusätzlicher Modembefehl',
 'optional data' => '3. Optionale Einstellungen',
 'options' => 'Optionen',
-'options fw' => 'Firewall Optionen',
+'options fw' => 'Firewalloptionen',
 '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',
 'out' => 'Aus',
 'outgoing' => 'ausgehend',
 'outgoing firewall' => 'Ausgehende Firewall',
+'outgoing firewall access' => 'Ausgehender Firewallzugang',
 'outgoing firewall add ip group' => 'IP Adressgruppen hinzufügen',
 'outgoing firewall add mac group' => 'MAC Adressgruppen hinzufügen',
 'outgoing firewall edit ip group' => 'IP Adressgruppen bearbeiten',
 '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' => 'OpenVPN',
 'ovpn con stat' => 'OpenVPN Verbindungs-Statistik',
 'ovpn config' => 'OVPN-Konfiguration',
+'ovpn crypt options' => 'Kryptografieoptionen',
 'ovpn device' => 'OpenVPN-Gerät',
+'ovpn dh' => 'Diffie-Hellman-Parameter-Länge',
+'ovpn dh new key' => 'Neuen Diffie-Hellman Parameter erstellen',
+'ovpn dh parameters' => 'Diffie-Hellman-Parameter Optionen',
+'ovpn dh upload' => 'Neuen Diffie-Hellman-Parameter hochladen',
 'ovpn dl' => 'OVPN-Konfiguration downloaden',
+'ovpn engines' => 'Krypto Engine',
 'ovpn errmsg green already pushed' => 'Route für grünes Netzwerk wird immer gesetzt',
 'ovpn errmsg invalid ip or mask' => 'Ungültige Netzwerk-Adresse oder Subnetzmaske',
+'ovpn generating the root and host certificates' => 'Die Erzeugung der Root- und Host-Zertifikate kann lange Zeit dauern.',
+'ovpn ha' => 'Hash-Algorithmus',
+'ovpn hmac' => 'HMAC-Optionen',
 'ovpn log' => 'OVPN-Log',
+'ovpn mgmt in root range' => 'Ein Port von 1024 oder höher ist erforderlich.',
 'ovpn mtu-disc' => 'Path MTU Discovery',
 'ovpn mtu-disc and mtu not 1500' => 'Path MTU Discovery benötigt eine MTU von 1500.',
 'ovpn mtu-disc maybe' => 'Optional',
 'ovpn mtu-disc off' => 'Deaktiviert',
 'ovpn mtu-disc with mssfix or fragment' => 'Path MTU Discovery kann nicht gemeinsam mit mssfix oder fragment verwendet werden.',
 'ovpn mtu-disc yes' => 'Forciert',
-'ovpn on blue' => 'OpenVPN auf BLAU',
-'ovpn on orange' => 'OpenVPN auf ORANGE',
-'ovpn on red' => 'OpenVPN auf ROT',
+'ovpn no connections' => 'Keine aktiven OpenVPN Verbindungen',
+'ovpn on blue' => 'OpenVPN auf BLAU:',
+'ovpn on orange' => 'OpenVPN auf ORANGE:',
+'ovpn on red' => 'OpenVPN auf ROT:',
+'ovpn port in root range' => 'Ein Port von 1024 oder höher ist erforderlich.',
+'ovpn reneg sec' => 'Session Key Lifetime',
 'ovpn routes push' => 'Routen (eine pro Zeile) z.b. 192.168.10.0/255.255.255.0 192.168.20.0/24',
 'ovpn routes push options' => 'Route push Optionen',
 'ovpn server status' => 'OpenVPN-Server-Status',
-'ovpn subnet' => 'OpenVPN-Subnetz (z.B. 10.0.10.0/255.255.255.0)',
+'ovpn subnet' => 'OpenVPN-Subnetz:',
 'ovpn subnet is invalid' => 'Das OpenVPN-Subnetz ist ungültig.',
 'ovpn subnet overlap' => 'OpenVPNSubnetz überschneidet sich mit  ',
 'ovpn_fastio' => 'Fast-IO',
 'ovpn_processprioVH' => 'Sehr Hoch',
 'ovpnstatus log' => 'OVPN-Status-Log',
 'ovpnsys log' => 'OVPN-System-Log',
+'p2p block' => 'P2P-Netzwerke',
+'p2p block save notice' => 'Bitte lesen Sie die Firewallregeln neu ein, damit die Änderungen aktiv werden.',
 '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?',
 'profile saved' => 'Profil gespeichert: ',
 'profiles' => 'Profile:',
 'proto' => 'Proto',
-'protocol' => 'Protokoll',
+'protocol' => 'Protokoll:',
 'proxy' => 'Proxy',
 'proxy access graphs' => 'Diagramme zur Proxyauslastung',
 'proxy admin password' => 'Cache Administrator Passwort',
 'proxy cachemgr' => 'Cachemanager aktivieren',
 'proxy errmsg filedescriptors' => 'Ungültiger Anzahl Filedescriptoren',
-'proxy filedescriptors' => 'Anzahl Fildescriptoren',
+'proxy filedescriptors' => 'Anzahl Filedescriptoren',
 'proxy log viewer' => 'Ansicht Proxy-Log',
 'proxy logs' => 'Proxy-Logdateien',
 'proxy no proxy extend' => 'oder geben Sie eine Liste von Zielen an, welche nicht über den Proxy angesprochen werden sollen',
 'qos warning' => 'Die Regel <strong>muss</strong> wieder gespeichert werden, ansonsten wird sie verworfen!',
 'quick playlist' => 'Quick Playlist',
 'ram' => 'RAM-Speicher',
+'random number generator daemon' => 'Random Number Generator Daemon',
 'read bytes' => 'Gelesene Bytes',
 'read list' => 'Liste der Leseberechtigten',
 'real address' => 'Reale Addresse',
 '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',
 'resetglobals' => 'Globale Einstellungen zurücksetzen',
 'resetpolicy' => 'Policy zurücksetzen',
 'resetshares' => 'Shares zurücksetzen?',
-'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections' => 'Das Zurücksetzen der VPN-Konfiguration wird die Root-CA, die Host-Zertifikate und alle weiteren Zertifikate und alle zertifikatsbasierten Verbindungen entfernen',
+'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections' => 'Das Löschen des X509 wird die Root-CA, die Host-Zertifikate und alle zertifikatsbasierten Verbindungen entfernen.',
 'restart' => 'Neustart',
 'restart ovpn server' => 'OpenVPN-Server neu starten',
 'restore' => 'Wiederherstellen',
 'root user password' => 'Root Passwort',
 'route subnet is invalid' => 'Additional push route subnet is invalid',
 'router ip' => 'IP-Adresse des Routers:',
-'routing table entries' => 'Einträge der Routing-Tabelle:',
+'routing table entries' => 'Einträge der Routing-Tabelle',
 'rsvd dst port overlap' => 'Dieser Zielportbereich überlappt mit einem Port, der für die ausschließliche Benutzung durch IPFire reserviert ist:',
 'rsvd src port overlap' => 'Dieser Quellportbereich überlappt mit einem Port, der für die ausschließliche Benutzung durch IPFire reserviert ist:',
 'rules already up to date' => 'Regeln sind schon aktuell',
 'shares' => 'Freigaben',
 'show ajax speedmeter in footer' => 'Ajax Speed Anzeige',
 'show ca certificate' => 'CA Zertifikat anzeigen',
-'show certificate' => 'Zertifikat anzeigen',
+'show certificate' => 'Datei anzeigen',
 'show crl' => 'Certificate Revocation List anzeigen',
+'show dh' => 'Diffie-Hellman-Parameter anzeigen',
 'show host certificate' => 'Host-Zertifikat anzeigen',
 'show last x lines' => 'die letzten x Zeilen anzeigen',
 'show root certificate' => 'Root-Zertifikat anzeigen',
 'smbstop' => 'Samba Dienste beenden',
 'smtphost' => 'Smtp Host',
 'smtpport' => 'Smtp Port',
+'snat new source ip address' => 'Neue Quell-IP-Adresse',
 'snort hits' => 'Gesamtanzahl der aktivierten Intrusion-Regeln für',
 'snort working' => 'Snort führt gerade eine Aufgabe aus... Bitte warten Sie, bis diese erfolgreich beendet wurde.',
 'socket options' => 'Socket Options',
+'software version' => 'Software-Version',
 'sort ascending' => 'Sortiere aufsteigend',
 'sort descending' => 'Sortiere absteigend',
 'sound' => 'Klang',
 'source ip' => 'Quell-IP-Adresse',
 'source ip and port' => 'Quell-IP:Port',
 'source ip bad' => 'Ungültige Quell-IP-Adresse.',
+'source ip country' => 'Quell-IP-Adresse Land',
 'source ip in use' => 'Benutzte Quell-IP:',
 'source ip or net' => 'Quellen-IP oder Netz',
 'source net' => 'Quell-Netz',
 'srcprt range overlaps' => 'Quell-Port-Bereich überlappt mit einem bereits definierten Port.',
 'srcprt within existing' => 'Quell-Port befindet sich innnerhalb eines bereits definierten Port-Bereichs.',
 'ssdmz pinholes' => 'DMZ-Schlupflöcher',
+'ssh' => 'SSH',
 'ssh access' => 'SSH-Zugriff',
 'ssh access tip' => 'IPFire SSH läuft auf dem nicht-standard Port 222!',
 'ssh fingerprint' => 'Fingerabdruck',
 'successfully refreshed updates list' => 'Update-Liste erfolgreich aktualisiert.',
 'summaries kept' => 'Zusammenfassungen aufheben für',
 'sunday' => 'Sonntag',
+'support donation' => 'Unterstützen Sie das IPFire-Projekt mit Ihrer Spende',
 'swap' => 'Swap',
 'swap usage per' => 'Nutzung von Auslagerungsspeicher (Swap) pro',
 'system' => 'System',
 'system graphs' => 'System-Diagramme',
+'system has hwrng' => 'Dieses System hat einen Hardware-Zufallszahlengenerator.',
+'system has rdrand' => 'Dieses System unterstützt Intel(R) RDRAND.',
 'system information' => 'Systeminformationen',
 'system log viewer' => 'Betrachter der System-Logdateien',
 'system logs' => 'System-Logdateien',
 'system status information' => 'System-Statusinformationen',
+'ta key' => 'TLS-Authentifizierungsschlüssel',
 'telephone not set' => 'Telefonnummer nicht angegeben.',
 'template' => 'Vorlage',
 'template warning' => 'Zur Einrichtung von QoS stehen Ihnen 2 Möglichkeiten zur Auswahl. Entweder Sie wählen speichern und erstellen Klassen und Regeln nach Ihren Wünschen, oder Sie wählen Vorlage, dann werden die Klassen und Regeln durch ein Template generiert.',
 'tone' => 'Ton',
 'tone dial' => 'Tonwahl:',
 'too long 80 char max' => ' ist zu lang, es sind maximal 80 Zeichen erlaubt',
+'tor' => 'Tor',
+'tor 0 = disabled' => '0 = deaktiviert',
+'tor accounting' => 'Accounting',
+'tor accounting bytes' => 'Traffic (empfangen/gesendet)',
+'tor accounting bytes left' => 'übrig',
+'tor accounting interval' => 'Intervall (UTC)',
+'tor accounting limit' => 'Übertragungslimit (MB)',
+'tor accounting period' => 'Accounting-Periode',
+'tor accounting period daily' => 'täglich',
+'tor accounting period monthly' => 'monatlich',
+'tor accounting period weekly' => 'wöchentlich',
+'tor acls' => 'Zugriffskontrolle',
+'tor allowed subnets' => 'Erlaubte Subnetze (eins pro Zeile)',
+'tor bandwidth burst' => 'Max. Spitzenwert (Burst)',
+'tor bandwidth rate' => 'Max. Bandbreite',
+'tor bandwidth settings' => 'Bandbreiteneinstellungen',
+'tor bandwidth unlimited' => 'unlimitiert',
+'tor common settings' => 'Einstellungen',
+'tor configuration' => 'Tor-Konfiguration',
+'tor connected relays' => 'Verbundene Relays',
+'tor contact info' => 'Kontaktinformationen',
+'tor daemon' => 'Daemon',
+'tor directory port' => 'Directory-Port',
+'tor enabled' => 'Tor einschalten',
+'tor errmsg invalid accounting limit' => 'Ungültiges Accounting-Limit',
+'tor errmsg invalid directory port' => 'Ungültiger Directory-Port',
+'tor errmsg invalid ip or mask' => 'Ungültiges IP-Subnetz',
+'tor errmsg invalid relay address' => 'Ungültige Relay-Adresse',
+'tor errmsg invalid relay name' => 'Ungültiger Relay-Nickname',
+'tor errmsg invalid relay port' => 'Ungültiger Relay-Port',
+'tor errmsg invalid socks port' => 'Ungültiger SOCKS-Port',
+'tor exit country' => 'Exit-Land',
+'tor exit country any' => 'Beliebig',
+'tor exit nodes' => 'Exit-Nodes',
+'tor relay address' => 'Relay-Adresse',
+'tor relay configuration' => 'Tor-Relay-Konfiguration',
+'tor relay enabled' => 'Tor-Relay einschalten',
+'tor relay external address' => 'Externe Relay-Adresse',
+'tor relay fingerprint' => 'Relay-Fingerabdruck',
+'tor relay mode' => 'Relay-Modues',
+'tor relay mode bridge' => 'Bridge',
+'tor relay mode exit' => 'Exit-Node',
+'tor relay mode private bridge' => 'private Bridge',
+'tor relay mode relay' => 'Nur Relay',
+'tor relay nickname' => 'Relay-Nickname',
+'tor relay port' => 'Relay-Port',
+'tor service' => 'Tor-Service',
+'tor socks port' => 'SOCKS-Port',
+'tor stats' => 'Statistiken',
+'tor traffic limit hard' => 'Das Übertragungslimit wurde erreicht.',
+'tor traffic limit soft' => 'Das Übertragungslimit wurde fast erreicht. Es werden keine neuen Verbindungen akzeptiert.',
+'tor traffic read written' => 'Gesamter Traffic (empfangen/gesendet)',
+'tor use exit nodes' => 'Nur diese Exit-Nodes benutzen (eins pro Zeile)',
 'total connection time' => 'Verbindungszeit',
 'total hits for log section' => 'Gesamte Treffer für Log Sektion',
 'traffic back' => 'Zurück',
 'trafficorange' => 'DMZ',
 'trafficout' => 'Ausgehend',
 'trafficred' => 'Internet',
-'traffics' => 'Trafficübersicht:',
+'traffics' => 'Trafficübersicht',
 'trafficsum' => 'Total',
 'trafficto' => 'Nach',
 'transfer limits' => 'Transferbeschränkungen',
 'upload a certificate' => 'Ein Zertifikat hochladen:',
 'upload a certificate request' => 'Eine Zertifikatsanfrage hochladen:',
 'upload ca certificate' => 'CA-Zertifikat hochladen',
+'upload dh key' => 'Diffie-Hellman-Parameter hochladen',
 'upload file' => 'Datei zum hochladen',
 'upload new ruleset' => 'Neuen Regelsatz hochladen',
 'upload p12 file' => 'PKCS12-Datei hochladen',
 'urlfilter log summary' => 'Gesamtanzahl der URL-Filter-Treffer für',
 'urlfilter log viewer' => 'Ansicht URL-Filter-Log',
 'urlfilter logs' => 'URL-Filter-Logdateien',
-'urlfilter maintenance' => 'URL-Filter-Wartung',
+'urlfilter maintenance' => 'URL-Filter Wartung',
 'urlfilter manage local file repository' => 'Lokale Dateiablage verwalten',
 'urlfilter manage repository' => 'Ablage verwalten',
 'urlfilter minutes' => 'Minuten',
 'urlfilter quota restart message' => 'Hinweis: Beim Neustart des URL-Filters werden die Zähler für alle Benutzer zurückgesetzt',
 'urlfilter quota time error' => 'Ungültiger Wert für Zeitkontingent',
 'urlfilter quota user error' => 'Mindestens ein Benutzername erforderlich',
+'urlfilter redirect template' => 'Sperrseitenvorlage',
 'urlfilter redirectpage' => 'Leite zu dieser URL um',
 'urlfilter remove file' => 'Datei aus der Ablage entfernen',
 'urlfilter renewal' => 'Erneuerung',
 'urlfilter weekly' => 'wöchentlich',
 'urlfilter whitelist always allowed' => 'Erlaube angepasste Whitelist für gesperrte Clients',
 'urlfilter wrong filetype' => 'Die Datei hat nicht die Erweiterung .tar.gz',
-'usb modem on acm0' => 'USB Modem an ACM0',
-'usb modem on acm1' => 'USB Modem an ACM1',
-'usb modem on acm2' => 'USB Modem an ACM2',
-'usb modem on acm3' => 'USB Modem an ACM3',
 'use' => 'Einsatz',
 'use a pre-shared key' => 'Verwenden Sie einen Pre-Shared Schlüssel:',
 'use dov' => 'DOV (Data Over Voice) benutzen:',
 'valid root certificate already exists' => 'Ein gültiges Root-Zertifikat existiert bereits.',
 'valid till' => 'Gültig bis',
 'vci number' => 'VCI-Nummer:',
+'vendor' => 'Hersteller',
 'view log' => 'Log anzeigen',
 'virtual address' => 'Virtuelle Addresse',
 'virtual private networking' => 'Virtuelles Privates Netzwerk',
 'vpn aggrmode' => 'IKE Aggressive Mode zugelassen. Wenn möglich, vermeiden (preshared Schlüssel wird im Klartext übertragen)!',
 'vpn altname syntax' => 'Der Subjekt Alternativ Name ist eine durch Komma getrennte Liste von Email, DNS, URI, RID und IP Objekten. <br />Email: eine Email Adresse. Syntax Email: \'copy\' benutzt die Email Adresse aus dem Zertifikatfeld. <br />DNS: ein gültiger Domain Name.<br />URI: eine gültige URI.<br />RID: Registriertes Objekt Identifikation.<br />IP: eine IP Adresse.<br />Bitte beachten: der Zeichensatz ist eingeschränkt und die Groß-/Kleinschreibung ist entscheidend.<br />Beispiel:<br /><b>email:</b>info@ipfire.org<b>,email:</b>copy<b>,DNS:</b>www.ipfire.org<b>,IP:</b>127.0.0.1<b>,URI:</b>http://url/nach/irgendwo',
 'vpn auth-dn' => 'Peer wird identifiziert durch entweder ein IPV4_ADDR, FQDN, USER_FQDN oder DER_ASN1_DN string in Remote ID Feld',
-'vpn configuration main' => 'VPN-Konfiguration - Übersicht',
 'vpn delayed start' => 'Verzögerung bevor VPN gestartet wird (Sekunden)',
 'vpn delayed start help' => 'Falls notwendig, kann diese Verzögerung dazu verwendet werden, um Dynamic-DNS-Updates ordnungsgemäß anzuwenden. 60 ist ein gängiger Wert, wenn ROT (RED) eine dynamische IP Adresse ist.',
 'vpn incompatible use of defaultroute' => 'Hostname=%defaultroute nicht zulässig',
 'wireless config added' => 'Wireless-Konfiguration hinzugefügt',
 'wireless config changed' => 'Wireless-Konfiguration geändert',
 'wireless configuration' => 'Wireless-Konfiguration',
+'wlan client' => 'WLAN-Client',
+'wlan client advanced settings' => 'Erweiterte Einstellungen',
+'wlan client and' => 'und',
+'wlan client bssid' => 'BSSID',
+'wlan client ccmp' => 'CCMP',
+'wlan client configuration' => 'WLAN-Client-Konfiguration',
+'wlan client disconnected' => 'Nicht verbunden',
+'wlan client duplicate ssid' => 'Doppelte SSID',
+'wlan client edit entry' => 'Verbindung bearbeiten',
+'wlan client encryption' => 'Verschlüsselung',
+'wlan client encryption none' => 'Keine',
+'wlan client encryption wep' => 'WEP',
+'wlan client encryption wpa' => 'WPA',
+'wlan client encryption wpa2' => 'WPA2',
+'wlan client group cipher' => 'Gruppenchiffre',
+'wlan client group key algorithm' => 'GKA',
+'wlan client invalid key length' => 'Ungültige Schlüssellänge.',
+'wlan client new entry' => 'Neue WLAN-Client-Konfiguration erstellen',
+'wlan client new network' => 'Neues Netzwerk',
+'wlan client pairwise cipher' => 'Paarweise Chiffre',
+'wlan client pairwise key algorithm' => 'PKA',
+'wlan client pairwise key group key' => 'Paarweise-/Gruppenschlüssel',
+'wlan client psk' => 'Schlüssel',
+'wlan client ssid' => 'SSID',
+'wlan client tkip' => 'TKIP',
+'wlan client wpa mode' => 'WPA-Modus',
+'wlan client wpa mode all' => 'Automatisch',
+'wlan client wpa mode ccmp ccmp' => 'CCMP-CCMP',
+'wlan client wpa mode ccmp tkip' => 'CCMP-TKIP',
+'wlan client wpa mode tkip tkip' => 'TKIP-TKIP',
+'wlan clients' => 'WLAN-Clients',
 'wlanap access point' => 'Access Point',
 'wlanap channel' => 'Kanal',
+'wlanap country' => 'Ländercode',
 'wlanap debugging' => 'Debugging',
 'wlanap del interface' => 'Ausgewähltes Interface zurücksetzen?',
 '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 75138f55779485fb10985ca7625537cb61b8dab4..19c7807c15a48452a2e17ca607391fcd30b91e8a 100644 (file)
 'Choose Rule' => 'Choose <u>one</u> of the following rules.',
 'Class' => 'Class',
 'Class was deleted' => 'with potential subclasses was deleted',
-'Client status and controlc' => 'Client status and control:',
 'ConnSched action' => 'Action:',
 'ConnSched add action' => 'Add action',
 'ConnSched change profile title' => 'Change to profile:',
 'ConnSched days' => 'Days:',
+'ConnSched dial' => 'Connect',
 'ConnSched down' => 'Down',
-'ConnSched ipsecstart' => 'IPSec (re)start',
-'ConnSched ipsecstop' => 'IPSec stop',
+'ConnSched hangup' => 'Disconnect',
+'ConnSched ipsecstart' => 'IPsec (re)start',
+'ConnSched ipsecstop' => 'IPsec stop',
+'ConnSched reboot' => 'Reboot',
 'ConnSched reconnect' => 'Reconnect',
 'ConnSched scheduled actions' => 'Scheduled actions',
 'ConnSched scheduler' => 'Scheduler',
 'ConnSched select profile' => 'Select profile',
+'ConnSched shutdown' => 'Shutdown',
 'ConnSched time' => 'Time:',
 'ConnSched up' => 'Up',
 'ConnSched weekdays' => 'Days of the week:',
 'Level7 Rule' => 'Level7-Rule',
 'Level7 rule' => 'Level7 rule',
 'Local VPN IP' => 'Internal Network (GREEN):',
+'MB read' => 'MB read',
+'MB written' => 'MB written',
 'MTU' => 'MTU size:',
+'MTU settings' => 'MTU settings:',
+'Number of Countries for the pie chart' => 'Number of Countries for the pie chart',
 'Number of IPs for the pie chart' => 'Number of IPs for the pie chart',
 'Number of Ports for the pie chart' => 'Number of ports for the pie chart',
 'OVPN' => 'OpenVPN',
 'activate user' => 'Activate user',
 'active' => 'Active',
 'add' => 'Add',
-'add a host' => 'Add a host:',
+'add a host' => 'Add a host',
 'add a new rule' => 'Add a new rule:',
 'add cron' => 'add cronjob',
 'add device' => 'Add device',
 'add network' => 'Add network',
-'add new alias' => 'Add a new alias:',
+'add new alias' => 'Add a new alias',
 'add new lease' => 'Add a new fixed lease',
 'add new ovpn' => 'OpenVPN Settings:',
 'add printer' => 'Add printer',
 'add xtaccess' => 'Add External Access',
 'add-route' => 'Additional push route',
 'added from dhcp lease list' => 'Added from DHCP lease list',
+'addons' => 'Addons',
 'admin user password has been changed' => 'Admin user password has been changed.',
 'admin users' => 'User with superuser rights',
 'administrator user password' => 'Admin user password:',
-'adsl settings' => 'ADSL settings',
 'advanced' => 'Advanced',
 'advanced server' => 'Advanced server options',
 'advproxy AUTH always required' => 'Require authentication for unrestricted source addresses',
 'advproxy errmsg password length 1' => 'Password must have at least ',
 'advproxy errmsg password length 2' => ' characters',
 'advproxy errmsg passwords different' => 'Passwords don\'t match',
+'advproxy errmsg proxy ports equal' => 'The proxy port and the transparent port cannot be equal.',
 'advproxy errmsg radius port' => 'Invalid RADIUS port number',
 'advproxy errmsg radius secret' => 'RADIUS shared secret required',
 'advproxy errmsg radius server' => 'Invalid IP address for RADIUS Server',
 'advproxy on' => 'Proxy on',
 'advproxy privacy' => 'Privacy',
 'advproxy proxy port' => 'Proxy port',
+'advproxy proxy port transparent' => 'Transparent port',
 'advproxy ram cache size' => 'Memory cache size (MB)',
 'advproxy redirector children' => 'Number of filter processes',
 'advproxy reset' => 'Reset',
 'april' => 'April',
 'archive not exist' => 'Configuration archive does not exist',
 'are you sure' => 'Are you sure?',
-'arp table entries' => 'ARP Table Entries:',
+'arp table entries' => 'ARP Table Entries',
 'artist' => 'Artist',
+'atm device' => 'Device:',
+'atm settings' => 'ATM settings',
 'attemps' => 'Attempts',
 'attention' => 'ATTENTION',
 'august' => 'August',
 'behind a proxy' => 'Behind a proxy:',
 'bewan adsl pci st' => 'TO BE REMOVED',
 'bewan adsl usb' => 'TO BE REMOVED',
+'bit' => 'bit',
 'bitrate' => 'Bitrate',
 'bleeding rules' => 'Bleeding Edge Snort Rules',
 'blue' => 'BLUE',
 'cant change certificates' => 'Can\'t change certificates.',
 'cant enable xtaccess' => 'The associated port forwarding rule is disabled, therefore you cannot enable external access for this rule.',
 'cant start openssl' => 'Can\'t start OpenSSL',
+'capabilities' => 'Capabilities',
 'caps all' => 'ALL',
 'capsclosed' => 'DISCONNECTED',
 'capsinactive' => 'INACTIVE',
 'ccd err invalidnet' => 'Invalid IP address. Format: 192.168.0.0/24 or 192.168.0.0/255.255.255.0.',
 'ccd err iroute' => 'Network address for route is invalid.',
 'ccd err irouteexist' => 'This route is already in use.',
-'ccd err isipsecnet' => 'The given subnet address already used by an IPsec network.',
-'ccd err isovpnnet' => 'Subnet address already in use for OpenVPN Server.',
+'ccd err isipsecnet' => 'The given subnet address is already used by an IPsec network.',
+'ccd err isipsecrw' => 'The given subnet address is already used by the IPsec rw network.',
+'ccd err isovpnn2n' => 'The subnet address is already in use for an OpenVPN net-to-net connection.',
+'ccd err isovpnnet' => 'The subnet address is already in use for the OpenVPN server.',
 'ccd err issubnet' => 'Subnet address already in use.',
 'ccd err name' => 'Please choose a name.',
 'ccd err nameexist' => 'Name already exists.',
 'ccd used' => 'Used addresses',
 'cert' => 'Certificate',
 'certificate' => 'Certificate',
-'certificate authorities' => 'Certificate Authorities',
+'certificate authorities' => 'Certificate Authorities and -Keys',
 'certificate does not have a valid ca associated with it' => 'Certificate does not have a valid CA associated with it.',
 'certificate file move failed' => 'Certificate file move failed',
 'cfg restart' => 'A reboot is suggested after restoring a configuration archive.',
 'clock last synchronized at' => 'Clock was last synchronized at',
 'comment' => 'Description:',
 'common name' => 'Common name',
-'community rules' => 'Emergingthreats.net Community Rules',
+'community rules' => 'Snort/VRT GPLv2 Community Rules',
 'comp-lzo' => 'LZO-Compression:',
 'compression' => 'Compression:',
 'computer to modem rate' => 'Computer to modem rate:',
 'connection' => 'Connection',
 'connection closed' => 'Not connected...',
 'connection debugging' => 'Connection debugging',
-'connection status and controlc' => 'Connection status and control:',
-'connection tracking' => 'IPTables Connection Tracking',
+'connection status and controlc' => 'Connection Status and -Control',
+'connection tracking' => 'iptables Connection Tracking',
 'connection type' => 'Connection Type',
 'connection type is invalid' => 'Connection type is invalid.',
 'connections' => 'Connections',
 'could not open installed updates file' => 'Could not open installed updates file',
 'could not open update information file' => 'Could not open update information file.  The update file is corrupt.',
 'could not retrieve common name from certificate' => 'Could not retrieve common name from certificate.',
+'count' => 'Count',
+'countries' => 'Countries',
 'country' => 'Country',
+'country codes and flags' => 'Country Codes and Flags:',
+'countrycode' => 'Code',
 'cpu frequency per' => 'CPU frequency per',
 'cpu idle usage' => 'Idle CPU Usage',
 'cpu interrupt usage' => 'Interrupt CPU Usage',
 'crl' => 'Certificate Revocation List',
 'cron server' => 'CRON Server',
 'current' => 'Current',
-'current aliases' => 'Current aliases:',
+'current aliases' => 'Current aliases',
 'current class' => 'Current class',
 'current devices' => 'Current devices',
 'current dhcp leases on blue' => 'Current DHCP leases on BLUE',
 'current dynamic leases' => 'Current dynamic leases',
 'current fixed leases' => 'Current fixed leases',
-'current hosts' => 'Current hosts:',
+'current hosts' => 'Current hosts',
 'current media' => 'Current media',
 'current ovpn' => 'Active OVPN-Connection:',
 'current playlist' => 'Current Playlist',
 'ddns noip prefix' => 'To use no-ip in group mode, prefix hostname with <b>%</b>',
 'deactivate' => 'deactivate',
 'deactivate user' => 'deactivate user',
+'dead peer detection' => 'Dead Peer Detection',
 'debugme' => 'Not yet implemented',
 'december' => 'December',
 'deep scan directories' => 'Scan recursive',
 'def lease time' => 'Default Lease Time',
+'default' => 'Default',
+'default ip' => 'Default IP address',
 'default lease time' => 'Default lease time (mins):',
 'default networks' => 'Default networks',
 'default renewal time' => 'Default Renewal Time',
 'destination port numbers' => 'Destination port must be a valid port number or port range.',
 'destination port overlaps' => 'Destination port range overlaps an existing port range.',
 'detail level' => 'Detail level',
+'details' => 'Details',
 'device' => 'Device',
 'devices on blue' => 'Devices on BLUE',
+'dh' => 'Diffie-Hellman parameters',
+'dh key move failed' => 'Diffie-Hellman parameters move failed.',
+'dh key warn' => 'Creating DH-parameters with lengths of 1024 or 2048 bits takes up to several minutes. Lengths of 3072 or 4096 bits might needs several hours. Please be patient.',
+'dh key warn1' => 'For weak systems or systems with little entropy, it is recommended to upload long Diffie-Hellman parameters by usage of the upload function.',
+'dh name is invalid' => 'Name is invalid, please use "dh1024.pem".',
+'dh parameter' => 'Diffie-Hellman parameters',
 'dhcp advopt add' => 'Add a DHCP option',
 'dhcp advopt added' => 'DHCP option added',
 'dhcp advopt blank value' => 'DHCP Option value cannot be empty.',
 'dmz pinhole rule added' => 'DMZ pinhole rule added; restarting DMZ pinhole',
 'dmz pinhole rule removed' => 'DMZ pinhole rule removed; restarting DMZ pinhole',
 'dmzpinholes for same net not necessary' => 'DMZ Pinholes are not necessary for same net. Select different source or destination net.',
+'dnat address' => 'Firewall Interface',
 'dns address deleted' => 'Successfully deleted!',
 'dns address deleted txt' => 'The DNS-Server addresses have been successfully deleted.<br />You have to reboot or reconnect that the changes have effect!',
 'dns address done' => 'The DNS-Server address settings are going to be saved.',
 'dns saved' => 'Successfully saved!',
 'dns saved txt' => 'The two entered DNS server addresses have been saved successfully.<br />You have to reboot or reconnect that the changes have effect!',
 'dns server' => 'DNS Server',
+'dns servers' => 'DNS Servers',
 'dns title' => 'Domain Name System',
+'dnsforward' => 'DNS Forwarding',
+'dnsforward add a new entry' => 'Add a new entry',
+'dnsforward configuration' => 'DNS forward configuration',
+'dnsforward edit an entry' => 'Edit an existing entry',
+'dnsforward entries' => 'Current entries',
+'dnsforward forward_server' => 'Nameserver',
+'dnsforward zone' => 'Zone',
 'do not log this port list' => 'Drop this port list just before they are logged (reduces log size)',
 'dod' => 'Dial on Demand',
 'dod for dns' => 'Dial on Demand for DNS:',
 'downlink std class' => 'downlink standard class',
 'download' => 'download',
 'download ca certificate' => 'Download CA certificate',
-'download certificate' => 'Download certificate',
+'download certificate' => 'Download file',
+'download dh parameter' => 'Download Diffie-Hellman parameters',
 'download host certificate' => 'Download host certificate',
 'download new ruleset' => 'Download new ruleset',
 'download pkcs12 file' => 'Download PKCS12 file',
 'download root certificate' => 'Download root certificate',
-'dpd action' => 'Dead Peer Detection action',
+'download tls-auth key' => 'Download tls-auth key',
+'dpd action' => 'Action',
+'dpd delay' => 'Delay',
+'dpd timeout' => 'Timeout',
 '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',
 'eg' => 'e.g.:',
 'email server can not be empty' => 'E-mail server can not be empty',
 'emailreportlevel' => 'E-mailreportlevel',
+'emerging rules' => 'Emergingthreats.net Community Rules',
 'empty' => 'This field may be left blank',
 'empty profile' => 'empty',
 'enable ignore filter' => 'Enable ignore filter',
 'enabledtitle' => 'Enabled',
 'encapsulation' => 'Encapsulation',
 'encrypted' => 'Encrypted',
+'encryption' => 'Encryption:',
 'end address' => 'End address:',
 'enter ack class' => 'Enter the ACK- Class <br /> and then press <i>Save</i>.',
 'enter data' => 'Enter your settings <br /> and then press <i>Save</i>.',
+'entropy' => 'Entropy',
+'entropy graphs' => 'Entropy Graphs',
 'err bk 1' => 'Error creating archive',
 'err bk 10 password' => 'Error with backup password',
 'err bk 2 key' => 'Error creating key file',
 'err rs 8 untar' => 'Error untarring archive',
 'error config' => 'Could not open /var/ipfire/ovpn/config/ZERINA.ovpn !',
 'error external access' => 'Could not open /var/ipfire/xtaccess/config (external acccess could not be granted)!',
-'error messages' => 'Error messages:',
+'error messages' => 'Error messages',
 'esp encryption' => 'ESP Encryption:',
 'esp grouptype' => 'ESP Grouptype:',
 'esp integrity' => 'ESP Integrity:',
 'firewall log' => 'Firewall log',
 'firewall log viewer' => 'Firewall Log Viewer',
 'firewall logs' => 'Firewall Logs',
-'firewall logs ip' => 'Fw-Logdgraphs (IP)',
+'firewall logs country' => 'Fw-Loggraphs (Country)',
+'firewall logs ip' => 'Fw-Loggraphs (IP)',
 'firewall logs port' => 'Fw-Loggraphs (Port)',
+'firewall rules' => 'Firewall Rules',
 'firewallhits' => 'firewallhits',
 'firmware' => 'Firmware',
 'firmware upload' => 'Upload Firmware/Drivers',
 'fixed ip lease added' => 'Fixed IP lease added',
 'fixed ip lease modified' => 'Fixed IP lease modified',
 'fixed ip lease removed' => 'Fixed IP lease removed',
+'flag' => 'Flag',
 '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 extport' => 'The external port has to be empty when using Source NAT rules.',
+'fwdfw dnat nochoice' => 'Please pick Source NAT or Destination NAT from the NAT section.',
+'fwdfw dnat porterr' => 'You have to select a single port or portrange (tcp/udp) for NAT',
+'fwdfw dnat porterr2' => 'Cannot use external port (NAT) when no destination port is defined.',
+'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 hint mac' => 'The destination group contains MAC addresses, which will be skipped during rule creation.',
+'fwdfw iface' => 'Interface',
+'fwdfw ipsec network' => 'IPsec networks:',
+'fwdfw log' => 'Log',
+'fwdfw log rule' => 'Log rule',
+'fwdfw man port' => 'Port(s):',
+'fwdfw many' => 'Many',
+'fwdfw menu' => 'Firewall',
+'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 (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 warn1' => 'This might lead to firewallrules which are applied to networks for which they are not intended to be.',
+'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 Custom Host' => 'Host',
+'fwhost Custom Network' => 'Network',
+'fwhost IpSec Host' => 'IPsec host',
+'fwhost IpSec Network' => 'IPsec network',
+'fwhost OpenVPN N-2-N' => 'OpenVPN Net-to-Net',
+'fwhost OpenVPN static host' => 'OpenVPN static host',
+'fwhost OpenVPN static network' => 'OpenVPN static network',
+'fwhost Standard Network' => 'Standard network',
+'fwhost addgrp' => 'Add new network/host group',
+'fwhost addgrpname' => 'Group name:',
+'fwhost addhost' => 'Add new host',
+'fwhost addnet' => 'Add new network',
+'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' => 'A group with the same name 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 maxservicetcp' => 'The maximal number of 15 TCP services has been reached in this group (port ranges count twice)',
+'fwhost err maxserviceudp' => 'The maximal number of 15 UDP services has been reached in this group (port ranges count twice)',
+'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',
 'gateway ip' => 'Gateway IP',
+'gen dh' => 'Generate new Diffie-Hellman parameters',
 'gen static key' => 'Generate a static key',
 'generate' => 'Generate root/host zertifikate',
 'generate a certificate' => 'Generate a certificate:',
+'generate dh key' => 'Generate Diffie-Hellman parameters',
 'generate iso' => 'Generate ISO',
 'generate root/host certificates' => 'Generate root/host certificates',
 'generate tripwire keys and init' => 'generate tripwire keys and init',
 'generating the root and host certificates may take a long time. it can take up to several minutes on older hardware. please be patient' => 'Generating the root and host certificates may take a long time.  It can take up to several minutes on older hardware. Please be patient.',
 'genkey' => 'Generate PSK',
 'genre' => 'Genre',
-'global settings' => 'Global settings',
+'global settings' => 'Global Settings',
 'gpl i accept these terms and conditions' => 'I accept these terms and conditions',
 'gpl license agreement' => 'License Agreement',
 'gpl please read carefully the general public license and accept it below' => 'Please read carefully the General Public License and accept it below',
 'graph per' => 'per',
 'green' => 'GREEN',
 'green interface' => 'Green Interface',
+'grouptype' => 'Grouptype:',
 'guaranteed bandwith' => 'Guaranteed bandwith',
 'guardian alertfile' => 'Alertfile',
 'guardian configuration' => 'Guardian Configuration',
 'gz with key' => 'Only an encrypted archive can be restored on this machine.',
 'hangup' => 'Disconnect',
 'hangup string' => 'Hangup:',
-'harddisk temperature' => 'Harddisk temperature',
-'harddisk temperature graphs' => 'hdd temperature graphs',
+'harddisk temperature' => 'Harddisk Temperature',
+'harddisk temperature graphs' => 'HDD Graphs',
 'hardware graphs' => 'Hardware Graphs',
+'hardware support' => 'Hardware Support',
 'hdd temperature in' => 'Harddisk temperature in',
 'help' => 'Help',
 'high' => 'High',
 'hostname not set' => 'Hostname not set.',
 'hosts config added' => 'Hosts config added',
 'hosts config changed' => 'Hosts config changed',
-'hour' => 'hour',
+'hour' => 'Hour',
 'hour-graph' => 'Hour',
 'hours' => 'hours',
 'hours2' => 'Hours',
 'ike integrity' => 'IKE Integrity:',
 'ike lifetime' => 'IKE Lifetime:',
 'ike lifetime should be between 1 and 8 hours' => 'IKE lifetime should be between 1 and 8 hours.',
+'imei' => 'IMEI',
 'import' => 'Import',
 'importkey' => 'Import PSK',
+'imsi' => 'IMSI',
 'in' => 'In',
 'inactive' => 'inactive',
 'include logfiles' => 'Include logfiles',
 'incoming' => 'incoming',
+'incoming firewall access' => 'Incoming Firewall Access',
 'incoming traffic in bytes per second' => 'Incoming Traffic',
 'incorrect password' => 'Incorrect password',
 'info' => 'Info',
 'installed' => 'Installed',
 'installed updates' => 'Installed updates:',
 'instant update' => 'Instant Update',
+'integrity' => 'Integrity:',
 'interface' => 'Interface',
 'interfaces' => 'Interfaces',
 'internet' => 'INTERNET',
 'invalid input for dhcp dns' => 'Invalid input for DHCP DNS',
 'invalid input for dhcp domain' => 'Invalid input for DHCP domain',
 'invalid input for dhcp wins' => 'Invalid input for DHCP WINS',
+'invalid input for dpd delay' => 'Invalid input for DPD delay',
+'invalid input for dpd timeout' => 'Invalid input for DPD timeout',
 'invalid input for e-mail address' => 'Invalid input for e-mail address.',
 'invalid input for esp keylife' => 'Invalid input for ESP Keylife',
 'invalid input for hostname' => 'Invalid input for hostname.',
 'ipfire side is invalid' => 'IPFire side is invalid.',
 'ipfires hostname' => 'IPFire\'s Hostname',
 'ipinfo' => 'IP info',
+'ipsec' => 'IPsec',
+'ipsec network' => 'IPsec network',
+'ipsec no connections' => 'No active IPsec 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',
 'last activity' => 'Last Activity',
 'lateprompting' => 'Lateprompting',
 'lease expires' => 'Lease expires',
+'least preferred' => 'least preferred',
 'legend' => 'Legend',
 'length' => 'Length',
+'lifetime' => 'Lifetime:',
 'line' => 'Line',
 'linkq' => 'Link Quality',
 'load printer' => 'Load Printer',
 'local hard disk' => 'Hard disk',
 'local master' => 'Local Master',
 'local ntp server specified but not enabled' => 'Local NTP server specified but not enabled',
-'local subnet' => 'Local Subnet:',
+'local subnet' => 'Local subnet:',
 'local subnet is invalid' => 'Local subnet is invalid.',
 'local vpn hostname/ip' => 'Local VPN Hostname/IP',
 'localkey' => 'Localkey',
 'localkeyfile' => 'Localkeyfile',
-'log' => 'Log:',
+'log' => 'Log',
 'log enabled' => 'Log Enabled',
 'log level' => 'Log Level',
 'log lines per page' => 'Lines per page',
 'mac address error not valid' => 'MAC addresse not valid!',
 'mac address header' => 'MAC address on red0',
 'mac address in use' => 'MAC address already in use',
-'mac address menu' => 'Assign MAC-address',
+'mac address menu' => 'Assign MAC-Address',
 'mac address recon' => 'Trying to reconnect!',
 'mac address saved' => 'Successfully saved!',
 'mac address saved txt' => 'The MAC address has been successfully saved, but changes will only take effect after reboot or reconnection.',
-'mac address title' => 'Medium Access Control Address',
+'mac address title' => 'Assign MAC Address',
 'mac desc' => 'Here you are able to change the MAC address on red0. The address must be entered in hexadecimal (0-9,a-f), a valid entry is <br />e.g. 00-01-02-0e-b8-d6 or 00:01:02:0e:b8:d6.',
+'mac filter' => 'MAC filter',
 'mac new' => 'new MAC address:',
 'mac1 new' => 'new MAC address 1 (vdsl-inet):',
 'mac2 new' => 'new MAC address 2 (vdsl-iptv):',
 'max size' => 'Max object size (KB):',
 'max throughput' => 'Maximum throughput',
 'maximal' => 'Maximal',
+'maximum' => 'Maximum',
 'maximum retries' => 'Maximum retries:',
 'may' => 'May',
 'mbmon display' => 'Display',
 'mbmon volt' => 'Voltage',
 'meaning' => 'meaning',
 'media' => 'Media',
-'media information' => 'media information',
+'media information' => 'Media information',
 'medium' => 'Medium',
 'memory' => 'Memory',
-'memory information' => 'memory information',
+'memory information' => 'Memory information',
 'memory usage per' => 'Memory Usage per',
 'messages logging' => 'Logsettings for /var/log/messages',
 'method' => 'Method:',
 'min delay' => 'Minimum delay',
 'min size' => 'Min object size (KB):',
 'minimal' => 'Minimal',
+'minimum' => 'Minimum',
 'minute' => 'Minute',
 'minutes' => 'Minutes',
 'misc-options' => 'Miscellaneous options',
 'missing dat' => 'Encrypted archive not found',
 'missing gz' => 'Unencrypted archive not found',
 'mode' => 'Mode',
+'model' => 'Model',
 'modem' => 'Modem',
 'modem configuration' => 'Modem configuration',
+'modem hardware details' => 'Modem Hardware',
+'modem information' => 'Modem Information',
+'modem network bit error rate' => 'Bit Error Rate',
+'modem network information' => 'Network Information',
+'modem network mode' => 'Network Mode',
+'modem network operator' => 'Network Operator',
+'modem network registration' => 'Network Registration',
+'modem network signal quality' => 'Signal Quality',
+'modem no connection' => 'No Connection',
+'modem no connection message' => 'No connection to the modem could be established.',
 'modem on com1' => 'Modem on COM1',
 'modem on com2' => 'Modem on COM2',
 'modem on com3' => 'Modem on COM3',
 'modem on com4' => 'Modem on COM4',
 'modem on com5' => 'Modem on COM5',
 'modem settings have errors' => 'Modem settings have errors',
+'modem sim information' => 'SIM Information',
 'modem speaker on' => 'Modem speaker on:',
+'modem status' => 'Modem Status',
 'modify' => 'Modify',
 'modulation' => 'Modulation',
 'monday' => 'Monday',
+'monitor interface' => 'Monitor Interface',
 'month' => 'Month',
 'month-graph' => 'Month',
 'monthly firewallhits' => 'monthly firewallhits',
 'monthly volume start day short' => 'First day',
 'months' => 'months',
 'more' => 'more',
+'most preferred' => 'most preferred',
 'mount' => 'Mount',
 'mounted on' => 'Mounted on',
 'mpfire' => 'Media Player for IPFire',
 'network red' => 'Network (external)',
 'network removed' => 'Custom network removed',
 'network status information' => 'Network Status Information',
-'network time' => 'Use a network time server:',
+'network time' => 'Use a network time server',
 'network time from' => 'Obtain time from a network time server',
 'network traffic graphs' => 'Network traffic graphs',
 'network traffic graphs external' => 'Net-Traffic graphs (external)',
 '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',
+'never' => 'Never',
+'new optionsfw later' => 'Some options need a reboot to take effect',
 'new optionsfw must boot' => 'You must reboot your IPFire',
 'newer' => 'Newer',
 'next' => 'next',
 'no eciadsl synch.bin file' => 'No ECI ADSL synch.bin file. Please upload.',
 'no filter pass' => 'Enter the standard class for non-filtered packets.',
 'no fritzdsl driver' => 'No Fritz!DSL driver.  Please upload.',
+'no hardware random number generator' => 'This system has no source for entropy.',
 'no information available' => 'No information available.',
 'no log selected' => 'No log selected',
 'no modem selected' => 'No modem selected',
 'nonetworkname' => 'No Network Name entered',
 'noservicename' => 'No Service Name entered',
 'not a valid ca certificate' => 'Not a valid CA certificate.',
+'not a valid dh key' => 'Not a valid Diffie-Hellman parameters file. Please use a length of 1024, 2048, 3072 or 4096 bits and the PKCS#3 format.',
 'not enough disk space' => 'Not enough disk space',
 'not present' => '<b>Not</b> present',
 'not running' => 'not running',
 'not set' => 'not set',
 'notes' => 'Notes',
+'notice' => 'Notice',
 'november' => 'November',
 'ntp common settings' => 'Common settings',
-'ntp configuration' => 'NTP configuration',
+'ntp configuration' => 'NTP Configuration',
 'ntp must be enabled to have clients' => 'NTP must be enabled to have clients.',
 'ntp server' => 'NTP Server',
 'ntp sync' => 'Synchronization',
 'openvpn fragment allowed with udp' => 'Using fragment is only allowed when using the UDP protocol.',
 'openvpn log' => 'OpenVPN Log',
 'openvpn mssfix allowed with udp' => 'Using "mssfix" is only allowed when using the UDP protocol.',
+'openvpn network' => 'OpenVPN networks',
 'openvpn prefix local subnet' => 'Using the prefix notation is not supported for the local subnet. Please enter a subnet mask like 255.255.255.0.',
 'openvpn prefix openvpn subnet' => 'Using the prefix notation is not supported for the OpenVPN subnet. Please enter a subnet mask like 255.255.255.0.',
 'openvpn prefix remote subnet' => 'Using the prefix notation is not supported for the remote subnet. Please enter a subnet mask like 255.255.255.0.',
 'out' => 'Out',
 'outgoing' => 'outgoing',
 'outgoing firewall' => 'Outgoing Firewall',
+'outgoing firewall access' => 'Outgoing Firewall Access',
 'outgoing firewall add ip group' => 'Add IP Address Group',
 'outgoing firewall add mac group' => 'Add MAC Address Group',
 'outgoing firewall edit ip group' => 'Edit IP Address Group',
 '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' => 'OpenVPN',
 'ovpn con stat' => 'OpenVPN Connection Statistics',
 'ovpn config' => 'OVPN-Config',
+'ovpn crypt options' => 'Cryptographic options',
 'ovpn device' => 'OpenVPN device:',
+'ovpn dh' => 'Diffie-Hellman parameters length',
+'ovpn dh new key' => 'Generate new Diffie-Hellman parameters',
+'ovpn dh parameters' => 'Diffie-Hellman parameters options',
+'ovpn dh upload' => 'Upload new Diffie-Hellman parameters',
 'ovpn dl' => 'OVPN-Config Download',
+'ovpn engines' => 'Crypto engine',
 'ovpn errmsg green already pushed' => 'Route for green network is always set',
 'ovpn errmsg invalid ip or mask' => 'Invalid network-address or subnetmask',
+'ovpn generating the root and host certificates' => 'Generating the root and host certifictae can take a long time.',
+'ovpn ha' => 'Hash algorithm',
+'ovpn hmac' => 'HMAC options',
 'ovpn log' => 'OVPN-Log',
+'ovpn mgmt in root range' => 'A port number of 1024 or higher is required.',
 'ovpn mtu-disc' => 'Path MTU Discovery',
 'ovpn mtu-disc and mtu not 1500' => 'Path MTU Discovery requires a MTU of 1500.',
 'ovpn mtu-disc maybe' => 'Optionally',
 'ovpn mtu-disc off' => 'Disabled',
 'ovpn mtu-disc with mssfix or fragment' => 'Path MTU Discovery cannot be used with mssfix or fragment.',
 'ovpn mtu-disc yes' => 'Forced',
-'ovpn on blue' => 'OpenVPN on BLUE',
-'ovpn on orange' => 'OpenVPN on ORANGE',
-'ovpn on red' => 'OpenVPN on RED',
+'ovpn no connections' => 'No active OpenVPN connections',
+'ovpn on blue' => 'OpenVPN on BLUE:',
+'ovpn on orange' => 'OpenVPN on ORANGE:',
+'ovpn on red' => 'OpenVPN on RED:',
+'ovpn port in root range' => 'A port number of 1024 or higher is required.',
+'ovpn reneg sec' => 'Session key lifetime:',
 'ovpn routes push' => 'Routes (one per line) e.g. 192.168.10.0/255.255.255.0 192.168.20.0/24',
 'ovpn routes push options' => 'Route push options',
 'ovpn server status' => 'Current OpenVPN server status:',
-'ovpn subnet' => 'OpenVPN subnet (e.g. 10.0.10.0/255.255.255.0)',
+'ovpn subnet' => 'OpenVPN subnet:',
 'ovpn subnet is invalid' => 'OpenVPN subnet is invalid.',
 'ovpn subnet overlap' => 'OpenVPN Subnet overlaps with : ',
 'ovpn_fastio' => 'Fast-IO',
-'ovpn_fragment' => 'Fragmentsize',
 'ovpn_mssfix' => 'MSSFIX Size',
 'ovpn_mtudisc' => 'MTU-Discovery',
 'ovpn_processprio' => 'Process priority',
 'ovpn_processprioVH' => 'Very high',
 'ovpnstatus log' => 'OVPN-Status-Log',
 'ovpnsys log' => 'OVPN-System-Log',
+'p2p block' => 'P2P networks',
+'p2p block save notice' => 'Please reload the firewall ruleset in order to apply your changes.',
 '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?',
 'proxy admin password' => 'Cache administrator password',
 'proxy cachemgr' => 'Activate cachemanager',
 'proxy errmsg filedescriptors' => 'Wrong amount of filedescriptors',
-'proxy filedescriptors' => 'Amount of fildescriptors',
+'proxy filedescriptors' => 'Amount of filedescriptors',
 'proxy log viewer' => 'Proxy log viewer',
 'proxy logs' => 'Proxy Logs',
 'proxy no proxy extend' => 'or specify a list of not proxied destination',
 'quick control' => 'Quick Control',
 'quick playlist' => 'Quick Playlist',
 'ram' => 'RAM',
+'random number generator daemon' => 'Random Number Generator Daemon',
 'read bytes' => 'Read Bytes',
 'read list' => 'list with readonly hosts',
 'real address' => 'Real Address',
 'reconnect' => 'Reconnect',
 'reconnection' => 'Reconnection',
 'red' => 'Internet',
+'red1' => 'RED',
 'references' => 'References',
 'refresh' => 'Refresh',
 'refresh index page while connected' => 'Refresh index.cgi page while connected',
 'resetglobals' => 'Reset global settings',
 'resetpolicy' => 'Reset policy to default',
 'resetshares' => 'Reset shares?',
-'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections' => 'Resetting the VPN configuration will remove the root CA, the host certificate and all certificate based connections',
+'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections' => 'Resetting the X509 remove the root CA, the host certificate and all certificate based connections.',
 'restart' => 'Restart',
 'restart ovpn server' => 'Restart OpenVPN server',
 'restore' => 'Restore',
 'root user password' => 'Root password',
 'route subnet is invalid' => 'Additional push route subnet is invalid',
 'router ip' => 'Router IP address:',
-'routing table entries' => 'Routing Table Entries:',
+'routing table entries' => 'Routing Table Entries',
 'rsvd dst port overlap' => 'Destination Port Range overlaps a port reserved for IPFire:',
 'rsvd src port overlap' => 'Source Port Range overlaps a port reserved for IPFire:',
 'rules already up to date' => 'Rules already up to date',
 'show ajax speedmeter in footer' => 'Show Ajax speedmeter',
 'show areas' => 'show areas',
 'show ca certificate' => 'Show CA certificate',
-'show certificate' => 'Show certificate',
+'show certificate' => 'Show file',
 'show crl' => 'Show certificate revocation list',
+'show dh' => 'Show Diffie-Hellman parameters',
 'show host certificate' => 'Show host certificate',
 'show last x lines' => 'Show last x lines',
 'show lines' => 'Show lines',
 'show root certificate' => 'Show root certificate',
 'show share options' => 'Show shares options',
+'show tls-auth key' => 'Show tls-auth key',
 'shuffle' => 'Shuffle',
 'shutdown' => 'Shutdown',
 'shutdown ask' => 'Shutdown?',
 'smbstop' => 'Stop samba',
 'smtphost' => 'SMTP host',
 'smtpport' => 'SMTP port',
+'snat new source ip address' => 'New source IP address',
 'snort hits' => 'Total of number of Intrusion rules activated for',
 'snort working' => 'Snort is working ... Please wait until all operations have completed successfully.',
 'socket options' => 'Socket options',
+'software version' => 'Software Version',
 'sort ascending' => 'Sort ascending',
 'sort descending' => 'Sort descending',
 'sound' => 'Sound',
 'source ip' => 'Source IP',
 'source ip and port' => 'Source IP: Port',
 'source ip bad' => 'Not a valid IP address or a network address.',
+'source ip country' => 'Source IP Country',
 'source ip in use' => 'Source IP in use:',
 'source ip or net' => 'Source IP or Net',
 'source net' => 'Source Net',
 'srcprt range overlaps' => 'Source port range overlaps an already defined port.',
 'srcprt within existing' => 'Source port is within an already defined port range.',
 'ssdmz pinholes' => 'DMZ Pinholes',
+'ssh' => 'SSH',
 'ssh access' => 'SSH Access',
 'ssh access tip' => 'IPFire SSH is not using default port 222!',
 'ssh fingerprint' => 'Fingerprint',
 'start ovpn server' => 'Start OpenVPN Server',
 'state or province' => 'State or Province',
 'static ip' => 'Static IP',
-'static routes' => 'Static routes',
+'static routes' => 'Static Routes',
 'status' => 'Status',
 'status information' => 'Status information',
-'status ovpn' => '4. OpenVPN Status / Configuration:',
+'status ovpn' => 'OpenVPN',
 'std classes' => 'Standardclasses',
 'stop' => 'Stop',
 'stop ovpn server' => 'Stop OpenVPN Server',
 'successfully refreshed updates list' => 'Successfully refreshed updates list.',
 'summaries kept' => 'Keep summaries for',
 'sunday' => 'Sunday',
+'support donation' => 'Support the IPFire project with your donation',
 'swap' => 'Swap',
 'swap usage per' => 'Swap usage per',
 'system' => 'System',
 'system graphs' => 'System Graphs',
-'system information' => 'System information',
+'system has hwrng' => 'This system has got a hardware random number generator.',
+'system has rdrand' => 'This system has got support for Intel(R) RDRAND.',
+'system information' => 'System Information',
 'system log viewer' => 'System Log Viewer',
 'system logs' => 'System Logs',
 'system status information' => 'System Status Information',
+'ta key' => 'TLS-Authentification-Key',
 'telephone not set' => 'Telephone not set.',
 'template' => 'Preset',
 'template warning' => 'You have two options to set up Qos. The First, you press the save button and generate the classes and rules on your own. The second, you press the preset button and classes and rules will be set up by a template.',
+'teovpn_fragment' => 'Fragmentsize',
 'test' => 'test',
 'test email could not be sent' => 'Could not sent Testemail',
 'test email was sent' => 'Testemail was send successfully',
 'tone' => 'Tone',
 'tone dial' => 'Tone dial:',
 'too long 80 char max' => ' is too long, maximum allowed is 80 characters',
+'tor' => 'Tor',
+'tor 0 = disabled' => '0 = disabled',
+'tor accounting' => 'Accounting',
+'tor accounting bytes' => 'Traffic (read/written)',
+'tor accounting bytes left' => 'left',
+'tor accounting interval' => 'Interval (UTC)',
+'tor accounting limit' => 'Accounting limit (MB)',
+'tor accounting period' => 'Accounting period',
+'tor accounting period daily' => 'daily',
+'tor accounting period monthly' => 'monthly',
+'tor accounting period weekly' => 'weekly',
+'tor acls' => 'Access Control',
+'tor allowed subnets' => 'Allowed subnets (one per line)',
+'tor bandwidth burst' => 'Max. burst',
+'tor bandwidth rate' => 'Max. rate',
+'tor bandwidth settings' => 'Bandwidth Settings',
+'tor bandwidth unlimited' => 'unlimited',
+'tor bridge enabled' => 'Enable Tor bridge',
+'tor common settings' => 'Common Settings',
+'tor configuration' => 'Tor Configuration',
+'tor connected relays' => 'Connected relays',
+'tor contact info' => 'Contact Info',
+'tor daemon' => 'Daemon',
+'tor directory port' => 'Directory port',
+'tor enabled' => 'Enable Tor',
+'tor errmsg invalid accounting limit' => 'Invalid accounting limit',
+'tor errmsg invalid directory port' => 'Invalid directory port',
+'tor errmsg invalid ip or mask' => 'Invalid IP subnet',
+'tor errmsg invalid node id' => 'Invalid node ID',
+'tor errmsg invalid relay address' => 'Invalid relay address',
+'tor errmsg invalid relay name' => 'Invalid relay nickname',
+'tor errmsg invalid relay port' => 'Invalid relay port',
+'tor errmsg invalid socks port' => 'Invalid SOCKS port',
+'tor exit country' => 'Exit country',
+'tor exit country any' => 'Any country',
+'tor exit nodes' => 'Exit Nodes',
+'tor relay address' => 'Relay address',
+'tor relay configuration' => 'Tor Relay Configuration',
+'tor relay enabled' => 'Enable Tor Relay',
+'tor relay external address' => 'Relay external address',
+'tor relay fingerprint' => 'Relay fingerprint',
+'tor relay mode' => 'Relay mode',
+'tor relay mode bridge' => 'Bridge',
+'tor relay mode exit' => 'Exit-Node',
+'tor relay mode private bridge' => 'Private bridge',
+'tor relay mode relay' => 'Relay only',
+'tor relay nickname' => 'Relay nickname',
+'tor relay port' => 'Relay port',
+'tor service' => 'Tor Service',
+'tor socks port' => 'SOCKS port',
+'tor stats' => 'Statistics',
+'tor traffic limit hard' => 'Traffic limit has been reached.',
+'tor traffic limit soft' => 'Traffic limit almost reached. Not accepting any new connections.',
+'tor traffic read written' => 'Total traffic (read/written)',
+'tor use exit nodes' => 'Use only these exit nodes (one per line)',
 'total connection time' => 'Total connection time',
 'total hits for log section' => 'Total hits for log section',
 'traffic back' => 'Back',
 'trafficorange' => 'DMZ',
 'trafficout' => 'Output',
 'trafficred' => 'Internet',
-'traffics' => 'Utilization-overview:',
+'traffics' => 'Utilization-overview',
 'trafficsum' => 'Totals',
 'trafficto' => 'To',
 'transfer limits' => 'Transfer limits',
 'upload a certificate' => 'Upload a certificate:',
 'upload a certificate request' => 'Upload a certificate request:',
 'upload ca certificate' => 'Upload CA certificate',
+'upload dh key' => 'Upload Diffie-Hellman parameters',
 'upload fcdsl.o' => 'TO BE REMOVED',
 'upload file' => 'Upload file',
 'upload new ruleset' => 'Upload new ruleset',
 'uptime' => 'Uptime',
 'uptime and users' => 'Uptime and users:',
 'uptime load average' => 'Load average',
-'url filter' => 'Content Filter',
+'url filter' => 'URL Filter',
 'urlfilter access' => 'Access',
 'urlfilter activity detection' => 'Activity detection',
 'urlfilter add new time constraint rule' => 'Add new time constraint rule',
 'urlfilter quota restart message' => 'Note: The counters will be reset for all users when restarting the URL filter',
 'urlfilter quota time error' => 'Invalid value for time quota',
 'urlfilter quota user error' => 'At least one username is required',
+'urlfilter redirect template' => 'Redirect page template',
 'urlfilter redirectpage' => 'Redirect to this URL',
 'urlfilter remove file' => 'Remove file from repository',
 'urlfilter renewal' => 'Renewal',
 'urlfilter weekly' => 'weekly',
 'urlfilter whitelist always allowed' => 'Allow custom whitelist for banned clients',
 'urlfilter wrong filetype' => 'File has not the extension .tar.gz',
-'usb modem on acm0' => 'USB Modem on ACM0',
-'usb modem on acm1' => 'USB Modem on ACM1',
-'usb modem on acm2' => 'USB Modem on ACM2',
-'usb modem on acm3' => 'USB Modem on ACM3',
 'use' => 'Use',
 'use a pre-shared key' => 'Use a pre-shared key:',
 'use dov' => 'Use data over voice (DOV):',
 'valid root certificate already exists' => 'A valid root certificate already exists.',
 'valid till' => 'Valid till',
 'vci number' => 'VCI number:',
+'vendor' => 'Vendor',
 'view log' => 'view log',
 'virtual address' => 'Virtual Address',
 'virtual private networking' => 'Virtual Private Networking',
 'vpn aggrmode' => 'IKE aggressive mode allowed. Avoid if possible (preshared key is transmitted in clear text)!',
 'vpn altname syntax' => 'SubjectAltName is a comma separated list of e-mail, dns, uri, rid and ip objects.<br />email:an email address. Syntax email:copy takes the email field from the cert to be used.<br />DNS:a valid domain name.<br />URI:any valid uri.<br />RID:registered object identifier.<br />IP:an IP address.<br />Note:charset is limited and case is significant.<br />Example:<br /><b>e-mail:</b>ipfire@foo.org<b>,email:</b>copy<b>,DNS:</b>www.ipfire.org<b>,IP:</b>127.0.0.1<b>,URI:</b>http://url/to/something',
 'vpn auth-dn' => 'Peer is identified by either IPV4_ADDR, FQDN, USER_FQDN or DER_ASN1_DN string in remote ID field',
-'vpn configuration main' => 'VPN configuration - Main',
 'vpn delayed start' => 'Delay before launching VPN (seconds)',
 'vpn delayed start help' => 'If required, this delay can be used to allow dynamic DNS updates to propagate properly. 60 is a common value when RED is a dynamic IP.',
 'vpn incompatible use of defaultroute' => 'hostname=%defaultroute not allowed',
 'wireless config added' => 'Wireless config added',
 'wireless config changed' => 'Wireless config changed',
 'wireless configuration' => 'Wireless Configuration',
+'wlan client' => 'Wireless client',
+'wlan client advanced settings' => 'Advanced settings',
+'wlan client and' => 'and',
+'wlan client bssid' => 'BSSID',
+'wlan client ccmp' => 'CCMP',
+'wlan client configuration' => 'Wireless Client Configuration',
+'wlan client disconnected' => 'Disconnected',
+'wlan client duplicate ssid' => 'Duplicate SSID',
+'wlan client edit entry' => 'Edit wireless client configuration',
+'wlan client encryption' => 'Encryption',
+'wlan client encryption none' => 'None',
+'wlan client encryption wep' => 'WEP',
+'wlan client encryption wpa' => 'WPA',
+'wlan client encryption wpa2' => 'WPA2',
+'wlan client group cipher' => 'Group cipher',
+'wlan client group key algorithm' => 'GKA',
+'wlan client invalid key length' => 'Invalid key length.',
+'wlan client new entry' => 'Create new wireless client configuration',
+'wlan client new network' => 'New network',
+'wlan client pairwise cipher' => 'Pairwise cipher',
+'wlan client pairwise key algorithm' => 'PKA',
+'wlan client pairwise key group key' => 'Pairwise key/group key',
+'wlan client psk' => 'Pre-shared key',
+'wlan client ssid' => 'SSID',
+'wlan client tkip' => 'TKIP',
+'wlan client wpa mode' => 'WPA mode',
+'wlan client wpa mode all' => 'Auto',
+'wlan client wpa mode ccmp ccmp' => 'CCMP-CCMP',
+'wlan client wpa mode ccmp tkip' => 'CCMP-TKIP',
+'wlan client wpa mode tkip tkip' => 'TKIP-TKIP',
+'wlan clients' => 'Wireless clients',
 'wlanap access point' => 'Access Point',
 'wlanap channel' => 'Channel',
 'wlanap country' => 'Country Code',
 '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..2be3d36e4c51b3edf0c290f159bc091d1ff26e1b 100644 (file)
@@ -15,8 +15,8 @@
 'ConnSched change profile title' => 'Cambiar a perfil:',
 'ConnSched days' => 'Días:',
 'ConnSched down' => 'Abajo',
-'ConnSched ipsecstart' => '(Re)iniciarIPSec',
-'ConnSched ipsecstop' => 'Detener IPSec',
+'ConnSched ipsecstart' => '(Re)iniciarIPsec',
+'ConnSched ipsecstop' => 'Detener IPsec',
 'ConnSched reconnect' => 'Reconectar',
 'ConnSched scheduled actions' => 'Acciones planificadas',
 'ConnSched scheduler' => 'Planificador',
@@ -90,7 +90,6 @@
 'admin user password has been changed' => 'El password del usuario Admin ha cambiado',
 'admin users' => 'Usuario con niveles de superusuario (root)',
 'administrator user password' => 'Contraseña del usuario Admin:',
-'adsl settings' => 'Configuraciones ADSL',
 'advanced' => 'Avanzadas',
 'advanced server' => 'Opciones avanzadas de servidor',
 'advproxy AUTH always required' => 'Se necesita autentificación para acceso irrestricto de direcciones de orígen',
 'are you sure' => '¿Esta seguro?',
 'arp table entries' => 'Tabla de entradas ARP:',
 'artist' => 'Artista',
+'atm settings' => 'Configuraciones ATM',
 'attemps' => 'Intentos',
 'august' => 'Agosto',
 'authentication' => 'Autenticación',
 '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',
 'urlfilter weekly' => 'semanalmente',
 'urlfilter whitelist always allowed' => 'Permitir lista blanca personalizada para clientes censurados',
 'urlfilter wrong filetype' => 'El archivo no tiene la extension .tar.gz',
-'usb modem on acm0' => 'Modem USB en ACM0',
-'usb modem on acm1' => 'Modem USB en ACM1',
-'usb modem on acm2' => 'Modem USB en ACM2',
-'usb modem on acm3' => 'Modem USB en ACM3',
 'use' => 'Usar',
 'use a pre-shared key' => 'Usar llave pre-compartida',
 'use dov' => 'Usar datos sobre voz (DOV)',
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..f4e9518ff46d70a6fb5ae1cb32a8488ae7b24b98 100644 (file)
@@ -16,8 +16,8 @@
 'ConnSched change profile title' => 'Changer de profil :',
 'ConnSched days' => 'Jours :',
 'ConnSched down' => 'Arrêt',
-'ConnSched ipsecstart' => 'IPSec (re)démarrage',
-'ConnSched ipsecstop' => 'IPSec arrêt',
+'ConnSched ipsecstart' => 'IPsec (re)démarrage',
+'ConnSched ipsecstop' => 'IPsec arrêt',
 'ConnSched reconnect' => 'Reconnecter',
 'ConnSched scheduled actions' => 'Actions planifiées',
 'ConnSched scheduler' => 'Planificateur',
@@ -92,7 +92,6 @@
 'admin user password has been changed' => 'Le mot de passe admin a été changé.',
 'admin users' => 'Utilisateur avec droits super-utilisateur',
 'administrator user password' => 'Mot de passe de l\'administrateur:',
-'adsl settings' => 'Réglages ADSL',
 'advanced' => 'Avancé',
 'advanced server' => 'Options avancées du serveur',
 'advproxy AUTH always required' => 'Exige l\'authentification pour un accès sans restriction des adresses sources',
 'are you sure' => 'Etes vous sûr ?',
 'arp table entries' => 'Table d\'entrées ARP:',
 'artist' => 'Artiste',
+'atm settings' => 'Réglages ATM',
 'attemps' => 'Tentatives',
 'august' => 'Août',
 'authentication' => 'Authentification :',
 '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',
 'urlfilter weekly' => 'hebdomadairement',
 'urlfilter whitelist always allowed' => 'Autoriser une liste blanche personnalisée de clients bannis',
 'urlfilter wrong filetype' => 'Le fichier n\'a pas l\'extension .tar.gz',
-'usb modem on acm0' => 'Modem USB sur ACM0',
-'usb modem on acm1' => 'Modem USB sur ACM1',
-'usb modem on acm2' => 'Modem USB sur ACM2',
-'usb modem on acm3' => 'Modem USB sur ACM3',
 'use' => 'Utiliser',
 'use a pre-shared key' => 'Utiliser une clé pré-partagée :',
 'use dov' => 'Utilisez DOV (Data Over Voice):',
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 d7ea4e84c2be526901a26f976d40b0b5e4cc82c6..552ca87e731c8842535b6bf56f75ac15300b08fa 100644 (file)
@@ -5,3 +5,4 @@ es:Español:Spanish
 pl:Polski:Polish
 ru:Русский:Russian
 nl:Nederlands:Dutch
+tr:Türkçe:Turkish
index 0c45a0bfcb074142120d71efb0c189cac24e8ad8..b9e4c6f764b500c8f342945234f26b9b8337f526 100644 (file)
 'ConnSched add action' => 'Voeg actie toe',
 'ConnSched change profile title' => 'Gebruik profiel:',
 'ConnSched days' => 'Dagen:',
+'ConnSched dial' => 'Verbind',
 'ConnSched down' => 'Omlaag',
-'ConnSched ipsecstart' => 'IPSec (her)starten',
-'ConnSched ipsecstop' => 'IPSec stoppen',
+'ConnSched hangup' => 'Verbreek',
+'ConnSched ipsecstart' => 'IPsec (her)starten',
+'ConnSched ipsecstop' => 'IPsec stoppen',
+'ConnSched reboot' => 'Herstarten',
 'ConnSched reconnect' => 'Opnieuw verbinden',
 'ConnSched scheduled actions' => 'Ingeplande acties',
 'ConnSched scheduler' => 'Scheduler',
 'ConnSched select profile' => 'Selecteer profiel',
+'ConnSched shutdown' => 'Afsluiten',
 'ConnSched time' => 'Tijd:',
 'ConnSched up' => 'Omhoog',
 'ConnSched weekdays' => 'Dagen van de week:',
 'Level7 Rule' => 'Level7-Regel',
 'Level7 rule' => 'Level7 regel',
 'Local VPN IP' => 'Intern Netwerk (GROEN):',
+'MB read' => 'MB gelezen',
+'MB written' => 'MB geschreven',
 'MTU' => 'MTU grootte:',
 'Number of IPs for the pie chart' => 'Aantal IPs voor de taartdiagram',
 'Number of Ports for the pie chart' => 'Aantal poorten voor de taartdiagram',
 'OVPN' => 'OpenVPN',
 'OpenVPN' => 'OpenVPN',
 'Pages' => 'Pagina\'s',
-'Ping' => 'Ping:',
+'Ping' => 'Ping :',
 'Port Rule' => 'Poort-Regel',
 'QoS not enabled' => 'QoS is niet ingeschakeld!',
 'Queuelenght' => 'Wachtrijlengte',
 'add xtaccess' => 'Voeg een externe toegang toe',
 'add-route' => 'Extra push route',
 'added from dhcp lease list' => 'Toegevoegd van DHCP lease-lijst.',
+'addons' => 'Toevoegingen',
 'admin user password has been changed' => 'Beheerderswachtwoord is gewijzigd.',
 'admin users' => 'Gebruiker met beheerdersrechten.',
 'administrator user password' => 'Beheerderswachtwoord:',
-'adsl settings' => 'ADSL instellingen',
 'advanced' => 'Geavanceerd',
 'advanced server' => 'Geavanceerde server opties',
 'advproxy AUTH always required' => 'Authenticatie vereist voor ongelimiteerde bronadressen.',
 'advproxy banned mac clients' => 'Verboden MAC-adressen (een per regel)',
 'advproxy cache management' => 'Cache beheer',
 'advproxy cache replacement policy' => 'Cache vervangingsbeleid',
+'advproxy cache-digest' => 'Inschakelen Cache-Digest Generation',
 'advproxy chgwebpwd ERROR' => 'F O U T :',
 'advproxy chgwebpwd SUCCESS' => 'S U C C E S V O L :',
 'advproxy chgwebpwd change password' => 'Wijzig wachtwoord',
 'advproxy errmsg password length 1' => 'Wachtwoord moet tenminste ',
 'advproxy errmsg password length 2' => ' tekens bevatten',
 'advproxy errmsg passwords different' => 'Wachtwoorden zijn niet gelijk',
+'advproxy errmsg proxy ports equal' => 'De proxy poort en de transparante poort kunnen niet gelijk zijn.',
 'advproxy errmsg radius port' => 'Ongeldig RADIUS poortnummer',
 'advproxy errmsg radius secret' => 'RADIUS gedeeld geheim vereist',
 'advproxy errmsg radius server' => 'Ongeldig IP-adres voor RADIUS server',
 'advproxy on' => 'Proxy aan',
 'advproxy privacy' => 'Privacy',
 'advproxy proxy port' => 'Proxy poort',
+'advproxy proxy port transparent' => 'Transparante poort',
 'advproxy ram cache size' => 'Geheugen cache-grootte (MB)',
 'advproxy redirector children' => 'Aantal filterprocessen',
 'advproxy reset' => 'Reset',
 'advproxy web browser' => 'Webbrowser',
 'advproxy wednesday' => 'Woe',
 'again' => 'Nogmaals:',
+'age second' => 'seconde',
+'age seconds' => 'seconden',
+'age shour' => 'uur',
+'age sminute' => 'min',
+'age ssecond' => 'sec',
 'aktiv' => 'Actief',
 'album' => 'Album',
 'alcatelusb help' => 'Om gebruik te kunnen maken van de SpeedTouch 330 of SpeedTouch USB modem moet u eerst de firmware naar uw IPFire machine uploaden. U kunt de <b>Embedded Firmware</b> voor de SpeedTouch 330 downloaden van speedtouch.com. Pak het uit en upload het juiste bestand naar uw modem: KQD6_3.xxx als Rev<4 of ZZZL_3.xxx, voor Rev=4 gebruik het formulier hieronder.',
 'are you sure' => 'Weet u het zeker?',
 'arp table entries' => 'ARP Tabelingangen:',
 'artist' => 'Artiest',
+'atm settings' => 'ATM instellingen',
 'attemps' => 'Pogingen',
 'attention' => 'LET OP',
 'august' => 'Augustus',
 'behind a proxy' => 'Achter een proxy:',
 'bewan adsl pci st' => 'WORDT VERWIJDERD',
 'bewan adsl usb' => 'WORDT VERWIJDERD',
+'bit' => 'Bit',
 'bitrate' => 'Bitsnelheid',
 'bleeding rules' => 'Nieuwste Snort regels',
 'blue' => 'BLAUW',
 'ccd err iroute' => 'Netwerkadres voor route is ongeldig.',
 'ccd err irouteexist' => 'Deze route is al in gebruik.',
 'ccd err isipsecnet' => 'Het gegeven subnet-adres is al in gebruik door een IPsec netwerk.',
+'ccd err isipsecrw' => 'Het gegeven subnet-adres is al in gebruik door het IPsec rw netwerk.',
+'ccd err isovpnn2n' => 'The subnet address is already in use for an OpenVPN net-to-net connection.',
 'ccd err isovpnnet' => 'Subnet-adres is al in gebruik voor OpenVPN Server.',
 'ccd err issubnet' => 'Subnet-adres is al in gebruik.',
 'ccd err name' => 'Kies een naam.',
 'ccd hint' => 'Op deze pagina kunt u statische netwerken definiëren vanwaar de roadwarrior clients vaste IP-adressen toegewezen kunnen krijgen.',
 'ccd invalid' => 'Ongeldig.',
 'ccd iroute' => 'IPFire heeft toegang tot deze netwerken aan de klant-site.',
+'ccd iroute2' => 'Client heeft toegang tot deze netwerken op IPFire\'s site',
 'ccd iroutehint' => 'Attentie! Als u deze instellingen wijzigt, moet u de OpenVPN server herstarten om deze instellingen actief te laten worden!',
 'ccd modify' => 'Wijzig netwerk',
 'ccd name' => 'Naam',
 'clock last synchronized at' => 'Klok was voor het laatst gesynchroniseerd om',
 'comment' => 'Omschrijving:',
 'common name' => 'Algemene naam',
-'community rules' => 'Emergingthreats.net community regels',
+'community rules' => 'Snort/VRT GPLv2 community regels',
 'comp-lzo' => 'LZO-Compressie:',
 'compression' => 'Compressie:',
 'computer to modem rate' => 'Computer naar modem rato:',
 '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',
 'could not open installed updates file' => 'Kan het geïnstalleerde update-bestand niet openen.',
 'could not open update information file' => 'Kan het update informatiebestand niet openen. Het update-bestand is beschadigd.',
 'could not retrieve common name from certificate' => 'Kan de gemeenschappelijke naam van het certificaat niet bepalen.',
+'count' => 'Aantal',
+'countries' => 'Landen',
 'country' => 'Land',
+'country codes and flags' => 'Landcodes en vlaggen:',
+'countrycode' => 'Code',
 'cpu frequency per' => 'CPU frequentie per',
 'cpu idle usage' => 'Idle CPU gebruik',
 'cpu interrupt usage' => 'Interrupt CPU gebruik',
 'ddns noip prefix' => 'Om no-ip in groepsmodus te gebruiken, zet <b>%</b> voor de hostnaam',
 'deactivate' => 'deactiveer',
 'deactivate user' => 'deactiveer gebruiker',
+'dead peer detection' => 'Dode Peer-detectie',
 'debugme' => 'Nog niet geïmplementeerd',
 'december' => 'December',
 'deep scan directories' => 'Scan recursief',
 'def lease time' => 'Standaard leasetijd',
+'default ip' => 'Standaard IP adres',
 'default lease time' => 'Standaard leasetijd (min.):',
 'default networks' => 'Standaard netwerken',
 'default renewal time' => 'Standaard vernieuwtijd',
 'destination port numbers' => 'Bestemmingspoort moet een geldig poortnummer of poortreeks zijn.',
 'destination port overlaps' => 'Bestemming-poortreeks overlapt een bestaande poortreeks.',
 'detail level' => 'Detailniveau',
+'details' => 'Details',
 'device' => 'Apparaat',
 'devices on blue' => 'Apparaten op BLAUW',
 'dhcp advopt add' => 'Voeg een DHCP optie toe',
 'dmz pinhole rule added' => 'DMZ pinhole regel toegevoegd; DMZ regel wordt herstart.',
 'dmz pinhole rule removed' => 'DMZ pinhole regel verwijderd; DMZ wordt herstart',
 'dmzpinholes for same net not necessary' => 'DMZ Pinholes zijn niet per se nodig voor hetzelfde net. Selecteer verschillende bron- of bestemmings-net.',
+'dnat address' => 'Firewallinterface',
 'dns address deleted' => 'Succesvol verwijderd!',
 'dns address deleted txt' => 'De DNS-Server adressen zijn succesvol verwijderd.<br />U moet herstarten of opnieuw verbinden om de wijzigingen actief te laten worden!',
 'dns address done' => 'De DNS-server adresinstellingen zullen worden opgeslagen.',
 'dns saved txt' => 'De twee ingevoerde DNS serveradressen zijn succesvol opgeslagen.<br />U moet herstarten of opnieuw verbinden om de wijzigingen actief te laten worden!',
 'dns server' => 'DNS Server',
 'dns title' => 'Domein Naam Systeem',
-'do not log this port list' => 'Negeer deze poorten voordat ze worden gelogd (vermindert loggrootte)',
+'dnsforward' => 'DNS Forwarding',
+'dnsforward add a new entry' => 'Voeg een nieuwe regel toe',
+'dnsforward configuration' => 'DNS forward configuratie',
+'dnsforward edit an entry' => 'Wijzig een bestaande regel',
+'dnsforward entries' => 'Huidige regels',
+'dnsforward forward_server' => 'Naamserver',
+'dnsforward zone' => 'Zone',
+'do not log this port list' => 'Negeer deze poortlijst voordat deze wordt gelogd (beperkt grootte logbestand)',
 'dod' => 'Inbellen op afroep',
 'dod for dns' => 'Inbellen op afroep voor DNS:',
 'dod not compatible with ddns' => 'Inkiezen op afroep compatibel met de dynamische DNS Diesten',
 'done' => 'Doe het',
 'dos charset' => 'DOS tekenset',
 'down and up speed' => 'Voer uw down- en uploadsnelheid in<br /> en klik dan op <i>Opslaan</i>.',
+'downlink' => 'Downlink',
 'downlink speed' => 'Downlink snelheid (kbit/sec)',
 'downlink std class' => 'downlink standaard klasse',
 'download' => 'download',
 'download pkcs12 file' => 'Download PKCS12 bestand',
 'download root certificate' => 'Download root certificaat',
 'dpd action' => 'Dead peer-detectie actie',
+'dpd delay' => 'Vertraging',
+'dpd timeout' => 'Timeout',
 'driver' => 'Driver',
+'drop action' => 'Standaard gedrag van (forward) firewall in mode "Geblokkeerd"',
+'drop action1' => 'Standaard gedrag van (uitgaande) firewall in mode "Geblokkeerd"',
+'drop action2' => 'Standaard gedrag van (input) firewall',
+'drop forward' => 'Log geblokkeerde forward packetten',
 'drop input' => 'Log geblokkeerde input pakketten',
 'drop newnotsyn' => 'Log geblokkeerde new-not-syn pakketten',
 'drop output' => 'Log geblokkeerde output pakketten',
 'eg' => 'bijv.:',
 'email server can not be empty' => 'E-mailserver mag niet leeg zijn',
 'emailreportlevel' => 'E-mailrapport detailniveau',
+'emerging rules' => 'Emergingthreats.net community regels',
 'empty' => 'Dit veld mag niet leeg worden gelaten',
 'empty profile' => 'leeg',
 'enable ignore filter' => 'Inschakelen negeer-filter',
 'enabledtitle' => 'Ingeschakeld',
 'encapsulation' => 'Inkapseling',
 'encrypted' => 'Gecodeerd',
+'encryption' => 'Codering:',
 'end address' => 'Eindadres:',
 'enter ack class' => 'Voer de ACK-klasse in <br /> en klik dan op <i>Opslaan</i>.',
 'enter data' => 'Maak uw instellingen <br /> en klik dan op <i>Opslaan</i>.',
+'entropy' => 'Entropy',
+'entropy graphs' => 'Entropy grafieken',
 'err bk 1' => 'Fout bij aanmaken van archief',
 'err bk 10 password' => 'Fout met het back-up wachtwoord',
 'err bk 2 key' => 'Fout bij het aanmaken van een sleutelbestand',
 'firewall logs' => 'Firewall Logs',
 'firewall logs ip' => 'Fw-Logdgrafieken (IP)',
 'firewall logs port' => 'Fw-Loggrafieken (Poort)',
+'firewall rules' => 'Firewallregels',
 'firewallhits' => 'firewalltreffers',
 'firmware' => 'Firmware',
 'firmware upload' => 'Upload Firmware/Drivers',
+'first' => 'Eerste',
 'fixed ip lease added' => 'Vast IP-lease toegevoegd',
 'fixed ip lease modified' => 'Vast IP-lease gewijzigd',
 'fixed ip lease removed' => 'Vast IP-lease verwijderd',
+'flag' => 'Vlag',
 'force update' => 'Forceer update',
 'force user' => 'forceer alle nieuwe bestanden naar de gebruiker',
+'forward firewall' => 'Firewall',
 'forwarding rule added' => 'Forwarding regel toegevoegd; herstarten van forwarder',
 'forwarding rule removed' => 'Forwarding regel verwijderd; herstarten van forwarder',
 'forwarding rule updated' => 'Forwarding regel bijgewerkt; herstarten van  forwarder',
 'from email user' => 'Van e-mail gebruiker',
 'from warn email bad' => 'Het van e-mailadres is niet geldig',
 'fw blue' => 'Firewallopties voor de BLAUWE interface',
+'fw default drop' => 'Firewallbeleid',
 'fw logging' => 'Firewall logging',
+'fw settings' => 'Firewall instellingen',
+'fw settings color' => 'Toon gekleurde regels in tabel',
+'fw settings dropdown' => 'Toon alle netwerken op omgeving van aangemaakte regels',
+'fw settings remark' => 'Toon opmerkingen in tabel',
+'fw settings ruletable' => 'Toon lege tabellen',
+'fwdfw ACCEPT' => 'ACCEPTEER',
+'fwdfw DROP' => 'BLOKKEER',
+'fwdfw MODE1' => 'Blokeer alle pakketten',
+'fwdfw MODE2' => 'Accepteer alle pakketten',
+'fwdfw REJECT' => 'WEIGER',
+'fwdfw action' => 'Actie',
+'fwdfw additional' => 'Extra instellingen',
+'fwdfw addrule' => 'Voeg toe/Wijzig regel:',
+'fwdfw all icmp' => 'Alle ICMP types',
+'fwdfw change' => 'Bijwerken',
+'fwdfw copy' => 'Kopiëer',
+'fwdfw delete' => 'Verwijder',
+'fwdfw dnat' => 'Bestemmings-NAT (Poort forwarding)',
+'fwdfw dnat error' => 'U kunt slechts één host selecteren voor DNAT. Groepen of netwerken zijn niet toegestaan.',
+'fwdfw dnat extport' => 'De externe poort moet leeg zijn wanneer bron-NAT regels worden gebruikt.',
+'fwdfw dnat nochoice' => 'Kies een bron-NAT of bestemmings-NAT adres uit de NAT-sectie.',
+'fwdfw dnat porterr' => 'U moet een enkele poort of poortreeks (tcp/udp) selecteren voor NAT',
+'fwdfw dnat porterr2' => 'Kan geen externe poort (NAT) gebruiken als er geen bestemmingspoort is gedefiniëerd.',
+'fwdfw edit' => 'Wijzigen',
+'fwdfw err nosrc' => 'Geen bron geselecteerd.',
+'fwdfw err nosrcip' => 'Geef a.u.b. het bron IP adres.',
+'fwdfw err notgt' => 'Geen bestemming geselecteerd.',
+'fwdfw err notgtip' => 'Geef a.u.b. een bestemmings IP adres.',
+'fwdfw err prot_port' => 'Bron- of doelpoort zijn niet toegestaan met het geselecteerde protocol',
+'fwdfw err prot_port1' => 'Als een bron- of doelpoort wordt gebruikt, moet het TCP of UDP protocol worden geselecteerd.',
+'fwdfw err remark' => 'Ongeldige tekens in opmerking.',
+'fwdfw err ruleexists' => 'Deze regel bestaat al.',
+'fwdfw err same' => 'Bron en bestemming zijn gelijk.',
+'fwdfw err samesub' => 'Bron- en bestemmings IP adres zitten in hetzelfde subnet.',
+'fwdfw err src_addr' => 'Ongeldig bron MAC/IP adres.',
+'fwdfw err tgt_addr' => 'Ongeldig bestemmings IP adres.',
+'fwdfw err tgt_grp' => 'De bestemmings servicegroep is leeg',
+'fwdfw err tgt_mac' => 'Een MAC adres kan niet worden gebruikt als bestemming.',
+'fwdfw err tgt_port' => 'Ongeldige bestemmingspoort.',
+'fwdfw err time' => 'U moet tenminste één dag selecteren.',
+'fwdfw external port nat' => 'Externe poort (NAT)',
+'fwdfw final_rule' => 'Laatste regel: ',
+'fwdfw from' => 'Van:',
+'fwdfw hint ip1' => 'De laatst gegenereerde regel mag nooit overeenkomen, omdat bron- en bestemmingssubnet kunnen overlappen.',
+'fwdfw hint ip2' => 'Controleer of deze regel juist is: ',
+'fwdfw hint mac' => 'De bestemmingsgroep bevat MAC adressen; deze zullen worden overgeslagen tijdens het aanmaken van de regels.',
+'fwdfw iface' => 'Interface',
+'fwdfw ipsec network' => 'IPsec netwerken:',
+'fwdfw log' => 'Log',
+'fwdfw log rule' => 'Log regel',
+'fwdfw man port' => 'Poort(en):',
+'fwdfw many' => 'Meerdere',
+'fwdfw menu' => 'Firewall',
+'fwdfw movedown' => 'Omlaag',
+'fwdfw moveup' => 'Omhoog',
+'fwdfw natport used' => 'De gegeven poort voor NAPT is al in gebruik door een andere DNAT regel.',
+'fwdfw newrule' => 'Nieuwe regel',
+'fwdfw p2p txt' => 'Toestaan/Verbieden toegang tot P2P netwerken.',
+'fwdfw pol allow' => 'Toegestaan',
+'fwdfw pol block' => 'Geblokkeerd',
+'fwdfw pol text' => 'Stel het standaard gedrag in voor verbindingen van lokale netwerken. U kunt alle verbindingen standaard toestaan of blokkeren. Verbindingen tussen lokale netwerken zijn tevens geblokeerd in de laatst genoemde modus.',
+'fwdfw pol text1' => 'Stel het standaard gedrag in voor verbindingen die door de firewall zelf zijn geïnitieerd. Let op! U kunt uzelf hiermee buiten sluiten.',
+'fwdfw pol title' => 'Standaard firewall gedrag',
+'fwdfw prot41' => 'IPv6 Encapsulation (Protocol 41)',
+'fwdfw prot41 short' => 'IPv6 Encap',
+'fwdfw red' => 'RED',
+'fwdfw reread' => 'Wijzigingen toepassen',
+'fwdfw rule action' => 'Regel actie:',
+'fwdfw rule activate' => 'Activeer regel',
+'fwdfw rulepos' => 'Regel positie',
+'fwdfw rules' => 'Regels',
+'fwdfw snat' => 'Bron NAT',
+'fwdfw source' => 'Bron',
+'fwdfw sourceip' => 'Bronadres (MAC/IP adres of netwerk):',
+'fwdfw std network' => 'Standaard netwerken:',
+'fwdfw target' => 'Bestemming',
+'fwdfw targetip' => 'Bestemmingsadres (IP adres of netwerk):',
+'fwdfw till' => 'Tot:',
+'fwdfw time' => 'Tijdvak',
+'fwdfw timeframe' => 'Gebruik tijdvakken',
+'fwdfw toggle' => 'Activeer of deactiveer',
+'fwdfw togglelog' => 'Activeer of deactiveer logging',
+'fwdfw use nat' => 'Gebruik Netwerk Adres Translatie (NAT)',
+'fwdfw use srcport' => 'Bronpoort:',
+'fwdfw use srv' => 'Bestemmingspoort:',
+'fwdfw useless rule' => 'Deze regel kan niet gebruikt worden.',
+'fwdfw warn1' => 'Dit kan leiden tot firewallregels die worden toegepast op netwerken waar ze niet voor bedoeld zijn.',
+'fwdfw wd_fri' => 'Vri',
+'fwdfw wd_mon' => 'Maa',
+'fwdfw wd_sat' => 'Zat',
+'fwdfw wd_sun' => 'Zon',
+'fwdfw wd_thu' => 'Don',
+'fwdfw wd_tue' => 'Din',
+'fwdfw wd_wed' => 'Woe',
+'fwdfw xt access' => 'Input',
+'fwhost Custom Host' => 'Host',
+'fwhost Custom Network' => 'Netwerk',
+'fwhost IpSec Host' => 'IPsec host',
+'fwhost IpSec Network' => 'IPsec netwerk',
+'fwhost OpenVPN N-2-N' => 'OpenVPN Net-to-Net',
+'fwhost OpenVPN static host' => 'OpenVPN statische host',
+'fwhost OpenVPN static network' => 'OpenVPN statisch netwerk',
+'fwhost Standard Network' => 'Standaard netwerk',
+'fwhost addgrp' => 'Voeg nieuw netwerk/host groep toe',
+'fwhost addgrpname' => 'Groepnaam:',
+'fwhost addhost' => 'Nieuwe host toevoegen',
+'fwhost addnet' => 'Nieuw netwerk toevoegen',
+'fwhost addservice' => 'Nieuwe dienst toevoegen',
+'fwhost addservicegrp' => 'Nieuwe dienstgroep toevoegen',
+'fwhost any' => 'Elke',
+'fwhost attention' => 'LET OP',
+'fwhost back' => 'Terug',
+'fwhost blue' => 'Blauw',
+'fwhost ccdhost' => 'OpenVPN clients:',
+'fwhost ccdnet' => 'OpenVPN netwerken:',
+'fwhost change' => 'Wijzigen',
+'fwhost changeremark' => 'U hebt de opmerking aangepast',
+'fwhost cust addr' => 'Hosts',
+'fwhost cust grp' => 'Netwerk/Host Groepen',
+'fwhost cust net' => 'Netwerken',
+'fwhost cust service' => 'Diensten',
+'fwhost cust srvgrp' => 'Dienstengroepen',
+'fwhost deleted' => 'Verwijderd',
+'fwhost empty' => 'Geen regels gedefinieerd',
+'fwhost err addr' => 'Ongeldig IP adres of subnet',
+'fwhost err addrgrp' => 'Geef a.u.b. een groepnaam op',
+'fwhost err empty' => 'Vul a.u.b. alle invoervelden in',
+'fwhost err emptytable' => 'Er zijn geen regels in deze groep',
+'fwhost err groupempty' => 'De geselecteerde groep is leeg',
+'fwhost err grpexist' => 'Een groep met dezelfde naam bestaat al',
+'fwhost err hostexist' => 'Een host met dezelfde naam bestaat al',
+'fwhost err hostorip' => 'Ongeldige naam of IP adres',
+'fwhost err ip' => 'Ongeldig IP adres',
+'fwhost err ipcheck' => 'Dit IP adres is al in gebruik',
+'fwhost err ipmac' => 'Ongeldig IP/MAC adres',
+'fwhost err ipwithsub' => 'Geef a.u.b. alleen een IP adres (zonder subnetmasker)',
+'fwhost err isccdhost' => 'Deze naam is al in gebruik door een OpenVPN client verbinding',
+'fwhost err isccdiphost' => 'Dit IP adres is al in gebruik door een OpenVPN client verbinding',
+'fwhost err isccdipnet' => 'Dit IP adres is al in gebruik door een OpenVPN netwerk verbinding',
+'fwhost err isccdnet' => 'Deze naam is al in gebruik door een OpenVPN netwerk',
+'fwhost err isingrp' => 'Deze regel bestaat al in de groep',
+'fwhost err mac' => 'Ongeldig MAC adres',
+'fwhost err maxservicetcp' => 'Het maximale aantal van 15 TCP diensten is bereikt in deze groep (poortreeksen tellen dubbel)',
+'fwhost err maxserviceudp' => 'Het maximale aantal van 15 UDP diensten is bereikt in deze groep (poortreeksen tellen dubbel)',
+'fwhost err name' => 'Ongeldige naam. Toegestane tekens: hoofd- en kleine letters, cijfers, spatie en min-teken.',
+'fwhost err name1' => 'Geen naam gegeven.',
+'fwhost err net' => 'Netwerk/IP adres bestaat al',
+'fwhost err netexist' => 'Een netwerk met dezelfde naam bestaat al',
+'fwhost err partofnet' => 'Het netwerk is een subnet van een bestaand netwerk.',
+'fwhost err port' => 'Geen poort gegeven',
+'fwhost err remark' => 'Ongeldige opmerking. Toegestane tekens: hoofd- en kleine letters, cijfers, spatie, min-teken, accolades, puntkomma, vertikale streep en punt.',
+'fwhost err srv exists' => 'Een dienst met dezelfde naam bestaat al',
+'fwhost err srvexist' => 'Deze dienst bestaat al in de groep',
+'fwhost err sub32' => 'Geef a.u.b. een enkele hostnaam op, geen netwerk.',
+'fwhost green' => 'Groen',
+'fwhost hint' => 'Notitie',
+'fwhost hosts' => 'Firewall Hosts',
+'fwhost icmptype' => 'ICMP type:',
+'fwhost ip_mac' => 'IP/MAC adres',
+'fwhost ipadr' => 'IP adres:',
+'fwhost ipsec host' => 'IPsec clients:',
+'fwhost ipsec net' => 'IPsec netwerken:',
+'fwhost menu' => 'Firewallgroepen',
+'fwhost netaddress' => 'Netwerkadressen',
+'fwhost newgrp' => 'Netwerk/Host Groepen',
+'fwhost newhost' => 'Hosts',
+'fwhost newnet' => 'Netwerken',
+'fwhost newservice' => 'Diensten',
+'fwhost newservicegrp' => 'Dienstgroepen',
+'fwhost orange' => 'Oranje',
+'fwhost ovpn_n2n' => 'OpenVPN Net-to-Net',
+'fwhost port' => 'Poort(en)',
+'fwhost prot' => 'Protocol',
+'fwhost reread' => 'Firewallregels moeten bijgewerkt worden.',
+'fwhost reset' => 'Annuleren',
+'fwhost services' => 'Diensten:',
+'fwhost srv_name' => 'Dienstnamen',
+'fwhost stdnet' => 'Standaard netweken:',
+'fwhost type' => 'Type',
+'fwhost used' => 'Gebruikt',
+'fwhost welcome' => 'Hier kunt u enkele hosts, netwerken en diensten groeperen, waarmee nieuwe regels sneller aangemaakt kunnen worden.',
+'fwhost wo subnet' => '(zonder subnet)',
 'g.dtm' => 'WORDT VERWIJDERD',
 'g.lite' => 'WORDT VERWIJDERD',
 'gateway' => 'Gateway',
 'graph per' => 'per',
 'green' => 'GROEN',
 'green interface' => 'Groene Interface',
+'grouptype' => 'Groeptype:',
 'guaranteed bandwith' => 'Gegarandeerde bandbreedte',
 'guardian alertfile' => 'Meldingenbestand',
 'guardian configuration' => 'Guardian configuratie',
 'harddisk temperature' => 'Harddisk temperatuur',
 'harddisk temperature graphs' => 'hdd temperatuurgrafieken',
 'hardware graphs' => 'Hardware grafieken',
+'hardware support' => 'Hardware ondersteuning',
 'hdd temperature in' => 'Harddisk temperatuur in',
 'help' => 'Help',
 'high' => 'Hoog',
 'inactive' => 'inactief',
 'include logfiles' => 'Inclusief logbestanden',
 'incoming' => 'inkomend',
+'incoming firewall access' => 'Inkomende firewalltoegang',
 'incoming traffic in bytes per second' => 'Inkomend verkeer',
 'incorrect password' => 'Onjuist wachtwoord',
 'info' => 'Info',
 'installed' => 'Geïnstalleerd',
 'installed updates' => 'Geïnstalleerde updates:',
 'instant update' => 'Directe update',
+'integrity' => 'Integriteit:',
 'interface' => 'Interface',
 'interfaces' => 'Interfaces',
 'internet' => 'INTERNET',
 'invalid input for dhcp dns' => ' Ongeldige invoer voor DHCP DNS',
 'invalid input for dhcp domain' => ' Ongeldige invoer voor DHCP domein',
 'invalid input for dhcp wins' => ' Ongeldige invoer voor DHCP WINS',
+'invalid input for dpd delay' => 'Ongeldige invoer voor DPD vertraging',
+'invalid input for dpd timeout' => 'Ongeldige invoer voor DPD timeout',
 'invalid input for e-mail address' => ' Ongeldige invoer voor e-mailadres.',
 'invalid input for esp keylife' => ' Ongeldige invoer voor ESP sleutel levensduur',
 'invalid input for hostname' => ' Ongeldige invoer voor hostnaam.',
 'ipfire side is invalid' => 'IPFire-zijde is ongeldig.',
 'ipfires hostname' => 'IPFire\'s Hostnaam',
 'ipinfo' => 'IP info',
+'ipsec' => 'IPsec',
+'ipsec network' => 'IPsec netwerk',
+'ipsec no connections' => 'Geen actieve IPsec 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',
 'lan' => 'LAN',
 'lang' => 'nl',
 'languagepurpose' => 'Selecteer de taal die u wilt gebruiken voor IPFire:',
+'last' => 'Laatste',
 'last activity' => 'Laatste activiteit',
 'lateprompting' => 'Laat-prompting',
 'lease expires' => 'Lease verloopt',
+'least preferred' => 'Minste voorkeur',
 'legend' => 'Legenda',
 'length' => 'Lengte',
+'lifetime' => 'Levensduur:',
 'line' => 'Lijn',
 'linkq' => 'Lijnkwaliteit',
 'load printer' => 'Laad printer',
 'mac address saved txt' => 'Het MAC-adres is succesvol opgeslagen, maar de wijzigingen worden pas actief na een herstart of opnieuw verbinden.',
 'mac address title' => 'Medium Access Control Adres',
 'mac desc' => 'Hier kunt u het MAC-adres van red0 wijzigen. Het adres moet in hexadecimale waarden (0-9,a-f) ingevoerd worden, <br />bijv. 00-01-02-0e-b8-d6 of 00:01:02:0e:b8:d6.',
+'mac filter' => 'MAC filter',
 'mac new' => 'nieuw MAC-adres:',
 'mac1 new' => 'nieuw MAC-adres 1 (vdsl-inet):',
 'mac2 new' => 'nieuw MAC-adres 2 (vdsl-iptv):',
 'max size' => 'Max. objectgrootte (KB):',
 'max throughput' => 'Maximum doorvoersnelheid',
 'maximal' => 'Maximaal',
+'maximum' => 'Maximum',
 'maximum retries' => 'Maximum aantal pogingen:',
 'may' => 'Mei',
 'mbmon display' => 'Display',
 'min delay' => 'Minimum vertraging',
 'min size' => 'Min. objectgrootte (KB):',
 'minimal' => 'Minimaal',
+'minimum' => 'Minimum',
 'minute' => 'Minuut',
 'minutes' => 'Minuten',
 'misc-options' => 'Overige opties',
 'monthly volume start day short' => 'Eerste dag',
 'months' => 'maanden',
 'more' => 'meer',
+'most preferred' => 'Meeste voorkeur',
 'mount' => 'Koppelen',
 'mounted on' => 'Gekoppeld op',
 'mpfire' => 'Mediaspeler voor IPFire',
 'no eciadsl synch.bin file' => 'Geen ECI ADSL synch.bin bestand. Bestand uploaden a.u.b.',
 'no filter pass' => 'Geef de standaard-klasse voor niet-gefilterde pakketten.',
 'no fritzdsl driver' => 'Geen Fritz!DSL driver. Bestand uploaden a.u.b.',
+'no hardware random number generator' => 'Dit systeem heeft geen mogelijkheden voor entropie.',
 'no information available' => 'Geen informatie beschikbaar.',
 'no log selected' => 'Geen log geselecteerd',
 'no modem selected' => 'Geen modem geselecteerd',
 'not running' => 'loopt niet',
 'not set' => 'niet gezet',
 'notes' => 'Notities',
+'notice' => 'Opmerking',
 'november' => 'November',
 'ntp common settings' => 'Algemene instellingen',
 'ntp configuration' => 'NTP configuratie',
 'openvpn fragment allowed with udp' => 'Het gebruik van fragment is alleen toegestaan met het UDP protocol.',
 'openvpn log' => 'OpenVPN Log',
 'openvpn mssfix allowed with udp' => 'Het gebruik van "mssfix" is alleen toegestaan met het UDP protocol.',
+'openvpn network' => 'OpenVPN netwerken',
 'openvpn prefix local subnet' => 'Het gebruik van de prefix notatie wordt niet ondersteunt op het lokale subnet. Geef a.u.b. een ander subnetmasker zoals 255.255.255.0.',
 'openvpn prefix openvpn subnet' => 'Het gebruik van de prefix notatie wordt niet ondersteund voor het OpenVPN subnet. Geef a.u.b. een ander subnetmasker zoals 255.255.255.0.',
 'openvpn prefix remote subnet' => 'Het gebruik van de prefix notatie wordt niet ondersteund voor het remote subnet. Geef a.u.b. een ander subnetmasker zoals 255.255.255.0.',
 'out' => 'Uit',
 'outgoing' => 'uitgaand',
 'outgoing firewall' => 'Uitgaande Firewall',
+'outgoing firewall access' => 'Uitgaande firewalltoegang',
 'outgoing firewall add ip group' => 'Toevoegen IP-adresgroep',
 'outgoing firewall add mac group' => 'Toevoegen MAC-adresgroep',
 'outgoing firewall edit ip group' => 'Wijzig IP-adresgroep',
 'ovpn errmsg green already pushed' => 'Route voor het groene netwerk is altijd aangezet',
 'ovpn errmsg invalid ip or mask' => 'Ongeldig netwerkadres of subnetmasker',
 'ovpn log' => 'OVPN-Log',
+'ovpn mgmt in root range' => 'Een poortnummer hoger dan 1024 is vereist.',
 'ovpn mtu-disc' => 'Pad MTU Discovery',
 'ovpn mtu-disc and mtu not 1500' => 'Pad MTU Discovery vereist een MTU van 1500.',
 'ovpn mtu-disc maybe' => 'Optioneel',
 'ovpn mtu-disc off' => 'Uitgeschakeld',
 'ovpn mtu-disc with mssfix or fragment' => 'Pad MTU Discovery kan niet worden gebruikt met mssfix of fragment.',
 'ovpn mtu-disc yes' => 'Geforceerd',
+'ovpn no connections' => 'Geen actieve OpenVPN verbindingen',
 'ovpn on blue' => 'OpenVPN op BLAUW',
 'ovpn on orange' => 'OpenVPN op ORANJE',
 'ovpn on red' => 'OpenVPN op ROOD',
-'ovpn routes push' => 'Routes (een per regel):',
+'ovpn port in root range' => 'Een poortnummer hoger dan 1024 is vereist.',
+'ovpn routes push' => 'Routes (een per regel) bijv. 192.168.10.0/255.255.255.0 192.168.20.0/24',
 'ovpn routes push options' => 'Route push opties',
 'ovpn server status' => 'Huidige OpenVPN server status:',
 'ovpn subnet' => 'OpenVPN subnet (bijv. 10.0.10.0/255.255.255.0)',
 'ovpn_processprioVH' => 'Zeer hoog',
 'ovpnstatus log' => 'OVPN-Status-Log',
 'ovpnsys log' => 'OVPN-Systeem-Log',
+'p2p block' => 'P2P netwerken',
+'p2p block save notice' => 'De firewallregels moeten opnieuw geladen worden om uw wijzigingen actief te maken.',
 'package failed to install' => 'Pakket kon niet worden geïnstalleerd.',
 'pagerefresh' => 'Pagina wordt ververst, wacht even a.u.b.',
 'pakfire accept all' => 'Wilt u alle pakketten installeren?',
 'pulse' => 'Puls',
 'pulse dial' => 'Pulskiezen:',
 'qos add subclass' => 'Voeg sub-klasse toe',
+'qos enter bandwidths' => 'U moet uw downstream- en upstream bandbreedte opgeven!',
 'qos graphs' => 'QoS grafieken',
 'qos warning' => 'De regel <strong>moet</strong> worden opgeslagen, anders zal het worden genegeerd!',
 'quick control' => 'Quick controle',
 'reconnect' => 'Opnieuw verbinden',
 'reconnection' => 'Opnieuw verbinding',
 'red' => 'Internet',
+'red1' => 'ROOD',
 'references' => 'Referenties',
 'refresh' => 'Ververs',
 'refresh index page while connected' => 'Ververs de index.cgi pagina terwijl verbonden',
 'smbstop' => 'Stop samba',
 'smtphost' => 'SMTP host',
 'smtpport' => 'SMTP poort',
+'snat new source ip address' => 'Nieuw bron IP adres',
 'snort hits' => 'Totaal aantal inbraakregels geactiveerd voor',
 'snort working' => 'Snort is bezig ... Wacht a.u.b. totdat alle handelingen succesvol zijn afgerond.',
 'socket options' => 'Socket opties',
 'srcprt range overlaps' => 'Bronpoortreeks overlapt met een al gedefinieerde poort.',
 'srcprt within existing' => 'Bronpoort ligt binnen een al gedefinieerde poortreeks.',
 'ssdmz pinholes' => 'DMZ Pinholes',
+'ssh' => 'SSH',
 'ssh access' => 'SSH toegang',
 'ssh access tip' => 'IPFire SSH gebruikt niet de standaard poort 222!',
 'ssh fingerprint' => 'Vingerafdruk',
 'successfully refreshed updates list' => 'Lijst succesvol bijgewerkt.',
 'summaries kept' => 'Bewaar samenvattingen voor',
 'sunday' => 'Zondag',
+'support donation' => 'Steun het IPFire project met uw donatie',
 'swap' => 'Swap',
 'swap usage per' => 'Swap gebruik per',
 'system' => 'Systeem',
 'system graphs' => 'Systeemgrafieken',
+'system has hwrng' => 'Dit systeem heeft een hardware-generator voor willekeurige getallen.',
+'system has rdrand' => 'Dit systeem ondersteunt Intel(R) RDRAND.',
 'system information' => 'Systeeminformatie',
 'system log viewer' => 'Systeem Log Viewer',
 'system logs' => 'Systeem logs',
 'tone' => 'Toon',
 'tone dial' => 'Toonkiezen:',
 'too long 80 char max' => ' is te lang, maximaal 80 tekens toegestaan',
+'tor' => 'Tor',
+'tor 0 = disabled' => '0 = uitgeschakeld',
+'tor accounting' => 'Verbruik',
+'tor accounting bytes' => 'Verkeer (lezen/schrijven)',
+'tor accounting bytes left' => 'resterend',
+'tor accounting interval' => 'Interval (UTC)',
+'tor accounting limit' => 'Verbruikslimiet (MB)',
+'tor accounting period' => 'Verbruik periode',
+'tor accounting period daily' => 'dagelijks',
+'tor accounting period monthly' => 'maandelijks',
+'tor accounting period weekly' => 'weekelijks',
+'tor acls' => 'Toegangscontrole',
+'tor allowed subnets' => 'Toegestane subnetten (een per regel)',
+'tor bandwidth burst' => 'Max. burst',
+'tor bandwidth rate' => 'Max. snelheid',
+'tor bandwidth settings' => 'Bandbreedte instellingen',
+'tor bandwidth unlimited' => 'ongelimiteerd',
+'tor bridge enabled' => 'Inschakelen Tor bridge',
+'tor common settings' => 'Algemene instellingen',
+'tor configuration' => 'Tor Configuratie',
+'tor connected relays' => 'Verbonden relays',
+'tor contact info' => 'Contact Info',
+'tor daemon' => 'Daemon',
+'tor directory port' => 'Directory poort',
+'tor enabled' => 'Inschakelen Tor',
+'tor errmsg invalid accounting limit' => 'Ongeldige verbruikslimiet',
+'tor errmsg invalid directory port' => 'Ongeldige directory poort',
+'tor errmsg invalid ip or mask' => 'Ongeldig IP subnet',
+'tor errmsg invalid node id' => 'Ongeldige node ID',
+'tor errmsg invalid relay address' => 'Ongeldig relay-adres',
+'tor errmsg invalid relay name' => 'Ongeldige relay-nickname',
+'tor errmsg invalid relay port' => 'Ongeldige relay-poort',
+'tor errmsg invalid socks port' => 'Ongeldige SOCKS poort',
+'tor exit country' => 'Land eindpunt',
+'tor exit country any' => 'Ieder land',
+'tor exit nodes' => 'Eindpunt nodes',
+'tor relay address' => 'Relay-adres',
+'tor relay configuration' => 'Tor relay-configuratie',
+'tor relay enabled' => 'Inschakelen Tor Relay',
+'tor relay external address' => 'Relay extern adres',
+'tor relay fingerprint' => 'Relay-fingerprint',
+'tor relay mode' => 'Relay-mode',
+'tor relay mode bridge' => 'Bridge',
+'tor relay mode exit' => 'Eindpunt-Node',
+'tor relay mode private bridge' => 'Private bridge',
+'tor relay mode relay' => 'Relay only',
+'tor relay nickname' => 'Relay nickname',
+'tor relay port' => 'Relay poort',
+'tor service' => 'Tor dienst',
+'tor socks port' => 'SOCKS poort',
+'tor stats' => 'Statistieken',
+'tor traffic limit hard' => 'Verkeerslimiet is bereikt.',
+'tor traffic limit soft' => 'Verkeerslimiet bijna bereikt. Nieuwe verbindigen worden niet meer geaccepteerd.',
+'tor traffic read written' => 'Totaal verkeer (lezen/schrijven)',
+'tor use exit nodes' => 'Gebruik alleen deze eindpunt-nodes (een per regel)',
 'total connection time' => 'Totale verbindingstijd',
 'total hits for log section' => 'Totaal aantal treffers voor logsectie',
 'traffic back' => 'Terug',
 'updxlrtr source' => 'Bron',
 'updxlrtr source checkup' => 'Broncontrole',
 'updxlrtr source checkup schedule' => 'Broncontrole planning',
+'updxlrtr sources' => 'Bronnen',
+'updxlrtr standard view' => 'Standaard beeld',
 'updxlrtr statistics' => 'Statistieken',
 'updxlrtr statistics by source' => 'Statistieken per bron',
 'updxlrtr summary' => 'Samenvatting',
 'updxlrtr update accelerator' => 'Updateversneller',
 'updxlrtr update information' => 'Er is een nieuwere versie beschikbaar voor download. Bezoek <a href="http://update-accelerator.advproxy.net" target="_blank">http://update-accelerator.advproxy.net</a> voor meer informatie.',
 'updxlrtr update notification' => 'Update notificatie!',
+'updxlrtr used by' => 'Gebruikt door',
 'updxlrtr web proxy service required' => 'Web proxy service moet ingeschakeld zijn om de updateversneller te kunnen gebruiken.',
 'updxlrtr week' => 'een week',
 'updxlrtr weekly' => 'wekelijks',
 'updxlrtr year' => 'een jaar',
 'upgrade' => 'upgrade',
+'uplink' => 'Uplink',
 'uplink speed' => 'Uplink snelheid (kbit/sec)',
 'uplink std class' => 'uplink standaardklasse',
 'upload' => 'Upload',
 'upstream password' => 'Upstream wachtwoord:',
 'upstream proxy host:port' => 'Upstream proxy (host:poort)',
 'upstream username' => 'Upstream gebruikersnaam:',
+'uptime' => 'Bedrijfstijd',
 'uptime and users' => 'Bedrijfstijd en gebruikers:',
-'url filter' => 'Inhoudsfilter',
+'uptime load average' => 'Gemiddelde belasting',
+'url filter' => 'URL filter',
 'urlfilter access' => 'Toegang',
 'urlfilter activity detection' => 'Activiteitsdetectie',
 'urlfilter add new time constraint rule' => 'Voeg nieuwe tijdslimietregel toe',
 'urlfilter quota restart message' => 'Noot: de tellers worden gereset voor alle gebruikers als het URL-filter wordt herstart',
 'urlfilter quota time error' => 'Ongeldige waarde voor tijdsquotum',
 'urlfilter quota user error' => 'Tenminste een gebruikersnaam is vereist',
+'urlfilter redirect template' => 'Omleidingspagina template',
 'urlfilter redirectpage' => 'Omleiden naar deze URL',
 'urlfilter remove file' => 'Verwijder bestand uit repository',
 'urlfilter renewal' => 'Vernieuwing',
 'urlfilter weekly' => 'wekelijks',
 'urlfilter whitelist always allowed' => 'Toestaan gebruik van eigen witte lijst voor verboden clients',
 'urlfilter wrong filetype' => 'Bestand heeft niet de extensie .tar.gz',
-'usb modem on acm0' => 'USB Modem op ACM0',
-'usb modem on acm1' => 'USB Modem op ACM1',
-'usb modem on acm2' => 'USB Modem op ACM2',
-'usb modem on acm3' => 'USB Modem op ACM3',
 'use' => 'Gebruik',
 'use a pre-shared key' => 'Gebruik een pre-shared sleutel:',
 'use dov' => 'Gebruik data over voice (DOV):',
 'users department' => 'Gebruikersafdeling',
 'users email' => 'E-mailadres gebruiker',
 'users fullname or system hostname' => 'Volledige naam gebruiker of systeemnaam',
-'valid root certificate already exists' => 'Een geldig root certificaat bestaat al.',
+'valid root certificate already exists' => 'Er bestaat al een geldig root certificaat.',
 'valid till' => 'Geldig tot',
 'vci number' => 'VCI nummer:',
 'view log' => 'bekijk log',
 'wireless config added' => 'Draadloze configuratie toegevoegd',
 'wireless config changed' => ' Draadloze configuratie gewijzigd',
 'wireless configuration' => 'Draadloze configuratie',
-'wlanap access point' => 'Access Point',
+'wlan client' => 'Draadloze client',
+'wlan client advanced settings' => 'Geavanceerde instellingen',
+'wlan client and' => 'en',
+'wlan client bssid' => 'BSSID',
+'wlan client ccmp' => 'CCMP',
+'wlan client configuration' => 'Draadloze client configuratie',
+'wlan client disconnected' => 'Verbroken',
+'wlan client duplicate ssid' => 'Bestaande SSID',
+'wlan client edit entry' => 'Wijzig draadloze client configuratie',
+'wlan client encryption' => 'Encryptie',
+'wlan client encryption none' => 'Geen',
+'wlan client encryption wep' => 'WEP',
+'wlan client encryption wpa' => 'WPA',
+'wlan client encryption wpa2' => 'WPA2',
+'wlan client group cipher' => 'Group cipher',
+'wlan client group key algorithm' => 'GKA',
+'wlan client invalid key length' => 'Ongeldige sleutellengte.',
+'wlan client new entry' => 'Maak nieuwe draadloze client configuratie',
+'wlan client new network' => 'Nieuw netwerk',
+'wlan client pairwise cipher' => 'Paargebonden cipher',
+'wlan client pairwise key algorithm' => 'PKA',
+'wlan client pairwise key group key' => 'Paargebonden sleutel/groep sleutel',
+'wlan client psk' => 'Pre-shared sleutel',
+'wlan client ssid' => 'SSID',
+'wlan client tkip' => 'TKIP',
+'wlan client wpa mode' => 'WPA mode',
+'wlan client wpa mode all' => 'Auto',
+'wlan client wpa mode ccmp ccmp' => 'CCMP-CCMP',
+'wlan client wpa mode ccmp tkip' => 'CCMP-TKIP',
+'wlan client wpa mode tkip tkip' => 'TKIP-TKIP',
+'wlan clients' => 'Draadloze clients',
+'wlanap access point' => 'Toegangspunt (AP)',
 'wlanap channel' => 'Kanaal',
 'wlanap country' => 'Landcode',
 'wlanap debugging' => 'Debugging',
index b9a8ec42dd6e63858d69c6beddd48b13625cbd0b..cd43fc554c87962d2fa9cc29cb8761b7e3b2de04 100644 (file)
@@ -587,4 +587,10 @@ char *nl_tr[] = {
 "Fout tijdens downloaden!",
 /* TR_DHCP_FORCE_MTU */
 "Forceer DHCP mtu:",
+/* TR_IDENTIFY */
+"Identificeer",
+/* TR_IDENTIFY_SHOULD_BLINK */
+"Geselecteerde poort zou nu moeten knipperen ...",
+/* TR_IDENTIFY_NOT_SUPPORTED */
+"Functie wordt niet ondersteund door deze poort.",
 };
index d85a90a0daed25ecd1c1d53ffabc568c80ff822e..a79eed0e969b26b87b180d6cf31e1e95d7d1a211 100644 (file)
@@ -16,8 +16,8 @@
 'ConnSched change profile title' => 'Zmień na profil:',
 'ConnSched days' => 'Dni:',
 'ConnSched down' => 'Niżej',
-'ConnSched ipsecstart' => '(Re)start IPSec',
-'ConnSched ipsecstop' => 'Zatrzymanie IPSec',
+'ConnSched ipsecstart' => '(Re)start IPsec',
+'ConnSched ipsecstop' => 'Zatrzymanie IPsec',
 'ConnSched reconnect' => 'Ponowne połączenie',
 'ConnSched scheduled actions' => 'Zaplanowane zadania',
 'ConnSched scheduler' => 'Harmonogram',
@@ -92,7 +92,6 @@
 'admin user password has been changed' => 'Hasło administratora zostało zmienione.',
 'admin users' => 'Użytkownik prawami superużytkownika',
 'administrator user password' => 'Hasło administratora:',
-'adsl settings' => 'Ustawienia ADSL',
 'advanced' => 'Zaawansowane',
 'advanced server' => 'Zaawansowane ustawienia serwera',
 'advproxy AUTH always required' => 'Wymagaj autoryzacji dla adresów źródłowych bez ograniczeń',
 'are you sure' => 'Jesteś pewien?',
 'arp table entries' => 'Wpisy tabeli ARP:',
 'artist' => 'Artysta',
+'atm settings' => 'Ustawienia ATM',
 'attemps' => 'Prób',
 'august' => 'Sierpień',
 'authentication' => 'Uwierzytelnianie:',
 'clock last synchronized at' => 'Ostatnia synchronizacja zegara: ',
 'comment' => 'Opis:',
 'common name' => 'Common name',
-'community rules' => 'Emergingthreats.net Community Rules',
 'comp-lzo' => 'Kompresja LZO:',
 'compression' => 'Kompresja:',
 'computer to modem rate' => 'Szybkość połączenia z komputerem:',
 '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',
 'urlfilter weekly' => 'co tydzień',
 'urlfilter whitelist always allowed' => 'Zezwolenie na białą listę dla zablokowanych klientów',
 'urlfilter wrong filetype' => 'Plik nie posiada rozszerzenia .tar.gz',
-'usb modem on acm0' => 'Modem USB na ACM0',
-'usb modem on acm1' => 'Modem USB na ACM1',
-'usb modem on acm2' => 'Modem USB na ACM2',
-'usb modem on acm3' => 'Modem USB na ACM3',
 'use' => 'Użyj',
 'use a pre-shared key' => 'Użyj klucza współdzielonego:',
 'use dov' => 'Use data over voice (DOV):',
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 0b22f697482fa20ca2f91e475537ae7236114b70..e3aaab4fb71a0e3d61d324ebfd7edc2bdbd8746c 100644 (file)
@@ -15,8 +15,8 @@
 'ConnSched change profile title' => 'Сменить профиль:',
 'ConnSched days' => 'Дни:',
 'ConnSched down' => 'Down',
-'ConnSched ipsecstart' => 'IPSec (пере)запустить',
-'ConnSched ipsecstop' => 'IPSec остановить',
+'ConnSched ipsecstart' => 'IPsec (пере)запустить',
+'ConnSched ipsecstop' => 'IPsec остановить',
 'ConnSched reconnect' => 'Переподключить',
 'ConnSched scheduled actions' => 'Действия по расписанию',
 'ConnSched scheduler' => 'Расписание',
@@ -90,7 +90,6 @@
 'admin user password has been changed' => 'Пароль пользователя Admin был изменён.',
 'admin users' => 'Пользователь с правами суперадминистратора',
 'administrator user password' => 'Пароль пользователя Admin:',
-'adsl settings' => 'Настройки ADSL',
 'advanced' => 'Дополнительно',
 'advanced server' => 'Дополнительные настройки сервера',
 'advproxy AUTH always required' => 'Требовать аутентификацию у незарегистрированных адресов',
 'are you sure' => 'Вы уверены?',
 'arp table entries' => 'Записи ARP-таблицы:',
 'artist' => 'Artist',
+'atm settings' => 'Настройки ATM',
 'attemps' => 'Попытки',
 'august' => 'Август',
 'authentication' => 'Аутентификация:',
 'clock last synchronized at' => 'В последний раз время синхронизировалось в',
 'comment' => 'Description:',
 'common name' => 'Короткое имя',
-'community rules' => 'Emergingthreats.net Community Rules',
 'comp-lzo' => 'LZO-Сжатие:',
 'compression' => 'Compression:',
 'computer to modem rate' => 'Computer to modem rate:',
 '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',
 'urlfilter weekly' => 'Еженедельно',
 'urlfilter whitelist always allowed' => 'Разрешить пользовательский белый список для забаненых клиентов',
 'urlfilter wrong filetype' => 'File has not the extension .tar.gz',
-'usb modem on acm0' => 'USB Модем на ACM0',
-'usb modem on acm1' => 'USB Модем на ACM1',
-'usb modem on acm2' => 'USB Модем на ACM2',
-'usb modem on acm3' => 'USB Модем на ACM3',
 'use' => 'Use',
 'use a pre-shared key' => 'Use a pre-shared key:',
 'use dov' => 'Use data over voice (DOV):',
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.",
 };
diff --git a/langs/tr/cgi-bin/tr.pl b/langs/tr/cgi-bin/tr.pl
new file mode 100644 (file)
index 0000000..619f3f2
--- /dev/null
@@ -0,0 +1,2627 @@
+%tr = ( 
+%tr,
+
+'Act as' => 'Görev:',
+'Add Level7 rule' => 'Seviye7 kuralı ekle',
+'Add Port Rule' => 'Bağlantı noktası kuralı ekle',
+'Add Rule' => 'Kural ekle',
+'Add a route' => 'Yol ekle',
+'Async logging enabled' => 'Syslog dosyanın eşzamansız yazmasını aktifleştirin',
+'Choose Rule' => 'Aşağıdaki kurallardan <u>birini</u> seçin.',
+'Class' => 'Sınıf',
+'Class was deleted' => 'with potential subclasses was deleted',
+'Client status and controlc' => 'İstemci durum ve kontrolü:',
+'ConnSched action' => 'Eylem:',
+'ConnSched add action' => 'Eylem ekle',
+'ConnSched change profile title' => 'Profili değitirin:',
+'ConnSched days' => 'Günler:',
+'ConnSched dial' => 'Bağlan',
+'ConnSched down' => 'Aşağı',
+'ConnSched hangup' => 'Bağlantıyı kes',
+'ConnSched ipsecstart' => 'IPsec yeniden başlat',
+'ConnSched ipsecstop' => 'IPsec durudur',
+'ConnSched reboot' => 'Yeniden başlat',
+'ConnSched reconnect' => 'Yeniden bağlan',
+'ConnSched scheduled actions' => 'Planlanmış eylemler',
+'ConnSched scheduler' => 'Zamanlayıcı',
+'ConnSched select profile' => 'Profil seçin',
+'ConnSched shutdown' => 'Kapat',
+'ConnSched time' => 'Zaman:',
+'ConnSched up' => 'Yukarı',
+'ConnSched weekdays' => 'Haftanın günleri:',
+'Edit an existing route' => 'Mevcut bir yolu düzenleyin',
+'Enter TOS' => 'Activate or deactivate TOS-bits <br /> and then press <i>Save</i>.',
+'Existing Files' => 'Veritabanındaki dosyalar',
+'HDD temperature' => 'HDD sıcaklığı',
+'Level7 Protocol' => 'Seviye7-Kuralı',
+'Level7 Rule' => 'Seviye7-Kural',
+'Level7 rule' => 'Seviye7 kuralı',
+'Local VPN IP' => 'Dahili Ağ (YEŞİL):',
+'MB read' => 'Okunan MB',
+'MB written' => 'Yazılan MB',
+'MTU' => 'MTU boyutu:',
+'Number of IPs for the pie chart' => 'Pasta grafiği için IP numarası',
+'Number of Ports for the pie chart' => 'Pasta grafiği için bağlantı noktası sayısı',
+'OVPN' => 'OpenVPN',
+'OpenVPN' => 'OpenVPN',
+'Pages' => 'Sayfa',
+'Ping' => 'Ping :',
+'Port Rule' => 'Bağlantı Noktası Kuralları',
+'QoS not enabled' => 'QoS aktif değil!',
+'Queuelenght' => 'Sıra uzunluğu',
+'Remote IP' => 'Uzak Bilgisayar IP / Makine Adı (DynDNS):',
+'Remote VPN IP' => 'VPN Alt Ağı (örneğin 10.0.10.0/255.255.255.0):',
+'Resolv' => 'Çöz-Yeniden dene:',
+'Scan for Files' => 'Dosyalardan tara',
+'Scan from Directory' => 'Dizinlerden tara',
+'Set time on boot' => 'Açılışta sistem saatini ayarlamaya zorla',
+'Subclass' => 'Alt Sınıf',
+'TOS Bits' => 'TOS-Bit',
+'TOS Rule' => 'TOS-Kural',
+'TOS rule' => 'TOS kural',
+'The class number does not match the specified interface.' => 'Sınıf sayısı ile belirtilen arabirim eşleşmiyor.',
+'The destination IP address is invalid.' => 'Geçersiz hedef IP.',
+'The source IP address is invalid.' => 'Geçersiz kaynak IP adresi.',
+'Utilization on' => 'Kullanım üzerinde',
+'Verbose' => 'Ayrıntı:',
+'WakeOnLan' => 'Yerel Ağ Üzerinden Aç',
+'a ca certificate with this name already exists' => 'Bu ada sahip bir CA sertifikası zaten var.',
+'a connection with this common name already exists' => 'Bu ortak ad ile bir bağlantısı zaten var.',
+'a connection with this name already exists' => 'Bu ada sahip bir bağlantısı zaten var.',
+'abort' => 'durdur',
+'access allowed' => 'Erişimine izin ver:',
+'access refused with this oinkcode' => 'Erişim bu Oink Kodunu reddetti',
+'accounting' => 'Hesap oluşturma',
+'accounting user nonpdc' => 'Hesap oluşturma - PDC yöntemi olmadan',
+'accounting user pdc' => 'Hesap oluşturma - PDC yöntemi',
+'action' => 'Eylem',
+'activate' => 'Aktif',
+'activate user' => 'Aktif kullanıcı',
+'active' => 'Aktif',
+'add' => 'Ekle',
+'add a host' => 'Ana bilgisayar ekle:',
+'add a new rule' => 'Yeni bir kural ekle:',
+'add cron' => 'zamanlanmış iş ekle',
+'add device' => 'Aygıt ekle',
+'add network' => 'Ağ ekle',
+'add new alias' => 'Yeni bir takma ad ekle:',
+'add new lease' => 'Yeni bir sabit kira ekle',
+'add new ovpn' => 'OpenVPN Ayarları:',
+'add printer' => 'Yazıcı ekle',
+'add service' => 'Hizmet ekle',
+'add share' => 'Paylaşım ekle',
+'add subclass' => 'Alt sınıf ekle',
+'add user' => 'Kullanıcı ekle',
+'add xtaccess' => 'Harici Erişim Ekle',
+'add-route' => 'Basma ek yolu',
+'added from dhcp lease list' => 'DHCP kira listeden eklendi',
+'addons' => 'Eklentiler',
+'admin user password has been changed' => 'Yönetici kullanıcı şifresi değiştirildi.',
+'admin users' => 'Yetkili kullanıcı hakları ile kullanıcı',
+'administrator user password' => 'Admin kullanıcı parolası:',
+'advanced' => 'Gelişmiş',
+'advanced server' => 'Gelişmiş Sunucu Seçenekleri',
+'advproxy AUTH always required' => 'Sınırsız kaynak adresleri için kimlik doğrulaması iste',
+'advproxy AUTH auth cache TTL' => 'TTL kimlik doğrulama önbelleği (dakikada)',
+'advproxy AUTH global settings' => 'Genel kimlik doğrulama ayarları',
+'advproxy AUTH limit of IP addresses' => 'Kullanıcı başına IP adres sınırı',
+'advproxy AUTH method' => 'Kimlik doğrulama yöntemi',
+'advproxy AUTH method ident' => 'identd',
+'advproxy AUTH method ldap' => 'LDAP',
+'advproxy AUTH method ncsa' => 'Yerel',
+'advproxy AUTH method none' => 'Yok',
+'advproxy AUTH method ntlm' => 'Windows',
+'advproxy AUTH method radius' => 'RADIUS',
+'advproxy AUTH no auth' => 'Kimlik doğrulaması olmayan hedefler (her satırda bir tane)',
+'advproxy AUTH number of auth processes' => 'Kimlik doğrulama işlemlerinin sayısı',
+'advproxy AUTH realm' => 'Kimlik doğrulama uyarısı',
+'advproxy AUTH user IP cache TTL' => 'TTL kullanıcı/ip önbelleği  (dakikada)',
+'advproxy IDENT authorized users' => 'Yetkili kullanıcılar (her satırda bir tane)',
+'advproxy IDENT aware hosts' => 'Ident ayrıcalıklı ana bilgisayarlar (her satırda bir tane)',
+'advproxy IDENT identd settings' => 'Ortak identd ayarları',
+'advproxy IDENT required' => 'Identd kimlik doğrulaması',
+'advproxy IDENT timeout' => 'Ident zaman aşımı (saniyede)',
+'advproxy IDENT unauthorized users' => 'Yetkisiz kullanıcılar (her satırda bir tane)',
+'advproxy IDENT use negative access list' => 'Negatif erişim kontrolü kullan',
+'advproxy IDENT use positive access list' => 'Pozitif erişim kontrolü kullan',
+'advproxy IDENT user based access restrictions' => 'Kullanıcı tabanlı erişim kısıtlamaları',
+'advproxy LDAP ADS' => 'Aktif Dizin',
+'advproxy LDAP NDS' => 'Novell eDizin',
+'advproxy LDAP V2' => 'LDAP sürüm 2',
+'advproxy LDAP V3' => 'LDAP sürüm 3',
+'advproxy LDAP auth' => 'LDAP kimlik doğrulama',
+'advproxy LDAP basedn' => 'Temel DN',
+'advproxy LDAP binddn password' => 'DN bağlantı parolası',
+'advproxy LDAP binddn settings' => 'DN bağlantı ayarları',
+'advproxy LDAP binddn username' => 'DN bağlantı kullanıcı adı',
+'advproxy LDAP common settings' => 'Ortak LDAP ayarları',
+'advproxy LDAP group access control' => 'Grup tabanlı erişim kontrolü',
+'advproxy LDAP group required' => 'Gerekli grup',
+'advproxy LDAP port' => 'Bağlantı noktası',
+'advproxy LDAP server' => 'LDAP Sunucusu',
+'advproxy LDAP type' => 'LDAP türü',
+'advproxy MIME block types' => ' Bu MIME türlerini engelle (her satırda bir tane)',
+'advproxy MIME filter' => 'MIME türü filtre',
+'advproxy NCSA auth' => 'Yerel kullanıcı kimlik doğrulaması',
+'advproxy NCSA create user' => 'Kullanıcı oluştur',
+'advproxy NCSA group' => 'Grup',
+'advproxy NCSA group membership' => 'Grup üyeliği',
+'advproxy NCSA grp disabled' => 'Pasif',
+'advproxy NCSA grp extended' => 'Genişletilmiş',
+'advproxy NCSA grp standard' => 'Standart',
+'advproxy NCSA min password length' => 'En az parola uzunluğu',
+'advproxy NCSA no accounts' => 'Mevcut hiçbir kullanıcı hesabı yok',
+'advproxy NCSA password' => 'Parola',
+'advproxy NCSA password confirm' => 'Parola (tekrar)',
+'advproxy NCSA redirector bypass' => 'Grubun üyeleri için yönlendirmeyi atla',
+'advproxy NCSA update user' => 'Kullanıcıyı güncelle',
+'advproxy NCSA user accounts' => 'Kullanıcı hesabı',
+'advproxy NCSA user management' => 'Kullanıcı yönetimi',
+'advproxy NCSA username' => 'Kullanıcı adı',
+'advproxy NTLM BDC hostname' => 'BDC ana bilgisayar adı',
+'advproxy NTLM PDC hostname' => 'PDC ana bilgisayar adı',
+'advproxy NTLM auth' => 'Windows NT/2003 kimlik doğrulama',
+'advproxy NTLM auth mode' => 'Kimlik doğrulama yöntemi',
+'advproxy NTLM authorized users' => 'Yetkili etki alanı kullanıcıları (her satırda bir tane)',
+'advproxy NTLM domain' => 'Etki alanı',
+'advproxy NTLM domain settings' => 'Ortak etki alanı ayarları',
+'advproxy NTLM unauthorized users' => 'Yetkisiz etki alanı kullanıcıları (her satırda bir tane)',
+'advproxy NTLM use integrated auth' => 'Windows tümleşik kimlik doğrulamasını aktifleştir',
+'advproxy NTLM use negative access list' => 'Negatif erişim kontrolü kullan',
+'advproxy NTLM use positive access list' => 'Pozitif erişim kontrolü kullan',
+'advproxy NTLM user based access restrictions' => 'Kullanıcı tabanlı erişim kısıtlamaları',
+'advproxy RADIUS authorized users' => 'Yetkili kullanıcılar (her satırda bir tane)',
+'advproxy RADIUS identifier' => 'Identifier',
+'advproxy RADIUS port' => 'Bağlantı numarası',
+'advproxy RADIUS radius settings' => 'Ortak RADIUS ayarları',
+'advproxy RADIUS secret' => 'Gizli paylaşım',
+'advproxy RADIUS server' => 'RADIUS Sunucusu',
+'advproxy RADIUS unauthorized users' => 'Yetkisiz kullanıcılar (her satırda bir tane)',
+'advproxy RADIUS use negative access list' => 'Negatif erişim kontrolü kullan',
+'advproxy RADIUS use positive access list' => 'Pozitif erişim kontrolü kullan',
+'advproxy RADIUS user based access restrictions' => 'Kullanıcı tabanlı erişim kısıtlamaları',
+'advproxy UA enable filter' => 'Tarayıcı kontrolü aktif',
+'advproxy access' => 'Erişim',
+'advproxy admin mail' => 'Önbellek yönetici e-postası',
+'advproxy advanced proxy' => 'Gelişmiş Vekil Sunucu',
+'advproxy advanced web proxy' => 'Gelişmiş web vekil sunucusu',
+'advproxy advanced web proxy configuration' => 'Gelişmiş web vekil sunucu ayarları',
+'advproxy allowed subnets' => 'İzin verilen alt ağlar (her satırda bir tane)',
+'advproxy allowed web browsers' => 'Web erişimi için izin verilen istemciler',
+'advproxy back to main page' => 'Ana sayfaya geri dön',
+'advproxy banned ip clients' => 'Yasaklanan IP adresleri (her satırda bir tane)',
+'advproxy banned mac clients' => 'Yasaklanan MAC adresleri (her satırda bir tane)',
+'advproxy cache management' => 'Önbellek yönetimi',
+'advproxy cache replacement policy' => 'Önbellek değiştirme kuralı',
+'advproxy cache-digest' => 'Önbellek-özeti üretimini aktifleştir',
+'advproxy chgwebpwd ERROR' => 'H A T A :',
+'advproxy chgwebpwd SUCCESS' => 'S O N U Ç :',
+'advproxy chgwebpwd change password' => 'Parolayı Değiştir',
+'advproxy chgwebpwd change web password' => 'W e b &nbsp; e r i ş i m &nbsp; p a r o l a s ı n ı &nbsp; d e ğ i ş t i r ',
+'advproxy chgwebpwd new password' => 'Yeni parola',
+'advproxy chgwebpwd new password confirm' => 'Yeni parola (tekrar)',
+'advproxy chgwebpwd old password' => 'Geçerli parola',
+'advproxy chgwebpwd username' => 'Kullanıcı adı',
+'advproxy classroom extensions' => 'Sınıf uzantıları',
+'advproxy clear cache' => 'Önbelleği Temizle',
+'advproxy client IP forwarding' => 'İstemci IP adresi yönlendir',
+'advproxy common settings' => 'Genel ayarlar',
+'advproxy content based throttling' => 'İçerik tabanlı kısıtlamaları aktifleştir',
+'advproxy cre disabled' => 'Yönetim arayüzü yönetici tarafından devre dışı bırakıldı',
+'advproxy cre group definitions' => 'Sınıf grup tanımları',
+'advproxy cre supervisors' => 'Süper kullanıcı IP adresleri (her satırda bir tane)',
+'advproxy destination ports' => 'Hedef bağlantı noktaları',
+'advproxy download throttling' => 'İndirme kısıtlamları',
+'advproxy enabled' => 'Aktif',
+'advproxy enabled on' => 'Aktifleştir',
+'advproxy errmsg acl cannot be empty' => 'Aktifleştirilen erişim kontrol listesi boş olamaz',
+'advproxy errmsg auth cache ttl' => 'Kimlik doğrulama önbellek için geçersiz TTL değeri',
+'advproxy errmsg auth children' => 'Kimlik doğrulama işlemleri geçersiz sayısı',
+'advproxy errmsg auth ipcache may not be null' => 'IP adresi sınırları kullanırken kimlik doğrulama TTL önbelleği 0 olmayabilir',
+'advproxy errmsg auth ipcache ttl' => 'Kullanıcı/IP önbelleği için geçersiz TTL değeri',
+'advproxy errmsg cache' => 'RAM önbellek boyutu sabit disk önbellek boyutundan daha büyük:',
+'advproxy errmsg change fail' => 'Parola değiştirilemedi',
+'advproxy errmsg change success' => 'Web erişimi için parola başarıyla değiştirildi',
+'advproxy errmsg hdd cache size' => 'Sabit disk önbellek boyutu için geçersiz değer (en az 10 MB gerekli)',
+'advproxy errmsg ident timeout' => 'Geçersiz ident zaman aşımı',
+'advproxy errmsg invalid bdc' => 'Yedek etki alanı denetleyicisi için geçersiz ana bilgisayar adı',
+'advproxy errmsg invalid destination port' => 'Geçersiz hedef bağlantı noktası',
+'advproxy errmsg invalid ip or mask' => 'Geçersiz IP adresi veya ağ maskesi',
+'advproxy errmsg invalid mac' => 'Geçersiz MAC adresi',
+'advproxy errmsg invalid pdc' => 'Birincil etki alanı denetleyicisi için geçersiz ana bilgisayar adı',
+'advproxy errmsg invalid proxy port' => 'Geçersiz vekil sunucu bağlantı noktası',
+'advproxy errmsg invalid upstream proxy' => 'Geliş yönündeki geçersiz bir vekil sunucu IP adresi veya ana bilgisayar adı',
+'advproxy errmsg invalid upstream proxy username or password setting' => 'Geliş yönündeki geçersiz bir vekil sunucu adı veya parola ayarı',
+'advproxy errmsg invalid user' => 'Kullanıcı adı yok',
+'advproxy errmsg ldap base dn' => 'LDAP temel DN gerekli',
+'advproxy errmsg ldap bind dn' => 'LDAP temel DN kullanıcı adı ve parola gerekli',
+'advproxy errmsg ldap port' => 'Geçersiz LDAP bağlantı noktası numarası',
+'advproxy errmsg ldap server' => 'LDAP sunucusu için geçersiz IP adresi veya ana bilgisayar adı',
+'advproxy errmsg max userip' => 'IP adresi başına geçersiz kullanıcı sayısı',
+'advproxy errmsg mem cache size' => 'Önbellek boyutu için geçersiz değer',
+'advproxy errmsg no browser' => 'En az bir tarayıcı veya istemci web erişimi için seçilmelidir',
+'advproxy errmsg no password' => 'Parola boş olamaza',
+'advproxy errmsg no username' => 'Kullanıcı adı boş olamaz',
+'advproxy errmsg non-transparent proxy required' => 'Web vekil kimlik doğrulaması için şeffaf olmayan yöntemde çalışıyor olması gerekir',
+'advproxy errmsg ntlm domain' => 'Windows etki alanı adı gereklidir',
+'advproxy errmsg ntlm pdc' => 'Gerekli birincil etki alanı denetleyicisi için ana bilgisayar adı',
+'advproxy errmsg password incorrect' => 'Yanlış parola',
+'advproxy errmsg password length' => 'Parola uzunluğu için geçersiz değer',
+'advproxy errmsg password length 1' => 'Parola en az olmalıdır ',
+'advproxy errmsg password length 2' => ' karakter',
+'advproxy errmsg passwords different' => 'Parolalar eşleşmiyor',
+'advproxy errmsg proxy ports equal' => 'Vekil sunucu ve şeffaf bağlantı noktaları eşit olamaz.',
+'advproxy errmsg radius port' => 'Geçersiz RADIUS bağlantı noktası numarası',
+'advproxy errmsg radius secret' => 'RADIUS paylaşılan gizli kod gerekli',
+'advproxy errmsg radius server' => 'RADIUS Sunucusu için geçersiz IP adresi',
+'advproxy errmsg time restriction' => 'Geçersiz zaman kısıtlaması',
+'advproxy error design' => 'Hata mesajları tasarımı',
+'advproxy error language' => 'Hata mesajları dili',
+'advproxy fake referer' => 'Sahte referansı harici sitelere gönder',
+'advproxy fake useragent' => 'Sahte yönlendiriciyi harici sitelere gönder',
+'advproxy friday' => 'Cum',
+'advproxy from' => 'Başlangıç',
+'advproxy hdd cache size' => 'Sabit disk önbellek boyutu (MB)',
+'advproxy invalid num of children' => 'Filtre işlemleri geçersiz sayıda',
+'advproxy log enabled' => 'Günlük aktif',
+'advproxy log query' => 'Sorgu terimleri günlüğü',
+'advproxy log settings' => 'Günlük ayarları',
+'advproxy log useragent' => 'Kullanıcı ara yüzleri günlüğü',
+'advproxy max download size' => 'En fazla indirme boyutu (KB)',
+'advproxy max size' => 'En fazla nesne boyutu (KB)',
+'advproxy max upload size' => 'En fazla yükleme boyutu (KB)',
+'advproxy memory replacement policy' => 'Bellek değiştirme kuralı',
+'advproxy min size' => 'En az nesne boyutu (KB)',
+'advproxy mode allow' => 'İzin ver',
+'advproxy mode deny' => 'Engelle',
+'advproxy monday' => 'Pzt',
+'advproxy network based access' => 'Ağ tabanlı erişim kontrolü',
+'advproxy no cache sites' => 'Bu etki alanlarını önbelleğe ekleme (her satırda bir tane)',
+'advproxy no clients defined' => 'Hiçbir istemci tanımlanmış',
+'advproxy no connection auth' => 'Bağlantı yok yönelimli kimlik doğrulama yönlendirmesi',
+'advproxy no cre groups' => 'Kullanılabilir bir erişim grubu yok',
+'advproxy no internal proxy on blue' => 'Mavi arabirimden diğer alt ağlara, iç vekil sunucu erişimini engelle',
+'advproxy no internal proxy on green' => 'Yeşil arabirimden diğer alt ağlara, iç vekil sunucu erişimini engelle',
+'advproxy number of L1 dirs' => 'Seviye-1 için alt dizinlerin sayısı',
+'advproxy off' => 'Vekil sunucu kapalı',
+'advproxy offline mode' => 'Çevrimdışı yöntemi aktifleştir',
+'advproxy on' => 'Vekil sunucu',
+'advproxy privacy' => 'Gizlilik',
+'advproxy proxy port' => 'Vekil sunucu bağlantı noktası',
+'advproxy proxy port transparent' => 'Şeffaf bağlantı noktası',
+'advproxy ram cache size' => 'Bellek önbellek boyutu (MB)',
+'advproxy redirector children' => 'Filtre işlemlerinin sayısı',
+'advproxy reset' => 'Yeniden Başlat',
+'advproxy saturday' => 'Cmt',
+'advproxy save and restart' => 'Kaydet ve Yeniden Başlat',
+'advproxy squid version' => 'Squid sürümü',
+'advproxy squidclamav' => 'SquidClamav',
+'advproxy ssadvanced proxy' => 'gelişmiş vekil sunucusu',
+'advproxy ssl ports' => 'İzin verilen SSL bağlantı noktaları (her satırda bir tane)',
+'advproxy standard' => 'Standart',
+'advproxy standard ports' => 'İzin verilen standart bağlantı noktaları (her satırda bir tane)',
+'advproxy sunday' => 'Paz',
+'advproxy supervisor password' => 'Süper kullanıcı parolası',
+'advproxy suppress version' => 'Sürüm bilgilerini göster',
+'advproxy throttle binary' => 'İkili dosyalar',
+'advproxy throttle dskimg' => 'CD kalıpları',
+'advproxy throttle mmedia' => 'Multimedya',
+'advproxy throttling per host on' => 'Bilgisayar başına sınır',
+'advproxy throttling total on' => 'Toplam sınır',
+'advproxy throttling unlimited' => 'sınırsız',
+'advproxy thursday' => 'Per',
+'advproxy time restrictions' => 'Zaman kısıtlamaları',
+'advproxy to' => 'Bitiş',
+'advproxy transfer limits' => 'Transfer limitleri',
+'advproxy transparent on' => 'Şeffaf',
+'advproxy tuesday' => 'Sal',
+'advproxy unknown' => 'Bilinmeyen',
+'advproxy unrestricted ip clients' => 'Yasaksız IP adresleri (her satırda bir tane)',
+'advproxy unrestricted mac clients' => 'Yasaksız MAC adresleri (her satırda bir tane)',
+'advproxy update accelerator' => 'Güncelleme hızlandırıcısı',
+'advproxy update information' => 'Yüklenebilir güncelleştirilmiş bir sürümü vardır. Daha fazla bilgi için <a href="http://www.advproxy.net" target="_blank">http://www.advproxy.net</a> adresini ziyaret edebilirsiniz.',
+'advproxy update notification' => 'Güncelleme bildirimi!',
+'advproxy upstream password' => 'Gönderim parolası',
+'advproxy upstream proxy' => 'Gönderim vekili',
+'advproxy upstream proxy host:port' => 'Gönderim vekili (makine adı:bağlantı noktası)',
+'advproxy upstream username' => 'Gönderim kullanıcı adı',
+'advproxy url filter' => 'URL filtre',
+'advproxy username forwarding' => 'Kullanıcı adı yönlendirmesi',
+'advproxy via forwarding' => 'Vekil sunucu adres yönlendirmesi',
+'advproxy visible hostname' => 'Ana bilgisayar adını göster',
+'advproxy web browser' => 'İnternet tarayıcısı',
+'advproxy wednesday' => 'Çar',
+'again' => 'Tekrar:',
+'age second' => 'saniye',
+'age seconds' => 'saniye',
+'age shour' => 'sa',
+'age sminute' => 'dk',
+'age ssecond' => 'sn',
+'aktiv' => 'Aktif',
+'album' => 'Albüm',
+'alcatelusb help' => 'Speedtouch 330 veya Speedtouch USB modem kullanıyorsanız IPCop sistemine bunların aygıt yazılımlarını yüklemelisiniz. Lütfen önce SpeedTouch 330 modeminiz için <b>Gömülü Aygıt Yazılımını</b> inidir ve açın. Sonra modeminiz için uygun dosyayı aşağıdaki formu kullanarak yükleyin: Rev<4 için KQD6_3.xxx veya Rev=4 ise ZZL_3.xxx.',
+'alcatelusb upload' => 'Speedtouch USB Aygıt Yazılımı Yüklemesi',
+'alias ip' => 'Takma ad IP',
+'aliases' => 'Takma Adlar',
+'aliases not active' => 'KIRMIZI arabiriminiz STATİK olmadıkça takma adlar aktif olmayacaktır',
+'all' => 'Tümü',
+'all interfaces' => 'Tüm Arabirimler',
+'all services' => 'Tüm hizmetler',
+'all updates installed' => 'Tüm güncellemeler kuruldu',
+'allmsg' => 'tümünü göster',
+'alt dialup' => 'Çevirmeli Bağlantı',
+'alt home' => 'Ana Sayfa',
+'alt information' => 'Bilgi',
+'alt logs' => 'Günlükler',
+'alt ovpn' => 'OpenVPN',
+'alt proxy' => 'Vekil Sunucu',
+'alt services' => 'Hizmetler',
+'alt system' => 'Sistem',
+'alt vpn' => 'VPN',
+'and' => 've',
+'ansi t1.483' => 'KALDIRILACAK',
+'apcupsd' => 'APC-UPS durumu',
+'apply' => 'Şimdi uygula',
+'april' => 'Nisan',
+'archive not exist' => 'Yapılandırma arşivi yok',
+'are you sure' => 'Emin misiniz?',
+'arp table entries' => 'ARP tablosu girdileri:',
+'artist' => 'Sanatçı',
+'atm device' => 'Aygıt:',
+'atm settings' => 'ATM ayarları',
+'attemps' => 'Girişim',
+'attention' => 'DİKKAT',
+'august' => 'Ağustos',
+'authentication' => 'Kimlik doğrulama:',
+'automatic' => 'Otomatik',
+'available updates' => 'Mevcut güncellemeler:',
+'average' => 'Ortalama',
+'avoid dod' => 'Bu seçeneği çevirmeli ağ ile isteğe göre kullanmayın. Genellikle bu, IPFire sisteminiz bir yönlendirici arkasındaysa kullanılır. KIRMIZI IP adresiniz üç bölüme ayrılmış ağ numaralarından oluşmalıdır. Örneğin: 10/8, 172.16/12, 192.168/16',
+'back' => 'GERİ',
+'backup' => 'Yedek',
+'backup archive' => 'Yedek Dosyası (.dat)',
+'backup clear archive' => 'Yedek Dosyasını Temizle (.gz)',
+'backup config floppy' => 'Yedek Yapılandırması - Disket',
+'backup configuration' => 'Yedek Yapılandırması:',
+'backup erase key' => 'Anahtarı sil',
+'backup explain key' => 'Yedekleme bir anahtar kullanılarak şifrelenir. Yasadışı yedekleme işlemlerini önlemek için IPFire burada belirlenecek anahtar ile şifrelenmiş yedekleri geri yükler. Size uygun üç seçenek vardır:',
+'backup explain key li1' => 'IPFire sizin için anahtar oluşturmanızı sağlar.',
+'backup explain key li2' => 'Kaydedilen bir anahtarı al (muhtemelen şifre korumalı).',
+'backup explain key li3' => 'Sadece 1.4.10 yedeğinden şifresiz bir anahtar çıkarın.',
+'backup explain key no1' => 'Yeni makinelere geri yükleme planlıyorsanız bu anahtarı kaydetmeniz gerekir. IPFire sadece bir kez anahtar oluşturma/gönderme kabul eder.',
+'backup explain key no2' => 'Eski disket yedekleri bu anahtar ile ilgili değildir.',
+'backup export key' => 'Anahtarı ver',
+'backup extract key' => 'Anahtarı çıkar',
+'backup from' => 'Yedek',
+'backup generate key' => 'Anahtar oluştur',
+'backup import dat file' => 'Bir yedek (.dat) dosyasını al',
+'backup import key' => 'Anahtar al',
+'backup key' => 'Yedek Şifreleme Anahtarı',
+'backup key file' => 'Yedek anahtar dosyası',
+'backup key info' => 'IPFire yedek anahtar erişimini kısıtlar. Bu yüzden root parolasını bilmeniz gerekir. Bir parola ile bu anahtar dışında IPFire bir koruma olanağı vardır.',
+'backup media info' => 'Disket ve/veya biçimlendirilmemiş medyada en yeni bölüm boyutları görüntülenir. Bu durumda tüm cihazı seçin. Cihazı ayırmadan önce sabit diski bağlamayı unutmayın. Not: Burada oluşturulan disket IPFire yükleyici programı ile kullanılamaz!',
+'backup missing key' => 'Bir dizi geri yüklemek için yedek anahtar ihtiyacınız var',
+'backup password' => 'yedek parolası',
+'backup protect key password' => 'Yedek parola anahtarı',
+'backup sets' => 'Yedek ayarları',
+'backup to floppy' => 'Diskete yedekle',
+'backupaddon' => 'Eklentiyi yedekle',
+'backupprofile' => 'Yeniden bağlanma başarısız durumda. Profile geçin',
+'backups' => 'Yedekler',
+'backupwarning' => 'Eklenti yedeklemesi için lütfen önce geri yükleme yedeklemesi oluşturun. İndirme zamanı verilen orjinal dosya ile devam edin.',
+'bad characters in' => 'Yablış karakterler ',
+'bad characters in script field' => 'Komut alanındaki yanlış karakterler',
+'bad characters in the telephone number field' => 'Telefon numarası alanındaki yanlış karakterler.',
+'bad destination range' => 'Hedef bağlantı noktası aralığı büyük veya ikinci değere eşit bir ilk değere sahiptir.',
+'bad ignore filter' => 'Kötü filtreleri görmezden gel:',
+'bad return code' => 'Yardımcı programı hata kodu döndürdü',
+'bad source range' => 'Kaynak bağlantı noktası aralığı büyük veya ikinci değere eşit bir ilk değere sahip.',
+'bandwidth usage' => 'bant genişliği kullanımı (harici)',
+'bandwitherror' => 'QoS aktifken bant genişliği ayarları değiştiremezsiniz. İlk önce QoS devre dışı bırakın.<p>',
+'bandwithsettings' => 'Bant genişliği ayarları',
+'basic options' => 'Temel seçenekler',
+'beep when ppp connects or disconnects' => 'IPFire bağlanırken veya kapatılırken ses çıkar.',
+'behind a proxy' => 'Bir vekil sunucu arkasında:',
+'bewan adsl pci st' => 'KALDIRILACAK',
+'bewan adsl usb' => 'KALDIRILACAK',
+'bit' => 'Bit',
+'bitrate' => 'Bit hızı',
+'bleeding rules' => 'Bleeding Edge Snort Rules',
+'blue' => 'MAVİ',
+'blue access' => 'Mavi Erişim',
+'blue access use hint' => 'Bu MAC ya da cihaz için bir IP adresi girmeniz gerekir. Ayrıca her ikiside girilebilir.',
+'blue interface' => 'Mavi Arabirim',
+'broadcast' => 'Yayın',
+'broken pipe' => 'Bozuk veri yolu',
+'buffered memory' => 'ara bellek belleği',
+'buffers' => 'arabellek',
+'bytes per second' => 'Saniye başına bayt',
+'bytes received' => 'Alınan Bayt',
+'bytes sent' => 'Gönderilen Bayt',
+'ca certificate' => 'CA Sertifika',
+'ca name' => 'CA adı',
+'cache management' => 'Önbellek yönetimi',
+'cache size' => 'Önbellek boyutu (MB):',
+'cached' => 'önbellek',
+'cached memory' => 'önbellek belleği  ',
+'cached swap' => 'takas alanı önbelleği',
+'calamaris available reports' => 'Mevcut raporlar',
+'calamaris byte unit' => 'Bayt birimi',
+'calamaris create report' => 'Rapor Oluştur',
+'calamaris enable content report' => 'İçerik raporunu aktifleştir',
+'calamaris enable distribution histogram' => 'Dağıtım histogramını aktifleştir',
+'calamaris enable domain report' => 'Etki alanı raporunu aktifleştir',
+'calamaris enable performance report' => 'Performans raporunu aktifleştir',
+'calamaris enable requester report' => 'Rapor isteklerini aktifleştir',
+'calamaris enable verbose reporting' => 'Ayrıntılı raporlamayı aktifleştir',
+'calamaris high' => 'yüksek',
+'calamaris histogram resolution' => 'Histogram çözünürlüğü',
+'calamaris low' => 'düşük',
+'calamaris medium' => 'orta',
+'calamaris no reports available' => 'Rapor yok',
+'calamaris none' => 'yok',
+'calamaris number of content types' => 'İçerik türlerinin sayısı',
+'calamaris number of domains' => 'Etki alanlarının sayısı',
+'calamaris number of requested urls' => 'İstenen URL adreslerinin sayısı',
+'calamaris number of requesting hosts' => 'Talep eden ana bilgisayarların sayısı',
+'calamaris performance options' => 'Performans seçenekleri',
+'calamaris proxy reports' => 'Vekil Sunucu Raporları',
+'calamaris refresh list' => 'Listeyi Yenile',
+'calamaris report interval (in minutes)' => 'Rapor aralığı (dakikada)',
+'calamaris report options' => 'Rapor seçenekleri',
+'calamaris report period' => 'Rapor süresi',
+'calamaris run as background task' => 'Arka plan görevi olarak çalıştır',
+'calamaris show usernames' => 'Kullanıcı adlarını göster',
+'calamaris skip archived logfiles' => 'Arşivlenmiş günlük dosyalarını geç',
+'calamaris unlimited' => 'sınırsız',
+'calamaris view' => 'Görünüm',
+'calamaris view report' => 'Görünüm raporları',
+'calc traffic all x minutes' => 'Tüm trafiği x dakikada hesapla',
+'cancel' => 'İptal',
+'cancel-adv-options' => 'İptal',
+'cannot enable both nat traversal and compression' => 'NAT geçişi ve kısıtlaması aktifleştirilemiyor.',
+'cannot enable ntp without specifying primary' => 'Birincil olan tanımlanmadan NTP başlatılamaz.',
+'cannot specify secondary dns without specifying primary' => 'Birinci dns i belirtmeden, ikinciyi yazamazsınız.',
+'cannot specify secondary ntp without specifying primary' => 'Birincil NTP adresi belirtmeden İkincil olanı belirtemezsiniz.',
+'cannot specify secondary wins without specifying primary' => 'Birincil WINS sunucusu atanmadan ikincil tanımlanamaz.',
+'cant change certificates' => 'Sertikalar değiştirilemiyor.',
+'cant enable xtaccess' => 'İlgili bağlantı noktası yönlendirme kuralı devre dışı, bu nedenle bu kural için harici erişimi aktifleştirmelisiniz.',
+'cant start openssl' => 'OpenSSH başlatılamıyor',
+'caps all' => 'TÜMÜ',
+'capsclosed' => 'BAĞLANTI YOK',
+'capsinactive' => 'PASİF',
+'capsopen' => 'BAĞLI',
+'capswarning' => 'UYARI',
+'caption' => 'Başlık',
+'ccd add' => 'Ağ ekleyin',
+'ccd choose net' => 'Ağı seçin',
+'ccd client options' => 'Gelişmiş istemci seçenekleri',
+'ccd clientip' => 'Ana makine adresi',
+'ccd dynrange' => 'Dinamik OpenVPN IP adres havuzu',
+'ccd err blue' => 'Bu MAVİ alt ağıdır.',
+'ccd err green' => 'Bu YEŞİL alt ağıdır.',
+'ccd err hostinnet' => 'İstemci içeren bir ağı silmek mümkün değildir.',
+'ccd err inuse' => 'Zaten başka bir istemci tarafından kullanılıyor.',
+'ccd err invalidname' => 'Geçersiz ad.. Izin verilen karakter A-Z, a-z, çizgi ve boşluk olabilir.',
+'ccd err invalidnet' => 'Geçersiz IP adresi. Biçim: 192.168.0.0/24 veya 192.168.0.0/255.255.255.0.',
+'ccd err iroute' => 'Ağ adresi için geçersiz yol.',
+'ccd err irouteexist' => 'Bu yol zaten kullanılıyor.',
+'ccd err isipsecnet' => 'Verilen ağ adresi zaten bir IPsec ağ tarafından kullanılıyor.',
+'ccd err isipsecrw' => 'Verilan ağ adresi zaten IPsec rw ağı tarafından kullanılıyor.',
+'ccd err isovpnn2n' => 'Bu alt ağ adresi zaten OpenVPN ağdan ağa bağlantısı için kullanılıyor.',
+'ccd err isovpnnet' => 'Bu adres zaten OpenVPN Sunucusu için kullanılan alt ağ adresidir.',
+'ccd err issubnet' => 'Bu adres zaten kullanımda olan bir alt ağ adresidir.',
+'ccd err name' => 'Lütfen bir ad seçin.',
+'ccd err nameexist' => 'Bu ad zaten var.',
+'ccd err netadr' => 'Geçersiz alt ağ adresi veya aralık çok büyük.',
+'ccd err netadrexist' => 'Bu ağ zaten var.',
+'ccd err orange' => 'Bu TURUNCU alt ağıdır.',
+'ccd err red' => 'Bu KIRMIZI alt ağıdır.',
+'ccd err routeovpn' => 'Bu adres zaten OpenVPN sunucusu tarafından kullanılıyor.',
+'ccd err routeovpn2' => 'Bu adres zaten OpenVPN sunucudan basıldı.',
+'ccd hint' => 'Bu sayfadan RoadWarrior istemcilerine sabit bir IP adresi alabilir ve statik ağları tanımlayabilirsiniz.',
+'ccd invalid' => 'Geçersiz.',
+'ccd iroute' => 'IPFire istemcilerinin sitesinden bu ağlara eriş',
+'ccd iroute2' => 'İstemciler IPFire sitesinden bu ağlara erişsin',
+'ccd iroutehint' => 'Dikkat! Bu ayarları değiştirirseniz, değişikliklerin etkili olduğu OpenVPN sunucusunu yeniden başlatmanız gerekir!',
+'ccd modify' => 'Ağı değiştir',
+'ccd name' => 'Ad',
+'ccd net' => 'Statik Ip Adres Havuzu',
+'ccd noaddnet' => 'OpenVPN sunucusu durdurulduğunda sadece yeni bir statik ağ ekleyebilirsiniz.',
+'ccd none' => 'Yok',
+'ccd routes' => 'Yönlendir:',
+'ccd subnet' => 'Alt ağ',
+'ccd used' => 'Kullanılan adresler',
+'cert' => 'Sertifika',
+'certificate' => 'Sertifika',
+'certificate authorities' => 'Sertifika yetkilileri',
+'certificate does not have a valid ca associated with it' => 'Sertifika ile ilişkili geçerli bir CA yok.',
+'certificate file move failed' => 'Sertifika dosyası taşıması başarısız oldu',
+'cfg restart' => 'Bir yeniden başlatma, yapılandırma arşivi geri yükledikten sonra önerilmektedir.',
+'chain' => 'Zincir',
+'change passwords' => 'Parola değiştir',
+'change share' => 'paylaşım seçeneklerini düzenle',
+'check for net traffic update' => 'Ağ-Trafik güncelleştirmeleri denetle',
+'check vpn lr' => 'Kontrol',
+'choose config' => 'Yapılandırmayı seçin',
+'choose media' => 'Medya seçin',
+'cipher' => 'Şifreleme:',
+'city' => 'Şehir',
+'class in use' => 'Bu sınıf zaten kullanımda.',
+'clear cache' => 'Önbelleği Temizle',
+'clear playlist' => 'Çalma listesi boş',
+'clenabled' => 'Yerel ağa zaman sağla',
+'click to disable' => 'Aktif (pasifleştirmek için tıklayın)',
+'click to enable' => 'Pasif (aktifleştirmek için tıklayın)',
+'client' => 'İş istasyonun adı',
+'clock has not been synchronized' => 'Saat eşitlenemedi',
+'clock last synchronized at' => 'Saatin son olarak eşitlendiği zaman:',
+'comment' => 'Açıklama:',
+'common name' => 'Ortak ad',
+'community rules' => 'Snort/VRT GPLv2 Topluluk Kuralları',
+'comp-lzo' => 'LZO sıkıştırması:',
+'compression' => 'Sıkıştırma:',
+'computer to modem rate' => 'Bilgisayarın modem hızı:',
+'concentrator name' => 'Değiştirici adı:',
+'confirmation' => 'onay',
+'connect' => 'OVPN Başlat / Bağlan',
+'connect the modem' => 'Modeme bağlan',
+'connect timeout' => 'Zaman aşımını bağlan:',
+'connected' => 'Bağlı',
+'connecting' => 'Bağlanıyor...',
+'connection' => 'Bağlı',
+'connection closed' => 'Bağlı değil...',
+'connection debugging' => 'Hata ayıklama bağlantısı',
+'connection status and controlc' => 'Bağlantı durumu ve kontrol:',
+'connection tracking' => 'IPTablo bağlantı takibi',
+'connection type' => 'Bağlantı türü',
+'connection type is invalid' => 'Geçersiz bağlantı türü.',
+'connections' => 'Bağlantılar',
+'connections are associated with this ca.  deleting the ca will delete these connections as well.' => 'Bu bağlantılar CA ilişkilidir. CA silindiğinde bu bağlantılarda silinecektir.',
+'connscheduler' => 'Bağlantı Zamanlayıcı',
+'core notice 1' => '<strong>Dikkat:</strong> Bir çekirdek güncellemesi var',
+'core notice 2' => '-',
+'core notice 3' => 'kullanılabilir.',
+'could not be opened' => 'açılamadı.',
+'could not connect to' => 'Bağlanamadı',
+'could not connect to www ipcop org' => 'www.ipfire.org sitesine bağlanılamadı',
+'could not connect to www ipfire org' => 'www.ipfire.org sitesine bağlanılamadı',
+'could not create directory' => 'Dizin oluşturulamadı.',
+'could not download latest patch list' => 'Son yama listesi indirilemedi (bağlanamadı).',
+'could not download latest updates' => 'Son güncellemeler indirilemedi.',
+'could not download the available updates list' => 'Kullanılabilir güncelleştirmeler listeden yüklenemiyor.',
+'could not open available updates file' => 'Mevcut güncellemeler dosyası açılamadı.',
+'could not open installed updates file' => 'Yüklü güncelleştirmeler dosya açılamadı',
+'could not open update information file' => 'Güncelleştirme bilgileri dosyası açılamadı. Güncelleme dosyası bozuk.',
+'could not retrieve common name from certificate' => 'Sertifikadan ortak ad alınamadı.',
+'count' => 'Say',
+'countries' => 'Ülkeler',
+'country' => 'Ülke',
+'country codes and flags' => 'Ülke kodları ve bayrakları:',
+'countrycode' => 'Kod',
+'cpu frequency per' => 'cpu başına frekans - ',
+'cpu idle usage' => 'boş cpu kullanımı',
+'cpu interrupt usage' => 'cpu kullanımını kesme',
+'cpu iowait usage' => 'io için bekleyen cpu',
+'cpu irq usage' => 'irq cpu kullanımı',
+'cpu nice usage' => 'iyi cpu kullanımı',
+'cpu steal usage' => 'cpu kullanımını alma',
+'cpu system usage' => 'sistem cpu kullanımı',
+'cpu usage per' => 'cpu başına kullanım - ',
+'cpu user usage' => 'kullanıcı cpu kullanımı',
+'create' => 'Oluştur',
+'create mask' => 'Yeni oluşturulan dosyalar için UNIX hakları',
+'create new backup' => 'Yeni bir yedek kümesi oluşturma',
+'credits' => 'Yazarlar',
+'crl' => 'Sertifika İptal Listesi',
+'cron server' => 'CRON Sunucusu',
+'current' => 'Geçerli',
+'current aliases' => 'Geçerli takma adlar:',
+'current class' => 'Geçerli sınıflar',
+'current devices' => 'Geçerli aygıtlar',
+'current dhcp leases on blue' => 'Mavi üzerindeki geçerli DHCP atamaları',
+'current dynamic leases' => 'Geçerli dinamik atamalar',
+'current fixed leases' => 'Geçerli sabit atamalar',
+'current hosts' => 'Mevcut ana bilgisayarlar:',
+'current media' => 'Mevcut medya',
+'current ovpn' => 'Aktif OVPN-Bağlantısı:',
+'current playlist' => 'Mevcut çalma listesi',
+'current profile' => 'Mevcut profil:',
+'current rules' => 'Mevcut kurallar:',
+'custom networks' => 'Özel ağlar',
+'custom services' => 'Özel hizmetler',
+'daily firewallhits' => 'günlük güvenlik duvarı kaydı',
+'dat without key' => 'Şifreli bir arşiv anahtarı olmadan geri yüklenemez.',
+'date' => 'Tarih',
+'date not in logs' => 'Sorgulanan gün için hiçbir günlük yok',
+'day' => 'Gün',
+'day after' => 'Bir gün sonra',
+'day before' => 'Bir gün önce',
+'day-graph' => 'gün',
+'days' => 'gün',
+'dbfile' => 'Db dosyası',
+'ddns help dnsmadeeasy' => 'Alandaki ana bilgisayar adı için kimlik numarasını girin(veya ayrılmış kimlik listesi;)',
+'ddns help freedns' => 'Alanda kullanıcı adı içinde bağlantı dizesini girin',
+'ddns help plus' => '<b>+</b> zorunlu bir alanı işaretler',
+'ddns hostname added' => 'Dinamik DNS ana bilgisayar adı eklendi',
+'ddns hostname modified' => 'Dinamik DNS ana bilgisayar adı değiştirildi',
+'ddns hostname removed' => 'Dinamik DNS ana bilgisayar adı kaldırıldı',
+'ddns minimize updates' => 'Güncellemeleri azalt: Güncellemelerden önce, sunucu adı \'[host.]domain\' için dns IP adresini KIRMIZI IP ile karşılaştır.',
+'ddns noip prefix' => 'Grup yönteminde ip-yok seçeneğini kullanmak için ana bilgisayar adı öneki: <b>%</b>',
+'deactivate' => 'Devre dışı',
+'deactivate user' => 'Kullanıcı devre dışı',
+'dead peer detection' => 'Sonlanmış Eş Algılama',
+'debugme' => 'Henüz uygulanmadı',
+'december' => 'Aralık',
+'deep scan directories' => 'Ardışık tarama',
+'def lease time' => 'Varsayılan Kira Zamanı',
+'default ip' => 'Varsayılan IP adresi',
+'default lease time' => 'Varsayılan kira zamanı (dakika):',
+'default networks' => 'Varsayılan ağlar',
+'default renewal time' => 'Varsayılan Yenileme Zamanı',
+'default services' => 'Varsayılan hizmet',
+'defaultwarning' => 'UYARI - Ayarlarınız varsayılanlar tarafından kaybedilip değiştirilecektir.',
+'delete' => 'Sil',
+'delete cron' => 'Zamanlanmış işi sil',
+'delete pc' => 'İş istasyonunu sil',
+'delete share' => 'Paylaşımı sil',
+'delete user' => 'Kullanıcıyı sil',
+'demon login script' => 'Demon giriş betiği',
+'deprecated fs warn' => 'Dosya sistemi kalktı. Yeni çekirdekte bu destek bırakıldı. Yedekleyip yeniden biçimlendirin!',
+'description' => 'Açıklama',
+'dest ip and port' => 'Hedef IP: Bağlantı noktası',
+'destination' => 'Hedef',
+'destination ip' => 'Hedef IP',
+'destination ip bad' => 'Geçersiz hedef IP',
+'destination ip or net' => 'Hedef IP veya ağ',
+'destination net' => 'Hedef Ağ',
+'destination port' => 'Hedef bağlantı noktası',
+'destination port numbers' => 'Hedef bağlantı noktası geçerli bir bağlantı noktası numarası ya da bağlantı noktası numarası aralığı olmalıdır.',
+'destination port overlaps' => 'Hedef bağlantı noktası aralığı örtüşen mevcut bir bağlantı noktası numarası aralığıdır.',
+'detail level' => 'Detay seviyesi',
+'details' => 'Detaylar',
+'device' => 'Aygıt',
+'devices on blue' => 'MAVİ üzerindeki aygıt',
+'dhcp advopt add' => 'DHCP seçeneği ekle',
+'dhcp advopt added' => 'DHCP seçeneği eklendi',
+'dhcp advopt blank value' => 'DHCP seçeneği değeri boş olamaz.',
+'dhcp advopt custom definition' => 'Özel seçeneğinizin açıklaması',
+'dhcp advopt definition' => 'Açıklama',
+'dhcp advopt definition exists' => 'Açıklama seçeneği zaten var. Bunu sadece düzenleyebilir veya kaldırabilirsiniz.',
+'dhcp advopt edit' => 'DHCP seçeneğini düzenle',
+'dhcp advopt help' => 'Liste Seçenekleri',
+'dhcp advopt list' => 'Ek DHCP seçenekleri',
+'dhcp advopt modified' => 'DHCP seçeneği düzeltildi',
+'dhcp advopt name' => 'Seçenek adı',
+'dhcp advopt removed' => 'DHCP seçeneği kaldırıldı',
+'dhcp advopt scope' => 'Seçenek kapsamı',
+'dhcp advopt scope global' => 'Genel',
+'dhcp advopt scope help' => 'Kontrol arabirimleri için genel kapsam veya sınır kapsamı.',
+'dhcp advopt unknown' => 'DHCP seçeneği adı tanınmıyor',
+'dhcp advopt value' => 'Seçenek değeri',
+'dhcp allow bootp' => 'Bootp istemcilerine izin ver',
+'dhcp base ip fixed lease' => 'Kiralar oluşturmak için temel IP\'yi düzelt',
+'dhcp bootp pxe data' => 'Sabit kira için isteğe bağlı bootp pxe verileri girin',
+'dhcp configuration' => 'DHCP yapılandırması',
+'dhcp create fixed leases' => 'Sabit kiralama oluştur',
+'dhcp fixed lease err1' => 'Bu düzeltme için MAC adresini, ana bilgisayar adını veya her ikisinide girmeniz gerekir',
+'dhcp fixed lease help1' => 'IP adresleri tam tanımlanmış alan adları (FQDN) şeklinde girilmelidir.',
+'dhcp mode' => 'DHCP',
+'dhcp server' => 'DHCP Sunucusu',
+'dhcp server disabled' => 'DHCP sunucusu devre dışı.  Durduruldu.',
+'dhcp server disabled on blue interface' => 'MAVİ arabirim üzerindeki DHCP sunucusu devre dışı',
+'dhcp server enabled' => 'DHCP sunucusu aktif.  Yeniden başlatılıyor.',
+'dhcp server enabled on blue interface' => 'MAVİ arabirim üzerindeki DHCP aktif',
+'dhcp-options' => 'DHCP baskı seçenekleri',
+'dial' => 'Bağlan',
+'dial profile' => 'Profil ile bağlan',
+'dial user password' => 'Çevirmeli bağlantı kullanıcı parolası:',
+'dial user password has been changed' => 'Çevirmeli bağlantı kullanıcı parolası değiştirildi.',
+'dialing mode' => 'Arama yöntemi:',
+'dialup red not ppp' => '<b>KIRMIZI</b> sadece PPP Çevirmeli bağlantı olarak ayarlanırsa profiller kullanılabilir. <BR>Ağ ayarlarını kontrol edin.',
+'dialup settings' => 'Çevirmeli Bağlantı Seçenekleri',
+'directory mask' => 'UNIX dizin hakları',
+'directory writeable' => 'yazılabilir dizin',
+'disabled' => 'devre dışı',
+'disconnect' => 'OVPN Durdur / Bağlantıyı kes',
+'disconnects' => 'Bağlantıyı kes',
+'disk access per' => 'erişim başına disk',
+'disk usage' => 'Disk kullanımı',
+'display' => 'Görünüm',
+'display charset' => 'Karakterleri göster',
+'display hostname in window title' => 'Pencere başlığında ana bilgisayar adını göster',
+'display traffic at home' => 'Başlangıç sayfasının üzerinde hesaplanan trafiği göster',
+'display webinterface effects' => 'Efektleri aktifleştir',
+'dl client arch' => 'İstemci paketlerini indir (zip)',
+'dmz' => 'AÇIK BÖLGE',
+'dmz pinhole configuration' => 'Açık bölge yapılandırma',
+'dmz pinhole rule added' => 'Açık bölge kuralı eklendi; Açık bölge yeniden başlatılıyor',
+'dmz pinhole rule removed' => 'Açık bölge kuralı silindi; Açık bölge yeniden başlatılıyor',
+'dmzpinholes for same net not necessary' => 'Açık bölge aynı ağ için gerekli değildir. Farklı kaynak veya hedef ağ seçin.',
+'dnat address' => 'Harici IP adresi',
+'dns address deleted' => 'Başarıyla silindi!',
+'dns address deleted txt' => 'DNS-Sunucusu adresleri başarıyla silindi.<br />Değişikliklerin aktifleştirilmesi için yeniden başlatın!',
+'dns address done' => 'DNS-Sunucusu adresi ayarları kaydedilecektir.',
+'dns address recon' => 'Yeniden bağlanmaya çalışılıyor!',
+'dns check failed' => 'DNS denetimi başarısız oldu',
+'dns desc' => 'Red0 arabirimi sağlayıcısından DHCP üzerinden IP adresi bilgileri girilirse DNS sunucu adresleri otomatik olarak ayarlanır. Şimdi burada DNS sunucusu IP adreslerini değiştirebilirsiniz.',
+'dns error 0' => '<strong>Birincil</strong> DNS sunucu IP adresleri geçerli değil. Lütfen girişleri kontrol edin.<br />Girilen <strong>ikincil</strong> DNS sunucu adresi geçerlidir.',
+'dns error 01' => 'Girilen <strong>birincil</strong> ve <strong>ikincil</strong> DNS sunucu adresleri geçerli değildir. Lütfen kayıtlarınızı kontrol edin.',
+'dns error 1' => '<strong>İkincil</strong> DNS sunucu IP adresleri geçerli değil. Lütfen girişleri kontrol edin.<br />Girilen <strong>birincil</strong> DNS sunucu adresi geçerlidir.',
+'dns header' => 'Red0 üzerindeki DHCP için sadece DNS sunucu adreslerini ata',
+'dns list' => 'Halka açık ücretsiz DNS sunucularının listesi',
+'dns menu' => 'DNS Sunucusu',
+'dns new 0' => 'Yeni <strong>birincil</strong> DNS sunucu IP\'si:',
+'dns new 1' => 'Yeni <strong>ikincil</strong> DNS sunucu IP\'si:',
+'dns proxy server' => 'DNS Vekil Sunucusu',
+'dns saved' => 'Başarıyla kaydedildi!',
+'dns saved txt' => 'Girilen iki DNS sunucu adresi başarılı bir şekilde kaydedildi.<br />Değişikliklerin aktifleştirielebilmesi için yeniden başlatın!',
+'dns server' => 'DNS Sunucusu',
+'dns servers' => 'DNS sunucuları',
+'dns title' => 'Etki Alanı Ad Sistemi',
+'dnsforward' => 'DNS Yönlendirmesi',
+'dnsforward add a new entry' => 'Yeni bir kayıt ekle:',
+'dnsforward configuration' => 'İleri DNS yapılandırması',
+'dnsforward edit an entry' => 'Varolan bir kaydı düzenle:',
+'dnsforward entries' => 'Güncel kayıtlar:',
+'dnsforward forward_server' => 'Ad sunucusu',
+'dnsforward zone' => 'Bölge',
+'do not log this port list' => 'Otorumdan hemen önce bu bağlantı noktaları listesini bırak (günlük boyutunu küçültür)',
+'dod' => 'Çevirmeli bağlantı üzerinden talep et',
+'dod for dns' => 'DNS için çevirmeli bağlantı üzerinden talep et:',
+'dod not compatible with ddns' => 'Talep edilen çevirmeli ağ dinamik dns hizmetleri ile uyumlu değildir',
+'dod waiting' => 'Çevirmeli bağlantı üzerindeki talep bekleniyor',
+'domain' => 'Etki alanı',
+'domain master' => 'Ana etki alanı',
+'domain name' => 'Etki alanı adı',
+'domain name suffix' => 'Etki alanı adı son eki:',
+'domain not set' => 'Etki alanı adı ayarlanmamış.',
+'donation' => 'Bağış',
+'donation-link' => 'https://www.paypal.com/en_US/GB/i/btn/btn_donateCC_LG.gif',
+'donation-text' => '<strong>IPFire</strong> boş zamanlarında gönüllüer tarafından geliştirlmektedir. Bu projeyi ayakta tutmak için eğer bize destek olmak isterseniz küçük bir bağıştan mutluluk duyarız.',
+'done' => 'Yap',
+'dos charset' => 'DOS karakterleri',
+'down and up speed' => 'Gönderme hızı düştüğünde <i>Kaydet</i> düğmesine basın.',
+'downlink' => 'İndirme bağlantısı',
+'downlink speed' => 'İndirme bağlantı hızı (kbit/san)',
+'downlink std class' => 'Standart indirme bağlantısı sınıfı',
+'download' => 'İndir',
+'download ca certificate' => 'CA sertifikası indir',
+'download certificate' => 'Sertifika indir',
+'download host certificate' => 'Ana bilgisayar belgesi indir',
+'download new ruleset' => 'Yeni Kural Kümesi İndir',
+'download pkcs12 file' => 'PKCS12 dosyasını indir',
+'download root certificate' => 'Root sertifikasını indir',
+'dpd action' => 'Hareketsiz eş algılama eylemi',
+'dpd delay' => 'Gecikme',
+'dpd timeout' => 'Zaman Aşımı',
+'driver' => 'Sürücü',
+'drop action' => '"Engellenmiş" biçimdeki (iletilen) güvenlik duvarının varsayılan davranışı',
+'drop action1' => '"Engellenmiş" biçimdeki (giden) güvenlik duvarının varsayılan davranışı',
+'drop action2' => 'Güvenlik duvarı (giriş) varsayılan davranışı',
+'drop forward' => 'İletilen paket günlüklerini reddet',
+'drop input' => 'Günlük girdi paketlerini reddet',
+'drop newnotsyn' => 'Sync paketleri olmayan yeni günlükleri reddet',
+'drop outgoing' => 'Günlük çıkış paketlerini reddet',
+'drop portscan' => 'Günlük portscan paketlerini reddet',
+'drop proxy' => 'Vekil sunucudan yönlendirilmiş tüm paketleri reddet',
+'drop samba' => 'Tüm Microsoft bağlantı noktalarını 135,137,138,139,445,1025 reddet',
+'drop wirelessforward' => 'Kablosuz paket günlüklerini reddet',
+'drop wirelessinput' => 'Kablosuz günlük girdi paketlerini reddet',
+'dst port' => 'Dst Bağlantı Nokatası',
+'dstprt range overlaps' => 'Hedef bağlantı noktası aralığı ile örtüşen önceden tanımlanmış bağlantı noktası.',
+'dstprt within existing' => 'Hedef bağlantı noktası zaten tanımlanmış bağlantı noktası aralığı içinde.',
+'duplicate ip' => 'Yinelenen IP adresi girildi',
+'duplicate ip bold' => 'Yinelenen adresler <b>kalın</b> olanlardır',
+'duplicate mac' => 'Yinelenen MAC adresi girildi',
+'duplicate name' => 'Bu ad zaten kullanılıyor. Başka bir seçin.',
+'dyn dns source choice' => 'Dinamik DNS sağlayıcılarından IPFire sisteminiz için IP adresi alma:',
+'dynamic dns' => 'Dinamik DNS',
+'dynamic dns client' => 'Dinamik DNS İstemcisi',
+'e-mail address too long' => 'E-posta adresi çok uzun; adres 40 karakterden uzun olmamalı.',
+'eciadsl help' => 'ECI ADSL modem ayarlaması için synch.bin dosyasının IPFire üzerine yüklenmesi gerekir. Lütfen ECIADSL internet sitesinden  <b>synch.bin</b> dosyasını indirdikten sonra aşağıdaki formu kullanarak yükleyin.',
+'eciadsl upload' => 'ECI ADSL Synch.bin Dosyasını Yükle',
+'edit' => 'Düzenle',
+'edit a rule' => 'Varolan kuralı düzenle:',
+'edit advanced settings when done' => 'Tamamlandığında gelişmiş ayarları düzenle.',
+'edit an existing alias' => 'Varolan takma adı düzenle',
+'edit an existing host' => 'Varolan sistem adını düzenle',
+'edit an existing lease' => 'Varolan atamayı düzenle',
+'edit device' => 'Aygıtı düzenle',
+'edit hosts' => 'Ana Bilgisayarlar',
+'edit network' => 'Ağı düzenle',
+'edit printer' => 'Yazıcıyı düzenle',
+'edit service' => 'Hizmeti düzenle',
+'edit share' => 'Paylaşımı düzenle',
+'editor' => 'Düzenleyici',
+'eg' => 'e.g.:',
+'email server can not be empty' => 'E-posta sunucusu boş olamaz',
+'emailreportlevel' => 'E-posta rapor seviyesi',
+'emerging rules' => 'Emergingthreats.net Topluluk Kuralları',
+'empty' => 'Bu alan boş bırakılabilir',
+'empty profile' => 'boş',
+'enable ignore filter' => 'Aktif filtreyi yoksay',
+'enable javascript' => 'Javascripti aktifleştir',
+'enable wildcards' => 'Joker karakterleri aktifleştir:',
+'enabled' => 'Aktif:',
+'enabled on' => 'Aktif olacağı yer',
+'enabledtitle' => 'Aktif',
+'encapsulation' => 'Kapsülleme',
+'encrypted' => 'Şifre',
+'encryption' => 'Şifreleme:',
+'end address' => 'Bitiş adresi:',
+'enter ack class' => 'ACK-Sınıfı girin <br />ve sonra <i>Kaydet</i> düğmesine basın.',
+'enter data' => 'Ayarları girin <br />ve sonra <i>Kaydet</i> düğmesine basın.',
+'entropy' => 'Entropi',
+'entropy graphs' => 'Entropi grafikleri',
+'err bk 1' => 'Arşiv oluşturma hatası',
+'err bk 10 password' => 'Yedek parolası oluşturma hatası',
+'err bk 2 key' => 'Anahtar dosyası oluşturulama hatası',
+'err bk 3 tar' => 'Arşiv dosyaları ekleneme hatası',
+'err bk 4 gz' => 'Arşiv sıkıştırma hatası',
+'err bk 5 encrypt' => 'Arşiv şifreleme hatası',
+'err rs 1' => 'Arşiv geri yüklemesinde hata',
+'err rs 6 decrypt' => 'Arşiv şifresi çözülürken hata',
+'err rs 7 untartst' => 'Geçersiz şifresi çözülmüş arşiv',
+'err rs 8 untar' => 'Arşiv untar dosyası açma hatası',
+'error config' => '/var/ipfire/ovpn/config/ZERINA.ovpn açılamadı!',
+'error external access' => '/var/ipfire/xtaccess/config açılamadı (harici erişim verilemedi)!',
+'error messages' => 'Hata mesajları:',
+'esp encryption' => 'ESP Şifreleme:',
+'esp grouptype' => 'ESP Grup türü:',
+'esp integrity' => 'ESP Bütünlüğü:',
+'esp keylife' => 'ESP Anahtar ömrü:',
+'esp keylife should be between 1 and 24 hours' => 'ESP anahtar ömrü 1 ile 24 saat arasında olmalıdır.',
+'every' => 'Her',
+'exampel' => 'örnek',
+'exclude logfiles' => 'Günlük dosyaları hariç',
+'excluding buffers and cache' => '-/+ arabellek/önbellek',
+'expected' => 'Beklenen',
+'expertoptions' => 'Uzman seçenekleri',
+'expires' => 'Bitiş tarihi',
+'export' => 'Dışarı Aktar',
+'exportkey' => 'PSK dışarı aktar',
+'external access' => 'Harici erişim',
+'external access configuration' => 'Harici erişim yapılandırması',
+'external access rule added' => 'Harici erişim kuralı eklendi. Erişim denetleyicisi yeniden başlatılıyor.',
+'external access rule changed' => 'Harici erişim kuralı değiştirildi. Erişim denetleyicisi yeniden başlatılıyor.',
+'external access rule removed' => ' Harici erişim kaldırıldı. Erişim denetleyicisi yeniden başlatılıyor.',
+'external aliases configuration' => 'Harici takma ad yapılandırması',
+'extrahd' => 'Yedek Diskler',
+'extrahd because there is already a device mounted' => ', çünkü bu aygıt bağlandı',
+'extrahd cant umount' => 'Ayrılamadı',
+'extrahd detected drives' => 'Algılanan diskler',
+'extrahd install or load driver' => 'Aygıtınız buradaki listede yoksa sürücüsünü kurmanız veya yüklemeniz gerekir.<br /> Aygıtınızı görüyor fakat bölümlerini göremiyorsanız önce bunları oluşturmak zorundasınız.',
+'extrahd maybe the device is in use' => '. Belki aygıt kullanımda',
+'extrahd to' => '-',
+'extrahd to root' => 'root',
+'extrahd unable to read' => 'Okumak için açılamıyor',
+'extrahd unable to write' => 'Yazmak için açılamıyor',
+'extrahd you cant mount' => 'Bağlanamadı',
+'false classnumber' => 'Sınıf-Numarası arayüzle eşleşmiyor.',
+'false max bandwith' => 'Yanlış en fazla bant genişliği.',
+'false min bandwith' => 'Yanlış en az bant genişliği.',
+'february' => 'Şubat',
+'fetch ip from' => 'Harici sunucunun yardımıyla tahmini gerçek genel IP',
+'filename' => 'Dosya adı',
+'filesystem full' => 'Dolu dosya sistemi',
+'fireinfo ipfire version' => 'IPFire sürümü',
+'fireinfo is disabled' => 'Güvenlik duvarı bilgisi devre dışı',
+'fireinfo is enabled' => 'Güvenlik duvarı bilgisi aktif',
+'fireinfo is submitted' => 'Profiliniz güvenlik duvarı bilgi hizmetine gönderildi.',
+'fireinfo is submitted button' => 'Hayır Artık Profilimi Göndermek İstemiyorum',
+'fireinfo kernel version' => 'Çekirdek sürümü',
+'fireinfo not submitted' => 'Profiliniz güvenlik duvarı bilgi hizmetlerine henüz gönderilmemiştir.',
+'fireinfo not submitted button' => 'Evet Profilimi Şimdi Gönder',
+'fireinfo pakfire version' => 'Pakfire sürümü',
+'fireinfo please enable' => 'Lütfen güvenlik duvarı bilgi hizmetini aktifleştirin.',
+'fireinfo settings' => 'Güvenlik duvarı bilgisi ayarları',
+'fireinfo system version' => 'Sistem sürümü',
+'fireinfo why descr1' => 'Bu seçeneği aktifleştirmek IPFire gelişimi için çok önemlidir.',
+'fireinfo why descr2' => 'Bunun ',
+'fireinfo why enable' => 'Neden güvenlik duvarı bilgi hizmetini aktifleştirmeliyim?',
+'fireinfo why read more' => 'nedenleri hakkında bilgi için tıklayın.',
+'fireinfo your profile id' => 'Profil kimliğiniz',
+'firewall' => 'Güvenlik Duvarı',
+'firewall graphs' => 'Güvenlik Duvarı Grafikleri',
+'firewall hits' => 'Güvenlik duvarı için toplam kayıt:',
+'firewall hits per' => 'güvenlik duvarı başına tıklama',
+'firewall log' => 'Güvenlik duvarı günlüğü',
+'firewall log viewer' => 'Güvenlik Duvarı Günlük Görüntüleyicisi',
+'firewall logs' => 'Güvenlik Duvarı Günlükleri',
+'firewall logs ip' => 'Gd-Günlük Grafikleri (IP)',
+'firewall logs port' => 'Gd-Günlük Grafikleri (Port)',
+'firewall rules' => 'Güvenlik Duvarı Kuralları',
+'firewallhits' => 'güvenlik duvarı kaydı',
+'firmware' => 'Yazılım',
+'firmware upload' => 'Yazılım/Sürücü Yükle',
+'first' => 'İlk',
+'fixed ip lease added' => 'Sabit IP kirası eklendi',
+'fixed ip lease modified' => 'Sabit IP kirası güncellendi',
+'fixed ip lease removed' => 'Sabit IP kirası kaldırıldı',
+'flag' => 'Bayrak',
+'force update' => 'Zorla güncelleştir',
+'force user' => 'kullanıcıya tüm yeni dosyaları zorla',
+'forward firewall' => 'Güvenlik Duvarı',
+'forwarding rule added' => 'Yönlendirme kuralı eklendi. Yeniden başlatmayı gönder.',
+'forwarding rule removed' => 'Yönlendirme kuralı kaldırıldı. Yeniden başlatmayı gönder.',
+'forwarding rule updated' => 'Yönlendirme kuralı güncellendi. Yeniden başlatmayı gönder.',
+'free' => 'Boş',
+'free memory' => 'boş bellek    ',
+'free swap' => 'boş takas alanı',
+'frequency' => 'Frekans',
+'friday' => 'Cuma',
+'fritzdsl help' => 'Fritz!DSL fcdsl / fcdslsl / fcdsl2 modem ayarlaması için, IPFire sisteminize paket yüklemeniz gereklidir. Lütfen IPFire internet sitesinden versiyonunuza uygun tar paketini indirin. Sonrasında <b>ipcop-(sizin_versionunuz)-install-avmdrv.(your_arch).tgz</b> dosyasını aşağıdaki form aracılığı ile yükleyin.',
+'fritzdsl upload' => 'Fritz!DSL Sürücüsünü Yükle',
+'from' => 'Başlangıç',
+'from email adr' => 'Gönderen e-posta adresi',
+'from email pw' => 'Gönderen e-posta parolası',
+'from email server' => 'Gönderen e-posta sunucusu',
+'from email user' => 'Gönderen e-posta kullanıcısı',
+'from warn email bad' => 'Gönderen e-posta adresi geçerli değil',
+'fw blue' => 'MAVİ arabirim için güvenlik duvarı seçenekleri',
+'fw default drop' => 'Güvenlik duvarı yöntemleri',
+'fw logging' => 'Güvenlik duvarı günlüğü',
+'fw settings' => 'Güvenlik duvarı ayarları',
+'fw settings color' => 'Kural tablosunda renkleri göster',
+'fw settings dropdown' => 'Kural oluşturulan sitedeki tüm ağları göster',
+'fw settings remark' => 'Kural tablosunda açıklamaları göster',
+'fw settings ruletable' => 'Boş kural tablolarını göster',
+'fwdfw ACCEPT' => 'KABUL ET',
+'fwdfw DROP' => 'İPTAL ET',
+'fwdfw MODE1' => 'Tüm paketleri iptal et',
+'fwdfw MODE2' => 'Tüm paketleri kabul et',
+'fwdfw REJECT' => 'REDDET',
+'fwdfw action' => 'Eylem',
+'fwdfw additional' => 'Ek ayarlar',
+'fwdfw addrule' => 'Kural Ekle/Düzenle::',
+'fwdfw all icmp' => 'Tüm ICMP türleri',
+'fwdfw change' => 'Güncelle',
+'fwdfw copy' => 'Kopyala',
+'fwdfw delete' => 'Sil',
+'fwdfw dnat' => 'Hedef NAT (Bağlantı noktası yönlendirme)',
+'fwdfw dnat error' => 'DNAT için bir tek ana bilgisayar seçmeniz gerekir. Gruplara veya ağlara izin verilmez.',
+'fwdfw dnat extport' => 'Harici bağlantı noktası kaynak NAT kurallarını kullanırken boş olmak zorundadır.',
+'fwdfw dnat nochoice' => 'Lütfen NAT bölümünden kaynak NAT veya hedef NAT seçin.',
+'fwdfw dnat porterr' => 'NAT için tek bir bağlantı noktası veya bağlantı noktası aralığı (tcp/udp) seçmek zorundasınız.',
+'fwdfw dnat porterr2' => 'Hiçbir hedef bağlantı noktası tanımlamdan harici bir bağlantı noktası (NAT) kullanamazsınız.',
+'fwdfw edit' => 'Düzenle',
+'fwdfw err nosrc' => 'Bir kaynak seçilmedi.',
+'fwdfw err nosrcip' => 'Lütfen bir kaynak IP adresi belirtin.',
+'fwdfw err notgt' => 'Bir hedef seçilmedi.',
+'fwdfw err notgtip' => 'Lütfen bir hedef IP adresi belirtin.',
+'fwdfw err prot_port' => 'Seçilen kuuralla kaynak veya hedef bağlantı noktasına izin verilmez',
+'fwdfw err prot_port1' => 'TCP veya UDP kuralı için kaynak veya hedef bağlantı noktası kullanırken seçmek zorunda',
+'fwdfw err remark' => 'Açıklama içinde geçersiz karakterler.',
+'fwdfw err ruleexists' => 'Bu kural zaten var.',
+'fwdfw err same' => 'Kaynak ve hedef aynı.',
+'fwdfw err samesub' => 'Kaynak ve hedef IP adresleri aynı alt ağdadır.',
+'fwdfw err src_addr' => 'Geçersiz kaynak MAC/IP adresi.',
+'fwdfw err tgt_addr' => 'Geçersiz hedef IP adresi.',
+'fwdfw err tgt_grp' => 'Hedef hizmet grubu boş',
+'fwdfw err tgt_mac' => 'MAC adresleri hedef olarak kullanılamaz.',
+'fwdfw err tgt_port' => 'Geçersiz hedef bağlantı noktası.',
+'fwdfw err time' => 'En az bir gün seçmeniz gerekir.',
+'fwdfw external port nat' => 'Harici bağlantı noktası (NAT)',
+'fwdfw final_rule' => 'Son kural: ',
+'fwdfw from' => 'Kimden:',
+'fwdfw hint ip1' => 'Son oluşturulan kurallar hiçbir zaman eşleşmemelidir çünkü kaynak ve hedefin alt ağları çakışabilir',
+'fwdfw hint ip2' => 'Bu kuralın mantıklı olup olmadığını bir kez daha kontrol edin: ',
+'fwdfw hint mac' => 'Kod oluşturma sırasında görmezden gelinecek MAC adresleri.',
+'fwdfw iface' => 'Arayüz',
+'fwdfw ipsec network' => 'IPsec ağları:',
+'fwdfw log' => 'Günlük',
+'fwdfw log rule' => 'Günlük kuralı',
+'fwdfw man port' => 'Bağlantı noktası:',
+'fwdfw many' => 'Çok',
+'fwdfw menu' => 'Güvenlik Duvarı Kuralları',
+'fwdfw movedown' => 'Aşağı taşı',
+'fwdfw moveup' => 'Yukarı taşı',
+'fwdfw natport used' => 'NAPT için verilen bağlantı noktası başka bir DNAT kural tarafından zaten kullanılıyor.',
+'fwdfw newrule' => 'Yeni Kural',
+'fwdfw p2p txt' => 'P2P ağlarına erişim izni Ver/Verme.',
+'fwdfw pol allow' => 'İzin Verildi',
+'fwdfw pol block' => 'Engellendi',
+'fwdfw pol text' => 'Yerel ağlardan bağlantılar için varsayılan günvenlik duvarı davranışını ayarlar. Tüm yeni bağlantılara izin verebilir veya varsayılan olarak engelleyebilirsiniz. Yerel ağlar arasındaki bağlantılar ayrıca sonraki biçimde engellenir.',
+'fwdfw pol text1' => 'Güvenlik duvarı tarafından başlatılan bağlantıları için varsayılan güvenlik duvarı davranışını ayarlar. Dikkat! Kendinizi engelleyebilirsiniz.',
+'fwdfw pol title' => 'Varsayılan güvenlik duvarı davranışı',
+'fwdfw prot41' => 'IPv6 Kuşatması (Kural 41)',
+'fwdfw prot41 short' => 'IPv6 Kuşatması',
+'fwdfw red' => 'KIRMIZI',
+'fwdfw reread' => 'Değişiklikleri Uygula',
+'fwdfw rule action' => 'Eylem kuralı:',
+'fwdfw rule activate' => 'Kuralı aktifleştir',
+'fwdfw rulepos' => 'Kural konumu',
+'fwdfw rules' => 'Kurallar',
+'fwdfw snat' => 'Kaynak NAT',
+'fwdfw source' => 'Kaynak',
+'fwdfw sourceip' => 'Kaynak adresi (MAC/IP adresi veya ağı):',
+'fwdfw std network' => 'Standart ağlar:',
+'fwdfw target' => 'Hedef',
+'fwdfw targetip' => 'Hedef adres (MAC/IP adresi veya ağı):',
+'fwdfw till' => 'Son zaman:',
+'fwdfw time' => 'Zaman Kısıtlamaları',
+'fwdfw timeframe' => 'Zaman kısıtlamalarını kullan',
+'fwdfw toggle' => 'Aktifleştirin veya devre dışı bırakın',
+'fwdfw togglelog' => 'Günlüğü aktifleştirin veya devre dışı bırakın',
+'fwdfw use nat' => 'Ağ adres dönüştürücüsünü kullanın (NAT)',
+'fwdfw use srcport' => 'Kaynak bağlantı noktası:',
+'fwdfw use srv' => 'Hedef bağlantı noktası:',
+'fwdfw useless rule' => 'Bu kural geçersiz.',
+'fwdfw warn1' => 'Ağa uygulanan güvenlik duvarı kurallarına öncülük etmelidir.',
+'fwdfw wd_fri' => 'Cum',
+'fwdfw wd_mon' => 'Pzt',
+'fwdfw wd_sat' => 'Cmt',
+'fwdfw wd_sun' => 'Paz',
+'fwdfw wd_thu' => 'Per',
+'fwdfw wd_tue' => 'Sal',
+'fwdfw wd_wed' => 'Çar',
+'fwdfw xt access' => 'Kayıt',
+'fwhost Custom Host' => 'Ana bilgisayar',
+'fwhost Custom Network' => 'Ağ',
+'fwhost IpSec Host' => 'IPsec ana bilgisayarı',
+'fwhost IpSec Network' => 'IPsec ağı',
+'fwhost OpenVPN N-2-N' => 'Ağdan ağa OpenVPN',
+'fwhost OpenVPN static host' => 'OpenVPN statik ana bilgisayar',
+'fwhost OpenVPN static network' => 'OpenVPN statik ağ',
+'fwhost Standard Network' => 'Standart ağ',
+'fwhost addgrp' => 'Yeni ağ/ana bilgisayar grubu ekle:',
+'fwhost addgrpname' => 'Grup adı:',
+'fwhost addhost' => 'Yeni bir ana bilgisayar ekle:',
+'fwhost addnet' => 'Yeni bir ağ ekle:',
+'fwhost addservice' => 'Hizmet ekle:',
+'fwhost addservicegrp' => 'Yeni bir hizmet grubu ekle:',
+'fwhost any' => 'Herhangi',
+'fwhost attention' => 'DİKKAT',
+'fwhost back' => 'Geri',
+'fwhost blue' => 'Mavi',
+'fwhost ccdhost' => 'OpenVPN istemcileri:',
+'fwhost ccdnet' => 'OpenVPN ağları:',
+'fwhost change' => 'Değiştir',
+'fwhost changeremark' => 'Sadece açıklamalar değiştirilmiş',
+'fwhost cust addr' => 'Ana bilgisayarlar',
+'fwhost cust grp' => 'Ağ/Ana Bilgisayar Grupları:',
+'fwhost cust net' => 'Ağlar',
+'fwhost cust service' => 'Hizmetler:',
+'fwhost cust srvgrp' => 'Hizmet grupları:',
+'fwhost deleted' => 'Silindi',
+'fwhost empty' => 'Tanımlı kurallar yok',
+'fwhost err addr' => 'Geçersiz IP adresi veya alt ağ',
+'fwhost err addrgrp' => 'Lütfen bir grup adı verin',
+'fwhost err empty' => 'Lütfen tüm alanları doldurun',
+'fwhost err emptytable' => 'Bu grupta hiçbir kayıt yok',
+'fwhost err groupempty' => 'Seçilen grup boş',
+'fwhost err grpexist' => 'Bu grup zaten var',
+'fwhost err hostexist' => 'zaten aynı adı taşıyan bir ana bilgisayar var',
+'fwhost err hostorip' => 'Geçersiz adı veya IP adresi',
+'fwhost err ip' => 'Geçersiz IP adresi',
+'fwhost err ipcheck' => 'Bu IP adresi zaten kullanılıyor',
+'fwhost err ipmac' => 'Geçersiz IP/MAC adresi',
+'fwhost err ipwithsub' => 'Lütfen sadece bir IP adresi verin (Alt ağ maskesi olmadan)',
+'fwhost err isccdhost' => 'Bu ad zaten OpenVPN istemci bağlantısı tarafından kullanılıyor',
+'fwhost err isccdiphost' => 'Bu IP adresi zaten bir OpenVPN istemci bağlantısı tarafından kullanılıyor',
+'fwhost err isccdipnet' => 'Bu IP adresi zaten bir OpenVPN ağ bağlantısı tarafından kullanılıyor',
+'fwhost err isccdnet' => 'Bu ad zaten OpenVPN ağı tarafından kullanılıyor',
+'fwhost err isingrp' => 'Bu kayıt grupta zaten var',
+'fwhost err mac' => 'Geçersiz MAC adresi',
+'fwhost err maxservicetcp' => 'TCP hizmetlerinin en üst sayısı olan 15 değerine bu grupta ulaşıldı (bağlantı noktası aralıkları iki kez sayılır)',
+'fwhost err maxserviceudp' => 'UDP hizmetlerinin en üst sayısı olan 15 değerine bu grupta ulaşıldı (bağlantı noktası aralıkları iki kez sayılır)',
+'fwhost err name' => 'Geçersiz ad. İzin verilen karakterler: Büyük ve küçük harfler, rakamlar, boşluk ve tire.',
+'fwhost err name1' => 'Boş ad.',
+'fwhost err net' => 'Bu Ağ/IP adresi zaten var',
+'fwhost err netexist' => 'Aynı adı taşıyan bir ağ zaten var',
+'fwhost err partofnet' => 'Ağ mevcut bir ağın alt ağı olmalıdır.',
+'fwhost err port' => 'Bağlantı noktası boş',
+'fwhost err remark' => 'Geçersiz açıklama. İzin verilen karakterler: Büyük ve küçük harfler, rakamlar, boşluk, tire, parantez, noktalı virgül, boru ve nokta.',
+'fwhost err srv exists' => 'Aynı adı taşıyan bir hizmet zaten var',
+'fwhost err srvexist' => 'Bu hizmet grupta zaten var',
+'fwhost err sub32' => 'Lütfen bir ana bilgisayar ekleyiniz bir ağ değil',
+'fwhost green' => 'Yeşil',
+'fwhost hint' => 'Not',
+'fwhost hosts' => 'Güvenlik Duvarı Ana Bilgisayarları',
+'fwhost icmptype' => 'ICMP türü:',
+'fwhost ip_mac' => 'IP/MAC adresi',
+'fwhost ipadr' => 'IP adresi:',
+'fwhost ipsec host' => 'IPsec istemcileri:',
+'fwhost ipsec net' => 'IPsec ağları:',
+'fwhost menu' => 'Güvenlik Duvarı Grupları',
+'fwhost netaddress' => 'Ağ adresi',
+'fwhost newgrp' => 'Ağ/Ana Bilgisayar Grupları',
+'fwhost newhost' => 'Ana Bilgisayarlar',
+'fwhost newnet' => 'Ağlar',
+'fwhost newservice' => 'Hizmetler',
+'fwhost newservicegrp' => 'Hizmet Grupları',
+'fwhost orange' => 'Turuncu',
+'fwhost ovpn_n2n' => 'Ağdan-Ağa OpenVPN',
+'fwhost port' => 'Bağlantı Noktası',
+'fwhost prot' => 'Kural',
+'fwhost reread' => 'Güvenlik duvarı kurallarının güncelleştirilmesi gerekiyor.',
+'fwhost reset' => 'İptal',
+'fwhost services' => 'Hizmetler:',
+'fwhost srv_name' => 'Hizmet adı',
+'fwhost stdnet' => 'Standart ağlar:',
+'fwhost type' => 'Tür',
+'fwhost used' => 'Kullanılan',
+'fwhost welcome' => 'Burada tek ana bilgisayarı gruplandırabilirsiniz ağlar ve hizmetlerle birlikte daha hızlı ve yeni kurallar oluşturabilirsiniz.',
+'fwhost wo subnet' => '(alt ağ olmadan)',
+'g.dtm' => 'KALDIRILACAK',
+'g.lite' => 'KALDIRILACAK',
+'gateway' => 'Ağ geçidi',
+'gateway ip' => 'Ağ Geçidi IP Adresi',
+'gen static key' => 'Statik bir anahtar oluştur',
+'generate' => 'Yönetici/Sunucu Sertifikası Oluştur',
+'generate a certificate' => 'Sertifika oluştur:',
+'generate iso' => 'ISO oluştur',
+'generate root/host certificates' => 'Yönetici/Sunucu Sertifikası Oluştur',
+'generate tripwire keys and init' => 'tripwire anahtarları ve init oluştur',
+'generatekeys' => 'Anahtar Oluştur',
+'generatepolicy' => 'Yeni kural oluştur',
+'generatereport' => 'Generate new report',
+'generating the root and host certificates may take a long time. it can take up to several minutes on older hardware. please be patient' => 'Yönetici ve sunucu sertifikalarının oluşturulması biraz zaman alır. Eski donanımlarda bu süre birkaç dakikayı bulabilir. Lütfen bekleyin.',
+'genkey' => 'PSK oluştur',
+'genre' => 'Tür',
+'global settings' => 'Genel ayarlar',
+'gpl i accept these terms and conditions' => 'Bu şartları kabul ediyorum',
+'gpl license agreement' => 'Lisans Sözleşmesi',
+'gpl please read carefully the general public license and accept it below' => 'Dikkatlice Genel Kamu Lisansını okuyup kabul edin',
+'gpl unofficial translation of the general public license v3' => 'Resmi olmayan sürüm-3 Genel Kamu Lisansı çevirisi',
+'graph' => 'grafiği',
+'graph per' => '-',
+'green' => 'YEŞİL',
+'green interface' => 'Yeşil Arabirim',
+'grouptype' => 'Grup türü:',
+'guaranteed bandwith' => 'Garantili bant genişliği',
+'guardian alertfile' => 'Uyarı dosyası',
+'guardian configuration' => 'Koruyucu Yapılandırması',
+'guardian ignorefile' => 'Yoksayılan dosya',
+'guardian interface' => 'Ara birim',
+'guardian logfile' => 'Günlük dosyası',
+'guardian timelimit' => 'Zaman sınırlaması',
+'guest ok' => 'istemcilere erişim izni',
+'gui settings' => 'GUI Ayarları',
+'gz with key' => 'Sadece şifreli bir arşiv bu makinede geri yüklenebilir.',
+'hangup' => 'Bağlantıyı Kes',
+'hangup string' => 'Engel:',
+'harddisk temperature' => 'sabit disk sıcaklığı',
+'harddisk temperature graphs' => 'hdd sıcaklık grafiği',
+'hardware graphs' => 'Donanım Grafikleri',
+'hardware support' => 'Donanım desteği',
+'hdd temperature in' => 'Sabit disk sıcaklığı',
+'help' => 'Yardım',
+'high' => 'Yüksek',
+'high memory usage' => 'Yüksek ballek kullanımı',
+'hint' => 'İpucu:',
+'holdoff' => 'Kapalı tutulan zaman (saniye)',
+'host' => 'Ana Bilgisayar',
+'host allow' => 'izin verilen ana bilgisayarların listesi',
+'host certificate' => 'Ana bilgisayar sertifikası',
+'host configuration' => 'Ana Bilgisayar Yapılandırması',
+'host deny' => 'engellenen ana bilgisayarlar listesi',
+'host ip' => 'Ana bilgisayar IP adresi',
+'host to net vpn' => 'Sunucudan ağa sanal özel ağ (RoadWarrior)',
+'hostname' => 'Ana bilgisayar adı',
+'hostname and domain already in use' => 'Etki alanındaki bu ana bilgisayar adı zaten kullanılıyor.',
+'hostname cant be empty' => 'Ana bilgisayar adı boş olamaz..',
+'hostname not set' => 'Ana bilgisayar adı ayarlanmadı.',
+'hosts config added' => 'Ana bilgisayar yapılandırması eklendi',
+'hosts config changed' => 'Ana bilgisayar yapılandırması değiştirildi',
+'hour' => 'Saat',
+'hour-graph' => 'saat',
+'hours' => 'saat',
+'hours2' => 'saat',
+'ibod for dual isdn only' => 'iBOD yalnızca çift ISDN ile kullanılabilir.',
+'icmp selected but no type' => 'ICMP kuralı için seçildi ancak ICMP türü belirtildi.',
+'icmp type' => 'ICMP Türü',
+'id' => 'Kimlik Numarası (ID)',
+'idle' => 'Boş',
+'idle timeout' => 'Boşta kalma zaman aşımı (dakika; 0 devre dışı):',
+'idle timeout not set' => 'Boşta kalma zaman aşımı ayarlanmamış.',
+'ids log viewer' => 'IDS günlük görüntüleyicisi',
+'ids logs' => 'STS Günlükleri',
+'ids preprocessor' => 'IDS önişlemcisi',
+'ids rules license' => 'Sourcefire VRT Sertifikalı Kurallarından yararlanmak için kayıt olmanız gerekmektedir',
+'ids rules license1' => '.',
+'ids rules license2' => 'Lisans kabulü için siteyi ziyaret edin veya e-posta ile aktifleştirin. Sonra ',
+'ids rules license3' => 'adresine gidin. Önce "Kod Oluştur" düğmesine basın ve sonra aşağıdaki alana 40 karakterlik Onikcode kodunu kopyalayın.',
+'ids rules update' => 'Snort kuralları güncelleştirme',
+'iface' => 'Iface',
+'ignore filter' => 'Filtreyi yoksay',
+'ike encryption' => 'IKE Şifreleme:',
+'ike grouptype' => 'IKE Grup Türü:',
+'ike integrity' => 'IKE Bütünlüğü:',
+'ike lifetime' => 'IKE Yaşam Süresi:',
+'ike lifetime should be between 1 and 8 hours' => 'IKE yaşam süresi 1 ila 8 saat arasında olmalıdır.',
+'import' => 'Al',
+'importkey' => 'PSK Al',
+'in' => 'içinde',
+'inactive' => 'Pasif',
+'include logfiles' => 'Günlük dosyaları dahil',
+'incoming' => 'gelen',
+'incoming firewall access' => 'Gelen güvenlik duvarı bağlantısı',
+'incoming traffic in bytes per second' => 'gelen trafik',
+'incorrect password' => 'Yanlış parola',
+'info' => 'Bilgi',
+'init string' => 'Init:',
+'insert floppy' => 'Sistem ayarlarını yedeklemek için biçimlendirilmiş bir disketi sürücüye takın ve <i>Diskete yedekle</i> düğmesine tıklayın. Lütfen yedeklemenin sağlığı açısından sonuçları dikkatle inceleyin.',
+'insert removable device' => 'Çıkarılabilir bir aygıt takın',
+'install' => 'Yükle',
+'install new update' => 'Yeni güncellemelieri yükle:',
+'installed' => 'Yüklenenler',
+'installed updates' => 'Yüklenen güncellemeler:',
+'instant update' => 'Hızlı Güncelle',
+'integrity' => 'Bütünlük:',
+'interface' => 'Ara birim',
+'interfaces' => 'Ara birim',
+'internet' => 'İNTERNET',
+'intrusion detection' => 'Saldırı Tespiti',
+'intrusion detection system' => 'Saldırı Tespit Sistemi',
+'intrusion detection system log viewer' => 'Saldırı Tespit Sistemi Günlük Görüntüleyicisi',
+'intrusion detection system rules' => 'Saldırı tespit sistemi kuralları',
+'intrusion detection system2' => 'Saldırı Tespit Sistemi:',
+'invalid broadcast ip' => 'Geçersiz yayın IP adresi',
+'invalid cache size' => 'Geçersiz önbellek boyutu.',
+'invalid characters found in pre-shared key' => 'Ön-paylaşımlı anahtarlarda geçersiz karakterler bulundu.',
+'invalid date entered' => 'Geçersiz tarih girdisi.',
+'invalid default lease time' => 'Geçersiz varsayılan kira süresi.',
+'invalid domain name' => 'Geçersiz alan adı.',
+'invalid downlink speed' => 'Geçersiz indirme bağlantı hızı.',
+'invalid end address' => 'Geçersiz bitiş adresi.',
+'invalid fixed ip address' => 'Geçersiz sabit IP adresi',
+'invalid fixed mac address' => 'Geçersiz sabit bir MAC adresi',
+'invalid hostname' => 'Geçersiz ana bilgisayar adı.',
+'invalid input' => 'Geçersiz giriş',
+'invalid input for authentication method' => 'Kimlik doğrulama yöntemi için geçersiz giriş.',
+'invalid input for city' => 'Şehir için geçersiz giriş.',
+'invalid input for country' => 'Ülke için geçersiz giriş.',
+'invalid input for department' => 'Bölümü için geçersiz giriş.',
+'invalid input for dhcp dns' => 'DHCP DNS için geçersiz giriş.',
+'invalid input for dhcp domain' => 'DHCP etki alanı için geçersiz giriş.',
+'invalid input for dhcp wins' => 'DHCP WINS için geçersiz giriş.',
+'invalid input for dpd delay' => 'DPD gecikmesi için geçersiz giriş.',
+'invalid input for dpd timeout' => 'DPD zamanaşımı için geçersiz giriş.',
+'invalid input for e-mail address' => 'E-posta adresi için geçersiz giriş.',
+'invalid input for esp keylife' => 'ESP anahtar ömrü için geçersiz giriş.',
+'invalid input for hostname' => 'Ana bilgisayar adı için geçersiz giriş.',
+'invalid input for ike lifetime' => 'IKE ömür boyu geçersiz giriş.',
+'invalid input for keepalive 1' => 'Ping komutunu canlı tutma için geçersiz giriş.',
+'invalid input for keepalive 1:2' => '1:2 oranında, en az bir oranı canlı tutma kullanım için geçersiz giriş',
+'invalid input for keepalive 2' => 'Ping komutunu yeniden başlatmada canlı tutmak için geçersiz giriş.',
+'invalid input for max clients' => 'En fazla istemci için geçersiz giriş.',
+'invalid input for name' => 'Kullanıcının tam adı veya sistem ana bilgisayar adı için geçersiz giriş',
+'invalid input for oink code' => 'Oink kodu için geçersiz giriş.',
+'invalid input for organization' => 'Kuruluş için geçersiz giriş.',
+'invalid input for remote host/ip' => 'Ana bilgisayar/ip uzak giriş için geçersiz giriş.',
+'invalid input for state or province' => 'Devlet veya il için geçersiz giriş.',
+'invalid ip' => 'Geçersiz IP adresi',
+'invalid keep time' => 'Tutma zamanı geçerli bir sayı olmalıdır.',
+'invalid key' => 'Geçersiz anahtar.',
+'invalid loaded file' => 'Geçersiz yüklenen dosya.',
+'invalid local-remote id' => 'Uzak ve yerel kimliği eşit olmadığında "@" işareti ile başlamamalıdır. Bu durum strongswan termonolojisinde leftid ve rightid de vardır.',
+'invalid logserver address' => 'Geçersiz syslogd sunucu adresi',
+'invalid mac address' => 'Geçersiz MAC adresi.',
+'invalid max lease time' => 'Geçersiz en fazla kira süresi.',
+'invalid maximum incoming size' => 'Geçersiz en fazla gelen boyut.',
+'invalid maximum object size' => 'Geçersiz en fazla nesne boyutu.',
+'invalid maximum outgoing size' => 'Geçersiz en fazla giden boyutu.',
+'invalid md5sum' => 'Geçersiz MD5Sum değeri.',
+'invalid minimum object size' => 'Geçersiz en az nesne boyutu.',
+'invalid mtu input' => 'Geçersiz MTU',
+'invalid netmask' => 'Geçersiz ağ',
+'invalid port' => 'Geçersiz bağlantı noktası numarası. Bağlantı noktası bir numara olmalıdır.',
+'invalid port list' => 'Bağlantı noktasındaki söz dizimi: bağlantı noktası[,bağlantı noktası]... bağlantı noktaları /etc/services veya numaralarınn bulunduğu yer',
+'invalid primary dns' => 'Geçersiz birincil DNS.',
+'invalid primary ntp' => 'Geçersiz birincil NTP sunucu adresi',
+'invalid secondary dns' => 'Geçersiz ikincil DNS.',
+'invalid secondary ntp' => 'Geçersiz birincil NTP sunucu adresi',
+'invalid start address' => 'Geçersiz başlangıç adresi',
+'invalid time entered' => 'Geçersiz zaman girdisi',
+'invalid time period' => 'Geçersiz zaman dilimi',
+'invalid uplink speed' => 'Geçersiz yükleme bağlantı hızı.',
+'invalid upstream proxy username or password setting' => 'Geçersiz geliş yönündeki bir vekil sunucu kullanıcı adı veya parola ayarı.',
+'invalid users' => 'kullanıcılar listesine erişmek için reddedildi',
+'invalid vpi vpci' => 'Geçersiz VPI/VPCI ayarları',
+'invalid wins address' => 'Geçersiz WINS sunucu adresi.',
+'invert' => 'Tersi',
+'ip address' => 'IP adresi',
+'ip address in use' => 'Bu IP adresi zaten kullanılıyor',
+'ip address outside subnets' => 'Alt ağ dışındaki IP adresi',
+'ip alias added' => 'Harici IP takma adı eklendi',
+'ip alias changed' => 'Harici IP takma adı değiştirildi',
+'ip alias removed' => 'Harici IP takma adı kaldırıldı',
+'ip info' => 'IP Bilgi',
+'ipfire has now rebooted' => 'IPFire şimdi yeniden başlatılıyor.',
+'ipfire has now shutdown' => 'IPFire şimdi kapatılıyor.',
+'ipfire side' => 'IPFire yan liste:',
+'ipfire side is invalid' => 'Geçersiz IPFire yan listesi.',
+'ipfires hostname' => 'IPFire ana bilgisayar adı',
+'ipinfo' => 'IP bilgi',
+'ipsec' => 'IPsec',
+'ipsec network' => 'IPsec ağ',
+'ipsec no connections' => 'Aktif hiçbir IPsec bağlantısı yok',
+'iptable rules' => 'IPTablo kuralları',
+'iptmangles' => 'IPTablo sıkıştırmaları',
+'iptnats' => 'IPTablo ağ adres çevrimi',
+'ipts' => 'IPTablolar',
+'isdn' => 'ISDN',
+'isdn settings' => 'Ek ISDN ayarları:',
+'isdn1' => 'Tek ISDN',
+'isdn2' => 'Çift ISDN',
+'january' => 'Ocak',
+'javascript menu error1' => 'Eğer aşağı açılır listeler çalışmıyorsa javascript seçeneğini devre dışı bırakın',
+'javascript menu error2' => 'sayfa.',
+'july' => 'Temmuz',
+'june' => 'Haziran',
+'kernel' => 'Çekirdek',
+'kernel logging server' => 'Çekirdek Günlüğü Sunucusu',
+'kernel version' => 'Çekirdek sürümü:',
+'key stuff' => '2. Anahtarlar ve Sertifikalar',
+'keyreset' => 'Anahtarları Sıfırla',
+'keys' => 'anahtarlar',
+'lan' => 'YEREL AĞ',
+'lang' => 'tr',
+'languagepurpose' => 'IPFire sistemini görüntülemek istediğiniz dili seçin:',
+'last' => 'Son',
+'last activity' => 'Son Etkinlik',
+'lateprompting' => 'Geç istenen',
+'lease expires' => 'Kiralama süresi',
+'least preferred' => 'az tercih edilen',
+'legend' => 'Açıklamalar',
+'length' => 'Süre',
+'lifetime' => 'Yaşam süresi:',
+'line' => 'Satırı',
+'linkq' => 'bağlantı kalitesi',
+'load printer' => 'Yazıcı Yükle',
+'loaded modules' => 'Yüklü modüller:',
+'local hard disk' => 'Sabit disk',
+'local master' => 'Yerel yönetici',
+'local ntp server specified but not enabled' => 'Belirtilen yerel NTP sunucusu aktif değil',
+'local subnet' => 'Yerel Alt Ağ:',
+'local subnet is invalid' => 'Geçersiz yerel alt ağ.',
+'local vpn hostname/ip' => 'Yerel VPN ana bilgisayar adı/ip',
+'localkey' => 'yerel Anahtar',
+'localkeyfile' => 'Yerel Anahtar Dosyası',
+'log' => 'Günlük:',
+'log enabled' => 'Günlük Aktif',
+'log level' => 'Günlük seviyesi',
+'log lines per page' => 'Sayfa başına satır',
+'log server address' => 'Syslog sunucusu:',
+'log settings' => 'Günlük Ayarları',
+'log summaries' => 'Günlük özetleri',
+'log summary' => 'Günlük Özetleri',
+'log var messages' => '/var/log/messages için ayarlar:',
+'log view' => 'Günlük kaydı',
+'log viewer' => 'Günlük görüntüleyici',
+'log viewing options' => 'Günlük görüntüleme seçenekleri',
+'log-options' => 'Günlük dosya seçenekleri',
+'loged in at' => 'Giriş yapan',
+'logging' => 'Günlük',
+'logging server' => 'Günlük Sunucusu',
+'loginlogout' => 'Giriş/Çıkış',
+'logs' => 'Günlükler',
+'lookup failed' => 'Ters arama başarısız',
+'loosedirectorychecking' => 'Serbest Dizin Denetimi',
+'low' => 'Düşük',
+'ls_dhcpd' => 'DHCP Sunucusu:',
+'ls_disk space' => 'Disk alanı:',
+'ls_free/swan' => 'VPN:',
+'ls_httpd' => 'HTTP Sunucusu:',
+'ls_init' => 'Init:',
+'ls_kernel' => 'Çekirdek ve Güvenlik Duvarı:',
+'ls_modprobe' => 'Module yükleyici:',
+'ls_pam_unix' => 'Yerel kullanıcı girişi:',
+'ls_sshd' => 'Uzak kullanıcı girişi:',
+'ls_syslogd' => 'Syslogd:',
+'mac address' => 'MAC Adresi',
+'mac address deleted' => 'Başarıyla silindi!',
+'mac address deleted txt' => 'MAC adresi başarıyla silindi. Ancak değişiklikler <strong>yeniden başlattıktan</strong> sonra aktif olacaktır.',
+'mac address done' => 'MAC adres ayarları kaydedildi.',
+'mac address error not 00' => 'MAC adresiniz 00 ile başlamalı!',
+'mac address error not valid' => 'MAC adres geçerli değil!',
+'mac address header' => 'Red0 üzerindeki MAC adresi',
+'mac address in use' => 'Bu MAC adresi zaten kullanılıyor',
+'mac address menu' => 'MAC Adresi',
+'mac address recon' => 'Yeniden bağlanmaya çalışılıyor!',
+'mac address saved' => 'Başarıyla kaydedildi!',
+'mac address saved txt' => 'MAC adresi başarıyla kaydedildi. Fakat değişiklikler sadece yeniden başlattıktan sonra veya yeniden bağlandıktan sonra yürürlüğe girecektir.',
+'mac address title' => 'MAC adresi atayın',
+'mac desc' => 'Burada red0 üzerindeki MAC adresini değiştirebilirsiniz. Adres onaltılık (0-9,a-f) bir tanımlama arasında olmalıdır.<br />Örneğin: 00-01-02-0e-b8-d6 veya 00:01:02:0e:b8:d6.',
+'mac filter' => 'MAC filtre',
+'mac new' => 'Yeni MAC adresi:',
+'mac1 new' => 'Yeni MAC adresi 1 (vdsl-inet):',
+'mac2 new' => 'Yeni MAC adresi 2 (vdsl-iptv):',
+'magic packet send to:' => 'Uyandırma paketi gönder:',
+'mailmethod' => 'Posta Yöntemi',
+'mailprogramm' => 'Posta Programı',
+'main page' => 'Ana sayfa',
+'manage ovpn' => '5. Tünel Yönetimi:',
+'manage printers' => 'yazıcıları yönet',
+'manage shares' => 'Paylaşım yönetimi',
+'manual' => 'El ile',
+'manual control and status' => 'El ile kontrol ve durum:',
+'manually' => 'El ile',
+'map to guest' => 'Ziyaretçi haritası',
+'march' => 'Mart',
+'marked' => 'İşaretli',
+'max bandwith' => 'En fazla bant genişliği',
+'max incoming size' => 'En fazla gelen boyut (KB):',
+'max lease time' => 'En fazla kira süresi (dakika):',
+'max outgoing size' => 'En fazla giden boyutu (KB):',
+'max reliability' => 'En fazla güvenilirlik',
+'max renewal time' => 'En fazla Yenileme Zamanı',
+'max retries not set' => 'En fazla deneme ayarlanmamış.',
+'max size' => 'En fazla nesne boyutu (KB):',
+'max throughput' => 'En fazla hacmi',
+'maximal' => 'En fazla',
+'maximum' => 'En fazla',
+'maximum retries' => 'En fazla yeniden deneme:',
+'may' => 'Mayıs',
+'mbmon display' => 'Görüntü',
+'mbmon fan' => 'fan hızı',
+'mbmon fan in' => 'fan hızı',
+'mbmon graphs' => 'mbmon Grafikleri',
+'mbmon label' => 'Etiket',
+'mbmon settings' => 'mbmon grafik ayarları',
+'mbmon temp' => 'sıcaklık',
+'mbmon temp in' => 'Sıcaklık',
+'mbmon value' => 'Değer',
+'mbmon volt' => 'voltaj',
+'meaning' => 'anlam',
+'media' => 'Medya',
+'media information' => 'Medya bilgisi',
+'medium' => 'Orta',
+'memory' => 'Bellek',
+'memory information' => 'Bellek bilgisi',
+'memory usage per' => 'bellek başına kullanım - ',
+'messages logging' => '/var/log/messages için günlük ayarları',
+'method' => 'Yöntem:',
+'min costs' => 'En az maliyet',
+'min delay' => 'En az gecikme',
+'min size' => 'En az nesne boyutu (KB):',
+'minimal' => 'En az',
+'minimum' => 'En az',
+'minute' => 'dakika',
+'minutes' => 'dakika',
+'misc-options' => 'Çeşitli seçenekler',
+'missing dat' => 'Şifreli arşiv bulunamadı',
+'missing gz' => 'Şifrelenmemiş arşiv bulunamadı',
+'mode' => 'Yöntem',
+'modem' => 'Modem',
+'modem configuration' => 'Modem yapılandırması',
+'modem on com1' => 'COM1 üzerindeki modem',
+'modem on com2' => 'COM2 üzerindeki modem',
+'modem on com3' => 'COM3 üzerindeki modem',
+'modem on com4' => 'COM4 üzerindeki modem',
+'modem on com5' => 'COM5 üzerindeki modem',
+'modem settings have errors' => 'Modem ayarları hatalı',
+'modem speaker on' => 'Modem üzerindeki hoparlör:',
+'modify' => 'Düzenle',
+'modulation' => 'Geçiş',
+'monday' => 'Pazartesi',
+'month' => 'Ay',
+'month-graph' => 'ay',
+'monthly firewallhits' => 'aylık güvenlik duvarı kaydı',
+'monthly start day bad' => 'Aylık başlangıç ​​günü doğru değil',
+'monthly traffic bad' => 'Aylık hacim doğru değil',
+'monthly volume' => 'Aylık hacim',
+'monthly volume start day' => 'Aylık dönemin ilk günü',
+'monthly volume start day short' => 'İlk gün',
+'months' => 'ay',
+'more' => 'Daha fazla',
+'most preferred' => 'En çok tercih edilen',
+'mount' => 'Bağla',
+'mounted on' => 'Bağlı',
+'mpfire' => 'IPFire için Media Player',
+'mpfire controls' => 'MPFire Kontrol',
+'mpfire playlist' => 'MPFire Çalma Listesi',
+'mpfire scanning' => 'Yeni dosyalar için tara',
+'mpfire search' => 'MPFire Ara',
+'mpfire songs' => 'MPFire şarkı listesi',
+'mpfire webradio' => 'MPFire Webradyo',
+'mtu QoS' => 'Bu genel MTU değiştirilemez. Sadece QoS için MTU ayarı yapılır.',
+'my new share' => 'Yeni paylaşımlarım',
+'name' => 'Ad',
+'name is invalid' => 'Geçersiz ad',
+'name must only contain characters' => 'Ad sadece karakter içermelidir.',
+'name too long' => 'Kullanıcının tam adı veya sistem ana bilgisayar adı çok uzun',
+'nat-traversal' => 'Nat Geçişi:',
+'needreboot' => 'Bir güncelleştirmeden sonra yeniden başlatmak gerekir',
+'net' => 'Ağ',
+'net address' => 'ağ adresi',
+'net config' => 'Ağ yapılandırma',
+'net config type' => 'ağ yapılandırması türü',
+'net config type help' => 'YEŞİL yerel ağ, KIRMIZI internet, MAVİ kablosuz ağ, TURUNCU açık bölge (dmz) ağıdır.',
+'net to net vpn' => 'Ağdan ağa sanal özel ağ',
+'net traffic newversion' => 'Yeni Ağ-Trafik sürümü var:',
+'net-traffic configuration' => 'Ağ-Trafik Yapılandırması',
+'netbios name' => 'Netbios adı',
+'netmask' => 'Ağ maskesi',
+'network' => 'Ağ',
+'network added' => 'Özel ağ eklendi',
+'network configuration' => 'Ağ Yapılandırması',
+'network internal' => 'Ağ (dahili)',
+'network options' => 'Ağ seçenekleri',
+'network other' => 'Ağ (diğer)',
+'network red' => 'Ağ (harici)',
+'network removed' => 'Özel ağ kaldırıldı',
+'network status information' => 'Ağ Durum Bilgisi',
+'network time' => 'Bir ağ zaman sunucusu kullanın:',
+'network time from' => 'Bir ağ zaman sunucusundan zamanı al',
+'network traffic graphs' => 'Ağ trafik grafikleri',
+'network traffic graphs external' => 'Ağ-Trafik grafikleri (harici)',
+'network traffic graphs internal' => 'Ağ-Trafik grafikleri (dahili)',
+'network traffic graphs others' => 'Ağ (diğer)',
+'network updated' => 'Özel ağ güncellendi',
+'networks settings' => 'Güvenlik Duvarı - Ağ Ayarları',
+'new optionsfw later' => 'Yaptığınız değişiklikler yeniden başlatıldıktan sonra aktif olacaktır',
+'new optionsfw must boot' => 'IPFire yeniden başlatmanız gerekir',
+'newer' => 'Daha yeni',
+'next' => 'sonraki',
+'no' => 'Hayır',
+'no alcatelusb firmware' => 'Alcatel USB yazılımı yok. Lütfen yükleyin.',
+'no cfg upload' => 'Hiçbir veri yüklenmedi',
+'no dhcp lease' => 'DHCP kira alınmamış',
+'no eciadsl synch.bin file' => 'ECI ADSL synch.bin dosyası yok. Lütfen yükleyin.',
+'no filter pass' => 'Olmayan filtre paketleri için standart sınıfı girin.',
+'no fritzdsl driver' => 'Fritz!DSL sürücüsü yok. Lütfen yükleyin.',
+'no hardware random number generator' => 'Bu sistemin entropi için kaynağı yok.',
+'no information available' => 'Herhangi bir bilgi bulunmamaktadır.',
+'no log selected' => 'Günlük seçilmedi',
+'no modem selected' => 'Modem seçilmedi',
+'no set selected' => 'Hiçbir ayar seçilmedi',
+'no time limit' => 'sınırsız zaman',
+'none found' => 'hiçbiri bulunamadı',
+'nonetworkname' => 'Ağ adı girilmedi',
+'noservicename' => 'Hizmet adı girilmedi',
+'not a valid ca certificate' => 'Geçerli bir CA sertifikası değil.',
+'not enough disk space' => 'Yeterli disk alanı yok',
+'not present' => 'Mevcut <b>değil</b>',
+'not running' => 'çalışmıyor',
+'not set' => 'ayarlanmamış',
+'notes' => 'Notlar',
+'notice' => 'Dikkat',
+'november' => 'Kasım',
+'ntp common settings' => 'Genel ayarlar',
+'ntp configuration' => 'NTP yapılandırması',
+'ntp must be enabled to have clients' => 'NTP istemciler için aktif olmalıdır.',
+'ntp server' => 'NTP Sunucusu',
+'ntp sync' => 'Eşitleme',
+'ntp syncro disabled' => 'NTP eşitlemesi devre dışı',
+'ntp syncro enabled' => 'NTP eşitlemesi aktif',
+'ntpd restarted' => 'ntpd yeniden başlat',
+'number' => 'Numara:',
+'o-no' => 'Pasif',
+'o-yes' => 'Aktif',
+'october' => 'Ekim',
+'off' => 'kapalı',
+'ok' => 'TAMAM',
+'older' => 'Eski',
+'on' => 'üstünde',
+'online help en' => 'Çevrimiçi yardım (ingilizce)',
+'only digits allowed in holdoff field' => 'Koruma süresi alanında sadece rakama izin verilir',
+'only digits allowed in max retries field' => 'En fazla yeniden deneme alanında sadece rakama izin verilir.',
+'only digits allowed in the idle timeout' => 'Boşta kalma zaman aşımı için sadece rakama izin verilir.',
+'only red' => 'Sadece KIRMIZI',
+'open to all' => 'TÜM harici erişim geçersiz',
+'openssl produced an error' => 'OpenSSL bir hata üretti',
+'openvpn client' => 'OpenVPN istemcisi',
+'openvpn default' => 'Varsayılan',
+'openvpn destination port used' => 'Bu hedef bağlantı noktası zaten başka bir OpenVPN sunucusu tarafından kullanılıyor.',
+'openvpn disabled' => 'DEVRE DIŞI',
+'openvpn enabled' => 'AKTİF',
+'openvpn fragment allowed with udp' => 'UDP kuralı kullanırken sadece parça kullanılmasına izin verilir.',
+'openvpn log' => 'OpenVPN Günlük',
+'openvpn mssfix allowed with udp' => 'UDP kuralı kullanırken sadece "mssfix" ile kullanılmasına izin verilir.',
+'openvpn network' => 'OpenVPN ağları',
+'openvpn prefix local subnet' => 'Önek gösterimi kullanımı yerel alt ağ için desteklenmez. Lütfen 255.255.255.0 gibi alt ağ maskeleri girin.',
+'openvpn prefix openvpn subnet' => 'Önek gösterimi kullanımı OpenVPN alt ağ için desteklenmez. Lütfen 255.255.255.0 gibi alt ağ maskeleri girin',
+'openvpn prefix remote subnet' => 'Önek gösterimi kullanımı uzak alt ağ için desteklenmez. Lütfen 255.255.255.0 gibi alt ağ maskeleri girin',
+'openvpn server' => 'OpenVPN sunucusu',
+'openvpn subnet is used' => 'Verilen ağ başka bir OpenVPN sunucusu tarafından kullanılır.',
+'optional at cmd' => 'İsteğe bağlı AT komutu',
+'optional data' => '3. İsteğe Bağlı Ayarlar:',
+'options' => 'Seçenekler',
+'options fw' => 'Güvenlik Duvarı Seçenekleri',
+'optionsfw portlist hint' => 'Bağlantı noktalarının listesi virgülle ayrılmış olması gerekir (örneğin 137,138). Bu kurala göre en fazla 15 bağlantı noktası numarası tanımlayabilirsiniz.',
+'optionsfw warning' => 'Bu seçenekleri değiştirmek güvenlik duvarının yeniden başlatılacağı anlamına gelir',
+'or' => 'veya',
+'orange' => 'TURUNCU',
+'organization cant be empty' => 'Kuruluş adı boş olamaz.',
+'organization name' => 'Kuruluş adı',
+'organization too long' => 'Kuruluş adı çok uzun. Kuruluş adı 60 karakterden çok olmamalıdır.',
+'original' => 'Orijinal',
+'os level' => 'OS seviyesi',
+'other' => 'Diğer',
+'other countries' => 'Diğer ülkelers',
+'other login script' => 'Diğer oturum açma komut dosyası',
+'otherip' => 'Diğer IP',
+'otherport' => 'Diğer bağlantı noktası',
+'our donors' => 'Destekçimiz',
+'out' => 'Dışarı',
+'outgoing' => 'giden',
+'outgoing firewall' => 'Giden güvenlik duvarı',
+'outgoing firewall access' => 'giden güvenlik duvarı bağlantısı',
+'outgoing firewall add ip group' => 'IP Adres Grubu Ekle',
+'outgoing firewall add mac group' => 'MAC Adres Grubu Ekle',
+'outgoing firewall edit ip group' => 'IP Adres Grubunu Düzenle',
+'outgoing firewall edit mac group' => 'MAC Adres Grubunu Düzenle',
+'outgoing firewall group error' => 'Aynı ada sahip bir grup var.',
+'outgoing firewall groups' => 'Güvenlik Duvarı Grupları',
+'outgoing firewall ip groups' => 'Giden Güvenlik Duvarı IP Adres Grupları',
+'outgoing firewall mac groups' => 'Giden Güvenlik Duvarı MAC Adres Grupları',
+'outgoing firewall mode0' => 'Bu yöntemin kullanılması ile tüm istemcilere herhangi bir kısıtlama olmadan internet erişimine izin verilecektir.',
+'outgoing firewall mode1' => 'Bu yöntemin kullanılması ile sadece belirlenen kurallara göre izin verilir.',
+'outgoing firewall mode2' => 'Bu yöntemin kullanılması ile tanımlanmış tüm bağlantılara izin verilir.',
+'outgoing firewall outgoing firewall reserved groupname' => 'Lütfen başka bir grup adı kullanın bu ad ayrılmıştır.',
+'outgoing firewall p2p allow' => 'p2p kuralına izin verildi',
+'outgoing firewall p2p deny' => 'p2p kuralı engellendi',
+'outgoing firewall p2p description 1' => 'Düğme',
+'outgoing firewall p2p description 2' => 'p2p kuralı veya izini anlamına gelir',
+'outgoing firewall p2p description 3' => 'p2p kuralı engellendi anlamına gelir',
+'outgoing firewall reset' => 'Tümünü sıfırla',
+'outgoing firewall view group' => 'Grup bilgileri',
+'outgoing firewall warning' => 'Kaynak IP veya MAC seçildiğinde bunlar yok sayılır',
+'outgoing traffic in bytes per second' => 'giden trafik',
+'override mtu' => 'Varsayılan MTU seçeneğini geçersiz kıl',
+'ovpn' => 'OpenVPN',
+'ovpn con stat' => 'OpenVPN Bağlantı İstatistiği',
+'ovpn config' => 'OVPN-Yapılandırması',
+'ovpn device' => 'OpenVPN aygıtı:',
+'ovpn dl' => 'OVPN-Yapılandırması İndir',
+'ovpn errmsg green already pushed' => 'Yeşil ağ için her zaman bir yol ayarla',
+'ovpn errmsg invalid ip or mask' => 'Geçersiz ağ adresi veya alt ağ maskesi',
+'ovpn log' => 'OVPN-Günlük',
+'ovpn mgmt in root range' => 'Bağlantı noktası numarası 1024 ya da daha yüksek bir numara olmalıdır.',
+'ovpn mtu-disc' => 'MTU algılama',
+'ovpn mtu-disc and mtu not 1500' => 'MTU algılama 1500 MTU olmasını gerektirir.',
+'ovpn mtu-disc maybe' => 'İsteğe bağlı',
+'ovpn mtu-disc no' => 'Asla',
+'ovpn mtu-disc off' => 'Devre dışı',
+'ovpn mtu-disc with mssfix or fragment' => 'MTU algılama mssfix veya parçası ile kullanılamaz.',
+'ovpn mtu-disc yes' => 'Zorunlu',
+'ovpn no connections' => 'Hiçbir aktif OpenVPN bağlantısı yok',
+'ovpn on blue' => 'MAVİ üzerindeki OpenVPN',
+'ovpn on orange' => 'TURUNCU üzerindeki OpenVPN',
+'ovpn on red' => 'KIRMIZI üzerindeki OpenVPN',
+'ovpn port in root range' => '1024 ya da daha yüksek bir bağlantı noktası numarası gereklidir..',
+'ovpn routes push' => 'Yollar (her satırda bir tane) örneğin 192.168.10.0/255.255.255.0 192.168.20.0/24',
+'ovpn routes push options' => 'Yol baskı seçenekleri',
+'ovpn server status' => 'Güncel OpenVPN sunucu durumu:',
+'ovpn subnet' => 'OpenVPN alt ağı (örneğin 10.0.10.0/255.255.255.0)',
+'ovpn subnet is invalid' => 'Geçersiz OpenVPN alt ağı.',
+'ovpn subnet overlap' => 'OpenVPN alt ağı ile örtüşenler: ',
+'ovpn_fastio' => 'Hızlı-IO',
+'ovpn_fragment' => 'Parça boyutu',
+'ovpn_mssfix' => 'MSSFIX Boyutu',
+'ovpn_mtudisc' => 'MTU-Keşfi',
+'ovpn_processprio' => 'İşlem Önceliği',
+'ovpn_processprioD' => 'Derinlik',
+'ovpn_processprioED' => 'Oldukça derin',
+'ovpn_processprioEH' => 'Çok yüksek',
+'ovpn_processprioEN' => 'Normalden daha yüksek',
+'ovpn_processprioH' => 'Yüksek',
+'ovpn_processprioLN' => 'Normalden daha derin',
+'ovpn_processprioN' => 'Normal',
+'ovpn_processprioVD' => 'Çok derin',
+'ovpn_processprioVH' => 'Çok yüksek',
+'ovpnstatus log' => 'OVPN-Durum-Günlük',
+'ovpnsys log' => 'OVPN-Durum-Günlük',
+'p2p block' => 'P2P Ağları',
+'p2p block save notice' => 'Yaptığınız değişiklikleri uygulamak için güvenlik duvarı kural ayarlarını lütfen yeniden yükleyin.',
+'package failed to install' => 'Paket yüklenemedi.',
+'pagerefresh' => 'Sayfa yenileniyor. Lütfen bekleyin.',
+'pakfire accept all' => 'Tüm paketleri yüklemek istiyor musunuz?',
+'pakfire ago' => 'önce yapıldı.',
+'pakfire available addons' => 'Mevcut eklentiler:',
+'pakfire configuration' => 'Pakfire yapılandırması',
+'pakfire core update auto' => 'Otomatik olarak çekirdek ve eklenti güncelleştirmelerini yükle:',
+'pakfire core update level' => 'Çekirdek-Güncelleme-Seviyesi',
+'pakfire health check' => 'Yansımanın ulaşılabilir olup olmadığını kontrol et (ping):',
+'pakfire install description' => 'Aşağıdaki listeden bir veya daha fazla öğeyi seçtikten sonra<br />eklemek için artı simgesine tıklayınız.',
+'pakfire install package' => 'Aşağıdaki paketleri yüklemek istediniz: ',
+'pakfire installed addons' => 'Kurulu eklentiler:',
+'pakfire last core list update' => 'Son çekirdek listesi güncellemesi',
+'pakfire last package update' => 'Son paket listesi güncellemesi',
+'pakfire last serverlist update' => 'Son sunucu listesi güncellemesi',
+'pakfire last update' => 'Son güncelleme',
+'pakfire possible dependency' => ' Yüklenemesi gereken paketlerin yüklenebilmesi için buradaki paketlere ihtiyaç duyulabilir.',
+'pakfire register' => 'Pakfire sunucusuna kayıt:',
+'pakfire system state' => 'Sistem durumu',
+'pakfire uninstall description' => 'Aşağıdaki listeden bir veya daha fazla öğeyi seçtikten sonra<br />kaldırmak için eksi simgesine tıklayınız.',
+'pakfire uninstall package' => 'Aşağıdaki paketleri kaldırmak istiyorum: ',
+'pakfire update daily' => 'Günlük güncellemeleri ara:',
+'pakfire updates' => 'Mevcut Güncelleme:',
+'pakfire working' => 'Pakfire çalışıyor ... Tüm işlemler başarıyla tamamlanana kadar bekleyin.',
+'pap or chap' => 'PAP veya CHAP',
+'parentclass' => 'Ana Sınıf',
+'parentclass add' => 'Ana sınıf ekle',
+'password' => 'Parola:',
+'password contains illegal characters' => 'Parola geçersiz karakterler içeriyor.',
+'password crypting key' => 'Anahtar parolası şifreleme',
+'password not set' => 'Parola ayarlanmamış.',
+'password too short' => 'Parola çok kısa.',
+'passwords do not match' => 'Parolalar eşleşmiyor.',
+'passwords must be at least 6 characters in length' => 'Parolalar en az 6 karakter olmalıdır',
+'path to directory' => 'paylaşım yolu',
+'pc' => 'İş istasyonu',
+'pc add' => 'İş istasyonu ekle',
+'pdc options' => 'PDC seçenekleri',
+'percentage' => 'Yüzde',
+'persistent' => 'Bellek ekranı',
+'pfs yes no' => 'Kusursuz İletim Gizliliği (PFS)',
+'phase1 group' => 'Aşama 1 Grubu',
+'phonebook entry' => 'Telefon rehber girişi:',
+'ping disabled' => 'Ping yanıtı devre dışı',
+'pkcs12 file password' => 'PKCS12 dosya parolası',
+'play' => 'Oynat',
+'polfile' => 'Pol dosyası',
+'policy' => 'Kural',
+'port' => 'Bağlantı noktası',
+'port forwarding configuration' => 'Bağlantı noktası yönlendirme ayarları',
+'ports' => 'Bağlantı noktaları',
+'portscans' => 'bağlantı noktası taramaları',
+'pots' => 'Analog klasik çizgi',
+'ppp setup' => 'PPP kurulumu',
+'pppoe' => 'PPPoE',
+'pppoe settings' => 'Ek PPPoE ayarları:',
+'pptp settings' => 'Ek PPTP ayarları:',
+'pre-shared key is too short' => 'Ön paylaşımlı anahtar çok kısa.',
+'prefered master' => 'Tercih edilen yönetici',
+'present' => 'Mevcut',
+'prev' => 'önceki',
+'primary dns' => 'Birincil DNS:',
+'primary ntp server' => 'Birincil NTP sunucusu',
+'primary wins server address' => 'Birincil WINS sunucu adresi',
+'printcap name' => 'Yazıcı kapak adı',
+'printer' => 'Yazıcı',
+'printername' => 'Yazıcı adı',
+'printing' => 'Yazdırılıyor',
+'printing options' => 'yazdırma seçenekleri',
+'priority' => 'Öncelik',
+'processes' => 'İşlemler',
+'profile' => 'Profil',
+'profile deleted' => 'Silinen profiller: ',
+'profile has errors' => 'Profil hataları',
+'profile made current' => 'Geçerli profiller: ',
+'profile name' => 'Profil adı:',
+'profile name not given' => 'Bu profil adı verilemez.',
+'profile saved' => 'Kaydedilen profiller: ',
+'profiles' => 'Profiller:',
+'proto' => 'Kural',
+'protocol' => 'Kural ',
+'proxy' => 'Vekil sunucu',
+'proxy access graphs' => 'Vekil sunucu erişim grafiği',
+'proxy admin password' => 'Önbellek yönetici parolası',
+'proxy cachemgr' => 'Önbellek yöneticisini aktifleştir',
+'proxy errmsg filedescriptors' => 'Dosya tanimlayıcı sayısı yanlış miktarda',
+'proxy filedescriptors' => 'Dosya tanımlayıcı sayısı miktarı',
+'proxy log viewer' => 'Vekil sunucu günlük görüntüleyici',
+'proxy logs' => 'Vekil Sunucu Günlükleri',
+'proxy no proxy extend' => 'veya temsil edilmeyen hedef listesini belirtin',
+'proxy no proxy local' => 'YEŞİL/MAVİ ağlardaki yerel vekil sunucuya izin verme',
+'proxy port' => 'Vekil Sunucu Bağlantı Noktası',
+'proxy reconfigure' => 'Kaydet ve Güncelle',
+'proxy reports' => 'Vekil Sunucu Raporları',
+'proxy reports daily' => 'Günlük rapor',
+'proxy reports monthly' => 'Aylık rapor',
+'proxy reports today' => 'Bugün',
+'proxy reports weekly' => 'Haftalık rapor',
+'psk' => 'PSK',
+'pulse' => 'Darbe',
+'pulse dial' => 'Darbeli arama:',
+'qos add subclass' => 'Alt sınıf ekle',
+'qos enter bandwidths' => 'Aşağı ve yukarı bant genişliği girmeniz gerekir!',
+'qos graphs' => 'Qos Grafiği',
+'qos warning' => 'Kuralın <strong>kaydedilmesi</strong> gerekir. Aksi takdirde silinecektir!',
+'quick control' => 'Hızlı Kontrol',
+'quick playlist' => 'Hızlı Oynatıcı',
+'ram' => 'RAM',
+'random number generator daemon' => 'Rastgele sayı oluşturucu programı',
+'read bytes' => 'okunan bayt',
+'read list' => 'salt okunur bilgisayarlar ile liste',
+'real address' => 'Gerçek Adres',
+'reboot' => 'Yeniden Başlat',
+'reboot ask' => 'Yeniden Başlat?',
+'reboot question' => 'Yeniden başlatma ve kapatma için ek sorgu',
+'reboot schedule' => 'IPFire\'ı yeniden başlatma programı',
+'reboot sure' => 'Yeniden başlatmak istediğinize emin misiniz?',
+'rebooting' => 'Yeniden Başlat',
+'rebooting ipfire' => 'IPFire\'ı Yeniden Başlat',
+'reconnect' => 'Yeniden Bağlan',
+'reconnection' => 'Yeniden bağlan',
+'red' => 'İnternet',
+'red1' => 'KIRMIZI',
+'references' => 'Referanslar',
+'refresh' => 'Yenile',
+'refresh index page while connected' => 'Index.cgi sayfası bağlandığında yenile',
+'refresh update list' => 'Güncelleme listesini yenile',
+'registered user rules' => 'Kayıtlı kullanıcılar için kaynak güvenlik duvarı VRT kuralları',
+'released' => 'Çıkış',
+'reload' => 'Yeniden yükle',
+'remark' => 'Açıklama',
+'remark title' => 'Açıklama:',
+'remote access' => 'Uzak erişim',
+'remote announce' => 'Uzak duyuru',
+'remote browse sync' => 'Uzak tarayıcı eşitlemesi',
+'remote host/ip' => 'Uzak ana bilgisayar/IP',
+'remote logging' => 'Uzak günlük',
+'remote subnet' => 'Uzak alt ağ:',
+'remote subnet is invalid' => 'Geçersiz uzak alt ağ.',
+'removable device advice' => 'Bir aygıt takıp yenileyin. Aygıtı kullanmadan önce seçip bağlayın. Çıkarmadan önce de ayırın.',
+'remove' => 'Kaldır',
+'remove ca certificate' => 'CA sertifikasını kaldır',
+'remove x509' => 'X509 Kaldır',
+'repeat' => 'Tekrar',
+'reportfile' => 'Dosya raporu',
+'reportlevel' => 'Seviye raporu',
+'request' => 'Talep',
+'requested data' => '1. Bağlantı Ayarları:',
+'reserved dst port' => 'IPFire için ayrılmış hedef bağlantı noktası numarası:',
+'reserved src port' => 'IPFire için ayrılmış kaynak bağlantı noktası numarası:',
+'reset' => 'Sıfırla',
+'reset shares' => 'Paylaşımı sıfırla',
+'resetglobals' => 'Genel ayarları sıfırla',
+'resetpolicy' => 'Varsayılan kuralları sıfırla',
+'resetshares' => 'Paylaşım sıfırlansın mı?',
+'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections' => 'VPN yapılandırma sıfırlaması root CA, ev sahibi sertifikası ve sertifika tabanlı bağlantıları kaldıracaktır.',
+'restart' => 'Yeniden Başlat',
+'restart ovpn server' => 'OpenVPN sunucusunu yeniden başlat',
+'restore' => 'Geri Yükle',
+'restore defaults' => 'Varsayılanı Geri Yükle',
+'restore hardware settings' => 'Donanım ayarlarını geri yükle',
+'restore settings' => 'Ayarları sıfırla',
+'reverse sort' => 'Ters kronolojik sıralama',
+'root' => 'Root',
+'root certificate' => 'Root sertifika',
+'root path' => 'Root yolu',
+'root user password' => 'Root parolası',
+'route subnet is invalid' => 'Alt ağda geçersiz ek basma yolu',
+'router ip' => 'Yönlendirici IP adresi:',
+'routing table entries' => 'Yönlendirici tablo girdileri:',
+'rsvd dst port overlap' => 'IPFire için ayrılmış bağlantı noktası ile örtüşen hedef bağlantı noktası aralığı:',
+'rsvd src port overlap' => 'IPFire için ayrılmış bağlantı noktası ile örtüşen kaynak bağlantı noktası aralığı:',
+'rules already up to date' => 'Kurallar zaten yüklenmiş.',
+'running' => 'ÇALIŞIYOR',
+'safe removal of umounted device' => 'Bağlantısı kesilen aygıtı güvenli bir şekilde kaldırabilirsiniz',
+'samba' => 'Samba',
+'samba status' => 'Samba durumu',
+'saturday' => 'Cumartesi',
+'save' => 'Kaydet',
+'save config' => 'Ayarları kaydet',
+'save error' => 'Yapılandırma arşiv dosyası kaydedilemiyor.',
+'save settings' => 'Ayarları kaydet',
+'save-adv-options' => 'Gelişmiş Seçenekleri Kaydet',
+'script name' => 'Komut adı:',
+'secondary dns' => 'İkincil DNS:',
+'secondary ntp server' => 'İkincil NTP sunucusu',
+'secondary wins server address' => 'İkincil WINS sunucu adresi',
+'seconds' => 'Saniye',
+'section' => 'Bölüm',
+'secure shell server' => 'Güvenli Kabuk Sunucusu',
+'security' => 'Güvenlik',
+'security options' => 'Güvenlik seçenekleri',
+'select' => 'Seç',
+'select dest net' => 'Bir ağ hedefi seçin.',
+'select media' => 'Ortamı seç <br />(çıkartılabilir ortam için sadece FAT desteklenir)',
+'select source net' => 'Kaynak ağı seçin. Eğer yapılandırılmamış TURUNCU veya MAVİ ağ varsa açık bölgeye gerek yoktur',
+'selecttraffic' => 'Genel bakışkullanımını seçin:',
+'send cr' => 'ISP Satır Başına Alma gerektirir:',
+'send email notification' => 'E-posta gönderme bildirimi aktif',
+'send test mail' => 'Test e-posta gönder',
+'september' => 'Eylül',
+'serial' => 'Dizi',
+'server reserved' => 'Bağlantı adı sunucusu ayrılmıştır, izin verilmez.',
+'server restart' => 'OpenVPN sunucu çalışırken herhangi bir değişikliği kaydetmek mümkün değildir.',
+'server string' => 'Sunucu dizisi',
+'service' => 'Hizmet',
+'service added' => 'Özel ağ hizmeti eklendi',
+'service name' => 'Hizmet adı:',
+'service removed' => 'Özel ağ hizmeti kaldırıldı',
+'service updated' => 'Özel ağ hizmeti güncellendi',
+'servicename' => 'Hizmet Adı',
+'services' => 'Hizmetler',
+'services settings' => 'Güvenlik Duvarı - Hizmet Ayarları',
+'set' => 'Ayarlı',
+'set time now' => 'Zamanı Şimdi Ayarla',
+'set time now help' => 'Herhangi bir zamanda eşitleme etkinliği sırasında (hatta yinelenen bir program kullanılırken) <i>Zamanı şimdi ayarla</i> düğmesine basın. Bir eşitleme olmadan önce beş dakika veya daha fazla beklemek zorunda olduğunuzu unutmayın.',
+'settings' => 'Ayarlar',
+'shaping add options' => 'Hizmet ekle',
+'shaping list options' => 'Trafik şekillendirme hizmetleri',
+'shared' => 'paylaşılan',
+'sharename' => 'Paylaşım adı',
+'shares' => 'Paylaşımlar',
+'show ajax speedmeter in footer' => 'Ajax hız sayacını göster',
+'show areas' => 'alanları göster',
+'show ca certificate' => 'CA sertifikalarını göster',
+'show certificate' => 'Sertifika göster',
+'show crl' => 'Sertifika İptal Listesini Göster',
+'show host certificate' => 'Ana bilgisayar sertifikalarını göster',
+'show last x lines' => 'Son x satırlarını göster',
+'show lines' => 'Satırları göster',
+'show root certificate' => 'Root sertifikasını göster',
+'show share options' => 'Paylaşım seçeneklerini göster',
+'shuffle' => 'Karma',
+'shutdown' => 'Kapat',
+'shutdown ask' => 'Kapat?',
+'shutdown control' => 'Kontrollü kapat',
+'shutdown sure' => 'Kapatmak istediğinize emin misiniz?',
+'shutdown2' => 'Kapat:',
+'shutting down' => 'Şimdi kapatılıyor',
+'shutting down ipfire' => 'IPFire şimdi kapatılıyor',
+'since' => 'since',
+'sitekey' => 'Site anahtarı',
+'sitekeyfile' => 'Site anahtar dosyası',
+'size' => 'Boyut',
+'smart information' => 'S.M.A.R.T. Bilgisi',
+'smartwarn1' => 'Aygıt:',
+'smartwarn2' => 'S.M.A.R.T. hata raporları',
+'smbreload' => 'Samba\'yı yeniden yükle',
+'smbrestart' => 'Samba\'yı yeniden başlat',
+'smbstart' => 'Samba\'yı başlat',
+'smbstop' => 'Samba\'yı durdur',
+'smtphost' => 'SMTP ana bilgisayarı',
+'smtpport' => 'SMTP bağlantı noktası numarası',
+'snat new source ip address' => 'Yeni kaynak IP adresi',
+'snort hits' => 'Saldırı kuralları için toplam aktif sayı',
+'snort working' => 'Snort çalışıyor ... Tüm işlemler başarıyla tamamlanana kadar bekleyin.',
+'socket options' => 'Soket seçenekleri',
+'sort ascending' => 'Artan sıralama',
+'sort descending' => 'Azalan sıralama',
+'sound' => 'Ses',
+'source' => 'Kaynak',
+'source ip' => 'Kaynak IP',
+'source ip and port' => 'Kaynak IP: Bağlantı noktası numarası',
+'source ip bad' => 'Geçersiz bir IP adresi ya da ağ adresi.',
+'source ip in use' => 'Kullanılan kaynak IP:',
+'source ip or net' => 'Kaynak IP veya Ağ',
+'source net' => 'Kaynak Ağ',
+'source network' => 'Kaynak IP veya ağ ("TÜMÜ" için boş):',
+'source port' => 'Kaynak bağlantı noktası',
+'source port in use' => 'Kullanılan kaynak bağlantı noktası:',
+'source port numbers' => 'Kaynak bağlantı noktası geçerli bir bağlantı noktası numarası ya da bağlantı noktası numarası aralığı olmalıdır.',
+'source port overlaps' => 'Kaynak bağlantı noktası aralığı mevcut bağlantı noktası aralığı ile çakışıyor.',
+'speaker off' => 'Hoparlörü kapat:',
+'speaker on' => 'Hoparlorü aç:',
+'squid extension methods' => '<tt>Uzantı_Yöntemleri</tt> listesi',
+'squid extension methods invalid' => 'Uzantı Yöntemi listesi sadece harf, rakam, büyük harf ve boşluk içerebilir.',
+'squid fix cache' => 'Bakım belleği',
+'src port' => 'Src bağlantı noktası numarası',
+'srcprt range overlaps' => 'Kaynak bağlantı noktası aralığı önceden tanımlanmış bir bağlantı noktası ile çakışıyor.',
+'srcprt within existing' => 'Kaynak bağlantı noktası önceden tanımlanmış bağlantı noktası aralığı içinde.',
+'ssdmz pinholes' => 'Açık Bölge (DMZ)',
+'ssh' => 'SSH',
+'ssh access' => 'SSH Erişimi',
+'ssh access tip' => 'IPFire SSH varsayılan bağlantı noktası olarak 222 kullanmıyor!',
+'ssh fingerprint' => 'Parmak izi',
+'ssh host keys' => 'SSH sunucu anahtarları',
+'ssh is disabled' => 'SSH devre dışı bırakıldı.  Durduruluyor.',
+'ssh is enabled' => 'SSH aktifleştirildi.  Yeniden başlatılıyor.',
+'ssh key' => 'Anahtar',
+'ssh key size' => 'Boyut (bits)',
+'ssh keys' => 'Açık anahtar tabanlı kimlik doğrulamasına izin ver',
+'ssh no auth' => 'Herhangi bir kimlik doğrulama yöntem izni yok. Bu girişinizi durdurur',
+'ssh passwords' => 'Parola tabanlı kimlik doğrulamasına izin ver',
+'ssh port' => 'SSH bağlantı noktasını 22 olarak ayarla (varsayılan 222)',
+'ssh portfw' => 'TCP yönlendirmesine izin ver',
+'ssh tempstart15' => '15 dakika içinde geri planda SSH durudur',
+'ssh tempstart30' => '30 dakika içinde geri planda SSH durudur',
+'ssh1 disabled' => 'SSHv1 devre dışı, bir sürüm 2 istemcisi gerekecektir.',
+'ssh1 enabled' => 'SSHv1 aktifleştirildiğinde, eski istemciler desteklenecektir.',
+'ssh1 support' => 'SSH kuralı sürüm 1 desteği (sadece eski istemciler için gerekli)',
+'ssnetwork status' => 'Ağ Durumu',
+'sspasswords' => 'Parola',
+'ssport forwarding' => 'Bağlantı Noktası Yönlendirme',
+'ssproxy graphs' => 'Vekil Sunucu Grafikleri',
+'sssystem status' => 'Sistem Durumu',
+'sstraffic' => 'Ağ-Trafiği',
+'sstraffic graphs' => 'Trafik Grafiği',
+'standard login script' => 'Standart oturum açma komut dosyası',
+'start' => 'Başlat',
+'start address' => 'Başlangıç adresi:',
+'start ovpn server' => 'OpenVPN Sunucusunu Başlat',
+'state or province' => 'İlçe',
+'static ip' => 'Statik IP',
+'static routes' => 'Statik Yollar',
+'status' => 'Durum',
+'status information' => 'Durum bilgisi',
+'status ovpn' => 'OpenVPN',
+'std classes' => 'Standart sınıflar',
+'stop' => 'Durdur',
+'stop ovpn server' => 'OpenVPN Sunucusunu Durdur',
+'stopped' => 'ÇALIŞMIYOR',
+'subject' => 'Konu',
+'subject test' => 'Test e-posta',
+'subject warn' => 'Uyarı - uyarı düzeyine ulaştı',
+'subnet' => 'Alt ağ',
+'subnet is invalid' => 'Geçersiz ağ maskesi',
+'subscripted user rules' => 'Abonelik ile kaynak güvenlik duvarı VRT kuralları',
+'successfully refreshed updates list' => 'Başarıyla güncellemeler listesi yenilendi.',
+'summaries kept' => 'Günlük özetlerini tut:',
+'sunday' => 'Pazar',
+'support donation' => 'Lütfen bağışta bulunarak IPFire projesine destek olun',
+'swap' => 'takas alanı',
+'swap usage per' => 'takas alanı kullanımı - ',
+'system' => 'Sistem',
+'system graphs' => 'Sistem Grafikleri',
+'system has hwrng' => 'Bu sistem donanımsal rastgele sayı üreticisine sahiptir.',
+'system has rdrand' => 'Bu sistemde Intel(R) RDRAND için destek vardır.',
+'system information' => 'Sistem Bilgisi',
+'system log viewer' => 'Sistem Günlük Görüntüleyicisi',
+'system logs' => 'Sistem Günlükleri',
+'system status information' => 'Sistem Durum Bilgisi',
+'telephone not set' => 'Telefon ayarlanmamış.',
+'template' => 'Ön Ayar',
+'template warning' => 'QoS kurmak için iki seçeneğiniz vardır. İlk olarak kaydet düğmesine basıp kendi sınıf ve kurallarınızı oluşturabilirsiniz. İkinci olarak ise ön ayar düğmesine basıp sınıf ve kurallar için bir şablonun kurulmasını sağlayın. ',
+'test' => 'test',
+'test email could not be sent' => 'Test e-posta gönderilemedi',
+'test email was sent' => 'Test e-posta başarıyla gönderildi.',
+'the following update was successfully installed' => 'Aşağıdaki güncelleştirmeler başarıyla yüklendi',
+'the statistics were last updated at' => 'İstatistikler güncellendi',
+'theme' => 'Tema',
+'there are updates' => 'Sisteminiz için kullanılabilir güncelleştirmeler var. Daha fazla bilgi için "güncelleme" bölümüne gidin.',
+'there are updates available' => 'Sisteminiz için kullanılabilir güncelleştirmeler var. Kesinlikle en kısa zamanda bunları yüklemeniz gerekir.',
+'there was no file upload' => 'Hiçbir dosya yüklenemedi.',
+'this feature has been sponsored by' => 'Bu özelliklerin destekçisi',
+'this field may be blank' => 'Bu alan boş kalabilir.',
+'this is not a valid archive' => 'Bu, geçerli bir arşiv değil.',
+'this is not an authorised update' => 'Bu yetkili bir güncelleştirme değil.',
+'this months volume' => 'Bu ayki hacim',
+'this update is already installed' => 'Bu güncelleştirme zaten yüklü.',
+'this weeks volume' => 'Bu haftaki hacim',
+'thursday' => 'Perşembe',
+'time' => 'Zaman',
+'time date manually reset' => 'Zamanı/Tarihi elle sıfırlayın.',
+'time server' => 'Zaman Sunucusu',
+'timeout must be a number' => 'Zaman aşımı bir sayı olmalıdır.',
+'title' => 'Başlık',
+'to' => 'Bitiş',
+'to email adr' => 'Kime e-posta adresi',
+'to install an update' => 'Bir güncelleme dosyası yüklemek için aşağıdaki .tgz.gpg dosyasını yükleyin:',
+'to warn email bad' => 'Kime e-posta adresi geçerli değil',
+'toggle' => 'durudur/devamet',
+'toggle enable disable' => 'Aktif veya Pasif',
+'tone' => 'Ses',
+'tone dial' => 'Sesli çevirme:',
+'too long 80 char max' => ' çok uzun, izin verilen en fazla 80 karakterdir',
+'tor' => 'Tor',
+'tor 0 = disabled' => '0 = kapalı',
+'tor accounting' => 'Hesap',
+'tor accounting bytes' => 'Trafik (okuma/yazma)',
+'tor accounting bytes left' => 'left',
+'tor accounting interval' => 'Aralık (UTC)',
+'tor accounting limit' => 'Hesap sınırı (MB)',
+'tor accounting period' => 'Hesap dönemi',
+'tor accounting period daily' => 'günlük',
+'tor accounting period monthly' => 'aylık',
+'tor accounting period weekly' => 'haftalık',
+'tor acls' => 'Erişim kontrolü',
+'tor allowed subnets' => 'İzin verilen alt ağlar (her satırda bir tane)',
+'tor bandwidth burst' => 'En büyük ayırma',
+'tor bandwidth rate' => 'En büyük oran',
+'tor bandwidth settings' => 'Bant genişliği ayarları',
+'tor bandwidth unlimited' => 'sınırsız',
+'tor bridge enabled' => 'Tor köprüsünü aktifleştir',
+'tor common settings' => 'Genel ayarlar',
+'tor configuration' => 'Tor yapılandırması',
+'tor connected relays' => 'Bağlı aktarımlar',
+'tor contact info' => 'İletişim bilgileri',
+'tor daemon' => 'Artalan süreci',
+'tor directory port' => 'Dizin bağlantı noktası',
+'tor enabled' => 'Tor aktif',
+'tor errmsg invalid accounting limit' => 'Geçersiz hesap sınırı',
+'tor errmsg invalid directory port' => 'Geçersiz dizin bağlantı noktası',
+'tor errmsg invalid ip or mask' => 'Geçersiz IP alt ağı',
+'tor errmsg invalid node id' => 'Geçersiz düğüm kimliği (ID)',
+'tor errmsg invalid relay address' => 'Geçersiz aktarma adresi',
+'tor errmsg invalid relay name' => 'Geçersiz aktarma takma adı',
+'tor errmsg invalid relay port' => 'Geçersiz aktarma bağlantı noktası',
+'tor errmsg invalid socks port' => 'Geçersiz SOCKS bağlantı noktası',
+'tor exit country' => 'Ülçe çıkışı',
+'tor exit country any' => 'Herhangi bir ülke',
+'tor exit nodes' => 'Çıkış düğümleri',
+'tor relay address' => 'Aktarma adresleri',
+'tor relay configuration' => 'Tor aktarma yapılandırması',
+'tor relay enabled' => 'Tor aktarma aktif',
+'tor relay external address' => 'Aktarım dış adresi',
+'tor relay fingerprint' => 'Aktarım parmak izi',
+'tor relay mode' => 'Aktarım biçimi',
+'tor relay mode bridge' => 'Köprü',
+'tor relay mode exit' => 'Çıkış-Düğümü',
+'tor relay mode private bridge' => 'Özel köprü',
+'tor relay mode relay' => 'Sadece aktarım',
+'tor relay nickname' => 'Aktarım takma adı',
+'tor relay port' => 'Aktarım bağlantı noktası',
+'tor service' => 'Tor servisi',
+'tor socks port' => 'SOCKS bağlantı noktası',
+'tor stats' => 'İstatistik',
+'tor traffic limit hard' => 'Trafik sınırına ulaşıldı.',
+'tor traffic limit soft' => 'Trafik sınırına neredeyse ulaşıldı. Yeni herhangi bir bağlantı kabul edilmiyor.',
+'tor traffic read written' => 'Toplam tarfik (okuma/yazma)',
+'tor use exit nodes' => 'Sadece bu çıkış düğümlerini kullanın (her satıra bir tane)',
+'total connection time' => 'Toplam bağlantı süresi',
+'total hits for log section' => 'Günlük bölümü için toplam kayıt',
+'traffic back' => 'Geri',
+'traffic calc time' => 'Hesaplama zamanı',
+'traffic calc time bad' => 'Hesaplama zamanı doğru değil',
+'traffic info messages' => 'Bilgi mesajı',
+'traffic monitor' => 'Trafik İzleme',
+'traffic on' => 'Trafik',
+'traffic shaping' => 'Trafik Paylaşımı',
+'traffic shaping settings' => 'Trafik Paylaşım Ayarları',
+'traffic warn level bad' => 'Uyarı düzeyi doğru değil',
+'trafficblue' => 'WLAN',
+'trafficdate' => 'Tarih',
+'trafficfrom' => 'From',
+'trafficgreen' => 'Dahili ağ',
+'trafficin' => 'Giriş',
+'trafficorange' => 'DMZ',
+'trafficout' => 'Çıkış',
+'trafficred' => 'İnternet',
+'traffics' => 'Genel kullanım bakışı:',
+'trafficsum' => 'Toplam',
+'trafficto' => '-',
+'transfer limits' => 'Transfer limitleri',
+'transparent on' => 'Şeffaf',
+'tripwire' => 'Tetikleyici',
+'tripwire cronjob' => 'Zamanlanmış iş tetikleyicisi',
+'tripwire functions' => 'Tetikleyiciyi fonksiyonları',
+'tripwire reports' => 'Tetikleyiciyi raporları',
+'tripwireoperating' => 'Süreci başlatılmıştır. Bu işlem birkaç dakika sürebilir, işlem bittikten sonra pencere otomatik olarak yenilenir lütfen bekleyin.',
+'tripwirewarningdatabase' => 'UYARI - Veritabanınız son rapor verileri ile güncellenecektir. Herhangi bir yetkisiz değişikliğini rapor edin. Bundan dolayı yerel-anahtar gereklidir.',
+'tripwirewarningkeys' => 'UYARI - Geşerli anahtar silinecektir. Bu durum yapılandırma ve veritabanını yeniden oluşturacaktır.',
+'tripwirewarningpolicy' => 'UYARI - Kurallar oluşturulduktan sonra veri tabanı yeniden oluşturulacak. Bu nedenle site ve yerel anahtara ihtiyaç vardır.',
+'tuesday' => 'Salı',
+'type' => 'Tür',
+'umount' => 'Ayır',
+'umount removable media before to unplug' => 'Taşınabilir aygıtı çıkartmadan önce <b>Ayır</b> düğmesi ile sistemden ayırın',
+'unable to alter profiles while red is active' => 'KIRMIZI aktifken profil değiştirilemez.',
+'unable to contact' => 'Bağlantı Kurulamadı',
+'unencrypted' => 'Şifresiz',
+'uninstall' => 'Kaldır',
+'unix charset' => 'UNIX karakterleri',
+'unix group' => ' UNIX kullanıcı grubu',
+'unix password sync' => 'Unix Parola Eşitleme',
+'unix shell' => 'UNIX kabuğu',
+'unknown' => 'BİLİNMEYEN',
+'unnamed' => 'Adsız',
+'update' => 'Güncelle',
+'update accelerator' => 'Güncelleme Hızlandırıcı',
+'update time' => 'Zamanı güncelleyin:',
+'update transcript' => 'Transkript güncelleme',
+'updatedatabase' => 'Son rapor ile veritabanı güncelleme',
+'updates' => 'Güncellemeler',
+'updates installed' => 'Kural kümelerini güncelleştirme',
+'updates is old1' => 'Güncelleme dosyanız ',
+'updates is old2' => 'eski. <b>Sistem>Güncellemeler</b> sayfasından güncellemenizi yapmalısınız.',
+'updxlrtr 3 months' => 'üç ay',
+'updxlrtr 6 months' => 'altı ay',
+'updxlrtr all files' => 'tüm dosyalar ...',
+'updxlrtr cache dir' => 'Önbellek dizini',
+'updxlrtr cache maintenance' => 'Önbellek bakımı',
+'updxlrtr cache size' => 'Önbellek boyutu (bayt)',
+'updxlrtr cache statistics' => 'Önbellek istatistiği',
+'updxlrtr cancel download' => 'İndirmeyi iptal et',
+'updxlrtr children' => 'Hızlandırıcı işlemlerin sayısı',
+'updxlrtr common settings' => 'Genel ayarlar',
+'updxlrtr condition download' => 'İndir',
+'updxlrtr condition nosource' => 'Kaynak yok',
+'updxlrtr condition ok' => 'Bugüne kadar',
+'updxlrtr condition outdated' => 'Tarihi geçmiş',
+'updxlrtr condition suspended' => 'Askıda',
+'updxlrtr condition unknown' => 'Bilinmeyen',
+'updxlrtr configuration' => 'Güncelleme hızlandırıcı yapılandırması',
+'updxlrtr current downloads' => 'Dosyalar yerel önbelleğe indiriliyor',
+'updxlrtr current files' => 'Yerel önbellekteki mevcut dosyalar',
+'updxlrtr daily' => 'günlük',
+'updxlrtr data from cache' => 'Önbellek verileri (bayt)',
+'updxlrtr disk usage' => 'Disk kullanımı',
+'updxlrtr efficiency index' => 'Önbellek verimlilik dizini',
+'updxlrtr empty repository' => 'Yerel önbellek boş',
+'updxlrtr enable autocheck' => 'Otomatik kaynak kontrolünü aktifleştir',
+'updxlrtr enable log' => 'Günlük aktif',
+'updxlrtr filename' => 'Ad',
+'updxlrtr files' => 'Dosya',
+'updxlrtr filesize' => 'Boyut',
+'updxlrtr full autosync' => 'Kontrol sırasında eski dosyaları değiştir',
+'updxlrtr invalid disk usage' => 'En fazla disk kullanımını için geçersiz değer',
+'updxlrtr invalid download rate' => 'En fazla indirme hızı için geçersiz değer',
+'updxlrtr invalid num of children' => 'Hızlandırıcı işlemlerin geçersiz sayısı',
+'updxlrtr last access' => 'Son önbellek erişim',
+'updxlrtr last checkup' => 'Son kaynak kontrolü',
+'updxlrtr low download priority' => 'İndirme için düşük CPU önceliği',
+'updxlrtr maintenance' => 'Bakım',
+'updxlrtr marked as' => 'işaretli',
+'updxlrtr max disk usage' => 'En fazla disk kullanımı',
+'updxlrtr max download rate' => 'En fazla indirme hızı (KBit/s)',
+'updxlrtr month' => 'bir ay',
+'updxlrtr monthly' => 'aylık',
+'updxlrtr not accessed' => 'tarihinden bu yana erişilemez',
+'updxlrtr not enabled' => 'Güncelleme hızlandırıcı web vekil sunucusu sayfasında aktif değil',
+'updxlrtr other' => 'Diğer',
+'updxlrtr passive mode' => 'Pasif yöntemini aktifleştir',
+'updxlrtr pending downloads' => 'Beklemedekileri indir',
+'updxlrtr performance options' => 'Performans seçenekleri',
+'updxlrtr progress' => 'Geliştirme',
+'updxlrtr purge' => 'Temizlik',
+'updxlrtr remove file' => 'Önbelleği kaldır',
+'updxlrtr save and restart' => 'Kaydet ve Yeniden Başlat',
+'updxlrtr source' => 'Kaynak',
+'updxlrtr source checkup' => 'Kaynak kontrolü',
+'updxlrtr source checkup schedule' => 'Kaynak kontrol zamanı',
+'updxlrtr sources' => 'Kaynaklar',
+'updxlrtr standard view' => 'Standart görünüm',
+'updxlrtr statistics' => 'İstatistik',
+'updxlrtr statistics by source' => 'İstatistik kaynağı',
+'updxlrtr summary' => 'Özet',
+'updxlrtr total cache size' => 'Toplam önbellek boyutu (bayt)',
+'updxlrtr total data from cache' => 'Önbellekten teslim edilen toplam veri (bayt)',
+'updxlrtr total files' => 'Önbellekteki toplam dosya',
+'updxlrtr unknown' => 'Bilinmeyen',
+'updxlrtr update accelerator' => 'Güncelleme hızlandırıcısı',
+'updxlrtr update information' => 'Yüklenebilir bir güncelleştirime sürümü var. Daha fazla bilgi için <a href="http://update-accelerator.advproxy.net" target="_blank">http://update-accelerator.advproxy.net</a> adresini ziyaret edin.',
+'updxlrtr update notification' => 'Güncelleme bildirimi!',
+'updxlrtr used by' => 'Kullanan',
+'updxlrtr web proxy service required' => 'Web vekil sunucu hizmeti güncelleme hızlandırıcı kullanmak için aktif olmalıdır',
+'updxlrtr week' => 'Bir hafta',
+'updxlrtr weekly' => 'haftalık',
+'updxlrtr year' => 'Bir yıl',
+'upgrade' => 'yükselt',
+'uplink' => 'Yükleme bağlantısı',
+'uplink speed' => 'Yükleme hızı (kbit/san)',
+'uplink std class' => 'Standart yükleme hızı sınıf',
+'upload' => 'Yükle',
+'upload a certificate' => 'Sertifika yükle:',
+'upload a certificate request' => 'Sertifika isteği yükle:',
+'upload ca certificate' => 'CA Sertifikası Yükle',
+'upload fcdsl.o' => 'KALDIRILACAK',
+'upload file' => 'Dosya yükle',
+'upload new ruleset' => 'Yeni kurallar yükle',
+'upload p12 file' => 'PKCS12 Dosyası Yükle',
+'upload static key' => 'Statik bir anahtar yükle',
+'upload successful' => 'Yükleme başarılı.',
+'upload synch.bin' => 'synch.bin yükle',
+'upload update file' => 'Güncelleme dosyası yükle:',
+'upstream password' => 'Gönderme parolası:',
+'upstream proxy host:port' => 'Gönderim vekil sunucusu (host:port)',
+'upstream username' => 'Gönderme kullanıcı adı:',
+'uptime' => 'Çalışma süresi',
+'uptime and users' => 'Çalışma süresi ve kullanıcı:',
+'uptime load average' => 'Ortalama yük',
+'url filter' => 'İçerik Filtreleme',
+'urlfilter access' => 'Erişim',
+'urlfilter activity detection' => 'Etkinlik algılama',
+'urlfilter add new time constraint rule' => 'Yeni zaman kısıtlaması kuralı ekle',
+'urlfilter add new user quota rule' => 'Yeni kullanıcı kota kuralı ekle',
+'urlfilter add rule' => 'Ekle',
+'urlfilter advanced settings' => 'Gelişmiş ayarlar',
+'urlfilter allow' => 'İzin ver',
+'urlfilter allow access' => 'Erişime izin ver',
+'urlfilter allowed domains' => 'İzin verilen etki alanları (her satırda bir tane)',
+'urlfilter allowed urls' => 'İzin verilen URL adresleri (her satırda bir tane)',
+'urlfilter assigned quota users' => 'Atanan kullanıcılar (her satırda bir tane)',
+'urlfilter assigned users' => 'Atanan kullanıcılar',
+'urlfilter automatic blacklist update' => 'Otomatik olarak kara listeyi güncelleştir',
+'urlfilter automatic update schedule' => 'Otomatik olarak güncelleştirme zamanı',
+'urlfilter back to main page' => 'Ana Sayfaya Geri Dön',
+'urlfilter background image' => 'UrlFilter arka plan resmi',
+'urlfilter background text' => 'Engellenen sayfanın altında özel bir arkaplan görüntüsü kullanmak için .jpg dosyası yükleme',
+'urlfilter backup' => 'Yedek Dosyası Oluştur',
+'urlfilter backup error' => 'Yedek dosyası oluşturulamıyor',
+'urlfilter backup settings' => 'Yedek URL filtre ayarları',
+'urlfilter banned clients' => 'Yasaklanan IP adresleri',
+'urlfilter blacklist age 1' => 'Son kara liste başarıyla güncellendi',
+'urlfilter blacklist age 2' => 'gün önce',
+'urlfilter blacklist category name' => 'Kara liste kategori adı',
+'urlfilter blacklist editor' => 'Kara Liste Düzenleyicisi',
+'urlfilter blacklist editor info' => 'Kara liste dosyanızı oluturma ve düzenleme',
+'urlfilter blacklist name' => 'Kara liste adı',
+'urlfilter blacklist update' => 'Kara listeyi güncelleştir',
+'urlfilter block' => 'Engelleme',
+'urlfilter block access' => 'Erişim engelleme',
+'urlfilter block all' => 'Açıkça izin verilen tüm URL adreslerini engelle',
+'urlfilter block archives' => 'Sıkıştırılmış arşiv dosyalarını engelle',
+'urlfilter block audio-video' => 'Ses/Video dosyalarını engelle',
+'urlfilter block categories' => 'Engelleme kategorileri',
+'urlfilter block executables' => 'Çalıştırılabilir dosyaları engelle',
+'urlfilter block ip' => 'IP adreslerinden erişilebilir siteleri engelle',
+'urlfilter block settings' => 'Engellenen sayfa ayarları',
+'urlfilter blocked domains' => 'Engellenen etki alanları (her satırda bir tane)',
+'urlfilter blocked expressions' => 'Engellenen ifadeler (düzenli ifadeler olarak)',
+'urlfilter blocked urls' => 'Engellenen URL adresleri (her satırda bir tane)',
+'urlfilter category' => 'Kategori',
+'urlfilter category all' => 'herhangi biri',
+'urlfilter category data error' => 'Kara liste boş',
+'urlfilter category log' => 'Günlükleri kategoriye göre böl',
+'urlfilter category name error' => 'Kara listeye kategori adı gereklidir',
+'urlfilter client' => 'İstemci',
+'urlfilter configuration' => 'URL filtre yapılandırması',
+'urlfilter constraint definition' => 'Açıklama',
+'urlfilter constraint outside' => 'Dışında',
+'urlfilter constraint within' => 'İçinde',
+'urlfilter copy rule' => 'Kopyala',
+'urlfilter current files' => 'Yerel depodaki mevcut dosya',
+'urlfilter custom blacklist' => 'Özel kara liste',
+'urlfilter custom expression list' => 'Özel ifade listesi',
+'urlfilter custom url' => 'Özel kaynak URL adresi',
+'urlfilter custom url required' => 'Gerekli özel kaynak URL',
+'urlfilter custom whitelist' => 'Özel beyaz liste',
+'urlfilter daily' => 'Günlük',
+'urlfilter disabled' => 'Kapalı',
+'urlfilter domains' => 'Etki alanı (her satırda bir tane)',
+'urlfilter dont restart urlfilter' => 'URL filtreyi yeniden başlatma',
+'urlfilter dst' => 'Hedef',
+'urlfilter dst error' => 'Seçilen en az bir kategori olmalıdır.',
+'urlfilter edit domains urls expressions' => 'Etki alanlarını, URL\'leri ve ifadeleri düzenleyin.',
+'urlfilter edit time constraint rule' => 'Mevcut bir süre sınırlaması kuralını düzenle',
+'urlfilter edit user quota rule' => 'Varolan bir kullanıcı kota kuralını düzenle',
+'urlfilter empty ads' => 'Boş bir pencere ile "reklamları" engelle',
+'urlfilter empty repository' => 'Yerel dosya deposu boş',
+'urlfilter enable automatic blacklist update' => 'Otomatik güncellemeyi aktifleştir',
+'urlfilter enable custom blacklist' => 'Özel kara listeyi aktifleştir',
+'urlfilter enable custom expression list' => 'Özel ifade listesini aktifleştir',
+'urlfilter enable custom whitelist' => 'Özel beyaz listeyi aktifleştir',
+'urlfilter enable expression lists' => 'İfade listesini aktifleştir',
+'urlfilter enable full backup' => 'Tamamlanan kara listeyi dahil et',
+'urlfilter enable jpeg' => 'Arka plan resmini aktifleştir',
+'urlfilter enable log' => 'Günlükleri aktifleştir',
+'urlfilter enable rewrite rules' => 'Yerel dosyaya yönlendirmeyi aktifleştir',
+'urlfilter enabled' => 'Aktif:',
+'urlfilter example' => 'Örneğin: adres.com',
+'urlfilter example ads' => 'Örneğin: adres.com/reklam/',
+'urlfilter export blacklist' => 'Kara Listeyi Dışarı Aktar',
+'urlfilter export error' => 'Dışarı aktarma dosyası dosyası oluşturulamıyor',
+'urlfilter expressions' => 'İfadeler (her satırda bir tane)',
+'urlfilter file ext block' => 'Engellenen dosya uzantısı',
+'urlfilter filename' => 'Ad',
+'urlfilter filesize' => 'Boyut',
+'urlfilter filter settings' => 'URL filtre ayarları',
+'urlfilter fri' => 'C',
+'urlfilter friday' => 'Cum',
+'urlfilter from' => 'Başlangıç',
+'urlfilter hourly' => 'Saatlik',
+'urlfilter import blacklist' => 'Kara Listeyi Al',
+'urlfilter import text' => 'Önceden kaydedilmiş *.tar.gz uzantılı kara liste düzenleyici dosyasını yüklemek için aşağıdan seçin',
+'urlfilter install blacklist' => 'Kara Listeye Yükle',
+'urlfilter install information' => 'Yeni kara liste otomatik olarak oluşturulup veritabanları için derlenecektir. Kara liste boyutuna bağlı olarak güncelleme işlemi birkaç dakika zaman alabilir. URL filtreyi yeniden başlatmadan önce bu görevin muhakkak bitirilmesini bekleyin.',
+'urlfilter invalid content' => 'Dosya squidGuard uyumlu kara liste değil',
+'urlfilter invalid import file' => 'Dosya geçerli URL filtre kara liste düzenleyicisi dosyası değil',
+'urlfilter invalid ip or mask error' => 'Geçersiz IP adresi veya ağ maskesi',
+'urlfilter invalid restore file' => 'Bu dosya geçerli bir URL filtre yedek dosyası değil',
+'urlfilter invalid user error' => 'Geçersiz kullanıcı adı',
+'urlfilter load blacklist' => 'Kara Liste Dosyasını Yükle',
+'urlfilter local file redirection' => 'Yeniden yerel dosyaya yönlendir',
+'urlfilter log' => 'urlfiltre günlükleri',
+'urlfilter log summary' => 'URL filtre kaydı için toplam sayı',
+'urlfilter log viewer' => 'URL filtre günlük görüntüleyici',
+'urlfilter logs' => 'URL Filtre Günlükleri',
+'urlfilter maintenance' => 'URL filtre bakımı',
+'urlfilter manage local file repository' => 'Yerel dosya deposunu yönetin',
+'urlfilter manage repository' => 'Depoyu Yönet',
+'urlfilter minutes' => 'dakika',
+'urlfilter mode allow' => 'İzin ver',
+'urlfilter mode block' => 'Engelle',
+'urlfilter mon' => 'P',
+'urlfilter monday' => 'Pzt',
+'urlfilter monthly' => 'Aylık',
+'urlfilter msg text 1' => '1. mesaj satırı',
+'urlfilter msg text 2' => '2. mesaj satırı',
+'urlfilter msg text 3' => '3. mesaj satırı',
+'urlfilter network access control' => 'Ağ tabanlı erişim kontrolü',
+'urlfilter no categories' => 'Mevcut hiçbir kategori yok',
+'urlfilter not enabled' => 'URL filtre web vekil sayfasında aktif değil',
+'urlfilter quota restart message' => 'Not: URL filtrenin yeniden başlatılması tüm kullanıcılar için zaman sayaçlarını sıfırlar',
+'urlfilter quota time error' => 'Zaman kotası için geçersiz değer',
+'urlfilter quota user error' => 'En az bir kullanıcı adı gereklidir',
+'urlfilter redirect template' => 'Sayfa şablonuna yönlendir',
+'urlfilter redirectpage' => 'Bu URL adresine yönlendir',
+'urlfilter remove file' => 'Deposundan dosyayı kaldır',
+'urlfilter renewal' => 'Yenile',
+'urlfilter renewal period' => 'Yenileme süresi',
+'urlfilter repository information' => 'Dosyalar indirilirken istekler orjinal kaynağından yerel dosya havuzuna yönlendirilir.',
+'urlfilter reset' => 'Sıfırla',
+'urlfilter restart' => 'URL Filtreyi Yeniden Başlat',
+'urlfilter restart message' => 'Değişen URL filtre kurallarının aktifleştirilmesi için yeniden başlatılmalıdır',
+'urlfilter restart notification' => 'Değişen kuralları aktifleştir',
+'urlfilter restore' => 'Yedek Dosyasını İçeri Aktar',
+'urlfilter restore results' => 'Sonuçları geri yükle',
+'urlfilter restore settings' => 'URL filtre ayarlarını geri yükle',
+'urlfilter restore success' => 'URL filtre yapılandırması geri yüklendi. URL filtresi yeni ayarlarını aktifleştirmek için yeniden başlatılması gerekir.',
+'urlfilter restore text' => 'Önceden kaydedilmiş .tar.gz uzantılı bir yapılandırma dosyasını geri yüklemek için aşağıdan seçin',
+'urlfilter safesearch' => 'Güvenli aramayı aktifleştir',
+'urlfilter sat' => 'C',
+'urlfilter saturday' => 'Cmt',
+'urlfilter save and restart' => 'Kaydet ve Yeniden Başlat',
+'urlfilter save schedule' => 'Güncelleme Ayarlarını Kaydet',
+'urlfilter select blacklist' => 'Mevcut kara listeyi seçin',
+'urlfilter select multi' => 'Birden çok kategori seçmek için Ctrl tuşuna basın',
+'urlfilter select source' => 'İndirmek için kaynağı seçin',
+'urlfilter set time constraints' => 'Zaman Kısıtlamalarını Ayarla',
+'urlfilter set user quota' => 'Kullanıcı Kotasını Ayarla',
+'urlfilter show category' => 'Engellenen sayfada kategori göster',
+'urlfilter show dnserror' => '"DNS Hatası" URL adreslerini engellemek için kullan',
+'urlfilter show ip' => 'Engellenen sayfada IP göster',
+'urlfilter show url' => 'Engellenen sayfada URL adresi göster',
+'urlfilter source' => 'Kaynak ana bilgisayarlar veya ağ kaynakları',
+'urlfilter src' => 'Kaynak',
+'urlfilter src error' => 'Kaynak boş olamaz',
+'urlfilter sun' => 'P',
+'urlfilter sunday' => 'Paz',
+'urlfilter tar error' => 'Tar arşivlerinden dosyalar çıkartılamadı',
+'urlfilter thu' => 'P',
+'urlfilter thursday' => 'Per',
+'urlfilter time' => 'zaman',
+'urlfilter time quota' => 'Zaman kotası',
+'urlfilter time space' => 'Zaman alanı',
+'urlfilter timebased access control' => 'Zaman tabanlı erişim kontrolü',
+'urlfilter timespace error' => 'Zaman alan bildiriminde hata',
+'urlfilter to' => 'Bitiş',
+'urlfilter tue' => 'S',
+'urlfilter tuesday' => 'Sal',
+'urlfilter unfiltered clients' => 'Yasaksız IP adresleri',
+'urlfilter update information' => 'Yüklenebilir güncelleştirilmiş bir sürümü var. Daha fazla bilgi için <a href="http://www.urlfilter.net" target="_blank">http://www.urlfilter.net</a> adresini ziyaret edin.',
+'urlfilter update notification' => 'Güncelleme bildirimi!',
+'urlfilter update now' => 'Şimdi Güncelle',
+'urlfilter update results' => 'Kara liste güncelleştirme sonuçları',
+'urlfilter update rule' => 'Güncelle',
+'urlfilter upload background' => 'Resim yükle',
+'urlfilter upload blacklist' => 'Kara Liste Dosyası Yükle',
+'urlfilter upload file' => 'Dosya Yükle',
+'urlfilter upload file information 1' => 'Not',
+'urlfilter upload file information 2' => 'URL filtre depo değişikliklerini aktifleştirmek için yeniden başlatılması gerekir.',
+'urlfilter upload file text' => 'Yerel depoya dosya eklemek için aşağıdan bir dosya yükleyin',
+'urlfilter upload information' => 'Yeni kara liste otomatik olarak oluşturulup veritabanları için derlenecektir. Kara liste boyutuna bağlı olarak güncelleme işlemi birkaç dakika zaman alabilir. URL filtreyi yeniden başlatmadan önce bu görevin muhakkak bitirilmesini bekleyin.',
+'urlfilter upload success' => 'Kara liste yüklemesi başarıyla tamamlandı.',
+'urlfilter upload text' => 'Güncellenmiş bir kara liste dosyasını yüklemek için aşağıdaki .tar.gz dosyasını yükle',
+'urlfilter url filter' => 'URL filtresi',
+'urlfilter urlfilter blacklist editor' => 'URL filtre kara liste düzenleyicisi',
+'urlfilter urls' => 'URL adresleri (her satırda bir tane)',
+'urlfilter user time quota' => 'Zaman kotası (dakika)',
+'urlfilter username' => 'Kullanıcı adı',
+'urlfilter username log' => 'Kullanıcı adı günlükleri',
+'urlfilter web proxy service required' => 'Ağ vekil hizmeti URL filtre kullanmak için aktif olmalıdır',
+'urlfilter wed' => 'Ç',
+'urlfilter wednesday' => 'Çar',
+'urlfilter weekday error' => 'Seçilmiş en az bir gün olmalıdır',
+'urlfilter weekly' => 'Haftalık',
+'urlfilter whitelist always allowed' => 'Yasaklı istemciler için özel beyaz liste izini',
+'urlfilter wrong filetype' => 'Uzantısı .tar.gz olan dosya yok',
+'use' => 'Kullan',
+'use a pre-shared key' => 'Ön paylaşımlı anahtar kullan:',
+'use dov' => 'Ses üzerinden veri kullan (DOV):',
+'use ibod' => 'İhtiyaca bağlı bant genişliği kullan (iBOD):',
+'use ipfire red ip' => 'IPFire tarafından bağlantı süresince kullanılan klasik KIRMIZI IP',
+'use only proposed settings' => 'Sadece önerilen ayarları kullan',
+'used' => 'Kullanılan',
+'used memory' => 'kullanılan bellek    ',
+'used swap' => 'kullanılan takas alanı',
+'user' => 'Kullanıcı',
+'user log' => 'kullanıcı günlüğü',
+'user proxy logs' => 'kullanıcı vekil sunucu günlüğü',
+'username' => 'Kullanıcı adı:',
+'username not set' => 'Kullanıcı adı belirlenmemiş.',
+'users department' => 'Kullanıcının birimi',
+'users email' => 'Kullanıcının e-posta adresi',
+'users fullname or system hostname' => 'Kullanıcının tam adı vaya sistemin ana bilgisayar adı',
+'valid root certificate already exists' => 'Geçerli bir yönetici sertifikası zaten mevcut.',
+'valid till' => 'Geçerlilik süresi',
+'vci number' => 'VCI numarası:',
+'view log' => 'günlükleri göster',
+'virtual address' => 'Sanal Adres',
+'virtual private networking' => 'Sanal ÖZel Ağ',
+'visible in browselist' => 'tarayıcı listesinde görünen',
+'visit us at' => 'Bizi ziyaret edin',
+'voldown10' => 'Ses seviyesi 10',
+'voldown5' => 'Ses seviyesi 5',
+'volup10' => 'Ses düzeyi 10',
+'volup5' => 'Ses düzeyi 5',
+'vpi number' => 'VPI numarası:',
+'vpn' => 'VPN',
+'vpn aggrmode' => 'IKE agresif yöntemde izin verildi. Eğer mümkünse kullanmayın (öpaylaşımlı anahtar açık olarak iletiliyor)!',
+'vpn altname syntax' => 'Konu Alternatif İsim virgülle ayrılmış e-posta,dns,uri,rid ve ip objeleridir.<br/>e-posta: e-posta adresidir. Kullanımı e-posta:copy e-posta adresini sertifikadan çıkartarak kullanır.<br/>DNS: geçerli alan adı sunucusu.<br/>URI: geçerli bir URI.<br/>RID: kayıtlı nesne tanımlayıcı.<br/>IP: bir IP adresi.<br/>Not: karakter setleri sınırlı ve büyük/küçük harf duyarlıdır.<br/>Örnek:<br/><b>email:</b>ipcop@foo.org<b>,email:</b>copy<b>,DNS:</b>www.ipcop.org<b>,IP:</b>127.0.0.1<b>,URI:</b>http://url/dizin/biryer',
+'vpn auth-dn' => 'Eş uzak kimlik doğrulama alanında IPV4_ADDR, FQDN, USER_FQDN veya DER_ASN1_DN dizesi ile tanımla',
+'vpn configuration main' => 'VPN yapılandırma - Ana',
+'vpn delayed start' => 'VPN başlamadan önce bekle (saniye)',
+'vpn delayed start help' => 'Eğer gerekirse, bu gecikme Dinamik DNS güncelleştirmelerini düzgün yayılmasına olanak sağlamak için kullanılabilir. 60, KIRMIZI dinamik IP için ortak bir değerdir.',
+'vpn incompatible use of defaultroute' => 'hostname=%defaultroute izin verilmiyor',
+'vpn keyexchange' => 'Anahtar değişimi',
+'vpn local id' => 'Yerel kimlik',
+'vpn missing remote id' => 'Bu kimlik doğrulaması için doğru görüntüleme adı (DN) girmelisiniz.',
+'vpn mtu invalid' => 'MTU sayısal değer olmak zorunda!',
+'vpn no full pki' => 'sertifika oluşturmak için gerekli özel anahtar eksik',
+'vpn on blue' => 'MAVİ üzerindeki VPN',
+'vpn on green' => 'YEŞİL  üzerindeki VPN',
+'vpn on orange' => 'TURUNCU üzerindeki VPN',
+'vpn payload compression' => 'Yük sıkıştırma anlaşması',
+'vpn red name' => 'KIRMIZI arabirim veya <%defaultroute> için gerçek IP veya FQDN',
+'vpn remote id' => 'Uzak kimlik (ID)',
+'vpn subjectaltname' => 'Alternatif konu adı',
+'vpn vhost' => 'Roadwarrior sanal IP (bazen iç IP olarakta adlandırılır)',
+'vpn watch' => 'Karşı eş IP değiştirdiğinde (dyndns) ağdan-ağa VPN bağlantısını yeniden başlat. Bu DPD ye yardımcı olur.',
+'waiting to synchronize clock' => 'Saat eşleştirmesi bekleniyor',
+'warn when traffic reaches' => 'Trafik x % değere ulaştığında uyar',
+'warning messages' => 'Uyarı mesajı',
+'was deleted' => 'silindi',
+'web hits' => 'Seçilen kriterlerinize uyan web sitelerinin sayısı',
+'web proxy' => 'Web Vekil Sunucusu',
+'web proxy configuration' => 'Web vekil sunucu ayarları',
+'web server' => 'Web Sunucusu',
+'webradio playlist' => 'Web Radyo Çalma Listesi',
+'website' => 'Web sitesi',
+'wednesday' => 'Çarşamba',
+'week' => 'Hafta',
+'week-graph' => 'hafta',
+'weekly firewallhits' => 'haftalık güvenlik duvarı kaydı',
+'weeks' => 'hafta',
+'wildcards' => 'Joker karakterler',
+'wins server' => 'Wins Sunucusu',
+'wins support' => 'Wins desteği',
+'wireless' => 'KABLOSUZ AĞ',
+'wireless config added' => 'Kablosuz ağ yapılandırma eklendi',
+'wireless config changed' => 'Kablosuz ağ yapılandırma değiştirildi',
+'wireless configuration' => 'Kablosuz ağ ayarları',
+'wlan client' => 'Kablosuz istemci',
+'wlan client advanced settings' => 'Gelişmiş ayarlar',
+'wlan client and' => 've',
+'wlan client bssid' => 'BSSID',
+'wlan client ccmp' => 'CCMP',
+'wlan client configuration' => 'Kablosuz isdemci Yapılandırması',
+'wlan client disconnected' => 'Bağlantı kesildi',
+'wlan client duplicate ssid' => 'Yinelenen SSID',
+'wlan client edit entry' => 'Kablosuz istemci yapılandırmasını düzenle',
+'wlan client encryption' => 'Şifreleme',
+'wlan client encryption none' => 'Hiçbiri',
+'wlan client encryption wep' => 'WEP',
+'wlan client encryption wpa' => 'WPA',
+'wlan client encryption wpa2' => 'WPA2',
+'wlan client group cipher' => 'Grup şifreleme',
+'wlan client group key algorithm' => 'GKA',
+'wlan client invalid key length' => 'Geçersiz anahtar uzunluğu.',
+'wlan client new entry' => 'Yeni kablosuz istemci yapılandırması oluştur',
+'wlan client new network' => 'Yeni ağ',
+'wlan client pairwise cipher' => 'İkili şifreleme',
+'wlan client pairwise key algorithm' => 'PKA',
+'wlan client pairwise key group key' => 'İkili anahtar/grup anahtarı',
+'wlan client psk' => 'Önceden paylaşılan anahtar',
+'wlan client ssid' => 'SSID',
+'wlan client tkip' => 'TKIP',
+'wlan client wpa mode' => 'WPA biçimi',
+'wlan client wpa mode all' => 'Otomatik',
+'wlan client wpa mode ccmp ccmp' => 'CCMP-CCMP',
+'wlan client wpa mode ccmp tkip' => 'CCMP-TKIP',
+'wlan client wpa mode tkip tkip' => 'TKIP-TKIP',
+'wlan clients' => 'Kablosuz istemciler',
+'wlanap access point' => 'Access Point',
+'wlanap channel' => 'Kanal',
+'wlanap country' => 'Ülke Kodu',
+'wlanap debugging' => 'Hata ayıklama',
+'wlanap del interface' => 'Seçilen arabirim kaldırılsın mı?',
+'wlanap encryption' => 'Şifreleme',
+'wlanap informations' => 'Bilgi',
+'wlanap interface' => 'Arabirimi Seç',
+'wlanap invalid wpa' => 'WPA için geçersiz uzunlukta parola. Parola 8 ile 63 arasında ascii karakterleri olmalıdır.',
+'wlanap link dhcp' => 'Kablosuz ağ lan DHCP yapılandırması',
+'wlanap link wireless' => 'Kablosuz ağ LAN istemcileri aktifleştirin',
+'wlanap no interface' => 'Seçilen ara birim kablosuz ağ lan kartı değil!',
+'wlanap none' => 'yok',
+'wlanap notifications' => 'Bildirimler',
+'wlanap select interface' => 'Lütfen kablosuz ağ LAN arabirimini seçin.',
+'wlanap verbose' => 'Ayrıntı',
+'wlanap warnings' => 'Uyarı',
+'wlanap wlan card' => 'WLan Kart',
+'wlanap wlan services' => 'WLan Hizmetleri',
+'wlanap wlan settings' => 'WLan Ayarları',
+'wlanap wlan status' => 'WLan Durumu',
+'wol wakeup' => 'Kalk',
+'workgroup' => 'Çalışma grubu',
+'written bytes' => 'yazılan bayt',
+'xtaccess all error' => 'Bu bağlantı noktası yönlendirme kaydı yapıldığında tüm harici erişim ayarlanamaz.',
+'xtaccess bad transfert' => 'Bir bağlantı noktası hedef aralığı belirtirseniz, kaynak aralığı ile aynı olmalıdır!',
+'year' => 'Yıl',
+'year-graph' => 'yıl',
+'yearly firewallhits' => 'yıllık güvenlik duvarı kaydı',
+'yes' => 'Evet',
+'you can only define one roadwarrior connection when using pre-shared key authentication' => 'Önceden paylaşılan anahtar kimlik doğrulaması kullanırken sadece bir Roadwarrior bağlantı tanımlayabilirsiniz.<br />Önceden paylaşılan anahtar kimlik doğrulaması ile bir Roadwarrior bağlantısı ile şimdi birini eklemek için çalışıyoruz.',
+'your department' => 'Bölümünüz',
+'your e-mail' => 'E-posta adresiniz',
+);
+
+#EOF
diff --git a/langs/tr/install/lang_tr.c b/langs/tr/install/lang_tr.c
new file mode 100644 (file)
index 0000000..814949a
--- /dev/null
@@ -0,0 +1,596 @@
+/*
+ * Turkish (tr) Data File
+ *
+ * This file is part of the IPFire.
+ * 
+ * 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
+ * 
+ * (c) IPFire Team  <info@ipfire.org>
+ *
+ * based on work of SmoothWall and IPCop
+ *
+ * (c) The SmoothWall Team
+ *  
+ */
+#include "libsmooth.h"
+
+char *tr_tr[] = {
+
+/* TR_ISDN */
+"ISDN",
+/* TR_ERROR_PROBING_ISDN */
+"ISDN aygıtları taramak için açılamıyor.",
+/* TR_PROBING_ISDN */
+"Tara ve ISDN aygıtlarını yapılandır.",
+/* TR_MISSING_GREEN_IP */
+"Yeşil IP yok!",
+/* TR_CHOOSE_FILESYSTEM */
+"Lütfen dosya sistemini seçin:",
+/* TR_NOT_ENOUGH_INTERFACES */
+"Seçiminize göre yeterli ağ kartı yok.\n\nGerekli: %d - Mevcut: %d\n",
+/* TR_INTERFACE_CHANGE */
+"Değiştirmek istediğiniz ara birimi seçiniz.\n\n",
+/* TR_NETCARD_COLOR */
+"Atanan Kartlar",
+/* TR_REMOVE */
+"Kaldır",
+/* TR_MISSING_DNS */
+"Eksik DNS.\n",
+/* TR_MISSING_DEFAULT */
+"Varsayılan Ağ Geçidi Eksik.\n",
+/* TR_JOURNAL_EXT3 */
+"Ext3 için günlük oluşturuluyor...",
+/* TR_CHOOSE_NETCARD */
+"Aşağıdan şu ara birim için bir ağ kartı seçin - %s",
+/* TR_NETCARDMENU2 */
+"Genişletilmiş Ağ Listesi",
+/* TR_ERROR_INTERFACES */
+"Sisteminizde hiç boş ara birim bulunmamaktadır.",
+/* TR_REMOVE_CARD */
+"Ağ kartı için tahsis edilenler silinsin mi? - %s",
+/* TR_JOURNAL_ERROR */
+"Günlük oluşturulamadı son çare olarak ext2 kullanılacak.",
+/* TR_FILESYSTEM */
+"Dosya Sistemini Seçin",
+/* TR_ADDRESS_SETTINGS */
+"Adres ayarları",
+/* TR_ADMIN_PASSWORD */
+"'admin' parolası",
+/* TR_AGAIN_PROMPT */
+"Tekrar:",
+/* TR_ALL_CARDS_SUCCESSFULLY_ALLOCATED */
+"Tüm kartalar başarılı bir şekilde atandı.",
+/* TR_AUTODETECT */
+"* OTOMATİK ALGILAMA *",
+/* TR_BUILDING_INITRD */
+"Ramdisk oluşturuluyor...",
+/* TR_CANCEL */
+"İptal",
+/* TR_CARD_ASSIGNMENT */
+"Kart ataması",
+/* TR_CHECKING */
+"URL kontrol ediliyor...",
+/* TR_CHECKING_FOR */
+"Kontrol: %s",
+/* TR_CHOOSE_THE_ISDN_CARD_INSTALLED */
+"Bu bilgisayarda yüklü ISDN kartını seçin.",
+/* TR_CHOOSE_THE_ISDN_PROTOCOL */
+"İstediğiniz ISDN iletişim kuralını seçin.",
+/* TR_CONFIGURE_DHCP */
+"DHCP ayar bilgilerini girerek DHCP sunucusunu yapılandırın.",
+/* TR_CONFIGURE_NETWORKING */
+"Ağ yapılandırması",
+/* TR_CONFIGURE_NETWORKING_LONG */
+"Şimdi öncelikle YEŞİL ara birim için doğru sürücüyü yükleyerek ağınızı yapılandırmanız gerekir. Bir ağ kartı yüklemek için otomatik tarama yapabilir ya da listeden doğru sürücüyü seçebilirsiniz. Eğer birden fazla ağ kartınız varsa yapılandırmadan sonra da bu ağ kartlarının yüklenebileceğini unutmayın. Ayrıca birden fazla aynı türde ağ kartınız varsa hangi kartı YEŞİL ara birime atadığınızı unutmayın. Her kart için özel modül parametreleri eklemeniz gerekebilir. Eğer YEŞİL ara birimi yapılandırırken tüm ağ kartları aktifse tüm türdeki kartlar için parametreleri girmeniz gerekir.",
+/* TR_CONFIGURE_NETWORK_DRIVERS */
+"Ağ sürücüleri ve hangi ara birim için hangi kartların atanacağını yapılandırın. Mevcut yapılandırma:\n\n",
+/* TR_CONFIGURE_THE_CDROM */
+"Uygun GÇ ve/veya IRQ seçerek CDROM yapılandır.",
+/* TR_CONGRATULATIONS */
+"Tebrikler!",
+/* TR_CONGRATULATIONS_LONG */
+"%s başarıyla yüklendi. Şimdi bilgisayarınızdaki cdyi çıkartın. Kurulum; ISDN, ağ kartları, sistem parolalarını yapılandırabileceğiniz programı çalıştıracaktır. Kurulum tamamlandıktan sonra bir internet tarayıcısı açıp adres satırına https://%s:444 (ya da %s sistem adınız) yazıp çevirmeli ağ (gerekliyse) ve uzaktan erişim yapılandırmalarınızı yapabilirsiniz.",
+/* TR_CONTINUE_NO_SWAP */
+"Sabit diskiniz çok küçük, ancak küçük bir takas alanı ile devam edebilirsiniz. (Dikkatli kullanın).",
+/* TR_CURRENT_CONFIG */
+"Geçerli yapılandırma: %s%s",
+/* TR_DEFAULT_GATEWAY */
+"Varsayılan Ağ Geçidi:",
+/* TR_DEFAULT_GATEWAY_CR */
+"Varsayılan Ağ Geçidi\n",
+/* TR_DEFAULT_LEASE */
+"Varsayılan kira (dakika):",
+/* TR_DEFAULT_LEASE_CR */
+"Varsayılan kira süresi\n",
+/* TR_DETECTED */
+"Algılanan: %s",
+/* TR_DHCP_HOSTNAME */
+"DHCP Ana bilgisayar adı:",
+/* TR_DHCP_HOSTNAME_CR */
+"DHCP Ana bilgisayar adı\n",
+/* TR_DHCP_SERVER_CONFIGURATION */
+"DHCP sunucu yapılandırması",
+/* TR_DISABLED */
+"Devre Dışı",
+/* TR_DISABLE_ISDN */
+"ISDN Devre Dışı",
+/* TR_DISK_TOO_SMALL */
+"Sabit diskiniz çok küçük.",
+/* TR_DNS_AND_GATEWAY_SETTINGS */
+"DNS ve Ağ Geçidi ayarları",
+/* TR_DNS_AND_GATEWAY_SETTINGS_LONG */
+"DNS ve ağ geçidi bilgilerini girin. Bu ayarlar sadece KIRMIZI ara birim adres ayarlarında Statik seçenği seçilmişse kullanılır. Eğer KIRMIZI ara birim adres ayarlarında DHCP seçeneğini seçtiyseniz bu alanı boş bırakabilirsiniz.",
+/* TR_DNS_GATEWAY_WITH_GREEN */
+"Yapılandırmanız KIRMIZI ara birim için ethernet adaptörünü kullanamaz. DNS ve Çevirmeli ağ kullanıcıları için ağ geçidi bilgisi çevirmeli ağda otomatik olarak yapılandırılır.",
+/* TR_DOMAINNAME */
+"Alan adı",
+/* TR_DOMAINNAME_CANNOT_BE_EMPTY */
+"Alan adı boş olamaz.",
+/* TR_DOMAINNAME_CANNOT_CONTAIN_SPACES */
+"Alan adı boşluk içeremez.",
+/* TR_DOMAINNAME_NOT_VALID_CHARS */
+"Alan adı sadece harfler, sayılar, tire ve noktadan oluşturulabilir.",
+/* TR_DOMAIN_NAME_SUFFIX */
+"Alan adı son eki:",
+/* TR_DOMAIN_NAME_SUFFIX_CR */
+"Alan adı son eki\n",
+/* TR_DONE */
+"Bitti",
+/* TR_DO_YOU_WISH_TO_CHANGE_THESE_SETTINGS */
+"\nBu ayarları değiştirmek istiyor musunuz?",
+/* TR_DRIVERS_AND_CARD_ASSIGNMENTS */
+"Sürücüler ve kart atamaları",
+/* TR_ENABLED */
+"Aktif",
+/* TR_ENABLE_ISDN */
+"ISDN aktif",
+/* TR_END_ADDRESS */
+"Bitiş adresi:",
+/* TR_END_ADDRESS_CR */
+"Bitiş adresi\n",
+/* TR_ENTER_ADDITIONAL_MODULE_PARAMS */
+"Bazı ISDN kartları (özellikle ISA olanlar) IRQ ve GÇ adres bilgilerini ayarlamak için ek modül parametrelerine ihtiyaç duyar.Böyle bir ISDN kartınız varsa burada bu ek parametreleri girin. Örneğin: \"io = 0x280 irq = 9 \". Bunlar kart algılama sırasında kullanılacaktır.",
+/* TR_ENTER_ADMIN_PASSWORD */
+"%s 'admin' kullanıcı parolasını girin. Bu, %s web yönetimi sayfalarının kayıtlarına erişebilen kullanıcıdır.",
+/* TR_ENTER_DOMAINNAME */
+"Alan adını girin",
+/* TR_ENTER_HOSTNAME */
+"Makinenin ana bilgisayar adını girin.",
+/* TR_ENTER_IP_ADDRESS_INFO */
+"IP adres bilgilerini girin.",
+/* TR_ENTER_NETWORK_DRIVER */
+"Otomatik olarak bir ağ kartı algılanamadı. Ağ kartı için sürücü ve isteğe bağlı olan parametreleri girin.",
+/* TR_ENTER_ROOT_PASSWORD */
+"IPFire 'root' kullanıcı parolasını girin. Komut satırı erişimi için bu kullanıcı ile oturum açın.",
+/* TR_ENTER_SETUP_PASSWORD */
+"KALDIRILACAK",
+/* TR_ENTER_THE_IP_ADDRESS_INFORMATION */
+"%s ara birimi için IP adres bilgilerini girin.",
+/* TR_ENTER_THE_LOCAL_MSN */
+"Yerel telefon numarasını girin (MSN/EAZ).",
+/* TR_ENTER_URL */
+"IPFire-<version>.tgz ve images/scsidrv-<version>.img dosyaları için URL adresini girin. UYARI: DNS mevcut deği! Bu sadece http://X.X.X.X/<directory> olmalıdır.",
+/* TR_ERROR */
+"Hata",
+/* TR_ERROR_PROBING_CDROM */
+"CD-ROM sürücüsü bulunamadı.",
+/* TR_ERROR_WRITING_CONFIG */
+"Yapılandırma bilgilerini yazma hatası.",
+/* TR_EURO_EDSS1 */
+"Avrupa (EDSS1)",
+/* TR_EXTRACTING_MODULES */
+"Modüller açılıyor...",
+/* TR_FAILED_TO_FIND */
+"URL dosyası bulunamadı.",
+/* TR_FOUND_NIC */
+"%s makinenizde aşağıdaki NIC tespit edildi: %s",
+/* TR_GERMAN_1TR6 */
+"Alman 1TR6",
+/* TR_HELPLINE */
+"              <Tab>/<Alt-Tab> öğeler arasında geçiş   |  <Space> seçim",
+/* TR_HOSTNAME */
+"Ana bilgisayar adı",
+/* TR_HOSTNAME_CANNOT_BE_EMPTY */
+"Ana bilgisayar adı boş olamaz.",
+/* TR_HOSTNAME_CANNOT_CONTAIN_SPACES */
+"Ana bilgisayar adı boşluk içeremez.",
+/* TR_HOSTNAME_NOT_VALID_CHARS */
+"Ana bilgisayar adı sadece harf, rakam ve tire içerebilir.",
+/* TR_INITIALISING_ISDN */
+"ISDN başlatılıyor...",
+/* TR_INSERT_CDROM */
+"Lütfen CD_ROM sürücüsüne %s CDsi yerleştirin.",
+/* TR_INSERT_FLOPPY */
+"Lütfen disket sürücüsüne %s sürücü disketini yerleştirin.",
+/* TR_INSTALLATION_CANCELED */
+"Kurulum iptal edildi.",
+/* TR_INSTALLING_FILES */
+"Dosyalar yükleniyor...",
+/* TR_INSTALLING_GRUB */
+"GRUB yükleniyor...",
+/* TR_INSTALLING_LANG_CACHE */
+"Dil dosyası yükleniyor...",
+/* TR_INTERFACE */
+"Ara birim - %s",
+/* TR_INTERFACE_FAILED_TO_COME_UP */
+"Ara birim yükseltmesi başarısız oldu.",
+/* TR_INVALID_FIELDS */
+"Aşağıdaki alan geçersiz:\n\n",
+/* TR_INVALID_IO */
+"Girilen GÇ bağlantı noktası detayları geçersiz. ",
+/* TR_INVALID_IRQ */
+"Girilen IRQ ayrıntıları geçersiz.",
+/* TR_IP_ADDRESS_CR */
+"IP adresi\n",
+/* TR_IP_ADDRESS_PROMPT */
+"IP adresi:",
+/* TR_ISDN_CARD */
+"ISDN kartı",
+/* TR_ISDN_CARD_NOT_DETECTED */
+"ISDN kartı algılanamdı. Kart bir ISA türü veya özel gereksinimleri olan bir kartsa ek modül parametreleri belirtmeniz gerekebilir.",
+/* TR_ISDN_CARD_SELECTION */
+"ISDN kart seçimi",
+/* TR_ISDN_CONFIGURATION */
+"ISDN Yapılandırması",
+/* TR_ISDN_CONFIGURATION_MENU */
+"ISDN yapılandırma listesi",
+/* TR_ISDN_NOT_SETUP */
+"ISDN kurulamadı. Bazı ürünleri seçmediniz.",
+/* TR_ISDN_NOT_YET_CONFIGURED */
+"ISDN henüz yapılandırılmamış. Yapılandırmak istediğiniz öğeyi seçin.",
+/* TR_ISDN_PROTOCOL_SELECTION */
+"ISDN kural seçimi",
+/* TR_ISDN_STATUS */
+"ISDN şu anda %s.\n\n   Kural: %s\n   Kart: %s\n   Yerel telefon numarası: %s\n\nYeniden yapılandırmanız için istediğiniz öğeyi seçin ya da geçerli ayarları kullanmayı tercih edin.",
+/* TR_KEYBOARD_MAPPING */
+"Klavye haritası",
+/* TR_KEYBOARD_MAPPING_LONG */
+"Aşağıdaki listeden kullandığınız klavye türünü seçin.",
+/* TR_LEASED_LINE */
+"Kiralık hat",
+/* TR_LOADING_MODULE */
+"Modül yükleniyor...",
+/* TR_LOADING_PCMCIA */
+"PCMCIA modülleri yükleniyor...",
+/* TR_LOOKING_FOR_NIC */
+"Arayan: %s",
+/* TR_MAKING_BOOT_FILESYSTEM */
+"Önyükleme dosya sistemi yapılandırılıyor...",
+/* TR_MAKING_LOG_FILESYSTEM */
+"Günlük dosya sistemi yapılandırılıyor...",
+/* TR_MAKING_ROOT_FILESYSTEM */
+"Root dosya sistemi yapılandırılıyor...",
+/* TR_MAKING_SWAPSPACE */
+"Takas alanı yapılandırılıyor...",
+/* TR_MANUAL */
+"* EL İLE *",
+/* TR_MAX_LEASE */
+"En fazla kira (dak):",
+/* TR_MAX_LEASE_CR */
+"En fazla kira süresi\n",
+/* TR_MISSING_BLUE_IP */
+"MAVİ ara birimdeki IP bilgileri eksik.",
+/* TR_MISSING_ORANGE_IP */
+"TURUNCU ara birimdeki IP bilgileri eksik.",
+/* TR_MISSING_RED_IP */
+"KIRMIZI ara birimdeki IP bilgileri eksik.",
+/* TR_MODULE_NAME_CANNOT_BE_BLANK */
+"Modül adı boş olamaz.",
+/* TR_MODULE_PARAMETERS */
+"Size gereken sürücü için modül adı ve parametrelerini girin.",
+/* TR_MOUNTING_BOOT_FILESYSTEM */
+"Önyükleme dosya sistemi bağlanıyor...",
+/* TR_MOUNTING_LOG_FILESYSTEM */
+"Günlük dosya sistemi bağlanıyor...",
+/* TR_MOUNTING_ROOT_FILESYSTEM */
+"Root dosya sistemi bağlanıyor...",
+/* TR_MOUNTING_SWAP_PARTITION */
+"Takas bölümü bağlanıyor...",
+/* TR_MSN_CONFIGURATION */
+"Yerel telefon numarası (MSN/EAZ)",
+/* TR_NETMASK_PROMPT */
+"Ağ maskesi:",
+/* TR_NETWORKING */
+"Ağ",
+/* TR_NETWORK_ADDRESS_CR */
+"Ağ adresi\n",
+/* TR_NETWORK_ADDRESS_PROMPT */
+"Ağ adresi:",
+/* TR_NETWORK_CONFIGURATION_MENU */
+"Ağ yapılandırma listesi",
+/* TR_NETWORK_CONFIGURATION_TYPE */
+"Ağ yapılandırma türü",
+/* TR_NETWORK_CONFIGURATION_TYPE_LONG */
+"%s için ağ yapılandırmasını seçin. Aşağıdaki yapılandırma türleri ethernet kartına atanmış ara birimleri listeler. Eğer bu ayarları değiştirirseniz ağın yeniden başlatılması gerekir ve yeniden ağ sürücülerinin atanması gerekir.",
+/* TR_NETWORK_MASK_CR */
+"Ağ maskesi\n",
+/* TR_NETWORK_SETUP_FAILED */
+"Ağ kurulumu başarısız oldu.",
+/* TR_NOT_ENOUGH_CARDS_WERE_ALLOCATED */
+"Yeterince kart tahsis edilemedi.",
+/* TR_NO_BLUE_INTERFACE */
+"Hiçbir MAVİ ara birim atanmamış.",
+/* TR_NO_CDROM */
+"CD-ROM bulunamadı.",
+/* TR_NO_GREEN_INTERFACE */
+"Hiçbir YEŞİL ara birim atanmamış.",
+/* TR_NO_HARDDISK */
+"Sabit disk bulunamadı.",
+/* TR_NO_IPCOP_TARBALL_FOUND */
+"Web sunucuda hiçbir ipfire arşivi bulunamadı.",
+/* TR_NO_ORANGE_INTERFACE */
+"Hiçbir TURUNCU ara birim atanmamış.",
+/* TR_NO_RED_INTERFACE */
+"Hiçbir KIRMIZI ara birim atanmamış.",
+/* TR_NO_SCSI_IMAGE_FOUND */
+"Web sunucuda hiçbir SCSI kalıbı bulunamadı.",
+/* TR_NO_UNALLOCATED_CARDS */
+"Daha fazla ayrılmamış kart bulunmaktadır. Otamatik olarak daha fazla kartı aratabilir veya listeden bir sürücü seçebilirsiniz.",
+/* TR_OK */
+"Tamam",
+/* TR_PARTITIONING_DISK */
+"Disk bölümleniyor...",
+/* TR_PASSWORDS_DO_NOT_MATCH */
+"Parolalar eşeleşmiyor.",
+/* TR_PASSWORD_CANNOT_BE_BLANK */
+"Parola boş olamaz.",
+/* TR_PASSWORD_CANNOT_CONTAIN_SPACES */
+"Parla boşluk içeremez.",
+/* TR_PASSWORD_PROMPT */
+"Parola:",
+/* TR_PHONENUMBER_CANNOT_BE_EMPTY */
+"Telefon numarası boş olamaz.",
+/* TR_PREPARE_HARDDISK */
+"Sabit disk kurulum programı %s üzerindeki sabit diski hazırlayacak. İlk olarak diskiniz bölümlendirilir ve daha sonra bu bölüme dosya sistemleri oluşturulur.\n\nDİSKTEKİ TÜM VERİLER SİLİNECEKTİR. Kabul ediyor musunuz?",
+/* TR_PRESS_OK_TO_REBOOT */
+"Yeniden Başlat",
+/* TR_PRIMARY_DNS */
+"Birincil DNS:",
+/* TR_PRIMARY_DNS_CR */
+"Birincil DNS\n",
+/* TR_PROBE */
+"Araştır",
+/* TR_PROBE_FAILED */
+"Otomatik algılama başarısız oldu.",
+/* TR_PROBING_HARDWARE */
+"Donanım algılanıyor...",
+/* TR_PROBING_FOR_NICS */
+"Ağ kartları algılanıyor...",
+/* TR_PROBLEM_SETTING_ADMIN_PASSWORD */
+"%s 'admin' kullanıcı parolası ayarları sorunlu.",
+/* TR_PROBLEM_SETTING_ROOT_PASSWORD */
+"'root' parola ayarları sorunlu.",
+/* TR_PROBLEM_SETTING_SETUP_PASSWORD */
+"KALDIRILACAK",
+/* TR_PROTOCOL_COUNTRY */
+"Kural/Ülke",
+/* TR_PULLING_NETWORK_UP */
+"Ağ başlatılıyor...",
+/* TR_PUSHING_NETWORK_DOWN */
+"Ağ duruduruluyor...",
+/* TR_PUSHING_NON_LOCAL_NETWORK_DOWN */
+"Düşmeyen ağ bitirliyor...",
+/* TR_QUIT */
+"Çık",
+/* TR_RED_IN_USE */
+"ISDN (ya da herhangi bir harici bağlantı) şu anda kullanımda. Kırmızı arabirim aktifken ISDN seçeneğini yapılandıramazsınız.",
+/* TR_RESTART_REQUIRED */
+"\n\nYapılandırma tamamlandığında ağı yeniden başlatmanız gerekir.",
+/* TR_RESTORE */
+"Geri Yükle",
+/* TR_RESTORE_CONFIGURATION */
+"Eğer %s sistem yapılandırması ile ilgili bir disketiniz varsa disketinizi disket sürücüsüne yerleştirin ve Geri Yükle düğmesine basın.",
+/* TR_ROOT_PASSWORD */
+"'root' parolası",
+/* TR_SECONDARY_DNS */
+"İkincil DNS:",
+/* TR_SECONDARY_DNS_CR */
+"İkincil DNS\n",
+/* TR_SECONDARY_WITHOUT_PRIMARY_DNS */
+"Birincil DNS olmadan ikincil DNS belirtilmiş.",
+/* TR_SECTION_MENU */
+"Bölüm listesi",
+/* TR_SELECT */
+"Seç",
+/* TR_SELECT_CDROM_TYPE */
+"CD-ROM türünü seç",
+/* TR_SELECT_CDROM_TYPE_LONG */
+"Bu makinede CD-ROM bulunamadı. %s ile CD-ROM sürücüsüne erişilebilmesi için kullanmak istediğiniz sürücüyü aşağıdan seçin.",
+/* TR_SELECT_INSTALLATION_MEDIA */
+"Kurulum ortamını seçin",
+/* TR_SELECT_INSTALLATION_MEDIA_LONG */
+"%s birden fazla kaynaktan kurulabilir. En basit makineler de CD-ROM sürücüsü kullanmaktadır. Eğer bilgisayarınızda bir sürücü yoksa HTTP veya FTP üzerinden ayrıca kurulum dosyaları olan başka bir LAN üzerindeki makineden kurulum yapabilirsiniz.",
+/* TR_SELECT_NETWORK_DRIVER */
+"Ağ sürücüsünü seçin",
+/* TR_SELECT_NETWORK_DRIVER_LONG */
+"Bu makinede kurulu olan kart için bir ağ sürücüsü seçin. EL İLE seçeneğini seçerseniz özel gereksinimleri olan bir kart için (ISA kartlar gibi) sürücü modül adı ve parametrelerini yazmanız istenecektir",
+/* TR_SELECT_THE_INTERFACE_YOU_WISH_TO_RECONFIGURE */
+"Yeniden yapılandırmak istediğiniz ara birimi seçin.",
+/* TR_SELECT_THE_ITEM */
+"Yapılandırmak istediğiniz nesneyi seçin.",
+/* TR_SETTING_ADMIN_PASSWORD */
+"%s 'admin' kullanıcı parolası ayarlanıyor...",
+/* TR_SETTING_ROOT_PASSWORD */
+"'root' parolası ayarlanıyor....",
+/* TR_SETTING_SETUP_PASSWORD */
+"KALDIRILACAK",
+/* TR_SETUP_FINISHED */
+"Kurulum tamamlandı. Tamam seçneği ile ilerleyin.",
+/* TR_SETUP_NOT_COMPLETE */
+"Başlangıç kurulumu tamamlanamadı. Şimdi kurulumu tekrar çalıştırarak ayarlarınızın düzgün yapılmış olduğundan emin olun.",
+/* TR_SETUP_PASSWORD */
+"KALDIRILACAK",
+/* TR_SET_ADDITIONAL_MODULE_PARAMETERS */
+"Ek modül parametreleri ayarlayın",
+/* TR_SINGLE_GREEN */
+"Sadece YEŞİL ara birim için ayarlarınızı yapılandırın.",
+/* TR_SKIP */
+"Atla",
+/* TR_START_ADDRESS */
+"Başlangıç adresi:",
+/* TR_START_ADDRESS_CR */
+"Başlangıç adresi\n",
+/* TR_STATIC */
+"Statik",
+/* TR_SUGGEST_IO */
+"(öneri %x)",
+/* TR_SUGGEST_IRQ */
+"(öneri %d)",
+/* TR_THIS_DRIVER_MODULE_IS_ALREADY_LOADED */
+"Bu sürücü modülü zaten yüklü.",
+/* TR_TIMEZONE */
+"Zaman dilimi",
+/* TR_TIMEZONE_LONG */
+"Aşağıdaki listeden bulunduğunuz zaman dilimini seçin.",
+/* TR_UNABLE_TO_EJECT_CDROM */
+"CD-ROM çıkarmak için açılamıyor.",
+/* TR_UNABLE_TO_EXTRACT_MODULES */
+"Modüller ayıklanamıyor.",
+/* TR_UNABLE_TO_FIND_ANY_ADDITIONAL_DRIVERS */
+"Herhangi bir ek sürücü bulmak için açılamıyor.",
+/* TR_UNABLE_TO_FIND_AN_ISDN_CARD */
+"Bu bilgisayar da bir ISDN kartı bulunamadı. Kart bir ISA türüdür veya özel gereksinimleri olan bir kart olabilir. Bu durumda ek modül parametreleri belirtmeniz gerekebilir.",
+/* TR_UNABLE_TO_INITIALISE_ISDN */
+"ISDN başlatmak için açılamıyor.",
+/* TR_UNABLE_TO_INSTALL_FILES */
+"Dosyaları kurmak için açılamıyor.",
+/* TR_UNABLE_TO_INSTALL_LANG_CACHE */
+"Dil dosyalarını kurmak için açılamıyor.",
+/* TR_UNABLE_TO_INSTALL_GRUB */
+"GRUB kurulamıyor.",
+/* TR_UNABLE_TO_LOAD_DRIVER_MODULE */
+"Sürücü modülü yüklenemiyor.",
+/* TR_UNABLE_TO_MAKE_BOOT_FILESYSTEM */
+"Ön yükleme dosya sistemi oluşturulamıyor.",
+/* TR_UNABLE_TO_MAKE_LOG_FILESYSTEM */
+"Günlük dosya sistemi oluşturulamıyor.",
+/* TR_UNABLE_TO_MAKE_ROOT_FILESYSTEM */
+"Root dosya sistemi oluşturulamıyor.",
+/* TR_UNABLE_TO_MAKE_SWAPSPACE */
+"Takas alanı oluşturulamıyor.",
+/* TR_UNABLE_TO_MAKE_SYMLINK_DEV_HARDDISK */
+"Sembolik bağı oluşturulamıyor: /dev/harddisk.",
+/* TR_UNABLE_TO_MAKE_SYMLINK_DEV_HARDDISK1 */
+"Sembolik bağı oluşturulamıyor: /dev/harddisk1.",
+/* TR_UNABLE_TO_MAKE_SYMLINK_DEV_HARDDISK2 */
+"Sembolik bağı oluşturulamıyor: /dev/harddisk2.",
+/* TR_UNABLE_TO_MAKE_SYMLINK_DEV_HARDDISK3 */
+"Sembolik bağı oluşturulamıyor: /dev/harddisk3.",
+/* TR_UNABLE_TO_MAKE_SYMLINK_DEV_HARDDISK4 */
+"Sembolik bağı oluşturulamıyor: /dev/harddisk4.",
+/* TR_UNABLE_TO_MAKE_SYMLINK_DEV_ROOT */
+"Sembolik bağı oluşturulamıyor: /dev/root.",
+/* TR_UNABLE_TO_MOUNT_BOOT_FILESYSTEM */
+"Ön yükleme dosya sistemi bağlanamadı.",
+/* TR_UNABLE_TO_MOUNT_LOG_FILESYSTEM */
+"Günlük dosya sistemi bağlanamadı.",
+/* TR_UNABLE_TO_MOUNT_PROC_FILESYSTEM */
+"Proc dosya sistemi bağlanamadı.",
+/* TR_UNABLE_TO_MOUNT_ROOT_FILESYSTEM */
+"Root dosya sistemi bağlanamadı.",
+/* TR_UNABLE_TO_MOUNT_SWAP_PARTITION */
+"Takas bölümü bağlanamadı.",
+/* TR_UNABLE_TO_OPEN_HOSTS_FILE */
+"Ana bilgisayar dosyası açılamadı.",
+/* TR_UNABLE_TO_OPEN_SETTINGS_FILE */
+"Ayarlar dosyası açılamadı.",
+/* TR_UNABLE_TO_PARTITION */
+"Dsik bölümleri açılamadı.",
+/* TR_UNABLE_TO_REMOVE_TEMP_FILES */
+"Geçici olarak indirilen dosyalar kaldırılamıyor.",
+/* TR_UNABLE_TO_SET_HOSTNAME */
+"Ana bilgisayar adı ayarlamak için açılamıyor.",
+/* TR_UNABLE_TO_UNMOUNT_CDROM */
+"CDROM/floppydisk ayrılamıyor.",
+/* TR_UNABLE_TO_UNMOUNT_HARDDISK */
+"Sabit disk ayrılamıyor.",
+/* TR_UNABLE_TO_WRITE_ETC_FSTAB */
+"Yazmak için açılamıyor: /etc/fstab",
+/* TR_UNABLE_TO_WRITE_ETC_HOSTNAME */
+"Yazmak için açılamıyor: /etc/hostname",
+/* TR_UNABLE_TO_WRITE_ETC_HOSTS */
+"Yazmak için açılamıyor: /etc/hosts.",
+/* TR_UNABLE_TO_WRITE_ETC_HOSTS_ALLOW */
+"Yazmak için açılamıyor: /etc/hosts.allow.",
+/* TR_UNABLE_TO_WRITE_ETC_HOSTS_DENY */
+"Yazmak için açılamıyor: /etc/hosts.deny.",
+/* TR_UNABLE_TO_WRITE_VAR_SMOOTHWALL_ETHERNET_SETTINGS */
+"Yazmak için açılamıyor: %s/ethernet/settings.",
+/* TR_UNABLE_TO_WRITE_VAR_SMOOTHWALL_MAIN_HOSTNAMECONF */
+"Yazmak için açılamıyor: %s/main/hostname.conf",
+/* TR_UNABLE_TO_WRITE_VAR_SMOOTHWALL_MAIN_SETTINGS */
+"Yazmak için açılamıyor: %s/main/settings.",
+/* TR_UNCLAIMED_DRIVER */
+"Bu türe ait sahipsiz bir ethernet kartı yok:\n%s\n\nBunu atayabilirsiniz:",
+/* TR_UNKNOWN */
+"BİLİNMEYEN",
+/* TR_UNSET */
+"KURULMAMIŞ",
+/* TR_USB_KEY_VFAT_ERR */
+"Bu USB anahtarı geçersiz (vfat bölümü bulunamadı).",
+/* TR_US_NI1 */
+"US NI1",
+/* TR_WARNING */
+"UYARI",
+/* TR_WARNING_LONG */
+"Bu IP adresini değiştiriseniz %s makinesi ile uzak oturum bağlantısı kopar ve yeniden IP adresi girmeniz gerekir. Bu riskli bir işlemdir. Bu işlem sırasında bir şeyler ters giderse düzeltmek için makineye fiziksel erişiminiz olmalıdır. Makineye fiziksel erişiminiz varsa bu işlemi gerçekleştirin.",
+/* TR_WELCOME */
+"%s kurulum programına hoş geldiniz. Sonraki ekranların herhangi birinde İptal seçeneğini seçtiğinizde bilgisayar yeniden başlatılacaktır.",
+/* TR_YOUR_CONFIGURATION_IS_SINGLE_GREEN_ALREADY_HAS_DRIVER */
+"Zaten atanmış bir sürücünüz var. Yapılandırma sadece YEŞİL ara birim için yapılır.",
+/* TR_YES */
+"Evet",
+/* TR_NO */
+"Hayır",
+/* TR_AS */
+"-",
+/* TR_IGNORE */
+"Yok say",
+/* TR_PPP_DIALUP */
+"PPP ÇEVİRMELİ AĞ (PPPoE, modem, ATM ...)",
+/* TR_DHCP */
+"DHCP",
+/* TR_DHCP_STARTSERVER */
+"DHCP-sunucusu başlatılıyor ...",
+/* TR_DHCP_STOPSERVER */
+"DHCP-sunucusu durduruluyor ...",
+/* TR_LICENSE_ACCEPT */
+"Bu lisansı kabul ediyorum.",
+/* TR_LICENSE_NOT_ACCEPTED */
+"Lisans kabul edilmedi. Çık!",
+/* TR_EXT2FS_DESCR */
+"Ext2 - Günlük olmadan dosya sistemi (flash sürücüler için önerilen)",
+/* TR_EXT3FS_DESCR */
+"Ext3 - Günlük ile dosya sistemi",
+/* TR_EXT4FS_DESCR */
+"Ext4 - Günlük ile dosya sistemi",
+/* TR_REISERFS_DESCR */
+"ReiserFS - Günlük ile dosya sistemi",
+/* TR_NO_LOCAL_SOURCE */
+"Yerel kaynak medya bulunamadı. İndirme başlatılıyor​​.",
+/* TR_DOWNLOADING_ISO */
+"Kurulum kalıbı indiriliyor ...",
+/* TR_DOWNLOAD_ERROR */
+"İndirirken hata!",
+/* TR_DHCP_FORCE_MTU */
+"DHCP mtu zorla:",
+/* TR_IDENTIFY */
+"Belirle",
+/* TR_IDENTIFY_SHOULD_BLINK */
+"Seçilen bağlantı noktasının şimdi yanıp sönmesi gerekir...",
+/* TR_IDENTIFY_NOT_SUPPORTED */
+"İşlev bu bağlantı noktası tarafından desteklenmiyor.",
+};
index b9c0fb68aa816f26aac6f6ad6cbe02a8ceed787e..415766d123da4b2bbd5ab7c87fa8ffda8b4b906b 100644 (file)
@@ -57,8 +57,6 @@ DIR_CONF    = $(LFS_BASEDIR)/config
 DIR_INFO    = $(LFS_BASEDIR)/log
 DIR_TMP     = /tmp
 
-KGCC = gcc
-
 ###############################################################################
 # Common Macro Definitions
 ###############################################################################
@@ -68,7 +66,7 @@ KGCC = gcc
 #
 define FIND_FILES
        cd $(ROOT)/ && find -mount \
-       -not -path './tools*' -not -path './tmp*' -not -path './usr/src*' \
+       -not -path './tools*' -not -path './tmp*' -not -path './usr/src*' -not -path './run/*' \
        -not -path './dev*' -not -path './proc*' -not -path './install*' | sort
 endef
 
index 040316d97596252e3439f237cd212ba6bf5f2a83..17064fba09905906bf13ee0db24e084081a84774 100644 (file)
--- a/lfs/GeoIP
+++ b/lfs/GeoIP
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        #
@@ -25,7 +25,7 @@
 include Config
 
 VER        = 1.17
-DATVER     = 07052013
+DATVER     = 06052014
 
 THISAPP    = Geo-IP-PurePerl-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -43,7 +43,7 @@ $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 GeoIP.dat-$(DATVER).gz = $(DL_FROM)/GeoIP.dat-$(DATVER).gz
 
 $(DL_FILE)_MD5 = 42a6b9d4dd2563a20c8998556216e1de
-GeoIP.dat-$(DATVER).gz_MD5 = 634d72f4ffbb2de57efa468add572d38
+GeoIP.dat-$(DATVER).gz_MD5 = aba5fc86202337c53a33bbc47d2083d0
 
 install : $(TARGET)
 
similarity index 93%
rename from lfs/as86
rename to lfs/HTML-Template
index 0acc340274ac32c289a9ae8c5af8f6935352b155..fb837ba5267930e1320b69d2c2057b6575be1b62 100644 (file)
--- a/lfs/as86
 
 include Config
 
-VER        = 0.16.17
+VER        = 2.94
 
-THISAPP    = as86-$(VER)
+THISAPP    = HTML-Template-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 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 = 69bca69aec7a272362bc9e050d289d12
+$(DL_FILE)_MD5 = 7b7683c3672d55fb922734ea1e9ba7e8
 
 install : $(TARGET)
 
@@ -71,7 +70,9 @@ $(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) && perl Makefile.PL
+       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
+
index 7c12d2c1f456cf2772fcbe2079f760e76aad09c1..e807e0d29f64a63d1c5add95ccb04e838977f8f2 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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        = 1.36
+VER        = 1.55
 
 THISAPP    = Net-SSLeay-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 54061638720dd6a325395331c77f21d8
+$(DL_FILE)_MD5 = 473b8d66ca69d5784bb0e428721f58e0
 
 install : $(TARGET)
 
@@ -70,9 +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) && sed -i "s%,'y'%,'n'%" Makefile.PL
        cd $(DIR_APP) && yes 'n' | perl Makefile.PL
+
        cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
        cd $(DIR_APP) && make install
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 9189655a828998005dfdcfef55559a0437f2cf97..b9c3bb452ca437f99671a82aea3f8f4bbeb03326 100644 (file)
--- a/lfs/alsa
+++ b/lfs/alsa
@@ -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        #
@@ -25,9 +25,9 @@
 include Config
 
 
-VER        = 1.0.26
-UVER       = 1.0.26
-FVER       = 1.0.25
+VER        = 1.0.27.1
+UVER       = 1.0.27.1
+FVER       = 1.0.27
 
 VERSUFIX   = ipfire$(KCFG)
 
@@ -36,7 +36,7 @@ DL_FILE    = $(THISAPP).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 PROG       = alsa
-PAK_VER    = 11
+PAK_VER    = 12
 
 DEPS       = ""
 
@@ -52,9 +52,9 @@ $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 alsa-utils-$(UVER).tar.bz2 = $(DL_FROM)/alsa-utils-$(UVER).tar.bz2
 alsa-firmware-$(FVER).tar.bz2 = $(DL_FROM)/alsa-firmware-$(FVER).tar.bz2
 
-$(DL_FILE)_MD5 = 2dfa35d28471d721e592b616beedf965
-alsa-utils-$(UVER).tar.bz2_MD5 = 4dcf1017fafc91603af96705c073eca9
-alsa-firmware-$(FVER).tar.bz2_MD5 = f1939da45b162c83a726c54a470ef139
+$(DL_FILE)_MD5 = 17102aaab10e9d4b19f6b02937bab015
+alsa-utils-$(UVER).tar.bz2_MD5 = 3d81357b997744a139881ef72bc6921a
+alsa-firmware-$(FVER).tar.bz2_MD5 = b373b350d5151dd7d64db2fc12936b04
 
 install : $(TARGET)
 
index c3d91560290eb02afdf3272d37899dbe0a63600f..5e886254694793fb355db4612de48d8b208d7430 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012   IPFire Team  <info@ipfire.org>                    #
+# Copyright (C) 2007-2014   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        #
@@ -25,7 +25,7 @@
 
 include Config
 
-VER        = 2.2.23
+VER        = 2.2.27
 
 THISAPP    = httpd-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -47,7 +47,7 @@ objects = $(DL_FILE) \
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 httpd-2.2.2-config-1.patch = $(DL_FROM)/httpd-2.2.2-config-1.patch
 
-$(DL_FILE)_MD5 = ca133de0e4b4b15316990a97186b9993
+$(DL_FILE)_MD5 = 8faef0decf3fa7e69b2568eb2105a3d8
 httpd-2.2.2-config-1.patch_MD5 = e02a3ec5925eb9e111400b9aa229f822
 
 install : $(TARGET)
@@ -98,6 +98,10 @@ ifeq "$(PASS)" "C"
        chmod -R 755 /srv/web/ipfire/cgi-bin
        chmod -R 644 /srv/web/ipfire/html
        chmod 755 /srv/web/ipfire/html /srv/web/ipfire/html/{index.cgi,redirect.cgi,dial.cgi,images,include,themes,themes/*,themes/*/*}
+       ln -svf ipfire /srv/web/ipfire/html/themes/ipfire-rounded
+
+       # Reset permissions of redirect templates and theme directories
+       find /srv/web/ipfire/html/{redirect-templates,themes} -type d | xargs chmod -v 755
 else
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && patch -Np1 -i $(DIR_DL)/httpd-2.2.2-config-1.patch
diff --git a/lfs/arm b/lfs/arm
new file mode 100644 (file)
index 0000000..2fbf65e
--- /dev/null
+++ b/lfs/arm
@@ -0,0 +1,83 @@
+###############################################################################
+#                                                                             #
+# 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/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 1.4.5.0
+
+THISAPP    = arm-$(VER)
+DL_FILE    = $(THISAPP).tar.bz2
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/arm
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = arm
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = f85f306e50b90796ab7097d948e8fcf2
+
+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) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/arm-dont-require-distutils.patch
+       cd $(DIR_APP) && ./install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index 88263a19a885cc602b687b950a5989e3dd15c361..0ffbd32499a649d0d50a38cba20052c9742e71a0 100644 (file)
--- a/lfs/avahi
+++ b/lfs/avahi
@@ -32,9 +32,9 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET = $(DIR_INFO)/$(THISAPP)
 PROG       = avahi
-PAK_VER    = 3
+PAK_VER    = 4
 
-DEPS      = "libdaemon"
+DEPS      = "dbus libdaemon"
 
 ###############################################################################
 # Top-level Rules
@@ -77,10 +77,20 @@ $(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 --with-avahi-user=avahi \
-       --disable-qt3 --disable-qt4 --disable-gtk --disable-gtk3 \
-       --disable-pygtk --disable-python-dbus --disable-mono \
-       --disable-monodoc --with-distro=none --sysconfdir=/etc
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --sysconfdir=/etc \
+               --localstatedir=/var \
+               --with-avahi-user=avahi \
+               --disable-qt3 \
+               --disable-qt4 \
+               --disable-gtk \
+               --disable-gtk3 \
+               --disable-pygtk \
+               --disable-python-dbus \
+               --disable-mono \
+               --disable-monodoc \
+               --with-distro=none
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        cp -avf $(DIR_SRC)/config/avahi/avahi /etc/init.d/
index dc0d22c4130837eb3727e0916ca0a4ff68d68da5..437677b737a606f9afbe729a00e684b548257e85 100644 (file)
--- a/lfs/beep
+++ b/lfs/beep
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.2.2
+VER        = 1.3
 
 THISAPP    = beep-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = d541419fd7e5642952d7b48cbb40c712
+$(DL_FILE)_MD5 = 49c340ceb95dbda3f97b2daafac7892a
 
 install : $(TARGET)
 
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.
diff --git a/lfs/bitstream b/lfs/bitstream
new file mode 100644 (file)
index 0000000..2985f55
--- /dev/null
@@ -0,0 +1,84 @@
+###############################################################################
+#                                                                             #
+# 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/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 1.0
+
+THISAPP    = bitstream-$(VER)
+DL_FILE    = $(THISAPP).tar.bz2
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = bitstream
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 5ba0c96d6c7c9131ba60a9a8fc147556
+
+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) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bitstream-makefile.patch
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index 33e126cfaaea42a272f2d4b077d5a1cc6ca12ef4..dc5eec7ea567ca15c60000e6187cebcd39c42cfa 100644 (file)
@@ -109,6 +109,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_SRC)/bluez-hcidump-1.42 && make $(MAKETUNING)
        cd $(DIR_SRC)/bluez-hcidump-1.42 && make install
        mv -f /etc/udev/bluetooth.rules /lib/udev/rules.d/24-bluetooth.rules
+       # Patch udev rules for new udev version
+       sed -i -e "s/SYSFS{/ATTRS{/g" /lib/udev/rules.d/24-bluetooth.rules
+       sed -i -e "s/BUS==/SUBSYSTEMS==/g" /lib/udev/rules.d/24-bluetooth.rules
        # Change bluetooth peername to Hostname-devicenumber
        sed -i -e 's|name "BlueZ (%d)";|name "%h-%d";|g' /etc/bluetooth/hcid.conf
        # Create empty config files
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 8d7885975110d1ce35f424b252f0fe494f6d575d..f44e7b40ebb0301f5d83429f47e7454db5ecf947 100644 (file)
--- a/lfs/cacti
+++ b/lfs/cacti
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.8.7h
+VER        = 0.8.8b
 
 THISAPP    = cacti-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = cacti
-PAK_VER    = 4
+PAK_VER    = 5
 
 DEPS       = "netsnmpd mysql"
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 58c9371341f49a190ae11a85118e598d
+$(DL_FILE)_MD5 = acb40deae073ca22e5c01a8e3ba389fb
 
 install : $(TARGET)
 
@@ -54,7 +54,6 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
 
 md5 : $(subst %,%_MD5,$(objects))
 
-
 dist: 
        @$(PAK)
 
@@ -78,6 +77,21 @@ $(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 -p1 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8a-legal.patch
+       cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8a-replace_treeview_by_jquery.jstree.patch
+       cd $(DIR_APP) && patch -p2 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8b-html-injection.patch
+       cd $(DIR_APP) && patch -p2 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8b-remote-command-execution.patch
+       cd $(DIR_APP) && patch -p2 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8b-rra-comments.patch
+       cd $(DIR_APP) && patch -p2 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8b-sanitize-variables.patch
+       cd $(DIR_APP) && patch -p2 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8b-sql-injection-shell-escaping.patch
+       cp -vf \
+               $(DIR_SRC)/config/cacti/d.gif \
+               $(DIR_SRC)/config/cacti/d.png \
+               $(DIR_SRC)/config/cacti/throbber.gif \
+               $(DIR_APP)/include/js/jquery/themes/default/
+       cd $(DIR_APP) && rm -rf include/treeview
+
        @rm -rf /var/cacti /usr/share/cacti
        mkdir -pv /var/cacti /usr/share/cacti
 
@@ -92,6 +106,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        ln -s /var/cacti/log /usr/share/cacti/log
        ln -s /var/cacti/rra /usr/share/cacti/rra
 
+       -mkdir -pv /etc/logrotate.d
+       install -v -m 644 $(DIR_SRC)/config/cacti/cacti.logrotate /etc/logrotate.d/cacti
+
        chown -R nobody:nobody /var/cacti/rra /var/cacti/log
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 36dbe01e89b8b34820eeba5df11aa3a5ef929fce..5a85002bae545d35d6b3bb75e086505bcaaaf796 100644 (file)
--- a/lfs/cdrom
+++ b/lfs/cdrom
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2010  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        #
@@ -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
 
@@ -77,6 +81,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd /tmp && tar  cf /install/cdrom/$(SNAME)-$(VERSION).tlz $(TAR_OPTIONS) * && rm -rf *
 
        # Other files
+       touch /install/cdrom/$(SNAME)-$(VERSION)-core$(CORE).media
        sed 's/VERSION/$(VERSION)/' $(DIR_SRC)/config/cdrom/README.txt > /install/cdrom/README.txt
        cp $(DIR_SRC)/doc/COPYING                               /install/cdrom/
        cp $(DIR_SRC)/doc/{ChangeLog,packages-list.txt} /install/cdrom/doc
@@ -91,11 +96,15 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 ifneq "$(MACHINE_TYPE)" "arm"
        cp /boot/vmlinuz-$(KVER)-ipfire             /install/cdrom/boot/isolinux/vmlinuz
        cp /install/images/initrd                   /install/cdrom/boot/isolinux/instroot
-       cp $(DIR_SRC)/config/syslinux/syslinux.cfg  /install/cdrom/boot/isolinux/isolinux.cfg
-       cp $(DIR_SRC)/config/syslinux/boot.msg      /install/cdrom/boot/isolinux/boot.msg
-       cp $(DIR_SRC)/config/syslinux/splash.lss    /install/cdrom/boot/isolinux/splash.lss
+       cp $(DIR_SRC)/config/syslinux/boot.png      /install/cdrom/boot/isolinux/boot.png
        cp /usr/lib/memtest86+/memtest.bin          /install/cdrom/boot/isolinux/memtest
+       cp /usr/share/ipfire-netboot/ipxe.lkrn      /install/cdrom/boot/isolinux/netboot
        cp /usr/share/syslinux/isolinux.bin         /install/cdrom/boot/isolinux/isolinux.bin
+       cp /usr/share/hwdata/pci.ids                /install/cdrom/boot/isolinux/pci.ids
+       cp -vf /usr/share/syslinux/*.c32            /install/cdrom/boot/isolinux/
+       sed -e "s/VERSION/$(VERSION) - Core $(CORE)/g" \
+               $(DIR_SRC)/config/syslinux/syslinux.cfg \
+               > /install/cdrom/boot/isolinux/isolinux.cfg
 endif
        cd /install/cdrom && find -type f ! -name md5sum.txt | grep -v "./boot" | \
                                                xargs md5sum > md5sum.txt
@@ -108,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 c0f70d15549ac2aa27f714b1e85c579f091da44e..6e6d557d2cfb648150fa150e3a747a2d08b5c7db 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.2.0p3
+VER        = 1.2.2p2
 
 THISAPP    = check_mk_agent-$(VER)
 DL_FILE    = check_mk-${VER}.tar.gz
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 2c0f27fe8b6e3455557ecb30954d8a79
+$(DL_FILE)_MD5 = caa0f7662b4d170b2b6db2516bd41a89
 
 install : $(TARGET)
 check : $(patsubst %,$(DIR_CHK)/%,$(objects))
@@ -78,6 +78,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && tar xzf agents.tar.gz
        cd $(DIR_APP) && install -v -m 755 check_mk_agent.linux /usr/bin/check_mk_agent
+       -mkdir /etc/xinetd.d
+       cd $(DIR_APP) && install -v -m 755 xinetd.conf /etc/xinetd.d/check_mk_agent
        cd $(DIR_APP) && gcc $(CFLAGS) waitmax.c -o waitmax
        cd $(DIR_APP) && install -v -m 755 waitmax /usr/bin/waitmax
        @rm -rf $(DIR_APP)
index bae350cb158201208d90babadb5392c291f3d3d6..58f03417ad1175a1c59fdfbb985d0e5f29a7e53b 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        = 0.97.8
+VER        = 0.98.4
 
 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    = 26
 
 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 = 6d409eab6c311de05a0a591fccd2ec83
 
 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,11 @@ $(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/clamscan
+       paxctl -cm /usr/bin/freshclam
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index b950d454dddd510ddc9ea38ba9e39332b553f4fb..57a9b163ffc5d843a91821d9b89bdefe9ac11ec8 100644 (file)
@@ -26,14 +26,14 @@ include Config
 
 VERSUFIX=ipfire$(KCFG)
 
-VER        = 3.8-1-u
+VER        = 3.8.3-2-snpu
 
 ifeq "$(KCFG)" "-xen"
-       KVER = 2.6.32.60
+       KVER = 2.6.32.61
 endif
 
 THISAPP    = compat-drivers-$(VER)
-DL_FILE    = compat-drivers-$(VER).tar.xz
+DL_FILE    = compat-drivers-$(VER).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX)
@@ -42,13 +42,15 @@ TARGET     = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX)
 # Top-level Rules
 ###############################################################################
 
-objects = $(DL_FILE) asix-4.5.0a.tar.xz
+objects = $(DL_FILE) asix-4.7.0a.tar.xz asix_gb-1.4.0a.tar.xz
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-asix-4.5.0a.tar.xz = $(DL_FROM)/asix-4.5.0a.tar.xz
+asix-4.7.0a.tar.xz = $(DL_FROM)/asix-4.7.0a.tar.xz
+asix_gb-1.4.0a.tar.xz = $(DL_FROM)/asix_gb-1.4.0a.tar.xz
 
-$(DL_FILE)_MD5 = 557e3099c642455ec272d9ddf46de484
-asix-4.5.0a.tar.xz_MD5=4219ce7c0cae4fdb580f30ea50cad8e0
+$(DL_FILE)_MD5 = 5a1e27e5b694aa5022116a5a3220bfdc
+asix-4.7.0a.tar.xz_MD5=491f7e8c3ee74433975812d86a0fa98b
+asix_gb-1.4.0a.tar.xz_MD5=9c9db731631abf00da2069d03253f9a7
 
 install : $(TARGET)
 
@@ -78,6 +80,8 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xaf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-drivers-3.8-1-u-kref_get_unless_zero.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch
 
        # kfifo has no license info and taints kernel
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-wireless-2.6.39_kfifo_module_info.patch
@@ -96,8 +100,13 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-wireless-2.6.34-usbnet_compile.patch
 
-       # Build Updated asix usb-lan driver
-       cd $(DIR_APP)/drivers/net/usb && tar xvJf $(DIR_DL)/asix-4.5.0a.tar.xz
+       # Build Updated asix usb lan driver
+       cd $(DIR_APP)/drivers/net/usb && tar xvJf $(DIR_DL)/asix-4.7.0a.tar.xz
+
+       # Build Updated asix usb gigabit lan driver
+       cd $(DIR_APP)/drivers/net/usb && tar xvJf $(DIR_DL)/asix_gb-1.4.0a.tar.xz
+       echo 'obj-$$(CONFIG_USB_ASIX_GB) += asix_gb.o' >> $(DIR_APP)/drivers/net/usb/Makefile
+       cd $(DIR_APP) && echo export CONFIG_USB_ASIX_GB=m >> config.mk
 
        # Add libartas uAP driver
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-wireless-3.5-libertas_uap.patch
@@ -111,9 +120,6 @@ ifeq "$(MACHINE_TYPE)" "arm"
        # disable video because it not build on Arm
        cd $(DIR_APP) && sed -i -e \
                "s/export CONFIG_COMPAT_VIDEO_MODULES=y//g" config.mk
-
-       # Add a missing vmalloc ti atx
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-drivers-3.8-arm_missing_vmalloc.patch
 endif
 
        # Erase some modules that are obsolete or moved to other path
index f8fe4264293fbb9ff273c8df6b643dadb76b723f..fcb08b0d495713ac886d2019a12b7d1a503c0e74 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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        #
@@ -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 \
-                       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 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 ethernet/aliases ethernet/settings ethernet/known_nics ethernet/scanned_nics \
-           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 \
+           ppp/settings-5 ppp/settings proxy/settings proxy/squid.conf 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/modem-lib.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/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-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
+       cp $(DIR_SRC)/config/fwhosts/customservices             $(CONFIG_ROOT)/fwhosts/customservices.default
        # Oneliner configfiles
        echo  "ENABLED=off"             > $(CONFIG_ROOT)/vpn/settings
        echo  "VPN_DELAYED_START=0"     >>$(CONFIG_ROOT)/vpn/settings
@@ -110,10 +116,25 @@ $(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 converters executable
+       chmod 755 /usr/sbin/convert-*
 
        # Modify variables in header.pl
        sed -i -e "s+CONFIG_ROOT+$(CONFIG_ROOT)+g" \
@@ -131,16 +152,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 521eb933dfc61081f4f6b007662fb1a0ac679a3f..e87b7adbd3fdf73c8afbdf0e3bf2444cb0dc13c6 100644 (file)
--- a/lfs/crda
+++ b/lfs/crda
@@ -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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.1.1
+VER        = 1.1.3
 
 THISAPP    = crda-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -41,7 +41,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 5fc77af68b3e21736b8ef2f8b061c810
+$(DL_FILE)_MD5 = 29579185e06a75675507527243d28e5c
 
 install : $(TARGET)
 
index eb0e2f66021becc78dfaf64949b9c9a19982eaed..14e463e2bf5d1bb7ec5f38531511094c7aafa8a1 100644 (file)
@@ -25,7 +25,7 @@
 include Config
 
 ifeq "$(KCFG)" "-xen"
-       KVER = 2.6.32.60
+       KVER = 2.6.32.61
 endif
 
 VERSUFIX=ipfire$(KCFG)
index f182538fb8aa72b660256640d518d516c6e376b4..60f7e214e40964c5bdb49391924ed316d78e2c9a 100644 (file)
--- a/lfs/cups
+++ b/lfs/cups
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.4.8
+VER        = 1.7.0
 
 THISAPP    = cups-$(VER)
 DL_FILE    = $(THISAPP)-source.tar.bz2
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/cups-$(VER)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = cups
-PAK_VER    = 8
+PAK_VER    = 10
 
 DEPS       = "ghostscript"
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 0ec52d3f3c69bc2ab5ed70c594edbce6
+$(DL_FILE)_MD5 = 5ab496a2ce27017fcdb3d7ec4818a75a
 
 install : $(TARGET)
 
@@ -77,12 +77,22 @@ $(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) && ./configure --disable-nls --sysconfdir=/var/ipfire \
-                                       --enable-libusb=no
+       cd $(DIR_APP) && \
+               ./configure \
+                       --prefix=/usr \
+                       --sysconfdir=/var/ipfire \
+                       --localstatedir=/var \
+                       --enable-libusb \
+                       --disable-dbus \
+                       --disable-avahi
+
        cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
        cd $(DIR_APP) && make install
+
        cd $(DIR_APP) && ln -v -sf /usr/bin/smbspool /usr/lib/cups/backend/smb
+
        install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/cups /etc/rc.d/init.d
        cp -fv $(DIR_SRC)/config/cups/cupsd.conf /var/ipfire/cups/
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 1228f392a7c0231cfd6caa44a02ebf7b2305bc66..715d79d07c305e1f80153fbd159ce37d346a8a53 100644 (file)
--- a/lfs/curl
+++ b/lfs/curl
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 7.29.0
+VER        = 7.31.0
 
 THISAPP    = curl-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 4f57d3b4a3963038bd5e04dbff385390
+$(DL_FILE)_MD5 = 6f26843f7e3a2fb06e02f68a55efe8c7
 
 install : $(TARGET)
 
@@ -70,7 +70,7 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xvf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && ./configure --prefix=/usr --disable-ipv6
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        # Create symlink to new curl lib for old binaries
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 \
diff --git a/lfs/daq b/lfs/daq
index cac012bec4b84416581f54bf2e921529453a318e..fa8f2a89c5e7dbd228b5fb3089dd9f1ff81123fc 100644 (file)
--- a/lfs/daq
+++ b/lfs/daq
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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        = 2.0.0
+VER        = 2.0.2
 
 THISAPP    = daq-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = a00855a153647df76d47f1ea454f74ae
+$(DL_FILE)_MD5 = 865bf9b750a2a2ca632591a3c70b0ea0
 
 install : $(TARGET)
 
index 0779a6b73bd2d953ba536d5489f9b9d2260d8333..aacf7474f69da3408d0a334c99a245d0615bd3ee 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        #
@@ -73,6 +73,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dracut-006_lzma.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dracut-006_remove_cdrom_wait.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dracut-006_add_run_dir.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dracut-006_remove_scsi_wait.patch
 
        cd $(DIR_APP) && cp -vf $(DIR_SRC)/src/dracut/switch_root.c .
 
@@ -95,9 +97,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 50e21fbff0b990b77155b0019cd9b4b368ceabf0..d9ae7c63f8c0cc63b3ab7946e0097b67e32bf67b 100644 (file)
--- a/lfs/e1000
+++ b/lfs/e1000
@@ -29,7 +29,7 @@ VERSUFIX = ipfire$(KCFG)
 # e1000 vendor modul is only for legacy xen kernel
 # The 3.2.x kernel has newer module.
 
-KVER = 2.6.32.60
+KVER = 2.6.32.61
 MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/e1000/
 
 VER        = 8.0.35
index 693c054a7f187cbee1bf1b9fe5cdd0beb3f6f91d..10a42ee766c09fa764e571fc9a68bbb5effbcc34 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  IPFire Team <info@ipfire.org>                      #
+# Copyright (C) 2007-2014  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
 
 VERSUFIX = ipfire$(KCFG)
-ifeq "$(KCFG)" "-xen"
-       KVER = 2.6.32.60
-       MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/e1000e
-else
-       MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/e1000e
-endif
+MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/e1000e
 
-VER        = 2.1.4
+VER        = 3.0.4
 
 THISAPP    = e1000e-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -48,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e8dba81bfc86c6c75f39d025fb70899f
+$(DL_FILE)_MD5 = 2d8364cd2043ef5c71291a4ca8b8084e
 
 install : $(TARGET)
 
index 33b9f9caae295355fe3f836503d72974001d7eb5..66b9a65b02159b4c0a0f58590f3e0daaf6577620 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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        = 6.3.16
+VER        = 6.3.26
 
 THISAPP    = fetchmail-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = fetchmail
-PAK_VER    = 6
+PAK_VER    = 7
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 1a40acb371376c7d54fe468c99dfc216
+$(DL_FILE)_MD5 = 61b66faad044afa26e142bb1791aa2b3
 
 install : $(TARGET)
 
@@ -76,10 +76,15 @@ $(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) && ./configure --prefix=/usr --with-ssl --disable-nls
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --with-ssl \
+               --disable-nls
+
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
+
        echo "set logfile /var/log/fetchmail.log" > ~/.fetchmailrc
        echo "set no bouncemail" >> ~/.fetchmailrc
        echo "set postmaster root" >> ~/.fetchmailrc
@@ -87,7 +92,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        echo "#poll SERVERNAME :" >> ~/.fetchmailrc
        echo "#    user <username> pass <password>;" >> ~/.fetchmailrc
        echo "#    mda "/usr/bin/procmail -f %F -d %T";" >> ~/.fetchmailrc
+
        install -v -m 644 $(DIR_SRC)/config/backup/includes/fetchmail \
                /var/ipfire/backup/addons/includes/fetchmail
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 0ee9c3e0b1d0d57972e7d47632db11f41c31bac0..74947311fcbfbabf51e00071d6bf4f9f74ff2353 100644 (file)
@@ -31,10 +31,13 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = ffmpeg
-PAK_VER    = 4
+PAK_VER    = 5
 
 DEPS       = "ffmpeg-libs sdl lame libvorbis xvid"
 
+# Don't use PIC for libavcodec
+CFLAGS    += -fno-PIC -fno-strict-aliasing -Wa,--noexecstack
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
index d12b45bad3512a966cb61cb54fb433b671042826..b29c978055345917ccad80c346addd8300589099 100644 (file)
@@ -27,7 +27,7 @@ include Config
 VER        = 2008-04-13
 THISAPP    = ffmpeg-export-$(VER)
 PROG       = ffmpeg-libs
-PAK_VER    = 4
+PAK_VER    = 5
 
 DEPS       = ""
 
index 133111cdbd7466ea2617843085b6cdd3969a597d..0c36706569199978645aff06c6eeb397c3586711 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.1.7
+VER        = 2.1.10
 
 THISAPP    = fireinfo-v$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 97f6744c1ff61eb104a9278df12451c8
+$(DL_FILE)_MD5 = cc7838cda22d7d4e9bb177aa1dc6f25a
 
 install : $(TARGET)
 
@@ -70,11 +70,11 @@ $(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
 
-       # 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..4e28e4cd37746eb01d4d1211a5ff1ece6ea7acd4 100644 (file)
@@ -49,23 +49,38 @@ IMGinsts := /install/images/$(SNAME)-$(VERSION).1gb-ext4-scon.$(MACHINE)-full-co
 MNThdd   := /install/harddisk
 IMGpart  := /install/images/part_area
 IMGboot  := /install/images/bootfs
-# don't change SIZEboot this without checking Image size
-SIZEboot := 64
 IMGroot  := /install/images/rootfs
-SIZEroot := 600
+
+# All sizes in blocks
+ifeq "$(MACHINE_TYPE)" "arm"
+ S_OFFSET = 8192
+
+ # FAT32
+ PART_TYPE = c
+else
+ S_OFFSET = 32
+
+ # Logical
+ PART_TYPE = L
+endif
+
+# /boot:  64MB - OFFSET
+# /    : 700MB
+S_BOOT := $(shell echo $$(( 131072 - $(S_OFFSET) )))
+S_ROOT := 1433600
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        rm -rf $(MNThdd) $(IMGinst) $(IMGpart) $(IMGboot) $(IMGroot) && mkdir -p $(MNThdd)
 
        # Create first 32 sectors of image
-       dd bs=1k if=/dev/zero of=$(IMGpart) count=16
+       dd if=/dev/zero of=$(IMGpart) bs=512 count=$(S_OFFSET)
 
        # Create images for filesystems
-       dd bs=1K if=/dev/zero of=$(IMGboot) count=65520  # 64MB-16K
-       dd bs=1M if=/dev/zero of=$(IMGroot) count=$(SIZEroot)
+       dd if=/dev/zero of=$(IMGboot) bs=512 count=$(S_BOOT)
+       dd if=/dev/zero of=$(IMGroot) bs=512 count=$(S_ROOT)
 
        # Format them
-ifeq "$(MACHINE_TYPE)" "arm"
+ifeq "$(PART_TYPE)" "c"
        mkfs.vfat $(IMGboot)
 else
        mkfs.ext2 -F $(IMGboot)
@@ -86,7 +101,8 @@ 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/
+       cp -v /boot/zImage-ipfire-multi $(MNThdd)/boot/
        sync
        umount $(MNThdd)/boot
        mount -o loop $(IMGboot) $(MNThdd)/boot
@@ -104,7 +120,7 @@ endif
        mount --bind /sys  $(MNThdd)/sys
        chroot $(MNThdd) /usr/bin/perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
        sed -i -e "s|DEVICE1|UUID=$$(blkid -sUUID $(IMGboot) | cut -d'"' -f2)|g" $(MNThdd)/etc/fstab
-ifeq "$(MACHINE_TYPE)" "arm"
+ifeq "$(PART_TYPE)" "c"
        # ARM flash images have a VFAT partition for /boot.
        sed -i -e "s|ext2|vfat|" $(MNThdd)/etc/fstab
 endif
@@ -136,7 +152,7 @@ endif
        umount $(MNThdd)
 
        # zerofree the ext2 images to get better compression
-ifneq "$(MACHINE_TYPE)" "arm"
+ifneq "$(PART_TYPE)" "c"
        zerofree $(IMGboot)
        -fsck.ext2 -f -y $(IMGboot)
        fsck.ext2 -f -y $(IMGboot)
@@ -149,13 +165,8 @@ endif
        cat $(IMGpart) $(IMGboot) $(IMGroot) > $(IMGinst)
 
        # Write Partition table
-ifneq "$(MACHINE_TYPE)" "arm"
-       echo -e ",$(SIZEboot),L,*\n,0,0\n,$(SIZEroot),L\n,0,0\n" \
-               | sfdisk -D -uM -H 64 -S 32 $(IMGinst)
-else
-       echo -e ",$(SIZEboot),c,*\n,0,0\n,$(SIZEroot),L\n,0,0\n" \
-               | sfdisk -D -uM -H 64 -S 32 $(IMGinst)
-endif
+       echo -e "$(S_OFFSET),$(S_BOOT),$(PART_TYPE),*\n,0,0\n$$(( $(S_BOOT) + $(S_OFFSET) )),$(S_ROOT),L\n,0,0\n" \
+               | sfdisk -D -uS -H 64 -S 32 $(IMGinst)
 
 ifneq "$(MACHINE_TYPE)" "arm"
        # Install grub
@@ -182,7 +193,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
 
@@ -198,7 +209,7 @@ endif
        umount $(MNThdd)
 
        # zerofree the ext3 images to get better compression
-ifneq "$(MACHINE_TYPE)" "arm"
+ifneq "$(PART_TYPE)" "c"
        zerofree $(IMGboot)
        -fsck.ext2 -f -y  $(IMGboot)
        fsck.ext2 -f -y  $(IMGboot)
@@ -212,13 +223,8 @@ endif
        rm -vf $(IMGpart) $(IMGboot) $(IMGroot)
 
        # Write Partition table
-ifneq "$(MACHINE_TYPE)" "arm"
-       echo -e ",$(SIZEboot),L,*\n,0,0\n,$(SIZEroot),L\n,0,0\n" \
-               | sfdisk -D -uM -H 64 -S 32 $(IMGinsts)
-else
-       echo -e ",$(SIZEboot),c,*\n,0,0\n,$(SIZEroot),L\n,0,0\n" \
-               | sfdisk -D -uM -H 64 -S 32 $(IMGinsts)
-endif
+       echo -e "$(S_OFFSET),$(S_BOOT),$(PART_TYPE),*\n,0,0\n$$(( $(S_BOOT) + $(S_OFFSET) )),$(S_ROOT),L\n,0,0\n" \
+               | sfdisk -D -uS -H 64 -S 32 $(IMGinsts)
 
 ifneq "$(MACHINE_TYPE)" "arm"
        # Install grub
index 712247ff038c44beda47397f78c9235f2942cb8e..15abf535700ea69e75f43c2349551a31b4507c8c 100644 (file)
 
 include Config
 
-DATE       = 20070813
-VER        = 3.0-20070813
+VER         = 4.0.9
+VER_DB      = 4.0-$(DATE)
+VER_FILTERS = 4.0.17
+DATE        = 20131023
 
 THISAPP    = foomatic-$(VER)
-DL_FILE    = foomatic-filters-$(VER).tar.gz
+DL_FILE    = foomatic-filters-$(VER_FILTERS).tar.gz
 DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/foomatic-filters-$(VER)
+DIR_APP    = $(DIR_SRC)/foomatic-filters-$(VER_FILTERS)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = foomatic
-PAK_VER    = 1
+PAK_VER    = 2
 
 DEPS       = "cups ghostscript libtiff hplip"
 
+export LIB_CUPS=/usr/lib/cups
+export CUPS_BACKENDS=/usr/lib/cups/backends
+export CUPS_FILTERS=/usr/lib/cups/filters
+export CUPS_PPDS=/usr/share/cups/model
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
 
 objects = $(DL_FILE) \
-       foomatic-db-$(DATE).tar.gz \
-       foomatic-db-engine-$(VER).tar.gz \
-       foomatic-db-hpijs-$(DATE).tar.gz
+       foomatic-db-$(VER_DB).tar.gz \
+       foomatic-db-engine-$(VER).tar.gz
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-foomatic-db-$(DATE).tar.gz = $(DL_FROM)/foomatic-db-$(DATE).tar.gz
+foomatic-db-$(VER_DB).tar.gz = $(DL_FROM)/foomatic-db-$(VER_DB).tar.gz
 foomatic-db-engine-$(VER).tar.gz = $(DL_FROM)/foomatic-db-engine-$(VER).tar.gz
-foomatic-db-hpijs-$(DATE).tar.gz = $(DL_FROM)/foomatic-db-hpijs-$(DATE).tar.gz
 
-$(DL_FILE)_MD5 = 41de0f45866ab4c19c1d5e3e2cdab42f
-foomatic-db-$(DATE).tar.gz_MD5 = a3ab04b7cc5d870b040ffce19e664698
-foomatic-db-engine-$(VER).tar.gz_MD5 = ec9639719a9c1d4095248e534c3f2d0d
-foomatic-db-hpijs-$(DATE).tar.gz_MD5 = e59fa189336e96a9d43cfcfb6222a9c2
+$(DL_FILE)_MD5 = b05f5dcbfe359f198eef3df5b283d896
+foomatic-db-$(VER_DB).tar.gz_MD5 = ffe38b354cb06a1f3d5e3b01b7e58b0e
+foomatic-db-engine-$(VER).tar.gz_MD5 = 5b33c1adb21e7b6f3652e9a18d0e6f4e
 
 install : $(TARGET)
 
@@ -86,11 +90,10 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_SRC)/foomatic-* /usr/share/foomatic && cd $(DIR_SRC) && \
+       @rm -rf $(DIR_SRC)/foomatic-* && cd $(DIR_SRC) && \
                tar zxf $(DIR_DL)/$(DL_FILE) && \
-               tar zxf $(DIR_DL)/foomatic-db-$(DATE).tar.gz && \
-               tar zxf $(DIR_DL)/foomatic-db-engine-$(VER).tar.gz && \
-               tar zxf $(DIR_DL)/foomatic-db-hpijs-$(DATE).tar.gz
+               tar zxf $(DIR_DL)/foomatic-db-$(VER_DB).tar.gz && \
+               tar zxf $(DIR_DL)/foomatic-db-engine-$(VER).tar.gz
        cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
@@ -100,8 +103,20 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_SRC)/foomatic-db-engine-$(VER) && ./configure --prefix=/usr --sysconfdir=/etc
        cd $(DIR_SRC)/foomatic-db-engine-$(VER) && make $(MAKETUNING)
        cd $(DIR_SRC)/foomatic-db-engine-$(VER) && make install
-       cd $(DIR_SRC)/foomatic-db-hpijs-$(DATE) && ./configure --prefix=/usr --sysconfdir=/etc
-       cd $(DIR_SRC)/foomatic-db-hpijs-$(DATE) && make $(MAKETUNING)
-       cd $(DIR_SRC)/foomatic-db-hpijs-$(DATE) && make install
+
+       # Remove unwanted files
+       rm -rfv /usr/lib/ppr \
+               /etc/foomatic/filter.conf.sample \
+               /usr/share/foomatic/templates
+
+       -mkdir -pv /var/cache/foomatic
+
+       -mkdir -pv /etc/foomatic
+       echo "cups" > /etc/foomatic/defaultspooler
+
+       -mkdir -pv /usr/lib/cups/filter
+       ln -svf ../../../bin/foomatic-rip /usr/lib/cups/filter/foomatic-rip
+       ln -svf ../../../bin/foomatic-ppdfile /usr/lib/cups/filter/foomatic-ppdfile
+
        @rm -rf $(DIR_SRC)/foomatic-*
        @$(POSTBUILD)
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
diff --git a/lfs/git b/lfs/git
index 615c5b4c0cc706c61ce88fcaf5350c586a117544..23838e4e54d859f028293dcee68d799a86a11056 100644 (file)
--- a/lfs/git
+++ b/lfs/git
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2011  IPFire Team  <info@ipfire.org>                          #
+# 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.8.1
+VER        = 1.8.5.2
 
 THISAPP    = git-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = git
-PAK_VER    = 9
+PAK_VER    = 10
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = a2c6f4404c5e432b47474d246ca83c7e
+$(DL_FILE)_MD5 = df8519044f9880f3687d863d99245282
 
 install : $(TARGET)
 
@@ -77,8 +77,11 @@ $(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
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr
+
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index ccbdb315881754bec78b90d4a58eae65b03c2bd0..f0d8aba647caeda0d2d636c4ab7f7e84bb51954a 100644 (file)
--- a/lfs/glibc
+++ b/lfs/glibc
@@ -227,13 +227,47 @@ 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/glibc-rh886968.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh905575.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh905874.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh916986.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh928318.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh947882.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh952422.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh966775.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh966778.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc/glibc-rh970090.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
@@ -264,8 +298,7 @@ endif
 ifeq "$(ROOT)" ""
        # Creating the locales
        mkdir -p /usr/lib/locale
-       cd $(DIR_SRC)/glibc-build && localedef -i en_US -f ISO-8859-1 en_US
-       cd $(DIR_SRC)/glibc-build && localedef -i en_US -f UTF-8      en_US.utf8
+       cd $(DIR_SRC)/glibc-build && make localedata/install-locales
 
        # Timezone data will be shipped by tzdata.
        rm -rfv /usr/share/zoneinfo
diff --git a/lfs/gperf b/lfs/gperf
new file mode 100644 (file)
index 0000000..ac33857
--- /dev/null
+++ b/lfs/gperf
@@ -0,0 +1,76 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2013 IPFire 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/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 3.0.4
+
+THISAPP    = gperf-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = c1f1db32fb6598d6a93e6e88796a8632
+
+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)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
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 fea50db0c8764d07269820999cb74b5cced15af2..a91fbd9ab0a35dc029808c5b3a697f207dc0c785 100644 (file)
@@ -30,7 +30,7 @@ THISAPP    = guardian-$(VER)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = guardian
-PAK_VER    = 8
+PAK_VER    = 9
 
 DEPS       = ""
 
index a1bc3434a769d91f321666d7b3a1baf0143c2633..1124a3f69138d8209dcb3c335a2ea06f9aadef48 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.2.5
+VER        = 5.2.9
 
 THISAPP    = gutenprint-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = gutenprint
-PAK_VER    = 2
+PAK_VER    = 3
 
 DEPS       = "cups"
 
@@ -44,7 +44,8 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 10a0a9fac081d8116ec5ed47fbc1591c
+$(DL_FILE)_MD5 = aefbec27b96dd404d9ac9811e17d58ce
+
 install : $(TARGET)
 
 check : $(patsubst %,$(DIR_CHK)/%,$(objects))
index ff02a1991404dd901b3398d0aab80d2e4206757c..5560a4277e4843c7c0dee5d6be4ae3819a28c5b9 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        = 2.0
+VER        = 2.1
 
 THISAPP    = hostapd-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = hostapd
-PAK_VER    = 26
+PAK_VER    = 29
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ba22e639bc57aa4035d2ea8ffa9bbbee
+$(DL_FILE)_MD5 = bb9c50e87c5af6f89f387e63911effac
 
 install : $(TARGET)
 
@@ -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)
similarity index 92%
rename from lfs/eject
rename to lfs/hostname
index 8683194123a6d604dada9b40e4701c935599f9c3..feac3a0f8dc5c5b494e2a5b4fefa65d906fbff50 100644 (file)
--- a/lfs/eject
 
 include Config
 
-VER        = 2.1.5
+VER        = 3.15
 
-THISAPP    = eject-$(VER)
+THISAPP    = hostname_$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/eject
+DIR_APP    = $(DIR_SRC)/hostname
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
 ###############################################################################
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = b96a6d4263122f1711db12701d79f738
+$(DL_FILE)_MD5 = f93c87de2517850de5f47234e3bcb563
 
 install : $(TARGET)
 
@@ -70,8 +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) && ./configure --prefix=/usr
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/hostname-rh.patch
        cd $(DIR_APP) && make $(MAKETUNING)
-       cd $(DIR_APP) && make install
+       cd $(DIR_APP) && make install BINDIR=/bin
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 967fc8ab8440d3ddcc731fb40b35e505df74e9a3..c334a91c0efc11ae069a22ca163b2acb3636e333 100644 (file)
--- a/lfs/htop
+++ b/lfs/htop
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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        = 1.0
+VER        = 1.0.2
 
 THISAPP    = htop-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = htop
-PAK_VER    = 5
+PAK_VER    = 6
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 325112ca7947ea1f6d6441f631e00384
+$(DL_FILE)_MD5 = 0d01cca8df3349c74569cefebbd9919e
 
 install : $(TARGET)
 
diff --git a/lfs/icinga b/lfs/icinga
new file mode 100644 (file)
index 0000000..691d83d
--- /dev/null
@@ -0,0 +1,137 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2012  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        = 1.11.4
+PLUGIN_VER = 2.0.2
+
+THISAPP    = icinga-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = icinga
+PAK_VER    = 1
+
+DEPS       = ""
+
+CFLAGS    += -fno-strict-aliasing
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE) nagios-plugins-$(PLUGIN_VER).tar.gz
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+nagios-plugins-$(PLUGIN_VER).tar.gz = \
+       $(DL_FROM)/nagios-plugins-$(PLUGIN_VER).tar.gz
+
+$(DL_FILE)_MD5 = cfe64b91ec84f5431e53959e31ff07b5
+nagios-plugins-$(PLUGIN_VER).tar.gz_MD5 = 2f6d9c43adcf9f024175e48a44d099d4
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       @rm -rf $(DIR_SRC)/nagios-plugins-$(PLUGIN_VER) && cd $(DIR_SRC) && \
+               tar axf $(DIR_DL)/nagios-plugins-$(PLUGIN_VER).tar.gz
+
+       # Compile core
+       cd $(DIR_APP) && \
+               ./configure \
+                       --prefix=/usr \
+                       --sysconfdir=/etc/icinga \
+                       --datadir=/usr/share/icinga \
+                       --datarootdir=/usr/share/icinga \
+                       --sbindir=/usr/share/icinga/cgi-bin \
+                       --localstatedir=/var/icinga \
+                       --libdir=/usr/lib/icinga \
+                       --libexecdir=/usr/lib/icinga/plugins \
+                       --with-lockfile=/var/run/icinga.pid \
+                       --with-httpd-conf=/etc/httpd/conf/conf.d \
+                       --with-icinga-user=nobody \
+                       --with-icinga-group=nobody \
+                       --enable-event-broker \
+                       --enable-embedded-perl \
+                       --disable-idoutils
+       cd $(DIR_APP) && make all $(MAKETUNING)
+
+       # Compile plugins
+       cd $(DIR_SRC)/nagios-plugins-$(PLUGIN_VER) && \
+               ./configure \
+                       --prefix=/usr \
+                       --libexecdir=/usr/lib/icinga/plugins \
+                       --with-nagios-user=nobody \
+                       --with-nagios-group=nobody
+       cd $(DIR_SRC)/nagios-plugins-$(PLUGIN_VER) && make $(MAKETUNING)
+
+       # Install core
+       cd $(DIR_APP) && make \
+               install install-init install-commandmode install-config \
+               install-webconf install-eventhandlers
+       rm -vf /etc/httpd/conf/conf.d/icinga.conf
+       install -v -m 644 $(DIR_SRC)/config/icinga/icinga.conf \
+               /etc/httpd/conf/vhosts.d/icinga.conf
+
+       # Install plugins
+       cd $(DIR_SRC)/nagios-plugins-$(PLUGIN_VER) && make install
+
+       ln -svf /etc/rc.d/init.d/icinga /etc/rc.d/rc3.d/S67icinga
+       ln -svf /etc/rc.d/init.d/icinga /etc/rc.d/rc0.d/K33icinga
+       ln -svf /etc/rc.d/init.d/icinga /etc/rc.d/rc6.d/K33icinga
+
+       install -v -m 644 $(DIR_SRC)/config/backup/includes/icinga \
+                        /var/ipfire/backup/addons/includes/icinga
+
+       @rm -rf $(DIR_APP) $(DIR_SRC)/nagios-plugins-$(PLUGIN_VER)
+       @$(POSTBUILD)
diff --git a/lfs/igb b/lfs/igb
index 0ebf466ea1d81d43770d4e5b0b86a4fff8056441..b8aadc48b66f414024bd35d06fcacc34effda492 100644 (file)
--- a/lfs/igb
+++ b/lfs/igb
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  IPFire Team <info@ipfire.org>                      #
+# Copyright (C) 2007-2014  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
 
 VERSUFIX   = ipfire$(KCFG)
-ifeq "$(KCFG)" "-xen"
-       KVER = 2.6.32.60
-       MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/igb/
-else
-       MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/igb/
-endif
+MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/igb/
 
-VER        = 4.1.2
+VER        = 5.1.2
 
 THISAPP    = igb-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -48,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 0a5462b76310b83a40c9023edae50d72
+$(DL_FILE)_MD5 = c222b04f7e43afffc105d0d0db60c6c0
 
 install : $(TARGET)
 
@@ -82,7 +77,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        #Save original igb module
        -mv $(MODPATH)/igb.ko \
-           $(MODPATH)//igb.ko.org
+           $(MODPATH)/igb.ko.org
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP)/src && make BUILD_KERNEL=$(KVER)-$(VERSUFIX)
        cd $(DIR_APP)/src && install -m 644 igb.ko $(MODPATH)
index 5c0bf131cb564758141fed6c6901aa429784fc42..fb1426fe561bdecb682ffaac8f1570a5fe69a25d 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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        #
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = igmpproxy
-PAK_VER    = 2
+PAK_VER    = 4
 
 DEPS       = ""
 
@@ -77,8 +77,16 @@ $(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/igmpproxy-001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch
+       cd $(DIR_APP) && patch -Np1  < $(DIR_SRC)/src/patches/igmpproxy-002-Change-default-interface-state-to-disabled-wrt-29458.patch
+       cd $(DIR_APP) && patch -Np1  < $(DIR_SRC)/src/patches/igmpproxy-003-Restrict-igmp-reports-for-downstream-interfaces-wrt-.patch
+       cd $(DIR_APP) && patch -Np1  < $(DIR_SRC)/src/patches/igmpproxy-004-Restrict-igmp-reports-forwarding-to-upstream-interfa.patch
+       cd $(DIR_APP) && patch -Np1  < $(DIR_SRC)/src/patches/igmpproxy-100-use-monotic-clock-instead-of-time-of-day.patch
+       cd $(DIR_APP) && autoreconf
        cd $(DIR_APP) && ./configure --sysconfdir=/etc
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
+       install -v -m 644 $(DIR_SRC)/config/backup/includes/igmpproxy \
+                        /var/ipfire/backup/addons/includes/igmpproxy
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 51654c5ad6db6c40025f06cfc6703ff9eff55e02..5cea87279c143edc587440509392e911c93b0808 100644 (file)
@@ -29,10 +29,10 @@ VER        = 20101008
 THISAPP    = imspector-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
+DIR_APP    = $(DIR_SRC)/imspector
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = imspector
-PAK_VER    = 2
+PAK_VER    = 3
 
 DEPS       = ""
 
@@ -77,13 +77,19 @@ $(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/imspector-20101008-ssl.patch
        cd $(DIR_SRC)/imspector && sed -e "s/^SSL_LIBS.*/& -lcrypto/" -i Makefile
        cd $(DIR_SRC)/imspector && make install
+
        -mv /usr/etc/imspector /etc/imspector
        -mv /etc/imspector/imspector /etc/imspector
+
        install -v -m 755 $(DIR_CONF)/imspector/imspector.conf /etc/imspector.conf
        install -v -m 644 $(DIR_SRC)/config/backup/includes/imspector /var/ipfire/backup/addons/includes/imspector
+
        chmod 755 /srv/web/ipfire/cgi-bin/imspector.cgi
        chown nobody:nobody -R /var/log/imspector
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 56e19679bf802c30949407dc0590791053694c51..42da9bc7b3067b61cc73a37e5d287b660bb57c53 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2010  IPFire Team  <info@ipfire.org>                          #
+# Copyright (C) 2007-2014  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        #
@@ -64,11 +64,25 @@ $(TARGET) :
 
        -cd / && cpio -d -p /install/initrd < /tmp/ROOTFILES
 
-       # Copy hid and network modules
+       # Copy hid and network modules (and deps)
        cp -aRf /lib/modules/$(KVER)-ipfire/kernel/drivers/hid \
                /install/initrd/lib/modules/$(KVER)-ipfire/kernel/drivers/
        cp -aRf /lib/modules/$(KVER)-ipfire/kernel/drivers/net \
                /install/initrd/lib/modules/$(KVER)-ipfire/kernel/drivers/
+       cp -aRf /lib/modules/$(KVER)-ipfire/kernel/drivers/pcmcia \
+               /install/initrd/lib/modules/$(KVER)-ipfire/kernel/drivers/
+       cp -aRf /lib/modules/$(KVER)-ipfire/kernel/drivers/ssb \
+               /install/initrd/lib/modules/$(KVER)-ipfire/kernel/drivers/
+       cp -aRf /lib/modules/$(KVER)-ipfire/kernel/drivers/uio \
+               /install/initrd/lib/modules/$(KVER)-ipfire/kernel/drivers/
+       cp -aRf /lib/modules/$(KVER)-ipfire/kernel/drivers/ptp \
+               /install/initrd/lib/modules/$(KVER)-ipfire/kernel/drivers/
+       cp -aRf /lib/modules/$(KVER)-ipfire/kernel/drivers/dca \
+               /install/initrd/lib/modules/$(KVER)-ipfire/kernel/drivers/
+       cp -aRf /lib/modules/$(KVER)-ipfire/kernel/drivers/pps \
+               /install/initrd/lib/modules/$(KVER)-ipfire/kernel/drivers/
+       # Remove wireless modules
+       rm -rf /install/initrd/lib/modules/$(KVER)-ipfire/kernel/drivers/net/wireless
 
        cd /install/initrd/etc && rm -f fstab
        cp -aRf $(DIR_SRC)/config/install/* /install/initrd/etc/
@@ -88,13 +102,19 @@ $(TARGET) :
 
        #Build Module deps for installer.
        depmod -a -b /install/initrd/ -F /boot/System.map-$(KVER)-ipfire $(KVER)-ipfire
-       # Remove binary depmod files
-       rm -rf /install/initrd/lib/modules/$(KVER)-ipfire/modules.*.bin
 
        #Name service from dhcpcd
        cp -f /etc/nsswitch.conf /install/initrd/etc/
        cp -f $(DIR_SRC)/config/initrd/dhcpc/* /install/initrd/var/ipfire/dhcpc/dhcpcd-hooks/
 
+       # Install needed locales.
+       -mkdir -pv /install/initrd/usr/lib/locale
+       for lang in $(DIR_SRC)/langs/*; do \
+               for path in /usr/lib/locale/$${lang##*/}*; do \
+                       [ -d "$${path}" ] && cp -lrvf "$${path}" /install/initrd/usr/lib/locale/; \
+               done; \
+       done
+
        cd /install/initrd && find . | cpio -o -H newc | lzma > /install/images/initrd
        cd /install/initrd && find ./ -ls > $(DIR_INFO)/_build.initrd.log
 
index 213b46e2724dc95c8deb9e2bfee85566b77f089a..02f97431a2318186c57dbed65374451cf17141f1 100644 (file)
@@ -157,6 +157,7 @@ $(TARGET) :
        ln -sf ../init.d/leds        /etc/rc.d/rc6.d/K79leds
        ln -sf ../init.d/fireinfo    /etc/rc.d/rc3.d/S15fireinfo
        ln -sf ../init.d/mountkernfs /etc/rc.d/rcsysinit.d/S00mountkernfs
+       ln -sf ../init.d/sysctl      /etc/rc.d/rcsysinit.d/S01sysctl
        ln -sf ../init.d/modules     /etc/rc.d/rcsysinit.d/S05modules
        ln -sf ../init.d/udev        /etc/rc.d/rcsysinit.d/S10udev
        ln -sf ../init.d/waitdrives  /etc/rc.d/rcsysinit.d/S19waitdrives
@@ -171,29 +172,22 @@ $(TARGET) :
        ln -sf ../init.d/console     /etc/rc.d/rcsysinit.d/S70console
        ln -sf ../init.d/firstsetup  /etc/rc.d/rcsysinit.d/S75firstsetup
        ln -sf ../init.d/localnet    /etc/rc.d/rcsysinit.d/S80localnet
-       ln -sf ../init.d/sysctl      /etc/rc.d/rcsysinit.d/S90sysctl
+       ln -sf ../init.d/firewall    /etc/rc.d/rcsysinit.d/S85firewall
        ln -sf ../init.d/network-vlans /etc/rc.d/rcsysinit.d/S91network-vlans
+       ln -sf ../init.d/rngd        /etc/rc.d/rcsysinit.d/S92rngd
+       ln -sf ../init.d/wlanclient  /etc/rc.d/rc0.d/K82wlanclient
+       ln -sf ../init.d/wlanclient  /etc/rc.d/rc3.d/S19wlanclient
+       ln -sf ../init.d/wlanclient  /etc/rc.d/rc6.d/K82wlanclient
 
        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/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 \
-               /etc/rc.d/init.d/networking/red.down/99-D-dialctrl.pl
 
        for i in green blue orange; do \
                ln -sf any /etc/rc.d/init.d/networking/$$i; \
index 740793a04ac2aea846b8c301c40be9e7d3852536..c02e0bac5c6f374212048e017b255f72e9eb3a1d 100644 (file)
@@ -65,5 +65,8 @@ $(TARGET) :
        #Patch ISO Name for download ...
        sed -i -e "s|ipfire.iso|download.ipfire.org/releases/ipfire-2.x/$(VERSION)-core$(CORE)/$(SNAME)-$(VERSION).$(MACHINE)-full-core$(CORE).iso|g" \
                                /install/initrd/bin/downloadsource.sh
+       #Patch version for mediacheck ...
+       sed -i -e "s|FullIPFireVersion|$(SNAME)-$(VERSION)-core$(CORE)|g" \
+                               /install/initrd/bin/mountsource.sh
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/iotop b/lfs/iotop
new file mode 100644 (file)
index 0000000..fd0002b
--- /dev/null
+++ b/lfs/iotop
@@ -0,0 +1,82 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# 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        #
+# 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        = 0.6
+
+THISAPP    = iotop-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+PROG       = iotop
+PAK_VER    = 1
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 080fbb494566b5291a2a27cf6c203562
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && python setup.py install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/lfs/ipfire-netboot b/lfs/ipfire-netboot
new file mode 100644 (file)
index 0000000..0590d9b
--- /dev/null
@@ -0,0 +1,88 @@
+###############################################################################
+#                                                                             #
+# 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        = v1.0
+PXE_VER    = c4bce43
+
+THISAPP    = ipfire-netboot-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = http://source.ipfire.org/releases/ipfire-netboot/
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+SUP_ARCH   = i586
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE) ipxe-$(PXE_VER).tar.xz
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+ipxe-$(PXE_VER).tar.xz = $(URL_IPFIRE)/ipxe-$(PXE_VER).tar.xz
+
+$(DL_FILE)_MD5 = 257773a52ed5dda3053eb049bee38a60
+ipxe-$(PXE_VER).tar.xz_MD5 = 8aeb94330eb94f3f1e6170e23db0ba27
+
+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)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+
+       # Extract iPXE source
+       cd $(DIR_APP) && tar axf $(DIR_DL)/ipxe-$(PXE_VER).tar.xz
+       cd $(DIR_APP) && rm -rfv ipxe && ln -s ipxe-$(PXE_VER) ipxe
+       cd $(DIR_APP) && make bin/ipxe.lkrn
+
+       # Installation
+       -mkdir -pv /usr/share/ipfire-netboot
+       cd $(DIR_APP) && install -m 644 bin/ipxe.lkrn /usr/share/ipfire-netboot
+
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index a247ba7b37d43954d01e783dba53f9f266f2188a..5a1764be0a302c716d536e5c8d06c6d8960ea987 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.4.14
+VER        = 1.4.21
 
 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 = 536d048c8e8eeebcd9757d0863ebb0c0
 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/iptraf-ng b/lfs/iptraf-ng
new file mode 100644 (file)
index 0000000..e962b2c
--- /dev/null
@@ -0,0 +1,88 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 1.1.4
+
+THISAPP    = iptraf-ng-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = iptraf-ng
+PAK_VER           = 2
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = de27cfeeede96e2acfb0edc8439b034a
+
+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) && cd $(DIR_SRC) && tar xzf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/iptraf-ng-1.1.4-tcplog_flowrate_msg.patch
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr
+
+       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+
+       # Binary install
+       cd $(DIR_APP) && install -v -m750 -D iptraf-ng /usr/sbin/iptraf-ng
+       cd $(DIR_APP) && install -v -m750 -D rvnamed-ng /usr/sbin/rvnamed-ng
+
+       # Directory install
+       -mkdir -vp /var/log/iptraf-ng
+       chmod 750 /var/log/iptraf-ng
+       chown root.root /var/log/iptraf-ng
+       -mkdir -vp /var/lib/iptraf-ng
+       chmod 750 /var/lib/iptraf-ng
+       chown root.root /var/lib/iptraf-ng
+       -mkdir -vp /var/lock/iptraf-ng
+       chmod 755 /var/lock/iptraf-ng
+       chown root.root /var/lock/iptraf-ng
+
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index deb92357a7dd580b90b3728b6d8c0da450f2286a..9310c1f285e5a606b4253816e884f6e25578d6e0 100644 (file)
@@ -74,6 +74,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/iputils-20020927-rh.patch
        cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/iputils-glibckernheaders.patch
        cd $(DIR_APP) && make ping
-       cd $(DIR_APP) && install -m 0755 ping /usr/bin
+       cd $(DIR_APP) && install -m 4755 ping /usr/bin
+
+       # Some scripts expect ping in /bin/ping.
+       ln -svf ../usr/bin/ping /bin/ping
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/ipvsadm b/lfs/ipvsadm
new file mode 100644 (file)
index 0000000..de9c52d
--- /dev/null
@@ -0,0 +1,83 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# 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        #
+# 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        = 1.26
+
+THISAPP    = ipvsadm-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = ipvsadm
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = eac3ba3f62cd4dea2da353aeddd353a8
+
+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) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && make CFLAGS="$(CFLAGS)" #$(MAKETUNING)
+       cd $(DIR_APP) && install -v -m 755 ipvsadm /usr/sbin/ipvsadm
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/lfs/iw b/lfs/iw
index ec59f23cac8a476ba498b0bfe2e49a6239222198..e55bc5c35da13e8d6158436d09410f70686ee117 100644 (file)
--- a/lfs/iw
+++ b/lfs/iw
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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        = 0.9.22
+VER        = 3.10
 
 THISAPP    = iw-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 561c2602c5ce7c65a590118286c0892a
+$(DL_FILE)_MD5 = 07219ad06535bc270f7a8873aba6d5fa
 
 install : $(TARGET)
 
@@ -69,8 +69,8 @@ $(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) && CFLAGS+=-I/usr/src/linux/include make $(MAKETUNING)
+       @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)
        @$(POSTBUILD)
diff --git a/lfs/jquery b/lfs/jquery
new file mode 100644 (file)
index 0000000..7856ce0
--- /dev/null
@@ -0,0 +1,76 @@
+###############################################################################
+#                                                                             #
+# 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        = 1.10.2
+
+THISAPP    = jquery-$(VER)
+DL_FILE    = $(THISAPP).min.js
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# 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)
diff --git a/lfs/jwhois b/lfs/jwhois
new file mode 100644 (file)
index 0000000..46abec4
--- /dev/null
@@ -0,0 +1,90 @@
+###############################################################################
+#                                                                             #
+# 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/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 4.0
+
+THISAPP    = jwhois-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 977d0ba90ee058a7998c94d933fc9546
+
+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)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/jwhois-4.0-conf_update.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/jwhois-4.0-conf_update2.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/jwhois-4.0-connect.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/jwhois-4.0-fclose.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/jwhois-4.0-idna.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/jwhois-4.0-ipv6match.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/jwhois-4.0-multi-homed.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/jwhois-4.0-select.patch
+
+       cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+
+       # Add alias for whois command.
+       ln -svf jwhois /usr/bin/whois
+
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/lfs/keepalived b/lfs/keepalived
new file mode 100644 (file)
index 0000000..28b7ed8
--- /dev/null
@@ -0,0 +1,92 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# 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        #
+# 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        = 1.2.7
+
+THISAPP    = keepalived-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = keepalived
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 8551a34ee048895dbe5350a031ff29c1
+
+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) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \
+               --with-kernel-dir=/usr/include
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+
+       install -v -m 644 $(DIR_SRC)/config/backup/includes/keepalived \
+               /var/ipfire/backup/addons/includes/keepalived
+
+       # Restore initscript
+       install -v -m 754 $(DIR_SRC)/src/initscripts/init.d/keepalived \
+               /etc/rc.d/init.d/keepalived
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/lfs/kmod b/lfs/kmod
new file mode 100644 (file)
index 0000000..dc2dc10
--- /dev/null
+++ b/lfs/kmod
@@ -0,0 +1,94 @@
+###############################################################################
+#                                                                             #
+# 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/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 13
+
+THISAPP    = kmod-$(VER)
+DL_FILE    = $(THISAPP).tar.xz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = d5aba43b9370cd52f3cb35e82a1aa595
+
+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)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --bindir=/bin \
+               --sysconfdir=/etc \
+               --enable-zlib \
+               --disable-manpages
+
+#              --libdir=/lib \
+
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+
+       # Create symlinks
+       ln -svf ../bin/kmod /sbin/modprobe
+       ln -svf ../bin/kmod /sbin/modinfo
+       ln -svf ../bin/kmod /sbin/insmod
+       ln -svf ../bin/kmod /sbin/rmmod
+       ln -svf ../bin/kmod /sbin/depmod
+       ln -svf ../bin/kmod /sbin/lsmod
+
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index b31b961b2600fbd3865499fd17432cfa687103d9..a736381fe20449249d3fd72c54184686a2cd45e6 100644 (file)
 
 include Config
 
-VER        = 0.11.0-svn1158-dpf
+VER        = 0.11.0-svn1200-dpf
 
 THISAPP    = lcd4linux-$(VER)
-DL_FILE    = $(THISAPP).tar.xz
+DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
+DIR_APP    = $(DIR_SRC)/lcd4linux
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = lcd4linux
-PAK_VER    = 4
+PAK_VER    = 5
 
 DEPS       = "dpfhack libmpdclient"
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 0b7eba14a92ae5d51a3ab99948192b8d
+$(DL_FILE)_MD5 = 5b76a26879849dbd52a5bcfda4107ea4
 
 install : $(TARGET)
 
@@ -76,8 +76,7 @@ $(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/lcd4linux-scaletext-dpf.patch
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && ./configure  --with-plugins=all,!qnaplog,!dbus --prefix=/usr
        cd $(DIR_APP) && make
        cd $(DIR_APP) && make install
diff --git a/lfs/lcdproc b/lfs/lcdproc
new file mode 100644 (file)
index 0000000..9e88622
--- /dev/null
@@ -0,0 +1,103 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2011  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        = 0.5.6
+
+THISAPP    = lcdproc-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = lcdproc
+PAK_VER    = 1
+
+DEPS       = 
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = df4f5c2c7285eaf6979b9c7768b4877f
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/lcdproc-0.5.6-menuitem.patch
+       cd $(DIR_APP) && \
+               ./configure \
+                       --prefix=/usr \
+                       --sysconfdir=/etc/lcdproc \
+                       --enable-libusb \
+                       --enable-drivers=all \
+                       --enable-permissive-menu-goto \
+                       --enable-lcdproc-menus \
+                       --enable-stat-nfs \
+                       --enable-stat-smbfs \
+                       --with-lcdport=13666 \
+                       --enable-seamless-hbars
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       -mkdir -pv /etc/lcdproc
+       cp -vf $(DIR_SRC)/config/lcdproc/{LCDd,lcdproc}.conf /etc/lcdproc
+       ln -sf ../init.d/lcdproc /etc/rc.d/rc3.d/S60lcdproc
+       ln -sf ../init.d/lcdproc /etc/rc.d/rc0.d/K40lcdproc
+       ln -sf ../init.d/lcdproc /etc/rc.d/rc6.d/K40lcdproc
+       install -v -m 644 $(DIR_SRC)/config/backup/includes/lcdproc \
+               /var/ipfire/backup/addons/includes/lcdproc
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index 24d4b89e5ceff204d915b498a0e4f22527d7b327..5e0785926eb3d07e5d90e99bf5495bee4dc3a142 100644 (file)
 
 include Config
 
-VER        = v6b
+VER        = 1.3.0
 
-THISAPP    = jpegsrc.$(VER)
+THISAPP    = libjpeg-turbo-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/jpeg-6b
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = libjpeg
 PAK_VER    = ipfire-beta1
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = dbd5f3b47ed13132f04c685d608a7547
+$(DL_FILE)_MD5 = e1e65cc711a1ade1322c06ad4a647741
 
 install : $(TARGET)
 
index ea0491e6dbb6c1a637397bb7610e735ea8996b42..ed18f25216b59063334c8073f224632616fad424 100644 (file)
@@ -32,10 +32,12 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = libmad
-PAK_VER    = 1
+PAK_VER    = 2
 
 DEPS       = ""
 
+CFLAGS    += -Wa,--noexecstack
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
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 c6fdc2ef042608183390fec78e364e1012b09039..0f118a428772a16e2dde757cefa835caee5a1713 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.0.0
+VER        = 1.4.0
 
 THISAPP    = libpcap-$(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 = 9ad1358c5dec48456405eac197a46d3d
+$(DL_FILE)_MD5 = 56e88a5aabdd1e04414985ac24f7e76c
 
 install : $(TARGET)
 
@@ -70,15 +72,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/libpcap-0.8.3-shared.patch
-       cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls
-       cd $(DIR_APP) && make
-       cd $(DIR_APP) && make shared
+       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
-       cd $(DIR_APP) && make install-shared-so
-       ln -svf libpcap.so.1.0.0 /usr/lib/libpcap.so.1.0
-       ln -svf libpcap.so.1.0 /usr/lib/libpcap.so.1
-       ln -svf libpcap.so.1 /usr/lib/libpcap.so        
-       cd $(DIR_APP) && cp -vf pcap-int.h /usr/include
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
similarity index 90%
rename from lfs/fstrim
rename to lfs/libusbx
index 451af5ab3a6af1ec895951d4e97a5faa1d95043b..167b9450dbe43de5a535e595f8adcb464d7725b5 100644 (file)
 
 include Config
 
-VER        = 0.2
+VER        = 1.0.11
 
-THISAPP    = fstrim-$(VER)
+THISAPP    = libusbx-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/fstrim
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
 ###############################################################################
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 1a217ae44b12ae7538f922f495b8da31
+$(DL_FILE)_MD5 = 9aaab6aee72f65900cc731ecbffb4cf4
 
 install : $(TARGET)
 
@@ -70,9 +70,9 @@ $(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) && make $(MAKETUNING) $(EXTRA_MAKE)
-       cd $(DIR_APP) && install -m 0755 fstrim /usr/bin
-       # Install cronjob
-       install -m 0755 $(DIR_SRC)/config/fstrim/trim /etc/fcron.daily
+       cd $(DIR_APP) && ./configure --prefix=/usr \
+               --enable-examples-build
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
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 e46a2d4bc2e83bd77794997113627d46c7566780..6beb75c5707b21e7fc50057d66929e7cd3958dad 100644 (file)
--- a/lfs/linux
+++ b/lfs/linux
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  IPFire Team <info@ipfire.org>                      #
+# Copyright (C) 2007-2014  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           = 3.2.38
+VER        = 3.10.44
 
-RPI_PATCHES = linux-3.2.27-ada8b44
+RPI_PATCHES = linux-3.10.38-grsec-1b49b45
+GRS_PATCHES = grsecurity-2.9.1-3.10.44-ipfire1.patch.xz
 
 THISAPP    = linux-$(VER)
-DL_FILE    = linux-$(VER).tar.bz2
+DL_FILE    = linux-$(VER).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 CFLAGS     =
 CXXFLAGS   =
 
-PAK_VER    = 28
+PAK_VER    = 51
 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                         = 16ea59fd8701f82d7d7c534a6e4bb923
-rpi-patches-$(RPI_PATCHES).patch.xz_MD5        = 966687ff27e450e04ff50e0da829dc00
-
+$(DL_FILE)_MD5                         = 8a4006eff3bbd8aff58fe4b443223e7a
+rpi-patches-$(RPI_PATCHES).patch.xz_MD5        = a7408e8bad57b4b2cb677dd5a0bfb7ff
+$(GRS_PATCHES)_MD5                     = 07e5d812146063ed5b2ce49d0d24099b
 
 install : $(TARGET)
 
@@ -109,38 +112,129 @@ $(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/linux-3.10.30-imq.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/linux-3.10-layer7-filter.patch
+
+       # pie packet scheduler
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.39-pie_packet_sch.patch
+
+       # Grsecurity-patches
+ifneq "$(KCFG)" "-headers"
+       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
+
+       # 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
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.34-iwlwifi-noibss_only_on_radar_chan.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.39-add_libertas_uap.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
+
+       # cs5535audio spams syslog if no ac97 was present (geos router)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.30_cs5535audio_fix_logspam_on_geos.patch
+
+       # Add PC Engines APU led support
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-apu_leds.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
-endif
+       # Moschip 7830 link detection
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.y-usbnet_mcs7830_rework_link_detect.patch
 
-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
+ifeq "$(KCFG)" "-kirkwood"
+       # Add dreamplug,guruplug and icy 62x0  support on ARM-kirkwood
+       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 "$(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.10.27-fs-exec-atomic64-operand-requires-impossible-reload.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch
+
+       # Patchset for Omap (beagle/panda).
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/0002-omap2-twl-common-Add-default-power-configuration.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/sakoman/0002-video-add-timings-for-hd720.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0001-Beagle-expansion-add-buddy-param-for-expansionboard-.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0002-Beagle-expansion-add-zippy.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0003-Beagle-expansion-add-zippy2.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0004-Beagle-expansion-add-trainer.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0005-Beagle-expansion-add-CircuitCo-ulcd-Support.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0006-Beagle-expansion-add-wifi.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0007-Beagle-expansion-add-beaglefpga.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0008-Beagle-expansion-add-spidev.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0009-Beagle-expansion-add-Aptina-li5m03-camera.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0010-Beagle-expansion-add-LSR-COM6L-Adapter-Board.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0011-Beagle-expansion-LSR-COM6L-Adapter-Board-also-initia.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0001-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0002-backlight-Add-TLC59108-backlight-control-driver.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0003-tlc59108-adjust-for-beagleboard-uLCD7.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0004-zeroMAP-Open-your-eyes.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0005-ARM-OMAP-Beagle-use-TWL4030-generic-reset-script.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0006-DSS2-use-DSI-PLL-for-DPI-with-OMAP3.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0001-panda-fix-wl12xx-regulator.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0002-ti-st-st-kim-fixing-firmware-path.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0003-Panda-expansion-add-spidev.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0004-HACK-PandaES-disable-cpufreq-so-board-will-boot.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0006-ARM-hw_breakpoint-Enable-debug-powerdown-only-if-sys.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0007-Revert-regulator-twl-Remove-TWL6030_FIXED_RESOURCE.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0008-Revert-regulator-twl-Remove-another-unused-variable-.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0009-Revert-regulator-twl-Remove-references-to-the-twl403.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0010-Revert-regulator-twl-Remove-references-to-32kHz-cloc.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0011-panda-spidev-setup-pinmux.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/sgx/0001-arm-Export-cache-flush-management-symbols-when-MULTI.patch
+
+       # Patchset for Wandboard.
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/dts/0001-imx6qdl-wandboard-dts-backport.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/dts/0002-ARM-dts-imx6qdl-wandboard-add-gpio-lines-to-wandboar.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/dts/0003-ARM-dts-imx6qdl-wandboard-Add-support-for-i2c1.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/dts/0004-ARM-dts-wandboard-add-binding-for-wand-rfkill-driver.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/dts/0005-ARM-dts-imx6qdl-add-pcie-device-node.patch
+
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0001-i2c-imx-retry-on-NAK.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0002-i.MX6-Wandboard-add-CKO1-clock-output.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0003-thermal-add-imx-thermal-driver-support.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0004-ARM-i.MX6-Wandboard-add-wifi-bt-rfkill-driver.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0005-Add-IMX6Q-AHCI-support.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0006-imx-Add-IMX53-AHCI-support.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0007-imx6-enable-sata-clk-if-SATA_AHCI_PLATFORM.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0008-ARM-imx6q-update-the-sata-bits-definitions-of-gpr13.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0009-ahci_imx-add-ahci-sata-support-on-imx-platforms.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0010-ahci_imx-depend-on-CONFIG_MFD_SYSCON.patch
+       cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0011-add-pcie-designware.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0012-pcie-backport-fixes.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0013-of-pci-Provide-support-for-parsing-PCI-DT-ranges-pro.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0014-ARM-imx6q-Add-PCIe-bits-to-GPR-syscon-definition.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0015-PCI-imx6-Add-support-for-i.MX6-PCIe-controller.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0016-imx6-pci-tweaks.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0017-ARM-imx-Add-LVDS-general-purpose-clocks-to-i.MX6Q.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0018-ARM-imx6q-clock-and-Kconfig-update-for-PCIe-support.patch
+
+       # Patchset for Compulab Utilite.
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/utilite/linux-3.10-compulab-utilite-support.patch
 endif
 
 ifeq "$(KCFG)" "-rpi"
@@ -162,26 +256,26 @@ else
 
        # 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) && make oldconfig
+       cd $(DIR_APP) && make clean
        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) 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) 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) 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) 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,40 +284,41 @@ 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
+       cd $(DIR_APP) && make $(MAKETUNING) modules_install
+       cd $(DIR_APP) && make $(MAKETUNING) firmware_install
+
+ifeq "$(MACHINE_TYPE)" "arm"
+       cd $(DIR_APP) && make $(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/
 
        # Blacklist matroxfb_base
-       echo "blacklist matroxfb_base" >> /etc/modprobe.d/framebuffer
+       echo "blacklist matroxfb_base" >> /etc/modprobe.d/framebuffer.conf
        # 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 ; \
+               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/framebuffer.conf ; \
        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 ; \
+               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/framebuffer.conf ; \
        done
-       sed -i -e "s|.ko||g" /etc/modprobe.d/framebuffer
+       sed -i -e "s|.ko||g" /etc/modprobe.d/framebuffer.conf
 
        # 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 ; \
+               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/isdn.conf ; \
        done
-       sed -i -e "s|.ko||g" /etc/modprobe.d/isdn
+       sed -i -e "s|.ko||g" /etc/modprobe.d/isdn.conf
 
        # Disable ipv6 at runtime
-       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 \
-           /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko.off
+       echo "options ipv6 disable_ipv6=1" > /etc/modprobe.d/ipv6.conf
 endif
 endif
 
index 33a53810e8629ea596285b84a7cc2bc835c440ff..1dbfc7e00cb1fd74e30fc753110bd26d4873bc53 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2011  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        = 236367d
+VER        = 52d77db
 
 THISAPP    = linux-firmware-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,8 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 35d2ecf9b7d0b4d339fa0d4cc0736f6f
-
+$(DL_FILE)_MD5 = 3f6f1e78af3ee67a5540355f2ed8ba14
 install : $(TARGET)
 
 check : $(patsubst %,$(DIR_CHK)/%,$(objects))
@@ -69,7 +68,7 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        mkdir -p /lib/firmware
        cd $(DIR_APP) && cp -vr * /lib/firmware
        @rm -rf $(DIR_APP)
diff --git a/lfs/linux2 b/lfs/linux2
deleted file mode 100644 (file)
index a412d9e..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 = .60
-VER        = 2.6.32.60
-
-THISAPP    = linux-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-CFLAGS     =
-CXXFLAGS   =
-
-PAK_VER    = 25
-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                         = a8e037a78c5fabefd2baa83f7ae0b8b1
-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)
index b5ebcfba7ed4d21fdd02b2f62083fdcad1c70277..f343a2fad90727e787b58a0499b3b8afcf5c3440 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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.3.0
+VER        = 3.3.4
 
 THISAPP    = lm_sensors-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 5eb18d7531ead4f54f28a1133a606535
+$(DL_FILE)_MD5 = 60cfb98ab7a8915c3ac684af5459de2e
 
 install : $(TARGET)
 
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 57db77fa1e0b12372b238b174e93ac50fb155828..5cd4972ca3c5b576f161405fbc54365f79f5c214 100644 (file)
--- a/lfs/mISDN
+++ b/lfs/mISDN
@@ -27,7 +27,7 @@ include Config
 VERSUFIX=ipfire$(KCFG)
 
 ifeq "$(KCFG)" "-xen"
-       KVER = "2.6.32.60"
+       KVER = "2.6.32.61"
 endif
 
 VER        = 20121008
@@ -106,9 +106,9 @@ endif
 ifneq "$(XEN)" "1"
        # Blacklist misdn modules
        for f in $$(find /lib/modules/$(KVER)-$(VERSUFIX)/mISDN -name *.ko); do \
-               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/mISDN ; \
+               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/mISDN.conf ; \
        done
-       sed -i -e "s|.ko||g" /etc/modprobe.d/mISDN
+       sed -i -e "s|.ko||g" /etc/modprobe.d/mISDN.conf
 endif
 
        # Remove mISDN modules that was shipped with the kernel
diff --git a/lfs/mc b/lfs/mc
index 32946c17abe4ee734e906405a7247ceaa78f0c46..ed799be0640cef1473d0036451d7fabaa8f3297e 100644 (file)
--- a/lfs/mc
+++ b/lfs/mc
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2009  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-2014  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        = 4.8.4
+VER        = 4.8.12
 
 THISAPP    = mc-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = mc
-PAK_VER    = 6
+PAK_VER    = 9
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = a8edb8226cb25869f925ecce043faf1e
+$(DL_FILE)_MD5 = 7ecccc03df060cd0ca1414a5a14e6649
 
 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=/usr \
                                --sysconfdir=/etc \
                                --without-x --disable-nls \
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 fa99ea0b15b00bb456c04c1888ff4dff38a3ff4b..39c6b7352469ac7f67dfc040931778b450dd70a7 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.2.11
+VER        = 3.2.12
 
 THISAPP    = motion-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 3a26c00f3250eacf6fa93c7a7e0249d9
+$(DL_FILE)_MD5 = 1ba0065ed50509aaffb171594c689f46
 
 install : $(TARGET)
 
diff --git a/lfs/mpage b/lfs/mpage
new file mode 100644 (file)
index 0000000..b93fb06
--- /dev/null
+++ b/lfs/mpage
@@ -0,0 +1,77 @@
+###############################################################################
+#                                                                             #
+# 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/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 2.5.6
+
+THISAPP    = mpage-$(VER)
+DL_FILE    = $(THISAPP).tgz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 489663c9246e47915cea931348e5175d
+
+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)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mpage25-config.patch
+       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+       cd $(DIR_APP) && make $(EXTRA_INSTALL) install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
similarity index 92%
rename from lfs/libsigc++
rename to lfs/multicat
index 0d90f4c7711318e43928708a88f1d9db62d703c7..ac2959819dc1172df6d745f59acb12471df10923 100644 (file)
 
 include Config
 
-VER        = 2.0.18
+VER        = 2.0
 
-THISAPP    = libsigc++-$(VER)
+THISAPP    = multicat-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = multicat
+PAK_VER    = 1
+
+DEPS       = ""
 
 ###############################################################################
 # Top-level Rules
@@ -40,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ddebf5aafc8525d10366a8724abc9f28
+$(DL_FILE)_MD5 = 3aaa226a421c378c2ede0c8db8fd609c
 
 install : $(TARGET)
 
@@ -50,6 +54,9 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
 
 md5 : $(subst %,%_MD5,$(objects))
 
+dist: 
+       @$(PAK)
+
 ###############################################################################
 # Downloading, checking, md5sum
 ###############################################################################
@@ -70,8 +77,7 @@ $(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/libsigc++-gcc43.patch
-       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/multicat-makefile.patch
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
index 410dad6c45e1cf5b491b98462605fa7ec3da595b..edcd651f8904946739f3a339dd49b115d98c35cd 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,9 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = mysql
-PAK_VER    = 1
+PAK_VER    = 3
+
+CFLAGS += -fno-strict-aliasing
 
 ###############################################################################
 # Top-level Rules
@@ -42,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 6b07546389f75c52611adb7af38c3667
+$(DL_FILE)_MD5 = bf280949049161aa68cf29e600d9ec79
 
 install : $(TARGET)
 
@@ -75,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) && C_EXTRA_FLAGS=-fno-strict-aliasing
        cd $(DIR_APP) && ./configure --prefix=/usr \
                            --sysconfdir=/etc \
                            --libexecdir=/usr/sbin \
@@ -99,5 +100,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        chgrp -v mysql /srv/mysql{,/test,/mysql}
        chown mysql.mysql /srv/mysql/
        install -v -m755 -o mysql -g mysql -d /var/run/mysql
+       install -v -m 644 $(DIR_SRC)/config/backup/includes/mysql \
+               /var/ipfire/backup/addons/includes/mysql
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 2bb2a41efdf6bd451c26618c779e40377ca79e44..a9cef536f750de9f8ff53ed4ca5a15056013a9e0 100644 (file)
@@ -103,7 +103,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_SRC)/nagios-plugins* && ./configure --prefix=/usr \
                --libexecdir=/usr/lib/nagios \
                --with-nagios-user=nobody --with-nagios-group=nobody
-       cd $(DIR_SRC)/nagios-plugins* && make $(MAKETUNING)
+       cd $(DIR_SRC)/nagios-plugins* && make
        cd $(DIR_SRC)/nagios-plugins* && make install
        chown -R nobody:nobody /var/nagios
        ln -s /etc/init.d/nagios /etc/rc.d/rc3.d/S67nagios
index c17c95f68b5985cb0482953db3a17fec36351d53..ae4d73850e416fc50388fa4588654f18a2ff2020 100644 (file)
@@ -69,13 +69,16 @@ $(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 -i $(DIR_SRC)/src/patches/net-tools-1.60-no-hostname.patch
        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 2b7e6266d38783b26fd9510a672b11497ed64190..b640dcc5e2eff18c9f1512d06f1aac6c90ccc08d 100644 (file)
--- a/lfs/nginx
+++ b/lfs/nginx
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-14  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        = 1.3.11
+VER        = 1.4.4
 
 THISAPP    = nginx-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG      = nginx
-PAK_VER           = 1
+PAK_VER           = 3
 
 ###############################################################################
 # Top-level Rules
@@ -42,11 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 4d299999bca4d2cecfbe48e51684a345
-
-objects += nginx_tcp_proxy_module.tar.bz2
-nginx_tcp_proxy_module.tar.bz2 = $(DL_FROM)/nginx_tcp_proxy_module.tar.bz2
-nginx_tcp_proxy_module.tar.bz2_MD5 = f07898b5b783ef65d416019b51cb1de8
+$(DL_FILE)_MD5 = 5dfaba1cbeae9087f3949860a02caa9f
 
 install : $(TARGET)
 
@@ -79,8 +75,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) && tar xvf $(DIR_SRC)/cache/nginx_tcp_proxy_module.tar.bz2 -C $(DIR_APP)  
-       cd $(DIR_APP) && patch -p1 < nginx_tcp_proxy_module/tcp.patch
        cd $(DIR_APP) && ./configure \
                --prefix=/usr/share/nginx/ \
                --conf-path=/etc/nginx/nginx.conf \
@@ -97,12 +91,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                --with-imap --with-imap_ssl_module --with-http_ssl_module \
                --with-http_stub_status_module \
                --with-http_dav_module \
-               --with-http_sub_module \
-               --add-module=nginx_tcp_proxy_module/
+               --with-http_sub_module 
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        mkdir -p /var/log/nginx /var/spool/nginx
        cp /usr/src/config/nginx/nginx /etc/init.d/
-#      chown http:http /var/log/nginx
-#      @rm -rf $(DIR_APP)
+       @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/ntp b/lfs/ntp
index 1859212f5263b47d8dc71015cfd2452fba6abf4a..a6f7ff6758ecec997844777bb1cf5db48abfba9a 100644 (file)
--- a/lfs/ntp
+++ b/lfs/ntp
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 4.2.4p7
+VER        = 4.2.6p5
 
 THISAPP    = ntp-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 8c19ff62ed4f7d64f8e2aa59cb11f364
+$(DL_FILE)_MD5 = 00df80a84ec9528fcfb09498075525bc
 
 install : $(TARGET)
 
@@ -70,14 +70,21 @@ $(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 --bindir=/usr/sbin \
-                                           --sysconfdir=/etc --disable-nls \
-                                           -enable-all-clocks --enable-parse-clocks
+       cd $(DIR_APP) && \
+               ./configure \
+                       --prefix=/usr \
+                       --sysconfdir=/etc \
+                       --disable-nls \
+                       --enable-all-clocks \
+                       --enable-parse-clocks
+
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
+
        -mkdir /etc/ntp
        chown -R ntp:ntp /etc/ntp
-       echo "restrict default nomodify noquery" >  /etc/ntp.conf
+       echo "disable monitor" > /etc/ntp.conf
+       echo "restrict default nomodify noquery" >>  /etc/ntp.conf
        echo "server  127.127.1.0"                      >> /etc/ntp.conf
        echo "fudge   127.127.1.0 stratum 10"   >> /etc/ntp.conf
        echo "driftfile /etc/ntp/drift"         >> /etc/ntp.conf
@@ -86,9 +93,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cp -vf $(DIR_SRC)/config/time/* /var/ipfire/time/
        chmod 644 /var/ipfire/time/*
        chown nobody:nobody /var/ipfire/time/*
-       ln -s ../init.d/ntp /etc/rc.d/rc0.d/K46ntpd
-       ln -s ../init.d/ntp /etc/rc.d/rc6.d/K46ntpd
-       ln -s ../init.d/ntp /etc/rc.d/rc3.d/S26ntpd
+       ln -svf ../init.d/ntp /etc/rc.d/rc0.d/K46ntpd
+       ln -svf ../init.d/ntp /etc/rc.d/rc6.d/K46ntpd
+       ln -svf ../init.d/ntp /etc/rc.d/rc3.d/S26ntpd
 
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/nut b/lfs/nut
index 0a5f84779ea70446263dbb1e8ef0a465677c2a02..c64c5a26b53087f5a06038447c68e519d4b40ff1 100644 (file)
--- a/lfs/nut
+++ b/lfs/nut
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.6.3
+VER        = 2.7.2
 
 THISAPP    = nut-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = nut
-PAK_VER    = 4
+PAK_VER    = 5
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 8db00c21f8bc03add6e14d15f634ec6a
+$(DL_FILE)_MD5 = c3568b42e058cfc385b46d25140dced4
 
 install : $(TARGET)
 
index a13c924740c3faf7149386adfa5beeb9a1aff0f3..6cc075fa402a329cb2988f6ad485058c593c7bf9 100644 (file)
@@ -69,6 +69,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) && patch -Np1 < $(DIR_SRC)/src/patches/oinkmaster-2.0-add_community_rules.patch
        cd $(DIR_APP) && chown nobody:nobody oinkmaster.pl
        cd $(DIR_APP) && cp -f oinkmaster.conf /var/ipfire/snort/
        cd /var/ipfire/snort && patch -Np1 < $(DIR_SRC)/src/patches/oinkmaster-tmp.patch
index 774e18a2fb458c127cec7f627382565e2bdcb6b5..bc6fa3cade62f9622a80010933cf997fc3aa4f54 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        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 6.1p1
+VER        = 6.6p1
 
 THISAPP    = openssh-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 3345cbf4efe90ffb06a78670ab2d05d5
+$(DL_FILE)_MD5 = 3e9800e6bca1fbac0eea4d41baa7f239
 
 install : $(TARGET)
 
index b9d2617f6ed77d265d838af3e67d83f84f3f2738..12cea68b2851ffc14f9edb2e2955060312e9351a 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        = 0.9.8y
+VER        = 1.0.1h
 
 THISAPP    = openssl-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,6 +32,17 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
+ifeq "$(MACHINE)" "i586"
+       CONFIGURE_ARGS = linux-elf no-asm 386
+endif
+
+ifeq "$(MACHINE)" "armv5tel"
+       CONFIGURE_ARGS = linux-generic32
+endif
+
+CFLAGS += -DPURIFY
+export RPM_OPT_FLAGS = $(CFLAGS)
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
@@ -40,7 +51,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 47c7fb37f78c970f1d30aa2f9e9e26d8
+$(DL_FILE)_MD5 = 8d6d684a9430d5cc98a62a5d8fbda8cf
 
 install : $(TARGET)
 
@@ -70,15 +81,49 @@ $(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/openssl-0.9.8u-cryptodev.patch
-       @rm -rf /etc/ssl
-       cd $(DIR_APP) && sed -i -e 's/mcpu/march/' config
-       cd $(DIR_APP) && sed -i -e 's/-O3/-O2/' -e 's/-march=i486/-march=i586/' Configure
-       cd $(DIR_APP) && ./Configure --openssldir=/etc/ssl --prefix=/usr shared linux-elf \
-               zlib-dynamic no-asm 386 -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGEST
-       cd $(DIR_APP) && make MANDIR=/usr/share/man
-       cd $(DIR_APP) && make MANDIR=/usr/share/man install
-       rm -rf /etc/ssl/lib
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.0-beta5-enginesdir.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.1-beta2-build.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.1e-cryptodev.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.1e-fix_parallel_build-1.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-1.0.1e-weak-ciphers.patch
+
+       cd $(DIR_APP) && find crypto/ -name Makefile -exec \
+               sed 's/^ASFLAGS=/&-Wa,--noexecstack /' -i {} \;
+
+       cd $(DIR_APP) && ./Configure \
+               --prefix=/usr \
+               --openssldir=/etc/ssl \
+               --enginesdir=/usr/lib/openssl/engines \
+               shared \
+               zlib-dynamic \
+               enable-camellia \
+               enable-md2 \
+               enable-seed \
+               enable-tlsext \
+               enable-rfc3779 \
+               no-idea \
+               no-mdc2 \
+               no-rc5 \
+               no-srp \
+               $(CONFIGURE_ARGS) \
+               -DSSL_FORBID_ENULL \
+               -DHAVE_CRYPTODEV \
+               -DUSE_CRYPTODEV_DIGEST
+
+       cd $(DIR_APP) && make depend
+       cd $(DIR_APP) && make
+
+       # Install everything.
+       cd $(DIR_APP) && make install
        install -m 0644 $(DIR_SRC)/config/ssl/openssl.cnf /etc/ssl
+
+       # Remove man pages.
+       -rm -vfr /etc/ssl/man
+
+       # Move engines to the right place.
+       -mkdir -pv /usr/lib/openssl
+       rm -vfr /usr/lib/openssl/engines
+       mv -v /usr/lib/engines /usr/lib/openssl
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/openssl-compat b/lfs/openssl-compat
new file mode 100644 (file)
index 0000000..d2ae6a0
--- /dev/null
@@ -0,0 +1,100 @@
+###############################################################################
+#                                                                             #
+# 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        = 0.9.8y
+
+THISAPP    = openssl-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 47c7fb37f78c970f1d30aa2f9e9e26d8
+
+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)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/openssl-0.9.8u-cryptodev.patch
+
+       cd $(DIR_APP) && sed -i -e 's/mcpu/march/' config
+       cd $(DIR_APP) && sed -i -e 's/-O3/-O2/' -e 's/-march=i486/-march=i586/' Configure
+
+       # Support for engines is disabled, because the shared objects from the
+       # new version of openssl cannot be loaded by the old one.
+
+       cd $(DIR_APP) && ./Configure \
+               --prefix=/usr \
+               --openssldir=/etc/ssl \
+               shared linux-elf \
+               zlib-dynamic \
+               no-engines \
+               no-asm 386 \
+               -DSSL_FORBID_ENULL \
+               -DHAVE_CRYPTODEV \
+               -DUSE_CRYPTODEV_DIGEST
+
+       cd $(DIR_APP) && make depend
+       cd $(DIR_APP) && make
+
+       cd $(DIR_APP) && install -v -m 755 libcrypto.so.0.9.8 /usr/lib
+       cd $(DIR_APP) && install -v -m 755 libssl.so.0.9.8 /usr/lib
+
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index 229ed8f8f8c3a8dbc40aa7abc1b0c9c793c2a32d..baae59598dcd0d7240a37566bead30047918a332 100644 (file)
@@ -37,6 +37,8 @@ PAK_VER    = 1
 
 DEPS       = ""
 
+CFLAGS    += -fno-PIC
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
index e57aa30bacf2d190c339c5f012af213c0ef78373..8c7c81a4916843702b71031ae9e222fc795db05d 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2011  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        = 2.2.2
+VER        = 2.3.4
 
 THISAPP    = openvpn-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = c5181e27b7945fa6276d21873329c5c7
+$(DL_FILE)_MD5 = 9b70be9fb45e407117c3c9b118e4ba22
 
 install : $(TARGET)
 
@@ -69,20 +69,20 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && ./configure \
                --prefix=/usr \
                --sysconfdir=/var/ipfire/ovpn \
+               --enable-iproute2 \
                --enable-password-save \
-               --enable-pthread
+               --enable-plugins \
+               --enable-plugin-auth-pam \
+               --enable-plugin-down-root
+
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        cd $(DIR_APP) && cp -Rvf $(DIR_SRC)/config/ovpn /var/ipfire
-       -mkdir -pv /usr/lib/openvpn
-       cd $(DIR_APP)/plugin/auth-pam && make
-       cp -pvf $(DIR_APP)/plugin/auth-pam/openvpn-auth-pam.so /usr/lib/openvpn
-       cd $(DIR_APP)/plugin/down-root && make
-       cp -pvf $(DIR_APP)/plugin/down-root/openvpn-down-root.so /usr/lib/openvpn
+       -mkdir -vp /usr/lib/openvpn/plugins
        -mkdir -vp /var/ipfire/ovpn/ca
        -mkdir -vp /var/ipfire/ovpn/ccd
        -mkdir -vp /var/ipfire/ovpn/crls
@@ -93,8 +93,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        chown -R root:root /var/ipfire/ovpn/scripts
        chown -R nobody:nobody /var/ipfire/ovpn
        chown root.nobody /var/log/ovpnserver.log
-       chmod 755 /var/ipfire/ovpn/verify
        chmod 660 /var/log/ovpnserver.log
        chmod 700 /var/ipfire/ovpn/certs
+       mv -v /var/ipfire/ovpn/verify /usr/lib/openvpn/verify
+       chown root:root /usr/lib/openvpn/verify
+       chmod 755 /usr/lib/openvpn/verify
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
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)
diff --git a/lfs/paxctl b/lfs/paxctl
new file mode 100644 (file)
index 0000000..c55f293
--- /dev/null
@@ -0,0 +1,79 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# 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        #
+# 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        = 0.7
+
+THISAPP    = paxctl-$(VER)
+DL_FILE    = $(THISAPP).tar.bz2
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 25bf9df751976e87be20243e75291263
+
+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) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
similarity index 90%
rename from lfs/rtorrent
rename to lfs/perl-Carp-Clan
index 3ccbb4c2f1944f5aec0dd67e5d76fef087a61e19..4afc2d66213a6d83b2c04c3ed12081862c3dfa9e 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2009  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2011  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        #
 #                                                                             #
 ###############################################################################
 
+
 ###############################################################################
 # Definitions
 ###############################################################################
 
 include Config
+VER        = 6.04
 
-VER        = 0.8.6
-
-THISAPP    = rtorrent-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+THISAPP    = Carp-Clan-$(VER)
+DL_FILE    = ${THISAPP}.tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG       = rtorrent
-PAK_VER    = 5
-CFLAGS     =
-CXXFLAGS   =
-
+PROG       = perl-Carp-Clan
 DEPS       = ""
+PAK_VER    = 3
 
 ###############################################################################
 # Top-level Rules
@@ -46,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = b804c45c01c40312926bcea6b55bb084
+$(DL_FILE)_MD5 = b6316bc51bb530d994f2784615939fb2
 
 install : $(TARGET)
 
@@ -79,7 +76,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
+       cd $(DIR_APP) && perl Makefile.PL
        cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
diff --git a/lfs/perl-DBD-SQLite b/lfs/perl-DBD-SQLite
new file mode 100644 (file)
index 0000000..aaee284
--- /dev/null
@@ -0,0 +1,84 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2011  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        = 1.40
+
+THISAPP    = DBD-SQLite-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = perl-DBD-SQLite
+PAK_VER    = 1
+
+DEPS       = "perl-DBI"
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = b9876882186499583428b14cf5c0e29c
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && perl Makefile.PL
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index 8091374559ae49abcf9684398cc129ec1200eeae..76e8a25341f95c632500626523530c0954786d4a 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.607
+VER        = 1.631
 
 THISAPP    = DBI-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = bd5785b39675213948a61dea1b400012
+$(DL_FILE)_MD5 = 444d3c305e86597e11092b517794a840
 
 install : $(TARGET)
 
diff --git a/lfs/perl-Date-Calc b/lfs/perl-Date-Calc
new file mode 100644 (file)
index 0000000..eb4f2fa
--- /dev/null
@@ -0,0 +1,82 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2011  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        = 6.3
+
+THISAPP    = Date-Calc-$(VER)
+DL_FILE    = ${THISAPP}.tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = perl-Date-Calc
+DEPS       = "perl-Carp-Clan"
+PAK_VER    = 3
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 9b64555b7051c1beb6b61daead2d01b3
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && perl Makefile.PL
+       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/lfs/perl-Date-Manip b/lfs/perl-Date-Manip
new file mode 100644 (file)
index 0000000..39d271a
--- /dev/null
@@ -0,0 +1,82 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2011  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        = 6.40
+
+THISAPP    = Date-Manip-$(VER)
+DL_FILE    = ${THISAPP}.tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = perl-Date-Manip
+DEPS       = ""
+PAK_VER    = 4
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = ae57b05e8ec689de2f23c99639e0109d
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && perl Makefile.PL
+       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
similarity index 92%
rename from lfs/mbr
rename to lfs/perl-Device-Modem
index c43f2fdb28292d192d570de219e8284500232fad..f0609b9285b33e5e67b2f10a459071ee4e991ff8 100644 (file)
--- a/lfs/mbr
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2014 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        = 1.56
 
-THISAPP    = mbr-$(VER)
+THISAPP    = Device-Modem-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 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 = a0ec45c3e313bea27ccb476d3b725955
 
 install : $(TARGET)
 
@@ -71,7 +70,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
+       cd $(DIR_APP) && perl Makefile.PL
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
similarity index 91%
rename from lfs/vnstati
rename to lfs/perl-Device-SerialPort
index c7cd6edafbba72f00e2ef61faf38b82d6aa410da..3eebc07d7d4db52c607e95257188502834c00e15 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2014 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,9 +24,9 @@
 
 include Config
 
-VER        = beta3
+VER        = 1.000002
 
-THISAPP    = vnstati-$(VER)
+THISAPP    = Device-SerialPort-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 5652b955e16716cec48da464b083c76f
+$(DL_FILE)_MD5 = f53db3733679adc5d05d06fa530444b6
 
 install : $(TARGET)
 
@@ -50,9 +50,6 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
 
 md5 : $(subst %,%_MD5,$(objects))
 
-dist: 
-       @$(PAK)
-
 ###############################################################################
 # Downloading, checking, md5sum
 ###############################################################################
@@ -73,7 +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) && make $(MAKETUNING)                                                                             LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes"
+       cd $(DIR_APP) && perl Makefile.PL
+       cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/perl-File-ReadBackwards b/lfs/perl-File-ReadBackwards
new file mode 100644 (file)
index 0000000..bafd557
--- /dev/null
@@ -0,0 +1,84 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2011  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        = 1.05
+
+THISAPP    = File-ReadBackwards-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = perl-File-ReadBackwards
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 613d9d02de6c1d86d5fa5b8816a6b214
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && perl Makefile.PL
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/lfs/perl-File-Tail b/lfs/perl-File-Tail
new file mode 100644 (file)
index 0000000..2054bc6
--- /dev/null
@@ -0,0 +1,83 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2011  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        = 0.99.3
+
+THISAPP    = File-Tail-$(VER)
+DL_FILE    = ${THISAPP}.tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = perl-File-Tail
+DEPS       = ""
+PAK_VER    = 3
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = ef0fb7bcb4181ba593f4a09940f61d1c
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && perl Makefile.PL
+       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
similarity index 90%
rename from lfs/libtorrent
rename to lfs/perl-TimeDate
index 7ce3b23963a4709ac00545c1ff9dd5ca12704166..ca4b7f2955a77e832331945b1321f8bf58ab33a4 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2009  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2011  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        #
 #                                                                             #
 ###############################################################################
 
+
 ###############################################################################
 # Definitions
 ###############################################################################
-
 include Config
+VER        = 1.20
 
-VER        = 0.12.6
-
-THISAPP    = libtorrent-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+THISAPP    = TimeDate-$(VER)
+DL_FILE    = ${THISAPP}.tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
-CFLAGS     =
-CXXFLAGS   =
+PROG       = perl-TimeDate
+DEPS       = ""
+PAK_VER    = 3
 
 ###############################################################################
 # Top-level Rules
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 037499ed708aaf72988cee60e5a8d96b
+$(DL_FILE)_MD5 = 7da7452bce4c684e4238e6d09b390200
 
 install : $(TARGET)
 
@@ -52,6 +52,9 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
 
 md5 : $(subst %,%_MD5,$(objects))
 
+dist: 
+       @$(PAK)
+
 ###############################################################################
 # Downloading, checking, md5sum
 ###############################################################################
@@ -72,7 +75,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 --disable-ipv6
+       cd $(DIR_APP) && perl Makefile.PL
        cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
diff --git a/lfs/php b/lfs/php
index 58f442ce4c839dba7c381cb4345f660b151dfba4..8139e2128400e4c6ad77061aad91fbb9e8ac3b27 100644 (file)
--- a/lfs/php
+++ b/lfs/php
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.3.16
+VER        = 5.3.27
 
 THISAPP    = php-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -46,7 +46,7 @@ $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 idn-0.1.tgz = $(DL_FROM)/idn-0.1.tgz
 Log-1.9.11.tgz = $(DL_FROM)/Log-1.9.11.tgz
 
-$(DL_FILE)_MD5 = 99cfd78531643027f60c900e792d21be
+$(DL_FILE)_MD5 = 25ae23a5b9615fe8d33de5b63e1bb788
 idn-0.1.tgz_MD5 = ef8635ec22348325a76abd2abddca4a1
 Log-1.9.11.tgz_MD5 = fb7c648b212f12fdb5ce1ab687793513
 
@@ -114,11 +114,12 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                                                                                            --with-mysql-sock=/var/run/mysql \
                                                                                            --with-ncurses \
                                                                                            --with-pdo-mysql \
-                                                                                           --without-pdo-sqlite \
+                                                                                           --with-pdo-sqlite \
                                                                                            --with-readline \
                                                                                            --enable-sockets \
                                                                                            --with-xsl \
-                                                                                           --with-iconv
+                                                                                           --with-iconv \
+                                                                                           --enable-zip
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        cd $(DIR_APP) && install -v -m644 $(DIR_SRC)/config/php/php.ini /etc/php.ini
index 5866b97d85ac01cae96f6ecbd8c00fcce4e1fc65..77c6dd0e4aefbccb08c5bd9a6a45492a7e79e005 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.6.5
+VER        = 2.10.0
 
 THISAPP    = postfix-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,12 +32,34 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = postfix
-PAK_VER    = 6
+PAK_VER    = 7
 
 DEPS       = "amavisd mysql"
 
-# Fake kernel release
-export UTS_RELEASE = 2.6.32-ipfire
+CCARGS     = -DNO_IPV6 `getconf LFS_CFLAGS` \
+       -DDEF_DAEMON_DIR="'\"/usr/lib/postfix\"'" \
+       -DDEF_MANPAGE_DIR="'\"/usr/share/man\"'"
+AUXLIBS    =
+
+# LDAP
+CCARGS    += -DHAS_LDAP -DLDAP_DEPRECATED=1
+AUXLIBS   += -lldap -llber
+
+# PCRE
+CCARGS    += -DHAS_PCRE -I/usr/include/pcre
+AUXLIBS   += -lpcre
+
+# MySQL
+CCARGS    += -DHAS_MYSQL -I/usr/include/mysql
+AUXLIBS   += -L/usr/lib/mysql -lmysqlclient -lm
+
+# SASL
+CCARGS    += -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl
+AUXLIBS   += -L/usr/lib/sasl2 -lsasl2
+
+# SSL
+CCARGS    += -DUSE_TLS `pkg-config --cflags openssl`
+AUXLIBS   += `pkg-config --libs openssl`
 
 ###############################################################################
 # Top-level Rules
@@ -47,7 +69,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 6b954cfb3eb6141dac1e773281211717
+$(DL_FILE)_MD5 = b2a563b2d5c53462952886e6fc4e4b7b
 
 install : $(TARGET)
 
@@ -81,8 +103,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.init makefiles \
-                               'CCARGS=-DDEF_DAEMON_DIR=\"/usr/lib/postfix\" -DDEF_MANPAGE_DIR=\"/usr/share/man\" -DUSE_TLS -I/usr/include/openssl -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DHAS_MYSQL -I/usr/include/mysql' \
-                               'AUXLIBS=-L/usr/lib -L/usr/lib/sasl2 -lz -lm  -lssl -lcrypto -lmysqlclient -L/usr/lib/mysql -lsasl2 -L/usr/lib'
+               DEBUG="" OPT="$(CFLAGS) -fno-strict-aliasing" CCARGS="$(CCARGS)" AUXLIBS="$(AUXLIBS)"
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && sh postfix-install -non-interactive
        ## Install configuration
@@ -91,5 +112,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        mv -vf /etc/postfix/aliases /etc/aliases
        mkdir -p /var/lib/postfix
        chown postfix.root /var/lib/postfix
+
+       install -v -m 644 $(DIR_SRC)/config/backup/includes/postfix \
+                        /var/ipfire/backup/addons/includes/postfix
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index f2a7f5fecd821d2eff9a249ebeaa0170598a7976..20e807d18707c2d472574046b55d74fb99b4123e 100644 (file)
--- a/lfs/pound
+++ b/lfs/pound
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.6
+VER        = 2.7c
 
 THISAPP    = Pound-$(VER)
 DL_FILE    = $(THISAPP).tgz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = pound
-PAK_VER    = 4
+PAK_VER    = 6
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 8c913b527332694943c4c67c8f152071
+$(DL_FILE)_MD5 = 56dace6b79c6be1d25b31355269c380a
 
 install : $(TARGET)
 
@@ -77,12 +77,14 @@ $(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 -p4 < $(DIR_SRC)/src/patches/pound-2.6.patch
-       cd $(DIR_APP) && patch -p1 < $(DIR_SRC)/src/patches/Pound-2.6-reneg-ciphers-altnames-nosslv2.patch
-       cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc --enable-cert1l
+       cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        install -v -m 644 $(DIR_SRC)/config/backup/includes/pound \
                         /var/ipfire/backup/addons/includes/pound
+
+       # Remove temporary file.
+       rm -vf /root/.rnd
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/ppp b/lfs/ppp
index 5d772fc04321517f232abc75327fbe09d61e6162..3c60938dcdcd65d6a208cb667af70c71ebf5579f 100644 (file)
--- a/lfs/ppp
+++ b/lfs/ppp
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.4.5
+VER        = 2.4.6
 
 THISAPP    = ppp-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -42,7 +42,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 4621bc56167b6953ec4071043fe0ec57
+$(DL_FILE)_MD5 = 3434d2cc9327167a0723aaaa8670083b
 
 install : $(TARGET)
 
@@ -73,16 +73,14 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && rm -f include/pcap-int.h include/linux/if_pppol2tp.h
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ppp-2.4.2-pppoatm.patch
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ppp-2.4.2-pppoatm-persist.patch
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ppp-2.4.1-oedod.patch
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ppp-2.4.2-pppoatm-modprobe.patch
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ppp-2.4.2-signal.patch
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ppp-2.4.2-printstats.patch
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ppp-2.4.2-close.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/0003-build-sys-utilize-compiler-flags-handed-to-us-by-rpm.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/0012-pppd-we-don-t-want-to-accidentally-leak-fds.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/0013-everywhere-O_CLOEXEC-harder.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/0014-everywhere-use-SOCK_CLOEXEC-when-creating-socket.patch
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/ppp-2.4.6-increase-max-padi-attempts.patch
        cd $(DIR_APP) && sed -i -e "s+/etc/ppp/connect-errors+/var/log/connect-errors+" pppd/pathnames.h
        cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls
-       cd $(DIR_APP) && make $(MAKETUNING) CC="gcc $(CFLAGS)"
+       cd $(DIR_APP) && make $(MAKETUNING) CC="gcc" RPM_OPT_FLAGS="$(CFLAGS)"
        cd $(DIR_APP) && make install
        cd $(DIR_APP) && make install-etcppp
        touch /var/log/connect-errors
index d68b97d1e5667a66320706b962c576f742886222..2fc0476b0a8e5c93bc0264074a3edca341f6641e 100644 (file)
--- a/lfs/qemu
+++ b/lfs/qemu
@@ -33,7 +33,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 SUP_ARCH   = i586
 PROG       = qemu
-PAK_VER    = 13
+PAK_VER    = 14
 
 DEPS       = "sdl"
 
index 85d39007b871c65b5222adaf8dea66beed1abb1c..fb03e56f952cfe550b14bf966b9444372a3d08fc 100644 (file)
--- a/lfs/r8101
+++ b/lfs/r8101
@@ -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        #
@@ -26,10 +26,12 @@ include Config
 
 VERSUFIX = ipfire$(KCFG)
 ifeq "$(KCFG)" "-xen"
-       KVER = 2.6.32.60
+       KVER = 2.6.32.61
        MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net
+       MODNAME = r8101.ko
 else
        MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/realtek
+       MODNAME = r8101.ko.vendor
 endif
 
 VER        = 1.023.00
@@ -83,6 +85,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/r8101_add_missing_pciids.patch
        cd $(DIR_APP) && make -C /lib/modules/$(KVER)-$(VERSUFIX)/build/ SUBDIRS=$(DIR_APP)/src modules
-       cd $(DIR_APP)/src && install -m 644 r8101.ko $(MODPATH)
+       cd $(DIR_APP)/src && install -m 644 r8101.ko $(MODPATH)/$(MODNAME)
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index c4aa6a960ada3fdf917d99163a5d26503a500bcf..98267370ab03dede08b2bfb6188347bc06c32d03 100644 (file)
--- a/lfs/r8168
+++ b/lfs/r8168
@@ -26,10 +26,12 @@ include Config
 
 VERSUFIX = ipfire$(KCFG)
 ifeq "$(KCFG)" "-xen"
-       KVER = 2.6.32.60
+       KVER = 2.6.32.61
        MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net
+       MODNAME = r8168.ko
 else
        MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/realtek
+       MODNAME = r8168.ko.vendor
 endif
 
 VER        = 8.035.00
@@ -82,6 +84,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && make -C /lib/modules/$(KVER)-$(VERSUFIX)/build/ SUBDIRS=$(DIR_APP)/src modules
-       cd $(DIR_APP)/src && install -m 644 r8168.ko $(MODPATH)
+       cd $(DIR_APP)/src && install -m 644 r8168.ko $(MODPATH)/$(MODNAME)
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 65c34e610f570061e2d57a0a3f7d9c4fe3d7aefe..5a8be3c31e3ffe17c141996bbbd2f4d6a8b9344b 100644 (file)
--- a/lfs/r8169
+++ b/lfs/r8169
@@ -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        #
@@ -26,10 +26,12 @@ include Config
 
 VERSUFIX = ipfire$(KCFG)
 ifeq "$(KCFG)" "-xen"
-       KVER = 2.6.32.60
+       KVER = 2.6.32.61
        MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net
+       MODNAME = r8169.ko
 else
        MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/realtek
+       MODNAME = r8169.ko.vendor
 endif
 
 VER        = 6.017.00
@@ -81,11 +83,13 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        #Save original r8169 module
+ifeq "$(KCFG)" "-xen"
        -mv $(MODPATH)/r8169.ko \
            $(MODPATH)/r8169.ko.org
+endif
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/r8169_add_missing_pciids.patch
        cd $(DIR_APP) && make -C /lib/modules/$(KVER)-$(VERSUFIX)/build/ SUBDIRS=$(DIR_APP)/src modules
-       cd $(DIR_APP)/src && install -m 644 r8169.ko $(MODPATH)
+       cd $(DIR_APP)/src && install -m 644 r8169.ko $(MODPATH)/$(MODNAME)
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/rng-tools b/lfs/rng-tools
new file mode 100644 (file)
index 0000000..8ca95cf
--- /dev/null
@@ -0,0 +1,77 @@
+###############################################################################
+#                                                                             #
+# 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/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 4
+
+THISAPP    = rng-tools-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = ae89dbfcf08bdfbea19066cfbf599127
+
+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)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+       cd $(DIR_APP) && make $(EXTRA_INSTALL) install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index c02d5cc5f9279da7e938fc56d009e7db2bb061d3..6882fcbdc02714a49dbaedcc2997b9bf52140be8 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2012  IPFire Team  <info@ipfire.org>                          #
+# Copyright (C) 2007-2014  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        = 855e997
+VER        = cd50136
 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 = fced022c0e646affae0d5d5543f59054
 
 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 d8f680003e6f4173048210350383b481bb1ff4bd..603f215b3c702c70eaf83526bac7a016a5f39918 100644 (file)
--- a/lfs/samba
+++ b/lfs/samba
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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.6.15
+VER        = 3.6.24
 
 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    = 49
+PAK_VER    = 58
 
 DEPS       = "cups"
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = d9424e9badb089bd51e6cfc752b21dfa
+$(DL_FILE)_MD5 = d98425c0c2b73e08f048d31ffc727fb0
 
 install : $(TARGET)
 
index 950b319caff5c31f0191e736e429c055bb30f358..45c17a8ad691b70bbe63a62428068c04044009e6 100644 (file)
--- a/lfs/snort
+++ b/lfs/snort
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2010  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        = 2.9.4
+VER        = 2.9.6.1
 
 THISAPP    = snort-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e79ee6b4fbb32edc5dfed2d7dfcc6813
+$(DL_FILE)_MD5 = d7c0f1ddb2e70b70acdaa4664abb5fb0
 
 install : $(TARGET)
 
@@ -70,13 +70,26 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) $(DIR_SRC)/snort* && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls \
-               --sysconfdir=/etc/snort --target=i586 \
-               --enable-linux-smp-stats --enable-smb-alerts \
-               --enable-gre --enable-mpls --enable-targetbased \
-               --enable-decoder-preprocessor-rules --enable-ppm \
-               --enable-perfprofiling --enable-zlib --enable-active-response \
-               --enable-normalizer --enable-reload --enable-react --enable-flexresp3
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --disable-nls \
+               --sysconfdir=/etc/snort \
+               --target=i586 \
+               --enable-linux-smp-stats \
+               --enable-smb-alerts \
+               --enable-gre --enable-mpls \
+               --enable-targetbased \
+               --enable-decoder-preprocessor-rules \
+               --enable-ppm \
+               --enable-non-ether-decoders \
+               --enable-perfprofiling \
+               --enable-zlib \
+               --enable-active-response \
+               --enable-normalizer \
+               --enable-reload \
+               --enable-react \
+               --enable-flexresp3
+
        cd $(DIR_APP) && make
        cd $(DIR_APP) && make install
        mv /usr/bin/snort /usr/sbin/
@@ -86,6 +99,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
                etc/reference.config etc/classification.config /etc/snort/rules
        cd $(DIR_APP) && install -m 0644 etc/unicode.map /etc/snort
        install -m 0644 $(DIR_SRC)/config/snort/snort.conf /etc/snort
+       cp /etc/snort/snort.conf /etc/snort/snort.conf.template
        chown -R nobody:nobody /etc/snort
        -mkdir -p /var/log/snort
        chown -R snort:snort /var/log/snort
index 3ede976109819caa9d673c7cdeecc3c7e39027c8..e050b17c5c4edaa8f5d8c725479ecf95e0792a87 100644 (file)
--- a/lfs/squid
+++ b/lfs/squid
 
 include Config
 
-VER        = 3.1.23
+VER        = 3.4.5
 
 THISAPP    = squid-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e15fdb8c615cf1f9525be0a2b75c60a7
+$(DL_FILE)_MD5 = a831efb36cfbaa419f8dc7a43cba72c9
 
 install : $(TARGET)
 
@@ -69,44 +69,57 @@ $(subst %,%_MD5,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
-       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xjf $(DIR_DL)/$(DL_FILE)
-
-       cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls \
-          --datadir=/usr/lib/squid \
-          --mandir=/usr/share/man --libexecdir=/usr/lib/squid \
-          --localstatedir=/var --sysconfdir=/etc/squid \
-          --enable-poll --enable-icmp --disable-wccp \
-          --enable-ident-lookups \
-          --enable-storeio="aufs,diskd,ufs" --enable-ssl \
-          --enable-underscores --enable-ntlm-fail-open --enable-arp-acl \
-          --enable-http-violations --enable-auth=basic,ntlm \
-          --enable-removal-policies="heap,lru" \
-          --enable-delay-pools --enable-linux-netfilter \
-          --enable-basic-auth-helpers="NCSA,SMB,MSNT,LDAP,multi-domain-NTLM,PAM,squid_radius_auth" \
-          --enable-useragent-log \
-          --enable-referer-log \
-             --enable-snmp \
-          --with-pthreads --with-dl \
-          --with-maxfd="16384" \
-          --with-filedescriptors=16384 \
-          --with-large-files \
-          --with-aio \
-          --enable-async-io=8 \
-          --enable-unlinkd \
-          --enable-ntln-fail-open \
-          --enable-ntlm-auth-helpers="smb_lm,no_check,fakeauth" \
-          --enable-internal-dns \
-          --enable-epoll \
-          --disable-kqueue \
-          --enable-select \
-          --enable-cache-digests \
-          --enable-forw-via-db \
-          --enable-htcp \
-          --enable-ipf-transparent \
-          --enable-kill-parent-hack \
-          --disable-wccpv2 \
-          --enable-icap-client \
-          --disable-esi
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xaf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --sysconfdir=/etc/squid \
+               --datadir=/usr/lib/squid \
+               --mandir=/usr/share/man \
+               --libexecdir=/usr/lib/squid \
+               --localstatedir=/var \
+               --disable-ipv6 \
+               --enable-poll \
+               --disable-icmp \
+               --disable-wccp \
+               --enable-ident-lookups \
+               --enable-storeio="aufs,diskd,ufs" \
+               --enable-ssl \
+               --enable-underscores \
+               --enable-http-violations \
+               --enable-removal-policies="heap,lru" \
+               --enable-delay-pools \
+               --enable-linux-netfilter \
+               --enable-snmp \
+               --enable-auth \
+               --enable-auth-basic \
+               --enable-auth-digest \
+               --enable-auth-negotiate \
+               --enable-auth-ntlm \
+               --enable-log-daemon-helpers \
+               --enable-url-rewrite-helpers \
+               --enable-build-info \
+               --enable-eui \
+               --with-pthreads \
+               --with-dl \
+               --with-filedescriptors=$$(( 16384 * 64 )) \
+               --with-large-files \
+               --with-aio \
+               --enable-async-io=8 \
+               --enable-unlinkd \
+               --enable-internal-dns \
+               --enable-epoll \
+               --disable-kqueue \
+               --enable-select \
+               --enable-cache-digests \
+               --enable-forw-via-db \
+               --enable-htcp \
+               --enable-linux-netfilter \
+               --enable-kill-parent-hack \
+               --disable-wccpv2 \
+               --enable-icap-client \
+               --disable-esi \
+               --enable-zph-qos \
+               --disable-arch-native
 
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
index 86255f837b0b982b56a862c5c2eace11251dc5a0..697b59ab03a3cc75e3838f38689f1e69c884ff62 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# Copyright (C) 2007-2014  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        #
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = squidclamav
-PAK_VER    = 15
+PAK_VER    = 19
 
 DEPS       = "clamav"
 
@@ -77,9 +77,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) && patch -Np1 < $(DIR_SRC)/src/patches/squidclamav-5.11-dont_use_ipv6.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/squidclamav-5.11-squid-helper-protocol.patch
        cd $(DIR_APP) && ./configure --prefix=/usr
        cd $(DIR_APP) && make install
-       install -v -m 755  $(DIR_CONF)/squidclamav/squidclamav.conf /etc/squidclamav.conf
+       install -v -m 664 $(DIR_CONF)/squidclamav/squidclamav.conf /etc/squidclamav.conf
+       chown -v root:nobody /etc/squidclamav.conf
        install -v -m 644 $(DIR_SRC)/config/backup/includes/squidclamav /var/ipfire/backup/addons/includes/squidclamav
        chmod 755 /srv/web/ipfire/html/clwarn.cgi
        @rm -rf $(DIR_APP)
index c70a0d881e67dfce1f269cffb45e27216438b85f..a48c25cbe2d275dfd79878a15b10b06a538431e7 100644 (file)
@@ -70,6 +70,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) && patch -Np1 -i $(DIR_SRC)/src/patches/squidguard-1.4-squid-helper-protocol.patch
        cd $(DIR_APP) && ./configure --prefix=/usr --datadir=/usr/share \
                --sysconfdir=/etc --localstatedir=/var --infodir=/usr/info --mandir=/usr/man  \
                --with-sg-config=/var/ipfire/urlfilter/squidGuard.conf \
index e6f2cebce204d9a4311c43fc741a15e38a1b28ca..f4201c33526cd8d87e1457e50814225887b27e21 100644 (file)
--- a/lfs/sslh
+++ b/lfs/sslh
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = sslh
-PAK_VER    = 3
+PAK_VER    = 4
 
 DEPS       = ""
 
@@ -77,7 +77,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) && make install
-       cp $(DIR_APP)/sslh /usr/local/bin
+       cd $(DIR_APP) && make CFLAGS="$(CFLAGS)" $(MAKETUNING)
+       cd $(DIR_APP) && install -v -m 755 sslh /usr/sbin
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/sslscan b/lfs/sslscan
new file mode 100644 (file)
index 0000000..a384db1
--- /dev/null
@@ -0,0 +1,83 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2014  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/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 1.10.2
+
+THISAPP    = sslscan-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = sslscan
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 41ecff92303cecfd00bf3c7de509af14
+
+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) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && make $(MAKETUNING) CFLAGS="$(CFLAGS)"
+       cd $(DIR_APP) && make install PREFIX=/usr
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index beb0abbcb2d4fb0a884080c1856c8c7f3b826092..956f58953c36a8a393af00b4a15bb0b2a12e7950 100644 (file)
@@ -49,7 +49,7 @@ $(TARGET) :
        @$(PREBUILD)
 
        # Create directories
-       -mkdir -pv /{bin,boot,etc/opt,etc/modprobe.d,home,lib,mnt,opt}
+       -mkdir -pv /{bin,boot,etc/opt,etc/modprobe.d,home,lib,mnt,opt,run}
        -mkdir -pv /{media/{floppy,cdrom,usbkey},sbin,srv,var}
        -install -dv -m 0750 /root
        -install -dv -m 1777 /tmp /var/tmp
@@ -60,6 +60,9 @@ $(TARGET) :
        #-for dir in /usr /usr/local; do \
        #  ln -sv share/{man,doc,info} $$dir; \
        #done
+
+       # Symlink /var/run -> /run.
+       ln -svf ../run /var/run
        
        # Symlinks
        # for this reason, stage2 rebuild will broke the iso:perl, grubbatch
@@ -98,18 +101,25 @@ $(TARGET) :
        # Move script to correct place.
        mv -vf /usr/local/bin/ovpn-ccd-convert /usr/sbin/
 
+       # Install firewall scripts.
+       mkdir -pv /usr/lib/firewall
+       install -m 755 $(DIR_SRC)/config/firewall/rules.pl \
+               /usr/lib/firewall/rules.pl
+       install -m 644 $(DIR_SRC)/config/firewall/firewall-lib.pl \
+               /usr/lib/firewall/firewall-lib.pl
+
        # Nobody user
        -mkdir -p /home/nobody
        chown -R nobody:nobody /home/nobody
 
        # Create /var dirs and files
-       -mkdir -v /var/{lock,log,mail,run,spool,empty}
+       -mkdir -v /var/{lock,log,mail,spool,empty}
        -mkdir -pv /var/{opt,cache,lib/{misc,locate},local}
        -mkdir -pv /var/log/{counter,calamaris}
        chown nobody.nobody /var/log/calamaris
-       touch /var/run/utmp /var/log/{btmp,lastlog,wtmp,net-traffic.log}
-       chgrp -v utmp /var/run/utmp /var/log/lastlog
-       chmod -v 664 /var/run/utmp /var/log/lastlog
+       touch /var/log/{btmp,lastlog,wtmp,net-traffic.log}
+       chgrp -v utmp /var/log/lastlog
+       chmod -v 664 /var/log/lastlog
 
        # Permissions
        chmod 0711 /var/empty
@@ -121,4 +131,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)
diff --git a/lfs/strace b/lfs/strace
new file mode 100644 (file)
index 0000000..f1ffc98
--- /dev/null
@@ -0,0 +1,84 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# 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        #
+# 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        = 4.7
+
+THISAPP    = strace-$(VER)
+DL_FILE    = $(THISAPP).tar.xz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = strace
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 6054c3880a00c6703f83b57f15e04642
+
+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) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index b3ce846b70fd66db2c8e3f4e793cd63b64454122..ba492106eca9df95431c6411a34b8c2af6e7d86d 100644 (file)
 
 include Config
 
-VER        = 5.0.4
+VER        = 5.1.3
 
 THISAPP    = strongswan-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
+DIR_APP    = $(DIR_SRC)/strongswan-$(VER)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
 ifeq "$(MACHINE)" "i586"
-       PADLOCK = --enable-padlock
+       CONFIGURE_OPTIONS = \
+               --enable-padlock
 else
-       PADLOCK = --disable-padlock
+       CONFIGURE_OPTIONS = \
+               --disable-padlock
 endif
 
 ###############################################################################
@@ -46,7 +48,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 7085ac1d28dcc250096553fa51c3a4ea
+$(DL_FILE)_MD5 = 1d1c108775242743cd8699215b2918c3
 
 install : $(TARGET)
 
@@ -76,16 +78,26 @@ $(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-5.0.2_ipfire.patch
 
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/strongswan-4.5.3_ipfire.patch
-
+       cd $(DIR_APP) && [ -x "configure" ] || ./autogen.sh
        cd $(DIR_APP) && ./configure \
                --prefix="/usr" \
                --sysconfdir="/etc" \
                --enable-curl \
+               --enable-dhcp \
+               --enable-farp \
                --enable-openssl \
+               --enable-xauth-eap \
+               --enable-xauth-noauth \
                --enable-eap-radius \
-               $(PADLOCK)
+               --enable-eap-tls \
+               --enable-eap-ttls \
+               --enable-eap-peap \
+               --enable-eap-mschapv2 \
+               --enable-eap-identity \
+               --enable-unity \
+               $(CONFIGURE_OPTIONS)
 
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
similarity index 81%
rename from lfs/inetutils
rename to lfs/stunnel
index 468c2af32f5cf7600787da6b5c93f76e20cc1137..f6f27e07592c0eb99e6dae5dd139ba898a2bedea 100644 (file)
 
 include Config
 
-VER        = 1.4.2
+VER        = 5.01
 
-THISAPP    = inetutils-$(VER)
+THISAPP    = stunnel-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = stunnel
+PAK_VER    = 1
+
+DEPS       = ""
 
 ###############################################################################
 # Top-level Rules
@@ -40,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = df0909a586ddac2b7a0d62795eea4206
+$(DL_FILE)_MD5 = 7b63266b6fa05da696729e245100da65
 
 install : $(TARGET)
 
@@ -50,6 +54,9 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
 
 md5 : $(subst %,%_MD5,$(objects))
 
+dist: 
+       @$(PAK)
+
 ###############################################################################
 # Downloading, checking, md5sum
 ###############################################################################
@@ -70,15 +77,25 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-gcc4_fixes-3.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-daemon_fixes-1.patch
-       cd $(DIR_APP) && sed -i '/#include/a #include <stdlib.h>' libicmp/icmp_timestamp.c
-       cd $(DIR_APP) && ./configure --prefix=/usr --libexecdir=/usr/sbin \
-                               --sysconfdir=/etc --localstatedir=/var \
-                               --mandir=/usr/share/man --infodir=/usr/share/info \
-                               --disable-logger --disable-syslogd --disable-telnet --disable-telnetd
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --sysconfdir=/etc \
+               --localstatedir=/var
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
-       mv -v /usr/bin/ping /bin
+
+       # Create secure directory
+       install -v -m750 -o stunnel -g stunnel -d /var/lib/stunnel/run
+       chown -v stunnel:stunnel /var/lib/stunnel
+
+       # Install default configuration
+       -mkdir -pv /etc/stunnel
+       install -v -m 644 $(DIR_SRC)/config/stunnel/stunnel.conf \
+               /etc/stunnel
+
+       # Install backup include
+       install -v -m 644 $(DIR_SRC)/config/backup/includes/stunnel \
+               /var/ipfire/backup/addons/includes
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 15463c50d2e3cbf00dda5f455449f5e7a2093bed..9dd72fef5331974d44892afecf8eb1d34247c50e 100644 (file)
--- a/lfs/sudo
+++ b/lfs/sudo
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.6.8p12
+VER        = 1.8.10p3
 
 THISAPP    = sudo-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = b29893c06192df6230dd5f340f3badf5
+$(DL_FILE)_MD5 = fcd8d0d9f9f0397d076ee901e242ed39
 
 install : $(TARGET)
 
@@ -70,10 +70,17 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-envvar_fix-1.patch
-       cd $(DIR_APP) && ./configure --prefix=/usr --libexecdir=/usr/lib \
-                           --enable-noargs-shell --with-ignore-dot --with-all-insults \
-                           --enable-shell-sets-home && \
+       cd $(DIR_APP) && \
+               ./configure \
+                       --prefix=/usr \
+                       --libexecdir=/usr/lib \
+                       --with-logging=syslog \
+                       --with-logfac=authpriv \
+                       --with-env-editor \
+                       --with-ignore-dot \
+                       --with-tty-tickets \
+                       --with-passpromt="[sudo] password for %p: " \
+                       --without-pam
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
diff --git a/lfs/swatch b/lfs/swatch
new file mode 100644 (file)
index 0000000..381cac3
--- /dev/null
@@ -0,0 +1,84 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2011  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        = 3.2.3
+
+THISAPP    = swatch-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = swatch
+PAK_VER    = 2
+
+DEPS       = "perl-File-Tail perl-Date-Calc perl-TimeDate perl-Date-Manip"
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 1162f1024cf07fc750ed4960d61ac4e8
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && yes 'n' | perl Makefile.PL
+       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index 4556428b3ef8d25fddef99ee7066e4aee073edf3..934e851787efcb0aaf48a55659971c89d8d2933a 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 4.0.0
+VER        = 4.4.0
 
 THISAPP    = tcpdump-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = tcpdump
-PAK_VER    = 2
+PAK_VER    = 3
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = b22ca72890df2301d922c9f2d17867f9
+$(DL_FILE)_MD5 = 6f75aabcffd012f73bd7c331bb5d8232
 
 install : $(TARGET)
 
@@ -77,15 +77,18 @@ $(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/tcpdump-3.8.2-rsvp-dos.patch       #CAN 2005-1280
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/tcpdump-3.8.2-bgp-dos.patch        #CAN 2005-1267
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/tcpdump-3.8.2-bgp-dos-2.patch      #CAN 2005-1279
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/tcpdump-3.8.2-isis-dos.patch       #CAN 2005-1278
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/tcpdump-3.8.2-ldp-dos.patch        #CAN 2005-1279
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/tcpdump-4.0.0-noINET.patch
-       cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls --disable-ipv6
-       cd $(DIR_APP) && sed -i -e 's/#define\ HAVE_PCAP_DEBUG\ 1/#undef\ HAVE_PCAP_DEBUG/' config.h
-       cd $(DIR_APP) && make $(MAKETUNING) DEFS="-D_U_=\"\" -DHAVE_CONFIG_H"
+       cd $(DIR_APP) && \
+               ./configure \
+                       --prefix=/usr \
+                       --disable-nls \
+                       --with-crypto \
+                       --without-smi
+
+       cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
+
+       # Remove versioned binary
+       rm -vf /usr/sbin/tcpdump.$(VER)
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/tor b/lfs/tor
new file mode 100644 (file)
index 0000000..7956736
--- /dev/null
+++ b/lfs/tor
@@ -0,0 +1,117 @@
+###############################################################################
+#                                                                             #
+# 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        = 0.2.4.20
+
+THISAPP    = tor-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = tor
+PAK_VER    = 6
+
+DEPS       = "libevent2"
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = a8cd8e3b3a3f6a7770f2c22d280f19b8
+
+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) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && \
+               ./configure \
+                       --prefix=/usr \
+                       --sysconfdir=/etc \
+                       --localstatedir=/var \
+                       --with-tor-user=nobody \
+                       --with-tor-group=nobody
+
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+
+       # Install configuration files.
+       mkdir -pv /var/ipfire/tor /var/lib/tor /var/log/tor
+       touch /var/ipfire/tor/settings
+       mv /etc/tor/torrc.sample /var/ipfire/tor/torrc
+       ln -svf /var/ipfire/tor/torrc /etc/tor/torrc
+
+       # Adjust ownerships.
+       chown -R nobody:nobody /var/lib/tor /var/ipfire/tor
+
+       # Logrotate
+       mkdir -pv /etc/logrotate.d
+       install -v -m 644 $(DIR_SRC)/config/tor/tor.logrotate \
+               /etc/logrotate.d/tor
+
+       # Defaults
+       mkdir -pv /usr/share/tor
+       install -v -m 644 $(DIR_SRC)/config/tor/defaults-torrc \
+               /usr/share/tor/defaults-torrc
+
+       # Install start links and backup include file.
+       ln -sf ../init.d/tor /etc/rc.d/rc3.d/S60tor
+       ln -sf ../init.d/tor /etc/rc.d/rc0.d/K40tor
+       ln -sf ../init.d/tor /etc/rc.d/rc6.d/K40tor
+       install -v -m 644 $(DIR_SRC)/config/backup/includes/tor \
+                        /var/ipfire/backup/addons/includes/tor
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index 083db58b6b8388862762543b5c6be6e3e7e6ee57..cb4ad4517687d5d7797dd7cf4eab8bd63ed76917 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        = 2.77
+VER        = 2.83
 
 THISAPP    = transmission-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -32,10 +32,12 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = transmission
-PAK_VER    = 6
+PAK_VER    = 10
 
 DEPS       = "libevent2"
 
+CXXFLAGS  += -fno-exceptions
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
@@ -44,7 +46,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 60c0e77a1852656215f7102a437b2a3d
+$(DL_FILE)_MD5 = 4620cfbfefee2ce55a6fa12c3ec330a7
 
 install : $(TARGET)
 
index edf5ff22dea4ed7565ac9a52902862f85f3bfaf7..c36b7a34f64b75720d1a5c71701b9e84191a63d9 100644 (file)
 
 include Config
 
-VER        = 2012h
-TZDATA_VER = 2012h
-TZCODE_VER = 2012h
+VER        = 2014a
+TZDATA_VER = $(VER)
+TZCODE_VER = $(VER)
 
 THISAPP    = tzdata-$(VER)
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
+FILES      = africa antarctica asia australasia europe \
+       northamerica southamerica pacificnew etcetera backward
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
@@ -42,8 +45,8 @@ objects = tzdata$(TZDATA_VER).tar.gz tzcode$(TZCODE_VER).tar.gz
 tzdata$(TZDATA_VER).tar.gz = $(DL_FROM)/tzdata$(TZDATA_VER).tar.gz
 tzcode$(TZCODE_VER).tar.gz = $(DL_FROM)/tzcode$(TZCODE_VER).tar.gz
 
-tzdata$(TZDATA_VER).tar.gz_MD5 = b937335e087fb85b7f8e3ce33e69184b
-tzcode$(TZCODE_VER).tar.gz_MD5 = 44b3b6c3e50240ac44f16437040a7ba2
+tzdata$(TZDATA_VER).tar.gz_MD5 = 423a11bcffc10dda578058cf1587d048
+tzcode$(TZCODE_VER).tar.gz_MD5 = 77ccbb720f0f2076f12dff6ded70eb98
 
 install : $(TARGET)
 
@@ -77,16 +80,21 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        tar axf $(DIR_DL)/tzdata$(TZDATA_VER).tar.gz -C $(DIR_APP)
        tar axf $(DIR_DL)/tzcode$(TZCODE_VER).tar.gz -C $(DIR_APP)
 
-       cd $(DIR_APP) && make TOPDIR=/usr ETCDIR=/tmp LIBDIR=/tmp MANDIR=/tmp \
-               TZDIR=/usr/share/zoneinfo all
-       cd $(DIR_APP) && make TOPDIR=/usr ETCDIR=/tmp LIBDIR=/tmp MANDIR=/tmp \
-               TZDIR=/usr/share/zoneinfo install
+       cd $(DIR_APP) && mkdir -pv zoneinfo/{,posix,right}
+       cd $(DIR_APP) && zic -y ./yearistype -d zoneinfo \
+               -L /dev/null -p GMT $(FILES)
+       cd $(DIR_APP) && zic -y ./yearistype -d zoneinfo/posix \
+               -L /dev/null $(FILES)
+       cd $(DIR_APP) && zic -y ./yearistype -d zoneinfo/right \
+               -L /dev/null $(FILES)
 
-       -mkdir -pv /usr/share/zoneinfo
-       mv -v /usr/share/zoneinfo-posix /usr/share/zoneinfo/posix
-       mv -v /usr/share/zoneinfo-leaps /usr/share/zoneinfo/right
-       rm -vf /usr/share/zoneinfo/localtime
+       rm -rf /usr/share/zoneinfo
+       cd $(DIR_APP) && cp -prd zoneinfo /usr/share
+       cd $(DIR_APP) && install -p -m 644 zone.tab iso3166.tab \
+               /usr/share/zoneinfo
 
+       rm -vf /usr/share/zoneinfo/localtime
        cp -vf /usr/share/zoneinfo/GMT /etc/localtime
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 551fea5269d536970e432df50266cc97f300df90..eafb59262fc52095abc0193096997addc58b918f 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.10
 
-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 = a076a044b64371edc52f7e562b13f6b2
 
 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)
index 9ebec2f180fcd317075d20552456588f2f66f595..fdf8bf296876d4e03df7cc30910cab281de1cc93 100644 (file)
--- a/lfs/udev
+++ b/lfs/udev
@@ -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        = 141
+VER        = 208
 
 THISAPP    = udev-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = systemd-$(VER).tar.xz
 DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
+DIR_APP    = $(DIR_SRC)/systemd-$(VER)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
 ###############################################################################
 # Top-level Rules
 ###############################################################################
 
-objects = $(DL_FILE)
+objects = $(DL_FILE) udev-lfs-208-1.tar.bz2
+
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+udev-lfs-$(VER)-1.tar.bz2 = $(DL_FROM)/udev-lfs-$(VER)-1.tar.bz2
 
-$(DL_FILE)_MD5 = 1670fe81cabf5161319c52084cf81134
+$(DL_FILE)_MD5 = df64550d92afbffb4f67a434193ee165
+udev-lfs-$(VER)-1.tar.bz2_MD5 = 67a5339e7ef1fa08f5db8315a5ea69e7
 
 install : $(TARGET)
 
@@ -70,37 +73,45 @@ $(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/udev-141_no_netif_rename.patch
-       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/udev-125-ext4_wo_journal.patch
+       cd $(DIR_APP) && tar axf $(DIR_DL)/udev-lfs-$(VER)-1.tar.bz2
+
+       cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/udev-208_remove_systemd_log.patch
+#      cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/udev-141_no_netif_rename.patch
+
+       cd $(DIR_APP)/udev-lfs-$(VER)-1 && sed -i "s/HANDLE_AT 1/HANDLE_AT 0/g" cfg.h
+
        rm -rf /lib/udev/devices
-       install -dv /lib/{firmware,udev/devices/{pts,shm}}
-       mknod -m0666 /lib/udev/devices/null c 1 3
-       ln -sv /proc/self/fd /lib/udev/devices/fd
-       ln -sv /proc/self/fd/0 /lib/udev/devices/stdin
-       ln -sv /proc/self/fd/1 /lib/udev/devices/stdout
-       ln -sv /proc/self/fd/2 /lib/udev/devices/stderr
-       ln -sv /proc/kcore /lib/udev/devices/core
-       cd $(DIR_APP) && ./configure --disable-introspection --sbindir=/sbin --sysconfdir=/etc --libexecdir=/lib/udev
-       cd $(DIR_APP) && make $(MAKETUNING) EXTRAS="extras/ata_id extras/cdrom_id extras/edd_id \
-                                       extras/firmware extras/floppy extras/path_id \
-                                       extras/scsi_id extras/usb_id extras/volume_id"
-       cd $(DIR_APP) && make DESTDIR=/ EXTRAS="extras/ata_id extras/cdrom_id extras/edd_id \
-                                       extras/firmware extras/floppy extras/path_id \
-                                       extras/scsi_id extras/usb_id extras/volume_id" install
+       install -dv /lib/firmware
+
+       cd $(DIR_APP) && make -f udev-lfs-$(VER)-1/Makefile.lfs $(MAKETUNING)
+       cd $(DIR_APP) && make -f udev-lfs-$(VER)-1/Makefile.lfs install
+
+       # Make some compat symlinks
+       ln -sf /lib/udev/udevd /sbin/udevd
+       ln -sf /sbin/udevadm /bin/udevadm
 
        # Disable net generator rule. This does not work with the setup.
        rm -f /lib/udev/rules.d/75-persistent-net-generator.rules
+       rm -f /lib/udev/rules.d/80-net-name-slot.rules
 
        # Create rule file for the setup
        touch /etc/udev/rules.d/30-persistent-network.rules
 
        # Blacklist some modules
-       cp -vf $(DIR_SRC)/config/udev/blacklist /etc/modprobe.d/blacklist
+       cp -vf $(DIR_SRC)/config/udev/blacklist.conf /etc/modprobe.d/blacklist.conf
+
+       # Install config file
+       install -v -m 644 $(DIR_SRC)/config/udev/udev.conf \
+               /etc/udev/
 
        # Install alsa rules.
        install -v -m 644 $(DIR_SRC)/config/udev/25-alsa.rules \
                /lib/udev/rules.d
 
+       # Install hwrng rules.
+       install -v -m 644 $(DIR_SRC)/config/udev/90-hwrng.rules \
+               /lib/udev/rules.d
+
        # Install codel rules.
        install -v -m 644 $(DIR_SRC)/config/udev/99-codel.rules \
                /lib/udev/rules.d
diff --git a/lfs/usb-stick b/lfs/usb-stick
deleted file mode 100644 (file)
index 30a1475..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  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/{instroot,vmlinuz,splash.lss,*\.msg,memtest} /install/mnt && \
-       rm -rf /install/mnt/boot/isolinux && \
-       cp $(DIR_SRC)/config/syslinux/syslinux.cfg /install/mnt/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)
index f8aea5fd6b81d51f87d1b136b82ec5c2df4b876b..1b719a60d8ab96b74e9afbec4b59564665943e68 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        = 1.2.4
+VER        = 2.1.1
 
 THISAPP    = usb-modeswitch-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = dbd4ce7966d7b4a5a0604a8280f7164d
+$(DL_FILE)_MD5 = 1f0dc900df88254bd1102444cb73efbc
 
 install : $(TARGET)
 
index 5beecda7564007a9e81d1f4b3d94dbd407e7d5d3..b0b8a3707682f9d11b6f07e6014ec055fb9ec873 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        = 20120815
+VER        = 20140327
 
 THISAPP    = usb-modeswitch-data-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 12d7de3210e45ad6f48791d12bbdbf61
+$(DL_FILE)_MD5 = bbbc0a8e6a98bde2c6e119b3826658fb
 
 install : $(TARGET)
 
index 3b5c302cdc275c276c9dab7c38da07e63bfc4389..51192e7e7261561a26669ad0ce4edd7c8524fa71 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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        = 0.72
+VER        = 007
 
 THISAPP    = usbutils-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ee345fe605ffcfce843dae4aed81122b
+$(DL_FILE)_MD5 = c9df5107ae9d26b10a1736a261250139
 
 install : $(TARGET)
 
@@ -69,11 +69,11 @@ $(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 's|DEST=|&/usr/share/hwdata/|' update-usbids.sh
-       cd $(DIR_APP) && ./configure --prefix=/usr --datadir=/usr/share/hwdata
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure    --prefix=/usr \
+                                       --datadir=/usr/share/hwdata \
+                                       --disable-zlib
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
-       cd $(DIR_APP) && install -v -m755 update-usbids.sh /usr/sbin/update-usbids
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index a39416601dc95d633a078e03e1446e8b6da3a34b..7f69e67514bfbedcd5df82ee18a6d24c306e4ab3 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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        = 2.12r
+VER        = 2.24
 
 THISAPP    = util-linux-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = af9d9e03038481fbf79ea3ac33f116f9
+$(DL_FILE)_MD5 = 4fac6443427f575fc5f3531a4ad2ca01
 
 install : $(TARGET)
 
@@ -69,15 +69,12 @@ $(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/util-linux-2.12r-umount-no-special.patch
-       cd $(DIR_APP) && sed -i 's@etc/adjtime@var/lib/hwclock/adjtime@g' \
-                               hwclock/hwclock.c
-       -mkdir -p /var/lib/hwclock
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-cramfs-1.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/util-linux-buildfix.patch
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
        cd $(DIR_APP) && ./configure
        cd $(DIR_APP) && make $(MAKETUNING) HAVE_KILL=yes HAVE_SLN=yes
        cd $(DIR_APP) && make HAVE_KILL=yes HAVE_SLN=yes install
+       # Install fstrim cronjob
+       mkdir -p /etc/fcron.daily
+       install -m 0755 $(DIR_SRC)/config/fstrim/trim /etc/fcron.daily/trim
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index ef0f383663007f5e3331107733b1cc92eb303e4f..9cf277caf9992d3c95e6fc6d77a3d377a35b3ccb 100644 (file)
@@ -35,7 +35,7 @@ TARGET     = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX)
 
 ifeq "$(KCFG)" "-xen"
        XVER = 2.6.32
-       KVER = 2.6.32.60
+       KVER = 2.6.32.61
 else
        XVER = 3.2.0
 endif
diff --git a/lfs/vdr b/lfs/vdr
index 0dd2c0f4628ab3960e895a583e00d7213fbbf570..52ecdd54354fe21c86f712beb4cd927d8af20e0a 100644 (file)
--- a/lfs/vdr
+++ b/lfs/vdr
 
 include Config
 
-VER        = 2.0.1
+VER        = 2.0.5
+
+# 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    = 6
+PAK_VER    = 9
 
 DEPS       = "vdr_streamdev"
 
@@ -59,9 +63,9 @@ MAKE_OPTIONS = \
 
 objects = $(DL_FILE)
 
-$(DL_FILE)  = $(DL_FROM)/$(DL_FILE)
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5  = e1b7a76c57c96300829dccd39eb20e7d
+$(DL_FILE)_MD5 = f58b9836a60440fde84480a2e37ee91d
 
 install : $(TARGET)
 
diff --git a/lfs/vdr_dvbapi b/lfs/vdr_dvbapi
new file mode 100644 (file)
index 0000000..2cf34e7
--- /dev/null
@@ -0,0 +1,121 @@
+###############################################################################
+#                                                                             #
+# 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        = 1.0.6
+THISAPP    = vdr-plugin-dvbapi-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = vdr_dvbapi
+PAK_VER    = 1
+
+DEPS       = ""
+
+VDRPLUGVER = 2.0.0
+
+EXTRA_FLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+CFLAGS    += $(EXTRA_FLAGS)
+CXXFLAGS  += $(EXTRA_FLAGS)
+
+CSAFLAGS     =  -O3 -fexpensive-optimizations -funroll-loops
+CSAFLAGS-sse = $(CSAFLAGS) -mmmx -msse -msse2 -msse3
+PARALLEL     = PARALLEL_64_LONG
+PARALLEL-sse = PARALLEL_128_SSE2
+
+define BUILD
+       cp -a $(DIR_APP) $(DIR_APP)-build$(1)
+       cd $(DIR_APP)-build$(1) && make $(MAKE_TUNING) LIBDIR=. VDRDIR=/usr/lib/vdr \
+               CFLAGS="$(CFLAGS$(1))" CXXFLAGS="$(CXXFLAGS$(1))" \
+               CSAFLAGS="$(CSAFLAGS$(1))" PARALLEL="$(PARALLEL$(1))" \
+               LOCALEDIR=$$(pwd)/locale all
+
+       -mkdir -pv /etc/vdr/plugins/dvbapi
+       cd $(DIR_APP)-build$(1) && install -m 755 libvdr-dvbapi.so \
+               /usr/lib/vdr/libvdr-dvbapi.so.$(VDRPLUGVER)$(1)
+endef
+
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 6a8024b2970beba8eadc1acaa86805e7
+
+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)* && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+
+ifeq "$(MACHINE)" "i586"
+       # Build an SSE enabled version.
+       $(call BUILD,-sse)
+endif
+
+       # Build normal version.
+       $(call BUILD)
+
+       echo "#" > /etc/sysconfig/vdr-plugins.d/dvbapi.conf
+       echo "# Command line parameters for vdr-plugin-dvbapi" >> /etc/sysconfig/vdr-plugins.d/dvbapi.conf
+       echo "#" >> /etc/sysconfig/vdr-plugins.d/dvbapi.conf
+       echo "# For more details see:" >> /etc/sysconfig/vdr-plugins.d/dvbapi.conf
+       echo "#   - \`vdr --help -Pdvbapi\`" >> /etc/sysconfig/vdr-plugins.d/dvbapi.conf
+       echo "PLUGIN_OPTIONS=\"\"" >> /etc/sysconfig/vdr-plugins.d/dvbapi.conf
+
+       @rm -rf $(DIR_APP)*
+       @$(POSTBUILD)
similarity index 72%
rename from lfs/icecc
rename to lfs/vdr_eepg
index 9c9651cde4f6afbe68a08a389fe16bcf826f8f00..fddd0756bb210c62fbd351f948443dc164497e26 100644 (file)
--- a/lfs/icecc
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2009  Michael Tremer & Christian Schmidt                      #
+# 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        = 0.9.7
+GIT_VER    = 69b47ba4bf0195fd6820beb2cf4f7c7ea31f4011
+VER        = master
+THISAPP    = vdr-plugin-eepg-$(VER)
+DL_FILE    = vdr-plugin-eepg-$(GIT_VER).tar.bz2
 
-THISAPP    = icecc-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
-DL_FROM    = $(URL_IPFIRE)
+DL_FROM    = http://projects.vdr-developer.org/git/vdr-plugin-eepg.git/snapshot
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG       = icecc
-PAK_VER    = 3
+PROG       = vdr_eepg
+PAK_VER    = 1
 
 DEPS       = ""
 
+VDRPLUGVER = 2.0.0
+
+EXTRA_FLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+CFLAGS    += $(EXTRA_FLAGS)
+CXXFLAGS  += $(EXTRA_FLAGS)
+
 ###############################################################################
 # Top-level Rules
 ###############################################################################
 
 objects = $(DL_FILE)
 
-$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+$(DL_FILE)  = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = c06900c2f4011428d0d48826a04f74fb
+$(DL_FILE)_MD5  = 0d8049949263f9a2b8deb2ae9919bc49
 
 install : $(TARGET)
 
 check : $(patsubst %,$(DIR_CHK)/%,$(objects))
 
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
+download : $(patsubst %,$(DIR_DL)/%,$(objects))
 
 md5 : $(subst %,%_MD5,$(objects))
 
@@ -76,12 +83,17 @@ $(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/icecream-rename-scheduler.patch
-       cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/icecream-0.9.7-platform-arm.patch
-       cd $(DIR_APP) && ./configure \
-                               --prefix=/opt/icecream
-       cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
-       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+
+       cd $(DIR_SRC) && mv vdr-plugin-eepg-$(GIT_VER) $(THISAPP)
+
+       cd $(DIR_APP) && make $(MAKE_TUNING) LIBDIR=. VDRDIR=/usr/lib/vdr \
+               CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \
+               LOCALEDIR=$$(pwd)/locale all
+
+       mkdir -pv /etc/vdr/plugins/eepg
+       cd $(DIR_APP) && install -m 755 libvdr-eepg.so \
+               /usr/lib/vdr/libvdr-eepg.so.$(VDRPLUGVER)
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
diff --git a/lfs/vdr_vnsiserver5 b/lfs/vdr_vnsiserver5
new file mode 100644 (file)
index 0000000..0416416
--- /dev/null
@@ -0,0 +1,99 @@
+###############################################################################
+#                                                                             #
+# 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        = 1.0.0
+THISAPP    = vdr-vnsiserver5-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = vdr_vnsiserver5
+PAK_VER    = 1
+
+DEPS       = "vdr"
+
+VDRPLUGVER = 2.0.0
+
+EXTRA_FLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+CFLAGS    += $(EXTRA_FLAGS)
+CXXFLAGS  += $(EXTRA_FLAGS)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE)  = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5  = 3d1a0b21d11187e43a56f9e4cf7cb1c9
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+
+       cd $(DIR_APP) && make $(MAKE_TUNING) LIBDIR=. VDRDIR=/usr/lib/vdr \
+               CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \
+               LOCALEDIR=$$(pwd)/locale all
+
+       -mkdir -pv /etc/vdr/plugins/vnsiserver5
+       cd $(DIR_APP) && install -m 755 libvdr-vnsiserver5.so \
+               /usr/lib/vdr/libvdr-vnsiserver5.so.$(VDRPLUGVER)
+       ln -svf ../../svdrphosts.conf /etc/vdr/plugins/vnsiserver5/allowed_hosts.conf
+       install -m 644 $(DIR_SRC)/config/vdr/plugins.d/vnsiserver5.conf \
+               /etc/sysconfig/vdr-plugins.d
+
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
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 2e7b46c65f310b87ec31b12cb514ef6604042b87..b8c8b2759fa30433100304611ec58f6512a2a0dd 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.6
+VER        = 1.11
 
 THISAPP    = vnstat-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ccaffe8e70d47e0cf2f25e52daa25712
+$(DL_FILE)_MD5 = a5a113f9176cd61fb954f2ba297f5fdb
 
 install : $(TARGET)
 
@@ -73,7 +73,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) && make $(MAKETUNING)                                                                             LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes"
+       cd $(DIR_APP) && make all $(MAKETUNING)                                                                         LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes"
        cd $(DIR_APP) && make install
        sed -i 's|eth0|green0|g' /etc/vnstat.conf
        sed -i 's|/var/lib/vnstat|/var/log/rrd/vnstat|g' /etc/vnstat.conf
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 8058c8cbe34c85d106ba75e1db109a4474b5dc34..70bf6921ea5ae6ea5487a95db9828a9714ddfb08 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.9
+VER        = 5.13
 
 THISAPP    = watchdog-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = watchdog
-PAK_VER    = 3
+PAK_VER    = 4
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = d7cae3c9829f5d9a680764f314234867
+$(DL_FILE)_MD5 = 153455f008f1cf8f65f6ad9586a21ff1
 
 install : $(TARGET)
 
@@ -77,7 +77,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
+       cd $(DIR_APP) && ./configure --prefix=/usr
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        install -v -m 644 $(DIR_SRC)/config/backup/includes/watchdog \
diff --git a/lfs/wavemon b/lfs/wavemon
new file mode 100644 (file)
index 0000000..a3df36e
--- /dev/null
@@ -0,0 +1,71 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 0.7.5
+
+THISAPP    = wavemon-$(VER)
+DL_FILE    = $(THISAPP).tar.bz2
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = wavemon
+PAK_VER    = 1
+
+DEPS       = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 77d4a0f099ca98cf98a915adc70694ba
+
+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) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr
+
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index ce55e76f051626726a4ca3437a62d04042f80578..fd4c9472d1e0634ed4b8bbea7444aadac2bf86a8 100644 (file)
--- a/lfs/wget
+++ b/lfs/wget
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+# 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        = 1.10.2
+VER        = 1.14
 
 THISAPP    = wget-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 795fefbb7099f93e2d346b026785c4b8
+$(DL_FILE)_MD5 = 316f6f59292c9098ad81fd54f658c579
 
 install : $(TARGET)
 
@@ -69,10 +69,19 @@ $(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 --with-ssl \
-                                       --disable-nls --disable-ipv6
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar Jxf $(DIR_DL)/$(DL_FILE)
+
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/wget-1.14-texi2pod-1.patch
+
+       cd $(DIR_APP) && ./configure \
+               --prefix=/usr \
+               --sysconfdir=/etc \
+               --with-ssl=openssl \
+               --disable-nls \
+               --disable-ipv6
+
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
+
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 2228c22b0a4f7382e41cc4a8e435654116ae38ce..7c1dbe8e6f7275d6840331f0165df717594c7797 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        #
 
 include Config
 
-VER        = 2011.04.28
+VER        = 2013.02.13
 
 THISAPP    = wireless-regdb-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.xz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 
@@ -41,7 +41,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 16b7fabd4d7761ccf206702a3f18cce9
+$(DL_FILE)_MD5 = 46a4aa49282ea6713c3cf28cc2fc600f
 
 install : $(TARGET)
 
@@ -70,7 +70,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) && make install
        @rm -rf $(DIR_APP)
        @$(POSTBUILD)
index 1172e602e87e9b9ee7f5331ac7ae8541b2786df0..754bb01532b30fddd3f374188e064fc8df91a79c 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        = 2.0
+VER        = 2.1
 
 THISAPP    = wpa_supplicant-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -41,7 +41,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 3be2ebfdcced52e00eda0afe2889839d
+$(DL_FILE)_MD5 = e96b8db5a8171cd17a5b2012d6ad7cc7
 
 install : $(TARGET)
 
index 1c2624e2e705e391cd629568e24da699279abb4a..d5a747bcd370cc770a15429f741d9edcf9dd315b 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        #
@@ -28,8 +28,9 @@ VER = ipfire
 
 THISAPP    = xen-image
 TARGET     = $(DIR_INFO)/$(THISAPP)
+SUP_ARCH   = i586
 
-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 +47,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/xinetd b/lfs/xinetd
new file mode 100644 (file)
index 0000000..62f34ea
--- /dev/null
@@ -0,0 +1,85 @@
+###############################################################################
+#                                                                             #
+# 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/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 2.3.15
+
+THISAPP    = xinetd-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+PROG       = xinetd
+PAK_VER    = 1
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 77358478fd58efa6366accae99b8b04c
+
+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) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && ./configure --prefix=/usr
+       cd $(DIR_APP) && make $(MAKETUNING)
+       cd $(DIR_APP) && make install
+       -mkdir -pv /etc/xinetd.d
+       cp -f $(DIR_SRC)/config/xinetd/xinetd.conf /etc/xinetd.conf
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
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 ac13cb059232f084e05271ba1ae9a3bccac77832..0f5a74f983352abfc613396ca0e71b7253af2474 100755 (executable)
--- a/make.sh
+++ b/make.sh
 # 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-2012 IPFire Team <info@ipfire.org>.                   #
+# Copyright (C) 2007-2014 IPFire Team <info@ipfire.org>.                   #
 #                                                                          #
 ############################################################################
 #
 
 NAME="IPFire"                                                  # Software name
 SNAME="ipfire"                                                 # Short name
-VERSION="2.13"                                                 # Version number
-CORE="68"                                                      # Core Level (Filename)
-PAKFIRE_CORE="68"                                              # Core Level (PAKFIRE)
-GIT_BRANCH=`git status | head -n1 | cut -d" " -f4`             # Git Branch
+VERSION="2.15"                                                 # Version number
+CORE="79"                                                      # Core Level (Filename)
+PAKFIRE_CORE="79"                                              # Core Level (PAKFIRE)
+GIT_BRANCH=`git rev-parse --abbrev-ref HEAD`                   # Git Branch
 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
-
-BUILDMACHINE=$MACHINE
-    if [ "$MACHINE" = "x86_64" ]; then
-        BUILDMACHINE="i686";
-    fi
+TOOLCHAINVER=7
 
+# New architecture variables
+BUILD_ARCH="$(uname -m)"
+BUILDMACHINE="${BUILD_ARCH}"
 
 # Debian specific settings
 if [ ! -e /etc/debian_version ]; then
@@ -72,6 +69,12 @@ if [ -f .config ]; then
        . .config
 fi
 
+if [ -n "${TARGET_ARCH}" ]; then
+       configure_target "${TARGET_ARCH}"
+else
+       configure_target "default"
+fi
+
 if [ -z $EDITOR ]; then
        for i in nano emacs vi; do
                EDITOR=$(which $i 2>/dev/null)
@@ -83,6 +86,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() {
     ############################################################################
     #                                                                          #
@@ -179,11 +198,12 @@ prepareenv() {
     set +h
     LC_ALL=POSIX
     if [ -z $MAKETUNING ]; then
-        if [ "${MACHINE:0:3}" = "arm" ]; then
-            MAKETUNING="-j2"
-        else
-            MAKETUNING="-j6"
-        fi
+       CPU_COUNT="$(getconf _NPROCESSORS_ONLN 2>/dev/null)"
+       if [ -z "${CPU_COUNT}" ]; then
+               CPU_COUNT=1
+       fi
+
+       MAKETUNING="-j$(( ${CPU_COUNT} * 2 + 1 ))"
     fi
     export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING
     unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD
@@ -224,7 +244,7 @@ prepareenv() {
 
 buildtoolchain() {
     local error=false
-    case "${MACHINE}:$(uname -m)" in
+    case "${TARGET_ARCH}:${BUILD_ARCH}" in
         # x86
         i586:i586|i586:i686|i586:x86_64)
             # These are working.
@@ -333,15 +353,17 @@ buildbase() {
     lfsmake2 gettext
     lfsmake2 grep
     lfsmake2 groff
+    lfsmake2 gperf
     lfsmake2 gzip
-    lfsmake2 inetutils
+    lfsmake2 hostname
     lfsmake2 iproute2
+    lfsmake2 jwhois
     lfsmake2 kbd
     lfsmake2 less
     lfsmake2 make
     lfsmake2 man
     lfsmake2 mktemp
-    lfsmake2 module-init-tools
+    lfsmake2 kmod
     lfsmake2 net-tools
     lfsmake2 patch
     lfsmake2 psmisc
@@ -350,10 +372,11 @@ buildbase() {
     lfsmake2 sysvinit
     lfsmake2 tar
     lfsmake2 texinfo
-    lfsmake2 udev
     lfsmake2 util-linux
+    lfsmake2 udev
     lfsmake2 vim
     lfsmake2 xz
+    lfsmake2 paxctl
     lfsmake2 grub
 }
 
@@ -366,6 +389,7 @@ buildipfire() {
   ipfiremake dhcp
   ipfiremake dhcpcd
   ipfiremake libusb
+  ipfiremake libusbx
   ipfiremake libpcap
   ipfiremake ppp
   ipfiremake pptp
@@ -375,77 +399,65 @@ 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 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"
-
-    # x86 kernel build
-    ipfiremake linux                   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=""
-
-  else
-    # arm-rpi (Raspberry Pi) kernel build
-    ipfiremake linux                   KCFG="-rpi"
-    ipfiremake v4l-dvb                 KCFG="-rpi"
-    ipfiremake mISDN                   KCFG="-rpi" NOPCI=1
-    ipfiremake cryptodev               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-kirkwood (Dreamplug, ICY-Box ...) kernel build
-    ipfiremake linux                   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"
-
-  fi
+  case "${TARGET_ARCH}" in
+       i586)
+               # 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 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"
+
+               # x86 kernel build
+               ipfiremake linux                        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=""
+               ;;
+
+       armv5tel)
+               # arm-rpi (Raspberry Pi) kernel build
+               ipfiremake linux                        KCFG="-rpi"
+#              ipfiremake v4l-dvb                      KCFG="-rpi"
+#              ipfiremake mISDN                        KCFG="-rpi" NOPCI=1
+               ipfiremake cryptodev                    KCFG="-rpi"
+#              ipfiremake compat-drivers               KCFG="-rpi"
+
+               # arm multi platform (Panda, Wandboard ...) kernel build
+               ipfiremake linux                        KCFG="-multi"
+               ipfiremake cryptodev                    KCFG="-multi"
+               ipfiremake e1000e                       KCFG="-multi"
+               ipfiremake igb                          KCFG="-multi"
+
+               # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
+               ipfiremake linux                        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"
+               ;;
+  esac
   ipfiremake pkg-config
   ipfiremake linux-atm
   ipfiremake cpio
@@ -454,6 +466,7 @@ buildipfire() {
   ipfiremake gdbm
   ipfiremake pam
   ipfiremake openssl
+  ipfiremake openssl-compat
   ipfiremake curl
   ipfiremake tcl
   ipfiremake sqlite
@@ -462,6 +475,7 @@ buildipfire() {
   ipfiremake libnet
   ipfiremake libnl
   ipfiremake libidn
+  ipfiremake nasm
   ipfiremake libjpeg
   ipfiremake libexif
   ipfiremake libpng
@@ -487,6 +501,7 @@ buildipfire() {
   ipfiremake apache2
   ipfiremake php
   ipfiremake apache2                   PASS=C
+  ipfiremake jquery
   ipfiremake arping
   ipfiremake beep
   ipfiremake dvdrtools
@@ -503,6 +518,8 @@ buildipfire() {
   ipfiremake perl-GD
   ipfiremake GD-Graph
   ipfiremake GD-TextUtil
+  ipfiremake perl-Device-SerialPort
+  ipfiremake perl-Device-Modem
   ipfiremake gnupg
   ipfiremake hdparm
   ipfiremake sdparm
@@ -523,10 +540,10 @@ buildipfire() {
   ipfiremake logwatch
   ipfiremake misc-progs
   ipfiremake nano
-  ipfiremake nasm
   ipfiremake URI
   ipfiremake HTML-Tagset
   ipfiremake HTML-Parser
+  ipfiremake HTML-Template
   ipfiremake Compress-Zlib
   ipfiremake Digest
   ipfiremake Digest-SHA1
@@ -587,6 +604,8 @@ buildipfire() {
   ipfiremake lzo
   ipfiremake openvpn
   ipfiremake pammysql
+  ipfiremake mpage
+  ipfiremake dbus
   ipfiremake cups
   ipfiremake ghostscript
   ipfiremake foomatic
@@ -623,9 +642,6 @@ buildipfire() {
   ipfiremake libmpeg2
   ipfiremake cmake
   ipfiremake gnump3d
-  ipfiremake libsigc++
-  ipfiremake libtorrent
-  ipfiremake rtorrent
   ipfiremake rsync
   ipfiremake tcpwrapper
   ipfiremake libevent
@@ -640,6 +656,7 @@ buildipfire() {
   ipfiremake sysstat
   ipfiremake vsftpd
   ipfiremake strongswan
+  ipfiremake rng-tools
   ipfiremake lsof
   ipfiremake br2684ctl
   ipfiremake pcmciautils
@@ -656,8 +673,10 @@ buildipfire() {
   ipfiremake netpbm
   ipfiremake phpSANE
   ipfiremake tunctl
+  ipfiremake netsnmpd
   ipfiremake nagios
   ipfiremake nagios_nrpe
+  ipfiremake icinga
   ipfiremake ebtables
   ipfiremake directfb
   ipfiremake dfb++
@@ -665,8 +684,11 @@ buildipfire() {
   ipfiremake ffmpeg
   ipfiremake vdr
   ipfiremake vdr_streamdev
+  ipfiremake vdr_vnsiserver5
   ipfiremake vdr_vnsiserver3
   ipfiremake vdr_epgsearch
+  ipfiremake vdr_dvbapi
+  ipfiremake vdr_eepg
   ipfiremake w_scan
   ipfiremake icecast
   ipfiremake icegenerator
@@ -675,9 +697,7 @@ buildipfire() {
   ipfiremake mpc
   ipfiremake git
   ipfiremake squidclamav
-  ipfiremake bc
   ipfiremake vnstat
-  ipfiremake vnstati
   ipfiremake iw
   ipfiremake wpa_supplicant
   ipfiremake hostapd
@@ -686,7 +706,6 @@ buildipfire() {
   ipfiremake syslinux
   ipfiremake tftpd
   ipfiremake cpufrequtils
-  ipfiremake dbus
   ipfiremake bluetooth
   ipfiremake gutenprint
   ipfiremake apcupsd
@@ -703,11 +722,11 @@ buildipfire() {
   ipfiremake perl-Sort-Naturally
   ipfiremake vdradmin
   ipfiremake miau
-  ipfiremake netsnmpd
   ipfiremake perl-DBI
   ipfiremake perl-DBD-mysql
+  ipfiremake perl-DBD-SQLite
+  ipfiremake perl-File-ReadBackwards
   ipfiremake cacti
-  ipfiremake icecc
   ipfiremake openvmtools
   ipfiremake nagiosql
   ipfiremake iftop
@@ -722,7 +741,6 @@ buildipfire() {
   ipfiremake usb_modeswitch_data
   ipfiremake zerofree
   ipfiremake mdadm
-  ipfiremake eject
   ipfiremake pound
   ipfiremake minicom
   ipfiremake ddrescue
@@ -750,6 +768,7 @@ buildipfire() {
   ipfiremake acpid
   ipfiremake fping
   ipfiremake telnet
+  ipfiremake xinetd
   ipfiremake libgpg-error
   ipfiremake libassuan
   ipfiremake gpgme
@@ -758,13 +777,32 @@ buildipfire() {
   ipfiremake stress
   ipfiremake libstatgrab
   ipfiremake sarg
-  ipfiremake fstrim
   ipfiremake check_mk_agent
   ipfiremake libdaemon
   ipfiremake avahi
   ipfiremake nginx
   ipfiremake sendEmail
   ipfiremake sysbench
+  ipfiremake strace
+  ipfiremake ipfire-netboot
+  ipfiremake lcdproc
+  ipfiremake bitstream
+  ipfiremake multicat
+  ipfiremake keepalived
+  ipfiremake ipvsadm
+  ipfiremake perl-Carp-Clan
+  ipfiremake perl-Date-Calc
+  ipfiremake perl-Date-Manip
+  ipfiremake perl-File-Tail
+  ipfiremake perl-TimeDate
+  ipfiremake swatch
+  ipfiremake tor
+  ipfiremake arm
+  ipfiremake wavemon
+  ipfiremake iptraf-ng
+  ipfiremake iotop
+  ipfiremake stunnel
+  ipfiremake sslscan
   ipfiremake bacula
   echo Build on $HOSTNAME > $BASEDIR/build/var/ipfire/firebuild
   cat /proc/version >> $BASEDIR/build/var/ipfire/firebuild
@@ -794,8 +832,6 @@ 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
@@ -833,10 +869,8 @@ buildpackages() {
   ipfiremake cdrom
 
   # 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
+  modprobe loop 2>/dev/null
+  if [ $BUILD_IMAGES == 1 ] && ([ -e /dev/loop/0 ] || [ -e /dev/loop0 ] || [ -e "/dev/loop-control" ]); then
        ipfiremake flash-images
   fi
 
@@ -844,16 +878,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
@@ -900,6 +925,22 @@ ipfirepackages() {
   rm -rf  $BASEDIR/build/install/packages/*
 }
 
+while [ $# -gt 0 ]; do
+       case "${1}" in
+               --target=*)
+                       configure_target "${1#--target=}"
+                       ;;
+               -*)
+                       exiterror "Unknown configuration option: ${1}"
+                       ;;
+               *)
+                       # Found a command, so exit options parsing.
+                       break
+                       ;;
+       esac
+       shift
+done
+
 # See what we're supposed to do
 case "$1" in 
 build)
@@ -944,6 +985,7 @@ build)
 
        cd $BASEDIR
        tools/checknewlog.pl
+       tools/checkwronginitlinks
        cd $PWD
 
        beautify build_end
@@ -1093,11 +1135,11 @@ uploadsrc)
        fi
 
        URL_SOURCE=$(grep URL_SOURCE lfs/Config | awk '{ print $3 }')
-       REMOTE_FILES=$(echo "ls -1 --ignore=toolchains" | sftp -C ${IPFIRE_USER}@${URL_SOURCE})
+       REMOTE_FILES=$(echo "ls -1" | sftp -C ${IPFIRE_USER}@${URL_SOURCE})
 
-       cd $BASEDIR/cache/
-       for file in $(ls -1 --ignore=toolchains); do
-               grep -q "$file" <<<$REMOTE_FILES && continue
+       for file in ${BASEDIR}/cache/*; do
+               [ -d "${file}" ] && continue
+               grep -q "$(basename ${file})" <<<$REMOTE_FILES && continue
                NEW_FILES="$NEW_FILES $file"
        done
        [ -n "$NEW_FILES" ] && scp -2 $NEW_FILES ${IPFIRE_USER}@${URL_SOURCE}
index b2144f90ba170440cb3ee2bb33b6b17274094293..219c7c2ecd1db494a19b3f103a04886d2fe41ab4 100644 (file)
@@ -1,8 +1,8 @@
 #
 #      List of PCI ID's
 #
-#      Version: 2013.05.04
-#      Date:    2013-05-04 03:15:02
+#      Version: 2014.04.30
+#      Date:    2014-04-30 03:15:02
 #
 #      Maintained by Martin Mares <mj@ucw.cz> and other volunteers from the
 #      PCI ID Project at http://pci-ids.ucw.cz/.
        c000  Remote Insight Lights-Out Edition
        f130  NetFlex-3/P ThunderLAN 1.0
        f150  NetFlex-3/P ThunderLAN 2.3
+0e55  HaSoTec GmbH
 0eac  SHF Communication Technologies AG
        0008  Ethernet Powerlink Managing Node 01
 0f62  Acrox Technologies Co., Ltd.
                1000 9291  MegaRAID SAS 9286CV-8e
                1000 9295  MegaRAID SAS 9286CV-8eCC
                1014 040b  ServeRAID M5110 SAS/SATA Controller
+               1014 040c  ServeRAID M5120 SAS/SATA Controller
                1014 0412  ServeRAID M5110e SAS/SATA Controller
                1028 1f2d  PERC H810 Adapter
                1028 1f30  PERC H710 Embedded
                1028 1f35  PERC H710 Adapter
                1028 1f37  PERC H710 Mini (for blades)
                1028 1f38  PERC H710 Mini (for monolithics)
+               15d9 0690  LSI MegaRAID ROMB
+               8086 3510  RMS25PB080 RAID Controller
                8086 3513  RMS25CB080 RAID Controller
        005c  SAS1064A PCI-X Fusion-MPT SAS
        005d  MegaRAID SAS-3 3108 [Invader]
+               1028 1f41  PERC H830 Adapter
+               1028 1f42  PERC H730P Adapter
+               1028 1f43  PERC H730 Adapter
+               1028 1f47  PERC H730P Mini
+               1028 1f48  PERC H730P Mini (for blades)
+               1028 1f49  PERC H730 Mini
+               1028 1f4a  PERC H730 Mini (for blades)
+               17aa 1052  ThinkServer RAID 720i
+               17aa 1053  ThinkServer RAID 720ix
        005e  SAS1066 PCI-X Fusion-MPT SAS
        005f  MegaRAID SAS-3 3008 [Fury]
+               1028 1f44  PERC H330 Adapter
+               1028 1f4b  PERC H330 Mini
+               1028 1f4c  PERC H330 Mini (for blades)
+               1028 1f4d  PERC H330 Embedded (for monolithic)
        0060  MegaRAID SAS 1078
                1000 1006  MegaRAID SAS 8888ELP
                1000 100a  MegaRAID SAS 8708ELP
                1137 0073  2008 ROMB
                1137 00b0  UCSC RAID SAS 2008M-8i
                1137 00b1  UCSC RAID SAS 2008M-8i
+               1137 00c2  UCS E-Series Double Wide
+               1137 00c3  UCS E-Series Single Wide
                15d9 0400  Supermicro SMC2008-iMR
                1734 1177  RAID Ctrl SAS 6G 0/1 (D2607)
+               17aa 1051  ThinkServer RAID 510i
                8086 350d  RMS2AF040 RAID Controller
                8086 9240  RAID Controller RS2WC080
                8086 9241  RAID Controller RS2WC040
        0095  SAS3108 PCI-Express Fusion-MPT SAS-3
        0096  SAS3004 PCI-Express Fusion-MPT SAS-3
        0097  SAS3008 PCI-Express Fusion-MPT SAS-3
+               1028 1f45  12GB/s HBA internal
+               1028 1f46  12GB/s HBA external
        0407  MegaRAID
                1000 0530  MegaRAID 530 SCSI 320-0X RAID Controller
                1000 0531  MegaRAID 531 SCSI 320-4X RAID Controller
                1028 0533  PowerEdge Expandable RAID Controller 4/QC
                8086 0520  MegaRAID RAID Controller SRCU41L
                8086 0523  MegaRAID RAID Controller SRCS16
+       3050  SAS2008 PCI-Express Fusion-MPT SAS-2
        6001  DX1 Multiformat Broadcast HD/SD Encoder/Decoder
 1001  Kolter Electronic
        0010  PCI 1616 Measurement card with 32 digital I/O lines
        1305  Kaveri
        1306  Kaveri
        1307  Kaveri
-       1314  Wrestler HDMI Audio [Radeon HD 6250/6310]
-               174b 1001  Sapphire PURE Fusion Mini
+       1308  Kaveri HDMI/DP Audio Controller
+       1309  Kaveri [Radeon R7 Graphics]
+       130a  Kaveri [Radeon R6 Graphics]
+       130b  Kaveri [Radeon R4 Graphics]
+       130c  Kaveri [Radeon R7 Graphics]
+       130d  Kaveri [Radeon R6 Graphics]
+       130e  Kaveri [Radeon R5 Graphics]
+       130f  Kaveri [Radeon R7 Graphics]
+       1310  Kaveri
+       1311  Kaveri
+       1312  Kaveri
+       1313  Kaveri [Radeon R7 Graphics]
+       1314  Wrestler HDMI Audio
+               174b 1001  PURE Fusion Mini
+       1315  Kaveri [Radeon R5 Graphics]
+       1316  Kaveri [Radeon R5 Graphics]
+       1317  Kaveri
+       1318  Kaveri [Radeon R5 Graphics]
+       131b  Kaveri [Radeon R4 Graphics]
+       131c  Kaveri [Radeon R7 Graphics]
+       131d  Kaveri [Radeon R6 Graphics]
        1714  BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]
                103c 168b  ProBook 4535s
        3150  RV380/M24 [Mobility Radeon X600]
                1002 0002  R9600 Pro primary (Asus OEM for HP)
                1002 0003  R9600 Pro secondary (Asus OEM for HP)
                1002 4722  All-in-Wonder 2006 AGP Edition
-               1458 4024  Giga-Byte GV-R96128D (Primary)
-               148c 2064  PowerColor R96A-C3N
-               148c 2066  PowerColor R96A-C3N
-               174b 7c19  Sapphire Atlantis Radeon 9600 Pro
-               174b 7c29  GC-R9600PRO [Sapphire] (Primary)
+               1458 4024  GV-R96128D
+               148c 2064  R96A-C3N
+               148c 2066  R96A-C3N
+               174b 7c19  Atlantis Radeon 9600 Pro
+               174b 7c29  GC-R9600PRO
                17ee 2002  Radeon 9600 256Mb Primary
                18bc 0101  GC-R9600PRO (Primary)
        4151  RV350 [Radeon 9600 Series]
                1043 c002  Radeon 9600 XT TVD
                1043 c01a  A9600XT/TD
                1462 9510  RX9600XT (MS-8951)
-               174b 7c29  Sapphire Radeon 9600XT
+               174b 7c29  Radeon 9600XT
                1787 4002  Radeon 9600 XT
        4153  RV350 [Radeon 9550]
                1043 010c  A9550GE/TD
        4154  RV350 GL [FireGL T2]
        4155  RV350 [Radeon 9600]
        4157  RV350 GL [FireGL T2]
-       4158  68800AX [Mach32]
+       4158  68800AX [Graphics Ultra Pro PCI]
        4164  R300 [Radeon 9500 PRO] (Secondary)
        4165  R300 [Radeon 9700 PRO] (Secondary)
        4166  R300 [Radeon 9700 PRO] (Secondary)
        4170  RV350 [Radeon 9550/9600/X1050 Series] (Secondary)
                1002 0003  R9600 Pro secondary (Asus OEM for HP)
                1002 4723  All-in-Wonder 2006 AGP Edition (Secondary)
-               1458 4025  Giga-Byte GV-R96128D (Secondary)
-               148c 2067  PowerColor R96A-C3N (Secondary)
-               174b 7c28  GC-R9600PRO [Sapphire] (Secondary)
+               1458 4025  GV-R96128D (Secondary)
+               148c 2067  R96A-C3N (Secondary)
+               174b 7c28  GC-R9600PRO (Secondary)
                17ee 2003  Radeon 9600 256Mb (Secondary)
                18bc 0100  GC-R9600PRO (Secondary)
        4171  RV350 [Radeon 9600] (Secondary)
                1002 4773  All-in-Wonder 9600 XT (Secondary)
                1043 c003  A9600XT (Secondary)
                1043 c01b  A9600XT/TD (Secondary)
-               174b 7c28  Sapphire Radeon 9600XT (Secondary)
+               174b 7c28  Radeon 9600XT (Secondary)
                1787 4003  Radeon 9600 XT (Secondary)
        4173  RV350 [Radeon 9550] (Secondary)
                1043 010d  A9550GE/TD (Secondary)
        4242  R200 [All-In-Wonder Radeon 8500 DV]
                1002 02aa  Radeon 8500 AIW DV Edition
+       4243  R200 PCI Bridge [All-in-Wonder Radeon 8500DV]
        4336  RS100 [Radeon IGP 320M]
                1002 4336  Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M)
                103c 0024  Pavilion ze4400 builtin Video
                105b 0c81  Realtek ALC 653
                107b 0300  MX6421
                1462 0131  MS-1013 Notebook
-       4371  IXP SB400 PCI-PCI Bridge
+       4371  IXP SB4x0 PCI-PCI Bridge
                103c 308b  MX6125
                1462 7217  Aspire L250
-       4372  IXP SB400 SMBus Controller
+       4372  IXP SB4x0 SMBus Controller
                1025 0080  Aspire 5024WLMMi
                103c 2a20  Pavilion t3030.de Desktop PC
                103c 308b  MX6125
                1462 0131  MS-1013 Notebook
                1462 7217  Aspire L250
-       4373  IXP SB400 USB2 Host Controller
+       4373  IXP SB4x0 USB2 Host Controller
                1025 0080  Aspire 5024WLMMi
                103c 2a20  Pavilion t3030.de Desktop PC
                103c 308b  MX6125
                1462 7217  Aspire L250
-       4374  IXP SB400 USB Host Controller
+       4374  IXP SB4x0 USB Host Controller
                103c 2a20  Pavilion t3030.de Desktop PC
                103c 308b  MX6125
                1462 7217  Aspire L250
-       4375  IXP SB400 USB Host Controller
+       4375  IXP SB4x0 USB Host Controller
                1025 0080  Aspire 5024WLMMi
                103c 2a20  Pavilion t3030.de Desktop PC
                103c 308b  MX6125
                1462 7217  Aspire L250
-       4376  IXP SB400 IDE Controller
+       4376  IXP SB4x0 IDE Controller
                1025 0080  Aspire 5024WLMMi
                103c 2a20  Pavilion t3030.de Desktop PC
                103c 308b  MX6125
                1462 0131  MS-1013 Notebook
                1462 7217  Aspire L250
-       4377  IXP SB400 PCI-ISA Bridge
+       4377  IXP SB4x0 PCI-ISA Bridge
                1025 0080  Aspire 5024WLMi
                103c 2a20  Pavilion t3030.de Desktop PC
                103c 308b  MX6125
                1025 0080  Aspire 5024WLMMi
                103c 308b  MX6125
                1462 0131  MS-1013 Notebook
-       4379  IXP SB400 Serial ATA Controller
+       4379  IXP SB4x0 Serial ATA Controller
                1462 7141  Aspire L250
        437a  IXP SB400 Serial ATA Controller
                1002 4379  4379 Serial ATA Controller
                1458 b005  Gigabyte GA-MA69G-S3H Motherboard
                1462 7327  K9AG Neo2
                17f2 5999  KI690-AM2 Motherboard
-       4381  SB400 SATA Controller (RAID 5 mode)
+       4381  SB600 SATA Controller (RAID 5 mode)
        4382  SB600 AC97 Audio
        4383  SBx00 Azalia (Intel HDA)
                1019 2120  A785GM-M
                1458 4385  GA-MA770-DS3rev2.0 Motherboard
                1462 7368  K9AG Neo2
                15d9 a811  H8DGU
-               174b 1001  Sapphire PURE Fusion Mini
+               174b 1001  PURE Fusion Mini
                17f2 5000  KI690-AM2 Motherboard
        4386  SB600 USB Controller (EHCI)
                103c 280a  DC5750 Microtower
                103c 1611  Pavilion DM1Z-3000
                1043 82ef  M3A78-EH Motherboard
                1043 8443  M5A88-V EVO
-               174b 1001  Sapphire PURE Fusion Mini
+               174b 1001  PURE Fusion Mini
        4392  SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode]
        4393  SB7x0/SB8x0/SB9x0 SATA Controller [RAID5 mode]
        4394  SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
                1043 82ef  M3A78-EH Motherboard
                1043 8443  M5A88-V EVO
                15d9 a811  H8DGU
-               174b 1001  Sapphire PURE Fusion Mini
+               174b 1001  PURE Fusion Mini
        4397  SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
                1019 2120  A785GM-M
                103c 1611  Pavilion DM1Z-3000
                1043 82ef  M3A78-EH Motherboard
                1043 8443  M5A88-V EVO
                15d9 a811  H8DGU
-               174b 1001  Sapphire PURE Fusion Mini
+               174b 1001  PURE Fusion Mini
        4398  SB7x0 USB OHCI1 Controller
                1019 2120  A785GM-M
                1043 82ef  M3A78-EH Motherboard
                1019 2120  A785GM-M
                1043 82ef  M3A78-EH Motherboard
                1043 8443  M5A88-V EVO
-               174b 1001  Sapphire PURE Fusion Mini
+               174b 1001  PURE Fusion Mini
        439c  SB7x0/SB8x0/SB9x0 IDE Controller
                1019 2120  A785GM-M
                1043 82ef  M3A78-EH Motherboard
                103c 1611  Pavilion DM1Z-3000
                1043 82ef  M3A78-EH Motherboard
                1043 8443  M5A88-V EVO
-               174b 1001  Sapphire PURE Fusion Mini
+               174b 1001  PURE Fusion Mini
        43a0  SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0)
        43a1  SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1)
        43a2  SB900 PCI to PCI bridge (PCIE port 2)
        4753  Rage XC
                1002 4753  Rage XC
        4754  3D Rage II/II+ PCI [Mach64 GT]
-       4755  3D Rage II+ PCI [Mach64 GTB]
+       4755  Mach64 GTB [3D Rage II+ DVD]
        4756  3D Rage IIC PCI [Mach64 GT IIC]
                1002 4756  Rage IIC
        4757  3D Rage IIC AGP
                148c 2039  RV250 If [Radeon 9000 Pro "Evil Commando"]
                1509 9a00  RV250 If [Radeon 9000 "AT009"]
                1681 0040  RV250 If [3D prophet 9000]
-               174b 7176  RV250 If [Sapphire Radeon 9000 Pro]
+               174b 7176  Radeon 9000 Pro
                174b 7192  RV250 If [Radeon 9000 "Atlantis"]
                17af 2005  RV250 If [Excalibur Radeon 9000 Pro]
                17af 2006  RV250 If [Excalibur Radeon 9000]
                1002 013a  Radeon 8500
                148c 2026  R200 QL [Radeon 8500 Evil Master II Multi Display Edition]
                1681 0010  Radeon 8500 [3D Prophet 8500 128Mb]
-               174b 7149  Radeon R200 QL [Sapphire Radeon 8500 LE]
+               174b 7149  Radeon 8500 LE
                1787 0f08  Radeon R200 QL [PowerMagic Radeon 8500]
        514d  R200 [Radeon 9100]
        5157  RV200 [Radeon 7500/7500 LE]
                148c 2025  RV200 QW [Radeon 7500 Evil Master Multi Display Edition]
                148c 2036  RV200 QW [Radeon 7500 PCI Dual Display]
                174b 7146  RV200 QW [Radeon 7500 LE]
-               174b 7147  RV200 QW [Sapphire Radeon 7500LE]
+               174b 7147  Radeon 7500 LE
                174b 7161  Radeon RV200 QW [Radeon 7500 LE]
                17af 0202  RV200 QW [Excalibur Radeon 7500LE]
        5159  RV100 [Radeon 7000 / Radeon VE]
                148c 2003  RV100 QY [Radeon 7000 Multi-Display Edition]
                148c 2023  RV100 QY [Radeon 7000 Evil Master Multi-Display]
                174b 0280  Radeon RV100 QY [Radeon 7000/VE]
-               174b 7112  RV100 QY [Sapphire Radeon VE 7000]
-               174b 7c28  Sapphire Radeon VE 7000 DDR
+               174b 7112  Radeon VE 7000
+               174b 7c28  Radeon VE 7000 DDR
                1787 0202  RV100 QY [Excalibur Radeon 7000]
                17ee 1001  Radeon 7000 64MB DDR + DVI
        515e  ES1000
        5940  RV280 [Radeon 9200 PRO] (Secondary)
                17af 2021  Excalibur Radeon 9250 (Secondary)
        5941  RV280 [Radeon 9200] (Secondary)
-               1458 4019  Gigabyte Radeon 9200
-               174b 7c12  Sapphire Radeon 9200
+               1458 4019  Radeon 9200
+               174b 7c12  Radeon 9200
                17af 200d  Excalibur Radeon 9200
-               18bc 0050  GeXcube GC-R9200-C3 (Secondary)
+               18bc 0050  GC-R9200-C3 (Secondary)
        5944  RV280 [Radeon 9200 SE PCI]
        5950  RS480/RS482/RS485 Host Bridge
                1025 0080  Aspire 5024WLMMi
                1002 2f72  All-in-Wonder 9200 Series
                1019 4c30  Radeon 9200 VIVO
                12ab 5961  YUAN SMARTVGA Radeon 9200
-               1458 4018  Gigabyte Radeon 9200
-               174b 7c13  Sapphire Radeon 9200
+               1458 4018  Radeon 9200
+               174b 7c13  Radeon 9200
                17af 200c  Excalibur Radeon 9200
                18bc 0050  Radeon 9200 Game Buster
-               18bc 0051  GeXcube GC-R9200-C3
+               18bc 0051  GC-R9200-C3
                18bc 0053  Radeon 9200 Game Buster VIVO
        5962  RV280 [Radeon 9200]
        5964  RV280 [Radeon 9200 SE]
                1002 5964  Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz
-               1043 c006  ASUS Radeon 9200 SE / TD / 128M
+               1043 c006  Radeon 9200 SE / TD / 128M
                1458 4018  Radeon 9200 SE
                1458 4032  Radeon 9200 SE 128MB
                147b 6191  R9200SE-DT
                148c 2073  CN-AG92E
-               174b 7c13  Sapphire Radeon 9200 SE
+               174b 7c13  Radeon 9200 SE
                1787 5964  Excalibur 9200SE VIVO 128M
                17af 2012  Radeon 9200 SE Excalibur
                18bc 0170  Sapphire Radeon 9200 SE 128MB Game Buster
                103c 280a  DC5750 Microtower
                1462 7141  Aspire L250
        5975  RS482M [Mobility Radeon Xpress 200]
-       5978  RD790 PCI to PCI bridge (external gfx0 port A)
+       5978  RX780/RD790 PCI to PCI bridge (external gfx0 port A)
                1849 5957  A770CrossFire Motherboard
        5979  RD790 PCI to PCI bridge (external gfx0 port B)
        597a  RD790 PCI to PCI bridge (PCI express gpp port A)
-       597b  RD790 PCI to PCI bridge (PCI express gpp port B)
+       597b  RX780/RD790 PCI to PCI bridge (PCI express gpp port B)
        597c  RD790 PCI to PCI bridge (PCI express gpp port C)
-       597d  RD790 PCI to PCI bridge (PCI express gpp port D)
+       597d  RX780/RD790 PCI to PCI bridge (PCI express gpp port D)
        597e  RD790 PCI to PCI bridge (PCI express gpp port E)
                1849 5957  A770CrossFire Motherboard
        597f  RD790 PCI to PCI bridge (PCI express gpp port F)
                15d9 a811  H8DGU
        5a20  RD890S PCI Express bridge for GPP2 port 1
        5a23  RD990 I/O Memory Management Unit (IOMMU)
-       5a33  Radeon Xpress 200 Host Bridge
-       5a34  RS480 PCI-X Root Port
-# Comes in pair with 5a3f
-       5a36  RS480 PCI Bridge
-       5a37  RS480 PCI Bridge
-       5a38  RS480 PCI Bridge
-# Comes in pair with 5a38
-       5a39  RS480 PCI Bridge
-       5a3f  RS480 PCI Bridge
+       5a31  RC410 Host Bridge
+       5a33  RS400 Host Bridge
+       5a34  RS4xx PCI Express Port [ext gfx]
+       5a36  RC4xx/RS4xx PCI Express Port 1
+       5a37  RC4xx/RS4xx PCI Express Port 2
+       5a38  RC4xx/RS4xx PCI Express Port 3
+       5a39  RC4xx/RS4xx PCI Express Port 4
+       5a3f  RC4xx/RS4xx PCI Bridge [int gfx]
                1462 7217  Aspire L250
        5a41  RS400 [Radeon Xpress 200]
        5a42  RS400M [Radeon Xpress 200M]
        5b70  RV370 [Radeon X300 SE]
 # RX300SE-TD128E
                1462 0403  Radeon X300 SE 128MB DDR
-               174b 0501  Sapphire Radeon X300 SE
+               174b 0501  Radeon X300 SE
                196d 1087  Radeon X300 SE HyperMemory
        5b72  RV380 [Radeon X300/X550/X1050 Series] (Secondary)
        5b73  RV370 [Radeon X300/X550/X1050 Series] (Secondary)
                1458 4019  Radeon 9200 SE (Secondary)
                1458 4032  Radeon 9200 SE 128MB
                147b 6190  R9200SE-DT (Secondary)
-               174b 7c12  Sapphire Radeon 9200 SE (Secondary)
+               174b 7c12  Radeon 9200 SE (Secondary)
                1787 5965  Excalibur 9200SE VIVO 128M (Secondary)
                17af 2013  Radeon 9200 SE Excalibur (Secondary)
                18bc 0171  Radeon 9200 SE 128MB Game Buster (Secondary)
        5d50  R480 GL [FireGL V7200]
        5d52  R480 [Radeon X850 XT]
                1002 0b12  PowerColor X850XT PCIe (Primary)
-               1002 0b13  PowerColor X850XT PCIe (Secondary)
        5d57  R423 [Radeon X800 XT]
        5d6d  R480 [Radeon X850 XT Platinum Edition] (Secondary)
        5d6f  R480 [Radeon X800 GTO] (Secondary)
        5d72  R480 [Radeon X850 XT] (Secondary)
+               1002 0b13  PowerColor X850XT PCIe (Secondary)
        5d77  R423 [Radeon X800 XT] (Secondary)
        5e48  RV410 GL [FireGL V5000]
        5e49  RV410 [Radeon X700 Series]
        5e4b  RV410 [Radeon X700 PRO]
        5e4c  RV410 [Radeon X700 SE]
        5e4d  RV410 [Radeon X700]
-               148c 2116  PowerColor Bravo X700
+               148c 2116  Bravo X700
        5e4f  RV410 [Radeon X700]
                1569 1e4f  Radeon X550 XT
        5e6b  RV410 [Radeon X700 PRO] (Secondary)
        5e6d  RV410 [Radeon X700] (Secondary)
-               148c 2117  PowerColor Bravo X700
+               148c 2117  Bravo X700 (Secondary)
        5f57  R423 [Radeon X800 XT]
-       6600  Mars [Radeon HD 8670A/8750M]
+       6600  Mars [Radeon HD 8670A/8670M/8750M]
        6601  Mars [Radeon HD 8730M]
+               103c 2100  FirePro M4100
        6602  Mars
        6603  Mars
+       6604  Opal XT [Radeon R7 M265]
+       6605  Opal PRO [Radeon R7 M260]
        6606  Mars XTX [Radeon HD 8790M]
-       6607  Mars LE [Radeon HD 8530M]
-       6610  Oland [Radeon HD 8600 Series]
-       6611  Oland [Radeon HD 8500 Series]
-       6613  Oland [Radeon HD 8500 Series]
+       6607  Mars LE [Radeon HD 8530M / R5 M240]
+       6610  Oland XT [Radeon HD 8670 / R7 250]
+               1019 0030  Radeon HD 8670
+               1028 2120  Radeon R7 250
+               1028 2322  Radeon R7 250
+               1462 2910  Radeon HD 8670
+               1462 2911  Radeon HD 8670
+               1642 3c81  Radeon HD 8670
+               1642 3c91  Radeon HD 8670
+       6611  Oland [Radeon HD 8570 / R7 240 OEM]
+               1028 210b  Radeon R5 240 OEM
+               174b 4248  Radeon R7 240 OEM
+               174b a240  Radeon R7 240 OEM
+               1b0a 90d3  Radeon R7 240 OEM
+       6613  Oland PRO [Radeon R7 240]
+               1682 7240  R7 240 2048 MB
        6620  Mars
        6621  Mars PRO
        6623  Mars
        6631  Oland
-       6640  Saturn XT
-       6641  Saturn PRO
-       6649  Bonaire
+       6640  Saturn XT [FirePro M6100]
+       6641  Saturn PRO [Radeon HD 8930M]
+       6649  Bonaire [FirePro W5100]
        6650  Bonaire
        6651  Bonaire
-       6658  Bonaire
-       665c  Bonaire XT [Radeon HD 7790/8770]
+       6658  Bonaire XTX [Radeon R7 260X]
+       665c  Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM]
                1043 0452  Radeon HD 7790 DirectCU II OC
 # R7790-1GD5/OC
                1462 2930  Radeon HD 7790 OC
                1462 2932  Radeon HD 8770
+               1462 2934  Radeon R9 260 OEM
+               148c 9260  Radeon R9 260 OEM
 # FX-779A-CDB4 / FX-779A-CDBC
                1682 3310  Radeon HD 7790 Black Edition 2 GB
 # 100356OCL / 11210-01-20G
                174b e253  Radeon HD 7790 Dual-X OC
                1787 2329  Radeon HD 7790 TurboDuo
-       6660  Sun XT [Radeon HD 8600M Series]
-       6663  Sun PRO [Radeon HD 8500M Series]
-       6667  Sun
-       666f  Sun LE
+       665d  Bonaire [Radeon R7 200 Series]
+       6660  Sun XT [Radeon HD 8670A/8670M/8690M]
+       6663  Sun PRO [Radeon HD 8570A/8570M]
+               1025 0846  Radeon HD 8570A
+       6664  Jet XT [Radeon R5 M240]
+       6665  Jet PRO [Radeon R5 M230]
+       6667  Jet ULT [Radeon R5 M230]
+       666f  Sun LE [Radeon HD 8550M]
        6670  Hainan
        6704  Cayman PRO GL [FirePro V7900]
        6707  Cayman LE GL [FirePro V5900]
        673e  Barts LE [Radeon HD 6790]
                148c 7720  Radeon HD 7720 OEM
        6740  Whistler [Radeon HD 6730M/6770M/7690M XT]
+               1019 238c  Radeon HD 6730M
+               1019 238e  Radeon HD 6730M
+               1019 2391  Radeon HD 6730M
+               1019 2392  Radeon HD 6770M
                1028 04a3  Precision M4600
-       6741  Whistler [Radeon HD 6600M/6700M/7600M Series]
+               1028 053e  FirePro M5950
+               103c 1630  FirePro M5950
+               103c 1631  FirePro M5950
+               103c 164b  Radeon HD 6730M
+               103c 164e  Radeon HD 6730M
+               103c 1657  Radeon HD 6770M
+               103c 1658  Radeon HD 6770M
+               103c 165a  Radeon HD 6770M
+               103c 165b  Radeon HD 6770M
+               103c 1688  Radeon HD 6770M
+               103c 1689  Radeon HD 6770M
+               103c 168a  Radeon HD 6770M
+               103c 185e  Radeon HD 7690M XT
+               103c 3388  Radeon HD 6770M
+               103c 3389  Radeon HD 6770M
+               103c 3582  Radeon HD 6770M
+               103c 366c  Radeon HD 6730M
+               1043 1d02  Radeon HD 6730M
+               1043 1d12  Radeon HD 6730M
+               104d 9084  Radeon HD 6730M
+               104d 9085  Radeon HD 6730M
+               144d b074  Radeon HD 6730M
+               144d b077  Radeon HD 6730M
+               144d b084  Radeon HD 6730M
+               144d b088  Radeon HD 6730M
+               17aa 3982  Radeon HD 6730M
+       6741  Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M]
+               1019 238e  Radeon HD 6650M
+               1019 238f  Radeon HD 6650M
+               1025 0379  Radeon HD 6650M
+               1025 037b  Radeon HD 6650M
+               1025 037e  Radeon HD 6650M
+               1025 0382  Radeon HD 6650M
+               1025 0384  Radeon HD 6650M
+               1025 0385  Radeon HD 6650M
+               1025 0386  Radeon HD 6650M
+               1025 0387  Radeon HD 6650M
+               1025 0388  Radeon HD 6650M
+               1025 0442  Radeon HD 6650M
+               1025 0451  Radeon HD 6650M
+               1025 0489  Radeon HD 6650M
+               1025 048b  Radeon HD 6650M
+               1025 048c  Radeon HD 6650M
+               1025 050a  Radeon HD 6650M
+               1025 050b  Radeon HD 6650M
+               1025 050c  Radeon HD 6650M
+               1025 050e  Radeon HD 6650M
+               1025 050f  Radeon HD 6650M
+               1025 0513  Radeon HD 6650M
+               1025 0514  Radeon HD 6650M
+               1025 0515  Radeon HD 6650M
+               1025 0516  Radeon HD 6650M
+               1025 051e  Radeon HD 6650M
+               1025 051f  Radeon HD 6650M
+               1025 0520  Radeon HD 6650M
+               1025 0521  Radeon HD 6650M
+               1025 052a  Radeon HD 6650M
+               1025 0555  Radeon HD 6650M
+               1025 0556  Radeon HD 6650M
+               1025 055d  Radeon HD 6650M
+               1025 055e  Radeon HD 6650M
+               1025 056d  Radeon HD 6650M
+               1025 059a  Radeon HD 6650M
+               1025 059b  Radeon HD 6650M
+               1025 059e  Radeon HD 6650M
+               1025 059f  Radeon HD 6650M
+               1025 0600  Radeon HD 6650M
+               1025 0605  Radeon HD 6650M
+               1025 0606  Radeon HD 6650M
+               1025 0619  Radeon HD 6650M
+               1028 04c1  Radeon HD 6630M
+               1028 04c5  Radeon HD 6630M
+               1028 04cd  Radeon HD 6630M
+               1028 04d7  Radeon HD 6630M
+               1028 04d9  Radeon HD 6630M
+               1028 052d  Radeon HD 6630M
+               103c 1617  Radeon HD 6650M
+               103c 1646  Radeon HD 6750M
+               103c 1647  Radeon HD 6650M
+               103c 164b  Radeon HD 6650M
+               103c 164e  Radeon HD 6650M
+               103c 1688  Radeon HD 6750M
+               103c 1689  Radeon HD 6750M
+               103c 168a  Radeon HD 6750M
+               103c 1860  Radeon HD 7690M
+               103c 3385  Radeon HD 6630M
+               103c 3560  Radeon HD 6750M
+               103c 358d  Radeon HD 6750M
+               103c 3590  Radeon HD 6750M
+               103c 3593  Radeon HD 6750M
+               103c 366c  Radeon HD 6650M
+               1043 1cd2  Radeon HD 6650M
+               1043 2121  Radeon HD 6650M
+               1043 2122  Radeon HD 6650M
+               1043 2123  Radeon HD 6650M
+               1043 2125  Radeon HD 7670M
+               1043 2127  Radeon HD 7670M
+               104d 907b  Radeon HD 6630M
+               104d 9080  Radeon HD 6630M
+               104d 9081  Radeon HD 6630M
                106b 00e2  MacBookPro8,2 [Core i7, 15", Late 2011]
+               1179 fd63  Radeon HD 6630M
+               1179 fd65  Radeon HD 6630M
+               144d c093  Radeon HD 6650M
+               144d c0ac  Radeon HD 6650M
+               144d c0b3  Radeon HD 6750M
+               144d c539  Radeon HD 6630M
+               144d c609  Radeon HD 6630M
+               152d 0914  Radeon HD 6650M
+               17aa 21e1  Radeon HD 6630M
+               17aa 3970  Radeon HD 6650M
+               17aa 3976  Radeon HD 6650M
+               1854 0907  Radeon HD 6650M
        6742  Whistler LE [Radeon HD 6610M/7610M]
+               1002 6570  Turks [Radeon HD 6570]
+               1019 2393  Radeon HD 6610M
                1043 1d82  K53SK Laptop Radeon HD 7610M
+               1179 fb22  Radeon HD 7610M
+               1179 fb23  Radeon HD 7610M
+               1179 fb27  Radeon HD 7610M
+               1179 fb2a  Radeon HD 7610M
+               1179 fb2c  Radeon HD 7610M
+               1179 fb30  Radeon HD 7610M
+               1179 fb31  Radeon HD 7610M
+               1179 fb32  Radeon HD 7610M
+               1179 fb38  Radeon HD 7610M
+               1179 fb39  Radeon HD 7610M
+               1179 fb3a  Radeon HD 7610M
+               1179 fb3b  Radeon HD 7610M
+               1179 fb40  Radeon HD 7610M
+               1179 fb41  Radeon HD 7610M
+               1179 fb47  Radeon HD 7610M
+               1179 fb48  Radeon HD 7610M
+               1179 fb49  Radeon HD 7610M
+               1179 fb51  Radeon HD 7610M
+               1179 fb52  Radeon HD 7610M
+               1179 fb53  Radeon HD 7610M
+               1179 fb56  Radeon HD 7610M
+               1179 fb81  Radeon HD 7610M
+               1179 fb82  Radeon HD 7610M
+               1179 fb83  Radeon HD 7610M
+               1179 fc56  Radeon HD 7610M
+               1179 fcd4  Radeon HD 7610M
+               1179 fcee  Radeon HD 7610M
+               1458 6570  Turks [Radeon HD 6570]
+               1462 6570  Turks [Radeon HD 6570]
+               148c 6570  Turks [Radeon HD 6570]
+               1682 6570  Turks [Radeon HD 6570]
+               174b 5570  Turks [Radeon HD 5570]
+               174b 6570  Turks [Radeon HD 6570]
+               174b 7570  Turks [Radeon HD 7570]
+               174b 8510  Turks [Radeon HD 8510]
+               174b 8570  Turks [Radeon HD 8570]
+               1787 6570  Turks [Radeon HD 6570]
+               17af 6570  Turks [Radeon HD 6570]
                8086 2111  Radeon HD 6625M
        6743  Whistler [Radeon E6760]
        6749  Turks GL [FirePro V4900]
        674a  Turks GL [FirePro V3900]
-       6750  Onega [Radeon HD 6650A / 7650A]
-       6751  Turks XT [Radeon HD 7670A]
-       6758  Turks XT [Radeon HD 6670]
-       6759  Turks PRO [Radeon HD 6570]
+       6750  Onega [Radeon HD 6650A/7650A]
+               1462 2670  Radeon HD 6670A
+               17aa 3079  Radeon HD 7650A
+               17aa 307a  Radeon HD 6650A
+               17aa 3087  Radeon HD 7650A
+               17aa 3618  Radeon HD 6650A
+               17aa 3623  Radeon HD 6650A
+               17aa 3627  Radeon HD 6650A
+       6751  Turks [Radeon HD 7650A/7670A]
+               1028 0548  Radeon HD 7650A
+               1462 2671  Radeon HD 7670A
+               1462 2672  Radeon HD 7670A
+               1462 2680  Radeon HD 7650A
+               1462 2681  Radeon HD 7650A
+               17aa 3087  Radeon HD 7650A
+       6758  Turks XT [Radeon HD 6670/7670]
+               1028 0b0e  Radeon HD 6670
+               103c 6882  Radeon HD 6670
+               1462 250a  Radeon HD 7670
+               148c 7670  Radeon HD 7670
+               1545 7670  Radeon HD 7670
+               1682 3300  Radeon HD 7670
+               174b 7670  Radeon HD 7670
+               174b e181  Radeon HD 6670
+               1787 2309  Radeon HD 6670
+       6759  Turks PRO [Radeon HD 6570/7570/8550]
+               103c 3130  Radeon HD 6570
+               1043 0403  Radeon HD 6570
+               1462 2500  Radeon HD 6570
+               1462 2509  Radeon HD 7570
                148c 7570  Radeon HD 7570
+               1642 3a67  Radeon HD 6570
+               1682 3280  Radeon HD 7570
+               1682 3530  Radeon HD 8550
                174b 7570  Radeon HD 7570
+               174b e142  Radeon HD 6570
+               174b e181  Radeon HD 6570
+               1b0a 908f  Radeon HD 6570
+               1b0a 9090  Radeon HD 6570
+               1b0a 9091  Radeon HD 6570
+               1b0a 9092  Radeon HD 6570
+               1b0a 909e  Radeon HD 6570
+               1b0a 90b5  Radeon HD 7570
+               1b0a 90b6  Radeon HD 7570
+       675b  Turks [Radeon HD 7600 Series]
        675d  Turks PRO [Radeon HD 7570]
-       675f  Turks LE [Radeon HD 5570/6510/7510]
+       675f  Turks LE [Radeon HD 5570/6510/7510/8510]
                148c 6510  Radeon HD 6510
+               148c 6530  Radeon HD 6530
+               148c 7510  Radeon HD 7510
+               1545 7570  Radeon HD 7570
                174b 6510  Radeon HD 6510
                174b 7510  Radeon HD 7510
+               174b 8510  Radeon HD 8510
                1787 2012  Radeon HD 5570 2GB GDDR3
                1787 2314  Radeon HD 5570 1GB DDR2/GDDR3
        6760  Seymour [Radeon HD 6400M/7400M Series]
+               1002 0124  Radeon HD 6470M
+               1002 0134  Radeon HD 6470M
+               1019 238b  Radeon HD 6470M
+               1019 238e  Radeon HD 6470M
+               1019 2390  Radeon HD 6470M
+               1019 9985  Radeon HD 6470M
+               1028 04c1  Radeon HD 6470M
+               1028 04c3  Radeon HD 6470M
+               1028 04ca  Radeon HD 6470M
+               1028 04cb  Radeon HD 6470M
                1028 04cc  Vostro 3350
-               1043 84a0  Seymour XT [Radeon HD 6470M]
+               1028 04d1  Radeon HD 6470M
+               1028 04d3  Radeon HD 6470M
+               1028 04d7  Radeon HD 6470M
+               1028 0502  Radeon HD 6470M
+               1028 0503  Radeon HD 6470M
+               1028 0506  Radeon HD 6470M
+               1028 0507  Radeon HD 6470M
+               1028 0514  Radeon HD 6470M
+               1028 051c  Radeon HD 6450M
+               1028 051d  Radeon HD 6450M
+               103c 161a  Radeon HD 6470M
+               103c 161b  Radeon HD 6470M
+               103c 161e  Radeon HD 6470M
+               103c 161f  Radeon HD 6470M
+               103c 1622  Radeon HD 6450M
+               103c 1623  Radeon HD 6450M
+               103c 164a  Radeon HD 6470M
+               103c 164d  Radeon HD 6470M
+               103c 1651  Radeon HD 6470M
+               103c 1656  Radeon HD 6490M
+               103c 1658  Radeon HD 6490M
+               103c 1659  Radeon HD 6490M
+               103c 165b  Radeon HD 6490M
+               103c 165d  Radeon HD 6470M
+               103c 165f  Radeon HD 6470M
+               103c 1661  Radeon HD 6470M
+               103c 1663  Radeon HD 6470M
+               103c 1665  Radeon HD 6470M
+               103c 1667  Radeon HD 6470M
+               103c 1669  Radeon HD 6470M
+               103c 166b  Radeon HD 6470M
+               103c 166c  Radeon HD 6470M
+               103c 166e  Radeon HD 6470M
+               103c 1670  Radeon HD 6470M
+               103c 1672  Radeon HD 6470M
+               103c 167a  Radeon HD 6470M
+               103c 167b  Radeon HD 6470M
+               103c 167d  Radeon HD 6490M
+               103c 167f  Radeon HD 6490M
+               103c 168c  Radeon HD 6470M
+               103c 168f  Radeon HD 6470M
+               103c 1694  Radeon HD 6470M
+               103c 1696  Radeon HD 6470M
+               103c 1698  Radeon HD 6470M
+               103c 169a  Radeon HD 6470M
+               103c 169c  Radeon HD 6490M
+               103c 1855  Radeon HD 7450M
+               103c 1859  Radeon HD 7450M
+               103c 185c  Radeon HD 7450M
+               103c 185d  Radeon HD 7470M
+               103c 185f  Radeon HD 7470M
+               103c 1863  Radeon HD 7450M
+               103c 355c  Radeon HD 6490M
+               103c 355f  Radeon HD 6490M
+               103c 3563  Radeon HD 6470M
+               103c 3565  Radeon HD 6470M
+               103c 3567  Radeon HD 6470M
+               103c 3569  Radeon HD 6470M
+               103c 3581  Radeon HD 6490M
+               103c 3584  Radeon HD 6470M
+               103c 358c  Radeon HD 6490M
+               103c 358f  Radeon HD 6490M
+               103c 3592  Radeon HD 6490M
+               103c 3596  Radeon HD 6490M
+               103c 366b  Radeon HD 6470M
+               103c 3671  FirePro M3900
+               103c 3673  Radeon HD 6470M
+               1043 100a  Radeon HD 7470M
+               1043 100c  Radeon HD 6470M
+               1043 101b  Radeon HD 6470M
+               1043 101c  Radeon HD 6470M
+               1043 102a  Radeon HD 7450M
+               1043 102c  Radeon HD 6470M
+               1043 104b  Radeon HD 7470M
+               1043 105d  Radeon HD 7470M
+               1043 106b  Radeon HD 7470M
+               1043 106d  Radeon HD 7470M
+               1043 107d  Radeon HD 7470M
+               1043 1cb2  Radeon HD 6470M
+               1043 1d22  Radeon HD 6470M
+               1043 1d32  Radeon HD 6470M
+               1043 2001  Radeon HD 6470M
+               1043 2002  Radeon HD 7470M
+               1043 2107  Radeon HD 7470M
+               1043 2108  Radeon HD 7470M
+               1043 2109  Radeon HD 7470M
+               1043 84a0  Radeon HD 6470M
+               1043 84e9  Radeon HD 6470M
+               1043 8515  Radeon HD 7470M
+               1043 8517  Radeon HD 7470M
+               1043 855a  Radeon HD 7470M
+               104d 907b  Radeon HD 6470M
+               104d 9081  Radeon HD 6470M
+               104d 9084  Radeon HD 6470M
+               104d 9085  Radeon HD 6470M
+               1179 0001  Radeon HD 6450M
+               1179 0003  Radeon HD 6450M
+               1179 0004  Radeon HD 6450M
+               1179 fb22  Radeon HD 7470M
+               1179 fb23  Radeon HD 7470M
+               1179 fb2c  Radeon HD 7470M
+               1179 fb31  Radeon HD 7470M
+               1179 fb32  Radeon HD 7470M
+               1179 fb33  Radeon HD 7470M
+               1179 fb38  Radeon HD 7470M
+               1179 fb39  Radeon HD 7470M
+               1179 fb3a  Radeon HD 7470M
+               1179 fb40  Radeon HD 7470M
+               1179 fb41  Radeon HD 7470M
+               1179 fb42  Radeon HD 7470M
+               1179 fb47  Radeon HD 7470M
+               1179 fb48  Radeon HD 7470M
+               1179 fb51  Radeon HD 7470M
+               1179 fb52  Radeon HD 7470M
+               1179 fb53  Radeon HD 7470M
+               1179 fb81  Radeon HD 7470M
+               1179 fb82  Radeon HD 7470M
+               1179 fb83  Radeon HD 7470M
+               1179 fc51  Radeon HD 6470M
+               1179 fc52  Radeon HD 7470M
+               1179 fc56  Radeon HD 7470M
+               1179 fcd3  Radeon HD 7470M
+               1179 fcd4  Radeon HD 7470M
+               1179 fcee  Radeon HD 7470M
+               1179 fdee  Radeon HD 7470M
+               144d b074  Radeon HD 6470M
+               144d b084  Radeon HD 6470M
+               144d c095  Radeon HD 6470M
+               144d c0b3  Radeon HD 6490M
+               144d c538  Radeon HD 6470M
+               144d c581  Radeon HD 6470M
+               144d c589  Radeon HD 6470M
+               144d c609  Radeon HD 7470M
+               144d c625  Radeon HD 7470M
+               144d c636  Radeon HD 7450M
+               1462 10ac  Radeon HD 6470M
+               152d 0916  Radeon HD 6470M
+               17aa 21e5  Radeon HD 6470M
+               17aa 3900  Radeon HD 7450M
+               17aa 3902  Radeon HD 7450M
+               17aa 3969  Radeon HD 6470M
+               17aa 3970  Radeon HD 7450M
+               17aa 3976  Radeon HD 6470M
+               17aa 397b  Radeon HD 6470M
+               17aa 397d  Radeon HD 6470M
+               17aa 5101  Radeon HD 7470M
+               17aa 5102  Radeon HD 7450M
+               17aa 5103  Radeon HD 7450M
+               17aa 5106  Radeon HD 7450M
+               1854 0897  Radeon HD 6470M
+               1854 0900  Radeon HD 6470M
+               1854 0908  Radeon HD 6470M
+               1854 2015  Radeon HD 6470M
        6761  Seymour LP [Radeon HD 6430M]
        6763  Seymour [Radeon E6460]
        6764  Seymour [Radeon HD 6400M Series]
        6767  Caicos
        6768  Caicos
        6770  Caicos [Radeon HD 6450A/7450A]
-       6771  Caicos XTX [Radeon HD 8490]
+               17aa 308d  Radeon HD 7450A
+               17aa 3623  Radeon HD 6450A
+               17aa 3627  Radeon HD 6450A
+               17aa 3629  Radeon HD 6450A
+               17aa 363c  Radeon HD 6450A
+               17aa 3658  Radeon HD 7470A
+       6771  Caicos XTX [Radeon HD 8490 / R5 235X OEM]
        6772  Caicos [Radeon HD 7450A]
-       6778  Caicos XT [Radeon HD 7470]
+       6778  Caicos XT [Radeon HD 7470/8470 / R5 235 OEM]
+               1019 0024  Radeon HD 7470
+               1019 0027  Radeon HD 8470
+               1028 2120  Radeon HD 7470
+               1462 b491  Radeon HD 8470
+               1462 b492  Radeon HD 8470
                1462 b493  Radeon HD 8470 OEM
-       6779  Caicos [Radeon HD 6450]
+               1642 3c65  Radeon HD 8470
+               1642 3c75  Radeon HD 8470
+               174b 8145  Radeon HD 8470
+               174b e145  Radeon HD 7470
+       6779  Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM]
+               1019 0016  Radeon HD 6450
+               1019 0017  Radeon HD 6450
+               1019 0018  Radeon HD 6450
+               1028 2120  Radeon HD 6450
+               103c 2128  Radeon HD 6450
+               103c 2aee  Radeon HD 7450A
+               1462 2125  Radeon HD 6450
+               1462 2346  Radeon HD 7450
+               1462 2490  Radeon HD 6450
+               1462 2494  Radeon HD 6450
+               1462 2496  Radeon HD 7450
+               148c 7450  Radeon HD 7450
                148c 8450  Radeon HD 8450 OEM
+               1545 7470  Radeon HD 7470
+               1642 3a65  Radeon HD 6450
+               1642 3a66  Radeon HD 7450
+               1642 3a75  Radeon HD 6450
+               1642 3a76  Radeon HD 7450
+               1682 3200  Radeon HD 7450
                174b 7450  Radeon HD 7450
+               174b e127  Radeon HD 6450
+               174b e153  Radeon HD 6450
                174b e164  Radeon HD 6450 1 GB DDR3
+               174b e180  Radeon HD 6450
+               174b e201  Radeon HD 6450
                17af 8450  Radeon HD 8450 OEM
+               1b0a 9096  Radeon HD 6450
+               1b0a 9097  Radeon HD 6450
+               1b0a 90a8  Radeon HD 6450A
+               1b0a 90b1  Radeon HD 6450
+               1b0a 90b3  Radeon HD 7450A
+               1b0a 90bb  Radeon HD 7450A
        677b  Caicos PRO [Radeon HD 7450]
        6780  Tahiti XT GL [FirePro W9000]
        6784  Tahiti [ATI FirePro V (FireGL V) Graphics Adapter]
        678a  Tahiti PRO GL [FirePro Series]
                1002 030c  FirePro W8000
                1002 0310  FirePro S9000
+               1002 0420  Radeon Sky 700
+               1002 0422  Radeon Sky 900
+               1002 0b0e  FirePro S10000 Passive
                1002 0b2a  FirePro S10000
                1028 030c  FirePro W8000
        6790  Tahiti
        6791  Tahiti
        6792  Tahiti
-       6798  Tahiti XT [Radeon HD 7970]
+       6798  Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X]
                1002 3000  Tahiti XT2 [Radeon HD 7970 GHz Edition]
+               1002 3001  Tahiti XTL [Radeon R9 280X]
+               1002 4000  Radeon HD 8970 OEM
                1043 041c  HD 7970 DirectCU II
                1043 0420  HD 7970 DirectCU II TOP
                1043 0444  HD 7970 DirectCU II TOP
                1043 0448  HD 7970 DirectCU II TOP
                1043 044a  Tahiti XT2 [Matrix HD 7970]
                1043 044c  Tahiti XT2 [Matrix HD 7970 Platinum]
+               1043 3001  Tahiti XTL [ROG Matrix R9 280X]
+               1043 3006  Tahiti XTL [Radeon R9 280X DirectCU II TOP]
                1043 9999  ARES II
                1092 3000  Tahiti XT2 [Radeon HD 7970 GHz Edition]
                1458 2261  Tahiti XT2 [Radeon HD 7970 GHz Edition OC]
+               1462 2774  MSI R7970 TF 3GD5/OC BE
                1682 3211  Double D HD 7970 Black Edition
 # FX-797A-TNBC
                1682 3213  HD 7970 Black Edition
                1787 2317  Radeon HD 7990
                1787 3000  Tahiti XT2 [Radeon HD 7970 GHz Edition]
        6799  New Zealand [Radeon HD 7900 Series]
-       679a  Tahiti PRO [Radeon HD 7950]
+       679a  Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280]
                1002 0b01  Radeon HD 8950 OEM
                1002 3000  Tahiti PRO2 [Radeon HD 7950 Boost]
                1462 3000  Radeon HD 8950 OEM
        679b  Malta [Radeon HD 7990]
+               1002 0b28  Radeon HD 8990 OEM
+               1002 0b2a  Radeon HD 7990
+               1462 8036  Radeon HD 8990 OEM
+               148c 8990  Radeon HD 8990 OEM
        679e  Tahiti LE [Radeon HD 7870 XT]
        679f  Tahiti
+       67a0  Hawaii XT GL
+       67a1  Hawaii GL
+       67a2  Hawaii GL
+       67a8  Hawaii
+       67a9  Hawaii
+       67aa  Hawaii
+       67b0  Hawaii XT [Radeon R9 290X]
+       67b1  Hawaii PRO [Radeon R9 290]
+       67b9  Vesuvius [Radeon R9 295 X2]
+       67be  Hawaii LE
        6800  Wimbledon XT [Radeon HD 7970M]
                1002 0124  Radeon HD 7970M
                8086 2110  Radeon HD 7970M
                8086 2111  Radeon HD 7970M
-       6801  Neptune [Radeon HD 8970M]
+       6801  Neptune XT [Radeon HD 8970M]
                1002 0124  Radeon HD 8970M
+               1462 1117  Radeon R9 M290X
                8086 2110  Radeon HD 8970M
                8086 2111  Radeon HD 8970M
        6802  Wimbledon
        6806  Neptune
        6808  Pitcairn XT GL [FirePro W7000]
                1002 0310  FirePro S7000
+               1002 0420  Radeon Sky 500
        6809  Pitcairn LE GL [FirePro W5000]
-       6810  Pitcairn
-       6811  Pitcairn
+       6810  Curacao XT [Radeon R9 270X]
+       6811  Curacao PRO [Radeon R9 270]
        6816  Pitcairn
        6817  Pitcairn
        6818  Pitcairn XT [Radeon HD 7870 GHz Edition]
-               1002 0b05  Pitcairn XT [Radeon HD 8870 OEM]
+               1002 0b05  Radeon HD 8870 OEM
+               174b 8b04  Radeon HD 8860
        6819  Pitcairn PRO [Radeon HD 7850]
-               174b e221  Sapphire Radeon HD 7850 2 GB GDDR5 DVI-I/DVI-D/HDMI/DP
-       6820  Venus XTX [Radeon HD 8800M Series]
-       6821  Venus XT [Radeon HD 8800M Series]
-       6823  Venus PRO [Radeon HD 8800M Series]
-       6824  Chelsea [Radeon HD 7700M Series]
+               174b e221  Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP
+       6820  Venus XTX [Radeon HD 8890M / R9 M275X]
+               103c 1851  Radeon HD 7750M
+               17aa 3801  Radeon R9 M275
+       6821  Venus XT [Radeon HD 8870M / R9 M270X]
+               1002 031e  FirePro SX4000
+               1028 05cc  FirePro M5100
+               1028 15cc  FirePro M5100
+       6822  Venus PRO [Radeon E8860]
+       6823  Venus PRO [Radeon HD 8850M / R9 M265X]
        6825  Heathrow XT [Radeon HD 7870M]
                8086 2111  Chelsea PRO
        6826  Chelsea LP [Radeon HD 7700M Series]
        6827  Heathrow PRO [Radeon HD 7850M/8850M]
        6828  Cape Verde PRO [FirePro W600]
        6829  Cape Verde
-       682b  Venus LE [Radeon HD 8800M Series]
+       682a  Venus PRO
+       682b  Venus LE [Radeon HD 8830M]
        682d  Chelsea XT GL [FirePro M4000]
        682f  Chelsea LP [Radeon HD 7730M]
+               103c 1851  Radeon HD 7750M
        6830  Cape Verde [Radeon HD 7800M Series]
        6831  Cape Verde [AMD Radeon HD 7700M Series]
-       6837  Cape Verde LE [Radeon HD 7730]
+       6835  Cape Verde PRX [Radeon R9 255 OEM]
+       6837  Cape Verde LE [Radeon HD 7730/8730]
+               1462 2796  Radeon HD 8730
+               1462 8092  Radeon HD 8730
+               148c 8730  Radeon HD 8730
                1787 3000  Radeon HD 6570
        6838  Cape Verde
        6839  Cape Verde
        683b  Cape Verde [Radeon HD 7700 Series]
-       683d  Cape Verde XT [Radeon HD 7770 GHz Edition]
+       683d  Cape Verde XT [Radeon HD 7770/8760 / R7 250X]
                1002 0030  Radeon HD 8760 OEM
                1019 0030  Radeon HD 8760 OEM
                103c 6890  Radeon HD 8760 OEM
-       683f  Cape Verde PRO [Radeon HD 7750]
-       6840  Thames XT [Radeon HD 7670M]
-       6841  Thames [Radeon 7550M/7570M/7650M]
+               1043 8760  Radeon HD 8760 OEM
+               174b 8304  Radeon HD 8760 OEM
+       683f  Cape Verde PRO [Radeon HD 7750 / R7 250E]
+       6840  Thames [Radeon HD 7500M/7600M Series]
+               1025 050e  Radeon HD 7670M
+               1025 050f  Radeon HD 7670M
+               1025 0513  Radeon HD 7670M
+               1025 0514  Radeon HD 7670M
+               1025 056d  Radeon HD 7670M
+               1025 059a  Radeon HD 7670M
+               1025 059b  Radeon HD 7670M
+               1025 059e  Radeon HD 7670M
+               1025 0600  Radeon HD 7670M
+               1025 0606  Radeon HD 7670M
+               1025 0696  Radeon HD 7650M
+               1025 0697  Radeon HD 7650M
+               1025 0698  Radeon HD 7650M
+               1025 0699  Radeon HD 7650M
+               1025 0757  Radeon HD 7670M
+               1028 056a  Radeon HD 7670M
+               1028 056e  Radeon HD 7670M
+               1028 0598  Radeon HD 7670M
+               1028 059d  Radeon HD 7670M
+               1028 05a3  Radeon HD 7670M
+               1028 05b9  Radeon HD 7670M
+               1028 05bb  Radeon HD 7670M
+               103c 17f1  Radeon HD 7570M
+               103c 17f4  Radeon HD 7650M
+               103c 1813  Radeon HD 7590M
+               103c 182f  Radeon HD 7670M
+               103c 1830  Radeon HD 7670M
+               103c 1835  Radeon HD 7670M
+               103c 183a  Radeon HD 7670M
+               103c 183c  Radeon HD 7670M
+               103c 183e  Radeon HD 7670M
+               103c 1840  Radeon HD 7670M
+               103c 1842  Radeon HD 7670M
+               103c 1844  Radeon HD 7670M
+               103c 1848  Radeon HD 7670M
+               103c 184a  Radeon HD 7670M
+               103c 184c  Radeon HD 7670M
+               103c 1895  Radeon HD 7670M
+               103c 1897  Radeon HD 7670M
+               103c 18a5  Radeon HD 7670M
+               103c 18a7  Radeon HD 7670M
+               103c 18f4  Radeon HD 7670M
+               1043 100a  Radeon HD 7670M
+               1043 104b  Radeon HD 7670M
+               1043 10dc  Radeon HD 7670M
+               1043 2121  Radeon HD 7670M
+               1043 2122  Radeon HD 7670M
+               1043 2123  Radeon HD 7670M
+               1043 2125  Radeon HD 7670M
+               1043 2127  Radeon HD 7670M
+               1179 fb11  Radeon HD 7670M
+               1179 fb22  Radeon HD 7670M
+               1179 fb23  Radeon HD 7670M
+               1179 fb2c  Radeon HD 7670M
+               1179 fb31  Radeon HD 7670M
+               1179 fb32  Radeon HD 7670M
+               1179 fb38  Radeon HD 7670M
+               1179 fb39  Radeon HD 7670M
+               1179 fb3a  Radeon HD 7670M
+               1179 fb40  Radeon HD 7670M
+               1179 fb41  Radeon HD 7670M
+               1179 fb47  Radeon HD 7670M
+               1179 fb48  Radeon HD 7670M
+               1179 fb51  Radeon HD 7670M
+               1179 fb52  Radeon HD 7670M
+               1179 fb53  Radeon HD 7670M
+               1179 fb81  Radeon HD 7670M
+               1179 fb82  Radeon HD 7670M
+               1179 fb83  Radeon HD 7670M
+               1179 fc56  Radeon HD 7670M
+               1179 fcd4  Radeon HD 7670M
+               1179 fcee  Radeon HD 7670M
+               144d c0c5  Radeon HD 7690M
+               144d c0ce  Radeon HD 7670M
+               144d c0da  Radeon HD 7670M
+               17aa 3970  Radeon HD 7670M
+               17aa 397b  Radeon HD 7670M
+               17aa 5101  Radeon HD 7670M
+               17aa 5102  Radeon HD 7670M
+               17aa 5103  Radeon HD 7670M
+       6841  Thames [Radeon HD 7550M/7570M/7650M]
+               1028 0561  Radeon HD 7650M
+               1028 056c  Radeon HD 7650M
+               1028 057f  Radeon HD 7570M
+               103c 17f1  Radeon HD 7570M
+               103c 17f4  Radeon HD 7650M
+               103c 1813  Radeon HD 7570M
+               103c 183a  Radeon HD 7650M
+               103c 183c  Radeon HD 7650M
+               103c 183e  Radeon HD 7650M
+               103c 1840  Radeon HD 7650M
+               103c 1842  Radeon HD 7650M
+               103c 1844  Radeon HD 7650M
+               1043 100a  Radeon HD 7650M
+               1043 104b  Radeon HD 7650M
+               1043 10dc  Radeon HD 7650M
+               1043 2134  Radeon HD 7650M
+               1179 0001  Radeon HD 7570M
+               1179 0002  Radeon HD 7570M
+               1179 fb43  Radeon HD 7550M
+               1179 fb91  Radeon HD 7550M
+               1179 fb92  Radeon HD 7550M
+               1179 fb93  Radeon HD 7550M
+               1179 fba2  Radeon HD 7550M
+               1179 fba3  Radeon HD 7550M
+               144d c0c7  Radeon HD 7550M
        6842  Thames LE [Radeon HD 7000M Series]
        6843  Thames [Radeon HD 7670M]
-       6849  Lombok [AMD Radeon HD 7400 Series]
-       6880  Cypress
        6888  Cypress XT [FirePro V8800]
        6889  Cypress PRO [FirePro V7800]
                1002 0301  FirePro V7800P
        68a1  Broadway PRO [Mobility Radeon HD 5850]
                106b 00cc  iMac MC511 Mobility Radeon HD 5850 MXM Module
        68a8  Granville [Radeon HD 6850M/6870M]
+               1025 0442  Radeon HD 6850M
+               1025 0451  Radeon HD 6850M
+               1025 050a  Radeon HD 6850M
+               1025 050b  Radeon HD 6850M
+               1025 050c  Radeon HD 6850M
+               1025 050e  Radeon HD 6850M
+               1025 050f  Radeon HD 6850M
+               1025 0513  Radeon HD 6850M
+               1025 0514  Radeon HD 6850M
+               1025 0515  Radeon HD 6850M
+               1025 0516  Radeon HD 6850M
+               1025 0525  Radeon HD 6850M
+               1025 0526  Radeon HD 6850M
+               1025 056d  Radeon HD 6850M
+               1028 048f  Radeon HD 6870M
+               1028 0490  Radeon HD 6870M
+               1028 04b9  Radeon HD 6870M
+               1028 04ba  Radeon HD 6870M
                103c 159b  Radeon HD 6850M
+               144d c0ad  Radeon HD 6850M
        68a9  Juniper XT [FirePro V5800]
        68b8  Juniper XT [Radeon HD 5770]
                106b 00cf  MacPro5,1 [Mac Pro 2.8GHz DDR3]
        68bf  Juniper PRO [Radeon HD 6750]
                174b 6750  Radeon HD 6750
        68c0  Madison [Mobility Radeon HD 5730 / 6570M]
+               1019 2383  Mobility Radeon HD 5730
+               1028 02a2  Mobility Radeon HD 5730
+               1028 02fe  Mobility Radeon HD 5730
+               1028 0419  Mobility Radeon HD 5730
+               103c 147d  Mobility Radeon HD 5730
                103c 1521  Madison XT [FirePro M5800]
                103c 1593  Mobility Radeon HD 6570
                103c 1596  Mobility Radeon HD 6570
                103c 1599  Mobility Radeon HD 6570
-       68c1  Madison [Mobility Radeon HD 5650/5750 / 6550M]
+               1043 1c22  Mobility Radeon HD 5730
+               17aa 3927  Mobility Radeon HD 5730
+               17aa 3952  Mobility Radeon HD 5730
+               17aa 3978  Radeon HD 6570M
+       68c1  Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M]
+               1025 0205  Mobility Radeon HD 5650
+               1025 0293  Mobility Radeon HD 5650
+               1025 0294  Mobility Radeon HD 5650
+               1025 0296  Mobility Radeon HD 5650
+               1025 0308  Mobility Radeon HD 5650
+               1025 030a  Mobility Radeon HD 5650
+               1025 0311  Mobility Radeon HD 5650
+               1025 0312  Mobility Radeon HD 5650
+               1025 031c  Mobility Radeon HD 5650
+               1025 031d  Mobility Radeon HD 5650
                1025 033d  Mobility Radeon HD 5650
+               1025 033e  Mobility Radeon HD 5650
+               1025 033f  Mobility Radeon HD 5650
+               1025 0346  Mobility Radeon HD 5650
                1025 0347  Aspire 7740G
+               1025 0348  Mobility Radeon HD 5650
+               1025 0356  Mobility Radeon HD 5650
+               1025 0357  Mobility Radeon HD 5650
+               1025 0358  Mobility Radeon HD 5650
+               1025 0359  Mobility Radeon HD 5650
+               1025 035a  Mobility Radeon HD 5650
+               1025 035b  Mobility Radeon HD 5650
+               1025 035c  Mobility Radeon HD 5650
+               1025 035d  Mobility Radeon HD 5650
+               1025 035e  Mobility Radeon HD 5650
+               1025 0360  Mobility Radeon HD 5650
+               1025 0362  Mobility Radeon HD 5650
+               1025 0364  Mobility Radeon HD 5650
+               1025 0365  Mobility Radeon HD 5650
+               1025 0366  Mobility Radeon HD 5650
+               1025 0367  Mobility Radeon HD 5650
+               1025 0368  Mobility Radeon HD 5650
+               1025 036c  Mobility Radeon HD 5650
+               1025 036d  Mobility Radeon HD 5650
+               1025 036e  Mobility Radeon HD 5650
+               1025 036f  Mobility Radeon HD 5650
+               1025 0372  Mobility Radeon HD 5650
+               1025 0373  Mobility Radeon HD 5650
+               1025 0377  Mobility Radeon HD 5650
+               1025 0378  Mobility Radeon HD 5650
+               1025 0379  Mobility Radeon HD 5650
+               1025 037a  Mobility Radeon HD 5650
+               1025 037b  Mobility Radeon HD 5650
+               1025 037e  Mobility Radeon HD 5650
+               1025 037f  Mobility Radeon HD 5650
+               1025 0382  Mobility Radeon HD 5650
+               1025 0383  Mobility Radeon HD 5650
+               1025 0384  Mobility Radeon HD 5650
+               1025 0385  Mobility Radeon HD 5650
+               1025 0386  Mobility Radeon HD 5650
+               1025 0387  Mobility Radeon HD 5650
+               1025 0388  Mobility Radeon HD 5650
+               1025 038b  Mobility Radeon HD 5650
+               1025 038c  Mobility Radeon HD 5650
+               1025 039a  Mobility Radeon HD 5650
+               1025 0411  Mobility Radeon HD 5650
+               1025 0412  Mobility Radeon HD 5650
+               1025 0418  Mobility Radeon HD 5650
+               1025 0419  Mobility Radeon HD 5650
+               1025 0420  Mobility Radeon HD 5650
+               1025 0421  Mobility Radeon HD 5650
+               1025 0425  Mobility Radeon HD 5650
+               1025 042a  Mobility Radeon HD 5650
+               1025 042e  Mobility Radeon HD 5650
+               1025 042f  Mobility Radeon HD 5650
+               1025 0432  Mobility Radeon HD 5650
+               1025 0433  Mobility Radeon HD 5650
+               1025 0442  Mobility Radeon HD 5650
+               1025 044c  Mobility Radeon HD 5650
+               1025 044e  Mobility Radeon HD 5650
+               1025 0451  Mobility Radeon HD 5650
+               1025 0454  Mobility Radeon HD 5650
+               1025 0455  Mobility Radeon HD 5650
+               1025 0475  Mobility Radeon HD 5650
+               1025 0476  Mobility Radeon HD 5650
+               1025 0487  Mobility Radeon HD 5650
+               1025 0489  Mobility Radeon HD 5650
+               1025 0498  Mobility Radeon HD 5650
+               1025 0517  Radeon HD 6550M
+               1025 051a  Radeon HD 6550M
+               1025 051b  Radeon HD 6550M
+               1025 051c  Radeon HD 6550M
+               1025 051d  Radeon HD 6550M
+               1025 0525  Radeon HD 6550M
+               1025 0526  Radeon HD 6550M
+               1025 052b  Radeon HD 6550M
+               1025 052c  Radeon HD 6550M
+               1025 053c  Radeon HD 6550M
+               1025 053d  Radeon HD 6550M
+               1025 053e  Radeon HD 6550M
+               1025 053f  Radeon HD 6550M
+               1025 0607  Radeon HD 6550M
+               1028 041b  Mobility Radeon HD 5650
+               1028 0447  Mobility Radeon HD 5650
+               1028 0448  Mobility Radeon HD 5650
+               1028 0456  Mobility Radeon HD 5650
+               1028 0457  Mobility Radeon HD 5650
+               103c 1436  Mobility Radeon HD 5650
+               103c 1437  Mobility Radeon HD 5650
+               103c 1440  Mobility Radeon HD 5650
+               103c 1448  Mobility Radeon HD 5650
+               103c 1449  Mobility Radeon HD 5650
+               103c 144a  Mobility Radeon HD 5650
+               103c 144b  Mobility Radeon HD 5650
+               103c 147b  Mobility Radeon HD 5650
+               103c 149c  Mobility Radeon HD 5650
+               103c 149e  Mobility Radeon HD 5650
                103c 1521  Madison Pro [FirePro M5800]
+               1043 1bc2  Mobility Radeon HD 5650
+               104d 9071  Mobility Radeon HD 5650
+               104d 9077  Mobility Radeon HD 5650
+               104d 9081  Mobility Radeon HD 5650
+               1179 fd00  Mobility Radeon HD 5650
+               1179 fd12  Mobility Radeon HD 5650
+               1179 fd1a  Mobility Radeon HD 5650
+               1179 fd30  Mobility Radeon HD 5650
+               1179 fd31  Mobility Radeon HD 5650
+               1179 fd50  Mobility Radeon HD 5650
+               1179 fd52  Radeon HD 6530M
+               1179 fd63  Radeon HD 6530M
+               1179 fd65  Radeon HD 6530M
+               1179 fdd0  Mobility Radeon HD 5650
+               1179 fdd2  Radeon HD 6530M
+               144d c07e  Mobility Radeon HD 5650
+               144d c085  Mobility Radeon HD 5650
+               14c0 0043  Mobility Radeon HD 5650
+               14c0 004d  Mobility Radeon HD 5650
+               17aa 3928  Mobility Radeon HD 5650
+               17aa 3951  Mobility Radeon HD 5650
+               17aa 3977  Radeon HD 6550M
        68c7  Madison [Mobility Radeon HD 5570/6550A]
+               1462 2241  Mobility Radeon HD 5570
+               1462 2243  Mobility Radeon HD 5570
+               1462 2244  Mobility Radeon HD 5570
+               1462 2245  Radeon HD 6550A
+               1462 2246  Radeon HD 6550A
        68c8  Redwood XT GL [FirePro V4800]
        68c9  Redwood PRO GL [FirePro V3800]
-       68d8  Redwood XT [Radeon HD 5670]
+       68d8  Redwood XT [Radeon HD 5670/5690/5730]
+               1028 68e0  Radeon HD 5670
+               174b 5690  Radeon HD 5690
+               174b 5730  Radeon HD 5730
+               174b e151  Radeon HD 5670
                1787 3000  Radeon HD 5730
-       68d9  Redwood PRO [Radeon HD 5570]
+               17af 3010  Radeon HD 5730
+               17af 3011  Radeon HD 5690
+       68d9  Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570]
+               103c 6870  Radeon HD 5570
+               103c 6872  Radeon HD 5570
+               1043 03ce  Radeon HD 5550
+               1462 2151  Radeon HD 5570
+               1462 2240  Radeon HD 5570
                148c 3000  Radeon HD 6510
                148c 3001  Radeon HD 6610
-       68da  Redwood LE [Radeon HD 5550]
+               1545 5550  Radeon HD 5550
+               1545 7570  Radeon HD 7570
+               1642 3985  Radeon HD 5570
+               1642 3996  Radeon HD 5570
+               174b 3000  Radeon HD 6510
+               174b 6510  Radeon HD 6510
+               174b 6610  Radeon HD 6610
+               174b e142  Radeon HD 5570
+               1787 3000  Radeon HD 6510
+               17af 3000  Radeon HD 6510
+               17af 3010  Radeon HD 5630
+       68da  Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570]
                148c 3000  Radeon HD 6390
                148c 3001  Radeon HD 6490
+               1545 7570  Radeon HD 7570
+               174b 3000  Radeon HD 6390
+               174b 5570  Radeon HD 5570
+               174b 5630  Radeon HD 5630
+               174b 6490  Radeon HD 6490
+               1787 3000  Radeon HD 5630
+               17af 3000  Radeon HD 6390
+               17af 3010  Radeon HD 5630
        68de  Redwood
        68e0  Park [Mobility Radeon HD 5430/5450/5470]
+               1028 0404  Mobility Radeon HD 5450
+               1028 0414  Mobility Radeon HD 5450
+               1028 0434  Mobility Radeon HD 5450
+               103c 1433  Mobility Radeon HD 5450
+               103c 1434  Mobility Radeon HD 5450
+               103c 1469  Mobility Radeon HD 5450
+               103c 146b  Mobility Radeon HD 5450
                103c 1486  TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450)
+               103c 1622  Mobility Radeon HD 5450
+               103c 1623  Mobility Radeon HD 5450
+               103c eeee  Mobility Radeon HD 5450
+               104d 9076  Mobility Radeon HD 5450
+               1682 304e  Caicos [Radeon HD 5450]
+               1682 6000  Caicos [Radeon HD 5450]
+               17aa 9e52  FirePro M3800
+               17aa 9e53  FirePro M3800
        68e1  Park [Mobility Radeon HD 5430]
+               1043 041f  Caicos [Radeon HD 7350]
+               1043 3000  Caicos [Radeon HD 5450]
+               148c 3000  Caicos [Radeon HD 5450]
+               148c 3001  Caicos [Radeon HD 6230]
+               148c 3002  Caicos [Radeon HD 6250]
+               148c 3003  Caicos [Radeon HD 6350]
                148c 7350  Caicos [Radeon HD 7350]
+               148c 8350  Caicos [Radeon HD 8350]
                1545 5450  Caicos [Radeon HD 5450]
+               1545 7350  Caicos [Radeon HD 7350]
+               1682 3000  Caicos [Radeon HD 5450]
+               1682 6000  Caicos [Radeon HD 5450]
+               1682 7350  Caicos [Radeon HD 7350]
+               174b 3000  Caicos [Radeon HD 5450]
                174b 5470  Caicos [Radeon HD 5470]
+               174b 6000  Caicos [Radeon HD 5450]
+               174b 6230  Caicos [Radeon HD 6230]
                174b 6350  Caicos [Radeon HD 6350]
+               174b 7350  Caicos [Radeon HD 7350]
+               1787 3000  Caicos [Radeon HD 5450]
+               17af 3000  Caicos [Radeon HD 5450]
+               17af 3001  Caicos [Radeon HD 6230]
+               17af 3014  Caicos [Radeon HD 6350]
                17af 3015  Caicos [Radeon HD 7350]
                17af 8350  Caicos [Radeon HD 8350 OEM]
        68e4  Robson CE [Radeon HD 6370M/7370M]
+               1019 2386  Radeon HD 6350M
+               1019 2387  Radeon HD 6350M
+               1019 238d  Radeon HD 6370M
+               1019 238e  Radeon HD 6370M
+               1025 0382  Radeon HD 6370M
+               1025 0489  Radeon HD 6370M
+               1025 048a  Radeon HD 6370M
+               1025 048b  Radeon HD 6370M
+               1025 048c  Radeon HD 6370M
+               1028 04c1  Radeon HD 6370M
+               1028 04ca  Radeon HD 6370M
+               1028 04cc  Radeon HD 6370M
+               1028 04cd  Radeon HD 6370M
+               1028 04d7  Radeon HD 6370M
+               103c 1411  Radeon HD 6370M
+               103c 1421  Radeon HD 6370M
+               103c 1426  Radeon HD 6370M
+               103c 1428  Radeon HD 6370M
+               103c 142a  Radeon HD 6370M
+               103c 142b  Radeon HD 6370M
+               103c 143a  Radeon HD 6370M
+               103c 143c  Radeon HD 6370M
+               103c 1445  Radeon HD 6370M
+               103c 162c  Radeon HD 6370M
+               103c 162d  Radeon HD 6370M
+               103c 162e  Radeon HD 6370M
+               103c 162f  Radeon HD 6370M
+               103c 1639  Radeon HD 6370M
+               103c 163a  Radeon HD 6370M
+               103c 163b  Radeon HD 6370M
+               103c 163c  Radeon HD 6370M
+               103c 163d  Radeon HD 6370M
+               103c 163e  Radeon HD 6370M
+               103c 163f  Radeon HD 6370M
+               103c 1641  Radeon HD 6370M
+               103c 1643  Radeon HD 6370M
+               103c 3578  Radeon HD 6370M
+               103c 357a  Radeon HD 6370M
+               103c 3673  Radeon HD 6370M
+               103c 3675  Radeon HD 6370M
+               1043 1c92  Radeon HD 6370M
+               1043 84a1  Radeon HD 6370M
+               1043 84ad  Radeon HD 6370M
+               104d 9081  Radeon HD 6370M
+               1545 7350  Cedar [Radeon HD 7350]
+               1558 4510  Radeon HD 6370M
+               1558 5505  Radeon HD 6370M
+               174b 5450  Cedar [Radeon HD 5450]
+               17aa 21dd  Radeon HD 6370M
+               17aa 21e9  Radeon HD 6370M
+               17aa 3971  Radeon HD 6370M
+               17aa 3972  Radeon HD 7370M
+               17aa 397a  Radeon HD 6370M/7370M
+               17aa 397b  Radeon HD 6370M/7370M
+               17aa 397f  Radeon HD 7370M
        68e5  Robson LE [Radeon HD 6330M]
-               148c 7350  Radeon HD 7350
+               1179 fd3c  Radeon HD 6330M
+               1179 fd50  Radeon HD 6330M
+               1179 fd52  Radeon HD 6330M
+               1179 fd63  Radeon HD 6330M
+               1179 fd65  Radeon HD 6330M
+               1179 fd73  Radeon HD 6330M
+               1179 fd75  Radeon HD 6330M
+               1179 fdd0  Radeon HD 6330M
+               1179 fdd2  Radeon HD 6330M
+               1179 fdea  Radeon HD 6330M
+               1179 fdf8  Radeon HD 6330M
+               148c 5450  Cedar [Radeon HD 5450]
+               148c 6350  Cedar [Radeon HD 6350]
+               148c 7350  Cedar [Radeon HD 7350]
+               148c 8350  Cedar [Radeon HD 8350]
+               1545 7350  Cedar [Radeon HD 7350]
        68e8  Cedar
        68e9  Cedar [ATI FirePro (FireGL) Graphics Adapter]
        68f1  Cedar GL [FirePro 2460]
        68f2  Cedar GL [FirePro 2270]
        68f8  Cedar [Radeon HD 7300 Series]
-       68f9  Cedar [Radeon HD 5000/6000/7350 Series]
+       68f9  Cedar [Radeon HD 5000/6000/7350/8350 Series]
                1019 0001  Radeon HD 5450
+               1019 0002  Radeon HD 5450
                1019 0019  Radeon HD 6350
+               1025 0518  Radeon HD 5450
+               1025 0519  Radeon HD 5450
                1028 010e  XPS 8300
+               1028 2126  Radeon HD 6350
+               103c 2126  Radeon HD 6350
+               103c 2aac  Radeon HD 5450
+               103c 2aae  Radeon HD 5450
+               103c 3580  Radeon HD 5450
+               1043 0386  Radeon HD 5450
                1043 03c2  EAH5450 SILENT/DI/512MD2 (LP)
+               1462 2130  Radeon HD 5450
+               1462 2131  Radeon HD 5450
+               1462 2133  Radeon HD 6350
+               1462 2180  Radeon HD 5450
+               1462 2181  Radeon HD 5450
+               1462 2182  Radeon HD 6350
+               1462 2183  Radeon HD 6350
+               1462 2230  Radeon HD 5450
+               1462 2231  Radeon HD 5450
+               1462 2495  Radeon HD 6350
                148c 3001  Radeon HD 5530/6250
                148c 3002  Radeon HD 6290
                148c 3003  Radeon HD 6230
                148c 3004  Radeon HD 6350
                148c 7350  Radeon HD 7350
+               148c 8350  Radeon HD 8350
+               1545 7350  Radeon HD 7350
+               1642 3983  Radeon HD 5450
+               1642 3984  Radeon HD 6350
+               1642 3987  Radeon HD 6350
+               1642 3997  Radeon HD 5450
+               1642 3a05  Radeon HD 5450
+               1642 3b31  Radeon HD 6350A
+               1682 3270  Radeon HD 7350
+               174b 3000  Radeon HD 6230
+               174b 3987  Radeon HD 6350
                174b 5470  Radeon HD 5470
                174b 5490  Radeon HD 5490
                174b 5530  Radeon HD 5530
+               174b 6230  Radeon HD 6230
+               174b 6250  Radeon HD 6250
+               174b 6290  Radeon HD 6290
+               174b 6350  Radeon HD 6350
+               174b 7350  Radeon HD 7350
+               174b 8350  Radeon HD 8350
+               174b e127  Radeon HD 5450
+               174b e145  Radeon HD 5450
+               174b e153  Radeon HD 5450
+               1787 3000  Radeon HD 5470
+               1787 3001  Radeon HD 5530
+               1787 3002  Radeon HD 5490
+               17aa 3602  Radeon HD 5450
+               17aa 3603  Radeon HD 5450
+               17aa 360f  Radeon HD 5450
+               17aa 3619  Radeon HD 5450
+               17af 3000  Radeon HD 6250
+               17af 3001  Radeon HD 6230
+               17af 3002  Radeon HD 6290
+               17af 3011  Radeon HD 5470
+               17af 3012  Radeon HD 5490
+               17af 3013  Radeon HD 5470
+               17af 3014  Radeon HD 6350
+       68fa  Cedar [Radeon HD 7350/8350 / R5 220]
+               1019 0019  Radeon HD 7350
+               1019 0021  Radeon HD 7350
+               1019 0022  Radeon HD 7350
+               1019 0026  Radeon HD 8350
+               103c 2adf  Radeon HD 7350A
+               103c 2ae8  Radeon HD 7350A
+               1043 8350  Radeon HD 8350
+               1462 2128  Radeon HD 7350
+               1462 2184  Radeon HD 7350
+               1462 2186  Radeon HD 7350
+               1462 2495  Radeon HD 7350
+               1462 b490  Radeon HD 7350
+               1642 3985  Radeon HD 7350
+               174b 3510  Radeon HD 8350
+               174b 3521  Radeon R5 220
+               174b 3522  Radeon R5 220
                174b 7350  Radeon HD 7350
-       68fa  Cedar [Radeon HD 7350]
+               174b 8153  Radeon HD 8350
+               174b e127  Radeon HD 7350
+               174b e153  Radeon HD 7350
+               174b e180  Radeon HD 7350
                17af 3015  Radeon HD 7350
        68fe  Cedar LE
+       6900  Topaz XT [Radeon R7 M260]
+       6901  Topaz PRO [Radeon R5 M255]
+       6920  Tonga
        700f  RS100 AGP Bridge
        7010  RS200/RS250 AGP Bridge
        7100  R520 [Radeon X1800 XT]
        9441  R700 [Radeon HD 4870 X2]
        9442  RV770 [Radeon HD 4850]
                1002 0502  MSI Radeon HD 4850 512MB GDDR3
-               174b e810  Sapphire Radeon HD 4850 512MB GDDR3
+               174b e810  Radeon HD 4850 512MB GDDR3
        9443  R700 [Radeon HD 4850 X2]
        9444  RV770 GL [FirePro V8750]
        9446  RV770 GL [FirePro V7760]
        944b  RV770/M98 [Mobility Radeon HD 4850 X2]
        944c  RV770 LE [Radeon HD 4830]
        944e  RV770 CE [Radeon HD 4710]
-               174b 3261  Sapphire Radeon HD 4810
+               174b 3261  Radeon HD 4810
        9450  RV770 GL [FireStream 9270]
        9452  RV770 GL [FireStream 9250]
        9456  RV770 GL [FirePro V8700]
        9462  RV790 [Radeon HD 4860]
        946a  RV770 GL [FirePro M7750]
        9480  RV730/M96 [Mobility Radeon HD 4650/5165]
-               103c 3628  ATI Mobility Radeon HD 4650 [dv6-1190en]
+               103c 3628  Mobility Radeon HD 4650 [dv6-1190en]
        9488  RV730/M96-XT [Mobility Radeon HD 4670]
        9489  RV730/M96 GL [Mobility FireGL V5725]
        9490  RV730 XT [Radeon HD 4670]
-               174b e880  Radeon HD 4670 512MB DDR3
+               174b e880  Radeon HD 4670 512MB GDDR3 Dual DVI-I/TVO
        9491  RV730/M96-CSP [Radeon E4690]
        9495  RV730 [Radeon HD 4600 AGP Series]
                1002 0028  Radeon HD 4650/4670 AGP
                1028 0d02  Optiplex 755
        94c3  RV610 [Radeon HD 2400 PRO]
                1028 0302  Radeon HD 2400 Pro
-               174b e400  Sapphire Radeon HD 2400 PRO
-               18bc 3550  GeCube Radeon HD 2400 PRO
+               174b e400  Radeon HD 2400 PRO
+               18bc 3550  Radeon HD 2400 PRO
        94c4  RV610 LE [Radeon HD 2400 PRO AGP]
        94c5  RV610 [Radeon HD 2400 LE]
        94c7  RV610 [Radeon HD 2350]
        94cc  RV610 LE [Radeon HD 2400 PRO PCI]
        9500  RV670 [Radeon HD 3850 X2]
        9501  RV670 [Radeon HD 3870]
-               174b e620  Sapphire Radeon HD 3870 PCIe 2.0
+               174b e620  Radeon HD 3870
        9504  RV670/M88 [Mobility Radeon HD 3850]
        9505  RV670 [Radeon HD 3690/3850]
                148c 3000  Radeon HD 3850
 # 113-2E172001-003
                174b 3000  Radeon HD 4350/4550 HyperMemory DDR2
        9553  RV710/M92 [Mobility Radeon HD 4530/4570/545v]
+               1025 015e  Mobility Radeon HD 4570
+               1025 017d  Mobility Radeon HD 4570
+               1025 0205  Mobility Radeon HD 4570
+               1025 0206  Mobility Radeon HD 4570
+               1025 0237  Mobility Radeon HD 4570
+               1028 02be  Mobility Radeon HD 4570
+               1028 02e8  Mobility Radeon HD 4530
+               103c 3624  Mobility Radeon HD 4530
+               103c 3628  Mobility Radeon HD 4530
+               103c 3636  Mobility Radeon HD 4530
+               1043 1b32  Mobility Radeon HD 4570
+               1043 1b42  Mobility Radeon HD 4570
+               104d 9056  Mobility Radeon HD 4570
                1179 ff82  Satellite L505-13T GPU (Mobility Radeon HD 5145)
        9555  RV710/M92 [Mobility Radeon HD 4350/4550]
                103c 1411  ProBook 4720s GPU (Mobility Radeon HD 4350)
                1043 843e  M5A88-V EVO
 # Radeon HD 6250 too?
        9802  Wrestler [Radeon HD 6310]
-               174b 1001  Sapphire PURE Fusion Mini
+               174b 1001  PURE Fusion Mini
        9803  Wrestler [Radeon HD 6310]
        9804  Wrestler [Radeon HD 6250]
        9805  Wrestler [Radeon HD 6250]
        9808  Wrestler [Radeon HD 7340]
        9809  Wrestler [Radeon HD 7310]
        980a  Wrestler [Radeon HD 7290]
-       9830  Kabini [Radeon HD 8400]
+       9830  Kabini [Radeon HD 8400 / R3 Series]
        9831  Kabini [Radeon HD 8400E]
        9832  Kabini [Radeon HD 8330]
        9833  Kabini [Radeon HD 8330E]
        9834  Kabini [Radeon HD 8210]
        9835  Kabini [Radeon HD 8310E]
-       9836  Kabini [Radeon HD 8280]
+       9836  Kabini [Radeon HD 8280 / R3 Series]
        9837  Kabini [Radeon HD 8280E]
-       9838  Kabini [Radeon HD 8240]
+       9838  Kabini [Radeon HD 8240 / R3 Series]
        9839  Kabini [Radeon HD 8180]
        983a  Kabini
        983b  Kabini
        983c  Kabini
-       983d  Kabini [Radeon HD 8250]
+       983d  Temash [Radeon HD 8250/8280G]
        983e  Kabini
        983f  Kabini
+       9850  Mullins [Radeon APU A6-6200 with R3 Graphics]
+       9851  Mullins [Radeon APU A4-6000 with R2 Graphics]
+       9852  Mullins [Radeon APU A4-6000 with R2 Graphics]
+       9853  Mullins [Radeon APU E2-4000 with R2 Graphics]
+       9854  Mullins [Radeon APU E2-3700 with R2 Graphics]
+       9855  Mullins [Radeon APU XX-2450M with R3 Graphics]
+       9856  Mullins [Radeon APU XX-2200M with R2 Graphics]
+       9857  Mullins [Radeon APU XX-2200M with R2 Graphics]
+       9858  Mullins
+       9859  Mullins
+       985a  Mullins
+       985b  Mullins
+       985c  Mullins
+       985d  Mullins
+       985e  Mullins
+       985f  Mullins
+       9900  Trinity [Radeon HD 7660G]
 # AMD A10-5800K CPU
        9901  Trinity [Radeon HD 7660D]
        9902  Trinity HDMI Audio Controller
+               103c 194e  ProBook 455 G1 Notebook
        9903  Trinity [Radeon HD 7640G]
+               103c 194e  ProBook 455 G1 Notebook
+               103c 1952  ProBook 455 G1 Notebook
        9904  Trinity [Radeon HD 7560D]
        9905  Trinity [FirePro A300 Series Graphics]
        9906  Trinity [FirePro A300 Series Graphics]
        999a  Richland [Radeon HD 8410G]
        999b  Richland [Radeon HD 8310G]
        999c  Richland
-       999d  Richland
+# AMD Quad-Core A8-Series APU A8-6500T with Radeon HD 8550D
+       999d  Richland [Radeon HD 8550D]
        99a0  Trinity [Radeon HD 7520G]
        99a2  Trinity [Radeon HD 7420G]
        99a4  Trinity [Radeon HD 7400G]
        aa00  R600 HDMI Audio [Radeon HD 2900 Series]
        aa08  RV630 HDMI Audio [Radeon HD 2600 Series]
        aa10  RV610 HDMI Audio [Radeon HD 2350/2400 Series]
-               174b aa10  Sapphire HD 2400 PRO audio device
-               18bc aa10  GeCube Radeon HD 2400 PRO HDCP-capable digital-only audio device
+               174b aa10  Radeon HD 2400 PRO
+               18bc aa10  Radeon HD 2400 PRO
        aa18  RV670/680 HDMI Audio [Radeon HD 3690/3800 Series]
        aa20  RV635 HDMI Audio [Radeon HD 3600 Series]
        aa28  RV620 HDMI Audio [Radeon HD 3400 Series]
        aa30  RV770 HDMI Audio [Radeon HD 4850/4870]
-               174b aa30  Sapphire HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink
+               174b aa30  Radeon HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink
        aa38  RV710/730 HDMI Audio [Radeon HD 4000 series]
-               103c 3628  ATI RV710/730 [dv6-1190en]
-               174b aa38  R700 Audio Device [Radeon HD 4000 Series]
+               103c 3628  dv6-1190en
        aa50  Cypress HDMI Audio [Radeon HD 5800 Series]
        aa58  Juniper HDMI Audio [Radeon HD 5700 Series]
 # 5500, 5600 and mobile 5700 series
        aa90  Turks/Whistler HDMI Audio [Radeon HD 6000 Series]
                1028 04a3  Precision M4600
        aa98  Caicos HDMI Audio [Radeon HD 6400 Series]
-               174b aa98  Sapphire HD 6450 1GB DDR3
+               174b aa98  Radeon HD 6450 1GB DDR3
        aaa0  Tahiti XT HDMI Audio [Radeon HD 7970 Series]
        aab0  Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series]
        ac00  Theater 600 Pro
                2646 0001  KNE100TX Fast Ethernet
        000a  21230 Video Codec
        000d  PBXGB [TGA2]
-       000f  PCI-to-PDQ Interface Chip [PFI]
+       000f  DEFPA FDDI PCI-to-PDQ Interface Chip [PFI]
                1011 def1  FDDI controller (DEFPA)
                103c def1  FDDI controller (3X-DEFPA)
        0014  DECchip 21041 [Tulip Pass 3]
                1186 1101  DFE-500TX Fast Ethernet
                1186 1102  DFE-500TX Fast Ethernet
                1186 1112  DFE-570TX Quad Fast Ethernet
+               11f0 4235  21143 [FASTLine-II UTP 10/100]
                1259 2800  AT-2800Tx Fast Ethernet
                1266 0004  Eagle Fast EtherMAX
                12af 0019  NetFlyer Cardbus Fast Ethernet
        00ac  GD 5436 [Alpine]
        00b0  GD 5440
        00b8  GD 5446
+               1af4 1100  QEMU Virtual Machine
        00bc  GD 5480
                1013 00bc  CL-GD5480
        00d0  GD 5462
                1014 035d  PCIe3 1.8GB Cache RAID SAS Adapter Quad-port 6GB (57C8)
                1014 035e  PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57CE)
                1014 03fb  PCIe3 28GB Cache RAID SAS Enclosure 6Gb x 16 (57D5)
+               1014 03fe  PCIe3 x8 Cache SAS RAID Internal Adapter 6Gb (57D8)
+               1014 03ff  PCIe3 x8 SAS RAID Internal Adapter 6Gb (57D7)
+               1014 0474  PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57EB)
+               1014 0475  PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EC)
+               1014 0499  PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57ED)
+               1014 049a  PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EE)
+               1014 04c7  PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCA)
+               1014 04c8  PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CD2)
+               1014 0c49  PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD)
+       04aa  Flash Adapter 90 (PCIe2 0.9TB)
        3022  QLA3022 Network Adapter
        4022  QLA3022 Network Adapter
        ffff  MPIC-2 interrupt controller
                1028 0493  PowerEdge RAID Controller 3/DC
                1028 0511  PowerEdge Cost Effective RAID Controller ATA100/4Ch
                103c 60e7  NetRAID-1M
+               103c 60e8  NetRaid 2M [AMI MegaRaid 493]
        9010  MegaRAID 428 Ultra RAID Controller
        9030  EIDE Controller
        9031  EIDE Controller
        1417  Family 15h (Models 10h-1fh) Processor Root Port
        1418  Family 15h (Models 10h-1fh) Processor Root Port
        1419  Family 15h (Models 10h-1fh) I/O Memory Management Unit
+       141a  Family 15h (Models 30h-3fh) Processor Function 0
+       141b  Family 15h (Models 30h-3fh) Processor Function 1
+       141c  Family 15h (Models 30h-3fh) Processor Function 2
+       141d  Family 15h (Models 30h-3fh) Processor Function 3
+       141e  Family 15h (Models 30h-3fh) Processor Function 4
+       141f  Family 15h (Models 30h-3fh) Processor Function 5
+       1422  Family 15h (Models 30h-3fh) Processor Root Complex
+       1423  Family 15h (Models 30h-3fh) I/O Memory Management Unit
+       1426  Family 15h (Models 30h-3fh) Processor Root Port
        1439  Family 16h Processor Functions 5:1
        1510  Family 14h Processor Root Complex
-               174b 1001  Sapphire PURE Fusion Mini
+               174b 1001  PURE Fusion Mini
        1512  Family 14h Processor Root Port
-               174b 1001  Sapphire PURE Fusion Mini
        1513  Family 14h Processor Root Port
        1514  Family 14h Processor Root Port
        1515  Family 14h Processor Root Port
                1668 0299  ActionLink Home Network Adapter
        2003  Am 1771 MBW [Alchemy]
        2020  53c974 [PCscsi]
+               1af4 1100  QEMU Virtual Machine
        2040  79c974
        2080  CS5536 [Geode companion] Host Bridge
        2081  Geode LX Video
        7800  FCH SATA Controller [IDE mode]
        7801  FCH SATA Controller [AHCI mode]
                103c 168b  ProBook 4535s Notebook
+               103c 194e  ProBook 455 G1 Notebook
        7802  FCH SATA Controller [RAID mode]
        7803  FCH SATA Controller [RAID mode]
        7804  FCH SATA Controller [AHCI mode]
        7805  FCH SATA Controller [RAID mode]
        7806  FCH SD Flash Controller
        7807  FCH USB OHCI Controller
+               103c 194e  ProBook 455 G1 Notebook
        7808  FCH USB EHCI Controller
+               103c 194e  ProBook 455 G1 Notebook
        7809  FCH USB OHCI Controller
+               103c 194e  ProBook 455 G1 Notebook
        780b  FCH SMBus Controller
+               103c 194e  ProBook 455 G1 Notebook
        780c  FCH IDE Controller
        780d  FCH Azalia Controller
+               103c 194e  ProBook 455 G1 Notebook
+               1043 8444  F2A85-M Series
        780e  FCH LPC Bridge
+               103c 194e  ProBook 455 G1 Notebook
        780f  FCH PCI Bridge
        7812  FCH USB XHCI Controller
        7813  FCH SD Flash Controller
        7814  FCH USB XHCI Controller
+               103c 194e  ProBook 455 G1 Notebook
+       7900  FCH SATA Controller [IDE mode]
+       7901  FCH SATA Controller [AHCI mode]
+       7902  FCH SATA Controller [RAID mode]
+       7903  FCH SATA Controller [RAID mode]
+       7904  FCH SATA Controller [AHCI mode]
+       7906  FCH SD Flash Controller
+       7908  FCH USB EHCI Controller
+       790b  FCH SMBus Controller
+       790e  FCH LPC Bridge
+       790f  FCH PCI Bridge
+       7914  FCH USB XHCI Controller
        9600  RS780 Host Bridge
                1043 82f1  M3A78-EH Motherboard
        9601  RS880 Host Bridge
        9604  RS780/RS880 PCI to PCI bridge (PCIE port 0)
        9605  RS780/RS880 PCI to PCI bridge (PCIE port 1)
        9606  RS780 PCI to PCI bridge (PCIE port 2)
-       9607  RS780 PCI to PCI bridge (PCIE port 3)
+       9607  RS780/RS880 PCI to PCI bridge (PCIE port 3)
        9608  RS780/RS880 PCI to PCI bridge (PCIE port 4)
        9609  RS780/RS880 PCI to PCI bridge (PCIE port 5)
        960a  RS780 PCI to PCI bridge (NB-SB link)
                110a 001e  MGA-G100 AGP
        2007  MGA Mistral
        2527  Millennium G550
+# PCI\VEN_102B&DEV_2527&SUBSYS_0F42102B&REV_01
+               102b 0f42  Matrox G550 Low Profile PCI
                102b 0f83  Millennium G550
                102b 0f84  Millennium G550 Dual Head DDR 32Mb
                102b 1e41  Millennium G550
        47c2  Solios COM port
        4949  Radient frame grabber family
                102b 0010  Radient eCL (Single-full) frame grabber
+               102b 0011  Radient eCLV (Single-full) frame grabber
                102b 0020  Radient eCL (Dual-base) frame grabber
                102b 0030  Radient eCL (Dual-full) frame grabber
                102b 0040  Radient eCL (Quad-base) frame grabber
                102b 0050  Radient eCL (Golden) frame grabber
+               102b 1010  Radient eV-CXP (quad CXP-6) frame grabber
+               102b 1015  Radient eV-CXP (dual CXP-6) frame grabber
+               102b 1020  Radient eV-CXP (quad CXP-3) frame grabber
+               102b 1050  Radient eV-CXP (Golden) frame grabber
        4cdc  Morphis JPEG2000 accelerator
        4f54  Morphis (e)Quad frame grabber
        4fc5  Morphis (e)Dual frame grabber
                1028 04b2  Vostro 3350
                1028 04da  Vostro 3750
                1043 8413  P8P67 Deluxe Motherboard
+               1af4 1100  QEMU Virtual Machine
                1b96 0001  USB 3.0 PCIe Card
        01e7  uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller
        01f2  uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller
        3238  Smart Array E200i (SAS Controller)
                103c 3211  Smart Array E200i
                103c 3212  Smart Array E200
+       3239  Smart Array Gen9 Controllers
+               103c 21bd  Smart Array
+               103c 21be  Smart Array
+               103c 21bf  Smart Array
+               103c 21c0  Smart Array
+               103c 21c1  Smart Array
+               103c 21c2  Smart Array
+               103c 21c3  Smart Array
+               103c 21c4  Smart Array
+               103c 21c5  Smart Array
+               103c 21c6  Smart Array
+               103c 21c7  Smart Array
+               103c 21c8  Smart Array
+               103c 21c9  Smart Array
+               103c 21ca  Smart Array
+               103c 21cb  Smart Array
+               103c 21cc  Smart Array
+               103c 21cd  Smart Array
+               103c 21ce  Smart Array
        323a  Smart Array G6 controllers
                103c 3241  Smart Array P212
                103c 3243  Smart Array P410
                103c 3352  P421
                103c 3354  P420i
                103c 3355  P220i
-# New Smart Array controllers for Gen8+ servers
        323c  Smart Array Gen8+ Controllers
-               103c 1920  Smart Array
-               103c 1921  Smart Array
-               103c 1922  Smart Array
-               103c 1923  Smart Array
-               103c 1924  Smart Array
+               103c 1920  P430i
+               103c 1921  P830i
+               103c 1922  P430
+               103c 1923  P431
+               103c 1924  P830
                103c 1925  Smart Array
-               103c 1926  Smart Array
-               103c 1927  Smart Array
-               103c 1928  Smart Array
+               103c 1926  P731m
+               103c 1928  P230i
        3300  Integrated Lights-Out Standard Virtual USB Controller
                103c 3304  iLO2
                103c 3305  iLO2
        4031  zx2 I/O Controller
        4037  PCIe Local Bus Adapter
        403b  PCIe Root Port
-       60e8  NetRAID-2M : ZX1/M (OEM AMI MegaRAID 493)
 103e  Solliday Engineering
 103f  Synopsys/Logic Modeling Group
 1040  Accelgraphics Inc.
        0009  STG 1764X
        0010  STG4000 [3D Prophet Kyro Series]
                104a 4018  ST PowerVR Kyro (64MB AGP TVO)
+# 64MB AGP
+               1681 0010  PowerVR Kyro II [3D Prophet 4500]
                1681 0028  3D Prophet 4000XT
                1681 c010  3D Prophet 4500 TV-Out
                1681 c069  3D Prophet 4000XT
        8022  TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx]
                104c 8023  TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
        8023  TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx]
+               1028 0168  Precision Workstation 670 Mainboard
                103c 088c  NC8000 laptop
-               1043 808b  K8N4-E Mainboard
+               1043 808b  K8N4/A8N Series Mainboard
                1043 815b  P5W DH Deluxe Motherboard
                1443 8023  FireCard400
                8086 5044  Desktop Board DP35DP
                103c 30aa  nc6310
        8101  TSB43DB42 IEEE-1394a-2000 Controller (PHY/Link)
        8201  PCI1620 Firmware Loading Function
-       8204  PCI7410,7510,7610 PCI Firmware Loading Function
+       8204  PCI7410/7510/7610 PCI Firmware Loading Function
                1028 0139  Latitude D400
                1028 014e  Latitude D800
        8231  XIO2000(A)/XIO2200A PCI Express-to-PCI Bridge
                1028 014e  Latitude D800
        ac48  PCI7610 PC Card Cardbus Controller
        ac49  PCI7410 PC Card Cardbus Controller
-       ac4a  PCI7510,7610 PC card Cardbus Controller
+       ac4a  PCI7510/7610 CardBus Bridge
                1028 0139  Latitude D400
                1028 014e  Latitude D800
        ac4b  PCI7610 SD/MMC controller
        ac8d  PCI 7620
        ac8e  PCI7420 CardBus Controller
                1028 018d  Inspiron 700m/710m
-       ac8f  PCI7420/7620 Combo CardBus, 1394a-2000 OHCI and SD/MS-Pro Controller
+       ac8f  PCI7420/7620 SD/MS-Pro Controller
                1028 018d  Inspiron 700m/710m
        b001  TMS320C6424
        fe00  FireWire Host Controller
        3020  FIVE-EX based Fibre Channel to PCIe HBA
        302c  M001 PCI Express Switch Upstream Port
        302d  M001 PCI Express Switch Downstream Port
+       3070  Hitachi FIVE-FX Fibre Channel to PCIe HBA
        3505  SH7751 PCI Controller (PCIC)
        350e  SH7751R PCI Controller (PCIC)
 1055  Efar Microsystems
        003b  UniNorth/Intrepid ATA/100
        003e  KeyLargo/Intrepid Mac I/O
        003f  KeyLargo/Intrepid USB
+               1af4 1100  QEMU Virtual Machine
        0040  K2 KeyLargo USB
        0041  K2 KeyLargo Mac/IO
        0042  K2 FireWire
                103c 12d7  4Gb Fibre Channel [AB379A]
                103c 12dd  4Gb Fibre Channel [AB429A]
        2432  ISP2432-based 4Gb Fibre Channel to PCI Express HBA
+               103c 7040  FC1142SR 4Gb 1-port PCIe Fibre Channel Host Bus Adapter [HPAE311A]
        2532  ISP2532-based 8Gb Fibre Channel to PCI Express HBA
+               103c 3262  StorageWorks 81Q
                1077 0167  QME2572 Dual Port FC8 HBA Mezzanine
        3022  ISP4022-based Ethernet NIC
        3032  ISP4032-based Ethernet IPv6 NIC
                1077 0246  8300 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking)
        8031  8300 Series 10GbE Converged Network Adapter (FCoE)
        8032  8300 Series 10GbE Converged Network Adapter (iSCSI)
+       8430  ISP8324 1/10GbE Converged Network Controller (NIC VF)
+       8431  8300 Series 10GbE Converged Network Adapter (FCoE VF)
        8432  ISP2432M-based 10GbE Converged Network Adapter (CNA)
 1078  Cyrix Corporation
        0000  5510 [Grappa]
 1083  Forex Computer Corporation
        0001  FR710
 1084  Parador
-1085  Tulip Computers Int.B.V.
 1086  J. Bond Computer Systems
 1087  Cache Computer
 1088  Microcomputer Systems (M) Son
 108d  Olicom
        0001  Token-Ring 16/4 PCI Adapter (3136/3137)
        0002  16/4 Token Ring
-       0004  RapidFire 3139 Token-Ring 16/4 PCI Adapter
+       0004  RapidFire OC-3139/3140 Token-Ring 16/4 PCI Adapter
                108d 0004  OC-3139/3140 RapidFire Token-Ring 16/4 Adapter
        0005  GoCard 3250 Token-Ring 16/4 CardBus PC Card
        0006  OC-3530 RapidFire Token-Ring 100
        2880  DAQCard-6601
        2890  PCI-6036E
        28c0  PCI-6014
+       28d0  PCI-5122
+       28e0  PXI-5122
        2a60  PCI-6023E
        2a70  PCI-6024E
        2a80  PCI-6025E
        2ca0  PCI-6034E
        2cc0  PXI-6608
        2db0  PCI-6608
+       702c  PXI-7831R
+       702d  PCI-7831R
+       702e  PXI-7811R
+       702f  PCI-7811R
+       7055  PXI-7830R
+       7056  PCI-7830R
+       7074  PXI-7833R
+       7083  PCI-7833R
 # Low-Cost, High-Current, 96 Ch, 5 V TTL/CMOS Digital I/O
        7085  PCI-6509
        70a9  PCI-6528 (Digital I/O at 60V)
        70bd  PCI-6281
        70bf  PXI-6281
        70c0  PCI-6143
+       70f0  PXI-5922
+       70f1  PCI-5922
        70f2  PCI-6224
+       7121  PXI-5122EX
+       7122  PCI-5122EX
        7144  PXI-5124 (12-bit 200 MS/s Digitizer)
+       7145  PCI-5124
+       714c  PXI-5114
+       714d  PCI-5114
+       7152  PCI-5640R
        716c  PCI-6225
        717d  PCIE-6251
        717f  PCIe-6259
+       7193  PXI-7813R
+       7194  PCI-7813R
        71bc  PCI-6221 (37pin)
        71d0  PXI-6143
+       71dc  PCI-1588
+       7260  PXI-5142
+       7261  PCI-5142
+       72a8  PXI-5152
+       72a9  PCI-5152
+       72aa  PXI-5105
+       72ab  PCI-5105
+       72b8  PXI-6682
+       730f  PXI-5922EX
+       7310  PCI-5922EX
+       7333  PXI-5900
+       7349  PXI-5154
+       734a  PCI-5154
+       737d  PXI-5124EX
+       7384  PXI-7851R
+       7385  PXI-7852R
+       7386  PCIe-7851R
+       7387  PCIe-7852R
+       7390  PXI-7841R
+       7391  PXI-7842R
+       7392  PXI-7853R
+       7393  PCIe-7841R
+       7394  PCIe-7842R
+       73a5  PXIe-5641R
+       73d5  PXI-7951R
+       73d6  PXI-7952R
+       73d7  PXI-7953R
+       73e1  PXI-7854R
+       73ec  PXI-7954R
+       73f0  PXI-5153
+       73f1  PCI-5153
+       7405  PXIe-6674T
+       745e  PXI-5153EX
+       745f  PCI-5153EX
+       7460  PXI-5154EX
+       7461  PCI-5154EX
+       7539  NI 9157
+       753a  NI 9159
+       75e5  PXI-6683
+       75e6  PXI-6683H
+       7626  NI 9154
+       7627  NI 9155
        b001  IMAQ-PCI-1408
        b011  IMAQ-PXI-1408
        b021  IMAQ-PCI-1424
        b071  IMAQ-PCI-1422
        b081  IMAQ-PXI-1422
        b091  IMAQ-PXI-1411
-       c4c4  PXIe-4353
+       c4c4  PXIe/PCIe Device
+               1093 74b2  PXIe-4353
+               1093 74d0  PXIe-7961R
+               1093 74e2  PXIe-7962R
+               1093 74e3  PXIe-7965R
+               1093 7553  PCIe-1473R
+               1093 75ce  PXIe-7966R
+               1093 76b7  PXIe-7975R
+               1093 76d0  PXIe-5160
        c801  PCI-GPIB
        c831  PCI-GPIB bridge
 1094  First International Computers [FIC]
                1095 6112  SiI 3112 SATARaid Controller
                9005 0250  SATAConnect 1205SA Host Controller
        3114  SiI 3114 [SATALink/SATARaid] Serial ATA Controller
+               1043 8167  A8N-SLI Deluxe/Premium Mainboard
                1095 3114  SiI 3114 SATALink Controller
                1095 6114  SiI 3114 SATARaid Controller
        3124  SiI 3124 PCI-X Serial ATA Controller
                1852 1852  FlyVideo'98 - Video (with FM Tuner)
                18ac d500  DViCO FusionHDTV5 Lite
                270f fc00  Digitop DTT-1000
+# Vendor/ID appear to be randomly chosen
+               aa00 1460  Spectra8 CardA Input0
+# Vendor/ID appear to be randomly chosen
+               aa01 1461  Spectra8 CardA Input1
+# Vendor/ID appear to be randomly chosen
+               aa02 1462  Spectra8 CardA Input2
+# Vendor/ID appear to be randomly chosen
+               aa03 1463  Spectra8 CardA Input3
+# Vendor/ID appear to be randomly chosen
+               aa04 1464  Spectra8 CardB Input0
+# Vendor/ID appear to be randomly chosen
+               aa05 1465  Spectra8 CardB Input1
+# Vendor/ID appear to be randomly chosen
+               aa06 1466  Spectra8 CardB Input2
+# Vendor/ID appear to be randomly chosen
+               aa07 1467  Spectra8 CardB Input3
+# Vendor/ID appear to be randomly chosen
+               aa08 1468  Spectra8 CardC Input0
+# Vendor/ID appear to be randomly chosen
+               aa09 1469  Spectra8 CardC Input1
+# Vendor/ID appear to be randomly chosen
+               aa0a 146a  Spectra8 CardC Input2
+# Vendor/ID appear to be randomly chosen
+               aa0b 146b  Spectra8 CardC Input3
+# Vendor/ID appear to be randomly chosen
+               aa0c 146c  Spectra8 CardD Input0
+# Vendor/ID appear to be randomly chosen
+               aa0d 146d  Spectra8 CardD Input1
+# Vendor/ID appear to be randomly chosen
+               aa0e 146e  Spectra8 CardD Input2
+# Vendor/ID appear to be randomly chosen
+               aa0f 146f  Spectra8 CardD Input3
                bd11 1200  PCTV pro (TV + FM stereo receiver)
        036f  Bt879 Video Capture
                127a 0044  Bt879 Video Capture NTSC
        4002  TIO-CE PCI Express Port
        8001  O2 1394
        8002  G-net NT
+# PCIe x1 Low Profile
+       802b  REACT external interrupt controller
 10aa  ACC Microelectronics
        0000  ACCM 2188
        2051  2051 CPU bridge
        8718  PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch
        8732  PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch
        8734  PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch
+       8747  PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch
 # This is the Non-Transparent-Bridge Virtualized Port as presented by the PLX PEX 8732 chip, the physical bridges show up at 10b5:8732
        87b0  PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch
        9016  PLX 9016 8-port serial controller
                10b6 0007  Presto PCI
        0009  Smart 100/16/4 PCI-HS Ringnode
                10b6 0009  Smart 100/16/4 PCI-HS Ringnode
-       000a  Smart 100/16/4 PCI Ringnode
-               10b6 000a  Smart 100/16/4 PCI Ringnode
+       000a  Token Ring 100/16/4 Ringnode/Ringrunner
+               10b6 000a  Token Ring 100/16/4 Ringnode/Ringrunner
        000b  16/4 CardBus Adapter Mk2
                10b6 0008  16/4 CardBus Adapter Mk2
                10b6 000b  16/4 Cardbus Adapter Mk2
        1001  Collage 155 ATM Server Adapter
 10b7  3Com Corporation
        0001  3c985 1000BaseSX (SX/TX)
+# wrong ID?
+               9850 0001  3c985B-SX
        0013  AR5212 802.11abg NIC (3CRDAG675)
                10b7 2031  3CRDAG675 11a/b/g Wireless PCI Adapter
        0910  3C910-A01
        1681  M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR]
        1687  M1687 K8 Northbridge [AGP8X and HyperTransport]
        1689  M1689 K8 Northbridge [Super K8 Single Chip]
-       1695  M1695 K8 Northbridge [PCI Express and HyperTransport]
+       1695  M1695 Host Bridge
        1697  M1697 HTT Host Bridge
        3141  M3141
        3143  M3143
        0043  NV40 [GeForce 6800 XE]
        0044  NV40 [GeForce 6800 XT]
        0045  NV40 [GeForce 6800 GT]
+               1043 817d  V9999GT
                1458 3140  GV-N68T256D
        0047  NV40 [GeForce 6800 GS]
                1682 2109  GeForce 6800 GS
        0048  NV40 [GeForce 6800 XT]
        004e  NV40GL [Quadro FX 4000]
        0050  CK804 ISA Bridge
-               1043 815a  K8N4-E or A8N-E Mainboard
+               1043 815a  K8N4/A8N Series Mainboard
                10f1 2865  Tomcat K8E (S2865)
                1458 0c11  GA-K8N Ultra-9 Mainboard
                1462 7100  MSI K8N Diamond
                1028 0225  PowerEdge T105 ISA Bridge
        0052  CK804 SMBus
                1028 0225  PowerEdge T105 SMBus
-               1043 815a  K8N4-E or A8N-E Mainboard
+               1043 815a  K8N4/A8N Series Mainboard
                10f1 2865  Tomcat K8E (S2865)
                1458 0c11  GA-K8N Ultra-9 Mainboard
                1462 7100  MSI K8N Diamond
                147b 1c1a  KN8-Ultra Mainboard
                1565 3402  NF4 AM2L Mainboard
        0053  CK804 IDE
-               1043 815a  K8N4-E or A8N-E Mainboard
+               1043 815a  K8N4/A8N Series Mainboard
                10f1 2865  Tomcat K8E (S2865)
                1458 5002  GA-K8N Ultra-9 Mainboard
                1462 7100  MSI K8N Diamond
                1565 3402  NF4 AM2L Mainboard
        0054  CK804 Serial ATA Controller
                1028 0225  PowerEdge T105 Serial ATA
-               1043 815a  A8N-E Mainboard
+               1043 815a  A8N Series Mainboard
                10f1 2865  Tomcat K8E (S2865)
                1458 b003  GA-K8N Ultra-9 Mainboard
                1462 7100  MSI K8N Diamond
                1565 5401  NF4 AM2L Mainboard
        0055  CK804 Serial ATA Controller
                1028 0225  PowerEdge T105 Serial ATA
-               1043 815a  K8N4-E or A8N-E Mainboard
+               1043 815a  K8N4/A8N Series Mainboard
                10f1 2865  Tomcat K8E (S2865)
                1458 b003  GA-K8N Ultra-9 Mainboard
                1462 7125  K8N Neo4-F mainboard
                1565 5401  NF4 AM2L Mainboard
        0056  CK804 Ethernet Controller
        0057  CK804 Ethernet Controller
-               1043 8141  K8N4-E or A8N-E Mainboard
+               1043 8141  K8N4/A8N Series Mainboard
                10de cb84  NF4 Lanparty
                10f1 2865  Tomcat K8E (S2865)
                1458 e000  GA-K8N Ultra-9 Mainboard
                1565 2501  NF4 AM2L Mainboard
        0058  CK804 AC'97 Modem
        0059  CK804 AC'97 Audio Controller
-               1043 812a  K8N4-E or A8N-E Mainboard
+               1043 812a  K8N4/A8N Series Mainboard
                10f1 2865  Tomcat K8E (S2865)
                1462 7585  K8N Neo4-F mainboard
                147b 1c1a  KN8-Ultra Mainboard
                1565 8211  NF4 AM2L Mainboard
        005a  CK804 USB Controller
                1028 0225  PowerEdge T105 onboard USB
-               1043 815a  K8N4-E or A8N-E Mainboard
+               1043 815a  K8N4/A8N Series Mainboard
                10f1 2865  Tomcat K8E (S2865)
                1458 5004  GA-K8N Ultra-9 Mainboard
                1462 7100  MSI K8N Diamond
                1565 3402  NF4 AM2L Mainboard
        005b  CK804 USB Controller
                1028 0225  PowerEdge T105 onboard USB
-               1043 815a  K8N4-E or A8N-E Mainboard
+               1043 815a  K8N4/A8N Series Mainboard
                10f1 2865  Tomcat K8E (S2865)
                1458 5004  GA-K8N Ultra-9 Mainboard
                1462 7100  MSI K8N Diamond
        005d  CK804 PCIE Bridge
        005e  CK804 Memory Controller
                1028 0225  PowerEdge T105 Memory Controller
-               1043 815a  A8N-E Mainboard
+               1043 815a  A8N Series Mainboard
                10de 005e  ECS Elitegroup NFORCE3-A939 motherboard.
                10f1 2865  Tomcat K8E (S2865)
                10f1 2891  Thunder K8SRE Mainboard
        00c8  NV41M [GeForce Go 6800]
        00c9  NV41M [GeForce Go 6800 Ultra]
        00cc  NV41GLM [Quadro FX Go1400]
-       00cd  NV41GL [Quadro FX 3450/4000 SDI]
-               10de 029b  wx4300 Workstation
+       00cd  NV42GL [Quadro FX 3450/4000 SDI]
        00ce  NV41GL [Quadro FX 1400]
        00cf  NV41
        00d0  nForce3 LPC Bridge
        0390  G73 [GeForce 7650 GS]
        0391  G73 [GeForce 7600 GT]
                1458 3427  GV-NX76T128D-RH
+               1462 0452  NX7600GT-VT2D256E
        0392  G73 [GeForce 7600 GS]
                1462 0622  NX7600GS-T2D256EH
        0393  G73 [GeForce 7300 GT]
        05e1  GT200 [GeForce GTX 280]
        05e2  GT200 [GeForce GTX 260]
        05e3  GT200b [GeForce GTX 285]
+               1682 2490  GX-285N-ZDF
        05e6  GT200b [GeForce GTX 275]
        05e7  GT200GL [Tesla C1060 / M1060]
+               10de 0595  Tesla T10 Processor
+               10de 068f  Tesla T10 Processor
+               10de 0697  Tesla M1060
+               10de 0714  Tesla M1060
+               10de 0743  Tesla M1060
        05ea  GT200 [GeForce GTX 260]
        05eb  GT200 [GeForce GTX 295]
        05ed  GT200GL [Quadro Plex 2200 D2]
        0607  G92 [GeForce GTS 240]
        0608  G92M [GeForce 9800M GTX]
        0609  G92M [GeForce 8800M GTS]
+               106b 00a7  GeForce 8800 GS
        060a  G92M [GeForce GTX 280M]
        060b  G92M [GeForce 9800M GT]
        060c  G92M [GeForce 8800M GTX]
        062c  G94M [GeForce 9800M GTS]
        062d  G94 [GeForce 9600 GT]
        062e  G94 [GeForce 9600 GT]
+               106b 0605  GeForce GT 130
        062f  G94 [GeForce 9800 S]
        0630  G94 [GeForce 9600 GT]
        0631  G94M [GeForce GTS 160M]
        0647  G96M [GeForce 9600M GT]
        0648  G96M [GeForce 9600M GS]
        0649  G96M [GeForce 9600M GT]
+               1043 202d  GeForce GT 220M
        064a  G96M [GeForce 9700M GT]
        064b  G96M [GeForce 9500M G]
        064c  G96M [GeForce 9650M GT]
        064e  G96 [GeForce 9600 GT / 9800 GT]
        0651  G96M [GeForce G 110M]
        0652  G96M [GeForce GT 130M]
+               152d 0850  GeForce GT 240M LE
        0653  G96M [GeForce GT 120M]
        0654  G96M [GeForce GT 220M]
+               1043 14a2  GeForce GT 320M
+               1043 14d2  GeForce GT 320M
        0655  G96 [GeForce GT 120]
        0656  G96 [GeForce 9650 S]
        0658  G96GL [Quadro FX 380]
        06e6  G98 [GeForce G 100]
        06e7  G98 [GeForce 9300 SE]
        06e8  G98M [GeForce 9200M GS]
+               103c 360b  GeForce 9200M GE
        06e9  G98M [GeForce 9300M GS]
                1043 19b2  U6V laptop
        06ea  G98M [Quadro NVS 150M]
        07fe  GeForce 7100/nForce 630i USB
                1019 297a  MCP73PVT-SM
                1afa 7150  JW-IN7150-HD
+       0840  C77 [GeForce 8200M]
        0844  C77 [GeForce 9100M G]
        0845  C77 [GeForce 8200M G]
        0846  C77 [GeForce 9200]
        0861  C79 [GeForce 9400]
        0862  C79 [GeForce 9400M G]
        0863  C79 [GeForce 9400M]
+               106b 00aa  MacBook5,1
        0864  C79 [GeForce 9300]
        0865  C79 [GeForce 9300/ION]
        0866  C79 [GeForce 9400M G]
+               106b 00b1  GeForce 9400M
        0867  C79 [GeForce 9400]
                106b 00ad  iMac 9,1
        0868  C79 [nForce 760i SLI]
        086c  C79 [GeForce 9300 / nForce 730i]
        086d  C79 [GeForce 9200]
        086e  C79 [GeForce 9100M G]
-       086f  C79 [GeForce 9200M G]
+       086f  MCP79 [GeForce 8200M G]
        0870  C79 [GeForce 9400M]
        0871  C79 [GeForce 9200]
        0872  C79 [GeForce G102M]
+               1043 19b4  GeForce G102M
+               1043 1aa2  GeForce G102M
+               1043 1c02  GeForce G102M
+               1043 1c42  GeForce G205M
        0873  C79 [GeForce G102M]
+               1043 19b4  GeForce G102M
+               1043 1c12  GeForce G102M
+               1043 1c52  GeForce G205M
        0874  C79 [ION]
        0876  ION VGA [GeForce 9400M]
        087a  C79 [GeForce 9400]
                19da a123  IONITX-F-E
        087e  ION LE VGA
        087f  ION LE VGA
+       08a0  MCP89 [GeForce 320M]
        08a2  MCP89 [GeForce 320M]
        08a3  MCP89 [GeForce 320M]
        08a4  MCP89 [GeForce 320M]
+       08a5  MCP89 [GeForce 320M]
        0a20  GT216 [GeForce GT 220]
                1043 8311  ENGT220/DI/1GD3(LP)/V2
        0a21  GT216M [GeForce GT 330M]
        0a72  GT218M [GeForce 310M]
        0a73  GT218M [GeForce 305M]
        0a74  GT218M [GeForce G210M]
+               1b0a 903a  GeForce G210
        0a75  GT218M [GeForce 310M]
        0a76  GT218 [ION 2]
        0a78  GT218GL [Quadro FX 380 LP]
        0a7a  GT218M [GeForce 315M]
+               104d 907e  GeForce 315M
+               1179 fc50  GeForce 315M
+               1179 fc61  GeForce 315M
+               1179 fc71  GeForce 315M
+               1179 fc90  GeForce 315M
+               1179 fcc0  GeForce 315M
+               1179 fcd0  GeForce 315M
+               1179 fce2  GeForce 315M
+               1179 fcf2  GeForce 315M
+               1179 fd16  GeForce 315M
+               1179 fd40  GeForce 315M
+               1179 fd50  GeForce 315M
+               1179 fd52  GeForce 315M
+               1179 fd61  GeForce 315M
+               1179 fd71  GeForce 315M
+               1179 fd92  GeForce 315M
+               1179 fd96  GeForce 315M
+               1179 fdd0  GeForce 315M
+               1179 fdd2  GeForce 315M
+               1179 fdfe  GeForce 315M
+               144d c0a2  GeForce 315M
+               144d c0b2  GeForce 315M
+               144d c581  GeForce 315M
+               144d c587  GeForce 315M
+               144d c588  GeForce 315M
+               144d c597  GeForce 315M
+               144d c606  GeForce 315M
+               1462 aa51  GeForce 405
+               1462 aa58  GeForce 405
+               1462 ac71  GeForce 405
+               1462 ac81  GeForce 315M
+               1462 ac82  GeForce 405
+               1462 ae33  GeForce 405
+               1642 3980  GeForce 405
+               17aa 3950  GeForce 405M
+               17aa 397d  GeForce 405M
+               1b0a 2091  GeForce 315M
+               1b0a 90b4  GeForce 405
+               1bfd 0003  GeForce 405
+               1bfd 8006  GeForce 405
+               1bfd 8007  GeForce 315M
        0a7b  GT218 [GeForce 505]
        0a7c  GT218GLM [Quadro FX 380M]
        0a80  MCP79 Host Bridge
                1043 82e8  M3N72-D
                1849 0ad4  K10N78FullHD-hSLI R3.0 AHCI Controller
        0ad8  MCP78S [GeForce 8200] SATA Controller (RAID mode)
-       0be2  High Definition Audio Controller
+       0be2  GT216 HDMI Audio Controller
                1043 8311  ENGT220/DI/1GD3(LP)/V2
        0be3  High Definition Audio Controller
                1028 040b  Latitude E6510
        0de3  GF108M [GeForce GT 635M]
        0de4  GF108 [GeForce GT 520]
        0de5  GF108 [GeForce GT 530]
+       0de7  GF108 [GeForce GT 610]
        0de8  GF108M [GeForce GT 620M]
        0de9  GF108M [GeForce GT 630M]
+               1025 0692  GeForce GT 620M
+               1025 0725  GeForce GT 620M
+               1025 0728  GeForce GT 620M
+               1025 072b  GeForce GT 620M
+               1025 072e  GeForce GT 620M
+               1025 0753  GeForce GT 620M
+               1025 0754  GeForce GT 620M
+               17aa 3977  GeForce GT 640M LE
+               1b0a 2210  GeForce GT 635M
        0dea  GF108M [GeForce 610M]
                17aa 365a  GeForce 615
                17aa 365b  GeForce 615
        0df2  GF108M [GeForce GT 435M]
        0df3  GF108M [GeForce GT 420M]
        0df4  GF108M [GeForce GT 540M]
+               152d 0952  GeForce GT 630M
+               152d 0953  GeForce GT 630M
        0df5  GF108M [GeForce GT 525M]
        0df6  GF108M [GeForce GT 550M]
        0df7  GF108M [GeForce GT 520M]
                10b0 104a  Gainward GeForce GT 610
        0e09  GF110 High Definition Audio Controller
        0e0a  GK104 HDMI Audio Controller
+       0e0b  GK106 HDMI Audio Controller
        0e0c  GF114 HDMI Audio Controller
-       0e1a  GK110 HDMI Audio [GeForce GTX Titan]
+       0e1a  GK110 HDMI Audio
        0e1b  GK107 HDMI Audio Controller
+               103c 197b  ZBook 15
                1043 8428  GTX650-DC-1GD5
        0e22  GF104 [GeForce GTX 460]
                1462 2322  N460GTX Cyclone 1GD5/OC
        0fc2  GK107 [GeForce GT 630 OEM]
        0fc6  GK107 [GeForce GTX 650]
                1043 8428  GTX650-DC-1GD5
+       0fcd  GK107M [GeForce GT 755M]
+       0fce  GK107M [GeForce GT 640M LE]
        0fd1  GK107M [GeForce GT 650M]
                1043 1597  GeForce GT 650M
                1043 15a7  GeForce GT 650M
                1043 2105  GeForce GT 650M
                1043 2141  GeForce GT 650M
        0fd2  GK107M [GeForce GT 640M]
+               1028 054f  GeForce GT 640M
+               1028 055f  GeForce GT 640M
+               1028 0595  GeForce GT 640M LE
+               1028 05b2  GeForce GT 640M LE
        0fd3  GK107M [GeForce GT 640M LE]
        0fd4  GK107M [GeForce GTX 660M]
        0fd5  GK107M [GeForce GT 650M Mac Edition]
        0fd8  GK107M [GeForce GT 640M Mac Edition]
        0fd9  GK107M [GeForce GT 645M]
        0fdf  GK107M [GeForce GT 740M]
-       0fe0  GK107M [GeForce GTX 660M OEM]
+       0fe0  GK107M [GeForce GTX 660M Mac Edition]
        0fe1  GK107M [GeForce GT 730M]
+       0fe2  GK107M [GeForce GT 745M]
        0fe3  GK107M [GeForce GT 745M]
+               17aa 3675  GeForce GT 745A
        0fe4  GK107M [GeForce GT 750M]
        0fe5  GK107 [GeForce K340 USM]
-       0fe6  GK107 [NVS K1 USM]
+       0fe6  GK107 [GRID K1 NVS USM]
+# GRID K1 USM
+       0fe7  GK107GL [GRID K100 vGPU]
+               10de 101e  GRID K100
+       0fe9  GK107M [GeForce GT 750M Mac Edition]
+       0fea  GK107M [GeForce GT 755M Mac Edition]
        0fef  GK107GL [GRID K340]
        0ff1  GK107 [NVS 1000]
        0ff2  GK107GL [GRID K1]
-       0ff5  GK107GL [Tesla K1 USM]
-       0ff7  GK107GL [Quadro K1 USM]
+       0ff5  GK107GL [GRID K1 Tesla USM]
+       0ff6  GK107GLM [Quadro K1100M]
+               103c 197b  ZBook 15
+# GRID K1 Quadro USM
+       0ff7  GK107GL [GRID K140Q vGPU]
+               10de 1037  GRID K140Q
+       0ff8  GK107GLM [Quadro K500M]
        0ff9  GK107GL [Quadro K2000D]
        0ffa  GK107GL [Quadro K600]
        0ffb  GK107GLM [Quadro K2000M]
        0ffe  GK107GL [Quadro K2000]
        0fff  GK107GL [Quadro 410]
        1003  GK110 [GeForce GTX Titan LE]
+       1004  GK110 [GeForce GTX 780]
+               3842 0784  GK110B [GeForce GTX 780 SC w/ ACX Cooler]
+               3842 1784  GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler]
+               3842 1788  GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler]
        1005  GK110 [GeForce GTX Titan]
                1043 8451  GTXTITAN-6GD5
 # Reference Model
                3842 2794  GeForce GTX Titan SC Hydro Copper
 # 06G-P4-2795-KR
                3842 2795  GeForce GTX Titan SC Hydro Copper Signature
+       1007  GK110 [GeForce GTX 780 Rev. 2]
+       1008  GK110 [GeForce GTX 780 Ti Rev. 2]
+       100a  GK110B [GeForce GTX 780 Ti]
+       100c  GK110B [GeForce GTX Titan Black]
        101f  GK110GL [Tesla K20]
        1020  GK110GL [Tesla K20X]
        1021  GK110GL [Tesla K20Xm]
        1022  GK110GL [Tesla K20c]
+       1023  GK110BGL [Tesla K40m]
+       1024  GK110BGL [Tesla K40c]
        1026  GK110GL [Tesla K20s]
+       1027  GK110BGL [Tesla K40st]
        1028  GK110GL [Tesla K20m]
+       1029  GK110BGL [Tesla K40s]
+       103a  GK110GL [Quadro K6000]
        1040  GF119 [GeForce GT 520]
        1042  GF119 [GeForce 510]
        1048  GF119 [GeForce 605]
 # 1024MB with passive cooling (heatsink)
                10b0 104a  Gainward GeForce GT 610
        104b  GF119 [GeForce GT 625 OEM]
+       104c  GF119 [GeForce GT 705]
        1050  GF119M [GeForce GT 520M]
        1051  GF119M [GeForce GT 520MX]
        1052  GF119M [GeForce GT 520M]
        1056  GF119M [NVS 4200M]
        1057  GF119M [Quadro NVS 4200M]
        1058  GF119M [GeForce 610M]
+               103c 2aed  GeForce 610
+               103c 2af1  GeForce 610
                1043 10ac  GeForce GT 610M
                1043 10bc  GeForce GT 610M
                1043 1652  GeForce GT 610M
+               17aa 367a  GeForce 610M
+               17aa 3682  GeForce 800A
+               17aa 3687  GeForce 800A
+               17aa 3692  GeForce 705A
+               17aa 3695  GeForce 800A
+               17aa a117  GeForce 610M
+       1059  GF119M [GeForce 610M]
        105a  GF119M [GeForce 610M]
                1043 2111  GeForce GT 610M
                1043 2112  GeForce GT 610M
        105b  GF119M [GeForce 705M]
+               103c 2afb  GeForce 705A
+               17aa 309d  GeForce 705A
+               17aa 30b1  GeForce 800A
+               17aa 36a1  GeForce 800A
        107c  GF119 [NVS 315]
        107d  GF119 [NVS 310]
        1080  GF110 [GeForce GTX 580]
        1091  GF110GL [Tesla M2090]
                10de 088e  Tesla X2090
                10de 0891  Tesla X2090
+               10de 0974  Tesla X2090
+               10de 098d  Tesla X2090
        1094  GF110GL [Tesla M2075]
                10de 0888  Tesla M2075
        1096  GF110GL [Tesla C2050 / C2075]
        10c3  GT218 [GeForce 8400 GS Rev. 3]
        10c5  GT218 [GeForce 405]
        10d8  GT218 [NVS 300]
-       1140  GF117M [GeForce 610M/710M / GT 620M/625M/630M/720M]
+       1140  GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M]
+               1025 0600  GeForce GT 620M
+               1025 0606  GeForce GT 620M
                1025 064a  GeForce GT 620M
                1025 064c  GeForce GT 620M
+               1025 067a  GeForce GT 620M
+               1025 0680  GeForce GT 620M
+               1025 0686  GeForce 710M
+               1025 0689  GeForce 710M
+               1025 068b  GeForce 710M
+               1025 068d  GeForce 710M
+               1025 068e  GeForce 710M
                1025 0691  GeForce 710M
+               1025 0692  GeForce GT 620M
+               1025 0694  GeForce GT 620M
+               1025 0702  GeForce GT 620M
                1025 0719  GeForce GT 620M
                1025 0725  GeForce GT 620M
+               1025 0728  GeForce GT 620M
                1025 072b  GeForce GT 620M
+               1025 072e  GeForce GT 620M
+               1025 0732  GeForce GT 620M
+               1025 0763  GeForce GT 720M
                1025 0773  GeForce 710M
+               1025 0774  GeForce 710M
+               1025 0776  GeForce GT 720M
+               1025 077a  GeForce 710M
+               1025 077b  GeForce 710M
+               1025 077c  GeForce 710M
+               1025 077d  GeForce 710M
+               1025 077e  GeForce 710M
+               1025 077f  GeForce 710M
+               1025 0781  GeForce GT 720M
+               1025 0798  GeForce GT 720M
+               1025 0799  GeForce GT 720M
+               1025 079b  GeForce GT 720M
+               1025 079c  GeForce GT 720M
+               1025 0807  GeForce GT 720M
+               1025 0821  GeForce GT 720M
+               1025 0823  GeForce GT 720M
+               1025 0830  GeForce GT 720M
+               1025 0837  GeForce GT 720M
+               1025 0841  GeForce 710M
                1028 054d  GeForce GT 630M
                1028 054e  GeForce GT 630M
                1028 0554  GeForce GT 620M
                1028 0557  GeForce GT 620M
+               1028 0562  GeForce GT 625M
                1028 0565  GeForce GT 630M
+               1028 0568  GeForce GT 630M
+               1028 0590  GeForce GT 630M
+               1028 0592  GeForce GT 625M
+               1028 0594  GeForce GT 625M
+               1028 0595  GeForce GT 625M
+               1028 05a2  GeForce GT 625M
+               1028 05b1  GeForce GT 625M
+               1028 05b3  GeForce GT 625M
+               1028 05da  GeForce GT 630M
+               1028 05de  GeForce GT 720M
+               1028 05e0  GeForce GT 720M
+               1028 05e8  GeForce GT 630M
+               1028 05f4  GeForce GT 720M
+               103c 18ef  GeForce GT 630M
+               103c 18f9  GeForce GT 630M
+               103c 18fb  GeForce GT 630M
+               103c 18fd  GeForce GT 630M
+               103c 18ff  GeForce GT 630M
+               103c 2aef  GeForce GT 720A
+               103c 2af9  GeForce 710A
                1043 10dd  NVS 5200M
                1043 10ed  NVS 5200M
                1043 11fd  GeForce GT 720M
                1043 124d  GeForce GT 720M
                1043 126d  GeForce GT 720M
+               1043 131d  GeForce GT 720M
+               1043 13fd  GeForce GT 720M
                1043 14c7  GeForce GT 720M
                1043 1507  GeForce GT 620M
+               1043 15ad  GeForce 820M
+               1043 15ed  GeForce 820M
+               1043 160d  GeForce 820M
+               1043 163d  GeForce 820M
+               1043 166d  GeForce 820M
+               1043 16cd  GeForce 820M
+               1043 16dd  GeForce 820M
+               1043 170d  GeForce 820M
                1043 2132  GeForce GT 620M
                1043 2136  NVS 5200M
                1043 21ba  GeForce GT 720M
                1043 21fa  GeForce GT 720M
                1043 220a  GeForce GT 720M
+               1043 221a  GeForce GT 720M
+               1043 223a  GeForce GT 710M
+               1043 224a  GeForce GT 710M
+               1043 227a  GeForce 820M
+               1043 228a  GeForce 820M
+               1043 8595  GeForce GT 720M
+               1072 152d  GeForce GT 720M
+               10cf 17f5  GeForce GT 720M
+               1179 fa01  GeForce 710M
+               1179 fa02  GeForce 710M
+               1179 fa03  GeForce 710M
+               1179 fa05  GeForce 710M
+               1179 fa11  GeForce 710M
+               1179 fa13  GeForce 710M
+               1179 fa18  GeForce 710M
+               1179 fa19  GeForce 710M
+               1179 fa21  GeForce 710M
+               1179 fa23  GeForce 710M
+               1179 fa2a  GeForce 710M
+               1179 fa32  GeForce 710M
+               1179 fa33  GeForce 710M
+               1179 fa36  GeForce 710M
+               1179 fa38  GeForce 710M
+               1179 fa42  GeForce 710M
+               1179 fa43  GeForce 710M
+               1179 fa45  GeForce 710M
+               1179 fa47  GeForce 710M
+               1179 fa49  GeForce 710M
+               1179 fa58  GeForce 710M
+               1179 fa59  GeForce 710M
+               1179 fa88  GeForce 710M
+               1179 fa89  GeForce 710M
+               144d b092  GeForce GT 620M
+               144d c0d5  GeForce GT 630M
                144d c0d7  GeForce GT 620M
+               144d c0e2  NVS 5200M
+               144d c0e3  NVS 5200M
+               144d c0e4  NVS 5200M
                144d c652  GeForce GT 620M
+               144d c709  GeForce 710M
+               144d c711  GeForce 710M
+               144d c736  GeForce 710M
+               1462 10b8  GeForce GT 710M
+               1462 10e9  GeForce GT 720M
+               1462 1116  GeForce 820M
+               1462 aa33  GeForce 720M
+               1462 aaa2  GeForce GT 720M
+               1462 aaa3  GeForce 820M
+               1462 ae71  GeForce GT 720M
+               152d 0926  GeForce 620M
+               152d 0982  GeForce GT 630M
+               152d 0983  GeForce GT 630M
+               152d 1012  GeForce 710M
+               152d 1030  GeForce GT 630M
+               152d 1055  GeForce 710M
+               152d 1067  GeForce GT 720M
+               152d 1072  GeForce GT 720M
                17aa 2200  NVS 5200M
+               17aa 2213  GeForce GT 720M
+               17aa 2220  GeForce GT 720M
+               17aa 309c  GeForce GT 720A
+               17aa 30b4  GeForce 820A
+               17aa 3656  GeForce GT 620M
+               17aa 365a  GeForce 705M
+               17aa 365e  GeForce 800M
+               17aa 366c  GeForce 800M
+               17aa 3685  GeForce 800M
+               17aa 3686  GeForce 800M
+               17aa 3687  GeForce 705A
+               17aa 3696  GeForce 820A
+               17aa 369b  GeForce 820A
+               17aa 369c  GeForce 820A
+               17aa 369d  GeForce 820A
+               17aa 369e  GeForce 820A
+               17aa 3800  GeForce GT 720M
+               17aa 3801  GeForce GT 720M
+               17aa 3802  GeForce GT 720M
+               17aa 3803  GeForce GT 720M
+               17aa 3804  GeForce GT 720M
                17aa 3901  GeForce 610M / GT 620M
+               17aa 3902  GeForce 710M
+               17aa 3903  GeForce 610M/710M
                17aa 3904  GeForce GT 620M/625M
+               17aa 3905  GeForce GT 720M
+               17aa 3910  GeForce 720M
+               17aa 3912  GeForce 720M
+               17aa 3977  GeForce GT 720M
                17aa 3983  GeForce 610M
+               17aa 5001  GeForce 610M
+               17aa 5003  GeForce GT 720M
+               17aa 5005  GeForce 705M
                17aa 500d  GeForce GT 620M
+               17aa 5014  GeForce 710M
+               17aa 5017  GeForce 710M
+               17aa 5019  GeForce 710M
+               17aa 501a  GeForce 710M
+               17aa 501f  GeForce GT 720M
+               17aa 5025  GeForce 710M
+               17aa 5027  GeForce 710M
+               17aa 502a  GeForce 710M
+               17aa 502b  GeForce GT 720M
+               17aa 502d  GeForce 710M
+               17aa 502e  GeForce GT 720M
+               17aa 502f  GeForce GT 720M
+               17aa 503e  GeForce 710M
+               17aa 503f  GeForce 820M
+               1854 0177  GeForce 710M
+               1854 0180  GeForce 710M
+               1854 0190  GeForce GT 720M
+               1854 0192  GeForce GT 720M
+               1b0a 20dd  GeForce GT 620M
+               1b0a 20df  GeForce GT 620M
+               1b0a 2202  GeForce GT 720M
        1180  GK104 [GeForce GTX 680]
+               1043 83f1  GTX680-DC2-2GD5
                3842 3682  GeForce GTX 680 Mac Edition
+       1182  GK104 [GeForce GTX 760 Ti]
        1183  GK104 [GeForce GTX 660 Ti]
+       1184  GK104 [GeForce GTX 770]
        1185  GK104 [GeForce GTX 660 OEM]
+               10de 106f  GK104 [GeForce GTX 760 OEM]
+       1187  GK104 [GeForce GTX 760]
        1188  GK104 [GeForce GTX 690]
        1189  GK104 [GeForce GTX 670]
+               10de 1074  GK104 [GeForce GTX 760 Ti OEM]
        118a  GK104GL [GRID K520]
-       118b  GK104 [GeForce K2 USM]
-       118c  GK104 [NVS K2 USM]
+       118b  GK104GL [GRID K2 GeForce USM]
+       118c  GK104 [GRID K2 NVS USM]
+# GRID K2 USM
+       118d  GK104GL [GRID K200 vGPU]
+               10de 101d  GRID K200
+       118e  GK104 [GeForce GTX 760 OEM]
        118f  GK104GL [Tesla K10]
+       1193  GK104 [GeForce GTX 760 Ti OEM]
+       1195  GK104 [GeForce GTX 660 Rev. 2]
+       1198  GK104M [GeForce GTX 880M]
+       1199  GK104M [GeForce GTX 870M]
+       119a  GK104M [GeForce GTX 860M]
+       119d  GK104M [GeForce GTX 775M Mac Edition]
+       119e  GK104M [GeForce GTX 780M Mac Edition]
        119f  GK104M [GeForce GTX 780M]
        11a0  GK104M [GeForce GTX 680M]
        11a1  GK104M [GeForce GTX 670MX]
        11a2  GK104M [GeForce GTX 675MX Mac Edition]
        11a3  GK104M [GeForce GTX 680MX]
+               106b 010d  iMac 13,2
        11a7  GK104M [GeForce GTX 675MX]
-       11b0  GK104GL [Quadro K2 USM]
-       11b1  GK104GL [Tesla K2 USM]
+# GRID K2 Quadro USM
+       11b0  GK104GL [GRID K240Q\K260Q vGPU]
+               10de 101a  GRID K240Q
+               10de 101b  GRID K260Q
+       11b1  GK104GL [GRID K2 Tesla USM]
+       11b6  GK104GLM [Quadro K3100M]
+       11b7  GK104GLM [Quadro K4100M]
+       11b8  GK104GLM [Quadro K5100M]
        11ba  GK104GL [Quadro K5000]
        11bb  GK104GL [Quadro 4100]
        11bc  GK104GLM [Quadro K5000M]
                10de 1030  GeForce GTX 650 Ti OEM
        11c4  GK106 [GeForce GTX 645 OEM]
        11c6  GK106 [GeForce GTX 650 Ti]
+       11c7  GK106 [GeForce GTX 750 Ti]
+       11c8  GK106 [GeForce GTX 650 OEM]
        11e0  GK106M [GeForce GTX 770M]
+       11e1  GK106M [GeForce GTX 765M]
        11e2  GK106M [GeForce GTX 765M]
        11e3  GK106M [GeForce GTX 760M]
+               17aa 3683  GeForce GTX 760A
        11fa  GK106GL [Quadro K4000]
+       11fc  GK106GLM [Quadro K2100M]
        1200  GF114 [GeForce GTX 560 Ti]
        1201  GF114 [GeForce GTX 560]
        1202  GF114 [GeForce GTX 560 Ti OEM]
                1043 212a  GeForce GT 635M
                1043 212b  GeForce GT 635M
                1043 212c  GeForce GT 635M
-       1248  GF116M [GeForce GT 555M]
+               152d 0930  GeForce GT 635M
+       1248  GF116M [GeForce GT 555M/635M]
+               152d 0930  GeForce GT 635M
+               17c0 10e7  GeForce GT 555M
+               17c0 10e8  GeForce GT 555M
+               17c0 10ea  GeForce GT 555M
+               1854 0890  GeForce GT 555M
+               1854 0891  GeForce GT 555M
+               1854 1795  GeForce GT 555M
+               1854 1796  GeForce GT 555M
+               1854 3005  GeForce GT 555M
        1249  GF116 [GeForce GTS 450 Rev. 3]
        124b  GF116 [GeForce GT 640 OEM]
        124d  GF116M [GeForce GT 555M/635M]
+               1028 0491  GeForce GT 555M
+               1028 0570  GeForce GT 555M
+               1028 0571  GeForce GT 555M
+               1462 108d  GeForce GT 555M
+               1462 10cc  GeForce GT 635M
        1251  GF116M [GeForce GT 560M]
        1280  GK208 [GeForce GT 635]
+       1281  GK208 [GeForce GT 710]
+       1282  GK208 [GeForce GT 640 Rev. 2]
+       1284  GK208 [GeForce GT 630 Rev. 2]
+       1286  GK208 [GeForce GT 720]
        1290  GK208M [GeForce GT 730M]
+               103c 2afa  GeForce GT 730A
+               103c 2b04  GeForce GT 730A
+               1043 13ad  GeForce GT 730M
+               1043 13cd  GeForce GT 730M
        1291  GK208M [GeForce GT 735M]
        1292  GK208M [GeForce GT 740M]
+               17aa 3675  GeForce GT 740A
+               17aa 3684  GeForce GT 740A
        1293  GK208M [GeForce GT 730M]
        1294  GK208M [GeForce GT 740M]
+       1295  GK208M [GeForce 710M]
+       1296  GK208M [GeForce 825M]
+       1298  GK208M [GeForce GT 720M]
        12a0  GK208
+       12b9  GK208GLM [Quadro K610M]
+       12ba  GK208GLM [Quadro K510M]
+       1340  GM108M [GeForce 830M]
+       1341  GM108M [GeForce 840M]
+               17aa 3697  GeForce 840A
+               17aa 3699  GeForce 840A
+               17aa 369c  GeForce 840A
+       1380  GM107 [GeForce GTX 750 Ti]
+       1381  GM107 [GeForce GTX 750]
+       1382  GM107 [GeForce GTX 745]
+       1390  GM107M [GeForce 845M]
+       1391  GM107M [GeForce GTX 850M]
+               17aa 3697  GeForce GTX 850A
+               17aa a125  GeForce GTX 850A
+       1392  GM107M [GeForce GTX 860M]
+       1393  GM107M [GeForce 840M]
 10df  Emulex Corporation
        0720  OneConnect NIC (Skyhawk)
+               17aa 1056  ThinkServer OCm14102-UX-L AnyFabric
+               17aa 1057  ThinkServer OCm14104-UX-L AnyFabric
+               17aa 1059  ThinkServer OCm14104-UT-L AnyFabric
        0722  OneConnect iSCSI Initiator (Skyhawk)
        0723  OneConnect iSCSI Initiator + Target (Skyhawk)
        0724  OneConnect FCoE Initiator (Skyhawk)
        e200  Lancer-X: LightPulse Fibre Channel Host Adapter
        e208  LightPulse 16Gb Fibre Channel Host Adapter (Lancer-VF)
        e220  OneConnect NIC (Lancer)
+               17aa 1054  ThinkServer LPm16002B-M6-L AnyFabric
+               17aa 1055  ThinkServer LPm16004B-M8-L AnyFabric
        e240  OneConnect iSCSI Initiator (Lancer)
        e260  OneConnect FCoE Initiator (Lancer)
        e268  OneConnect 10Gb FCoE Converged Network Adapter (Lancer-VF)
        0101  3GA
        8111  Twist3 Frame Grabber
 10ec  Realtek Semiconductor Co., Ltd.
-       0139  Zonet Zen3200
-       0880  Realtek 880 High Definition Audio
-       0883  Realtek 883 High Definition Audio
-       0885  Realtek 885 High Definition Audio
-       0888  Realtek 888 High Definition Audio
-       0892  Realtek 892 High Definition Audio
+       0139  RTL-8139/8139C/8139C+ Ethernet Controller
+       5208  RTS5208 PCI Express Card Reader
        5209  RTS5209 PCI Express Card Reader
+       5227  RTS5227 PCI Express Card Reader
+               17aa 220e  ThinkPad T440p
+               17aa 2214  ThinkPad X240
        5229  RTS5229 PCI Express Card Reader
-       5288  Barossa PCI Express Card Reader
+               1025 0813  Aspire R7-571
+               103c 194e  ProBook 455 G1 Notebook
+       5249  RTS5249 PCI Express Card Reader
+               103c 1909  ZBook 15
+       5288  RTS5288 PCI Express Card Reader
        8029  RTL-8029(AS)
                10b8 2011  EZ-Card (SMC1208)
                10ec 8029  RTL-8029(AS)
                1113 1208  EN1208
                1186 0300  DE-528
                1259 2400  AT-2400
-               1af4 1100  Qemu virtual machine
+               1af4 1100  QEMU Virtual Machine
        8129  RTL-8129
                10ec 8129  RT8129 Fast Ethernet Adapter
-               11ec 8129  RT8129 Fast Ethernet Adapter
+               11ec 8129  RTL8111/8168 PCIe Gigabit Ethernet (misconfigured)
        8136  RTL8101E/RTL8102E PCI Express Fast Ethernet controller
                103c 2ab1  Pavillion p6774
                103c 30cc  Pavilion dv6700
                1179 ff64  RTL8102E PCI-E Fast Ethernet NIC
        8138  RT8139 (B/C) Cardbus Fast Ethernet Adapter
                10ec 8138  RT8139 (B/C) Fast Ethernet Adapter
-       8139  RTL-8139/8139C/8139C+
+       8139  RTL-8100/8101L/8139 PCI Fast Ethernet Adapter
                0357 000a  TTP-Monitoring Card V2.0
                1025 005a  TravelMate 290
                1025 8920  ALN-325
                1043 8109  P5P800-MX Mainboard
                1071 8160  MIM2000
                10bd 0320  EP-320X-R
+               10ec 8139  RTL-8100/8101L/8139 PCI Fast Ethernet Adapter
                10f7 8338  Panasonic CF-Y5 laptop
-               1113 ec01  FNC-0107TX
+               1113 ec01  LevelOne FNC-0107TX/FNC-0109TX
                1186 1300  DFE-538TX
                1186 1320  SN5200
                1186 8139  DRN-32TX
                1799 5010  F5D5010 CardBus Notebook Network Card
                187e 3303  FN312
                1904 8139  RTL8139D Fast Ethernet Adapter
+               1af4 1100  QEMU Virtual Machine
                2646 0001  KNE120TX
                8e2e 7000  KF-230TX
                8e2e 7100  KF-230TX/2
                1458 e000  GA-MA69G-S3H Motherboard
                1462 235c  P965 Neo MS-7235 mainboard
                1462 236c  945P Neo3-F motherboard
-       8168  RTL8111/8168 PCI Express Gigabit Ethernet controller
+       8168  RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
                1019 8168  RTL8111/8168 PCI Express Gigabit Ethernet controller
+               1028 0283  Vostro 220
                1028 04b2  Vostro 3350
                1028 04da  Vostro 3750
                103c 1611  Pavilion DM1Z-3000
+               103c 1950  ProBook 450/455
+               103c 2a6f  Asus IPIBL-LB Motherboard
                1043 11f5  A6J-Q008
                1043 16d5  U6V/U31J laptop
                1043 81aa  P5B
                1458 e000  Motherboard
                1462 238c  Onboard RTL8111b on MSI P965 Platinum Mainboard
                1462 368c  K9AG Neo2
+               1462 4180  Wind PC MS-7418
                1462 7522  X58 Pro-E
                1775 11cc  CC11/CL11
                1849 8168  Motherboard (one of many)
        8174  RTL8192SE Wireless LAN Controller
        8176  RTL8188CE 802.11b/g/n WiFi Adapter
                1a3b 1139  AW-NE139H Half-size Mini PCIe Card
-       8177  RTL8188CE 802.11b/g/n WiFi Adapter
-       8178  RTL8188CE 802.11b/g/n WiFi Adapter
+       8177  RTL8191CE PCIe Wireless Network Adapter
+       8178  RTL8192CE PCIe Wireless Network Adapter
        8179  RTL8188EE Wireless Network Adapter
        8180  RTL8180L 802.11b MAC
                1385 4700  MA521 802.11b Wireless PC Card
                1737 0019  WPC11v4 802.11b Wireless-B Notebook Adapter
        8185  RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller
-       8190  RTL8190 802.11n Wireless LAN
-       8191  RTL8188CE 802.11b/g/n WiFi Adapter
+       818b  RTL8192EE PCIe Wireless Network Adapter
+       8190  RTL8190 802.11n PCI Wireless Network Adapter
+       8191  RTL8192CE PCIe Wireless Network Adapter
        8192  RTL8192E/RTL8192SE Wireless LAN Controller
        8193  RTL8192DE Wireless LAN Controller
        8197  SmartLAN56 56K Modem
        8199  RTL8187SE Wireless LAN Controller
                1462 6894  MN54G2 / MS-6894 Wireless Mini PCIe Card
        8723  RTL8723AE PCIe Wireless Network Adapter
+       8812  RTL8812AE 802.11ac PCIe Wireless Network Adapter
+       8813  RTL8813AE 802.11ac PCIe Wireless Network Adapter
+       8821  RTL8821AE 802.11ac PCIe Wireless Network Adapter
+       b723  RTL8723BE PCIe Wireless Network Adapter
 10ed  Ascii Corporation
        7310  V7310
 10ee  Xilinx Corporation
                1102 0053  SB0090 Audigy Player/OEM
                1102 0058  SB0090 Audigy Player/OEM
                1102 1002  SB Audigy2 Platinum
+               1102 1003  SB0350 Audigy 2
                1102 1007  SB0240 Audigy 2 Platinum 6.1
                1102 1009  SB Audigy2 OEM HP
                1102 2001  SB Audigy 2 ZS Platinum Pro
        1740  RocketRAID 1740
        1742  RocketRAID 1742
        2210  RocketRAID 2210 SATA-II Controller
+               11ab 11ab  88SX6042
        2300  RocketRAID 230x 4 Port SATA-II Controller
        2310  RocketRAID 2310 4 Port SATA-II Controller
        2320  RocketRAID 2320 SATA-II Controller
        0409  VX855/VX875 Host Bridge: Host Control
        0410  VX900 Host Bridge: Host Control
        0415  VT6415 PATA IDE Host Controller
-               1043 838f  M5A88-V EVO
+               1043 838f  Motherboard
        0501  VT8501 [Apollo MVP4]
        0505  VT82C505
 # Shares chip with :0576. The VT82C576M has :1571 instead of :0561.
 # probably all K7VT2/4*/6
                1849 3038  K7VT series Motherboards
                19da a179  ZBOX nano VD01
+               1af4 1100  QEMU Virtual Machine
        3040  VT82C586B ACPI
        3043  VT86C100A [Rhine]
                10bd 0000  VT86C100A Fast Ethernet Adapter
        3230  K8M890CE/K8N890CE [Chrome 9]
        3238  K8T890 Host Bridge
        3249  VT6421 IDE/SATA Controller
+               1106 3249  VT6421 IDE/SATA Controller
        324a  CX700/VX700 PCI to PCI Bridge
        324b  CX700/VX700 Host Bridge
        324e  CX700/VX700 Internal Module Bus
        013d  P1690Plus
 1109  Cogent Data Technologies, Inc.
        1400  EM110TX [EX110TX]
-110a  Siemens Nixdorf AG
+110a  Siemens AG
        0002  Pirahna 2-port
        0005  Tulip controller, power management, switch extender
        0006  FSC PINC (I/O-APIC)
 # Superfastcom-PCI (Commtech, Inc.) or DSCC4 WAN Adapter
        2102  DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels
        2104  Eicon Diva 2.02 compatible passive ISDN card
-       3141  SIMATIC NET CP 5611 (Profibus Adapter)
-       3142  SIMATIC NET CP 5613A1 (Profibus Adapter)
+       3141  SIMATIC NET CP 5611 / 5621
+       3142  SIMATIC NET CP 5613 / 5614
+       3143  SIMATIC NET CP 1613
        4021  SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter)
-       4029  SIMATIC NET CP 5613A2 (Profibus Adapter)
+       4029  SIMATIC NET CP 5613 A2
+               110a 4029  SIMATIC NET CP 5613 A2
+               110a c029  SIMATIC NET CP 5614 A2
        4035  SIMATIC NET CP 1613 A2
+       4036  SIMATIC NET CP 1616
+       4038  SIMATIC NET CP 1604
+       4069  SIMATIC NET CP 5623
+               110a 4069  SIMATIC NET CP 5623
+               110a c069  SIMATIC NET CP 5624
+       407c  SIMATIC NET CP 5612
+       407d  SIMATIC NET CP 5613 A3
+       407e  SIMATIC NET CP 5622
+       4083  SIMATIC NET CP 5614 A3
+       4084  SIMATIC NET CP 1626
        4942  FPGA I-Bus Tracer for MBD
        6120  SZB6120
 110b  Chromatic Research Inc.
                14c0 1212  LifeView FlyTV Platinum Mini2
                153b 1160  Cinergy 250 PCI TV
                153b 1162  Terratec Cinergy 400 mobile
+               17de 7256  PlusTV All In One PI610 card
                17de 7350  ATSC 110 Digital / Analog HDTV Tuner
                17de 7352  ATSC 115 Digital / Analog HDTV Tuner
                185b c100  VideoMate TV
                5ace 6193  Behold TV M6 Extra
                5ace 6290  Behold TV H6
                5ace 7090  Behold TV A7
+               5ace 7150  Behold TV H75
+               5ace 7151  Behold TV H75
                5ace 7190  Behold TV H7
+               5ace 7191  Behold TV H7
+               5ace 7290  Behold TV T7
+               5ace 7591  Behold TV X7
                5ace 7595  Behold TV X7
        7134  SAA7134/SAA7135HL Video Broadcast Decoder
                0000 4036  Behold TV 403
                1894 0023  TVStation DVB-C plus
        7160  SAA7160
                1458 9009  E8000 DVB-T/Analog TV/FM tuner
+               1461 1455  AVerTV Hybrid Speedy PCI-E (H788)
        7162  SAA7162
                11bd 0101  Pinnacle PCTV 7010iX TV Card
        7164  SAA7164
                0070 89a1  WinTV HVR-2200
        7231  SAA7231
                5ace 8000  Behold TV H8
+               5ace 8001  Behold TV H8
+               5ace 8050  Behold TV H85
+               5ace 8051  Behold TV H85
                5ace 8100  Behold TV A8
+               5ace 8101  Behold TV A8
+               5ace 8150  Behold TV A85
+               5ace 8151  Behold TV A85
+               5ace 8201  Behold TV T8
        9730  SAA9730 Integrated Multimedia and Peripheral Controller
                1131 0000  Integrated Multimedia and Peripheral Controller
 1132  Mitel Corp.
        0041  VIC PCIe Downstream Port
        0042  VIC Management Controller
                1137 0047  VIC P81E PCIe Management Controller
+               1137 0085  VIC 1225 PCIe Management Controller
+               1137 00cd  VIC 1285 PCIe Management Controller
+               1137 00ce  VIC 1225T PCIe Management Controller
        0043  VIC Ethernet NIC
                1137 0047  VIC P81E PCIe Ethernet NIC
                1137 0048  VIC M81KR Mezzanine Ethernet NIC
                1137 004f  VIC 1280 Mezzanine Ethernet NIC
                1137 0084  VIC 1240 MLOM Ethernet NIC
                1137 0085  VIC 1225 PCIe Ethernet NIC
+               1137 00cd  VIC 1285 PCIe Ethernet NIC
+               1137 00ce  VIC 1225T PCIe Ethernet NIC
        0044  VIC Ethernet NIC Dynamic
                1137 0047  VIC P81E PCIe Ethernet NIC Dynamic
                1137 0048  VIC M81KR Mezzanine Ethernet NIC Dynamic
                1137 004f  VIC 1280 Mezzanine Ethernet NIC Dynamic
                1137 0084  VIC 1240 MLOM Ethernet NIC Dynamic
                1137 0085  VIC 1225 PCIe Ethernet NIC Dynamic
+               1137 00cd  VIC 1285 PCIe Ethernet NIC Dynamic
+               1137 00ce  VIC 1225T PCIe Ethernet NIC Dynamic
        0045  VIC FCoE HBA
                1137 0047  VIC P81E PCIe FCoE HBA
                1137 0048  VIC M81KR Mezzanine FCoE HBA
                1137 004f  VIC 1280 Mezzanine FCoE HBA
+               1137 0084  VIC 1240 MLOM FCoE HBA
+               1137 0085  VIC 1225 PCIe FCoE HBA
+               1137 00cd  VIC 1285 PCIe FCoE HBA
+               1137 00ce  VIC 1225T PCIe FCoE HBA
        004e  VIC 82 PCIe Upstream Port
+       0071  VIC SR-IOV VF
        00cf  VIC Userspace NIC
 1138  Ziatech Corporation
        8905  8905 [STD 32 Bridge]
        0617  ToPIC100 PCI to Cardbus Bridge with ZV Support
        0618  CPU to PCI and PCI to ISA bridge
        0701  FIR Port Type-O
+       0803  TC6371AF SD Host Controller
        0804  TC6371AF SmartMedia Controller
        0805  SD TypA Controller
        0d01  FIR Port Type-DO
                144d c005  X10 Laptop
                144d c00c  P30/P35 notebook
                14ef 0220  PCD-RP-220S
-               17aa 201c  ThinkPad X60s
+               17aa 201c  ThinkPad X60/X60s
                17aa 20c4  ThinkPad T61
+               17aa 20c6  ThinkPad R61
        0477  RL5c477
        0478  RL5c478
                1014 0184  ThinkPad A30p
                1043 1757  M2400N laptop
                144d c005  X10 Laptop
                144d c00c  P30/P35 notebook
-               17aa 201e  ThinkPad X60s
+               17aa 201e  ThinkPad X60/X60s
        0554  R5C554
        0575  R5C575 SD Bus Host Adapter
        0576  R5C576 SD Bus Host Adapter
                1043 1967  ASUS V6800V
                10f7 8338  Panasonic CF-Y5 laptop
                144d c018  X20 IV
-               17aa 201d  ThinkPad X60s
+               17aa 201d  ThinkPad X60/X60s
                17aa 20c7  ThinkPad T61
                17aa 20c8  ThinkPad W500
        0832  R5C832 IEEE 1394 Controller
                1025 0121  Aspire 5920G
                1028 01d7  XPS M1210
                1028 01f3  Inspiron 1420
+               1028 024d  Latitude E4300
                103c 30b5  Presario V3242AU
                103c 30b7  Presario V6133CL
                103c 30c1  Compaq 6910p
                103c 30cc  Pavilion dv6700
                103c 30cf  Pavilion dv9668eg Laptop
+               17aa 20c7  ThinkPad R61
        0841  R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394
        0843  R5C843 MMC Host Controller
                1025 0121  Aspire 5920G
        2a2b  88W8687 [TopDog] 802.11b/g Wireless
        2a30  88W8687 [TopDog] 802.11b/g Wireless
        2a40  88W8366 [TopDog] 802.11n Wireless
+       2a41  88W8366 [TopDog] 802.11n Wireless
+       2a42  88W8366 [TopDog] 802.11n Wireless
        2a43  88W8366 [TopDog] 802.11n Wireless
+       2a55  88W8864 [Avastar] 802.11ac Wireless
+       2b36  88W8764 [Avastar] 802.11n Wireless
        4101  OLPC Cafe Controller Secure Digital Controller
        4320  88E8001 Gigabit Ethernet Controller
                1019 0f38  Marvell 88E8001 Gigabit Ethernet Controller (ECS)
        5803  USS-344S USB Controller
        5811  FW322/323 [TrueFire] 1394a Controller
                103c 2a34  Pavilion a1677c
+               103c 2a6f  Asus IPIBL-LB Motherboard
                103c 2a9e  Pavilion p6310f
                1043 8294  LSI FW322/323 IEEE 1394a FireWire Controller
                8086 524c  D865PERL mainboard
        7375  PM7375 [LASAR-155 ATM SAR]
        7384  PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr]
        8000  PM8000  [SPC - SAS Protocol Controller]
+       8032  ATTO Celerity FC8xEN
+               117c 003b  Celerity FC-82EN Fibre Channel Adapter
+               117c 003c  Celerity FC-84EN Fibre Channel Adapter
 11f9  I-Cube Inc
 11fa  Kasan Electronics Company, Ltd.
 11fb  Datel Inc
        8330  OZ600 MS/xD Controller
                1028 04a3  Precision M4600
        8331  O2 Flash Memory Card
+       8520  SD/MMC Card Reader Controller
 1218  Hybricon Corp.
 1219  First Virtual Corporation
 121a  3Dfx Interactive, Inc.
        0002  EasyConnect 8/64
        0003  EasyIO
 123e  Simutech, Inc.
-123f  C-Cube Microsystems
+# nee C-Cube Microsystems / acquired by Magnum Semiconductor
+123f  LSI Logic
        00e4  MPEG
-       8120  E4?
+       8120  DVxplore Codec
+               10de 01e1  NVTV PAL
+               10de 01e2  NVTV NTSC
+               10de 01e3  NVTV PAL
+               10de 0248  NVTV NTSC
+               10de 0249  NVTV PAL
                11bd 0006  DV500 E4
                11bd 000a  DV500 E4
                11bd 000f  DV500 E4
        0510  SM501 VoyagerGX Rev. B
        0710  SM710 LynxEM
        0712  SM712 LynxEM+
+       0718  SM718 LynxSE+
        0720  SM720 Lynx3DM
        0730  SM731 Cougar3DR
        0810  SM810 LynxE
        0002  DirecPC
 1274  Ensoniq
        1171  ES1373 [AudioPCI] (also Creative Labs CT5803)
-       1371  ES1371 [AudioPCI-97]
+       1371  ES1371 / Creative Labs CT2518 [AudioPCI-97]
                0e11 0024  AudioPCI on Motherboard Compaq Deskpro
                0e11 b1a7  ES1371, ES1373 AudioPCI
                1033 80ac  ES1371, ES1373 AudioPCI
                1042 1854  Tazer
                107b 8054  Tabor2
-               1274 1371  Creative Sound Blaster AudioPCI64V, AudioPCI128
+               1274 1371  AudioPCI 64V/128 / Creative Sound Blaster CT4810
                1274 8001  CT4751 board
                1462 6470  ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A
                1462 6560  ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10
                122d 1002  AU8820 Vortex Digital Audio Processor
                12eb 0001  AU8820 Vortex Digital Audio Processor
                5053 3355  Montego
+               50b2 1111  XLerate
        0002  Vortex 2
                104d 8049  AU8830 Vortex 3D Digital Audio Processor
                104d 807b  AU8830 Vortex 3D Digital Audio Processor
                13f6 ffff  CMI8787-HG2PCI
                14c3 1710  HiFier Fantasia
                14c3 1711  HiFier Serenade
+               14c3 1713  HiFier Serenade III
                1a58 0910  Barracuda AC-1
                415a 5431  X-Meridian 7.1
                5431 017a  X-Meridian 7.1 2G
        4085  T420-4085 SFP+ Unified Wire Ethernet Controller
        4086  T440-4086 10Gbase-T Unified Wire Ethernet Controller
        4087  T440T-4087 Unified Wire Ethernet Controller
+       4088  T440-4088 Unified Wire Ethernet Controller
        4401  T420-CR Unified Wire Ethernet Controller
        4402  T422-CR Unified Wire Ethernet Controller
        4403  T440-CR Unified Wire Ethernet Controller
        4485  T420-4085 SFP+ Unified Wire Ethernet Controller
        4486  T440-4086 10Gbase-T Unified Wire Ethernet Controller
        4487  T440T-4087 Unified Wire Ethernet Controller
+       4488  T440-4088 Unified Wire Ethernet Controller
        4501  T420-CR Unified Wire Storage Controller
        4502  T422-CR Unified Wire Storage Controller
        4503  T440-CR Unified Wire Storage Controller
        4585  T420-4085 SFP+ Unified Wire Storage Controller
        4586  T440-4086 10Gbase-T Unified Wire Storage Controller
        4587  T440T-4087 Unified Wire Storage Controller
+       4588  T440-4088 Unified Wire Storage Controller
        4601  T420-CR Unified Wire Storage Controller
        4602  T422-CR Unified Wire Storage Controller
        4603  T440-CR Unified Wire Storage Controller
        4685  T420-4085 SFP+ Unified Wire Storage Controller
        4686  T440-4086 10Gbase-T Unified Wire Storage Controller
        4687  T440T-4087 Unified Wire Storage Controller
+       4688  T440-4088 Unified Wire Storage Controller
        4701  T420-CR Unified Wire Ethernet Controller
        4702  T422-CR Unified Wire Ethernet Controller
        4703  T440-CR Unified Wire Ethernet Controller
        4785  T420-4085 SFP+ Unified Wire Ethernet Controller
        4786  T440-4086 10Gbase-T Unified Wire Ethernet Controller
        4787  T440T-4087 Unified Wire Ethernet Controller
+       4788  T440-4088 Unified Wire Ethernet Controller
        4801  T420-CR Unified Wire Ethernet Controller
        4802  T422-CR Unified Wire Ethernet Controller
        4803  T440-CR Unified Wire Ethernet Controller
        4885  T420-4085 SFP+ Unified Wire Ethernet Controller
        4886  T440-4086 10Gbase-T Unified Wire Ethernet Controller
        4887  T440T-4087 Unified Wire Ethernet Controller
+       4888  T440-4088 Unified Wire Ethernet Controller
        5001  T520-CR Unified Wire Ethernet Controller
        5002  T522-CR Unified Wire Ethernet Controller
        5003  T540-CR Unified Wire Ethernet Controller
        5011  T520-LL-CR Unified Wire Ethernet Controller
        5012  T560-CR Unified Wire Ethernet Controller
        5013  T580-CR Unified Wire Ethernet Controller
+       5014  T580-LP-SO-CR Unified Wire Ethernet Controller
+       5015  T502-BT Unified Wire Ethernet Controller
+       5080  T540-5080 Unified Wire Ethernet Controller
+       5081  T540-5081 Unified Wire Ethernet Controller
+       5083  T540-5083 Unified Wire Ethernet Controller
+       5084  T580-5084 Unified Wire Ethernet Controller
+       5085  T580-5085 Unified Wire Ethernet Controller
        5401  T520-CR Unified Wire Ethernet Controller
        5402  T522-CR Unified Wire Ethernet Controller
        5403  T540-CR Unified Wire Ethernet Controller
        5411  T520-LL-CR Unified Wire Ethernet Controller
        5412  T560-CR Unified Wire Ethernet Controller
        5413  T580-CR Unified Wire Ethernet Controller
+       5414  T580-LP-SO-CR Unified Wire Ethernet Controller
+       5415  T502-BT Unified Wire Ethernet Controller
+       5480  T540-5080 Unified Wire Ethernet Controller
+       5481  T540-5081 Unified Wire Ethernet Controller
+       5483  T540-5083 Unified Wire Ethernet Controller
+       5484  T580-5084 Unified Wire Ethernet Controller
+       5485  T580-5085 Unified Wire Ethernet Controller
        5501  T520-CR Unified Wire Storage Controller
        5502  T522-CR Unified Wire Storage Controller
        5503  T540-CR Unified Wire Storage Controller
        5511  T520-LL-CR Unified Wire Storage Controller
        5512  T560-CR Unified Wire Storage Controller
        5513  T580-CR Unified Wire Storage Controller
+       5514  T580-LP-SO-CR Unified Wire Storage Controller
+       5515  T502-BT Unified Wire Storage Controller
+       5580  T540-5080 Unified Wire Storage Controller
+       5581  T540-5081 Unified Wire Storage Controller
+       5583  T540-5083 Unified Wire Storage Controller
+       5584  T580-5084 Unified Wire Storage Controller
+       5585  T580-5085 Unified Wire Storage Controller
        5601  T520-CR Unified Wire Storage Controller
        5602  T522-CR Unified Wire Storage Controller
        5603  T540-CR Unified Wire Storage Controller
        5611  T520-LL-CR Unified Wire Storage Controller
        5612  T560-CR Unified Wire Storage Controller
        5613  T580-CR Unified Wire Storage Controller
+       5614  T580-LP-SO-CR Unified Wire Storage Controller
+       5615  T502-BT Unified Wire Storage Controller
+       5680  T540-5080 Unified Wire Storage Controller
+       5681  T540-5081 Unified Wire Storage Controller
+       5683  T540-5083 Unified Wire Storage Controller
+       5684  T580-5084 Unified Wire Storage Controller
+       5685  T580-5085 Unified Wire Storage Controller
        5701  T520-CR Unified Wire Ethernet Controller
        5702  T522-CR Unified Wire Ethernet Controller
        5703  T540-CR Unified Wire Ethernet Controller
        5711  T520-LL-CR Unified Wire Ethernet Controller
        5712  T560-CR Unified Wire Ethernet Controller
        5713  T580-CR Unified Wire Ethernet Controller
+       5714  T580-LP-SO-CR Unified Wire Ethernet Controller
+       5715  T502-BT Unified Wire Ethernet Controller
+       5780  T540-5080 Unified Wire Ethernet Controller
+       5781  T540-5081 Unified Wire Ethernet Controller
+       5783  T540-5083 Unified Wire Ethernet Controller
+       5784  T580-5084 Unified Wire Ethernet Controller
+       5785  T580-5085 Unified Wire Ethernet Controller
        5801  T520-CR Unified Wire Ethernet Controller
        5802  T522-CR Unified Wire Ethernet Controller
        5803  T540-CR Unified Wire Ethernet Controller
        5811  T520-LL-CR Unified Wire Ethernet Controller
        5812  T560-CR Unified Wire Ethernet Controller
        5813  T580-CR Unified Wire Ethernet Controller
+       5814  T580-LP-SO-CR Unified Wire Ethernet Controller
+       5815  T502-BT Unified Wire Ethernet Controller
+       5880  T540-5080 Unified Wire Ethernet Controller
+       5881  T540-5081 Unified Wire Ethernet Controller
+       5883  T540-5083 Unified Wire Ethernet Controller
+       5884  T580-5084 Unified Wire Ethernet Controller
+       5885  T580-5085 Unified Wire Ethernet Controller
        a000  PE10K Unified Wire Ethernet Controller
 1426  Storage Technology Corp.
 1427  Better On-Line Solutions
 144b  Verint Systems Inc.
 144c  Catalina Research Inc
 144d  Samsung Electronics Co Ltd
+       1600  Apple PCIe SSD
+       a800  XP941 PCIe SSD
+       a820  NVMe SSD Controller 171X
+               1028 1f95  Express Flash NVMe XS1715 SSD 400GB
+               1028 1f96  Express Flash NVMe XS1715 SSD 800GB
+               1028 1f97  Express Flash NVMe XS1715 SSD 1600GB
 144e  OLITEC
 144f  Askey Computer Corp.
 1450  Octave Communications Ind.
        a836  M115 DVB-T, PAL/SECAM/NTSC Tuner
        e836  M115S Hybrid Analog/DVB PAL/SECAM/NTSC Tuner
        f436  AVerTV Hybrid+FM
-1462  Micro-Star International Co., Ltd.
+1462  Micro-Star International Co., Ltd. [MSI]
 1463  Fast Corporation
 1464  Interactive Circuits & Systems Ltd
 1465  GN NETTEST Telecom DIV.
 1467  DIGICOM SPA
 1468  AMBIT Microsystem Corp.
 1469  Cleveland Motion Controls
-146a  IFR
+# formerly IFR.
+146a  Aeroflex
+# 1.5 GHz to 3.0 GHz x 1Hz
+       3010  3010 RF Synthesizer
+       3a11  3011A PXI RF Synthesizer
 146b  Parascan Technologies Ltd
 146c  Ruby Tech Corp.
        1430  FE-1430TX Fast Ethernet PCI Adapter
 1489  KYE Systems Corporation
 148a  OPTO
 148b  INNOMEDIALOGIC Inc.
-148c  C.P. Technology Co. Ltd
+148c  Tul Corporation / PowerColor
 148d  DIGICOM Systems, Inc.
        1003  HCF 56k Data/Fax Modem
 148e  OSI Plus Corporation
        21cc  TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422
        21cd  TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422
        3064  TPCI100 (2 Slot IndustryPack PCI Carrier)
-       30c8  TPCI200
+       30c8  TPCI200 4 Slot IndustryPack PCI Carrier
+       70c8  TPCE200 4 Slot IndustryPack PCIe Carrier
 1499  EMTEC CO., Ltd
 149a  ANDOR Technology Ltd
 149b  SEIKO Instruments Inc
                103c 1240  Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM)
 14c2  DTK Computer
 14c3  MEDIATEK Corp.
+       7630  MT7630e 802.11bgn Wireless Network Adapter
 14c4  IWASAKI Information Systems Co Ltd
 14c5  Automation Products AB
 14c6  Data Race Inc
                1028 029c  PowerEdge M710 BCM5709S Gigabit Ethernet
                103c 171d  NC382m Dual Port 1GbE Multifunction BL-c Adapter
                103c 7056  NC382i Integrated Quad Port PCI Express Gigabit Server Adapter
+               1259 2984  AT-2973SX
        163b  NetXtreme II BCM5716 Gigabit Ethernet
                1028 028c  PowerEdge R410 BCM5716 Gigabit Ethernet
                1028 028d  PowerEdge T410 BCM5716 Gigabit Ethernet
        168d  NetXtreme II BCM57840 10/20 Gigabit Ethernet
        168e  NetXtreme II BCM57810 10 Gigabit Ethernet
                103c 1798  Flex-10 10Gb 2-port 530FLB Adapter [Meru]
+               103c 17a5  HP Flex-10 10Gb 2-port 530M Adapter
+               103c 18d3  HP Ethernet 10Gb 2-port 530T Adapter
+               103c 1930  HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter
+               103c 1931  HP StoreFabric CN1100R Dual Port Converged Network Adapter
+               103c 1932  HP FlexFabric 10Gb 2-port 534FLB Adapter
+               103c 1933  HP FlexFabric 10Gb 2-port 534M Adapter
+               103c 193a  HP FlexFabric 10Gb 2-port 533FLR-T Adapter
+               103c 3382  HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter
+               103c 339d  HP Ethernet 10Gb 2-port 530SFP+ Adapter
        1690  NetXtreme BCM57760 Gigabit Ethernet PCIe
        1691  NetLink BCM57788 Gigabit Ethernet PCIe
                1028 04aa  XPS 8300
        16a0  NetLink BCM5785 Fast Ethernet
        16a1  BCM57840 NetXtreme II 10 Gigabit Ethernet
        16a2  BCM57840 NetXtreme II 10/20-Gigabit Ethernet
+               103c 1916  HP FlexFabric 20Gb 2-port 630FLB Adapter
+               103c 1917  HP FlexFabric 20Gb 2-port 630M Adapter
        16a4  BCM57840 NetXtreme II Ethernet Multi Function
+               103c 1916  HP NPAR 20Gb 2-port 630FLB Adapter
+               103c 1917  HP NPAR 20Gb 2-port 630M Adapter
 # The Broadcom 57800 device has two 1Gig ports and two 10Gig ports. The subsystem information can be used to differentiate.
        16a5  NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function
                1028 1f5c  NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function
                103c 703b  NC373i Integrated Multifunction Gigabit Server Adapter
                103c 703d  NC373F PCI Express Multifunction Gigabit Server Adapter
        16ad  NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function
+               103c 1916  HP FlexFabric 20Gb 2-port 630FLB Adapter
+               103c 1917  HP FlexFabric 20Gb 2-port 630M Adapter
        16ae  NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function
+               103c 1798  HP NPAR 10Gb 2-port 530FLB Adapter
+               103c 17a5  HP NPAR 10Gb 2-port 530M Adapter
+               103c 18d3  HP NPAR 10Gb 2-port 530T Adapter
+               103c 1930  HP NPAR 10Gb 2-port 534FLR-SFP+ Adapter
+               103c 1931  HP NPAR CN1100R Dual Port Converged Network Adapter
+               103c 1932  HP NPAR 10Gb 2-port 534FLB Adapter
+               103c 1933  HP NPAR 10Gb 2-port 534M Adapter
+               103c 193a  HP NPAR 10Gb 2-port 533FLR-T Adapter
+               103c 3382  HP NPAR 10Gb 2-port 530FLR-SFP+ Adapter
+               103c 339d  HP NPAR 10Gb 2-port 530SFP+ Adapter
        16af  NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function
+               103c 1798  HP Flex-10 10Gb 2-port 530FLB Adapter
+               103c 17a5  HP Flex-10 10Gb 2-port 530M Adapter
+               103c 18d3  HP Ethernet 10Gb 2-port 530T Adapter
+               103c 1930  HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter
+               103c 1931  HP StoreFabric CN1100R Dual Port Converged Network Adapter
+               103c 1932  HP FlexFabric 10Gb 2-port 534FLB Adapter
+               103c 1933  HP FlexFabric 10Gb 2-port 534M Adapter
+               103c 193a  HP FlexFabric 10Gb 2-port 533FLR-T Adapter
+               103c 3382  HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter
+               103c 339d  HP Ethernet 10Gb 2-port 530SFP+ Adapter
        16b0  NetXtreme BCM57761 Gigabit Ethernet PCIe
        16b1  NetLink BCM57781 Gigabit Ethernet PCIe
+               1849 96b1  Z77 Extreme4 motherboard
        16b2  NetLink BCM57791 Gigabit Ethernet PCIe
        16b3  NetXtreme BCM57786 Gigabit Ethernet PCIe
        16b4  NetXtreme BCM57765 Gigabit Ethernet PCIe
        16b5  NetLink BCM57785 Gigabit Ethernet PCIe
        16b6  NetLink BCM57795 Gigabit Ethernet PCIe
        16b7  NetXtreme BCM57782 Gigabit Ethernet PCIe
-       16bc  NetXtreme BCM57765 Memory Card Reader
+       16bc  BCM57765/57785 SDXC/MMC Card Reader
+       16be  BCM57765/57785 MS Card Reader
+       16bf  BCM57765/57785 xD-Picture Card Reader
        16c6  NetXtreme BCM5702A3 Gigabit Ethernet
                10b7 1100  3C1000B-T 10/100/1000 PCI
                14e4 000c  BCM5702 1000Base-T
                103c 182c  BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter
        4365  BCM43142 802.11b/g/n
                1028 0016  Wireless 1704 802.11n + BT 4.0
+       43a0  BCM4360 802.11ac Wireless Network Adapter
        43b1  BCM4352 802.11ac Wireless Network Adapter
        4401  BCM4401 100Base-T
                1025 0035  TravelMate 660
        4712  BCM47xx V.92 56k modem
        4713  Sentry5 Ethernet Controller
        4714  BCM47xx Sentry5 External Interface
-       4715  Sentry5 USB Controller
+       4715  BCM47xx Sentry5 USB / Ethernet Controller
        4716  BCM47xx Sentry5 USB Host Controller
        4717  BCM47xx Sentry5 USB Device Controller
        4718  Sentry5 Crypto Accelerator
        4719  BCM47xx/53xx RoboSwitch Core
        4720  BCM4712 MIPS CPU
-       4727  BCM4313 802.11b/g/n Wireless LAN Controller
+       4727  BCM4313 802.11bgn Wireless Network Adapter
                1028 0010  Inspiron M5010 / XPS 8300
        5365  BCM5365P Sentry5 Host Bridge
        5600  BCM5600 StrataSwitch 24+2 Ethernet Switch Controller
        1054  HCF 56k Data/Fax/Voice Modem (Worldwide)
        1055  HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide)
        1056  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)
+               122d 4035  MDP3900V-W
        1057  HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)
        1059  HCF 56k Data/Fax/Voice Modem (Worldwide)
        1063  HCF 56k Data/Fax Modem
 1553  CHICONY Electronics Co Ltd
 1554  PROLINK Microsystems Corp
 1555  GESYTEC GmBH
-1556  PLD APPLICATIONS
+1556  PLDA
+       1100  PCI Express Core Reference Design
+       110f  PCI Express Core Reference Design Virtual Function
 1557  MEDIASTAR Co Ltd
 1558  CLEVO/KAPOK Computer
 1559  SI LOGIC Ltd
        07a0  PCI Express Root Port
        07b0  VMXNET3 Ethernet Controller
        07c0  PVSCSI SCSI Controller
+       07e0  SATA AHCI controller
        0801  Virtual Machine Interface
                15ad 0800  Hypervisor ROM Interface
        1977  HD Audio Controller
        1014  MT27621 Family
        1015  MT27630 Family
        1016  MT27631 Family
+       1017  MT27640 Family
+       1018  MT27641 Family
        5274  MT21108 InfiniBridge
        5a44  MT23108 InfiniHost
        5a45  MT23108 [Infinihost HCA Flash Recovery]
 15bc  Agilent Technologies
        0100  HPFC-5600 Tachyon DX2+ FC
        0103  QX4 PCI Express quad 4-gigabit Fibre Channel controller
-       0105  Celerity FC-42XS Fibre Channel Adapter
+       0105  Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES
                117c 0022  Celerity FC-42XS Fibre Channel Adapter
+               117c 0025  Celerity FC-44ES Fibre Channel Adapter
+               117c 0026  Celerity FC-42ES Fibre Channel Adapter
        1100  E8001-66442 PCI Express CIC
        2922  64 Bit, 133MHz PCI-X Exerciser & Protocol Checker
        2928  64 Bit, 66MHz PCI Exerciser & Analyzer
        0620  FarSync T2U (2 port X.21/V.35/V.24)
        0640  FarSync T4U (4 port X.21/V.35/V.24)
        1610  FarSync TE1 (T1,E1)
+       1612  FarSync TE1 PCI Express (T1,E1)
        2610  FarSync DSL-S1 (SHDSL)
        3640  FarSync T4E (4-port X.21/V.35/V.24)
        4620  FarSync T2Ue PCI Express (2-port X.21/V.35/V.24)
        4640  FarSync T4Ue PCI Express (4-port X.21/V.35/V.24)
+       5621  FarSync T2Ee PCI Express (2 port X.21/V.35/V.24)
+       5641  FarSync T4Ee PCI Express (4 port X.21/V.35/V.24)
+       6620  FarSync T2U-PMC PCI Express (2 port X.21/V.35/V.24)
 161f  Rioworks
 1626  TDK Semiconductor Corp.
        8410  RTL81xx Fast Ethernet
        3052  SmartLink SmartPCI562 56K Modem
        5449  SmartPCI561 Modem
 1641  MKNet Corp.
+1642  Bitland(ShenZhen) Information Technology Co., Ltd.
 1657  Brocade Communications Systems, Inc.
        0013  425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA
                103c 1742  HP 82B 8Gbps dual port FC HBA
                103c 1743  HP 81B 8Gbps single port FC HBA
                1657 0014  415/815 4Gbps/8Gbps single port PCIe FC HBA
        0021  804 8Gbps FC HBA for HP Bladesystem c-class
-       0022  1867/1860: 16Gbps/10Gbps Fabric Adapter
+# AnyIO Adapter
+       0022  1860 16Gbps/10Gbps Fabric Adapter
                1657 0022  10Gbps CNA - FCOE
                1657 0023  10Gbps CNA - LL
                1657 0024  16Gbps FC HBA
+# Mezz card for IBM
+       0023  1867/1869 16Gbps FC HBA
 # Same Device_ID used for 410 (1port) and 420 (2 port) HBAs.
        0646  400 4Gbps PCIe FC HBA
 165a  Epix Inc
        c100  PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232]
        d200  PIXCI(R) D2X Digital Video Capture Board [custom QL5232]
        d300  PIXCI(R) D3X Digital Video Capture Board [custom QL5232]
+       eb01  PIXCI(R) EB1 PCI Camera Link Video Capture Board
 165d  Hsing Tech. Enterprise Co., Ltd.
 165f  Linux Media Labs, LLC
        1020  LMLM4 MPEG-4 encoder
                103c 1838  AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter
        0033  AR9580 Wireless Network Adapter
        0034  AR9462 Wireless Network Adapter
+               1a56 2003  Killer Wireless-N 1202 Half-size Mini PCIe Card
        0036  QCA9565 / AR9565 Wireless Network Adapter
+       0037  AR9485 Wireless Network Adapter
+# Also used as Gigabyte GC-WB150 on a PCIe-to-mini-PCIe converter
+               1a3b 2100  AW-NB100H 802.11n Wireless Mini PCIe Card
        003c  QCA988x 802.11ac Wireless Network Adapter
        0207  AR5210 Wireless Network Adapter [AR5000 802.11a]
        1014  AR5212 802.11abg NIC
                1014 058a  ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6)
        9013  AR5002X Wireless Network Adapter
        ff19  AR5006X Wireless Network Adapter
+       ff1b  AR2425 Wireless Network Adapter [AR5007EG 802.11bg]
        ff1c  AR5008 Wireless Network Adapter
        ff1d  AR922x Wireless Network Adapter
 # Found in "AVM Fritz!Box FON WLAN 7270v3"
        0100  NSP2000-SSL crypto accelerator
 170c  YottaYotta Inc.
 1719  EZChip Technologies
+       1000  NPA Access Network Processor Family
 # Seems to be a 2nd ID for Vitesse Semiconductor
 1725  Vitesse Semiconductor
        7174  VSC7174 PCI/PCI-X Serial ATA Host Bus Controller
        2020  XCode II Series
        2100  XCode 2100 Series
 1749  RLX Technologies
-174b  PC Partner Limited
+174b  PC Partner Limited / Sapphire Technology
 174d  WellX Telecom SA
 175c  AudioScience Inc
 175e  Sanera Systems, Inc.
 1760  TEDIA spol. s r. o.
+       0101  PCD-7004 Digital Bi-Directional Ports PCI Card
+       0102  PCD-7104 Digital Input & Output PCI Card
 1771  InnoVISION Multimedia Ltd.
 # nee SBS Technologies
 1775  GE Intelligent Platforms
        6811  TW6816 multimedia video controller
        6812  TW6816 multimedia video controller
        6813  TW6816 multimedia video controller
+# port 5 of 8
+       6814  TW6816 multimedia video controller
+# port 6 of 8
+       6815  TW6816 multimedia video controller
+# port 7 of 8
+       6816  TW6816 multimedia video controller
+# channel 8 of 8
+       6817  TW6816 multimedia video controller
 1799  Belkin
        6001  F5D6001 Wireless PCI Card [Realtek RTL8180]
        6020  F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180]
        3091  RT3091 Wireless 802.11n 1T/2R PCIe
        3092  RT3092 Wireless 802.11n 2T/2R PCIe
        3290  RT3290 Wireless 802.11n 1T/1R PCIe
+               103c 18ec  Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter
        3298  RT3290 Bluetooth
+               103c 18ec  Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter
        3592  RT3592 Wireless 802.11abgn 2T/2R PCIe
+       359f  RT3592 PCIe Wireless Network Adapter
        5360  RT5360 Wireless 802.11n 1T/1R
                1186 3c05  DWA-525 Wireless N 150 Desktop Adapter (rev.A2)
                20f4 703a  TEW-703PI N150 Wireless PCI Adapter
        5390  RT5390 Wireless 802.11n 1T/1R PCIe
                103c 1636  U98Z077.00 Half-size Mini PCIe Card
+       5392  RT5392 PCIe Wireless Network Adapter
        539f  RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip]
                103c 1637  Pavilion DM1Z-3000 PCIe wireless card
+       5592  RT5592 PCIe Wireless Network Adapter
        e932  RT2560F 802.11 b/g PCI
 1815  Devolo AG
 1820  InfiniCon Systems Inc.
        db78  FusionHDTV DVB-T Dual Express
 18b8  Ammasso
        b001  AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor
-18bc  Info-Tek Corp.
+# formally Info-Tek Corp.
+18bc  GeCube Technologies, Inc.
 18c3  Micronas Semiconductor Holding AG
        0720  nGene PCI-Express Multimedia Controller
                07ca 032e  Hybrid M779 PCI-E
 18d8  Dialogue Technology Corp.
 18dd  Artimi Inc
        4c6f  Artimi RTMI-100 UWB adapter
+18df  LeWiz Communications
 18e6  MPL AG
        0001  OSCI [Octal Serial Communication Interface]
 18eb  Advance Multimedia Internet Technology, Inc.
        00e5  NT40E2-1 Network Adapter 1x40Gb
 # 4-Port Adapter for 1 GbE In-Line Bypass Applications
        00f5  NT4E2-4T-BP Network Adapter 4x1Gb with Electrical Bypass
+       0105  NT4E2-4-PTP Network Adapter 4x1Gb
+       0115  NT20E2-PTP Network Adapter 2x10Gb
+       0125  NT4E2-4-PTP Network Adapter 4x1Gb
+       0135  NT20E2-PTP Network Adapter 2x10Gb
 18f6  NextIO
        1000  [Nexsis] Switch Virtual P2P PCIe Bridge
        1001  [Texsis] Switch Virtual P2P PCIe Bridge
        0021  422/8-PCIe Serial PCIe Adapter [Fastcom]
 # RS-644 Only
        0022  SuperFSCC/4-LVDS Serial PCIe Adapter [Fastcom]
+# Software UARTs
+       0023  SuperFSCC/4 Serial cPCI Adapter [Fastcom]
+# RS-644 Only, Software UARTs
+       0025  SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom]
+# RS-644 Only, Software UARTs
+       0026  SuperFSCC-LVDS Serial PCI Adapter [Fastcom]
+# Software UARTs
+       0027  FSCC/4 Serial PCIe Adapter [Fastcom]
 18fb  Resilience Corporation
 1904  Hangzhou Silan Microelectronics Co., Ltd.
        2031  SC92031 PCI Fast Ethernet Adapter
                1924 5201  SFN4112F-R1
                1924 5202  SFN4112F-R2
        0803  SFC9020 [Solarstorm]
+               1014 0478  2-port 10GbE Low-Latency (R7)
+               1014 0479  2-port 10GbE OpenOnload (R7)
+               1014 04a7  Solarflare 10Gb Low-latency Dual-port HBA (R7)
+               1014 04a8  Solarflare 10Gb Dual-port HBA (R7)
+               103c 2132  Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1)
+               103c 2136  Ethernet 10Gb 2-port 570SFP+ Adapter (R7)
                1924 1201  SFA6902F-R1 SFP+ AOE Adapter
                1924 6200  SFN5122F-R0 SFP+ Server Adapter
                1924 6201  SFN5122F-R1 SFP+ Server Adapter
                1924 6904  SFN5111T-R4 10GBASE-T Server Adapter
                1924 7104  SFN5161T-R4 10GBASE-T Server Adapter
                1924 7904  SFN5151T-R4 10GBASE-T Server Adapter
+       0903  SFC9120
+               1014 04cc  SFN7122F-R2 2x10GbE SFP+ Flareon Ultra
+               1924 8002  SFN7122F-R1 SFP+ Server Adapter
+               1924 8003  SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter
+               1924 8006  SFN7022F-R1 SFP+ Server Adapter
+               1924 8007  SFN7322F-R2 Precision Time SFP+ Server Adapter
+               1924 8009  SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter
+               1924 800a  SFN7x02F-R2 Flareon 7000 Series 10G Adapter
+       0923  SFC9140
+               1924 800b  SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter
        1803  SFC9020 Virtual Function [Solarstorm]
        1813  SFL9021 Virtual Function [Solarstorm]
        6703  SFC4000 rev A iSCSI/Onload [Solarstorm]
        0364  AHA364-PCIe
        0367  AHA367-PCIe
        0370  AHA370-PCIe
+       3641  AHA3641
+       3642  AHA3642
 1942  ClearSpeed Technology plc
        e511  Advance X620 accelerator card
        e521  Advance e620 accelerator card
        0082  MPC8347E TBGA
        0083  MPC8347 TBGA
        0084  MPC8347E PBGA
+               110a 4074  SIMATIC NET CP 1628
        0085  MPC8347 PBGA
+               110a 4046  SIMATIC NET CP 1623
        0086  MPC8343E
        0087  MPC8343
        00b4  MPC8315E
+       00b6  MPC8314E
+               1a56 1101  Killer Xeno Pro Gigabit Ethernet Controller
        00c2  MPC8379E
        00c3  MPC8379
        00c4  MPC8378E
        7010  MPC8641 PCI Host Bridge
        7011  MPC8641D PCI Host Bridge
        7018  MPC8610
+       c006  MPC8308
+               1a56 1201  Killer E2100 Gigabit Ethernet Controller
 1958  Faster Technology, LLC.
 1959  PA Semi, Inc
        a000  PA6T Core
        2048  Attansic L2 Fast Ethernet
        2060  AR8152 v1.1 Fast Ethernet
        2062  AR8152 v2.0 Fast Ethernet
-       e091  Killer E2200 Gigabit Ethernet Controller
+# E2200, E2201, E2205
+       e091  Killer E220x Gigabit Ethernet Controller
 196a  Sensory Networks Inc.
        0101  NodalCore C-1000 Content Classification Accelerator
        0102  NodalCore C-2000 Content Classification Accelerator
                103c 3340  NC552SFP 2-port 10Gb Server Adapter
                103c 3341  NC552m 10Gb 2-port FlexFabric Converged Network Adapter
                103c 3345  NC553m 10Gb 2-port FlexFabric Converged Network Adapter
+               103c 337b  NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter
        0712  OneConnect 10Gb iSCSI Initiator (be3)
        0714  OneConnect 10Gb FCoE Initiator (be3)
                103c 3315  NC553i 10Gb 2-port FlexFabric Converged Network Adapter
+               103c 337b  NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter
 19a8  DAQDATA GmbH
 19ac  Kasten Chase Applied Research
        0001  ACA2400 Crypto Accelerator
 1a1e  3Leaf Systems, Inc.
 1a22  Ambric Inc.
 1a29  Fortinet, Inc.
+       4338  CP8 Content Processor ASIC
 1a2b  Ascom AG
        0000  GESP v1.2
        0001  GESP v1.3
 1a41  Tilera Corp.
        0001  TILE64 processor
        0002  TILEPro processor
-       0200  TILE-Gx36 processor
+       0200  TILE-Gx processor
+       0201  TILE-Gx Processor Virtual Function
+       2000  TILE-Gx PCI Express Root Port
 1a4a  SLAC National Accelerator Lab PPA-REG
        1000  MCOR Power Supply Controller
        1010  AMC EVR - Stockholm Timing Board
        2000  PGPCard - 4 Lane
+       2001  PGPCard - 8 Lane Plus EVR
        2010  PCI-Express EVR
 1a51  Hectronic AB
 1a55  Rohde & Schwarz DVS GmbH
                1a78 0038  FlashMAX PCIe SSD [rev 4]
                1a78 0039  FlashMAX PCIe SSD [rev 4D]
        0040  FlashMAX II
+       0041  FlashMAX II
+       0042  FlashMAX II
 1a84  Commex Technologies
        0001  Vulcan SP HT6210 10-Gigabit Ethernet (rev 02)
 1a88  MEN Mikro Elektronik
        4005  Accelerated Virtual Video Adapter
        4006  Memory Ballooning Controller
 1ab9  Espia Srl
-1acc  Point of View B.V
+1ac8  Aeroflex Gaisler
+1acc  Point of View BV
 1ad7  Spectracom Corporation
        8000  TSync-PCIe Time Code Processor
        9100  TPRO-PCI-66U Timecode Reader/Generator
        0a41  microEnable IV-FULL x1
        0a44  microEnable IV-FULL x4
        0e44  microEnable IV-GigE x4
+1ae9  Wilocity Ltd.
+       0101  Wil6200 PCI Express Root Port
+       0200  Wil6200 PCI Express Port
+       0201  Wil6200 Wireless PCI Express Port
+       0301  Wil6200 802.11ad Wireless Network Adapter
 1aec  Wolfson Microelectronics
 1aed  Fusion-io
        1003  ioDimm3 (v1.2)
        1004  Virtio SCSI
        1005  Virtio RNG
        1009  Virtio filesystem
+       1010  Virtio GPU
+       1012  Virtio input device
+       1110  Inter-VM shared memory
+               1af4 1100  QEMU Virtual Machine
 1af5  Netezza Corp.
 1afa  J & W Electronics Co., Ltd.
 1b03  Magnum Semiconductor, Inc,
        6100  DXT/DXTPro Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder
 1b08  MSC Vertriebs GmbH
+1b0a  Pegatron
 1b13  Jaton Corp
 1b1a  K&F Computing Research Co.
        0e70  GRAPE
 1b21  ASMedia Technology Inc.
        0611  ASM1061 SATA IDE Controller
        0612  ASM1062 Serial ATA Controller
+               1849 0612  Motherboard
        1042  ASM1042 SuperSpeed USB Host Controller
+               1043 8488  P8B WS Motherboard
+               1849 1042  Motherboard
        1080  ASM1083/1085 PCIe to PCI Bridge
+               1849 1080  Motherboard
+1b2c  Opal-RT Technologies Inc.
 1b36  Red Hat, Inc.
+       0001  QEMU PCI-PCI bridge
+       0002  QEMU PCI 16550A Adapter
+               1af4 1100  QEMU Virtual Machine
+       0003  QEMU PCI Dual-port 16550A Adapter
+               1af4 1100  QEMU Virtual Machine
+       0004  QEMU PCI Quad-port 16550A Adapter
+               1af4 1100  QEMU Virtual Machine
+       0005  QEMU PCI Test Device
+               1af4 1100  QEMU Virtual Machine
+       0100  QXL paravirtual graphic card
+               1af4 1100  QEMU Virtual Machine
 1b37  Signal Processing Devices Sweden AB
        0014  ADQ412
 1b3a  Westar Display Technologies
        9130  88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo
                1043 8438  P8P67 Deluxe Motherboard
        9172  88SE9172 SATA 6Gb/s Controller
+       9178  88SE9170 PCIe SATA 6Gb/s Controller
        917a  88SE9172 SATA III 6Gb/s RAID Controller
+       9183  88SS9183 PCIe SSD Controller
        9192  88SE9172 SATA III 6Gb/s RAID Controller
-       91a0  88SE91A0 SATA 6Gb/s Controller
+       91a0  88SE912x SATA 6Gb/s Controller [IDE mode]
        91a4  88SE912x IDE Controller
+       9220  88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller
        9230  88SE9230 PCIe SATA 6Gb/s Controller
+       9235  88SE9235 PCIe 2.0 x2 4-port SATA 6 Gb/s Controller
+       9445  88SE9445 PCIe 2.0 x4 4-Port SAS/SATA 6 Gbps RAID Controller
        9480  88SE9480 SAS/SATA 6Gb/s RAID controller
+       9485  88SE9485 SAS/SATA 6Gb/s controller
 1b55  NetUP Inc.
        2a2c  Dual DVB-S2-CI card
        e2e4  Dual DVB-T/C-CI RF card
 1bad  ReFLEX CES
 1bb0  SimpliVity Corporation
        0002  OmniCube Accelerator OA-3000
+       0010  OmniCube Accelerator OA-3000-2
 1bb3  Bluecherry
        4304  BC-04120A MPEG4 4 port video encoder / decoder
        4309  BC-08240A MPEG4 4 port video encoder / decoder
        0003  MAX3
        0004  MAX4
 1bf4  VTI Instruments Corporation
+       0001  SentinelEX
+1bfd  EeeTOP
 1c1c  Symphony
        0001  82C101
 1c2c  Fiberblaze
+       000a  Capture
+       000f  SmartNIC
+       00a0  FBC4G Capture 4x1Gb
+       00a1  FBC4XG Capture 4x10Gb
+       00a2  FBC8XG Capture 8x10Gb
+       00a3  FBC2XG Capture 2x10Gb
+       00a4  FBC4XGG3 Capture 4x10Gb
+       00a5  FBC2XLG Capture 2x40Gb
+       00a6  FBC1CG Capture 1x100Gb
 # Used on V120 VME Crate Controller
 1c32  Highland Technology, Inc.
+1c33  Daktronics, Inc
 1c3b  Accensus, LLC
        0200  Telas2
 # http://www.accensusllc.com/accensustelas2.html
 1c8a  TSF5 Corporation
        0001  Hunter PCI Express
 1cb1  Collion UG & Co.KG
+1cc5  Embedded Intelligence, Inc.
+       0100  CAN-PCIe-02
+1ce4  Exablaze
+       0001  ExaNIC X4
+       0002  ExaNIC X2
+1cf7  Subspace Dynamics
 1d44  DPT
        a400  PM2x24/PM3224
 1d5c  Fantasia Trading LLC
 5053  Voyetra Technologies
        2010  Daytona Audio Adapter
 50b2  TerraTec Electronic GmbH
-       1111  Terratec XLerate
 5136  S S Technologies
 5143  Qualcomm Inc
 5145  Ensoniq (Old)
        1025  16 photo couple 16 relay Card
        4000  WatchDog Card
 6688  Zycoo Co., Ltd
+       1200  CooVox TDM Analog Module
+       1400  CooVOX TDM GSM Module
+       1600  CooVOX TDM E1/T1 Module
+       1800  CooVOX TDM BRI Module
 # nee Qumranet
 6900  Red Hat, Inc.
 7063  pcHDTV
                8086 5226  Centrino Advanced-N 6230 ABG
        0100  2nd Generation Core Processor Family DRAM Controller
                1028 04aa  XPS 8300
-               1043 844d  P8P67 Deluxe Motherboard
+               1043 844d  P8P67/P8H67 Series Motherboard
        0101  Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port
                1028 04b2  Vostro 3350
                106b 00dc  MacBookPro8,2 [Core i7, 15", 2011]
        0102  2nd Generation Core Processor Family Integrated Graphics Controller
                1028 04aa  XPS 8300
+               1043 0102  P8H67 Series Motherboard
        0104  2nd Generation Core Processor Family DRAM Controller
                1028 04a3  Precision M4600
                1028 04b2  Vostro 3350
                1028 04cc  Vostro 3350
        0150  Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller
                1043 84ca  P8H77-I Motherboard
+               1849 0150  Motherboard
        0151  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
                1043 1477  N56VZ
+               1043 844d  P8 series motherboard
                1043 84ca  P8H77-I Motherboard
+               8086 2010  Server Board S1200BTS
        0152  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
                1043 84ca  P8H77-I Motherboard
        0153  3rd Gen Core Processor Thermal Subsystem
                1043 1517  Zenbook Prime UX31A
        0154  3rd Gen Core processor DRAM Controller
+               1025 0813  Aspire R7-571
+               103c 17f6  ProBook 4540s
                1043 1477  N56VZ
                1043 1517  Zenbook Prime UX31A
        0155  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
+               8086 2010  Server Board S1200BTS
        0156  3rd Gen Core processor Graphics Controller
        0158  Xeon E3-1200 v2/Ivy Bridge DRAM Controller
+               1043 844d  P8 series motherboard
+               8086 2010  Server Board S1200BTS
        0159  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
        015a  Xeon E3-1200 v2/Ivy Bridge Graphics Controller
        015c  Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller
        015d  Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
+               1043 844d  P8 series motherboard
        015e  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
        0162  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
+               1849 0162  Motherboard
        0166  3rd Gen Core processor Graphics Controller
                1043 1517  Zenbook Prime UX31A
                1043 2103  N56VZ
        016a  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
+               1043 844d  P8B WS Motherboard
        0172  Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
        0176  3rd Gen Core processor Graphics Controller
        0309  80303 I/O Processor PCI-to-PCI Bridge
        0372  80333 Segment-B PCI Express-to-PCI Express Bridge
        0373  80333 B-Bus IOAPIC
        0374  80333 Address Translation Unit
-       0402  Haswell Integrated Graphics Controller
-       0406  Haswell Integrated Graphics Controller
-       040a  Haswell Integrated Graphics Controller
-       0412  Haswell Integrated Graphics Controller
-       0416  Haswell Integrated Graphics Controller
-       041a  Haswell Integrated Graphics Controller
+       0402  Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller
+       0406  4th Gen Core Processor Integrated Graphics Controller
+       040a  Xeon E3-1200 v3 Processor Integrated Graphics Controller
+       0412  Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller
+       0416  4th Gen Core Processor Integrated Graphics Controller
+               17aa 220e  ThinkPad T440p
+       041a  Xeon E3-1200 v3 Processor Integrated Graphics Controller
+       0433  Coleto Creek ACC - ME/CPM interface
+       0435  Coleto Creek PCIe Endpoint
        0436  DH8900CC Null Device
        0438  DH8900CC Series Gigabit Network Connection
        043a  DH8900CC Series Gigabit Fiber Network Connection
                8086 0270  Dual Band Wireless-AC 3160
 # Wilkins Peak 1 1x1 80Mhz + BT - lenovo/HP
                8086 8270  Dual Band Wireless AC 3160
+# PowerVR SGX 545
+       08cf  Atom Processor Z2760 Integrated Graphics Controller
+       095a  Wireless 7265
+# Stone Peak 2 AC
+               8086 1010  Dual Band Wireless-AC 7265
+# Stone Peak 2 AGN
+               8086 5000  Dual Band Wireless-N 7265
+# Stone Peak 2 BGN
+               8086 5002  Wireless-N 7265
+# Stone Peak 2 AGN
+               8086 500a  Dual Band Wireless-N 7265
+# Stone Peak 2 AC
+               8086 5010  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 5012  Dual Band Wireless-AC 7265
+# Stone Peak 2 AGN
+               8086 5020  Dual Band Wireless-N 7265
+# Stone Peak 2 AGN
+               8086 502a  Dual Band Wireless-N 7265
+# Maple Peak AC
+               8086 5090  Dual Band Wireless-AC 7265
+# Stone Peak 2 AGN
+               8086 5100  Dual Band Wireless-AC 7265
+# Stone Peak 2 AGN
+               8086 510a  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 5110  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 5112  Dual Band Wireless-AC 7265
+# Maple Peak AC
+               8086 5190  Dual Band Wireless-AC 7265
+# Stone Peak 2 AGN
+               8086 5400  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 5410  Dual Band Wireless-AC 7265
+# Stone Peak 2 AGN
+               8086 5420  Dual Band Wireless-N 7265
+# Maple Peak AC
+               8086 5490  Dual Band Wireless-AC 7265
+# Maple Peak AC
+               8086 5590  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 9010  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 9012  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 9110  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 9112  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 9210  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 9310  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 9410  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 9510  Dual Band Wireless-AC 7265
+       095b  Wireless 7265
+# Stone Peak 2 AGN
+               8086 5200  Dual Band Wireless-N 7265
+# Stone Peak 2 BGN
+               8086 5202  Wireless-N 7265
+# Stone Peak 2 AC
+               8086 5210  Dual Band Wireless-AC 7265
+# Maple Peak AC
+               8086 5290  Dual Band Wireless-AC 7265
+# Stone Peak 2 BGN
+               8086 5302  Dual Band Wireless-AC 7265
+# Stone Peak 2 AC
+               8086 5310  Dual Band Wireless-AC 7265
        0960  80960RP (i960RP) Microprocessor/Bridge
        0962  80960RM (i960RM) Bridge
        0964  80960RP (i960RP) Microprocessor/Bridge
        0a04  Haswell-ULT DRAM Controller
+               17aa 2214  ThinkPad X240
        0a06  Haswell-ULT Integrated Graphics Controller
+       0a0c  Haswell-ULT HD Audio Controller
+               17aa 2214  ThinkPad X240
        0a16  Haswell-ULT Integrated Graphics Controller
+               17aa 2214  ThinkPad X240
        0a22  Haswell-ULT Integrated Graphics Controller
        0a26  Haswell-ULT Integrated Graphics Controller
        0a2a  Haswell-ULT Integrated Graphics Controller
                105b 0d7c  D270S/D250S Motherboard
        0bf6  Atom Processor D2xxx/N2xxx DRAM Controller
        0bf7  Atom Processor D2xxx/N2xxx DRAM Controller
-       0c00  Haswell DRAM Controller
-       0c01  Haswell PCI Express x16 Controller
-       0c04  Haswell DRAM Controller
-       0c05  Haswell PCI Express x8 Controller
-       0c08  Haswell DRAM Controller
-       0c09  Haswell PCI Express x4 Controller
-       0c0c  Haswell HD Audio Controller
+       0c00  4th Gen Core Processor DRAM Controller
+       0c01  Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller
+       0c04  Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
+               103c 1909  ZBook 15
+               17aa 220e  ThinkPad T440p
+       0c05  Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller
+       0c08  Xeon E3-1200 v3 Processor DRAM Controller
+       0c09  Xeon E3-1200 v3/4th Gen Core Processor PCI Express x4 Controller
+       0c0c  Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller
+               17aa 220e  ThinkPad T440p
        0c46  Atom Processor S1200 PCI Express Root Port 1
        0c47  Atom Processor S1200 PCI Express Root Port 2
        0c48  Atom Processor S1200 PCI Express Root Port 3
        0d16  Crystal Well Integrated Graphics Controller
        0d26  Crystal Well Integrated Graphics Controller
        0d36  Crystal Well Integrated Graphics Controller
-       0e00  Ivytown DMI2
-       0e01  Ivytown PCI Express Root Port in DMI2 Mode
-       0e02  Ivytown PCI Express Root Port 1a
-       0e03  Ivytown PCI Express Root Port 1b
-       0e04  Ivytown PCI Express Root Port 2a
-       0e05  Ivytown PCI Express Root Port 2b
-       0e06  Ivytown PCI Express Root Port 2c
-       0e07  Ivytown PCI Express Root Port 2d
-       0e08  Ivytown PCI Express Root Port 3a
-       0e09  Ivytown PCI Express Root Port 3b
-       0e0a  Ivytown PCI Express Root Port 3c
-       0e0b  Ivytown PCI Express Root Port 3d
-       0e1c  Ivytown Debug and Error Injection Related Registers
-       0e1d  Ivytown R2PCIe
-       0e1e  Ivytown Semaphore and Scratchpad Configuration Registers
-       0e1f  Ivytown Semaphore and Scratchpad Configuration Registers
-       0e20  Ivytown Crystal Beach DMA Channel 0
-       0e21  Ivytown Crystal Beach DMA Channel 1
-       0e22  Ivytown Crystal Beach DMA Channel 2
-       0e23  Ivytown Crystal Beach DMA Channel 3
-       0e24  Ivytown Crystal Beach DMA Channel 4
-       0e25  Ivytown Crystal Beach DMA Channel 5
-       0e26  Ivytown Crystal Beach DMA Channel 6
-       0e27  Ivytown Crystal Beach DMA Channel 7
-       0e28  Ivytown VTd/Memory Map/Misc
-       0e29  Ivytown Memory Hotplug
-       0e2a  Ivytown IIO RAS
-       0e2c  Ivytown IOAPIC
-       0e2e  Ivytown CBDMA
-       0e2f  Ivytown CBDMA
-       0e30  Ivytown Home Agent 0
-       0e32  Ivytown QPI Link 0
-       0e33  Ivytown QPI Link 1
-       0e34  Ivytown PCI Express Ring Performance Monitoring
-       0e36  Ivytown QPI Ring Performance Ring Monitoring
-       0e37  Ivytown QPI Ring Performance Ring Monitoring
-       0e38  Ivytown Home Agent 1
-       0e3a  Ivytown QPI Link 2
-       0e3e  Ivytown QPI Ring Performance Ring Monitoring
-       0e3f  Ivytown QPI Ring Performance Ring Monitoring
-       0e40  Ivytown QPI Link 2
-       0e41  Ivytown QPI Ring Registers
-       0e43  Ivytown QPI Link Reut 2
-       0e44  Ivytown QPI Link Reut 2
-       0e60  Ivytown Home Agent 1
-       0e68  Ivytown Integrated Memory Controller 1 Target Address/Thermal Registers
-       0e6a  Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers
-       0e6b  Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers
-       0e6c  Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers
-       0e6d  Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers
-       0e71  Ivytown Integrated Memory Controller 0 RAS Registers
-       0e79  Ivytown Integrated Memory Controller 1 RAS Registers
-       0e80  Ivytown QPI Link 0
-       0e81  Ivytown QPI Ring Registers
-       0e83  Ivytown QPI Link Reut 0
-       0e84  Ivytown QPI Link Reut 0
-       0e90  Ivytown QPI Link 1
-       0e93  Ivytown QPI Link 1
-       0e94  Ivytown QPI Link Reut 1
-       0ea0  Ivytown Home Agent 0
-       0ea8  Ivytown Integrated Memory Controller 0 Target Address/Thermal Registers
-       0eaa  Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers
-       0eab  Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers
-       0eac  Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers
-       0ead  Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers
-       0eb0  Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 0
-       0eb1  Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 1
-       0eb2  Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0
-       0eb3  Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1
-       0eb4  Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 2
-       0eb5  Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 3
-       0eb6  Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2
-       0eb7  Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3
-       0ec0  Ivytown Power Control Unit 0
-       0ec1  Ivytown Power Control Unit 1
-       0ec2  Ivytown Power Control Unit 2
-       0ec3  Ivytown Power Control Unit 3
-       0ec4  Ivytown Power Control Unit 4
-       0ec8  Ivytown System Address Decoder
-       0ec9  Ivytown Broadcast Registers
-       0eca  Ivytown Broadcast Registers
-       0ed8  Ivytown DDRIO
-       0ed9  Ivytown DDRIO
-       0edc  Ivytown DDRIO
-       0edd  Ivytown DDRIO
-       0ede  Ivytown DDRIO
-       0edf  Ivytown DDRIO
-       0ee0  Ivytown Unicast Registers
-       0ee1  Ivytown Unicast Registers
-       0ee2  Ivytown Unicast Registers
-       0ee3  Ivytown Unicast Registers
-       0ee4  Ivytown Unicast Registers
-       0ee5  Ivytown Unicast Registers
-       0ee6  Ivytown Unicast Registers
-       0ee7  Ivytown Unicast Registers
-       0ee8  Ivytown Unicast Registers
-       0ee9  Ivytown Unicast Registers
-       0eea  Ivytown Unicast Registers
-       0eeb  Ivytown Unicast Registers
-       0eec  Ivytown Unicast Registers
-       0eed  Ivytown Unicast Registers
-       0eee  Ivytown Unicast Registers
-       0ef0  Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 0
-       0ef1  Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 1
-       0ef2  Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0
-       0ef3  Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1
-       0ef4  Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 2
-       0ef5  Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 3
-       0ef6  Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2
-       0ef7  Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3
-       0ef8  Ivytown DDRIO
-       0ef9  Ivytown DDRIO
-       0efa  Ivytown DDRIO
-       0efb  Ivytown DDRIO
-       0efc  Ivytown DDRIO
-       0efd  Ivytown DDRIO
+       0e00  Xeon E7 v2/Xeon E5 v2/Core i7 DMI2
+       0e01  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port in DMI2 Mode
+       0e02  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1a
+       0e03  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1b
+       0e04  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2a
+       0e05  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2b
+       0e06  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2c
+       0e07  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2d
+       0e08  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3a
+       0e09  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3b
+       0e0a  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3c
+       0e0b  Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3d
+       0e10  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers
+       0e13  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers
+       0e17  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers
+       0e18  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers
+       0e1c  Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers
+       0e1d  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe
+       0e1e  Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers
+       0e1f  Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers
+       0e20  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0
+       0e21  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1
+       0e22  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2
+       0e23  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3
+       0e24  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4
+       0e25  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5
+       0e26  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6
+       0e27  Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7
+       0e28  Xeon E7 v2/Xeon E5 v2/Core i7 VTd/Memory Map/Misc
+       0e29  Xeon E7 v2/Xeon E5 v2/Core i7 Memory Hotplug
+       0e2a  Xeon E7 v2/Xeon E5 v2/Core i7 IIO RAS
+       0e2c  Xeon E7 v2/Xeon E5 v2/Core i7 IOAPIC
+       0e2e  Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA
+       0e2f  Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA
+       0e30  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0
+       0e32  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0
+       0e33  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1
+       0e34  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe
+       0e36  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
+       0e37  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
+       0e38  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1
+       0e3a  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2
+       0e3e  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
+       0e3f  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
+       0e40  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2
+       0e41  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers
+       0e43  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2
+       0e44  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2
+       0e45  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register
+       0e47  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register
+       0e60  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1
+       0e68  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Target Address/Thermal Registers
+       0e6a  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
+       0e6b  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
+       0e6c  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
+       0e6d  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
+       0e71  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 RAS Registers
+       0e74  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe
+       0e75  Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe
+       0e77  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers
+       0e79  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 RAS Registers
+       0e7d  Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers
+       0e7f  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers
+       0e80  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0
+       0e81  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers
+       0e83  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0
+       0e84  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0
+       0e85  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register
+       0e87  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Registers
+       0e90  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1
+       0e93  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1
+       0e94  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 1
+       0e95  Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register
+       0ea0  Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0
+       0ea8  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Target Address/Thermal Registers
+       0eaa  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
+       0eab  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
+       0eac  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
+       0ead  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
+       0eae  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
+       0eaf  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
+       0eb0  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 0
+       0eb1  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 1
+       0eb2  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0
+       0eb3  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1
+       0eb4  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 2
+       0eb5  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 3
+       0eb6  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2
+       0eb7  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3
+       0ebc  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
+       0ebe  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
+       0ebf  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
+       0ec0  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 0
+       0ec1  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 1
+       0ec2  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 2
+       0ec3  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 3
+       0ec4  Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 4
+       0ec8  Xeon E7 v2/Xeon E5 v2/Core i7 System Address Decoder
+       0ec9  Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers
+       0eca  Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers
+       0ed8  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0ed9  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0edc  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0edd  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0ede  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0edf  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0ee0  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0ee1  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0ee2  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0ee3  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0ee4  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0ee5  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0ee6  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0ee7  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0ee8  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0ee9  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0eea  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0eeb  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0eec  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0eed  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0eee  Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+       0ef0  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 0
+       0ef1  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 1
+       0ef2  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0
+       0ef3  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1
+       0ef4  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 2
+       0ef5  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 3
+       0ef6  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2
+       0ef7  Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3
+       0ef8  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0ef9  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0efa  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0efb  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0efc  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+       0efd  Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
        0f00  ValleyView SSA-CUnit
        0f01  ValleyView SSA-CUnit
        0f02  ValleyView SSA-CUnit
                1028 0134  PowerEdge 600SC
                1028 0151  Optiplex GX270
                107b 8920  PRO/1000 MT Desktop Adapter
+               1af4 1100  QEMU Virtual Machine
                8086 001e  PRO/1000 MT Desktop Adapter
                8086 002e  PRO/1000 MT Desktop Adapter
                8086 1376  PRO/1000 GT Desktop Adapter
                1179 0001  PRO/1000 MT Mobile Connection
                8086 101e  PRO/1000 MT Mobile Connection
        1026  82545GM Gigabit Ethernet Controller
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                8086 1000  PRO/1000 MT Server Connection
                8086 1001  PRO/1000 MT Server Adapter
                103c 704e  Dual Port 1000Base-T (PCIe) [AD337A]
                1775 1100  CR11/VR11 Single Board Computer
                1775 6003  Telum GE-QT
+               18df 1214  2x 1GbE, PCIe x1, dual Intel 82571EB chips
                8086 005e  PRO/1000 PT Dual Port Server Connection
                8086 105e  PRO/1000 PT Dual Port Network Connection
                8086 10d5  82571PT Gigabit PT Quad Port Server ExpressModule
        109a  82573L Gigabit Ethernet Controller
                1179 ff10  PRO/1000 PL
                17aa 2001  ThinkPad T60
-               17aa 207e  ThinkPad X60s
+               17aa 207e  ThinkPad X60/X60s
                8086 109a  PRO/1000 PL Network Connection
                8086 309c  Desktop Board D945GTP
                8086 30a5  Desktop Board D975XBX
        10ce  82567V-2 Gigabit Network Connection
        10d3  82574L Gigabit Network Connection
                103c 3250  NC112T PCI Express single Port Gigabit Server Adapter
+               1043 8369  Motherboard
                10a9 8029  Prism XL Single Port Gigabit Ethernet
                15d9 060a  X7SPA-H/X7SPA-HF Motherboard
+               15d9 060d  C7SIM-Q Motherboard
                8086 0001  Gigabit CT2 Desktop Adapter
+               8086 357a  Server Board S1200BTS
                8086 a01f  Gigabit CT Desktop Adapter
                e4bf 50c1  PC1-GROOVE
                e4bf 50c2  PC2-LIMBO
        10ed  82599 Ethernet Controller Virtual Function
        10ef  82578DM Gigabit Network Connection
                1028 02da  OptiPlex 980
+               15d9 060d  C7SIM-Q Motherboard
        10f0  82578DC Gigabit Network Connection
        10f1  82598EB 10-Gigabit AF Dual Port Network Connection
                8086 a20f  10-Gigabit AF DA Dual Port Server Adapter
                103c 18d0  Ethernet 10Gb 2-port 560FLB Adapter
                8086 000c  Ethernet X520 10GbE Dual Port KX4-KR Mezz
        10f9  82599 10 Gigabit Dual Port Network Connection
-       10fb  82599EB 10-Gigabit SFI/SFP+ Network Connection
+       10fb  82599ES 10-Gigabit SFI/SFP+ Network Connection
                1028 1f72  Ethernet 10G 4P X520/I350 rNDC
                103c 17d0  Ethernet 10Gb 2-port 560FLR-SFP+ Adapter
                103c 17d2  Ethernet 10Gb 2-port 560M Adapter
                103c 17d3  Ethernet 10Gb 2-port 560SFP+ Adapter
                103c 211b  Ethernet 10Gb 1-port P560FLR-SFP+ Adapter
                103c 2147  Ethernet 10Gb 1-port 561i Adapter
+               103c 2159  Ethernet 10Gb 2-port 562i Adapter
                108e 7b11  Ethernet Server Adapter X520-2
                1734 11a9  10 Gigabit Dual Port Network Connection
+               17aa 1071  ThinkServer X520-2 AnyFabric
                8086 0002  Ethernet Server Adapter X520-DA2
                8086 0003  Ethernet Server Adapter X520-2
                8086 0006  Ethernet Server Adapter X520-1
+               8086 0008  Ethernet OCP Server Adapter X520-2
                8086 000a  Ethernet Server Adapter X520-1
                8086 000c  Ethernet Server Adapter X520-2
                8086 7a11  Ethernet Server Adapter X520-2
                172a 0000  AEP SSL Accelerator
        1209  8255xER/82551IT Fast Ethernet Controller
                140b 0610  PMC610 quad Ethernet board
+               1af4 1100  QEMU Virtual Machine
                4c53 1050  CT7 mainboard
                4c53 1051  CE7 mainboard
                4c53 1070  PC6 mainboard
                1668 1100  EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)
                1775 1100  CR11/VR11 Single Board Computer
                1775 ce90  CE9
+               1af4 1100  QEMU Virtual Machine
                4c53 1080  CT8 mainboard
                4c53 10e0  PSL09 PrPMC
                8086 0001  EtherExpress PRO/100B (TX)
        1501  82567V-3 Gigabit Network Connection
        1502  82579LM Gigabit Network Connection
                1028 04a3  Precision M4600
+               8086 357a  Server Board S1200BTS
        1503  82579V Gigabit Network Connection
                1043 849c  P8P67 Deluxe Motherboard
        1507  Ethernet Express Module X520-P2
                108e 7b13  Dual 10GBASE-T LP
        1520  I350 Ethernet Controller Virtual Function
        1521  I350 Gigabit Network Connection
+               1028 0602  Gigabit 2P I350-t LOM
                1028 1f60  Intel GbE 4P I350crNDC
                1028 1f62  Intel GbE 2P I350crNDC
+               1028 ff9a  Gigabit 4P X710/I350 rNDC
                103c 17d1  Ethernet 1Gb 4-port 366FLR Adapter
+               103c 2003  Ethernet 1Gb 2-port 367i Adapter
+               103c 2226  Ethernet 1Gb 1-port 364i Adapter
                103c 337f  Ethernet 1Gb 2-port 361i Adapter
                103c 3380  Ethernet 1Gb 4-port 366i Adapter
                103c 339e  Ethernet 1Gb 2-port 361T Adapter
                108e 7b16  Quad Port GbE PCIe 2.0 ExpressModule, UTP
                108e 7b18  Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP
                10a9 802a  UV2-BaseIO dual-port GbE
+               17aa 1074  ThinkServer I350-T4 AnyFabric
                8086 0001  Ethernet Server Adapter I350-T4
                8086 0002  Ethernet Server Adapter I350-T2
                8086 00a1  Ethernet Server Adapter I350-T4
                8086 0002  Ethernet Server Adapter I350-T2
                8086 0003  Ethernet Server Adapter I350-F4
                8086 0004  Ethernet Server Adapter I350-F2
+               8086 0005  Ethernet Server Adapter I350-F1
+               8086 00a2  Ethernet Server Adapter I350-T2
                8086 00a3  Ethernet Server Adapter I350-F4
                8086 00a4  Ethernet Server Adapter I350-F2
        1523  I350 Gigabit Backplane Connection
+               1028 1f9b  Gigabit 4P I350 bNDC
                103c 1784  Ethernet 1Gb 2-port 361FLB Adapter
                103c 18d1  Ethernet 1Gb 2-port 361FLB Adapter
+               103c 1989  Ethernet 1Gb 2-port 363i Adapter
                103c 339f  Ethernet 1Gb 4-port 366M Adapter
                8086 1f52  1GbE 4P I350 Mezz
        1524  I350 Gigabit Connection
        1528  Ethernet Controller 10-Gigabit X540-AT2
                1028 1f61  Ethernet 10G 4P X540/I350 rNDC
                103c 192d  561FLR-T 2-port 10Gb Ethernet Adapter
+               103c 2004  Ethernet 10Gb 2-port 561i Adapter
                103c 211a  Ethernet 10Gb 2-port 561T Adapter
                108e 7b14  Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T
                108e 7b15  Sun Dual Port 10 GbE PCIe 2.0 Low Profile Adapter, Base-T
                1137 00bf  Ethernet Converged Network Adapter X540-T2
+               17aa 1073  ThinkServer X540-T2 AnyFabric
                8086 0001  Ethernet Converged Network Adapter X540-T2
                8086 0002  Ethernet Converged Network Adapter X540-T1
                8086 001a  Ethernet Converged Network Adapter X540-T2
        152a  82599 10 Gigabit Dual Port Backplane Connection with FCoE
        1533  I210 Gigabit Network Connection
                103c 0003  Ethernet Server Adapter I210-T1
+               17aa 1100  ThinkServer Ethernet Server Adapter
                8086 0001  Ethernet Server Adapter I210-T1
                8086 0002  Ethernet Server Adapter I210-T1
        1534  I210 Gigabit Network Connection
        1536  I210 Gigabit Fiber Network Connection
        1537  I210 Gigabit Backplane Connection
-       1538  I210 Gigabit Network Connection
        1539  I211 Gigabit Network Connection
        153a  Ethernet Connection I217-LM
+               103c 1909  ZBook 15
+               17aa 220e  ThinkPad T440p
        153b  Ethernet Connection I217-V
        1547  DSL3510 Thunderbolt Port [Cactus Ridge]
        1549  DSL3510 Thunderbolt Controller [Cactus Ridge]
                8086 011a  Ethernet Converged Network Adapter X520-4
                8086 011b  Ethernet Converged Network Adapter X520-4
                8086 011c  Ethernet Converged Network Adapter X520-4
+       154c  XL710 X710 Virtual Function
        154d  Ethernet 10G 2P X520 Adapter
                8086 7b11  10GbE 2P X520 Adapter
        1557  82599 10 Gigabit Network Connection
+               8086 0001  Ethernet OCP Server Adapter X520-1
+       1558  Ethernet Converged Network Adapter X520-Q1
+               8086 011a  Ethernet Converged Network Adapter X520-Q1
+               8086 011b  Ethernet Converged Network Adapter X520-Q1
        1559  Ethernet Connection I218-V
        155a  Ethernet Connection I218-LM
-       1560  Ethernet Controller X540-AT1
+               17aa 2214  ThinkPad X240
+       155c  Ethernet Server Bypass Adapter
+               8086 0001  Ethernet Server Bypass Adapter X540-T2
+       155d  Ethernet Server Bypass Adapter
+               8086 0001  Ethernet Server Bypass Adapter X520-SR2
+               8086 0002  Ethernet Server Bypass Adapter X520-LR2
+       1560  Ethernet Controller X540
+       156f  Ethernet Connection I219-LM
+       1570  Ethernet Connection I219-V
+       1571  XL710 X710 Virtual Function
+       1572  Ethernet 10G 2P X710 Adapter
+               1028 1f99  Ethernet 10G 4P X710/I350 rNDC
+               8086 0001  Ethernet Converged Network Adapter X710-4
+               8086 0002  Ethernet Converged Network Adapter X710-4
+               8086 0004  Ethernet Converged Network Adapter X710-4
+               8086 0005  Ethernet 10G 4P X710 Adapter
+               8086 0006  Ethernet 10G2P X710 Adapter
+               8086 0007  Ethernet Converged Network Adapter X710-2
+               8086 0008  Ethernet Converged Network Adapter X710-2
        157b  I210 Gigabit Network Connection
+       157c  I210 Gigabit Backplane Connection
+       1580  Ethernet Controller XL710 for 40Gbe backplane
+       1581  Ethernet Controller X710 for 10Gbe backplane
+               1028 1f98  Ethernet 10G 4P X710-k bNDC
+       1583  Ethernet Controller XL710 for 40GbE QSFP+
+               8086 0001  Ethernet Converged Network Adapter XL710-Q2
+               8086 0002  Ethernet Converged Network Adapter XL710-Q2
+               8086 0003  Ethernet I/O Module XL710-Q2
+       1584  Ethernet Controller XL710 for 40GbE QSFP+
+               8086 0001  Ethernet Converged Network Adapter XL710-Q1
+               8086 0002  Ethernet Converged Network Adapter XL710-Q1
+               8086 0003  Ethernet I/O Module XL710-Q1
+       1585  Ethernet Controller XL710 for 10GbE QSFP+
+       15a0  Ethernet Connection (2) I218-LM
+       15a1  Ethernet Connection (2) I218-V
+       15a2  Ethernet Connection (3) I218-LM
+       15a3  Ethernet Connection (3) I218-V
+       1600  Broadwell-U Host Bridge -OPI
+       1601  Broadwell-U PCI Express x16 Controller
+       1602  Broadwell-U Integrated Graphics
+       1603  Broadwell-U Camarillo Device
+       1604  Broadwell-U Host Bridge -OPI
+       1605  Broadwell-U PCI Express x8 Controller
+       1606  Broadwell-U Integrated Graphics
+       1607  Broadwell-U CHAPS Device
+       1608  Broadwell-U Host Bridge -OPI
+       1609  Broadwell-U x4 PCIe
+       160a  Broadwell-U Integrated Graphics
+       160b  Broadwell-U Integrated Graphics
+       160c  Broadwell-U Audio Controller
+       160d  Broadwell-U Integrated Graphics
+       160e  Broadwell-U Integrated Graphics
+       160f  Broadwell-U SoftSKU
+       1610  Broadwell-U Host Bridge - DMI
+       1612  Broadwell-U Integrated Graphics
+       1614  Broadwell-U Host Bridge - DMI
+       1616  Broadwell-U Integrated Graphics
+       1618  Broadwell-U Host Bridge - DMI
+       161a  Broadwell-U Integrated Graphics
+       161b  Broadwell-U Integrated Graphics
+       161d  Broadwell-U Integrated Graphics
+       161e  Broadwell-U Integrated Graphics
+       1622  Broadwell-U Integrated Graphics
+       1626  Broadwell-U Integrated Graphics
+       162a  Broadwell-U Integrated Graphics
+       162b  Broadwell-U Integrated Graphics
+       162d  Broadwell-U Integrated Graphics
+       162e  Broadwell-U Integrated Graphics
+       1632  Broadwell-U Integrated Graphics
+       1636  Broadwell-U Integrated Graphics
+       163a  Broadwell-U Integrated Graphics
+       163b  Broadwell-U Integrated Graphics
+       163d  Broadwell-U Integrated Graphics
+       163e  Broadwell-U Integrated Graphics
        1960  80960RP (i960RP) Microprocessor
                101e 0431  MegaRAID 431 RAID Controller
                101e 0438  MegaRAID 438 Ultra2 LVD RAID Controller
        1c01  6 Series/C200 Series Chipset Family 4 port SATA IDE Controller
        1c02  6 Series/C200 Series Chipset Family SATA AHCI Controller
                1028 04aa  XPS 8300
-               1043 844d  P8P67 Deluxe Motherboard
+               1043 844d  P8 series motherboard
+               8086 7270  Server Board S1200BTS
        1c03  6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller
                1028 04a3  Precision M4600
                1028 04b2  Vostro 3350
        1c10  6 Series/C200 Series Chipset Family PCI Express Root Port 1
                1028 04aa  XPS 8300
                1028 04da  Vostro 3750
-               8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
+               1043 844d  P8 series motherboard
+               8086 7270  Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
        1c12  6 Series/C200 Series Chipset Family PCI Express Root Port 2
                1028 04aa  XPS 8300
                8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
                1028 04aa  XPS 8300
        1c18  6 Series/C200 Series Chipset Family PCI Express Root Port 5
                1028 04da  Vostro 3750
+               8086 7270  Server Board S1200BTS
        1c1a  6 Series/C200 Series Chipset Family PCI Express Root Port 6
                1028 04da  Vostro 3750
+               1043 844d  P8 series motherboard
        1c1c  6 Series/C200 Series Chipset Family PCI Express Root Port 7
        1c1e  6 Series/C200 Series Chipset Family PCI Express Root Port 8
+               1043 844d  P8 series motherboard
        1c20  6 Series/C200 Series Chipset Family High Definition Audio Controller
                1028 0490  Alienware M17x R3
                1028 04a3  Precision M4600
                1028 04b2  Vostro 3350
                1028 04da  Vostro 3750
                1043 8418  P8P67 Deluxe Motherboard
+               1043 841b  P8H67 Series Motherboard
 # Realtek ALC888 audio codec
                8086 2008  DQ67SW board
                8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
                1028 04aa  XPS 8300
                1028 04b2  Vostro 3350
                1028 04da  Vostro 3750
-               1043 844d  P8P67 Deluxe Motherboard
-               8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
+               1043 844d  P8 series motherboard
+               8086 7270  Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
        1c24  6 Series/C200 Series Chipset Family Thermal Management Controller
        1c25  6 Series/C200 Series Chipset Family DMI to PCI Bridge
        1c26  6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1
                1028 04aa  XPS 8300
                1028 04b2  Vostro 3350
                1028 04da  Vostro 3750
-               1043 844d  P8P67 Deluxe Motherboard
-               8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
+               1043 844d  P8 series motherboard
+               8086 7270  Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
        1c27  6 Series/C200 Series Chipset Family USB Universal Host Controller #1
                8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
        1c2c  6 Series/C200 Series Chipset Family USB Universal Host Controller #5
                1028 04aa  XPS 8300
                1028 04b2  Vostro 3350
                1028 04da  Vostro 3750
-               1043 844d  P8P67 Deluxe Motherboard
-               8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
+               1043 844d  P8 series motherboard
+               8086 7270  Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
        1c33  6 Series/C200 Series Chipset Family LAN Controller
        1c35  6 Series/C200 Series Chipset Family VECI Controller
        1c3a  6 Series/C200 Series Chipset Family MEI Controller #1
                1028 04aa  XPS 8300
                1028 04b2  Vostro 3350
                1028 04da  Vostro 3750
-               1043 844d  P8P67 Deluxe Motherboard
+               1043 844d  P8 series motherboard
                8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
        1c3b  6 Series/C200 Series Chipset Family MEI Controller #2
        1c3c  6 Series/C200 Series Chipset Family IDE-r Controller
                8086 7270  Apple MacBookPro8,2 [Core i7, 15", 2011]
        1c4a  H67 Express Chipset Family LPC Controller
                1028 04aa  XPS 8300
+               1043 844d  P8H67 Series Motherboard
        1c4b  HM67 Express Chipset Family LPC Controller
                1028 04b2  Vostro 3350
                1028 04da  Vostro 3750
        1c50  B65 Express Chipset Family LPC Controller
        1c51  6 Series/C200 Series Chipset Family LPC Controller
        1c52  C202 Chipset Family LPC Controller
+               8086 7270  Server Board S1200BTS
        1c53  6 Series/C200 Series Chipset Family LPC Controller
        1c54  C204 Chipset Family LPC Controller
        1c55  6 Series/C200 Series Chipset Family LPC Controller
        1c56  C206 Chipset Family LPC Controller
+               1043 844d  P8B WS Motherboard
        1c57  6 Series/C200 Series Chipset Family LPC Controller
        1c58  Upgraded B65 Express Chipset Family LPC Controller
        1c59  Upgraded HM67 Express Chipset Family LPC Controller
        1e01  7 Series Chipset Family 4-port SATA Controller [IDE mode]
        1e02  7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode]
                1043 84ca  P8H77-I Motherboard
+               1849 1e02  Motherboard
        1e03  7 Series Chipset Family 6-port SATA Controller [AHCI mode]
                1043 1477  N56VZ
                1043 1517  Zenbook Prime UX31A
                1043 1477  N56VZ
                1043 1517  Zenbook Prime UX31A
                1043 84ca  P8H77-I Motherboard
+               1849 1e10  Motherboard
        1e12  7 Series/C210 Series Chipset Family PCI Express Root Port 2
                1043 1477  N56VZ
                1043 1517  Zenbook Prime UX31A
        1e14  7 Series/C210 Series Chipset Family PCI Express Root Port 3
        1e16  7 Series/C210 Series Chipset Family PCI Express Root Port 4
                1043 1477  N56VZ
+               1849 1618  Z77 Extreme4 motherboard
        1e18  7 Series/C210 Series Chipset Family PCI Express Root Port 5
                1043 84ca  P8H77-I Motherboard
+               1849 1e18  Motherboard
        1e1a  7 Series/C210 Series Chipset Family PCI Express Root Port 6
+               1849 1e1a  Motherboard
        1e1c  7 Series/C210 Series Chipset Family PCI Express Root Port 7
        1e1e  7 Series/C210 Series Chipset Family PCI Express Root Port 8
+               1849 1e1e  Motherboard
        1e20  7 Series/C210 Series Chipset Family High Definition Audio Controller
                1043 1477  N56VZ
                1043 1517  Zenbook Prime UX31A
                1043 8415  P8H77-I Motherboard
+               1849 1898  Z77 Extreme4 motherboard
        1e22  7 Series/C210 Series Chipset Family SMBus Controller
                1043 1477  N56VZ
                1043 1517  Zenbook Prime UX31A
                1043 84ca  P8H77-I Motherboard
+               1849 1e22  Motherboard
        1e24  7 Series/C210 Series Chipset Family Thermal Management Controller
                1043 1517  Zenbook Prime UX31A
        1e25  7 Series/C210 Series Chipset Family DMI to PCI Bridge
                1043 1477  N56VZ
                1043 1517  Zenbook Prime UX31A
                1043 84ca  P8H77-I Motherboard
+               1849 1e26  Motherboard
        1e2d  7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2
                1043 1477  N56VZ
                1043 1517  Zenbook Prime UX31A
                1043 84ca  P8H77-I Motherboard
+               1849 1e2d  Motherboard
        1e31  7 Series/C210 Series Chipset Family USB xHCI Host Controller
+               103c 17ab  ProBook 6570b
                1043 1477  N56VZ
                1043 1517  Zenbook Prime UX31A
                1043 84ca  P8H77-I Motherboard
+               1849 1e31  Motherboard
        1e33  7 Series/C210 Series Chipset Family LAN Controller
        1e3a  7 Series/C210 Series Chipset Family MEI Controller #1
                1043 1477  N56VZ
                1043 1517  Zenbook Prime UX31A
                1043 84ca  P8H77-I Motherboard
+               1849 1e3a  Motherboard
        1e3b  7 Series/C210 Series Chipset Family MEI Controller #2
        1e3c  7 Series/C210 Series Chipset Family IDE-r Controller
        1e3d  7 Series/C210 Series Chipset Family KT Controller
        1e42  7 Series Chipset Family LPC Controller
        1e43  7 Series Chipset Family LPC Controller
        1e44  Z77 Express Chipset LPC Controller
+               1849 1e44  Motherboard
        1e45  7 Series Chipset Family LPC Controller
        1e46  Z75 Express Chipset LPC Controller
        1e47  Q77 Express Chipset LPC Controller
        1e5d  HM75 Express Chipset LPC Controller
        1e5e  7 Series Chipset Family LPC Controller
        1e5f  7 Series Chipset Family LPC Controller
-       1f00  Avoton SSA-Cunit
-       1f01  Avoton SSA-Cunit
-       1f02  Avoton SSA-Cunit
-       1f03  Avoton SSA-Cunit
-       1f04  Avoton SSA-Cunit
-       1f05  Avoton SSA-Cunit
-       1f06  Avoton SSA-Cunit
-       1f07  Avoton SSA-Cunit
-       1f08  Avoton SSA-Cunit
-       1f09  Avoton SSA-Cunit
-       1f0a  Avoton SSA-Cunit
-       1f0b  Avoton SSA-Cunit
-       1f0c  Avoton SSA-Cunit
-       1f0d  Avoton SSA-Cunit
-       1f0e  Avoton SSA-Cunit
-       1f0f  Avoton SSA-Cunit
-       1f10  Avoton PCIe Root Port 1
-       1f11  Avoton PCIe Root Port 2
-       1f12  Avoton PCIe Root Port 3
-       1f13  Avoton PCIe Root Port 4
-       1f14  Avoton RAS
-       1f15  Avoton SMBus 2.0
-       1f16  Avoton RCEC
-       1f18  Avoton nCPM
-       1f19  Avoton nCPM
-       1f20  Avoton 4-Port IDE SATA2 Controller
-       1f21  Avoton 4-Port IDE SATA2 Controller
-       1f22  Avoton AHCI SATA2 Controller
-       1f23  Avoton AHCI SATA2 Controller
-       1f24  Avoton RAID SATA2 Controller
-       1f25  Avoton RAID SATA2 Controller
-       1f26  Avoton RAID SATA2 Controller
-       1f27  Avoton RAID SATA2 Controller
-       1f2c  Avoton USB Enhanced Host Controller
-       1f2e  Avoton RAID SATA2 Controller
-       1f2f  Avoton RAID SATA2 Controller
-       1f30  Avoton 2-Port IDE SATA3 Controller
-       1f31  Avoton 2-Port IDE SATA3 Controller
-       1f32  Avoton AHCI SATA3 Controller
-       1f33  Avoton AHCI SATA3 Controller
-       1f34  Avoton RAID SATA3 Controller
-       1f35  Avoton RAID SATA3 Controller
-       1f36  Avoton RAID SATA3 Controller
-       1f37  Avoton RAID SATA3 Controller
-       1f38  Avoton PCU
-       1f39  Avoton PCU
-       1f3a  Avoton PCU
-       1f3b  Avoton PCU
-       1f3c  Avoton PCU SMBus
-       1f3d  Avoton PCU SMBus
-       1f3e  Avoton RAID SATA3 Controller
-       1f3f  Avoton RAID SATA3 Controller
-       1f40  Avoton GbE x4 1000base-KX
-       1f41  Avoton GbE x4 SGMII
-       1f42  Avoton GbE
-       1f43  Avoton GbE EEPROM-less
-       1f44  Avoton GbE Virtual Function
-       1f45  Avoton GbE 2500base-KX
-       2250  Xeon Phi Coprocessor 5110P
+       1f00  Atom processor C2000 SoC Transaction Router
+       1f01  Atom processor C2000 SoC Transaction Router
+       1f02  Atom processor C2000 SoC Transaction Router
+       1f03  Atom processor C2000 SoC Transaction Router
+       1f04  Atom processor C2000 SoC Transaction Router
+       1f05  Atom processor C2000 SoC Transaction Router
+       1f06  Atom processor C2000 SoC Transaction Router
+       1f07  Atom processor C2000 SoC Transaction Router
+       1f08  Atom processor C2000 SoC Transaction Router
+       1f09  Atom processor C2000 SoC Transaction Router
+       1f0a  Atom processor C2000 SoC Transaction Router
+       1f0b  Atom processor C2000 SoC Transaction Router
+       1f0c  Atom processor C2000 SoC Transaction Router
+       1f0d  Atom processor C2000 SoC Transaction Router
+       1f0e  Atom processor C2000 SoC Transaction Router
+       1f0f  Atom processor C2000 SoC Transaction Router
+       1f10  Atom processor C2000 PCIe Root Port 1
+       1f11  Atom processor C2000 PCIe Root Port 2
+       1f12  Atom processor C2000 PCIe Root Port 3
+       1f13  Atom processor C2000 PCIe Root Port 4
+       1f14  Atom processor C2000 RAS
+       1f15  Atom processor C2000 SMBus 2.0
+       1f16  Atom processor C2000 RCEC
+       1f18  Atom processor C2000 nCPM
+       1f19  Atom processor C2000 nCPM
+       1f20  Atom processor C2000 4-Port IDE SATA2 Controller
+       1f21  Atom processor C2000 4-Port IDE SATA2 Controller
+       1f22  Atom processor C2000 AHCI SATA2 Controller
+       1f23  Atom processor C2000 AHCI SATA2 Controller
+       1f24  Atom processor C2000 RAID SATA2 Controller
+       1f25  Atom processor C2000 RAID SATA2 Controller
+       1f26  Atom processor C2000 RAID SATA2 Controller
+       1f27  Atom processor C2000 RAID SATA2 Controller
+       1f2c  Atom processor C2000 USB Enhanced Host Controller
+       1f2e  Atom processor C2000 RAID SATA2 Controller
+       1f2f  Atom processor C2000 RAID SATA2 Controller
+       1f30  Atom processor C2000 2-Port IDE SATA3 Controller
+       1f31  Atom processor C2000 2-Port IDE SATA3 Controller
+       1f32  Atom processor C2000 AHCI SATA3 Controller
+       1f33  Atom processor C2000 AHCI SATA3 Controller
+       1f34  Atom processor C2000 RAID SATA3 Controller
+       1f35  Atom processor C2000 RAID SATA3 Controller
+       1f36  Atom processor C2000 RAID SATA3 Controller
+       1f37  Atom processor C2000 RAID SATA3 Controller
+       1f38  Atom processor C2000 PCU
+       1f39  Atom processor C2000 PCU
+       1f3a  Atom processor C2000 PCU
+       1f3b  Atom processor C2000 PCU
+       1f3c  Atom processor C2000 PCU SMBus
+       1f3e  Atom processor C2000 RAID SATA3 Controller
+       1f3f  Atom processor C2000 RAID SATA3 Controller
+       1f40  Ethernet Connection I354 1.0 GbE Backplane
+               1028 05f1  Ethernet Connection I354 1.0 GbE Backplane
+       1f41  Ethernet Connection I354
+       1f42  Atom processor C2000 GbE
+       1f44  Atom processor C2000 GbE Virtual Function
+       1f45  Ethernet Connection I354 2.5 GbE Backplane
+       2250  Xeon Phi coprocessor 5100 series
+       225c  Xeon Phi coprocessor SE10/7120 series
+       225d  Xeon Phi coprocessor 3120 series 
+       225e  Xeon Phi coprocessor 31S1
        2310  DH89xxCC LPC Controller
        2323  DH89xxCC 4 Port SATA AHCI Controller
        2330  DH89xxCC SMBus Controller
        2360  DH89xxCC Watchdog Timer
        2364  DH89xxCC MEI 0
        2365  DH89xxCC MEI 1
+       2390  Coleto Creek LPC Controller
+       23a1  Coleto Creek 2-Port SATA Controller [IDE Mode]
+       23a3  Coleto Creek 4-Port SATA Controller [AHCI Mode]
+       23a6  Coleto Creek 2-Port SATA Controller [IDE Mode]
+       23b0  Coleto Creek SMBus Controller
+       23b1  Coleto Creek CHAP Counter
+       23b2  Coleto Creek Thermal Management Controller
+       23b4  Coleto Creek USB2 Enhanced Host Controller #1
+       23b5  Coleto Creek USB2 Enhanced Host Controller #1
+       23c2  Coleto Creek PCI Express Root Port #1
+       23c3  Coleto Creek PCI Express Root Port #1
+       23c4  Coleto Creek PCI Express Root Port #2
+       23c5  Coleto Creek PCI Express Root Port #2
+       23c6  Coleto Creek PCI Express Root Port #3
+       23c7  Coleto Creek PCI Express Root Port #3
+       23c8  Coleto Creek PCI Express Root Port #4
+       23c9  Coleto Creek PCI Express Root Port #4
+       23e0  Coleto Creek Watchdog Timer
+       23e4  Coleto Creek MEI Controller #1
+       23e5  Coleto Creek MEI Controller #2
        2410  82801AA ISA Bridge (LPC)
        2411  82801AA IDE Controller
        2412  82801AA USB Controller
                11d4 0048  SoundMAX Integrated Digital Audio
                11d4 5340  SoundMAX Integrated Digital Audio
                1734 1025  Activy 3xx
+               1af4 1100  QEMU Virtual Machine
        2416  82801AA AC'97 Modem Controller
        2418  82801AA PCI Bridge
        2420  82801AB ISA Bridge (LPC)
                144d c072  Notebook N150P
                1458 5000  GA-D525TUD
                1734 1055  Amilo M1420
-               17aa 20ae  ThinkPad T61
+               17aa 20ae  ThinkPad T61/R61
                8086 544b  Desktop Board D425KT
                e4bf cc47  CCG-RUMBA
        2449  82801BA/BAM/CA/CAM Ethernet Controller
                1179 ff01  PRO/100 VE Network Connection
                1186 7801  EtherExpress PRO/100 VE
                144d 2602  HomePNA 1M CNR
+               1af4 1100  QEMU Virtual Machine
                8086 3010  EtherExpress PRO/100 VE
                8086 3011  EtherExpress PRO/100 VM
                8086 3012  82562EH based Phoneline
                1028 0211  Optiplex 755
                1028 02da  OptiPlex 980
                103c 2a3b  Pavilion A1512X
+               103c 2a6f  Asus IPIBL-LB Motherboard
                103c 31fe  ProLiant DL140 G3
                103c 330b  ProLiant ML150 G6 Server
 # same ID possibly also on other ASUS boards
                1043 8277  P5K PRO Motherboard
+               1043 844d  P8 series motherboard
                1458 5000  Motherboard
+               1462 7418  Wind PC MS-7418
+               15d9 060d  C7SIM-Q Motherboard
                15d9 9680  X7DBN Motherboard
                1775 11cc  CC11/CL11
+               8086 7270  Server Board S1200BTS
        2450  82801E ISA Bridge (LPC)
        2452  82801E USB Controller
        2453  82801E SMBus Controller
                1509 1968  Averatec 5110H
                1734 1004  D1451 Mainboard (SCENIC N300, i845GV)
                1734 1055  Amilo M1420
+               1af4 1100  QEMU Virtual Machine
                4c53 1090  Cx9 / Vx9 mainboard
                8086 24c2  Latitude X300
                e4bf 0cc9  CC9-SAMBA
                e4bf 0cd2  CD2-BEBOP
        24d0  82801EB/ER (ICH5/ICH5R) LPC Interface Bridge
        24d1  82801EB (ICH5) SATA Controller
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                1028 019a  PowerEdge SC1425
                103c 12bc  d530 CMT (DG746A)
        24d2  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1
                1014 02dd  eServer xSeries server mainboard
                1014 02ed  eServer xSeries server mainboard
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                1028 016c  PowerEdge 1850 onboard UHCI
                1028 016d  PowerEdge 2850 onboard UHCI
                1014 02dd  eServer xSeries server mainboard
                1014 02ed  eServer xSeries server mainboard
                1028 0156  Precision 360
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                103c 12bc  d330 uT
                103c 3208  ProLiant DL140 G2
        24d4  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2
                1014 02dd  eServer xSeries server mainboard
                1014 02ed  eServer xSeries server mainboard
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                1028 016c  PowerEdge 1850 onboard UHCI
                1028 016d  PowerEdge 2850 onboard UHCI
                8086 524c  D865PERL mainboard
        24d5  82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller
                100a 147b  Abit IS7-E motherboard
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                103c 006a  NX9500
                103c 12bc  d330 uT
                103c 006a  NX9500
        24d7  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3
                1014 02ed  xSeries server mainboard
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                1028 016c  PowerEdge 1850 onboard UHCI
                1028 016d  PowerEdge 2850 onboard UHCI
        24db  82801EB/ER (ICH5/ICH5R) IDE Controller
                1014 02dd  eServer xSeries server mainboard
                1014 02ed  eServer xSeries server mainboard
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                1028 016c  PowerEdge 1850 IDE Controller
                1028 016d  PowerEdge 2850 IDE Controller
        24dd  82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller
                1014 02dd  eServer xSeries server mainboard
                1014 02ed  eServer xSeries server mainboard
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                1028 016c  PowerEdge 1850 onboard EHCI
                1028 016d  PowerEdge 2850 onboard EHCI
                8086 524c  D865PERL mainboard
        24de  82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4
                1014 02ed  xSeries server mainboard
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                1043 80a6  P4P800/P5P800 series motherboard
                1458 24d2  GA-8IPE1000 Pro2 motherboard (865PE)
                8086 4c43  Desktop Board D865GLC
                8086 524c  D865PERL mainboard
        24df  82801ER (ICH5R) SATA Controller
+               1028 0168  Precision Workstation 670 Mainboard
+       24f3  Wireless 8260
+# Snow Field Peak AC
+               8086 0010  Dual Band Wireless-AC 8260
+       24f4  Wireless 8260
+# Snow Field Peak AC
+               8086 0030  Dual Band Wireless-AC 8260
        2500  82820 820 (Camino) Chipset Host Bridge (MCH)
                1028 0095  Precision Workstation 220 Chipset
                1043 801c  P3C-2000 system chipset
                1775 10d0  V5D Single Board Computer
                1775 1100  CR11/VR11 Single Board Computer
                1775 ce90  CE9
+               1af4 1100  QEMU Virtual Machine
                4c53 10b0  CL9 mainboard
                4c53 10d0  Telum ASLP10 Processor AMC
                4c53 10e0  PSL09 PrPMC
                1043 1173  Asus A6VC
                1043 814e  P5GD1-VW Mainboard
                1462 7028  915P/G Neo2
+               1af4 1100  QEMU Virtual Machine
        266a  82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller
                1028 0177  Dimension 8400
                1028 0179  Optiplex GX280
                103c 2a3b  Pavilion A1512X
                1043 817a  P5LD2-VM Mainboard
                107b 5048  E4500
+               1462 7418  Wind PC MS-7418
                8086 544e  DeskTop Board D945GTP
        2771  82945G/GZ/P/PL PCI Express Root Port
        2772  82945G/GZ Integrated Graphics Controller
                103c 2a3b  Pavilion A1512X
+               1462 7418  Wind PC MS-7418
                8086 544e  DeskTop Board D945GTP
                8086 d605  Intel Desktop Board D945GCCR
        2774  82955X Memory Controller Hub
                103c 30a3  Compaq nw8440
                1043 1237  A6J-Q008
                17aa 2015  ThinkPad T60
-               17aa 2017  ThinkPad T60/R60 series
+               17aa 2017  ThinkPad R60/T60/X60 series
        27a1  Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port
                103c 309f  Compaq nx9420 Notebook
                103c 30a3  Compaq nw8440
        27a2  Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller
                103c 30a1  NC2400
-               17aa 201a  ThinkPad T60/R60 series
+               17aa 201a  ThinkPad R60/T60/X60 series
                9902 1584  CCE MPL-D10H120F
        27a6  Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller
                103c 30a1  NC2400
                1775 11cc  CC11/CL11 integrated graphics (secondary)
-               17aa 201a  ThinkPad T60/R60 series
+               17aa 201a  ThinkPad R60/T60/X60 series
        27ac  Mobile 945GSE Express Memory Controller Hub
                1775 11cc  CC11/CL11
        27ad  Mobile 945GSE Express PCI Express Root Port
                1028 01e6  PowerEdge 860
                1043 8179  P5KPL-VM Motherboard
                107b 5048  E4500
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
                8086 544e  DeskTop Board D945GTP
        27b9  82801GBM (ICH7-M) LPC Interface Bridge
                103c 30a1  NC2400
                103c 30a3  Compaq nw8440
                10f7 8338  Panasonic CF-Y5 laptop
-               17aa 2009  ThinkPad T60/R60 series
+               17aa 2009  ThinkPad R60/T60/X60 series
        27bc  NM10 Family LPC Controller
                105b 0d7c  D270S/D250S Motherboard
                144d c072  Notebook N150P
                107b 5048  E4500
                1462 2310  MSI Hetis 945
                1462 7236  945P Neo3-F Rev. 2.2 motherboard
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
                8086 544b  Desktop Board D425KT
                8086 544e  DeskTop Board D945GTP
        27c4  82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode]
                1025 006c  9814 WKMI
                1028 01d7  XPS M1210
-               17aa 200e  Thinkpad T60 model 2007
+               17aa 200e  ThinkPad T60
        27c5  82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode]
                103c 309f  Compaq nx9420 Notebook
                103c 30a3  Compaq nw8440
-               17aa 200d  ThinkPad T60/R60 series
+               17aa 200d  ThinkPad R60/T60/X60 series
        27c6  82801GHM (ICH7-M DH) SATA Controller [RAID mode]
        27c8  NM10/ICH7 Family USB UHCI Controller #1
                1025 006c  9814 WKMI
                107b 5048  E4500
                144d c072  Notebook N150P
                1458 5004  GA-D525TUD
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
-               17aa 200a  ThinkPad T60/R60 series
+               17aa 200a  ThinkPad R60/T60/X60 series
                8086 4f4d  DeskTop Board D510MO
                8086 544b  Desktop Board D425KT
                8086 544e  DeskTop Board D945GTP
                107b 5048  E4500
                144d c072  Notebook N150P
                1458 5004  GA-D525TUD
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
-               17aa 200a  ThinkPad T60/R60 series
+               17aa 200a  ThinkPad R60/T60/X60 series
                8086 4f4d  DeskTop Board D510MO
                8086 544b  Desktop Board D425KT
                8086 544e  DeskTop Board D945GTP
                107b 5048  E4500
                144d c072  Notebook N150P
                1458 5004  GA-D525TUD
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
-               17aa 200a  ThinkPad T60/R60 series
+               17aa 200a  ThinkPad R60/T60/X60 series
                8086 4f4d  DeskTop Board D510MO
                8086 544e  DeskTop Board D945GTP
        27cb  NM10/ICH7 Family USB UHCI Controller #4
                107b 5048  E4500
                144d c072  Notebook N150P
                1458 5004  GA-D525TUD
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
-               17aa 200a  ThinkPad T60/R60 series
+               17aa 200a  ThinkPad R60/T60/X60 series
                8086 4f4d  DeskTop Board D510MO
                8086 544e  DeskTop Board D945GTP
        27cc  NM10/ICH7 Family USB2 EHCI Controller
                105b 0d7c  D270S/D250S Motherboard
                144d c072  Notebook N150P
                1458 5006  GA-D525TUD
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
-               17aa 200b  ThinkPad T60/R60 series
+               17aa 200b  ThinkPad R60/T60/X60 series
                8086 4f4d  DeskTop Board D510MO
                8086 544b  Desktop Board D425KT
                8086 544e  DeskTop Board D945GTP
                103c 30a3  Compaq nw8440
                144d c072  Notebook N150P
                1458 5001  GA-D525TUD
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
                8086 544b  Desktop Board D425KT
        27d2  NM10/ICH7 Family PCI Express Port 2
                103c 309f  Compaq nx9420 Notebook
                103c 30a3  Compaq nw8440
                144d c072  Notebook N150P
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
                8086 544b  Desktop Board D425KT
        27d4  NM10/ICH7 Family PCI Express Port 3
                144d c072  Notebook N150P
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
                8086 544b  Desktop Board D425KT
        27d6  NM10/ICH7 Family PCI Express Port 4
                103c 30a3  Compaq nw8440
                144d c072  Notebook N150P
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
                8086 544b  Desktop Board D425KT
        27d8  NM10/ICH7 Family High Definition Audio Controller
                144d c072  Notebook N150P
                1458 a002  GA-D525TUD (Realtek ALC887)
                1458 a102  GA-8I945PG-RH Mainboard
+               1462 7418  Wind PC MS-7418
                152d 0753  Softmodem
                1734 10ad  Conexant softmodem SmartCP
-               17aa 2010  ThinkPad T60/R60 series
+               17aa 2010  ThinkPad R60/T60/X60 series
                17aa 3802  Lenovo 3000 C200 audio [Realtek ALC861VD]
                8086 1112  DeskTop Board D945GTP
                8086 27d8  DeskTop Board D945GTP
                10f7 8338  Panasonic CF-Y5 laptop
                144d c072  Notebook N150P
                1458 5001  GA-8I945PG-RH/GA-D525TUD Mainboard
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
-               17aa 200f  ThinkPad T60/R60 series
+               17aa 200f  ThinkPad R60/T60/X60 series
                8086 4f4d  DeskTop Board D510MO
                8086 544b  Desktop Board D425KT
                8086 544e  DeskTop Board D945GTP
                1043 8179  P5KPL-VM Motherboard
                107b 5048  E4500
                10f7 8338  Panasonic CF-Y5 laptop
+               1462 7418  Wind PC MS-7418
                1775 11cc  CC11/CL11
-               17aa 200c  ThinkPad T60/R60 series
+               17aa 200c  ThinkPad R60/T60/X60 series
                8086 544e  DeskTop Board D945GTP
        27e0  82801GR/GH/GHM (ICH7 Family) PCI Express Port 5
                1775 11cc  CC11/CL11
                1043 81ec  P5B
        2811  82801HEM (ICH8M-E) LPC Interface Controller
                103c 30c1  Compaq 6910p
-               17aa 20b6  T61
+               17aa 20b6  ThinkPad T61/R61
                e4bf cc47  CCG-RUMBA
        2812  82801HH (ICH8DH) LPC Interface Controller
        2814  82801HO (ICH8DO) LPC Interface Controller
        2821  82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
        2822  82801 SATA Controller [RAID mode]
                1028 020d  Inspiron 530
+               103c 2a6f  Asus IPIBL-LB Motherboard
        2823  Wellsburg sSATA RAID Controller
        2824  82801HB (ICH8) 4 port SATA Controller [AHCI mode]
                1043 81ec  P5B
                103c 30d9  Presario C700
                104d 9005  Vaio VGN-FZ260E
                104d 902d  VAIO VGN-NR120E
-               17aa 20a7  ThinkPad T61
+               17aa 20a7  ThinkPad T61/R61
                e4bf cc47  CCG-RUMBA
        282a  82801 Mobile SATA Controller [RAID mode]
                1028 040b  Latitude E6510
                104d 9005  Vaio VGN-FZ260E
                104d 902d  VAIO VGN-NR120E
                1462 7235  P965 Neo MS-7235 mainboard
-               17aa 20aa  ThinkPad T61
+               17aa 20aa  ThinkPad T61/R61
                e4bf cc47  CCG-RUMBA
        2831  82801H (ICH8 Family) USB UHCI Controller #2
                1025 0121  Aspire 5920G
                104d 9005  Vaio VGN-FZ260E
                104d 902d  VAIO VGN-NR120E
                1462 7235  P965 Neo MS-7235 mainboard
-               17aa 20aa  ThinkPad T61
+               17aa 20aa  ThinkPad T61/R61
                e4bf cc47  CCG-RUMBA
        2832  82801H (ICH8 Family) USB UHCI Controller #3
                1025 0121  Aspire 5920G
                1043 81ec  P5B
                104d 9005  Vaio VGN-FZ260E
                104d 902d  VAIO VGN-NR120E
-               17aa 20aa  ThinkPad T61
+               17aa 20aa  ThinkPad T61/R61
                e4bf cc47  CCG-RUMBA
        2833  82801H (ICH8 Family) USB UHCI Controller #4
                1043 81ec  P5B
                104d 9005  Vaio VGN-FZ260E
                104d 902d  VAIO VGN-NR120E
                1462 7235  P965 Neo MS-7235 mainboard
-               17aa 20aa  ThinkPad T61
+               17aa 20aa  ThinkPad T61/R61
                e4bf cc47  CCG-RUMBA
        2835  82801H (ICH8 Family) USB UHCI Controller #5
                1025 0121  Acer Aspire 5920G
                1043 81ec  P5B
                104d 9005  Vaio VGN-FZ260E
                104d 902d  VAIO VGN-NR120E
-               17aa 20aa  ThinkPad T60
+               17aa 20aa  Thinkpad T61/R61
                e4bf cc47  CCG-RUMBA
        2836  82801H (ICH8 Family) USB2 EHCI Controller #1
                1025 0121  Aspire 5920G
                104d 9005  Vaio VGN-FZ260E
                104d 902d  VAIO VGN-NR120E
                1462 7235  P965 Neo MS-7235 mainboard
-               17aa 20ab  ThinkPad T61
+               17aa 20ab  ThinkPad T61/R61
                e4bf cc47  CCG-RUMBA
        283a  82801H (ICH8 Family) USB2 EHCI Controller #2
                1025 0121  Acer Aspire 5920G
                1043 81ec  P5B
                104d 9005  Vaio VGN-FZ260E
                104d 902d  VAIO VGN-NR120E
-               17aa 20ab  ThinkPad T61
+               17aa 20ab  ThinkPad T61/R61
                e4bf cc47  CCG-RUMBA
        283e  82801H (ICH8 Family) SMBus Controller
                1025 0121  Aspire 5920G
                104d 9008  Vaio VGN-SZ79SN_C
                104d 902d  VAIO VGN-NR120E
                1462 7235  P965 Neo MS-7235 mainboard
-               17aa 20a9  ThinkPad T61
+               17aa 20a9  ThinkPad T61/R61
                e4bf cc47  CCG-RUMBA
        283f  82801H (ICH8 Family) PCI Express Port 1
                1028 01da  OptiPlex 745
                103c 30c1  Compaq 6910p
                104d 902d  VAIO VGN-NR120E
-               17aa 20ad  ThinkPad T61
+               17aa 20ad  ThinkPad T61/R61
        2841  82801H (ICH8 Family) PCI Express Port 2
                103c 30c1  Compaq 6910p
                104d 902d  VAIO VGN-NR120E
-               17aa 20ad  ThinkPad T61
+               17aa 20ad  ThinkPad T61/R61
        2843  82801H (ICH8 Family) PCI Express Port 3
                104d 902d  VAIO VGN-NR120E
-               17aa 20ad  ThinkPad T61
+               17aa 20ad  ThinkPad T61/R61
        2845  82801H (ICH8 Family) PCI Express Port 4
-               17aa 20ad  ThinkPad T61
+               17aa 20ad  ThinkPad T61/R61
        2847  82801H (ICH8 Family) PCI Express Port 5
                1028 01da  OptiPlex 745
                103c 30c1  Compaq 6910p
-               17aa 20ad  ThinkPad T61
+               17aa 20ad  ThinkPad T61/R61
        2849  82801H (ICH8 Family) PCI Express Port 6
        284b  82801H (ICH8 Family) HD Audio Controller
                1025 011f  Realtek ALC268 audio codec
                104d 9016  Sony VAIO VGN-AR51M
                104d 902d  VAIO VGN-NR120E
                14f1 5051  Presario C700
-               17aa 20ac  ThinkPad T61
+               17aa 20ac  ThinkPad T61/R61
                8384 7616  Dell Vostro 1400
                e4bf cc47  CCG-RUMBA
        284f  82801H (ICH8 Family) Thermal Reporting Device
                103c 30d9  Presario C700
                104d 9005  Vaio VGN-FZ260E
                104d 902d  VAIO VGN-NR120E
-               17aa 20a6  ThinkPad T61
+               17aa 20a6  ThinkPad T61/R61
                e4bf cc47  CCG-RUMBA
        2912  82801IH (ICH9DH) LPC Interface Controller
        2914  82801IO (ICH9DO) LPC Interface Controller
                1028 0211  Optiplex 755
        2916  82801IR (ICH9R) LPC Interface Controller
                1028 020d  Inspiron 530
+               103c 2a6f  Asus IPIBL-LB Motherboard
                1043 8277  P5K PRO Motherboard
                8086 5044  Desktop Board DP35DP
        2917  ICH9M-E LPC Interface Controller
        2918  82801IB (ICH9) LPC Interface Controller
                1028 0236  PowerEdge R610 82801IB (ICH9) LPC Interface Controller
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
        2919  ICH9M LPC Interface Controller
        2920  82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode]
                1028 020d  Inspiron 530
                1028 0237  PowerEdge T610 SATA IDE Controller
                1462 7360  G33/P35 Neo
        2922  82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]
+               1af4 1100  QEMU Virtual Machine
                8086 5044  Desktop Board DP35DP
        2923  82801IB (ICH9) 4 port SATA Controller [AHCI mode]
        2925  82801IR/IO (ICH9R/DO) SATA Controller [RAID mode]
        2930  82801I (ICH9 Family) SMBus Controller
                1028 020d  Inspiron 530
                1028 0211  Optiplex 755
+               103c 2a6f  Asus IPIBL-LB Motherboard
                103c 3628  dv6-1190en
                1043 8277  P5K PRO Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 5044  Desktop Board DP35DP
                e4bf cc4d  CCM-BOOGIE
        2932  82801I (ICH9 Family) Thermal Subsystem
                1028 0287  PowerEdge M610 onboard UHCI
                1028 029c  PowerEdge M710 USB UHCI Controller
                1028 2011  Optiplex 755
+               103c 2a6f  Asus IPIBL-LB Motherboard
                1043 8277  P5K PRO Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 5044  Desktop Board DP35DP
                e4bf cc4d  CCM-BOOGIE
        2935  82801I (ICH9 Family) USB UHCI Controller #2
                1028 023c  PowerEdge R200 onboard UHCI
                1028 0287  PowerEdge M610 onboard UHCI
                1028 029c  PowerEdge M710 USB UHCI Controller
+               103c 2a6f  Asus IPIBL-LB Motherboard
                1043 8277  P5K PRO Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 5044  Desktop Board DP35DP
                e4bf cc4d  CCM-BOOGIE
        2936  82801I (ICH9 Family) USB UHCI Controller #3
                1028 023c  PowerEdge R200 onboard UHCI
                1028 0287  PowerEdge M610 onboard UHCI
                1028 029c  PowerEdge M710 USB UHCI Controller
+               103c 2a6f  Asus IPIBL-LB Motherboard
                1043 8277  P5K PRO Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 5044  Desktop Board DP35DP
                e4bf cc4d  CCM-BOOGIE
        2937  82801I (ICH9 Family) USB UHCI Controller #4
                1028 0287  PowerEdge M610 onboard UHCI
                1028 029c  PowerEdge M710 USB UHCI Controller
                1028 2011  Optiplex 755
+               103c 2a6f  Asus IPIBL-LB Motherboard
                1043 8277  P5K PRO Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 2937  Optiplex 755
                8086 2942  828011 (ICH9 Family ) USB UHCI Controller
                8086 5044  Desktop Board DP35DP
                1028 0237  PowerEdge T610 USB UHCI Controller
                1028 0287  PowerEdge M610 onboard UHCI
                1028 029c  PowerEdge M710 USB UHCI Controller
+               103c 2a6f  Asus IPIBL-LB Motherboard
                1043 8277  P5K PRO Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 2938  Optiplex 755
                8086 5044  Desktop Board DP35DP
                e4bf cc4d  CCM-BOOGIE
                1028 020d  Inspiron 530
                1028 0210  PowerEdge T300 onboard UHCI
                1028 0237  PowerEdge T610 USB UHCI Controller
+               103c 2a6f  Asus IPIBL-LB Motherboard
                1043 8277  P5K PRO Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 5044  Desktop Board DP35DP
                e4bf cc4d  CCM-BOOGIE
        293a  82801I (ICH9 Family) USB2 EHCI Controller #1
                1028 023c  PowerEdge R200 onboard EHCI
                1028 0287  PowerEdge M610 onboard EHCI
                1028 029c  PowerEdge M710 USB EHCI Controller
+               103c 2a6f  Asus IPIBL-LB Motherboard
                1043 8277  P5K PRO Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 5044  Desktop Board DP35DP
                e4bf cc4d  CCM-BOOGIE
        293c  82801I (ICH9 Family) USB2 EHCI Controller #2
                1028 0237  PowerEdge T610 USB EHCI Controller
                1028 0287  PowerEdge M610 onboard EHCI
                1028 029c  PowerEdge M710 USB EHCI Controller
+               103c 2a6f  Asus IPIBL-LB Motherboard
                1043 8277  P5K PRO Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 293c  Optiplex 755
                8086 5044  Desktop Board DP35DP
                e4bf cc4d  CCM-BOOGIE
        293e  82801I (ICH9 Family) HD Audio Controller
                1028 020d  Inspiron 530
                1028 0211  Optiplex 755
+               103c 2a6f  Asus IPIBL-LB Motherboard
                103c 3628  dv6-1190en
                1043 829f  P5K PRO Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 293e  Optiplex 755
                8086 2940  Optiplex 755
                e4bf cc4d  CCM-BOOGIE
        2940  82801I (ICH9 Family) PCI Express Port 1
                1028 020d  Inspiron 530
                1028 0211  Optiplex 755
+               103c 2a6f  Asus IPIBL-LB Motherboard
 # same ID possibly also on other ASUS boards
                1043 8277  P5K PRO Motherboard
                8086 2940  Optiplex 755
                1028 020d  Inspiron 530
        2944  82801I (ICH9 Family) PCI Express Port 3
                1028 020d  Inspiron 530
+               103c 2a6f  Asus IPIBL-LB Motherboard
        2946  82801I (ICH9 Family) PCI Express Port 4
                1028 020d  Inspiron 530
        2948  82801I (ICH9 Family) PCI Express Port 5
                1028 0211  OptiPlex 755
        29c0  82G33/G31/P35/P31 Express DRAM Controller
                1028 020d  Inspiron 530
+               103c 2a6f  Asus IPIBL-LB Motherboard
 # same ID possibly also on other ASUS boards
                1043 8276  P5K PRO Motherboard
                1043 82b0  P5KPL-VM Motherboard
                1462 7360  G33/P35 Neo
+               1af4 1100  QEMU Virtual Machine
                8086 5044  Desktop Board DP35DP
        29c1  82G33/G31/P35/P31 Express PCI Express Root Port
                1028 020d  Inspiron 530
        2e16  4 Series Chipset PT IDER Controller
        2e17  4 Series Chipset Serial KT Controller
        2e20  4 Series Chipset DRAM Controller
+               1028 0283  Dell Vostro 220
                1043 82d3  P5Q Deluxe Motherboard
                1458 5000  GA-EP45-DS5/GA-EG45M-DS2H Motherboard
        2e21  4 Series Chipset PCI Express Root Port
        2f09  Haswell-E PCI Express Root Port 3
        2f0a  Haswell-E PCI Express Root Port 3
        2f0b  Haswell-E PCI Express Root Port 3
+       2f10  Haswell-E IIO Debug
+       2f11  Haswell-E IIO Debug
+       2f12  Haswell-E IIO Debug
+       2f13  Haswell-E IIO Debug
+       2f14  Haswell-E IIO Debug
+       2f15  Haswell-E IIO Debug
+       2f16  Haswell-E IIO Debug
+       2f17  Haswell-E IIO Debug
+       2f18  Haswell-E IIO Debug
+       2f19  Haswell-E IIO Debug
+       2f1a  Haswell-E IIO Debug
+       2f1b  Haswell-E IIO Debug
+       2f1c  Haswell-E IIO Debug
        2f1d  Haswell-E PCIe Ring Interface
        2f1e  Haswell-E Scratchpad & Semaphore Registers
        2f1f  Haswell-E Scratchpad & Semaphore Registers
        2f36  Haswell-E R3 QPI Link 0 & 1 Monitoring
        2f37  Haswell-E R3 QPI Link 0 & 1 Monitoring
        2f38  Haswell-E Home Agent 1
+       2f39  Haswell-E I/O Performance Monitoring
        2f3a  Haswell-E QPI Link 2
        2f3e  Haswell-E R3 QPI Link 2 Monitoring
        2f3f  Haswell-E R3 QPI Link 2 Monitoring
        2f40  Haswell-E QPI Link 2
        2f41  Haswell-E R3 QPI Link 2 Monitoring
        2f43  Haswell-E QPI Link 2
+       2f45  Haswell-E QPI Link 2 Debug
+       2f46  Haswell-E QPI Link 2 Debug
+       2f47  Haswell-E QPI Link 2 Debug
        2f60  Haswell-E Home Agent 1
        2f68  Haswell-E Integrated Memory Controller 1 Target Address, Thermal & RAS Registers
        2f6a  Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder
        2f6f  Haswell-E DDRIO Global Broadcast
        2f70  Haswell-E Home Agent 0 Debug
        2f71  Haswell-E Integrated Memory Controller 0 Target Address, Thermal & RAS Registers
+       2f76  Haswell-E E3 QPI Link Debug
        2f78  Haswell-E Home Agent 1 Debug
        2f79  Haswell-E Integrated Memory Controller 1 Target Address, Thermal & RAS Registers
        2f7d  Haswell-E Scratchpad & Semaphore Registers
+       2f7e  Haswell-E E3 QPI Link Debug
        2f80  Haswell-E QPI Link 0
        2f81  Haswell-E R3 QPI Link 0 & 1 Monitoring
        2f83  Haswell-E QPI Link 0
+       2f85  Haswell-E QPI Link 0 Debug
+       2f86  Haswell-E QPI Link 0 Debug
+       2f87  Haswell-E QPI Link 0 Debug
+       2f88  Haswell-E VCU
+       2f8a  Haswell-E VCU
        2f90  Haswell-E QPI Link 1
        2f93  Haswell-E QPI Link 1
+       2f95  Haswell-E QPI Link 1 Debug
+       2f96  Haswell-E QPI Link 1 Debug
+       2f98  Haswell-E Power Control Unit
+       2f99  Haswell-E Power Control Unit
+       2f9a  Haswell-E Power Control Unit
+       2f9c  Haswell-E Power Control Unit
        2fa0  Haswell-E Home Agent 0
        2fa8  Haswell-E Integrated Memory Controller 0 Target Address, Thermal & RAS Registers
        2faa  Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder
        2fb3  Haswell-E Integrated Memory Controller 0 Channel 1 ERROR Registers
        2fb4  Haswell-E Integrated Memory Controller 0 Channel 2 Thermal Control
        2fb5  Haswell-E Integrated Memory Controller 0 Channel 3 Thermal Control
+       2fb6  Haswell-E Integrated Memory Controller 0 Channel 2 ERROR Registers
+       2fb7  Haswell-E Integrated Memory Controller 0 Channel 3 ERROR Registers
        2fb8  Haswell-E DDRIO (VMSE) 2 & 3
        2fb9  Haswell-E DDRIO (VMSE) 2 & 3
        2fba  Haswell-E DDRIO (VMSE) 2 & 3
        2fbf  Haswell-E DDRIO (VMSE) 0 & 1
        2fc0  Haswell-E Power Control Unit
        2fc1  Haswell-E Power Control Unit
-       2fc2  Power Control Unit
-       2fc3  Power Control Unit
-       2fc4  Power Control Unit
-       2fc5  Power Control Unit
+       2fc2  Haswell-E Power Control Unit
+       2fc3  Haswell-E Power Control Unit
+       2fc4  Haswell-E Power Control Unit
+       2fc5  Haswell-E Power Control Unit
        2fd0  Haswell-E Integrated Memory Controller 1 Channel 0 Thermal Control
        2fd1  Haswell-E Integrated Memory Controller 1 Channel 1 Thermal Control
        2fd2  Haswell-E Integrated Memory Controller 1 Channel 0 ERROR Registers
                4c53 10d0  Telum ASLP10 Processor AMC
        3591  E7525/E7520 Error Reporting Registers
                1014 02dd  eServer xSeries server mainboard
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
                103c 3208  ProLiant DL140 G2
                4c53 10d0  Telum ASLP10 Processor AMC
        359b  E7525/E7520/E7320 Extended Configuration Registers
                1014 02dd  eServer xSeries server mainboard
        359e  E7525 Memory Controller Hub
+               1028 0168  Precision Workstation 670 Mainboard
                1028 0169  Precision 470
        35b0  3100 Chipset Memory I/O Controller Hub
        35b1  3100 DRAM Controller Error Reporting Registers
                1028 028d  PowerEdge T410 USB EHCI Controller
                103c 330b  ProLiant G6 series
                1043 82d4  P5Q Deluxe Motherboard
-               1458 5006  GA-EP45-DS5 Motherboard
+               1458 5006  Motherboard
        3a3e  82801JI (ICH10 Family) HD Audio Controller
                1043 8311  P5Q Deluxe Motherboard
                1458 a002  GA-EP45-UD3R Motherboard
                1025 0347  Aspire 7740G
        3b0a  5 Series Chipset LPC Interface Controller
                1028 02da  OptiPlex 980
+               15d9 060d  C7SIM-Q Motherboard
        3b0b  Mobile 5 Series Chipset LPC Interface Controller
        3b0c  5 Series Chipset LPC Interface Controller
        3b0d  5 Series/3400 Series Chipset LPC Interface Controller
        3b21  5 Series/3400 Series Chipset 2 port SATA IDE Controller
        3b22  5 Series/3400 Series Chipset 6 port SATA AHCI Controller
                1028 02da  OptiPlex 980
+               15d9 060d  C7SIM-Q Motherboard
        3b23  5 Series/3400 Series Chipset 4 port SATA AHCI Controller
        3b25  5 Series/3400 Series Chipset SATA RAID Controller
        3b26  5 Series/3400 Series Chipset 2 port SATA IDE Controller
                1025 0347  Aspire 7740G
                1028 02da  OptiPlex 980
                1028 040b  Latitude E6510
+               15d9 060d  C7SIM-Q Motherboard
                e4bf 50c1  PC1-GROOVE
        3b32  5 Series/3400 Series Chipset Thermal Subsystem
                1025 0347  Aspire 7740G
                1025 0347  Aspire 7740G
                1028 02da  OptiPlex 980
                1028 040b  Latitude E6510
+               15d9 060d  C7SIM-Q Motherboard
                e4bf 50c1  PC1-GROOVE
        3b36  5 Series/3400 Series Chipset USB Universal Host Controller
        3b37  5 Series/3400 Series Chipset USB Universal Host Controller
                1025 0347  Aspire 7740G
                1028 02da  OptiPlex 980
                1028 040b  Latitude E6510
+               15d9 060d  C7SIM-Q Motherboard
                e4bf 50c1  PC1-GROOVE
        3b3e  5 Series/3400 Series Chipset USB Universal Host Controller
        3b3f  5 Series/3400 Series Chipset USB Universal Host Controller
        3b42  5 Series/3400 Series Chipset PCI Express Root Port 1
                1028 02da  OptiPlex 980
                1028 040b  Latitude E6510
+               15d9 060d  C7SIM-Q Motherboard
        3b44  5 Series/3400 Series Chipset PCI Express Root Port 2
                1028 040b  Latitude E6510
+               15d9 060d  C7SIM-Q Motherboard
        3b46  5 Series/3400 Series Chipset PCI Express Root Port 3
                1028 040b  Latitude E6510
        3b48  5 Series/3400 Series Chipset PCI Express Root Port 4
                1025 0347  Aspire 7740G
                1028 02da  OptiPlex 980
                1028 040b  Latitude E6510
+               15d9 060d  C7SIM-Q Motherboard
                e4bf 50c1  PC1-GROOVE
        3b57  5 Series/3400 Series Chipset High Definition Audio
        3b64  5 Series/3400 Series Chipset HECI Controller
                1025 0347  Aspire 7740G
+               15d9 060d  C7SIM-Q Motherboard
                e4bf 50c1  PC1-GROOVE
        3b65  5 Series/3400 Series Chipset HECI Controller
        3b66  5 Series/3400 Series Chipset PT IDER Controller
                1351 103c  Compaq NC6220
        4224  PRO/Wireless 2915ABG [Calexico2] Network Connection
        4227  PRO/Wireless 3945ABG [Golan] Network Connection
-               8086 1011  ThinkPad R60e/X60s
+               8086 1011  ThinkPad T60/R60e/X60s
                8086 1014  PRO/Wireless 3945BG Network Connection
        4229  PRO/Wireless 4965 AG or AGN [Kedron] Network Connection
                8086 1100  Vaio VGN-SZ79SN_C
        504a  EP80579 Reserved
        504b  EP80579 Reserved
        504c  EP80579 Integrated Processor with QuickAssist TDM
-       5200  EtherExpress PRO/100 Intelligent Server
-       5201  EtherExpress PRO/100 Intelligent Server
+       5200  EtherExpress PRO/100 Intelligent Server PCI Bridge
+       5201  EtherExpress PRO/100 Intelligent Server Fast Ethernet Controller
                8086 0001  EtherExpress PRO/100 Server Ethernet Adapter
        530d  80310 (IOP) IO Processor
+       5845  QEMU NVM Express Controller
+               1af4 1100  QEMU Virtual Machine
        65c0  5100 Chipset Memory Controller Hub
        65e2  5100 Chipset PCI Express x4 Port 2
        65e3  5100 Chipset PCI Express x4 Port 3
        7010  82371SB PIIX3 IDE [Natoma/Triton II]
                1af4 1100  Qemu virtual machine
        7020  82371SB PIIX3 USB [Natoma/Triton II]
-               1af4 1100  Qemu virtual machine
+               1af4 1100  QEMU Virtual Machine
        7030  430VX - 82437VX TVX [Triton VX]
        7050  Intercast Video Capture Card
        7051  PB 642365-003 (Business Video Conferencing Card)
                15ad 1976  Virtual Machine Chipset
        7112  82371AB/EB/MB PIIX4 USB
                15ad 1976  Virtual Machine Chipset
+               1af4 1100  QEMU Virtual Machine
        7113  82371AB/EB/MB PIIX4 ACPI
                15ad 1976  Virtual Machine Chipset
                1af4 1100  Qemu virtual machine
        8817  Platform Controller Hub EG20T I2C Controller
        8818  Platform Controller Hub EG20T Controller Area Network (CAN) Controller
        8819  Platform Controller Hub EG20T IEEE 1588 Hardware Assist
-       8c00  Lynx Point 4-port SATA Controller 1 [IDE mode]
-       8c01  Lynx Point 4-port SATA Controller 1 [IDE mode]
-       8c02  Lynx Point 6-port SATA Controller 1 [AHCI mode]
-       8c03  Lynx Point 6-port SATA Controller 1 [AHCI mode]
-       8c04  Lynx Point SATA Controller 1 [RAID mode]
-       8c05  Lynx Point SATA Controller 1 [RAID mode]
-       8c06  Lynx Point SATA Controller 1 [RAID mode]
-       8c07  Lynx Point SATA Controller 1 [RAID mode]
-       8c08  Lynx Point 2-port SATA Controller 2 [IDE mode]
-       8c09  Lynx Point 2-port SATA Controller 2 [IDE mode]
-       8c0e  Lynx Point SATA Controller 1 [RAID mode]
-       8c0f  Lynx Point SATA Controller 1 [RAID mode]
-       8c10  Lynx Point PCI Express Root Port #1
-       8c11  Lynx Point PCI Express Root Port #1
-       8c12  Lynx Point PCI Express Root Port #2
-       8c13  Lynx Point PCI Express Root Port #2
-       8c14  Lynx Point PCI Express Root Port #3
-       8c15  Lynx Point PCI Express Root Port #3
-       8c16  Lynx Point PCI Express Root Port #4
-       8c17  Lynx Point PCI Express Root Port #4
-       8c18  Lynx Point PCI Express Root Port #5
-       8c19  Lynx Point PCI Express Root Port #5
-       8c1a  Lynx Point PCI Express Root Port #6
-       8c1b  Lynx Point PCI Express Root Port #6
-       8c1c  Lynx Point PCI Express Root Port #7
-       8c1d  Lynx Point PCI Express Root Port #7
-       8c1e  Lynx Point PCI Express Root Port #8
-       8c1f  Lynx Point PCI Express Root Port #8
-       8c20  Lynx Point High Definition Audio Controller
-       8c21  Lynx Point High Definition Audio Controller
-       8c22  Lynx Point SMBus Controller
-       8c23  Lynx Point CHAP Counters
-       8c24  Lynx Point Thermal Management Controller
-       8c26  Lynx Point USB Enhanced Host Controller #1
-       8c2d  Lynx Point USB Enhanced Host Controller #2
-       8c31  Lynx Point USB xHCI Host Controller
-       8c33  Lynx Point LAN Controller
-       8c34  Lynx Point NAND Controller
-       8c3a  Lynx Point MEI Controller #1
-       8c3b  Lynx Point MEI Controller #2
-       8c3c  Lynx Point IDE-r Controller
-       8c3d  Lynx Point KT Controller
-       8c40  Lynx Point LPC Controller
-       8c41  Lynx Point LPC Controller
-       8c42  Lynx Point LPC Controller
-       8c43  Lynx Point LPC Controller
-       8c44  Lynx Point LPC Controller
-       8c45  Lynx Point LPC Controller
-       8c46  Lynx Point LPC Controller
-       8c47  Lynx Point LPC Controller
-       8c48  Lynx Point LPC Controller
-       8c49  Lynx Point LPC Controller
-       8c4a  Lynx Point LPC Controller
-       8c4b  Lynx Point LPC Controller
-       8c4c  Lynx Point LPC Controller
-       8c4d  Lynx Point LPC Controller
-       8c4e  Lynx Point LPC Controller
-       8c4f  Lynx Point LPC Controller
-       8c50  Lynx Point LPC Controller
-       8c51  Lynx Point LPC Controller
-       8c52  Lynx Point LPC Controller
-       8c53  Lynx Point LPC Controller
-       8c54  Lynx Point LPC Controller
-       8c55  Lynx Point LPC Controller
-       8c56  Lynx Point LPC Controller
-       8c57  Lynx Point LPC Controller
-       8c58  Lynx Point LPC Controller
-       8c59  Lynx Point LPC Controller
-       8c5a  Lynx Point LPC Controller
-       8c5b  Lynx Point LPC Controller
-       8c5c  Lynx Point LPC Controller
-       8c5d  Lynx Point LPC Controller
-       8c5e  Lynx Point LPC Controller
-       8c5f  Lynx Point LPC Controller
+       8c00  8 Series/C220 Series Chipset Family 4-port SATA Controller 1 [IDE mode]
+       8c01  8 Series Chipset Family 4-port SATA Controller 1 [IDE mode] - Mobile
+       8c02  8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
+       8c03  8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
+               103c 1909  ZBook 15
+               17aa 220e  ThinkPad T440p
+       8c04  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]
+       8c05  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]
+       8c06  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]
+       8c07  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]
+       8c08  8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode]
+       8c09  8 Series/C220 Series Chipset Family 2-port SATA Controller 2 [IDE mode]
+       8c0e  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]
+       8c0f  8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]
+       8c10  8 Series/C220 Series Chipset Family PCI Express Root Port #1
+               17aa 220e  ThinkPad T440p
+       8c11  8 Series/C220 Series Chipset Family PCI Express Root Port #1
+       8c12  8 Series/C220 Series Chipset Family PCI Express Root Port #2
+               17aa 220e  ThinkPad T440p
+       8c13  8 Series/C220 Series Chipset Family PCI Express Root Port #2
+       8c14  8 Series/C220 Series Chipset Family PCI Express Root Port #3
+       8c15  8 Series/C220 Series Chipset Family PCI Express Root Port #3
+       8c16  8 Series/C220 Series Chipset Family PCI Express Root Port #4
+       8c17  8 Series/C220 Series Chipset Family PCI Express Root Port #4
+       8c18  8 Series/C220 Series Chipset Family PCI Express Root Port #5
+       8c19  8 Series/C220 Series Chipset Family PCI Express Root Port #5
+       8c1a  8 Series/C220 Series Chipset Family PCI Express Root Port #6
+       8c1b  8 Series/C220 Series Chipset Family PCI Express Root Port #6
+       8c1c  8 Series/C220 Series Chipset Family PCI Express Root Port #7
+       8c1d  8 Series/C220 Series Chipset Family PCI Express Root Port #7
+       8c1e  8 Series/C220 Series Chipset Family PCI Express Root Port #8
+       8c1f  8 Series/C220 Series Chipset Family PCI Express Root Port #8
+       8c20  8 Series/C220 Series Chipset High Definition Audio Controller
+               103c 1909  ZBook 15
+               17aa 220e  ThinkPad T440p
+       8c21  8 Series/C220 Series Chipset High Definition Audio Controller
+       8c22  8 Series/C220 Series Chipset Family SMBus Controller
+               103c 1909  ZBook 15
+               17aa 220e  ThinkPad T440p
+       8c23  8 Series Chipset Family CHAP Counters
+       8c24  8 Series Chipset Family Thermal Management Controller
+       8c26  8 Series/C220 Series Chipset Family USB EHCI #1
+               103c 1909  ZBook 15
+               17aa 220e  ThinkPad T440p
+       8c2d  8 Series/C220 Series Chipset Family USB EHCI #2
+               103c 1909  ZBook 15
+               17aa 220e  ThinkPad T440p
+       8c31  8 Series/C220 Series Chipset Family USB xHCI
+               103c 1909  ZBook 15
+               17aa 220e  ThinkPad T440p
+       8c33  8 Series/C220 Series Chipset Family LAN Controller
+       8c34  8 Series/C220 Series Chipset Family NAND Controller
+       8c3a  8 Series/C220 Series Chipset Family MEI Controller #1
+               103c 1909  ZBook 15
+               17aa 220e  ThinkPad T440p
+       8c3b  8 Series/C220 Series Chipset Family MEI Controller #2
+       8c3c  8 Series/C220 Series Chipset Family IDE-r Controller
+       8c3d  8 Series/C220 Series Chipset Family KT Controller
+       8c40  8 Series/C220 Series Chipset Family LPC Controller
+       8c41  8 Series Chipset Family Mobile Super SKU LPC Controller
+       8c42  8 Series/C220 Series Chipset Family Desktop Super SKU LPC Controller
+       8c43  8 Series/C220 Series Chipset Family LPC Controller
+       8c44  Z87 Express LPC Controller
+       8c45  8 Series/C220 Series Chipset Family LPC Controller
+       8c46  Z85 Express LPC Controller
+       8c47  8 Series/C220 Series Chipset Family LPC Controller
+       8c48  8 Series/C220 Series Chipset Family LPC Controller
+       8c49  HM86 Express LPC Controller
+       8c4a  H87 Express LPC Controller
+       8c4b  HM87 Express LPC Controller
+       8c4c  Q85 Express LPC Controller
+       8c4d  8 Series/C220 Series Chipset Family LPC Controller
+       8c4e  Q87 Express LPC Controller
+       8c4f  QM87 Express LPC Controller
+               103c 1909  ZBook 15
+               17aa 220e  ThinkPad T440p
+       8c50  B85 Express LPC Controller
+       8c51  8 Series/C220 Series Chipset Family LPC Controller
+       8c52  C222 Series Chipset Family Server Essential SKU LPC Controller
+       8c53  8 Series/C220 Series Chipset Family LPC Controller
+       8c54  C224 Series Chipset Family Server Standard SKU LPC Controller
+       8c55  8 Series/C220 Series Chipset Family LPC Controller
+       8c56  C226 Series Chipset Family Server Advanced SKU LPC Controller
+       8c57  8 Series/C220 Series Chipset Family LPC Controller
+       8c58  8 Series/C220 Series Chipset Family WS SKU LPC Controller
+       8c59  8 Series/C220 Series Chipset Family LPC Controller
+       8c5a  8 Series/C220 Series Chipset Family LPC Controller
+       8c5b  8 Series/C220 Series Chipset Family LPC Controller
+       8c5c  C220 Series Chipset Family H81 Express LPC Controller
+       8c5d  8 Series/C220 Series Chipset Family LPC Controller
+       8c5e  8 Series/C220 Series Chipset Family LPC Controller
+       8c5f  8 Series/C220 Series Chipset Family LPC Controller
        8d00  Wellsburg 4-port SATA Controller [IDE mode]
        8d02  Wellsburg 6-Port SATA Controller [AHCI mode]
        8d04  Wellsburg SATA Controller [RAID mode]
        8d06  Wellsburg SATA Controller [RAID mode]
+               17aa 1031  ThinkServer RAID 110i
        8d08  Wellsburg 2-port SATA Controller [IDE mode]
        8d0e  Wellsburg SATA Controller [RAID mode]
        8d10  Wellsburg PCI Express Root Port #1
        8d66  Wellsburg sSATA Controller [RAID mode]
        8d68  Wellsburg sSATA Controller [IDE mode]
        8d6e  Wellsburg sSATA Controller [RAID mode]
-       8d7c  Wellsburg EPSS
+       8d7c  Wellsburg SPSR
        8d7d  Wellsburg MS SMBus 0
        8d7e  Wellsburg MS SMBus 1
        8d7f  Wellsburg MS SMBus 2
        9c01  Lynx Point-LP SATA Controller 1 [IDE mode]
        9c02  Lynx Point-LP SATA Controller 1 [AHCI mode]
        9c03  Lynx Point-LP SATA Controller 1 [AHCI mode]
+               17aa 2214  ThinkPad X240
        9c04  Lynx Point-LP SATA Controller 1 [RAID mode]
        9c05  Lynx Point-LP SATA Controller 1 [RAID mode]
        9c06  Lynx Point-LP SATA Controller 1 [RAID mode]
        9c1e  Lynx Point-LP PCI Express Root Port 8
        9c1f  Lynx Point-LP PCI Express Root Port 8
        9c20  Lynx Point-LP HD Audio Controller
+               17aa 2214  ThinkPad X240
        9c21  Lynx Point-LP HD Audio Controller
        9c22  Lynx Point-LP SMBus Controller
+               17aa 2214  ThinkPad X240
        9c23  Lynx Point-LP CHAP Counters
        9c24  Lynx Point-LP Thermal
        9c26  Lynx Point-LP USB EHCI #1
+               17aa 2214  ThinkPad X240
        9c2d  Lynx Point-LP USB EHCI #2
        9c31  Lynx Point-LP USB xHCI HC
+               17aa 2214  ThinkPad X240
        9c35  Lynx Point-LP SDIO Controller
        9c36  Lynx Point-LP Audio DSP Controller
        9c3a  Lynx Point-LP HECI #0
+               17aa 2214  ThinkPad X240
        9c3b  Lynx Point-LP HECI #1
        9c3c  Lynx Point-LP HECI IDER
        9c3d  Lynx Point-LP HECI KT
        9c41  Lynx Point-LP LPC Controller
        9c42  Lynx Point-LP LPC Controller
        9c43  Lynx Point-LP LPC Controller
+               17aa 2214  ThinkPad X240
        9c44  Lynx Point-LP LPC Controller
        9c45  Lynx Point-LP LPC Controller
        9c46  Lynx Point-LP LPC Controller
        9c64  Lynx Point-LP UART Controller #1
        9c65  Lynx Point-LP SPI Controller #0
        9c66  Lynx Point-LP SPI Controller #1
+       9c83  Wildcat Point-LP SATA Controller [AHCI Mode]
+       9c85  Wildcat Point-LP SATA Controller [RAID Mode]
+       9c87  Wildcat Point-LP SATA Controller [RAID Mode]
+       9c8f  Wildcat Point-LP SATA Controller [RAID Mode]
+       9c90  Wildcat Point-LP PCI Express Root Port #1
+       9c92  Wildcat Point-LP PCI Express Root Port #2
+       9c94  Wildcat Point-LP PCI Express Root Port #3
+       9c96  Wildcat Point-LP PCI Express Root Port #4
+       9c98  Wildcat Point-LP PCI Express Root Port #5
+       9c9a  Wildcat Point-LP PCI Express Root Port #6
+       9ca0  Wildcat Point-LP High Definition Audio Controller
+       9ca2  Wildcat Point-LP SMBus Controller
+       9ca4  Wildcat Point-LP Thermal Management Controller
+       9ca6  Wildcat Point-LP USB EHCI Controller
+       9cb1  Wildcat Point-LP USB xHCI Controller
+       9cb5  Wildcat Point-LP Secure Digital IO Controller
+       9cb6  Wildcat Point-LP Smart Sound Technology Controller
+       9cba  Wildcat Point-LP MEI Controller #1
+       9cbb  Wildcat Point-LP MEI Controller #2
+       9cbc  Wildcat Point-LP IDE-r Controller
+       9cbd  Wildcat Point-LP KT Controller
+       9cc1  Wildcat Point-LP LPC Controller
+       9cc2  Wildcat Point-LP LPC Controller
+       9cc3  Wildcat Point-LP LPC Controller
+       9cc5  Wildcat Point-LP LPC Controller
+       9cc6  Wildcat Point-LP LPC Controller
+       9cc7  Wildcat Point-LP LPC Controller
+       9cc9  Wildcat Point-LP LPC Controller
+       9ce0  Wildcat Point-LP Serial IO DMA Controller
+       9ce1  Wildcat Point-LP Serial IO I2C Controller #0
+       9ce2  Wildcat Point-LP Serial IO I2C Controller #1
+       9ce3  Wildcat Point-LP Serial IO UART Controller #0
+       9ce4  Wildcat Point-LP Serial IO UART Controller #1
+       9ce5  Wildcat Point-LP Serial IO GSPI Controller #0
+       9ce6  Wildcat Point-LP Serial IO GSPI Controller #1
        a000  Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge
                1458 5000  GA-D525TUD
                8086 4f4d  DeskTop Board D510MO
        d130  Core Processor DMI
        d131  Core Processor DMI
                1028 02da  OptiPlex 980
+               15d9 060d  C7SIM-Q Motherboard
        d132  Core Processor DMI
                1028 040b  Latitude E6510
        d133  Core Processor DMI
        d138  Core Processor PCI Express Root Port 1
                1028 02da  OptiPlex 980
                1028 040b  Latitude E6510
+               15d9 060d  C7SIM-Q Motherboard
        d139  Core Processor PCI Express Root Port 2
        d13a  Core Processor PCI Express Root Port 3
        d13b  Core Processor PCI Express Root Port 4
                1028 0287  PowerEdge Expandable RAID Controller 320/DC
                1028 0291  CERC SATA RAID 2 PCI SATA 6ch (DellCorsair)
                103c 3227  AAR-2610SA
-               108e 0286  STK RAID INT
+               108e 0286  Sun StorageTek SAS RAID HBA, Internal
                108e 0287  STK RAID EXT
                108e 7aac  STK RAID REM
                108e 7aae  STK RAID EX
        8088  PMC-Sierra PM8018 SAS HBA [Series 7H]
        8089  PMC-Sierra PM8019 SAS encryption HBA [Series 7He]
        808f  AIC-7901 U320 w/HostRAID
+               1028 0168  Precision Workstation 670 Mainboard
        8090  ASC-39320 U320 w/HostRAID
        8091  ASC-39320D U320 w/HostRAID
        8092  ASC-29320 U320 w/HostRAID
        9904  4-Port PCIe Serial Adapter
 # 2-port Serial 1-port Parallel Adaptor
        9912  PCIe 9912 Multi-I/O Controller
-       9922  PCIe 9922 Multi-I/O Controller
+       9922  MCS9922 PCIe Multi-I/O Controller
        9990  MCS9990 PCIe to 4‐Port USB 2.0 Host Controller
+# Subsystem ID on a 3c985B-SX network card
+9850  3Com (wrong ID)
 9902  Stargen Inc.
        0001  SG2010 PCI over Starfabric Bridge
        0002  SG2010 PCI to Starfabric Gateway
@@ -22360,6 +24692,22 @@ a304  Sony
 a727  3Com Corporation
        0013  3CRPAG175 Wireless PC Card
        6803  3CRDAG675B Wireless 11a/b/g Adapter
+aa00  iTuner
+aa01  iTuner
+aa02  iTuner
+aa03  iTuner
+aa04  iTuner
+aa05  iTuner
+aa06  iTuner
+aa07  iTuner
+aa08  iTuner
+aa09  iTuner
+aa0a  iTuner
+aa0b  iTuner
+aa0c  iTuner
+aa0d  iTuner
+aa0e  iTuner
+aa0f  iTuner
 aa42  Scitex Digital Video
 aa55  Ncomputing X300 PCI-Engine
 aaaa  Adnaco Technology Inc.
@@ -22384,8 +24732,24 @@ b1d9  ATCOM Technology co., LTD.
 # Pinnacle should be 11bd, but they got it wrong several times --mj
 bd11  Pinnacle Systems, Inc. (Wrong ID)
 bdbd  Blackmagic Design
-# HD/SDI input and output card for PCI Express 1x
-       a11b  DeckLink SDI
+       a106  Multibridge Extreme
+       a117  Intensity Pro
+       a11a  DeckLink HD Extreme 2
+       a11b  DeckLink SDI/Duo/Quad
+       a11c  DeckLink HD Extreme 3
+       a11d  DeckLink Studio
+       a11e  DeckLink Optical Fibre
+       a121  DeckLink HD Extreme 3D/3D+
+       a124  Intensity Extreme
+       a126  Intensity Shuttle
+       a127  UltraStudio Express
+       a129  UltraStudio Mini Monitor
+       a12a  UltraStudio Mini Recorder
+       a12d  UltraStudio 4K
+       a12e  DeckLink 4K Extreme
+       a12f  DeckLink Mini Monitor
+       a130  DeckLink Mini Recorder
+       a132  UltraStudio 4K
 c001  TSI Telsys
 c0a9  Micron/Crucial Technology
 c0de  Motorola
@@ -22429,21 +24793,53 @@ d161  Digium, Inc.
        8006  Wildcard AEX410 4-port analog card (PCI-Express)
        8007  Hx8 Series 8-port Base Card
        8008  Hx8 Series 8-port Base Card (PCI-Express)
+       800a  Wildcard TE133 single-span T1/E1/J1 card (PCI Express)
+       800b  Wildcard TE134 single-span T1/E1/J1 card
        b410  Wildcard B410 quad-BRI card
 d4d4  Dy4 Systems Inc
        0601  PCI Mezzanine Card
 d531  I+ME ACTIA GmbH
 d84d  Exsys
 dada  Datapath Limited
+       0133  VisionRGB-X2
+       0139  VisionRGB-E1
+       0144  VisionSD8
+       0150  VisionRGB-E2
+       0151  VisionSD4+1
+       0159  VisionAV
+       0161  DGC161
+       0165  DGC165
+       0167  DGC167
+       0168  DGC168
+       1139  VisionRGB-E1S
+       1150  VisionRGB-E2S
+       1151  VisionSD4+1S
+       1153  VisionDVI-DL
+       1154  VisionSDI2
 db10  Diablo Technologies
 dcba  Dynamic Engineering
-       0046  PCIeAlteraCycloneIV
+       0046  PCIe Altera Cyclone IV
 # VPX format Receiver Controller Board
        0047  VPX-RCB
 # PMC Format FPGA design with 8 high speed UART channels
        0048  PMC-Biserial-III-BAE9
+       004e  PC104p-Biserial-III-NVY5
+       004f  PC104p-Biserial-III-NVY6
+       0052  PCIeBiSerialDb37 BA22 LVDS IO
 dd01  Digital Devices GmbH
-       0003  Octopus LE DVB adapter
+       0003  Octopus DVB Adapter
+               dd01 0001  Octopus DVB adapter
+               dd01 0002  Octopus LE DVB adapter
+               dd01 0003  Octopus OEM
+               dd01 0004  Octopus V3 DVB adapter
+               dd01 0010  Octopus Mini
+               dd01 0020  Cine S2 V6 DVB adapter
+               dd01 0021  Cine S2 V6.5 DVB adapter
+               dd01 0030  Cine CT V6.1 DVB adapter
+               dd01 db03  Mystique SaTiX-S2 V3 DVB adapter
+       0011  Octopus CI DVB Adapter
+               dd01 0040  Octopus CI
+               dd01 0041  Octopus CI Single
 dead  Indigita Corporation
 deaf  Middle Digital Inc.
        9050  PC Weasel Virtual VGA
@@ -22472,6 +24868,7 @@ e4bf  EKF Elektronik GmbH
        53c1  SC1-ALLEGRO
        cc47  CCG-RUMBA
        cc4d  CCM-BOOGIE
+e4e4  Xorcom
 e55e  Essence Technology, Inc.
 ea01  Eagle Technology
        000a  PCI-773 Temperature Card
index 859d3b3c557e3be8765e7f1dc8de85f1fcbe51bf..c8a83c862be06dda0c1e10d046a2852519a51feb 100644 (file)
@@ -9,8 +9,8 @@
 #      The latest version can be obtained from
 #              http://www.linux-usb.org/usb.ids
 #
-# Version: 2013.03.25
-# Date:    2013-03-25 20:34:03
+# Version: 2014.02.03
+# Date:    2014-02-03 20:34:03
 #
 
 # Vendors, devices and interfaces. Please keep sorted.
 0002  Ingram
 0003  Club Mac
 0004  Nebraska Furniture Mart
+0011  Unknown manufacturer
+       7788  Flash mass storage drive
 0053  Planex
        5301  GW-US54ZGL 802.11bg
 0079  DragonRise Inc.
-       0006  Generic USB Joystick
+       0006  PC TWIN SHOCK Gamepad
        0011  Gamepad
 0105  Trust International B.V.
        145f  NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211]
        0112  Card Reader
 017c  MLK
        145f  Trust Deskset
+0200  TP-Link
+       0201  MA180 UMTS Modem
 0204  Chipsbank Microelectronics Co., Ltd
-       6025  CBM2080 Flash drive controller
+       6025  CBM2080 / CBM2090 Flash drive controller
        6026  CBM1180 Flash drive controller
 0218  Hangzhou Worlde
        0301  MIDI Port
        2107  AVR Dragon
        2109  STK541 ZigBee Development Board
        210d  XPLAIN evaluation kit (CDC ACM)
+       2110  AVR JTAGICE3 Debugger and Programmer
        2122  XMEGA-A1 Explained evaluation kit
        2310  EVK11xx evaluation board
        2fe4  ATxmega32A4U DFU bootloader
+       2ff0  atmega32u2 DFU bootloader
+       2ffa  at90usb162 DFU bootloader
        2ffb  at90usb AVR DFU bootloader
        2ffd  at89c5130/c5131 DFU bootloader
        2fff  at89c5132/c51snd1c DFU bootloader
        0412  Printing Support
        0417  LaserJet 1200 series
        0423  HS-COMBO Cardreader
+       042a  LaserJet M1132 MFP
+       0441  HP Prime Calculator
        0504  DeskJet 885c
        0505  ScanJet 2100c
        0507  DVD+RW
        0912  Printing Support
        0917  LaserJet 3330
        0924  Modular Smartcard Keyboard
+       094a  Optical Mouse [672662-001]
        0a01  ScanJet 2400c
        0a17  color LaserJet 3700
        0b01  ScanJet 82x0C
        2311  OfficeJet d series
        2312  OfficeJet Pro L7700
        2317  LaserJet 4350
-       231d  4 GB Flash Drive
+       231d  Broadcom 2070 Bluetooth Combo
        2402  PhotoSmart 7700 series
        2404  Deskjet F2280 series
        2405  ScanJet 4070 PhotoSmart
        2504  DeskJet F4200 series
        2505  ScanJet 3770
        2512  OfficeJet Pro L7300
+       2514  4-port hub
        2517  LaserJet 2410
        251d  Gobi 2000 Wireless Modem
        2524  LP3065 30" Monitor Hub
        3b11  PSC 1300 series
        3b17  LaserJet M1005 MFP
        3c02  PhotoSmart 7350
+       3c05  Scanjet Professional 1000 Mobile Scanner
        3c11  PSC 1358
        3c17  EWS UPD
        3d02  PhotoSmart 7350~
        5017  EWS UPD
        5111  PhotoSmart 3200 series
        5211  PhotoSmart 3300 series
+       5307  v165w Stick
        5311  OfficeJet 6300
        5312  Officejet Pro 8500A
        5411  OfficeJet 4300
        8028  Dev board JTAG (FT232H based)
        8040  4 Port Hub
        8070  7 Port Hub
+       8140  Vehicle Explorer Interface
+       8210  MGTimer - MGCC (Vic) Timing System
        8370  7 Port Hub
        8371  PS/2 Keyboard And Mouse
        8372  FT8U100AX Serial Port
        8a28  Rainforest Automation ZigBee Controller
        8a98  TIAO Multi-Protocol Adapter
+       8b28  Alpermann+Velte TCI70
+       8b29  Alpermann+Velte TC60 CLS
+       8b2a  Alpermann+Velte Rubidium Q1
+       8b2b  Alpermann+Velte TCD
+       8b2c  Alpermann+Velte TCC70
+       9133  CallerID
+       9135  Rotary Pub alarm
        9e90  Marvell OpenRD Base/Client
        9f80  Ewert Energy Systems CANdapter
        a6d0  Texas Instruments XDS100v2 JTAG / BeagleBone A3
        c8bc  Alpermann+Velte Rubidium S1
        c8bd  Alpermann+Velte Rubidium T1
        c8be  Alpermann+Velte Rubidium D1
+       c8bf  Alpermann+Velte TC60 RLV
        cc48  Tactrix OpenPort 1.3 Mitsubishi
        cc49  Tactrix OpenPort 1.3 Subaru
        cc4a  Tactrix OpenPort 1.3 Universal
        05d4  EasyShare C180 Digital Camera
        1001  EasyShare SV811 Digital Picture Frame
        4000  InkJet Color Printer
+       4021  Photo Printer 6800
        4022  1400 Digital Photo Printer
+       402e  605 Photo Printer
+       4034  805 Photo Printer
        4056  ESP 7200 Series AiO
        4109  EasyShare Printer Dock Series 3
        410d  EasyShare G600 Printer Dock
        6004  i60
        6005  i80
 040b  Weltrend Semiconductor
+       0a68  Func MS-3 gaming mouse [WT6573F MCU]
        6510  Weltrend Bar Code Reader
        6520  XBOX Xploder
        6533  Speed-Link Competition Pro
        4056  Live! Cam Video IM Pro
        4057  Live! Cam Optia
        4058  Live! Cam Optia AF
+       405f  WebCam Vista (VF0330)
        4061  Live! Cam Notebook Pro [VF0400]
        4063  Live! Cam Video IM Pro
        4068  Live! Cam Notebook [VF0470]
        4060  Ultra Fast Media Reader
        4064  Ultra Fast Media Reader
        7500  LAN7500 Ethernet 10/100/1000 Adapter
-       9512  LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub
+       9512  SMC9512/9514 USB Hub
        a700  2 Port Hub
        ec00  SMSC9512/9514 Fast Ethernet Adapter
 0425  Motorola Semiconductors HK, Ltd
        010d  3500-4500 series
        010f  6500 series
        0142  X3650 (Printer, Scanner, Copier)
+       01fa  S310 series
        4303  Xerox WorkCentre Pro 412
 043e  LG Electronics USA, Inc.
        3001  AN-WF100 802.11abgn Wireless Adapter [Broadcom BCM4323]
        4a4d  Flatron 915FT Plus Monitor
        7001  MF-PD100 Soul Digital MP3 Player
        7013  MP3 Player
+       70d7  Mouse Scanner LSM-150 [LG Smart Scan Mouse]
+       70f5  External HDD
        8484  LPC-U30 Webcam II
        8585  LPC-UC35 Webcam
        8888  Electronics VCS Camera II(LPC-U20)
        b10a  T.16000M Joystick
        b203  360 Modena Pro Wheel
        b300  Firestorm Dual Power
+       b303  FireStorm Dual Analog 2
        b304  Firestorm Dual Power
        b307  vibrating Upad
        b30b  Wireless VibrationPad
        625f  TUSB6250 ATA Bridge
        8042  Hub
        dbc0  Device Bay Controller
-       e001  GraphLink
+       e001  GraphLink [SilverLink]
        e003  TI-84 Plus Calculator
        e004  TI-89 Titanium Calculator
        e008  TI-84 Plus Silver Calculator
+       e012  TI-Nspire Calculator
        f430  MSP-FET430UIF JTAG Tool
        f432  eZ430 Development Tool
        ffff  Bluetooth Device
        0151  Super Flash 1GB / GXT  64MB Flash Drive
        0162  SiS162 usb Wireless LAN Adapter
        0163  802.11 Wireless LAN Adapter
+       0817  SiS-184-ASUS-4352.17 touch panel
        5401  Wireless Adapter RO80211GS-USB
 0458  KYE Systems Corp. (Mouse Systems)
        0001  Mouse
        705c  Genius iSlim 1300AF
        7079  FaceCam 2025R
        707f  TVGo DVB-T03 [RTL2832]
+       7088  WideCam 1050
 0459  Adobe Systems, Inc.
 045a  SONICblue, Inc.
        07da  Supra Express 56K modem
        029d  Xbox360 HD-DVD Drive
        029e  Xbox360 HD-DVD Memory Unit
        02a0  Xbox360 Big Button IR
+       02a1  Xbox 360 Wireless Receiver for Windows
        02a8  Xbox360 Wireless N Networking Adapter [Atheros AR7010+AR9280]
        02ad  Xbox NUI Audio
        02ae  Xbox NUI Camera
        02b0  Xbox NUI Motor
+       02b6  Xbox 360 / Bluetooth Wireless Headset
        0400  Windows Powered Pocket PC 2002
        0401  Windows Powered Pocket PC 2002
        0402  Windows Powered Pocket PC 2002
        076d  LifeCam HD-5000
        0772  LifeCam Studio
        0779  LifeCam HD-3000
+       0780  Comfort Curve Keyboard 3000
+       0797  Optical Mouse 200
        930a  ISOUSB.SYS Intel 82930 Isochronous IO Test Board
+       ffca  Catalina
        fff8  Keyboard
        ffff  Windows CE Mass Storage
 0460  Ace Cad Enterprise Co., Ltd
 0467  AT&T Paradyne
 0468  Wieson Technologies Co., Ltd
 046a  Cherry GmbH
-       0001  My3000 Keyboard
+       0001  Keyboard
        0003  My3000 Hub
        0004  CyBoard Keyboard
        0005  XX33 SmartCard Reader Keyboard
        002a  Wireless Mouse & Keyboard
        002d  SmartTerminal XX44
        003e  SmartTerminal ST-2xxx
+       0041  G86 6240 Keyboard
        0080  eHealth Terminal ST 1503
        0081  eHealth Keyboard G87 1504
        0106  R-300 Wireless Mouse Receiver
        0a13  Z-5 Speakers
        0a17  G330 Headset
        0a1f  G930
+       0a29  H600 [Wireless Headset]
        0b02  C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode)
        8801  Video Camera
        b305  BT Mini-Receiver
        c061  RX1500 Laser Mouse
        c062  M-UAS144 [LS1 Laser Mouse]
        c063  DELL Laser Mouse
+       c064  M110 corded optical mouse (M-B0001)
+       c066  G9x Laser Mouse
        c068  G500 Laser Mouse
        c069  M500 Laser Mouse
        c06a  USB Optical Mouse
        c06b  G700 Wireless Gaming Mouse
        c06c  Optical Mouse
+       c077  M105 Optical Mouse
        c101  UltraX Media Remote
        c110  Harmony 785/885 Remote
        c111  Harmony 525 Remote
        c112  Harmony 890 Remote
        c11f  Harmony 900/1100 Remote
        c121  Harmony One Remote
-       c122  Harmony 700 Remote
+       c122  Harmony 650/700 Remote
        c124  Harmony 300 Remote
        c125  Harmony 200 Remote
+       c126  Harmony Link
+       c12b  Harmony Touch Remote
        c201  WingMan Extreme Joystick with Throttle
        c202  WingMan Formula
        c207  WingMan Extreme Digital 3D
        c225  G11/G15 Keyboard / G keys
        c226  G15 Refresh Keyboard
        c227  G15 Refresh Keyboard
+       c228  G19 Gaming Keyboard
+       c229  G19 Gaming Keyboard Macro Interface
        c22a  Gaming Keyboard G110
        c22b  Gaming Keyboard G110 G-keys
        c22d  G510 Gaming Keyboard
        c22e  G510 Gaming Keyboard onboard audio
        c245  G400 Optical Mouse
        c246  Gaming Mouse G300
+       c248  G105 Gaming Keyboard
+       c24a  G600 Gaming Mouse
+       c24d  G710 Gaming Keyboard
+       c24e  G500s Laser Gaming Mouse
        c281  WingMan Force
        c283  WingMan Force 3D
        c285  WingMan Strike Force 3D
        c526  Nano Receiver
        c529  Logitech Keyboard + Mice
        c52b  Unifying Receiver
+       c52e  MK260 Wireless Combo Receiver
        c52f  Unifying Receiver
        c532  Unifying Receiver
        c623  3Dconnexion Space Traveller 3D Mouse
        c625  3Dconnexion Space Pilot 3D Mouse
        c626  3Dconnexion Space Navigator 3D Mouse
        c627  3Dconnexion Space Explorer 3D Mouse
+       c629  3Dconnexion SpacePilot Pro 3D Mouse
        c702  Cordless Presenter
        c703  Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth)
        c704  diNovo Wireless Desktop
        20b6  GoGear Vibe
        20d0  SPZ2000 Webcam [PixArt PAC7332]
        20e3  GoGear Raga
+       20e4  GoGear ViBE 8GB
        262c  SPC230NC Webcam
        485d  Senselock SenseIV v2.x
        df55  LPCXpresso LPC-Link
        4254  BUA-100 Bluetooth Adapter
        ac01  Savi 7xx
        ad01  GameCom 777 5.1 Headset
+       c00e  Blackwire C310 headset
 0480  Toshiba America Info. Systems, Inc.
        0001  InTouch Module
        0004  InTouch Module
        0011  InTouch Module
        0014  InTouch Module
+       a006  External Disk 1.5TB
        a007  External Disk USB 3.0
+       a009  Stor.E Basics
+       d010  External Disk 3TB
 0481  Zenith Data Systems
 0482  Kyocera Corp.
        000e  FS-1020D Printer
+       000f  FS-1920 Mono Printer
        0100  Finecam S3x
        0101  Finecam S4
        0103  Finecam S5
        5000  ST Micro/Ergenic ERG BT-002 Bluetooth Adapter
        5001  ST Micro Bluetooth Device
        5710  Joystick in FS Mode
+       5720  STM microSD Flash Device
        5721  Hantek DDS-3X25 Arbitrary Waveform Generator
        5740  STM32F407
        7270  ST Micro Serial Bridge
        9006  IT9135 BDA Afatech DVB-T HDTV Dongle
        9009  Zolid HD DVD Maker
        9135  Zolid Mini DVB-T Stick
+       9503  ITE it9503 feature-limited DVB-T transmission chip [ccHDtv]
+       9507  ITE it9507 full featured DVB-T transmission chip [ccHDtv]
 048f  Eicon Tech.
 0490  United Microelectronics Corp.
 0491  Capetronic
        171b  MP960
        1721  MP210 ser
        1723  MP470 ser
+       1724  PIXMA MP520 series
        1725  MP610 ser
        1726  MP970 ser
        1727  MX300 ser
        1728  MX310 ser
        1729  MX700 ser
        172b  MP140 ser
+       173b  PIXMA MP270 All-In-One Printer
        173e  MP560
        173f  Pixma MP640 Multifunction device
        1748  Pixma MG5150
        3100  PowerShot TX1
        310b  SELPHY CP600
        310e  Digital IXUS 50 (PTP mode)
+       310f  PowerShot A420
        3110  EOS Digital Rebel XTi
+       3115  PowerShot SD900 / Digital IXUS 900 Ti / IXY DIGITAL 1000
        3116  Digital IXUS 750 / PowerShot SD550 (PTP mode)
        3117  PowerShot A700
        3119  PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS
+       311a  PowerShot S3 IS
        311b  PowerShot A540
+       311c  PowerShot SD600 DIGITAL ELPH / DIGITAL IXUS 60 / IXY DIGITAL 70
+       3125  PowerShot G7
+       3126  PowerShot A530
        3127  SELPHY CP710
        3128  SELPHY CP510
        312d  Elura 100
+       3136  PowerShot SD800 IS / Digital IXUS 850 IS / IXY DIGITAL 900 IS
+       3137  PowerShot SD40 / Digital IXUS i7 IXY / DIGITAL L4
        3138  PowerShot A710 IS
+       3139  PowerShot A640
+       313a  PowerShot A630
        3141  SELPHY ES1
        3142  SELPHY CP730
        3143  SELPHY CP720
        3145  EOS 450D
+       3146  EOS 40D
        3147  EOS 1Ds Mark III
-       314f  Powershot SD1000
+       3148  PowerShot S5 IS
+       3149  PowerShot A460
+       314b  PowerShot SD850 IS DIGITAL ELPH / Digital IXUS 950 IS / IXY DIGITAL 810 IS
+       314c  PowerShot A570 IS
+       314d  PowerShot A560
+       314e  PowerShot SD750 DIGITAL ELPH / DIGITAL IXUS 75 / IXY DIGITAL 90
+       314f  PowerShot SD1000 DIGITAL ELPH / DIGITAL IXUS 70 / IXY DIGITAL 10
+       3150  PowerShot A550
        3155  PowerShot A450
        315a  PowerShot G9
+       315b  PowerShot A650 IS
        315d  PowerShot A720
+       315e  PowerShot SX100 IS
+       315f  PowerShot SD950 IS DIGITAL ELPH / DIGITAL IXUS 960 IS / IXY DIGITAL 2000 IS
        3160  Digital IXUS 860 IS
        3170  SELPHY CP750
        3171  SELPHY CP740
+       3173  PowerShot SD890 IS DIGITAL ELPH / Digital IXUS 970 IS / IXY DIGITAL 820 IS
+       3174  PowerShot SD790 IS DIGITAL ELPH / Digital IXUS 90 IS / IXY DIGITAL 95 IS
        3175  IXY Digital 25 IS
        3176  PowerShot A590
+       3177  PowerShot A580
        317a  PC1267 [Powershot A470]
        3184  Digital IXUS 80 IS (PTP mode)
        3185  SELPHY ES2
        3186  SELPHY ES20
+       318d  PowerShot SX100 IS
+       318e  PowerShot A1000 IS
+       318f  PowerShot G10
+       3191  PowerShot A2000 IS
        3192  PowerShot SX110 IS
+       3193  PowerShot SD990 IS DIGITAL ELPH / Digital IXUS 980 IS / IXY DIGITAL 3000 IS
+       3195  PowerShot SX1 IS
+       3196  PowerShot SD880 IS DIGITAL ELPH / Digital IXUS 870 IS / IXY DIGITAL 920 IS
        319a  EOS 7D
        31aa  SELPHY CP770
        31ab  SELPHY CP760
        31b0  SELPHY ES30
        31b1  SELPHY CP530
        31bc  PowerShot D10
+       31bd  PowerShot SD960 IS DIGITAL ELPH / Digital IXUS 110 IS / IXY DIGITAL 510 IS
+       31be  PowerShot A2100 IS
        31bf  PowerShot A480
        31c0  PowerShot SX200 IS
+       31c1  PowerShot SD970 IS DIGITAL ELPH / Digital IXUS 990 IS / IXY DIGITAL 830 IS
+       31c2  PowerShot SD780 IS DIGITAL ELPH / Digital IXUS 100 IS / IXY DIGITAL 210 IS
+       31c3  PowerShot A1100 IS
+       31c4  PowerShot SD1200 IS DIGITAL ELPH / Digital IXUS 95 IS / IXY DIGITAL 110 IS
+       31cf  EOS Rebel T1i / EOS 500D / EOS Kiss X3
        31dd  SELPHY CP780
+       31df  PowerShot G11
+       31e0  PowerShot SX120 IS
+       31e1  PowerShot S90
+       31e4  PowerShot SX20 IS
        31e5  Digital IXUS 200 IS
+       31e6  PowerShot SD940 IS DIGITAL ELPH / Digital IXUS 120 IS / IXY DIGITAL 220 IS
+       31e7  SELPHY CP790
+       31ea  EOS Rebel T2i / EOS 550D / EOS Kiss X4
        31ee  SELPHY ES40
        31ef  PowerShot A495
+       31f0  PowerShot A490
        31f1  PowerShot A3100 IS / PowerShot A3150 IS
        31f2  PowerShot A3000 IS
        31f3  PowerShot Digital ELPH SD1400 IS
        31f8  Powershot SD4500 IS / IXUS 1000 HS / IXY 50S
        31ff  Digital IXUS 55
        3209  Vixia HF S21 A
+       320f  PowerShot G12
        3210  Powershot SX30 IS
        3211  PowerShot SX130 IS
        3212  Powershot S95
        3218  EOS 600D / Rebel T3i (ptp)
        3223  PowerShot A3300 IS
        3224  PowerShot A3200 IS
+       3225  PowerShot ELPH 500 HS / IXUS 310 HS
        3226  PowerShow A800
+       3227  PowerShot ELPH 100 HS / IXUS 115 HS
        3228  PowerShot SX230 HS
        3229  PowerShot ELPH 300 HS / IXUS 220 HS
        322a  PowerShot A2200
        322b  Powershot A1200
+       322c  PowerShot SX220 HS
        3233  PowerShot G1 X
        3234  PowerShot SX150 IS
        3236  PowerShot S100
        323f  PowerShot A810
        3240  PowerShot ELPH 320 HS / IXUS 240 HS
        3241  PowerShot ELPH 110 HS / IXUS 125 HS
+       3242  PowerShot D20
        3243  PowerShot A4000 IS
        3244  PowerShot SX260 HS
        3245  PowerShot SX240 HS
        325a  PowerShot SX160 IS
        325b  PowerShot S110
        325c  PowerShot SX500 IS
+       325f  PowerShot SX280 HS
+       3260  PowerShot SX270 HS
+       3262  PowerShot A2600
+       3264  PowerShot A1400
+       3265  Powershot ELPH 130 IS / IXUS 140
+       3268  PowerShot ELPH 330 HS / IXUS 255 HS
+       3271  PowerShot A2500
+       3276  PowerShot SX170 IS
+       3277  PowerShot SX510 HS
+       327d  Powershot ELPH 115 IS / IXUS 132
 04aa  DaeWoo Telecom, Ltd
 04ab  Chromatic Research
 04ac  Micro Audiometrics Corp.
        0413  D40 (mass storage mode)
        041e  D60 digital camera (mass storage mode)
        0422  D700 (ptp)
+       0423  D5000
        0424  D3000
        0425  D300S
+       0428  D7000
+       0429  D5100
        042a  D800 (ptp)
        0f03  PD-10 Wireless Printer Adapter
        4000  Coolscan LS 40 ED
        4427  Portable CD ROM
        4482  Serial Converter
        4485  Serial Converter
+       4524  40 Character Vacuum Fluorescent Display
        4525  Double sided CRT
        4535  4610 Suremark Printer
        4550  NVRAM (128 KB)
        0001  Mouse
        0002  CY7C63x0x Thermometer
        0033  Mouse
+       0060  Wireless optical mouse
        0100  Cino FuzzyScan F760-B
        0101  Keyboard/Hub
        0102  Keyboard with APM
        1041  fi-4120c Scanner
        1042  fi-4220c Scanner
        105b  AH-F401U Air H device
+       1084  PalmSecure Sensor V2
        1096  fi-5110EOX
        1097  fi-5110C
        10ae  fi-4120C2
        10e7  fi-5900C
        10fe  S500
        1150  fi-6230
+       201d  SATA 3.0 6Gbit/s Adaptor [GROOVY]
 04c6  Toshiba America Electronic Components
 04c7  Micro Macro Technologies
 04c8  Konica Corp.
        072c  Revio KD20M
        072d  Revio KD410Z
 04ca  Lite-On Technology Corp.
+       004f  SK-9020 keyboard
        1766  HID Monitor Controls
+       2004  Bluetooth 4.0 [Broadcom BCM20702A0]
        9304  Hub
        f01c  TT1280DA DVB-T TV Tuner
 04cb  Fuji Photo Film Co., Ltd
        8001  ICD2 in-circuit debugger
        8101  PIC24F Starter Kit
        8107  Microstick II
+       9004  Microchip REAL ICE
        900a  PICkit3
        c001  PicoLCD 20x4
        f8da  Hughski Ltd. ColorHug
        1400  PS/2 keyboard + mouse controller
        1503  Shortboard Lefty
        1603  Keyboard
+       1702  Keyboard LKS02
        2013  Keyboard [Das Keyboard]
        2221  Keyboard
        2323  Keyboard
+       2519  Shenzhen LogoTech 2.4GHz receiver
        2832  1channel Telephone line recorder
+       2834  HT82A834R Audio MCU
        a055  Keyboard
 04da  Panasonic (Matsushita)
        0901  LS-120 Camera
 04e1  Iiyama North America, Inc.
        0201  Monitor Hub
 04e2  Exar Corp.
+       1410  XR21V1410 USB-UART IC
 04e3  Zilog, Inc.
 04e4  ACC Microelectronics
 04e5  Promise Technology
        5151  SCR338 Keyboard Smart Card Reader
        5292  SCL011 RFID reader
        5410  SCR35xx Smart Card Reader
+       5591  SCL3711-NFC&RW
        e000  SCRx31 Reader
        e001  SCR331 SmartCard Reader
        e003  SPR532 PinPad SmartCard Reader
        0100  Kingston Flash Drive (128MB)
        0110  Connect3D Flash Drive
        0111  Connect3D Flash Drive
-       0300  E2530 Phone (Mass storage mode)
+       0300  E2530 / GT-C3350 Phones (Mass storage mode)
        1003  MP3 Player and Recorder
        1006  SDC-200Z
        130c  NX100
        5f04  NEXiO Sync
        5f05  STORY Station 1TB
        6032  G2 Portable hard drive
+       6034  G2 Portable hard drive
        60b3  M2 Portable Hard Drive
        60c4  M2 Portable Hard Drive USB 3.0
+       61b6  M3 Portable Hard Drive 1TB
        6601  Mobile Phone
        6602  Galaxy
        6603  Galaxy
        685b  GT-I9100 Phone [Galaxy S II] (mass storage mode)
        685c  GT-I9250 Phone [Galaxy Nexus]
        685d  GT-I9100 Phone [Galaxy S II] (Download mode)
-       685e  GT-I9100 Phone [Galaxy S II] (USB Debugging mode)
+       685e  GT-I9100 / GT-C3350 Phones (USB Debugging mode)
        6860  GT-I9100 Phone [Galaxy S II], GT-I9300 Phone [Galaxy S III], GT-P7500 [Galaxy Tab 10.1]
        6865  GT-I9300 Phone [Galaxy S III] (PTP mode)
        6866  GT-I9300 Phone [Galaxy S III] (debugging mode)
        0760  Acer KU-0760 Keyboard
        0841  HP Multimedia Keyboard
        0860  2.4G Multimedia Wireless Kit
+       1121  Periboard 717 Mini Wireless Keyboard
        a001  E-Video DC-100 Camera
        a120  ORITE CCD Webcam(PC370R)
        a121  ORITE CCD Webcam(PC370R)
        b057  integrated USB webcam
        b059  CKF7037 HP webcam
        b071  2.0M UVC Webcam / CNF7129
+       b083  CKF7063 Webcam (HP)
        b091  Webcam
        b104  CNF7069 Webcam
        b107  CNF7070 Webcam
        b1b9  Asus Integrated Webcam
        b1cf  Lenovo Integrated Camera
        b1d6  CNF9055 Toshiba Webcam
+       b1e4  Toshiba Integrated Webcam
        b213  Fujitsu Integrated Camera
        b217  Lenovo Integrated Camera (0.3MP)
        b221  integrated camera
        b2b9  Lenovo Integrated Camera UVC
        b2ea  Integrated Camera [ThinkPad]
        b330  Asus 720p CMOS webcam
+       b354  UVC 1.00 device HD UVC WebCam
 04f3  Elan Microelectronics Corp.
+       000a  Touchscreen
        0103  ActiveJet K-2024 Multimedia Keyboard
        01a4  Wireless Keyboard
        0210  Optical Mouse
        201a  PT-18R P-touch label printer
        201b  QL-650TD P-Touch Label Printer
        2027  QL-560 P-Touch Label Printer
+       202b  PT-7600 P-Touch Label Printer
        2100  Card Reader Writer
 04fa  Dallas Semiconductor
        2490  DS1490F 2-in-1 Fob, 1-Wire adapter
        16e3  n30 Handheld Sync
        3202  Liquid
        3203  Liquid (Debug mode)
+       3230  BeTouch E120
        3317  Liquid
        3325  Iconia tablet A500
        3341  Iconia tablet A500
        0304  FSU304 USB 2.0 - 4 Ports Hub
        0307  USB 2.0 - 7 ports Hub [FSU307]
        0409  F5U409 Serial
+       0416  Staples 12416 7 port desktop hub
        0551  F6C550-AVR UPS
        0706  2-N-1 7-Port Hub (Lower half)
        0802  Nostromo n40 Gamepad
        1004  F9L1004 802.11n Surf N300 XR Wireless Adapter [Realtek RTL8192CU]
        1102  F7D1102 N150/Surf Micro Wireless Adapter v1000 [Realtek RTL8188CUS]
        1103  F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573]
+       1106  F9L1106v1 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
+       1109  F9L1109v1 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]
        11f2  ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS]
        1202  F5U120-PC Parallel Printer Port
        1203  F5U120-PC Serial Port
        a4a2  Linux-USB Ethernet/RNDIS Gadget
        a4a3  Linux-USB user-mode isochronous source/sink
        a4a4  Linux-USB user-mode bulk source/sink
-       a4a5  Linux-USB File Storage Gadget
+       a4a5  Pocketbook Pro 903
        a4a6  Linux-USB Serial Gadget
        a4a7  Linux-USB Serial Gadget (CDC ACM mode)
        a4a8  Linux-USB Printer Gadget
 0539  Shyh Shiun Terminals Co., Ltd
 053a  PrehKeyTec GmbH
        0b00  Hub
+       0b01  Preh MCI 3100
 053b  Global Village Communication
 053c  Institut of Microelectronic & Mechatronic Systems
 053d  Silicon Architect
        2727  Xircom PGUNET USB-USB Bridge
        2750  EZ-Link (EZLNKUSB.SYS)
        2810  Cypress ATAPI Bridge
+       4d90  AmScope MD1900 camera
        7777  Bluetooth Device
        9999  AN2131 uninitialized (?)
 0548  Tyan Computer Corp.
        01d0  DVD+RW External Drive DRU-700A
        01d5  IC RECORDER
        01de  VRD-VC10 [Video Capture]
+       01e8  UP-DR150 Photo Printer
        01e9  Net MD
        01ea  Hi-MD WALKMAN
        01ee  IC RECORDER
        0440  DSC-H55
        0485  MHS-PM5 HD camcorder
        04cb  WALKMAN NWZ-E354
+       06bb  WALKMAN NWZ-F805
        1000  Wireless Buzz! Receiver
 054d  Try Corp.
 054e  Proside Corp.
        4000  DSB-650 10Mbps Ethernet [klsi]
        7000  Hub
        7820  UC-2322 2xSerial Ports [mos7820]
+       8021  CS1764A [CubiQ DVI KVMP Switch]
 0558  Truevision, Inc.
        1009  GW Instek GDS-1000 Oscilloscope
        100a  GW Instek GDS-1000A Oscilloscope
        00d6  Bamboo Pen & Touch (CTH-460)
        00db  Bamboo Fun (CTH-661SE-NL)
        00dd  Bamboo Pen (CTL-470)
+       00de  CTH-470 [Bamboo Fun Pen & Touch]
        00f6  Cintiq 24HD touch (DTH-2400) touchscreen
        00f8  Cintiq 24HD touch (DTH-2400) tablet
        0400  PenPartner 4x5
        0323  LaCie d2 Drive USB2
        0421  Big Disk G465
        0641  Mobile Hard Drive
+       100c  Rugged Triple Interface Mobile Hard Drive
        1010  Desktop Hard Drive
        1019  Desktop Hard Drive
        1021  Little Disk
        9722  Keyboard
        9731  MCK-600W/MCK-800USB Keyboard
        9783  Wireless Keypad
+       9837  Targus Number Keypad
+       9862  Targus Number Keypad (Composite Device)
        9881  IR receiver [VRC-1100 Vista MCE Remote Control]
 05a5  Sampo Technology Corp.
 05a6  Cisco Systems, Inc.
        1101  Speakers
        1105  Audio in LED Cinema Display
        1107  Thunderbolt Display Audio
+       1112  FaceTime HD Camera (Display)
        1201  3G iPod
        1202  iPod 2G
        1203  iPod 4.Gen Grayscale 40G
        8240  Built-in IR Receiver
        8241  Built-in IR Receiver
        8242  Built-in IR Receiver
+       8281  Bluetooth Host Controller
        8286  Bluetooth Host Controller
        8300  Built-in iSight (no firmware loaded)
        8403  Internal Memory Card Reader
        0723  GL827L SD/MMC/MS Flash Card Reader
        0726  SD Card Reader
        0727  microSD Reader/Writer
+       0731  GL3310 SATA 3Gb/s Bridge Controller
        0736  microSD Reader/Writer
        0760  USB 2.0 Card Reader/Writer
        0761  Genesys Mass Storage Device
 05f7  RFC Distribution(s) PTE, Ltd
 05f9  PSC Scanning, Inc.
        1104  Magellan 2200VS
+       2202  Point of Sale Handheld Scanner
        2206  Datalogic Gryphon GFS4170
+       2601  Datalogin Magellan 1000i Barcode Scanner
        2602  Datalogic Magellan 1100i Barcode Scanner
        5204  Datalogic Gryphon GFS4170 (config mode)
 05fa  Siemens Telecommunications Systems, Ltd
 0622  Iotech, Inc.
 0623  Littelfuse, Inc.
 0624  Avocent Corp.
+       0248  Virtual Hub
+       0249  Virtual Keyboard/Mouse
+       0251  Virtual Mass Storage
        0294  Dell 03R874 KVM dongle
        0402  Cisco Virtual Keyboard and Mouse
        0403  Cisco Virtual Mass Storage
        1000  CD-ROM Drive
        800d  TASCAM Portastudio DP-01FX
        800e  TASCAM US-122L
+       801d  DR-100
        8021  TASCAM US-122mkII
        d001  CD-R/RW Unit
        d002  CD-R/RW Unit
        a219  1.3M WebCam (notebook emachines E730, Acer sub-brand)
        c107  HP webcam [dv6-1190en]
        d101  Acer CrystalEye Webcam
+       d217  HP TrueVision HD
        e201  Lenovo Integrated Webcam
        e203  Lenovo Integrated Webcam
        e258  HP TrueVision HD Integrated Webcam
 0658  Sigma Designs, Inc.
 0659  Aethra
 065a  Optoelectronics Co., Ltd
-       0001  Barcode scanner / NLV-1001 (keyboard mode)
+       0001  Opticon OPR-2001 / NLV-1001 (keyboard mode)
        0009  NLV-1001 (serial mode) / OPN-2001 [Opticon]
 065b  Tracewell Systems
 065e  Silicon Graphics
        2517  Flash Disk Mass Storage Device
        2528  Storage device (8gB thumb drive)
        25a1  PL25A1 Host-Host Bridge
+       2773  PL2773 SATAII bridge controller
        3400  Hi-Speed Flash Disk with TruePrint AES3400
        3500  Hi-Speed Flash Disk with TruePrint AES3500
        3507  PL3507 ATAPI6 Bridge
 06bc  Oki Data Corp.
        000b  Okipage 14ex Printer
        0027  Okipage 14e
+       00f7  OKI B4600 Mono Printer
+       015e  OKIPOS 411/412 POS Printer
+       01c9  OKI B430 Mono Printer
+       020b  OKI ES4140 Mono Printer
+       02bb  OKI PT390 POS Printer
        0a91  B2500MFP (printer+scanner)
        3801  B6100 Laser Printer
 06bd  AGFA-Gevaert NV
        0622  LapLink Gold USB-USB Bridge [net1080]
 06d1  Daewoo Electronics Co., Ltd
 06d3  Mitsubishi Electric Corp.
+       0284  FX-USB-AW/-BD RS482 Converters
        0380  CP8000D Port
        0381  CP770D Port
        0385  CP900D Port
        0014  Prolink Winscan Pro 2448U
 06de  Heisei Electronics Co., Ltd
 06e0  Multi-Tech Systems, Inc.
+       0319  MT9234ZBA-USB MultiModem ZBA
        f101  MT5634ZBA-USB MultiModemUSB (old firmware)
        f103  MT5634MU MultiMobileUSB
        f104  MT5634ZBA-USB MultiModemUSB (new firmware)
        f107  MT5634ZBA-USB-V92 MultiModemUSB
+       f120  MT9234ZBA-USB-CDC-ACM-XR MultiModem ZBA CDC-ACM-XR
 06e1  ADS Technologies, Inc.
        0008  UBS-10BT Ethernet [klsi]
        0009  UBS-10BT Ethernet
        8911  ScanHex SX-35c
 0798  Optelec
        0001  Braille Voyager
+       0640  BC640
+       0680  BC680
 0799  Altera
        7651  Programming Unit
 079b  Sagem
+       0024  MSO300/MSO301 Fingerprint Sensor
+       0026  MSO350/MSO351 Fingerprint Sensor & SmartCard Reader
        0027  USB-Serial Controller
        002f  Mobile
        0030  Mobile Communication Device
        0042  Mobile
+       0047  CBM/MSO1300 Fingerprint Sensor
        004a  XG-760A 802.11bg
        004b  Wi-Fi 11g adapter
+       0052  MSO1350 Fingerprint Sensor & SmartCard Reader
        0056  Agfa AP1100 Photo Printer
        005d  Mobile Mass Storage
        0062  XG-76NA 802.11bg
        0114  C-350Z Camera
        0118  Mju Mini Digital/Mju Digital 500 Camera / Stylus 850 SW
        0184  P-S100 port
+       0202  Foot Switch RS-26
        0203  Digital Voice Recorder DW-90
        0206  Digital Voice Recorder DS-330
        0207  Digital Voice Recorder & Camera W-10
        0209  Digital Voice Recorder DM-20
+       020b  Digital Voice Recorder DS-4000
        020d  Digital Voice Recorder VN-240PC
+       0211  Digital Voice Recorder DS-2300
+       0218  Foot Switch RS-28
        0244  Digital Voice Recorder VN-8500PC
+       024f  Digital Voice Recorder DS-7000
        0280  m:robe 100
 07b5  Mega World International, Ltd
        0017  Joystick
        420a  UF200 Ethernet
        5301  GW-US54ZGL 802.11bg
        6001  802.11bg
+       8188  AboCom Systems Inc [WN2001 Prolink Wireless-N Nano Adapter]
        a001  WUG2200 802.11g Wireless Adapter [Envara WiND512]
        abc1  DU-E10 Ethernet [pegasus]
        b000  BWU613
        1002  Ethernet
        1020  FA101 Fast Ethernet USB 1.1
        1040  FA120 Fast Ethernet USB 2.0 [Asix AX88172 / AX8817x]
+       1100  Managed Switch M4100 series, M5300 series, M7100 series
        4110  MA111(v1) 802.11b Wireless [Intersil Prism 3.0]
        4200  WG121(v1) 54 Mbps Wireless [Intersil ISL3886]
        4210  WG121(v2) 54 Mbps Wireless [Intersil ISL3886]
        0301  RNIS
 08e4  Pioneer Corp.
 08e5  Litronic
-08e6  Gemplus
+08e6  Gemalto (was Gemplus)
        0001  GemPC-Touch 430
        0430  GemPC430 SmartCard Reader
        0432  GemPC432 SmartCard Reader
        34ec  Compact Smart Card Reader Writer
        4433  GemPC433-Swap
        5501  GemProx-PU Contactless Smart Card Reader
+       5503  Prox-DU Contactless Interface
        ace0  UA HYBRID TOKEN
 08e7  Pan-International Wire & Cable
 08e8  Integrated Memory Logic
        0001  Hard Drive Adapter (TPP)
        0002  SigmaDrive Adapter (TPP)
 0906  Faraday Technology Corp.
-0908  ShenZhen SANZHAI Technology Co.,Ltd
-       2701  Spy Pen VGA
+0908  Siemens AG
+       2701  ShenZhen SANZHAI Technology Co.,Ltd Spy Pen VGA
 0909  Audio-Technica Corp.
 090a  Trumpion Microelectronics, Inc.
        1001  T33520 Flash Card Controller
        0a07  WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572]
        0b05  PX1220E-1G25 External hard drive
        0b09  PX1396E-3T01 External hard drive
+       0b1a  STOR.E ALU 2S
        1300  Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port
        1301  Wireless Broadband (CDMA EV-DO) Minicard Status Port
        1302  Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port
 0933  Quantum Corp.
 0934  Spirent Communications
 0936  NuTesla
+       000c  Rhythmedics 6 BioData Integrator
        0030  Composite Device, Mass Storage Device (Flash Drive) amd HID
        003c  Rhythmedics HID Bootloader
 0939  Lumberg, Inc.
        2471  SoC PC-Camera
        2500  USB Optical Mouse
        2510  Optical Mouse
+       2521  Optical Mouse
        2600  Typhoon Easycam USB 330K (newer)/Typhoon Easycam USB 2.0 VGA 1.3M/Sansun SN-508
        2601  SPC 610NC Laptop Camera
        2603  PAC7312 Camera
 0955  NVidia Corp.
        7030  Tegra 3 (recovery mode)
        7100  Notion Ink Adam
+       7820  Tegra 2 AC100 developer mode
+       b400  SHIELD (debug)
+       b401  SHIELD
 0956  BSquare Corp.
 0957  Agilent Technologies, Inc.
        0200  E-Video DC-350 Camera
 0977  Lightsurf Technologies
 0978  Beckhoff GmbH
 0979  Jeilin Technology Corp., Ltd
+       0222  Keychain Display
        0224  JL2005A Toy Camera
        0226  JL2005A Toy Camera
        0227  JL2005B/C/D Toy Camera
        032b  Wireless Mouse (Battery Free)
        8090  X-718BK Oscar Optical Gaming Mouse
        9033  X-718BK Optical Mouse
-       9090  XL-750BK Laser Mouse
+       9066  F3 V-Track Gaming Mouse
+       9090  XL-730K / XL-750BK / XL-755BK Mice
 09db  Measurement Computing Corp.
        0075  MiniLab 1008
        0076  PMD-1024
        0009  LP2844 Printer
        0081  GK420t Label Printer
        008b  HC100 wristbands Printer
+       00d1  Zebra GC420d Label Printer
        930a  Printer
 0a62  MPMan
        0010  MPMan MP-F40 MP3 Player
        c303  Saturn USB 2.0 Camera
        c326  Namuga 1.3M Webcam
        c33f  Webcam
+       c429  Lenovo ThinkCentre Web Camera
 0ac9  Micro Solutions, Inc.
        0000  Backpack CD-ReWriter
        0001  BACKPACK  2 Cable
        0300  IDT1221U RS-232 Adapter
        0401  Spectrum III Hybrid Smartcard Reader
        0630  Spectrum III Mag-Only Insert Reader (SPT3-355 Series) USB-CDC
+       0810  SecurePIN (IDPA-506100Y) PIN Pad
 0ace  ZyDAS
        1201  ZD1201 802.11b
        1211  ZD1211 802.11g
 0b0d  ProjectLab
        0000  CenturyCD
 0b0e  GN Netcom
+       0420  Jabra SPEAK 510
        1022  Jabra PRO 9450, Type 9400BS (DECT Headset)
        620c  Jabra BT620s
+       9330  Jabra GN9330 Headset
 0b0f  AVID Technology
 0b10  Pcally
 0b11  I Tech Solutions Co., Ltd
 0b63  ADLink Technology, Inc.
 0b64  Wonderful Wire Cable Co., Ltd
 0b65  Expert Magnetics Corp.
+0b66  Cybiko Inc.
+       0041  Xtreme
+0b67  Fairbanks Scales
+       555e  SCB-R9000
 0b69  CacheVision
 0b6a  Maxim Integrated Products
        a132  WUP-005 [Nintendo Wii U Pro Controller]
        0a4d  PocketPC Sync
        0a4e  PocketPC Sync
        0a4f  PocketPC Sync
-       0a50  HTC SmartPhone Sync
+       0a50  SmartPhone (MTP)
        0a51  SPV C400 / T-Mobile SDA GSM/GPRS Pocket PC
        0a52  SmartPhone Sync
        0a53  SmartPhone Sync
        0502  ST3300601CB-RK 300 GB External Hard Drive
        0503  ST3250824A [Barracuda 7200.9]
        2000  Storage Adapter V3 (TPP)
+       2100  FreeAgent Go
        2200  FreeAgent Go FW
        2300  Expansion Portable
        2320  USB 3.0 bridge [Portable Expansion Drive]
+       3008  FreeAgent Desk 1TB
        3320  SRD00F2 [Expansion Desktop Drive]
        3332  Expansion
        5021  FreeAgent GoFlex USB 2.0
        5121  FreeAgent GoFlex
        5161  FreeAgent GoFlex dock
        a003  Backup Plus
+       a0a1  Backup Plus Desktop
+       a0a4  Backup Plus Desktop Drive
 0bc3  IPWireless, Inc.
        0001  UMTS-TDD (TD-CDMA) modem
 0bc4  Microcube Corp.
        8174  RTL8192SU 802.11n WLAN Adapter
        8176  RTL8188CUS 802.11n WLAN Adapter
        8178  RTL8192CU 802.11n WLAN Adapter
+       8179  RTL8188EUS 802.11n Wireless Network Adapter
        817f  RTL8188RU 802.11n WLAN Adapter
        8187  RTL8187 Wireless Adapter
        8189  RTL8187B Wireless 802.11g 54Mbps Network Adapter
        1009  Connect2Air E-5400 D1700 802.11g Wireless Adapter [Intersil ISL3887]
        100c  Keyboard FSC KBPC PX
        100f  miniCard D2301 802.11bg Wireless Module [SiS 163U]
+       1017  Keyboard KB SCR
 0bfd  Kvaser AB
        0004  USBcan II
        000b  Leaf Light HS
        3bfa  pcProx Card Reader
 0c2e  Metrologic Instruments
        0007  Metrologic MS7120 Barcode Scanner (IBM SurePOS mode)
-       0200  Metrologic Scanner
+       0200  MS7120 Barcode Scanner
        0204  Metrologic MS7120 Barcode Scanner (keyboard mode)
        0206  Metrologic MS4980 Barcode Scanner
        0700  Metrologic MS7120 Barcode Scanner (uni-directional serial mode)
        62c0  Sonix USB 2.0 Camera
        62e0  MSI Starcam Racer
        6310  Sonix USB 2.0 Camera
+       6341  Defender G-Lens 2577 HD720p Camera
        63e0  Sonix Integrated Webcam
        63f1  Integrated Webcam
        63f8  Sonix Integrated Webcam
        6409  Webcam
        6413  Integrated Webcam
        6417  Integrated Webcam
+       6419  Integrated Webcam
        641d  1.3 MPixel Integrated Webcam
        6480  Sonix 1.3 MP Laptop Integrated Webcam
        648b  Integrated Webcam
        00a5  Cinergy Hybrid Stick
        00a9  RTL2838 DVB-T COFDM Demodulator [TerraTec Cinergy T Stick Black]
        00b3  NOXON DAB/DAB+ Stick
+       00e0  NOXON DAB/DAB+ Stick V2
        10a7  TerraTec G3
 0cd4  Bang Olufsen
        0101  BeolinkPC2
        0005  AR5523
        0006  AR5523 (no firmware)
        1001  Thomson TG121N [Atheros AR9001U-(2)NG]
-       1002  TP-Link TL-WN821N v2 802.11n [Atheros AR9170]
+       1002  TP-Link TL-WN821N v2 / TL-WN822N v1 802.11n [Atheros AR9170]
        1006  TP-Link TL-WN322G v3 / TL-WN422G v2 802.11g [Atheros AR9271]
        1010  3Com 3CRUSBN275 802.11abgn Wireless Adapter [Atheros AR9170]
        20ff  AR7010 (no firmware)
        3002  AR3011 Bluetooth
        3005  AR3011 Bluetooth
        3008  Bluetooth (AR3011)
-       7015  TP-Link TL-WN821N v3 802.11n [Atheros AR7010+AR9287]
+       7015  TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [Atheros AR7010+AR9287]
        9170  AR9170 802.11n
        9271  AR9271 802.11n
        b002  Ubiquiti WiFiStation 802.11n [Atheros AR9271]
 0d4f  EADS Airbus France
 0d50  Cleware GmbH
        0011  USB-Temp2 Thermometer
+       0040  F4 foot switch
 0d51  Volex (Asia) Pte., Ltd
 0d53  HMI Co., Ltd
 0d54  Holon Corp.
        1332  5 IMT
        1416  32 IT
        1417  A43 IT
+       14ad  97 Titanium HD
        150e  80 G9
 0e7b  On-Tech Industry Co., Ltd
 0e7e  Gmate, Inc.
 0f52  Wing Key Electrical Co., Ltd
 0f53  Dongguan White Horse Cable Factory, Ltd
 0f54  Kawai Musical Instruments Mfg. Co., Ltd
+       0101  MP6 Stage Piano
 0f55  AmbiCom, Inc.
 0f5c  Prairiecomm, Inc.
 0f5d  NewAge International, LLC
        0112  W995 Walkman Phone
        015a  Xperia Pro [Media Transfer Protocol]
        0166  Xperia Mini Pro
+       0167  ST15i (Xperia mini)
        0169  Xperia S
        0172  Xperia P
        0177  Xperia Ion [Mass Storage]
        3138  Xperia X10 mini pro
        3149  Xperia X8
        5177  Xperia Ion [Debug Mode]
+       518c  C1605 [Xperia E dual] MTD mode
        614f  Xperia X12 (debug mode)
        6166  Xperia Mini Pro
+       618c  C1605 [Xperia E dual] MSC mode
        715a  Xperia Pro [Tethering]
+       7166  Xperia Mini Pro (Tethering mode)
        7177  Xperia Ion [Tethering]
        8004  9000 Phone [Mass Storage]
        adde  Boot loader
        1008  Mini stick Suunto
 0fd0  Tulip Computers B.V.
 0fd1  Giant Electronics Ltd.
+0fd2  Seac Banche
+       0001  RDS 6000
 0fd4  Tenovis GmbH & Co., KG
 0fd5  Direct Access Technology, Inc.
 0fd9  Elgato Systems GmbH
 0ff7  CHI SHING Computer Accessories Co., Ltd
 0ffc  Clavia DMI AB
        0021  Nord Stage 2
+0ffd  EarlySense
+       ff00  OEM
 0fff  Aopen, Inc.
 1000  Speed Tech Corp.
 1001  Ritronics Components (S) Pte., Ltd
        618f  Ally/Optimus One
        61c6  Vortex (msc)
        61cc  Optimus S
+       61f1  Optimus Android Phone [LG Software mode]
+       61f9  V909 G-Slate
        61fc  Optimus 3
+       61fe  Optimus Android Phone [USB tethering mode]
+       6300  Optimus Android Phone
+       631c  Optimus Android Phone [MTP mode]
+       631e  Optimus Android Phone [Camera/PTP mode]
+       6356  Optimus Android Phone [Virtual CD mode]
        6800  CDMA Modem
        7000  LG LDP-7024D(LD)USB
        a400  Renoir (KC910)
        0068  3,5'' HDD case MD-231
 1038  Ideazon, Inc.
        0100  Zboard
+       1361  Sensei
 1039  devolo AG
        0824  1866 802.11bg [Texas Instruments TNETW1450]
        2140  dsl+ 1100 duo
        0009  RE-BL PlayStation 3 IR-to-Bluetooth converter
 1050  Yubico.com
        0010  Yubikey
+       0110  Yubikey NEO OTP
+       0111  Yubikey NEO OTP+CCID
+       0211  Gnubby
 1053  Immanuel Electronics Co., Ltd
 1054  BMS International Beheer N.V.
        5004  DSL 7420 Loader
        0702  Passport External HDD
        0704  Passport External HDD
        070a  My Passport Essential SE
-       071a  My Passport 1TB
+       071a  My Passport
+       0730  My Passport
        0740  My Passport
        0742  My Passport Essential SE
        0748  My Passport 1TB USB 3.0
 107f  KidzMouse, Inc.
 1082  Shin-Etsukaken Co., Ltd
 1083  Canon Electronics, Inc.
+       161b  DR-2010C Scanner
        162c  P-150 Scanner
 1084  Pantech Co., Ltd
 108a  Chloride Power Protection
        8789  C8051F34x Extender & EDID MGR [EMX-DVI]
        87be  C8051F34x HDMI Audio Extractor [EMX-HD-AUD]
        8863  C8051F34x Bootloader
+       8897  C8051F38x HDMI Splitter [UHBX]
        ea60  CP210x UART Bridge / myAVR mySmartUSB light
        ea61  CP210x UART Bridge
        ea70  CP210x UART Bridge
        1101  MP3 Player
 10cd  Kycon, Inc.
 10ce  Silicon Labs
+       000e  Shinko/Sinfonia CHC-S2145
        ea6a  MobiData EDGE USB Modem
 10cf  Velleman Components, Inc.
        2011  R-Engine MPEG2 encoder/decoder
        0301  CP42 - Communication Processor
 10d4  Man Boon Manufactory, Ltd
 10d5  Uni Class Technology Co., Ltd
+       0004  PS/2 Converter
        5552  KVM Human Interface Composite Device (Keyboard/Mouse ports)
        55a2  2Port KVMSwitcher
 10d6  Actions Semiconductor Co., Ltd
        524e  RoadMate 1475T
        5260  Triton Handheld GPS Receiver (300/400/500/1500/2000)
 1210  DigiTech
+       0016  RP500 Guitar Multi-Effects Processor
        001b  RP155 Guitar Multi-Effects Processor
        001c  RP255 Guitar Multi-Effects Processor
 121e  Jungsoft Co., Ltd
        3403  Muzio JM250 Audio Player
 1223  SKYCABLE ENTERPRISE. CO., LTD.
+1228  Datapaq Limited
+       0012  Q18 Data Logger
+       0015  TPaq21/MPaq21 Datalogger
 1230  Chipidea-Microelectronica, S.A.
 1233  Denver Electronics
        5677  FUSB200 mp3 player
        14c3  K5005 Vodafone LTE/UMTS/GSM Modem/Networkcard
        14c8  K5005 Vodafone LTE/UMTS/GSM MOdem/Networkcard
        14c9  K3770 3G Modem
+       14cf  K3772
        14d1  K3770 3G Modem (Mass Storage Mode)
        14f1  Gobi 3000 HSPA+ Modem
        1501  Pulse
        1505  E398 LTE/UMTS/GSM Modem/Networkcard
-       1506  E398 LTE/UMTS/GSM Modem/Networkcard
+       1506  Modem/Networkcard
        150a  E398 LTE/UMTS/GSM Modem/Networkcard
        1520  K3765 HSPA
        1521  K4505 HSPA+
+       155a  R205 Mobile WiFi (CD-ROM mode)
        1805  AT&T Go Phone U2800A phone
        1c05  E173s 3G broadband stick (modem on)
        1c0b  E173s 3G broadband stick (modem off)
+       1c20  R205 Mobile WiFi (Charging)
        1d50  ET302s TD-SCDMA/TD-HSDPA Mobile Broadband
        380b  WiMAX USB modem(s)
 12d2  LINE TECH INDUSTRIAL CO., LTD.
        0011  VFS5011 Fingerprint Reader
        0018  Fingerprint scanner
        003c  VFS471 Fingerprint Reader
+       003d  VFS491
 138e  Jungo LTD
        9000  Raisonance S.A. STM32 ARM evaluation board
 1390  TOMTOM B.V.
 1402  Bowe Bell & Howell
 1403  Sitronix
        0001  Digital Photo Frame
+1409  IDS Imaging Development Systems GmbH
+       1000  generic (firmware not loaded yet)
+       1485  uEye UI1485
 140e  Telechips, Inc.
        b011  TCC780X-based player (USB Boot mode)
        b021  TCC77X-based players (USB Boot mode)
        0007  Development board JTAG
 1446  X.J.GROUP
        6a73  Stamps.com Model 510 5LB Scale
+       6a78  DYMO Endicia 75lb Digital Scale
 1453  Radio Shack
        4026  26-183 Serial Cable
 1456  Extending Wire & Cable Co., Ltd.
        e02c  Infrared Receiver
        e03a  eHome Infrared Receiver
        e03c  eHome Infrared Receiver
+       e03d  2 Channel Audio
        e03e  Infrared Receiver [IR605A/Q]
 147e  Upek
        1000  Biometric Touchchip/Touchstrip Fingerprint Sensor
 14d8  JAMER INDUSTRIES CO., LTD.
 14dd  Raritan Computer, Inc.
        1007  D2CIM-VUSB KVM connector
+14e0  WiNRADiO Communications
+       0501  WR-G528e 'CHEETAH'
 14e1  Dialogue Technology Corp.
        5000  PenMount 5000 Touch Controller
 14e5  SAIN Information & Communications Co., Ltd.
 152a  Thesycon Systemsoftware & Consulting GmbH
 152d  JMicron Technology Corp. / JMicron USA Technology Corp.
        0539  JMS539 SuperSpeed SATA II 3.0G Bridge
+       0770  Alienware Integrated Webcam
        2329  JM20329 SATA Bridge
        2335  ATA/ATAPI Bridge
        2336  Hard Disk Drive
        0017  RZ01-0035 Laser Gaming Mouse [Imperator]
        001c  RZ01-0036 Optical Gaming Mouse [Abyssus]
        0024  Razer Mamba
+       002e  RZ01-0058 Gaming Mouse [Naga]
        0036  RZ01-0075, Gaming Mouse [Naga Hex]
        0101  Copperhead Mouse
        0102  Tarantula Keyboard
        0820  SmartPocket Class Device
 1598  Kunshan Guoji Electronics Co., Ltd.
 15a2  Freescale Semiconductor, Inc.
+       0038  9S08JS Bootloader
        003b  USB2CAN Application for ColdFire DEMOJM board
        0042  OSBDM - Debug Port
        004f  i.MX28 SystemOnChip in RecoveryMode
        2007  RSA SecurID (R) Authenticator
 15e4  Numark
        0024  Mixtrack
+       0140  ION VCR 2 PC / Video 2 PC
 15e8  SohoWare
        9100  NUB100 Ethernet [pegasus]
        9110  10/100 USB Ethernet
        0504  RETRO Innovations ZoomFloppy
        054b  GrauTec ReelBox OLED Display (external)
        05be  EasyLogic Board
+       06f9  Gabotronics Xminilab
        0753  Digistump DigiSpark
        075c  AB-1.x UAC1 [Audio Widget]
        075d  AB-1.x UAC2 [Audio Widget]
+       080a  S2E1 Interface
 16d3  Frontline Test Equipment, Inc.
 16d5  AnyDATA Corporation
        6202  CDMA/UMTS/GPRS modem
        aa11  Web Cam
 1753  GERTEC Telecomunicacoes Ltda.
        c901  PPC900 Pinpad Terminal
+1756  ENENSYS Technologies
+       0006  DiviPitch
 1759  LucidPort Technology, Inc.
 1761  ASUSTek Computer, Inc. (wrong ID)
        0b05  802.11n Network Adapter (wrong ID - swapped vendor and device)
        0101  UB1 boundary microphone
        0200  StudioDock monitors (internal hub)
        0201  StudioDock monitors (audio)
+       0210  StudioGT monitors
        0301  Q2U handheld microphone with XLR
        0302  GoMic compact condenser microphone
+       0304  Q2U handheld mic with XLR
+       0305  GoMic compact condenser mic
        0310  Meteor condenser microphone
 17a4  Concept2
        0001  Performance Monitor 3
        0005  M-Bus Master MultiPort 250D
 17b3  Grey Innovation
        0004  Linux-USB Midi Gadget
+17b5  Lunatone
+       0010  MFT Sensor
 17ba  SAURIS GmbH
        0001  SAU510-USB [no firmware]
        0510  SAU510-USB and SAU510-USB plus JTAG Emulators
 17d3  Korea Techtron Co., Ltd.
 17e9  DisplayLink
        0051  USB VGA Adaptor
+       030b  HP T100
        0377  Plugable UD-160-A (M)
        0378  Plugable UGA-2K-A
        0379  Plugable UGA-125
        037c  Plugable DC-125
        037d  Plugable USB2-HDMI-165
        430a  HP Port Replicator (Composite Device)
+       4312  S2340T
 17eb  Cornice, Inc.
 17ef  Lenovo
        1003  Integrated Smart Card Reader
        1004  Integrated Webcam
+       1008  Hub
        100a  ThinkPad Mini Dock Plus Series 3
        3815  ChipsBnk 2GB USB Stick
        4802  Lenovo Vc0323+MI1310_SOC Camera
        4813  Integrated Webcam [R5U877]
        4814  Integrated Webcam [R5U877]
        4815  Integrated Webcam [R5U877]
+       4816  Integrated Webcam
        481c  Integrated Webcam
        481d  Integrated Webcam
+       6004  ISD-V4 Tablet Pen
        6007  Smartcard Keyboard
        6009  ThinkPad Keyboard with TrackPoint
        6014  Mini Wireless Keyboard N5901
 1873  Navilock
        ee93  EasyLogger
 187c  Alienware Corporation
+       0511  AlienFX Mobile lighting
        0600  Dual Compatible Game Pad
 187f  Siano Mobile Silicon
        0010  Stallar Board
        0227  Pocket Hard Drive
        022b  Portable Hard Drive (Store'n'Go)
        0237  Portable Harddrive (500 GB)
-       0302  32GB Flash Drive
+       0302  Flash Drive
 18b1  Petalynx
        0037  Maxter Remote Control
 18b4  e3C Technologies
        4e22  Nexus S (debug)
        4e24  Nexus S (tether)
        4e40  Nexus 7 (fastboot)
-       4e41  ASUS Nexus 7 (MTP modus)
+       4e41  Nexus 7 (MTP)
        4e42  Nexus 7 (debug)
-       4e43  ASUS Nexus 7 (PTP modus)
-       4ee1  Nexus 4
+       4e43  Nexus 7 (PTP)
+       4ee1  Nexus 4 / 10
        4ee2  Nexus 4 (debug)
        4ee3  Nexus 4 (tether)
        4ee4  Nexus 4 (debug + tether)
        7102  Toshiba Thrive tablet
        b004  Pandigital / B&N Novel 9" tablet
+       d109  LG G2x MTP
+       d10a  LG G2x MTP (debug)
 18d5  Starline International Group Limited
 18d9  Kaba
        01a0  B-Net 91 07
 190d  Motorola GSG
 1914  Alco Digital Devices Limited
 1915  Nordic Semiconductor ASA
+       000c  Wireless Desktop nRF24L01 CX-1766
        2233  Linksys WUSB11 v2.8 802.11b Adapter [Atmel AT76C505]
        2234  Linksys WUSB54G v1 OEM 802.11g Adapter [Intersil ISL3886]
        2235  Linksys WUSB54GP v1 OEM 802.11g Adapter [Intersil ISL3886]
        2236  Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3]
+1923  FitLinxx
+       0002  Personal SyncPoint
 1926  NextWindow
        0003  1900 HID Touchscreen
        0006  1950 HID Touchscreen
        0085  1950 HID Touchscreen
        0086  1950 HID Touchscreen
        0087  1950 HID Touchscreen
+       0dc2  HID Touchscreen
 192f  Avago Technologies, Pte.
        0000  Mouse
        0416  ADNS-5700 Optical Mouse Controller (3-button)
        0301  AudioBox
 1951  Hyperstone AG
 1953  Ironkey Inc.
+       0202  S200 2GB Rev. 1
 1954  Radiient Technologies
 195d  Itron Technology iONE
        7002  Libra-Q11 IR remote
        2000  MF627/MF628/MF628+/MF636+ HSDPA/HSUPA
        fff2  Gobi Wireless Modem (QDL mode)
        fff3  Gobi Wireless Modem
+19db  KFI Printers
+       02f1  NAUT324C
 19e1  WeiDuan Electronic Accessory (S.Z.) Co., Ltd.
 19e8  Industrial Technology Research Institute
 19ef  Pak Heng Technology (Shenzhen) Co., Ltd.
 19ff  Dynex
        0102  1.3MP Webcam
        0201  Rocketfish Wireless 2.4G Laser Mouse
+       0238  DX-WRM1401 Mouse
 1a08  Bellwood International, Inc.
 1a0a  USB-IF non-workshop
        badd  USB OTG Compliance test device
        0802  Gamepad
 1a36  Biwin Technology Ltd.
 1a40  Terminus Technology Inc.
-       0101  4-Port HUB
+       0101  Hub
        0201  FE 2.1 7-port Hub
 1a41  Action Electronics Co., Ltd.
 1a44  VASCO Data Security International
 1a72  Physik Instrumente
        1008  E-861 PiezoWalk NEXACT Controller
 1a79  Bayer Health Care LLC
+       6002  Contour
+       7410  Contour Next
 1a7b  Lumberg Connect  GmbH & Co. KG
 1a7c  Evoluent
        0068  VerticalMouse 3
 1ab1  Rigol Technologies
        0588  DS1000 SERIES
 1acb  Salcomp Plc
+1acc  Midiplus Co, Ltd.
+       0103  AudioLink plus 4x4 2.9.28
 1ad1  Desay Wire Co., Ltd.
 1ad4  APS
        0002  KM290-HRS
 1b47  Energizer Holdings, Inc.
        0001  CHUSB Duo Charger (NiMH AA/AAA USB smart charger)
 1b48  Plastron Precision Co., Ltd.
+1b52  ARH Inc.
+       2101  FXMC Neural Network Controller
+       2102  FXMC Neural Network Controller V2
+       2103  FXMC Neural Network Controller V3
+       4101  Passport Reader CLR device
+       4201  Passport Reader PRM device
+       4202  Passport Reader PRM extension device
+       4203  Passport Reader PRM DSP device
+       4204  Passport Reader PRMC device
+       4205  Passport Reader CSHR device
+       4206  Passport Reader PRMC V2 device
+       4301  Passport Reader MRZ device
+       4302  Passport Reader MRZ DSP device
+       4303  Passport Reader CSLR device
+       4401  Card Reader
+       4501  Passport Reader RFID device
+       4502  Passport Reader RFID AIG device
+       6101  Neural Network Controller
+       6202  Fingerprint Reader device
+       6203  Fingerprint Scanner device
+       8101  Camera V1
+       8102  Recovery / Camera V2
+       8103  Camera V3
 1b59  K.S. Terminals Inc.
 1b5a  Chao Zhou Kai Yuan Electric Co., Ltd.
 1b65  The Hong Kong Standards and Testing Centre Ltd.
+1b71  Fushicai
+       3002  USBTV007 Video Grabber [EasyCAP]
 1b72  ATERGI TECHNOLOGY CO., LTD.
 1b73  Fresco Logic
        1000  xHC1 Controller
 1bae  Vuzix Corporation
        0002  VR920 Immersive Eyewear
 1bbb  T & A Mobile Phones
+       011e  Alcatel One Touch L100V / Telekom Speedstick LTE II
+       f017  Alcatel One Touch L100V / Telekom Speedstick LTE II
 1bc4  Ford Motor Co.
 1bc5  AVIXE Technology (China) Ltd.
-1bc7  Telit
+1bc7  Telit Wireless Solutions
        0020  HE863
        0021  HE910
+       0023  HE910-D ECM
        1003  UC864-E
        1004  UC864-G
        1005  CC864-DUAL
        1006  CC864-SINGLE
        1010  DE910-DUAL
+       1011  CE910-DUAL
+       1200  LE920
 1bce  Contac Cable Industrial Limited
 1bcf  Sunplus Innovation Technology Inc.
        0007  Optical Mouse
        0c31  SPIF30x Serial-ATA bridge
        2885  ASUS Webcam
        2888  HP Universal Camera
+       2b83  Laptop Integrated Webcam FHD
 1bd0  Hangzhou Riyue Electronic Co., Ltd.
 1bd5  BG Systems, Inc.
 1bde  P-TWO INDUSTRIES, INC.
 1cbe  Luminary Micro Inc.
        00fd  In-Circuit Debug Interface
        00ff  Stellaris ROM DFU Bootloader
+       0166  CANAL USB2CAN
 1cbf  FORTAT SKYMARK INDUSTRIAL COMPANY
 1cc0  PlantSense
 1cca  NextWave Broadband Inc.
        000a  Dream Cheeky Mailbox Friends Alert
        000d  Dream Cheeky Big Red Button
        0013  Dream Cheeky LED Message Board
+1d45  Touch
+       1d45  Foxlink Optical touch sensor
 1d4d  PEGATRON CORPORATION
        0002  Ralink RT2770/2720 802.11b/g/n Wireless LAN Mini-USB Device
        000c  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
 1d50  OpenMoko, Inc.
        5119  GTA01/GTA02 U-Boot Bootloader
        602b  FPGALink
+       6053  Darkgame Controller
 1d57  Xenta
        0005  Wireless Receiver (Keyboard and Mouse)
        0006  Wireless Receiver (RC Laser Pointer)
        0104  Multifunction Composite Gadget
        0105  FunctionFS Gadget
        0200  Qemu Audio Device
+1d90  Citizen
+       201e  PPU-700
 1de1  Actions Microelectronics Co.
        1101  Generic Display Device (Mass storage mode)
        c101  Generic Display Device
        2030  2030 USB Keyboard
 1e68  TrekStor GmbH & Co. KG
        001b  DataStation maxi g.u
+       0050  DataStation maxi light
 1e71  NZXT
        0001  Avatar Optical Mouse
 1e74  Coby Electronics Corporation
 1ee8  ONDA COMMUNICATION S.p.a.
        0014  MT833UP
 1ef6  EADS Deutschland GmbH
+       2233  Cassidian NH90 STTE
        5064  FDR Interface
+       5523  Cassidian SSDC Adapter II
+       5545  Cassidian SSDC Adapter III
        5648  RIU CSMU/BSD
        564a  Cassidian RIU CSMU/BSD Simulator
 1f28  Cal-Comp
        0020  CDMA USB Modem A600
        0021  CD INSTALLER USB Device
+1f3a  Onda (unverified)
+       efe8  V972 tablet in flashing mode
 1f44  The Neat Company
        0001  NM-1000 scanner
 1f48  H-TRONIC GmbH
        648b  TEW-648UBM 802.11n 150Mbps Micro Wireless N Adapter [Realtek RTL8188CUS]
 2101  ActionStar
        0201  SIIG 4-to-2 Printer Switch
+2149  Advanced Silicon S.A.
+       211b  Touchscreen Controller
+       2703  TS58xxA/TC56xxA [CoolTouch]
 2162  Creative (?)
        2031  Network Blaster Wireless Adapter
        500c  DE5771 Modem Blaster
        4050  AirStick joystick
 2227  SAMWOO Enterprise
        3105  SKYDATA SKD-U100
+2232  Silicon Motion
+       1005  WebCam SCB-0385N
+       1028  WebCam SC-03FFL11939N
+       1029  WebCam SC-13HDL11939N
+       1037  WebCam SC-03FFM12339N
 2233  RadioShack Corporation
        6323  USB Electronic Scale
 2237  Kobo Inc.
        4161  eReader White
+228d  8D Technologies inc.
+       0001  Terminal Bike Key Reader
 22a6  Pie Digital, Inc.
        ffff  PieKey "beta" 4GB model 4E4F41482E4F5247 (SM3251Q BB)
 22b8  Motorola PCS
index 4c73a7fd7edb77a161d309250136819894794060..5dd39f939f48497b115caf22bea3efe1a164d80b 100644 (file)
@@ -9,12 +9,17 @@
 
 case "$1" in
        start)
-               boot_mesg "Starting Apache daemon..."
                if [ -f /etc/httpd/server.key -a -f /etc/httpd/server.crt -a -f /etc/httpd/server.csr ]; then
                        /usr/local/bin/httpscert read >/dev/null 2>&1
                else
+                       boot_mesg "Generating HTTPS host certificate (may take a couple of minutes)..."
                        /usr/local/bin/httpscert new  >/dev/null 2>&1
+                       evaluate_retval
+
+                       # Make sure that the key is written to disk.
+                       sync
                fi
+               boot_mesg "Starting Apache daemon..."
                /usr/sbin/apachectl -k start
                evaluate_retval
                ;;
index 544b3e1f1472af9c4660a91f16b5db041ac6ae27..7de005eb41dd56e37be8e9491ce9474b9f9a7fc7 100644 (file)
@@ -34,8 +34,10 @@ case "$1" in
                        # pre scan and try to load modules
                        "yes" | /usr/sbin/sensors-detect > /dev/null
                        if [ -e /etc/sysconfig/lm_sensors ]; then
+
                                # Module load
-                               for modul in `cat /etc/sysconfig/lm_sensors | grep '^MODULE_' | cut -d"=" -s -f2`; do
+                               . /etc/sysconfig/lm_sensors
+                               for modul in $BUS_MODULES $HWMON_MODULES ; do
                                        modprobe $modul > /dev/null 2>&1;
                                done
                        fi
@@ -52,8 +54,10 @@ case "$1" in
                # Load sensor modules only first start
                if [ ! -e /var/lock/sensors_modules ]; then
                        touch /var/lock/sensors_modules
+
                        boot_mesg -n "Loading Sensor Modules: "
-                       for modul in `cat /etc/sysconfig/lm_sensors | grep '^MODULE_' | cut -d"=" -s -f2`; do
+                       . /etc/sysconfig/lm_sensors
+                       for modul in $BUS_MODULES $HWMON_MODULES ; do
                        modprobe $modul > /dev/null 2>&1;
                                if [ ${?} = 0 ]; then
                                        boot_mesg -n "$SUCCESS$modul$NORMAL ";
index 728262308d1422cb3fa9371586385cb977b48431..d69ddd3c0ae0b52a4d8e13fbd04a141847c1db02 100644 (file)
@@ -21,19 +21,21 @@ eval $(/usr/local/bin/readhash /var/ipfire/main/settings)
 FONT="lat0-16"
 KEYMAP_CORRECTIONS="euro2"
 
-if [ "$LANGUAGE" == "de" ]; then
-       LEGACY_CHARSET="iso-8859-15"
-       #FONT="LatArCyrHeb-16 -m 8859-15"
-       FONT="lat0-16 -m 8859-15"
-fi
-
-if [ "$LANGUAGE" == "pl" ]; then
-       FONT="lat2-16"
-fi
-
-if [ "$LANGUAGE" == "ru" ]; then
-       FONT="LatArCyrHeb-16"
-fi
+case "${LANGUAGE}" in
+       # German
+       de)
+               LEGACY_CHARSET="iso-8859-15"
+               FONT="lat0-16 -m 8859-15"
+               ;;
+       # Polish
+       pl)
+               FONT="lat2-16"
+               ;;
+       # Russish/Turkish
+       ru|tr)
+               FONT="LatArCyrHeb-16"
+               ;;
+esac
 
 UNICODE="1"
 BROKEN_COMPOSE="0"
index abc6b5c8f9ab82460475d5b8a610269e82851c82..083a555a3a5c9c01147d21f09d307e39fd30294c 100644 (file)
@@ -9,26 +9,39 @@
 . $rc_functions
 eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
 
+function flush_chains() {
+       iptables -F DHCPGREENINPUT
+       iptables -F DHCPGREENOUTPUT
+       iptables -F DHCPBLUEINPUT
+       iptables -F DHCPBLUEOUTPUT
+}
+
 case "$1" in
        start)
-               iptables -F DHCPBLUEINPUT
-               if [ -e /var/ipfire/dhcp/enable_green ]; then
+               flush_chains
+
+               if [ -n "${GREEN_DEV}" -a -e "/var/ipfire/dhcp/enable_green" ]; then
                        devices="${GREEN_DEV}"
+
+                       iptables -A DHCPGREENINPUT  -i "${GREEN_DEV}" -j DHCPINPUT
+                       iptables -A DHCPGREENOUTPUT -o "${GREEN_DEV}" -j DHCPOUTPUT
                fi
-               if [ -e /var/ipfire/dhcp/enable_blue ]; then
+               if [ -n "${BLUE_DEV}" -a -e "/var/ipfire/dhcp/enable_blue" ]; then
                        devices+=" ${BLUE_DEV}"
-                       
-                       iptables -A DHCPBLUEINPUT -p tcp --source-port 68 --destination-port 67 -i ${BLUE_DEV} -j ACCEPT > /dev/null 2>&1
-                       iptables -A DHCPBLUEINPUT -p udp --source-port 68 --destination-port 67 -i ${BLUE_DEV} -j ACCEPT > /dev/null 2>&1
-               fi              
-               
+
+                       iptables -A DHCPBLUEINPUT  -i "${BLUE_DEV}" -j DHCPINPUT
+                       iptables -A DHCPBLUEOUTPUT -o "${BLUE_DEV}" -j DHCPOUTPUT
+               fi
+
                boot_mesg "Starting DHCP Server..."
                loadproc /usr/sbin/dhcpd -q ${devices}
-               
+
                (sleep 5 && chmod 644 /var/run/dhcpd.pid) & # Fix because silly dhcpd creates its pid with mode 640
                ;;
 
        stop)
+               flush_chains
+
                boot_mesg "Stopping DHCP Server..."
                killproc -p /var/run/dhcpd.pid /usr/sbin/dhcpd
                if [ "$(ps -A | grep " dhcpd")" != "" ] ; then
index 11859214b9e050b0d428cf23294f00b1a6095985..34eee0c26e8fbb2aa2bab5fe9b098c03d66ba8bd 100644 (file)
@@ -22,13 +22,36 @@ fi
 
 SHOW_SRV=1
 
+function dns_forward_args() {
+       local file="${1}"
+
+       # Do nothing if file is empty.
+       [ -s "${file}" ] || return
+
+       local cmdline
+
+       local enabled zone server remark
+       while IFS="," read -r enabled zone server remark; do
+               # Line must be enabled.
+               [ "${enabled}" = "on" ] || continue
+
+               cmdline="${cmdline} --server=/${zone}/${server}"
+       done < ${file}
+
+       echo "${cmdline}"
+}
+
+
 case "${1}" in
        start)
+               # kill already running copy of dnsmasq...
+               killproc /usr/sbin/dnsmasq 2>&1 > /dev/null
+
                boot_mesg "Starting Domain Name Service Proxy..."
                
                eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
-               ARGS=
-               [ "$DOMAIN_NAME_GREEN" != "" ] && ARGS="-s $DOMAIN_NAME_GREEN"
+               ARGS="$CUSTOM_ARGS"
+               [ "$DOMAIN_NAME_GREEN" != "" ] && ARGS="$ARGS -s $DOMAIN_NAME_GREEN"
                
                echo > /var/ipfire/red/resolv.conf # Clear it
                if [ -e "/var/ipfire/red/dns1" ]; then
@@ -44,9 +67,11 @@ case "${1}" in
                    fi
                fi
                [ -e "/var/ipfire/red/active" ] && ARGS="$ARGS -r /var/ipfire/red/resolv.conf"
-               
+       
                ARGS="$ARGS --domain=`cat /var/ipfire/main/settings |grep DOMAIN |cut -d = -f 2`"
-               ARGS="$ARGS $CUSTOM_ARGS"
+
+               # Add custom forward dns zones.
+               ARGS="${ARGS} $(dns_forward_args /var/ipfire/dnsforward/config)"
 
                loadproc /usr/sbin/dnsmasq -l /var/state/dhcp/dhcpd.leases $ARGS
                
index 00a70bd4a370d7eb360b3d80f4289c7da7dee309..0260d4ad6279185f79f57485ff4e7b78b8f7655a 100644 (file)
@@ -13,6 +13,7 @@
 case "$1" in
        start)
                boot_mesg "Starting fcron..."
+               chown cron:cron /var/spool/cron
                loadproc /usr/sbin/fcron -y
                # remove -y to reenable fcron logging
                ;;
index b6dd7d5bd9b4aa32e7fb7f4c80d3e3fd92312ee4..7a18502bfa728743bc951fef3ccbce84389a57f4 100644 (file)
@@ -1,5 +1,8 @@
 #!/bin/sh
 
+. /etc/sysconfig/rc
+. ${rc_functions}
+
 eval $(/usr/local/bin/readhash /var/ipfire/ppp/settings)
 eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
 eval $(/usr/local/bin/readhash /var/ipfire/optionsfw/settings)
@@ -9,94 +12,305 @@ if [ -f /var/ipfire/red/device ]; then
        DEVICE=`/bin/cat /var/ipfire/red/device 2> /dev/null | /usr/bin/tr -d '\012'`
 fi
 
+function iptables() {
+       /sbin/iptables --wait "$@"
+}
+
 iptables_init() {
        # Flush all rules and delete all custom chains
-       /sbin/iptables -F
-       /sbin/iptables -t nat -F
-       /sbin/iptables -t mangle -F
-       /sbin/iptables -X
-       /sbin/iptables -t nat -X
-       /sbin/iptables -t mangle -X
+       iptables -F
+       iptables -t nat -F
+       iptables -t mangle -F
+       iptables -X
+       iptables -t nat -X
+       iptables -t mangle -X
 
        # Set up policies
-       /sbin/iptables -P INPUT DROP
-       /sbin/iptables -P FORWARD DROP
-       /sbin/iptables -P OUTPUT ACCEPT
+       iptables -P INPUT DROP
+       iptables -P FORWARD DROP
+       iptables -P OUTPUT ACCEPT
 
        # Empty LOG_DROP and LOG_REJECT chains
-       /sbin/iptables -N LOG_DROP
-       /sbin/iptables -A LOG_DROP   -m limit --limit 10/minute -j LOG
-       /sbin/iptables -A LOG_DROP   -j DROP
-       /sbin/iptables -N LOG_REJECT
-       /sbin/iptables -A LOG_REJECT -m limit --limit 10/minute -j LOG
-       /sbin/iptables -A LOG_REJECT -j REJECT
+       iptables -N LOG_DROP
+       iptables -A LOG_DROP   -m limit --limit 10/minute -j LOG
+       iptables -A LOG_DROP   -j DROP
+       iptables -N LOG_REJECT
+       iptables -A LOG_REJECT -m limit --limit 10/minute -j LOG
+       iptables -A LOG_REJECT -j REJECT
 
        # This chain will log, then DROPs packets with certain bad combinations
        # of flags might indicate a port-scan attempt (xmas, null, etc)
-       /sbin/iptables -N PSCAN
+       iptables -N PSCAN
        if [ "$DROPPORTSCAN" == "on" ]; then
-               /sbin/iptables -A PSCAN -p tcp  -m limit --limit 10/minute -j LOG --log-prefix "DROP_TCP Scan " -m comment --comment "DROP_TCP PScan"
-               /sbin/iptables -A PSCAN -p udp  -m limit --limit 10/minute -j LOG --log-prefix "DROP_UDP Scan " -m comment --comment "DROP_UDP PScan"
-               /sbin/iptables -A PSCAN -p icmp -m limit --limit 10/minute -j LOG --log-prefix "DROP_ICMP Scan " -m comment --comment "DROP_ICMP PScan"
-               /sbin/iptables -A PSCAN -f      -m limit --limit 10/minute -j LOG --log-prefix "DROP_FRAG Scan " -m comment --comment "DROP_FRAG PScan"
+               iptables -A PSCAN -p tcp  -m limit --limit 10/minute -j LOG --log-prefix "DROP_TCP Scan " -m comment --comment "DROP_TCP PScan"
+               iptables -A PSCAN -p udp  -m limit --limit 10/minute -j LOG --log-prefix "DROP_UDP Scan " -m comment --comment "DROP_UDP PScan"
+               iptables -A PSCAN -p icmp -m limit --limit 10/minute -j LOG --log-prefix "DROP_ICMP Scan " -m comment --comment "DROP_ICMP PScan"
+               iptables -A PSCAN -f      -m limit --limit 10/minute -j LOG --log-prefix "DROP_FRAG Scan " -m comment --comment "DROP_FRAG PScan"
        fi
-       /sbin/iptables -A PSCAN -j DROP -m comment --comment "DROP_PScan"
+       iptables -A PSCAN -j DROP -m comment --comment "DROP_PScan"
 
        # New tcp packets without SYN set - could well be an obscure type of port scan
        # that's not covered above, may just be a broken windows machine
-       /sbin/iptables -N NEWNOTSYN
+       iptables -N NEWNOTSYN
        if [ "$DROPNEWNOTSYN" == "on" ]; then
-               /sbin/iptables -A NEWNOTSYN  -m limit --limit 10/minute -j LOG  --log-prefix "DROP_NEWNOTSYN "
+               iptables -A NEWNOTSYN  -m limit --limit 10/minute -j LOG  --log-prefix "DROP_NEWNOTSYN "
        fi
-       /sbin/iptables -A NEWNOTSYN  -j DROP -m comment --comment "DROP_NEWNOTSYN"
+       iptables -A NEWNOTSYN  -j DROP -m comment --comment "DROP_NEWNOTSYN"
 
        # Chain to contain all the rules relating to bad TCP flags
-       /sbin/iptables -N BADTCP
+       iptables -N BADTCP
 
-       #Don't check loopback
-       /sbin/iptables -A BADTCP -i lo -j RETURN
+       # Don't check loopback
+       iptables -A BADTCP -i lo -j RETURN
 
        # Disallow packets frequently used by port-scanners
        # nmap xmas
-       /sbin/iptables -A BADTCP -p tcp --tcp-flags ALL FIN,URG,PSH  -j PSCAN
+       iptables -A BADTCP -p tcp --tcp-flags ALL FIN,URG,PSH  -j PSCAN
        # Null
-       /sbin/iptables -A BADTCP -p tcp --tcp-flags ALL NONE -j PSCAN
+       iptables -A BADTCP -p tcp --tcp-flags ALL NONE -j PSCAN
        # FIN
-       /sbin/iptables -A BADTCP -p tcp --tcp-flags ALL FIN -j PSCAN
+       iptables -A BADTCP -p tcp --tcp-flags ALL FIN -j PSCAN
        # SYN/RST (also catches xmas variants that set SYN+RST+...)
-       /sbin/iptables -A BADTCP -p tcp --tcp-flags SYN,RST SYN,RST -j PSCAN
+       iptables -A BADTCP -p tcp --tcp-flags SYN,RST SYN,RST -j PSCAN
        # SYN/FIN (QueSO or nmap OS probe)
-       /sbin/iptables -A BADTCP -p tcp --tcp-flags SYN,FIN SYN,FIN -j PSCAN
+       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
+       iptables -A BADTCP -p tcp ! --syn -m conntrack --ctstate NEW -j NEWNOTSYN
+
+       iptables -A INPUT   -p tcp -j BADTCP
+       iptables -A FORWARD -p tcp -j BADTCP
+
+       # Connection tracking chain
+       iptables -N CONNTRACK
+       iptables -A CONNTRACK -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
+
+       # Fix for braindead ISP's
+       iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
+
+       # CUSTOM chains, can be used by the users themselves
+       iptables -N CUSTOMINPUT
+       iptables -A INPUT -j CUSTOMINPUT
+       iptables -N CUSTOMFORWARD
+       iptables -A FORWARD -j CUSTOMFORWARD
+       iptables -N CUSTOMOUTPUT
+       iptables -A OUTPUT -j CUSTOMOUTPUT
+       iptables -t nat -N CUSTOMPREROUTING
+       iptables -t nat -A PREROUTING -j CUSTOMPREROUTING
+       iptables -t nat -N CUSTOMPOSTROUTING
+       iptables -t nat -A POSTROUTING -j CUSTOMPOSTROUTING
+
+       # Guardian (IPS) chains
+       iptables -N GUARDIAN
+       iptables -A INPUT -j GUARDIAN
+       iptables -A FORWARD -j GUARDIAN
+
+       # Block OpenVPN transfer networks
+       iptables -N OVPNBLOCK
+       iptables -A INPUT   -i tun+ -j OVPNBLOCK
+       iptables -A FORWARD -i tun+ -j OVPNBLOCK
+       iptables -A FORWARD -o tun+ -j OVPNBLOCK
+
+       # OpenVPN transfer network translation
+       iptables -t nat -N OVPNNAT
+       iptables -t nat -A POSTROUTING -j OVPNNAT
+
+       # IPTV chains for IGMPPROXY
+       iptables -N IPTVINPUT
+       iptables -A INPUT -j IPTVINPUT
+       iptables -N IPTVFORWARD
+       iptables -A FORWARD -j IPTVFORWARD
+
+       # Allow to ping the firewall.
+       iptables -N ICMPINPUT
+       iptables -A INPUT -j ICMPINPUT
+       iptables -A ICMPINPUT -p icmp --icmp-type 8 -j ACCEPT
+
+       # Accept everything on loopback
+       iptables -N LOOPBACK
+       iptables -A LOOPBACK -i lo -j ACCEPT
+       iptables -A LOOPBACK -o lo -j ACCEPT
+
+       # Filter all packets with loopback addresses on non-loopback interfaces.
+       iptables -A LOOPBACK -s 127.0.0.0/8 -j DROP
+       iptables -A LOOPBACK -d 127.0.0.0/8 -j DROP
+
+       for i in INPUT FORWARD OUTPUT; do
+               iptables -A ${i} -j LOOPBACK
+       done
+
+       # Accept everything connected
+       for i in INPUT FORWARD OUTPUT; do
+               iptables -A ${i} -j CONNTRACK
+       done
+
+       # Allow DHCP
+       iptables -N DHCPINPUT
+       iptables -A DHCPINPUT -p udp --sport 68 --dport 67 -j ACCEPT
+       iptables -A DHCPINPUT -p tcp --sport 68 --dport 67 -j ACCEPT
+
+       iptables -N DHCPOUTPUT
+       iptables -A DHCPOUTPUT -p udp --sport 67 --dport 68 -j ACCEPT
+       iptables -A DHCPOUTPUT -p tcp --sport 67 --dport 68 -j ACCEPT
+
+       # Allow DHCP on GREEN
+       iptables -N DHCPGREENINPUT
+       iptables -N DHCPGREENOUTPUT
+       if [ -n "${GREEN_DEV}" ]; then
+               iptables -A INPUT  -i "${GREEN_DEV}" -j DHCPGREENINPUT
+               iptables -A OUTPUT -o "${GREEN_DEV}" -j DHCPGREENOUTPUT
+       fi
+
+       # allow DHCP on BLUE to be turned on/off
+       iptables -N DHCPBLUEINPUT
+       iptables -N DHCPBLUEOUTPUT
+       if [ -n "${BLUE_DEV}" ]; then
+               iptables -A INPUT  -i "${BLUE_DEV}" -j DHCPBLUEINPUT
+               iptables -A OUTPUT -o "${BLUE_DEV}" -j DHCPBLUEOUTPUT
+       fi
+
+       # trafic from ipsecX/TUN/TAP interfaces, before "-i GREEN_DEV" accept everything
+       iptables -N IPSECINPUT
+       iptables -N IPSECFORWARD
+       iptables -N IPSECOUTPUT
+       iptables -A INPUT -j IPSECINPUT
+       iptables -A FORWARD -j IPSECFORWARD
+       iptables -A OUTPUT -j IPSECOUTPUT
+       iptables -t nat -N IPSECNAT
+       iptables -t nat -A POSTROUTING -j IPSECNAT
+
+       # localhost and ethernet.
+       # Always allow accessing the web GUI from GREEN.
+       iptables -N GUIINPUT
+       iptables -A INPUT -j GUIINPUT
+       iptables -A GUIINPUT -i "${GREEN_DEV}" -p tcp --dport 444 -j ACCEPT
+
+       # WIRELESS chains
+       iptables -N WIRELESSINPUT
+       iptables -A INPUT -m conntrack --ctstate NEW -j WIRELESSINPUT
+       iptables -N WIRELESSFORWARD
+       iptables -A FORWARD -m conntrack --ctstate NEW -j WIRELESSFORWARD
+
+       # OpenVPN
+       iptables -N OVPNINPUT
+       iptables -A INPUT -j OVPNINPUT
+
+       # TOR
+       iptables -N TOR_INPUT
+       iptables -A INPUT -j TOR_INPUT
+       
+       # Jump into the actual firewall ruleset.
+       iptables -N INPUTFW
+       iptables -A INPUT -j INPUTFW
 
-       /sbin/iptables -A INPUT   -j BADTCP
-       /sbin/iptables -A FORWARD -j BADTCP
+       iptables -N OUTGOINGFW
+       iptables -A OUTPUT -j OUTGOINGFW
 
+       iptables -N FORWARDFW
+       iptables -A FORWARD -j FORWARDFW
+
+       # SNAT rules
+       iptables -t nat -N NAT_SOURCE
+       iptables -t nat -A POSTROUTING -j NAT_SOURCE
+
+       # Custom prerouting chains (for transparent proxy)
+       iptables -t nat -N SQUID
+       iptables -t nat -A PREROUTING -j SQUID
+
+       # DNAT rules
+       iptables -t nat -N NAT_DESTINATION
+       iptables -t nat -A PREROUTING -j NAT_DESTINATION
+       iptables -t nat -A OUTPUT -j NAT_DESTINATION
+
+       iptables -t mangle -N NAT_DESTINATION
+       iptables -t mangle -A PREROUTING -j NAT_DESTINATION
+
+       iptables -t nat -N NAT_DESTINATION_FIX
+       iptables -t nat -A POSTROUTING -j NAT_DESTINATION_FIX
+
+       iptables -t nat -A NAT_DESTINATION_FIX \
+               -m mark --mark 1 -j SNAT --to-source "${GREEN_ADDRESS}"
+
+       if [ -n "${BLUE_ADDRESS}" ]; then
+               iptables -t nat -A NAT_DESTINATION_FIX \
+                       -m mark --mark 2 -j SNAT --to-source "${BLUE_ADDRESS}"
+       fi
+
+       if [ -n "${ORANGE_ADDRESS}" ]; then
+               iptables -t nat -A NAT_DESTINATION_FIX \
+                       -m mark --mark 3 -j SNAT --to-source "${ORANGE_ADDRESS}"
+       fi
+
+       # upnp chain for our upnp daemon
+       iptables -t nat -N UPNPFW
+       iptables -t nat -A PREROUTING -j UPNPFW
+       iptables -N UPNPFW
+       iptables -A FORWARD -m conntrack --ctstate NEW -j UPNPFW
+
+       # RED chain, used for the red interface
+       iptables -N REDINPUT
+       iptables -A INPUT -j REDINPUT
+       iptables -N REDFORWARD
+       iptables -A FORWARD -j REDFORWARD
+       iptables -t nat -N REDNAT
+       iptables -t nat -A POSTROUTING -j REDNAT
+
+       # Filter logging of incoming broadcasts.
+       iptables -N BROADCAST_FILTER
+       iptables -A INPUT -j BROADCAST_FILTER
+
+       iptables -A BROADCAST_FILTER -i "${GREEN_DEV}" -d "${GREEN_BROADCAST}" -j DROP
+
+       if [ -n "${BLUE_DEV}" -a -n "${BLUE_BROADCAST}" ]; then
+               iptables -A BROADCAST_FILTER -i "${BLUE_DEV}" -d "${BLUE_BROADCAST}" -j DROP
+       fi
+
+       if [ -n "${ORANGE_DEV}" -a -n "${ORANGE_BROADCAST}" ]; then
+               iptables -A BROADCAST_FILTER -i "${ORANGE_DEV}" -d "${ORANGE_BROADCAST}" -j DROP
+       fi
+
+       # Apply OpenVPN firewall rules
+       /usr/local/bin/openvpnctrl --firewall-rules
+
+       # run wirelessctrl
+       /usr/local/bin/wirelessctrl
+
+       # POLICY CHAIN
+       iptables -N POLICYIN
+       iptables -A INPUT -j POLICYIN
+       iptables -N POLICYFWD
+       iptables -A FORWARD -j POLICYFWD
+       iptables -N POLICYOUT
+       iptables -A OUTPUT -j POLICYOUT
+
+       # Initialize firewall policies.
+       /usr/sbin/firewall-policy
+
+       # Install firewall rules for the red interface.
+       iptables_red
 }
 
 iptables_red() {
-       /sbin/iptables -F REDINPUT
-       /sbin/iptables -F REDFORWARD
-       /sbin/iptables -t nat -F REDNAT
+       iptables -F REDINPUT
+       iptables -F REDFORWARD
+       iptables -t nat -F REDNAT
 
        # PPPoE / PPTP Device
        if [ "$IFACE" != "" ]; then
                # PPPoE / PPTP
                if [ "$DEVICE" != "" ]; then
-                       /sbin/iptables -A REDINPUT -i $DEVICE -j ACCEPT
+                       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
+                               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
+               iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i $DEVICE -j ACCEPT
+               iptables -A REDINPUT -p udp --source-port 67 --destination-port 68 -i $DEVICE -j ACCEPT
        fi
 
        # Orange pinholes
@@ -104,243 +318,83 @@ iptables_red() {
                # 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
+                       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
+                       iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
+                       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
+                       iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i $IFACE -j ACCEPT
+                       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
+               iptables -t nat -A REDNAT -m mark --mark 50 -o $IFACE -j RETURN
+
+               if [ "$IFACE" != "$GREEN_DEV" ]; then
+                       iptables -t nat -A REDNAT -o $IFACE -j MASQUERADE
+               fi
 
        fi
+
+       # Reload all rules.
+       /usr/local/bin/firewallctrl
 }
 
 # 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
-
-       # Fix for braindead ISP's
-       /sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-
-       # 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
-
-       # IPTV chains for IGMPPROXY
-       /sbin/iptables -N IPTVINPUT
-       /sbin/iptables -A INPUT -j IPTVINPUT
-       /sbin/iptables -N IPTVFORWARD
-       /sbin/iptables -A FORWARD -j IPTVFORWARD
-
-       # filtering from GUI
-       /sbin/iptables -N GUIINPUT
-       /sbin/iptables -A INPUT -j GUIINPUT
-       /sbin/iptables -A GUIINPUT -p icmp --icmp-type 8 -j ACCEPT
-
-       # 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
-       
-       # 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 IPSECNAT
-       /sbin/iptables -t nat -A POSTROUTING -j IPSECNAT
-
-       # 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
-
-       # 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 -N WIRELESSFORWARD
-       /sbin/iptables -A FORWARD -m state --state NEW -j WIRELESSFORWARD
-
-       # RED chain, used for the red interface
-       /sbin/iptables -N REDINPUT
-       /sbin/iptables -A INPUT -j REDINPUT
-       /sbin/iptables -N REDFORWARD
-       /sbin/iptables -A FORWARD -j REDFORWARD
-       /sbin/iptables -t nat -N REDNAT
-       /sbin/iptables -t nat -A POSTROUTING -j REDNAT
-
-       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)
-       /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
-
-       # 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
+       boot_mesg "Loading firewall modules into the kernel"
+       modprobe iptable_nat || failed=1
+       for i in $(find /lib/modules/$(uname -r) -name nf_conntrack*); do
+               modprobe $(basename $i | cut -d. -f1) || failed=1
+       done
+       for i in $(find /lib/modules/$(uname -r) -name nf_nat*); do
+               modprobe $(basename $i | cut -d. -f1) || failed=1
+       done
+       (exit ${failed})
+       evaluate_retval
+
+       if [ -e /var/ipfire/main/disable_nf_sip ]; then
+               rmmod nf_nat_sip
+               rmmod nf_conntrack_sip
+               rmmod nf_nat_h323
+               rmmod nf_conntrack_h323
        fi
 
-       # 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.
-
-       if [ "$DROPINPUT" == "on" ]; then
-               /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 "
-       fi
-       /sbin/iptables -A FORWARD -j DROP -m comment --comment "DROP_OUTPUT"
-        ;;
-  startovpn)  
-       # run openvpn
-       /usr/local/bin/openvpnctrl --create-chains-and-rules
-        ;;
-  stop)
+       boot_mesg "Setting up firewall"
        iptables_init
-       # Accept everyting connected
-       /sbin/iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
-
-       # localhost and ethernet.
-       /sbin/iptables -A INPUT -i lo -j ACCEPT
-       /sbin/iptables -A INPUT -i $GREEN_DEV -m state --state NEW -j ACCEPT
-
-       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
-       fi
+       evaluate_retval
 
        # run local firewall configuration, if present
-       if [ -x /etc/sysconfig/firewall.local ]; then
-               /etc/sysconfig/firewall.local stop
-       fi
-
-       if [ "$DROPINPUT" == "on" ]; then
-               /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 [ -x /etc/sysconfig/firewall.local ]; then
+               /etc/sysconfig/firewall.local start
        fi
-       /sbin/iptables -A FORWARD -j DROP -m comment --comment "DROP_OUTPUT"
-        ;;
-  stopovpn)
-       # stop openvpn
-       /usr/local/bin/openvpnctrl --delete-chains-and-rules
-        ;;
+       ;;
   reload)
+       boot_mesg "Reloading firewall"
        iptables_red
+       evaluate_retval
 
        # 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..32236e6cd761615d885f9a7c14ac73975c432945 100644 (file)
@@ -35,15 +35,20 @@ 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
+               echo "Name: linux-pae" > /opt/pakfire/db/meta/meta-linux-pae
+               echo "ProgVersion: 0" >> /opt/pakfire/db/meta/meta-linux-pae
+               echo "Release: 0"     >> /opt/pakfire/db/meta/meta-linux-pae
+       fi
 fi
 
 echo Restarting udev...
 killall udevd
+/sbin/udevadm hwdb --update
 /sbin/udevd --daemon
 /sbin/udevadm trigger
 /sbin/udevadm settle
index c0b11e6af6ee7f4c004120eefeb681abeddbd9c2..8f59a7f16fdb51c1fbe4c420eab4c89cba0d9a9b 100644 (file)
@@ -75,7 +75,10 @@ case "${1}" in
                        fi
                fi
 
-               # First reset to World (00) and then set new country
+               # First set to any country then reset to World (00)
+               # and then set new country because the card is only
+               # reprogrammed if the region was changed.
+               /usr/sbin/iw reg set DE
                /usr/sbin/iw reg set 00
                /usr/sbin/iw reg set $COUNTRY
 
diff --git a/src/initscripts/init.d/icecream b/src/initscripts/init.d/icecream
deleted file mode 100644 (file)
index f8fa4e3..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-########################################################################
-# Begin $rc_base/init.d/icecream
-#
-# Description : This is a script that starts the icecream daemon.
-#
-# Authors     : Michael Tremer (mitch@ipfire.org)
-#
-# Version     : 01.00
-#
-# Notes       :
-#
-########################################################################
-
-. /etc/sysconfig/rc
-. ${rc_functions}
-
-#SCHEDULER=minerva.ipfire.org
-ENABLE_SCHEDULER=on
-JOBS=8
-
-case "${1}" in
-       start)
-               boot_mesg "Starting Icecream Daemon..."
-               ARGS="-d -m ${JOBS}"
-               if [ -n "${SCHEDULER}" ]; then
-                       ARGS="${ARGS} -s ${SCHEDULER}"
-               fi
-               /opt/icecream/sbin/iceccd ${ARGS}
-               evaluate_retval
-
-               if [ "${ENABLE_SCHEDULER}" = "on" ]; then
-                       /opt/icecream/sbin/icecc-scheduler -d
-               fi
-               ;;
-               
-       stop)
-               boot_mesg "Stopping Icecream Daemon..."
-               killproc /opt/icecream/sbin/iceccd
-
-               if [ "${ENABLE_SCHEDULER}" = "on" ]; then
-                       killproc /opt/icecream/sbin/icecc-scheduler
-               fi
-               ;;
-
-       restart)
-               ${0} stop
-               sleep 1
-               ${0} start
-               ;;
-
-       status)
-               statusproc /opt/icecream/sbin/iceccd
-               ;;
-
-       *)
-               echo "Usage: ${0} {start|stop|reload|restart|status}"
-               exit 1
-               ;;
-esac
-
-# End $rc_base/init.d/icecream
diff --git a/src/initscripts/init.d/keepalived b/src/initscripts/init.d/keepalived
new file mode 100644 (file)
index 0000000..5634194
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/keepalived
+#
+# Description : keepalive daemon initscript
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+[ -r "/etc/sysconfig/keepalive" ] && . /etc/sysconfig/keepalive
+
+case "${1}" in
+       start)
+               boot_mesg "Starting keepalive daemon..."
+               loadproc /usr/sbin/keepalived ${KEEPALIVED_OPTIONS}
+               ;;
+
+       stop)
+               boot_mesg "Stopping keepalive daemon..."
+               killproc /usr/sbin/keepalived
+               ;;
+
+       reload)
+               boot_mesg "Reloading keepalive daemon..."
+               reloadproc /etc/sbin/keepalived
+               ;;
+
+       restart)
+               ${0} stop
+               sleep 1
+               ${0} start
+               ;;
+
+       status)
+               statusproc /usr/sbin/keepalived
+               ;;
+
+       *)
+               echo "Usage: ${0} {start|stop|reload|restart|status}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/keepalived
diff --git a/src/initscripts/init.d/lcdproc b/src/initscripts/init.d/lcdproc
new file mode 100644 (file)
index 0000000..88e6142
--- /dev/null
@@ -0,0 +1,71 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/lcdproc
+#
+# Description :
+#
+# Authors     :
+#
+# Version     : 00.00
+#
+# Notes       :
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+CLIENT="lcdproc"
+
+CONFIG_FILE="/etc/sysconfig/lcdproc"
+
+# Read the configuration file if any.
+[ -e "${CONFIG_FILE}" ] && . ${CONFIG_FILE}
+
+case "${1}" in
+       start)
+               boot_mesg "Starting LCDd..."
+               loadproc /usr/sbin/LCDd -c /etc/lcdproc/LCDd.conf 2>/dev/null
+
+               case "${CLIENT}" in
+                       lcdproc)
+                               boot_mesg "Starting lcdproc..."
+                               loadproc /usr/bin/lcdproc -c /etc/lcdproc/lcdproc.conf 2>/dev/null
+                               ;;
+                       vc)
+                               boot_mesg "Starting LCD virtual console..."
+                               loadproc /usr/bin/lcdvc -c /etc/lcdproc/lcdvc.conf 2>/dev/null
+                               ;;
+               esac
+               ;;
+
+       stop)
+               boot_mesg "Stopping LCDd..."
+               killproc /usr/sbin/LCDd
+
+               boot_mesg "Stopping lcdproc..."
+               killproc /usr/bin/lcdproc
+
+               boot_mesg "Stopping LCD virtual console..."
+               killproc /usr/bin/lcdvc
+               ;;
+
+       restart)
+               ${0} stop
+               sleep 1
+               ${0} start
+               ;;
+
+       status)
+               statusproc /usr/sbin/LCDd
+               statusproc /usr/bin/lcdproc
+               statusproc /usr/bin/lcdvc
+               ;;
+
+       *)
+               echo "Usage: ${0} {start|stop|restart|status}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/lcdproc
index 3bd27a473ed740caee448a1c466e3351be4e61d0..faa765055e95c21a8b5a81e0a4164e96f24a2c8f 100644 (file)
@@ -17,9 +17,11 @@ fi
 # Load ethernet settings
 eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
 
-if [ "${RED_DEV}" == "" ]; then
-       RED_DEV=ppp0
-fi
+case "${RED_TYPE}" in
+       PPPOE)
+               RED_DEV="ppp0"
+               ;;
+esac
 
 # setup_netdev_trigger LED DEVICE MODE
 setup_netdev_trigger ()
@@ -50,6 +52,14 @@ disable_led_trigger ()
        fi
 }
 
+# enable LED
+enable_led ()
+{
+       if [ -d "/sys/class/leds/$1" ]; then
+               echo "1" >        /sys/class/leds/$1/brightness
+       fi
+}
+
 case "${1}" in
        start)
                # Alix LED start
@@ -57,6 +67,16 @@ case "${1}" in
                setup_netdev_trigger alix:2 ${RED_DEV} rx
                setup_netdev_trigger alix:3 ${RED_DEV} tx
 
+               # Apu LED start
+               setup_heartbeat_trigger apu:1
+               setup_netdev_trigger apu:2 ${RED_DEV} rx
+               setup_netdev_trigger apu:3 ${RED_DEV} tx
+
+               # Geos LED start
+               setup_heartbeat_trigger geos:1
+               setup_netdev_trigger geos:2 ${RED_DEV} rx
+               setup_netdev_trigger geos:3 ${RED_DEV} tx
+
                # Dreamplug
                setup_netdev_trigger dreamplug:green:wlan ${GREEN_DEV} tx rx
                setup_netdev_trigger dreamplug:blue:wlanap ${BLUE_DEV} tx rx
@@ -80,9 +100,22 @@ case "${1}" in
        stop)
                # Alix LED stop
                disable_led_trigger alix:1
+               enable_led alix:1
                disable_led_trigger alix:2
                disable_led_trigger alix:3
 
+               # Apu LED stop
+               disable_led_trigger apu:1
+               enable_led apu:1
+               disable_led_trigger apu:2
+               disable_led_trigger apu:3
+
+               # Geos LED stop
+               disable_led_trigger geos:1
+               enable_led geos:1
+               disable_led_trigger geos:2
+               disable_led_trigger geos:3
+
                # Dreamplug
                disable_led_trigger dreamplug:green:wlan
                disable_led_trigger dreamplug:blue:wlanap
index d4735d596ac96a4d73633b8a2010ba2991230cdc..284b51dc8d4ef0054eb657bde7837fd2fbb3ded4 100644 (file)
@@ -24,11 +24,9 @@ case "${1}" in
                # Remove fsck-related file system watermarks.
                rm -f /fastboot /forcefsck
 
-               boot_mesg "Recording existing mounts in /etc/mtab..."
+               boot_mesg "Create /etc/mtab..."
                > /etc/mtab
                mount -f / || failed=1
-               mount -f /proc || failed=1
-               mount -f /sys || failed=1
                (exit ${failed})
                evaluate_retval
 
@@ -49,9 +47,6 @@ case "${1}" in
                boot_mesg "Unmounting all other currently mounted file systems..."
                umount -a -d -r &>/dev/null
                evaluate_retval
-
-               # mount /sys again for led control at halt
-               mount /sys 2>&1 >/dev/null
                ;;
        *)
                echo "Usage: ${0} {start|stop}"
index 1e5be0517c6bbf63d49fddbf2c65f10ff7767044..f7be82d01e5097e158a8cf032743f756d196ebdc 100644 (file)
@@ -21,12 +21,17 @@ case "${1}" in
 
                if ! mountpoint /proc &> /dev/null; then
                        boot_mesg -n " /proc" ${NORMAL}
-                       mount -n /proc || failed=1
+                       mount -n -t proc /proc /proc || failed=1
                fi
 
                if ! mountpoint /sys &> /dev/null; then
                        boot_mesg -n " /sys" ${NORMAL}
-                       mount -n /sys || failed=1
+                       mount -n -t sysfs /sys /sys || failed=1
+               fi
+
+               if ! mountpoint /run &> /dev/null; then
+                       boot_mesg -n " /run" ${NORMAL}
+                       mount -n -t tmpfs -o nosuid,nodev,mode=755,size=8M /run /run || failed=1
                fi
 
                boot_mesg "" ${NORMAL}
index 9ff2200115c4b425b384be228efba0014f2b6eba..5aecd1557d0742097fdf263a175ecc8b04da229d 100644 (file)
 eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
 
 init_networking() {
-       boot_mesg "Loading firewall modules into the kernel"
-       modprobe iptable_nat || failed=1
-       for i in $(find /lib/modules/$(uname -r) -name nf_conntrack*); do
-               modprobe $(basename $i | cut -d. -f1) || failed=1
-       done
-       for i in $(find /lib/modules/$(uname -r) -name nf_nat*); do
-               modprobe $(basename $i | cut -d. -f1) || failed=1
-       done
-       (exit ${failed})
-       evaluate_retval
-
-       # Enable netfilter accounting
-       sysctl net.netfilter.nf_conntrack_acct=1 > /dev/null
-
-       if [ -e /var/ipfire/main/disable_nf_sip ]; then
-               rmmod nf_nat_sip
-               rmmod nf_conntrack_sip
-               rmmod nf_nat_h323
-               rmmod nf_conntrack_h323
-       fi
-
-       boot_mesg "Setting up firewall"
-       /etc/rc.d/init.d/firewall start; evaluate_retval
-
-#      boot_mesg "Setting up traffic accounting"
-#      /etc/rc.d/helper/writeipac.pl || failed=1
-#      /usr/sbin/fetchipac -S || failed=1
-#      (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
-       fi
-
        /etc/rc.d/init.d/dnsmasq start
        /etc/rc.d/init.d/static-routes start
 }
index 2fdfe9ebbcf48391fabef127689c4f5313a483df..a6a75c35f8a85aff2e43a073b98dcb6a8bb11b11 100644 (file)
@@ -31,13 +31,18 @@ eval $(/usr/local/bin/readhash ${CONFIG_FILE})
 # This is start or stop.
 action=${1}
 
-for interface in green0 blue0 orange0; do
+for interface in green0 red0 blue0 orange0; do
        case "${interface}" in
                green*)
                        PARENT_DEV=${GREEN_PARENT_DEV}
                        VLAN_ID=${GREEN_VLAN_ID}
                        MAC_ADDRESS=${GREEN_MAC_ADDRESS}
                        ;;
+               red*)
+                       PARENT_DEV=${RED_PARENT_DEV}
+                       VLAN_ID=${RED_VLAN_ID}
+                       MAC_ADDRESS=${RED_MAC_ADDRESS}
+                       ;;
                blue*)
                        PARENT_DEV=${BLUE_PARENT_DEV}
                        VLAN_ID=${BLUE_VLAN_ID}
@@ -75,13 +80,15 @@ for interface in green0 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
@@ -95,7 +102,7 @@ for interface in green0 blue0 orange0; do
 
                        echo "Removing VLAN interface ${interface}..."
                        ip link set ${interface} down
-                       vconfig rem ${interface}
+                       ip link delete ${interface}
                        ;;
                
                *)
diff --git a/src/initscripts/init.d/networking/functions.network b/src/initscripts/init.d/networking/functions.network
new file mode 100644 (file)
index 0000000..f459b77
--- /dev/null
@@ -0,0 +1,147 @@
+#!/bin/sh
+#
+########################################################################
+# Begin
+#
+# Description : A collection of functions for the IPFire network scripts
+#
+# Authors     : IPFire Development Team <developers@ipfire.org>
+#
+# Version     : 01.00
+#
+# Notes       : 
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. $rc_functions
+
+
+eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
+eval $(/usr/local/bin/readhash /var/ipfire/dns/settings)
+
+dhcpcd_get_pid() {
+               # This function returns the pid of a dhcpcd by a given
+               # network device, if a pidfile exists.
+
+               local device="$1"
+               local pidfile="/var/run/dhcpcd-${device}.pid"
+
+               # Check if a pid file exists.
+               if [ -f "${pidfile}" ] ; then
+
+                       # Get the pid from the file.
+                       local pid="$(<"${pidfile}")"
+
+                       echo "${pid}"
+               fi
+}
+
+dhcpcd_is_running() {
+       # This functions checks if a dhcpcd is running by a given pid.
+
+       local pid="$1"
+
+       # Check if a dhcpcd is running.
+       if [ -n "${pid}" -a -d "/proc/${pid}" ]; then
+               # Return "0" (True) if a dhcpcd is running.
+               return 0
+       fi
+
+       # Return 1 (False) no dhcpcd is running.
+       return 1
+}
+
+dhcpcd_start() {
+       # This function will start a dhcpcd on a speciefied device.
+
+       local device="$1"
+       local dhcp_start=""
+
+       boot_mesg -n "Starting dhcpcd on the ${device} interface..."
+
+       # Check if a dhcpcd is already running.
+       local pid="$(dhcpcd_get_pid "${device}")"
+
+       if  dhcpcd_is_running "${pid}"; then
+               boot_mesg "dhcpcd already running!" ${WARNING}
+               echo_warning
+               exit 2
+       fi
+
+       # Check if a DHCP hostname has been set.
+       if [ -n "${RED_DHCP_HOSTNAME}" ]; then
+               dhcp_start+="-h ${RED_DHCP_HOSTNAME}"
+       fi
+
+       # Start dhcpcd.
+       /sbin/dhcpcd "${device}" "${dhcp_start}" >/dev/null 2>&1
+       ret="$?"
+
+       if [ "${ret}" -eq 0 ]; then
+               . /var/ipfire/dhcpc/dhcpcd-"${device}".info
+               echo ""
+               echo_ok
+               boot_mesg "           DHCP Assigned Settings for ${device}:"
+               boot_mesg_flush
+               boot_mesg "           IP Address:      $ip_address"
+               boot_mesg_flush
+
+               if [ -n "${RED_DHCP_HOSTNAME}" ]; then
+                       boot_mesg "           Hostname:        $RED_DHCP_HOSTNAME"
+                       boot_mesg_flush
+               fi
+
+               boot_mesg "           Subnet Mask:     $subnet_mask"
+               boot_mesg_flush
+               boot_mesg "           Default Gateway: $routers"
+               boot_mesg_flush
+               boot_mesg "           DNS Server:      $domain_name_servers"
+               boot_mesg_flush
+       else
+               echo ""
+               $(exit "${ret}")
+               evaluate_retval
+       fi
+}
+
+dhcpcd_stop() {
+       # This function stops a previously started dhcpcd on a given device.
+
+       local device="$1"
+       local dhcp_stop="-k"
+       local leaseinfo="/var/ipfire/dhcpc/dhcpcd-${device}.info"
+
+       boot_mesg -n "Stopping dhcpcd on the ${device} interface..."
+
+       # Check if a dhcpcd is running.
+       local pid="$(dhcpcd_get_pid "${device}")"
+
+       if ! dhcpcd_is_running "${pid}"; then
+               boot_mesg "    Not running." ${WARNING}
+               echo_warning
+               exit 1
+       fi
+
+       # Stop dhcpcd.
+       /sbin/dhcpcd "${device}" "${dhcp_stop}" &> /dev/null
+       ret="$?"
+
+       # Wait until dhcpd has stopped.
+       while [ -d "/proc/${pid}" ]; do
+               sleep 1
+       done
+
+       # Display console message, depended on the exit code
+       # of the stopped dhcpcd.
+       if [ "${ret}" -eq 0 ]; then
+               boot_mesg
+               echo_ok
+       elif [ "${ret}" -eq 1 ]; then
+               boot_mesg "failed to stop dhcpcd!" ${WARNING}
+               echo_warning
+       else
+               boot_mesg
+               echo_failure
+       fi
+}
index 421c6f68421da9b826dea3e96f21108610ce62cb..e0c66b6724a92d341e57fba719dadc0c78cefe5f 100644 (file)
 
 . /etc/sysconfig/rc 
 . ${rc_functions}
+. /etc/init.d/networking/functions.network
 
 #Define some defaults
 INET_VLAN=7
 IPTV_VLAN=8
+ATM_DEV=0
 
 eval $(/usr/local/bin/readhash /var/ipfire/main/settings)
 if [ "$RRDLOG" == "" ]; then
@@ -77,11 +79,6 @@ if [ "${TYPE}" == "STATIC" ]; then
        fi
 fi
 
-PIDFILE="/var/run/dhcpcd-${DEVICE}.pid"
-LEASEINFO="/var/ipfire/dhcpc/dhcpcd-${DEVICE}.info"
-DHCP_START=" "
-DHCP_STOP="-k "
-
 case "${1}" in
        start)
                if [ "${DEVICE}" != "${GREEN_DEV}" ] && [ "${DEVICE}" != "" ]; then
@@ -137,87 +134,24 @@ case "${1}" in
                        /usr/local/bin/setaliases
 
                elif [ "${TYPE}" == "DHCP" ]; then
+                       # Add firewall rules to allow comunication with the dhcp server on red.
+                       iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i ${DEVICE} -j ACCEPT
+                       iptables -A REDINPUT -p udp --source-port 67 --destination-port 68 -i ${DEVICE} -j ACCEPT
 
-                       if [ -e $LEASEINFO ]; then
-                               boot_mesg -n "Stopping dhcpcd on the ${DEVICE} interface..."
-                               . $LEASEINFO
-                               if [ "$dhcp_lease_time" = "4294967295" ]; then
-                                       # do nothing, just echo ok
-                                       echo ""
-                                       echo_ok
-                               else
-                                       if [ -n "$DHCP_STOP" ]; then
-                                               /sbin/dhcpcd ${DEVICE} $DHCP_STOP &> /dev/null
-                                               RET="$?"
-                                               if [ "$RET" -eq 0 ]; then
-                                                       echo ""
-                                                       echo_ok
-                                               elif [ "$RET" -eq 1 ]; then
-                                                       boot_mesg "dhcpcd not running!" ${WARNING}
-                                                       echo_warning
-                                               else
-                                                       echo ""
-                                                       echo_failure
-                                               fi
-                                       else
-                                               echo ""
-                                               killproc dhcpcd
-                                       fi
-                               fi
-                       fi
-
-                       boot_mesg -n "Starting dhcpcd on the ${DEVICE} interface..."
                        echo -n "${DEVICE}" > /var/ipfire/red/iface
 
+                       # Check if the wlan-client is used on red.
+                       # To determine this we check if a wpa_supplicant is running.
+                       pid="$(pidof wpa_supplicant)"
+
+                       if [ -z "${pid}" ]; then
+                               # No wpa_supplicant is running. So it's save to start dhcpcd.
+                               dhcpcd_start "${DEVICE}"
+                       fi
+
                        ## Create & Enable vnstat
                        /usr/bin/vnstat -u -i ${DEVICE} -r --enable --force > /dev/null 2>&1
 
-                       # Test to see if there is a stale pid file
-                       if [ -f "$PIDFILE" ]; then
-                               ps `cat "$PIDFILE"` | grep dhcpcd > /dev/null
-                               if [ $? != 0 ]; then
-                                       rm -f /var/run/dhcpcd-${DEVICE}.pid > /dev/null
-                               else
-                                       boot_mesg "dhcpcd already running!" ${WARNING}
-                                       echo_warning
-                                       exit 2
-                               fi
-                       fi
-                       
-                       iptables -A REDINPUT -p tcp --source-port 67 --destination-port 68 -i ${DEVICE} -j ACCEPT
-                       iptables -A REDINPUT -p udp --source-port 67 --destination-port 68 -i ${DEVICE} -j ACCEPT
-                       
-                       if [ -n "${RED_DHCP_HOSTNAME}" ]; then
-                               DHCP_START+="-h ${RED_DHCP_HOSTNAME} "
-               fi
-               
-               /sbin/dhcpcd ${DEVICE} ${DHCP_START} >/dev/null 2>&1
-               RET="$?"
-               
-               if [ "$RET" = "0" ]; then
-                               . /var/ipfire/dhcpc/dhcpcd-${DEVICE}.info
-                               echo ""
-                               echo_ok
-                               boot_mesg "           DHCP Assigned Settings for ${DEVICE}:"
-                               boot_mesg_flush
-                               boot_mesg "           IP Address:      $ip_address"
-                               boot_mesg_flush
-                               if [ -n "${RED_DHCP_HOSTNAME}" ]; then
-                                       boot_mesg "           Hostname:        $RED_DHCP_HOSTNAME"
-                                       boot_mesg_flush
-                               fi
-                               boot_mesg "           Subnet Mask:     $subnet_mask"
-                               boot_mesg_flush
-                               boot_mesg "           Default Gateway: $routers"
-                               boot_mesg_flush
-                               boot_mesg "           DNS Server:      $domain_name_servers"
-                               boot_mesg_flush
-                       else
-                               echo ""
-                               $(exit "$RET")
-                               evaluate_retval
-                       fi
-               
                elif [ "$TYPE" == "PPPOE" ]; then
 
                        if ( ps ax | grep -q [p]ppd ); then 
@@ -237,11 +171,19 @@ case "${1}" in
 
 
                        if [ "$TYPE" == "pppoeatm" ] || [ "$TYPE" == "pptpatm" ]; then
-                               PPP_NIC=nas0            
-                               DEVICE=nas0
+                               PPP_NIC=nas${ATM_DEV}
+                               DEVICE=nas${ATM_DEV}
                                boot_mesg "Createing ATM-Bridge as $PPP_NIC ..."
-                               br2684ctl -c0 -e${ENCAP} -a0.${VPI}.${VCI} >/dev/null 2>&1 &
+                               br2684ctl -c${ATM_DEV} -e${ENCAP} -a${ATM_DEV}.${VPI}.${VCI} >/dev/null 2>&1 &
                                sleep 1
+
+                               # use user-defined or green mac address for nas0
+                               if [ -n "$MAC" ]; then
+                                       ip link set dev nas${ATM_DEV} address ${MAC}
+                               else
+                                       ip link set dev nas${ATM_DEV} address $(cat /sys/class/net/green0/address)
+                               fi
+
                                if [ "$TYPE" == "pppoeatm" ]; then
                                        TYPE="pppoe"
                                fi
@@ -455,10 +397,18 @@ case "${1}" in
                        ### Standard PPP options we always use
                        #
                        PPP_STD_OPTIONS="$PLUGOPTS $DNS defaultroute noipdefault noauth"
-                       PPP_STD_OPTIONS+=" default-asyncmap hide-password nodetach mtu ${MTU}"
-                       PPP_STD_OPTIONS+=" mru ${MRU} noaccomp nodeflate nopcomp novj novjccomp"
+                       PPP_STD_OPTIONS+=" default-asyncmap hide-password nodetach"
+                       PPP_STD_OPTIONS+=" noaccomp nodeflate nopcomp novj novjccomp"
                        PPP_STD_OPTIONS+=" nobsdcomp user ${USERNAME} lcp-echo-interval 20"
                        PPP_STD_OPTIONS+=" lcp-echo-failure 5 ${AUTH}"
+
+                       if [ -n "${MTU}" ]; then
+                               PPP_STD_OPTIONS="${PPP_STD_OPTIONS} mtu ${MTU}"
+                       fi
+
+                       if [ -n "${MRU}" ]; then
+                               PPP_STD_OPTIONS="${PPP_STD_OPTIONS} mru ${MRU}"
+                       fi
                                
                        ### Debugging
                        #
@@ -525,33 +475,15 @@ case "${1}" in
                        # Add a NaN value to ppp0 rrd to supress spikes at reconnect
                        rrdtool update $RRDLOG/collectd/localhost/interface/if_octets-ppp0.rrd \
                                $(date +%s):: > /dev/null 2>&1
-               fi
 
-               if [ -e $LEASEINFO ]; then
-                       boot_mesg -n "Stopping dhcpcd on the ${DEVICE} interface..."
-                       . $LEASEINFO
-                       if [ "$dchp_lease_time" = "4294967295" ]; then
-                               # do nothing, just echo ok
-                               echo ""
-                               echo_ok
-                       else
-                               if [ -n "$DHCP_STOP" ]; then
-                                       /sbin/dhcpcd ${DEVICE} $DHCP_STOP &> /dev/null
-                                       RET="$?"
-                                       if [ "$RET" -eq 0 ]; then
-                                               echo ""
-                                               echo_ok
-                                       elif [ "$RET" -eq 1 ]; then
-                                               boot_mesg "dhcpcd not running!" ${WARNING}
-                                               echo_warning
-                                       else
-                                               echo ""
-                                               echo_failure
-                                       fi
-                               else
-                                       echo ""
-                                       killproc dhcpcd
-                               fi
+               elif [ "$TYPE" == "DHCP" ]; then
+                       # Check if the wlan-client is used on red.
+                        # To determine this we check if a wpa_supplicant is running.
+                        pid="$(pidof wpa_supplicant)"
+
+                        if [ -z "${pid}" ]; then
+                               # Stop dhcpcd.
+                               dhcpcd_stop "${DEVICE}"
                        fi
                fi
 
diff --git a/src/initscripts/init.d/networking/wpa_supplicant.exe b/src/initscripts/init.d/networking/wpa_supplicant.exe
new file mode 100644 (file)
index 0000000..b5ad8ff
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/bash
+########################################################################
+# Begin
+#
+# Description : wpa_supplicant Script
+#
+# Authors     : IPFire Development Team <developers@ipfire.org>
+#
+# Version     : 01.00
+#
+# Notes       : This script starts/stops the dhclient if a WPA/WPA2
+#               connection to an AP successfull has been established
+#               or disconnected.
+#
+########################################################################
+. /etc/sysconfig/rc 
+. ${rc_functions}
+. /etc/init.d/networking/functions.network
+
+# Gather required information from wpa_cli.
+device="$1"
+wpa_state="$2"
+
+# Check if the RED device has been configured to use DHCP or exit immediately.
+eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
+if [ ! "${RED_TYPE}" == "DHCP" ] ; then
+       exit 0
+fi
+
+case "${wpa_state}" in
+       CONNECTED)
+               # Start dhcpcd.
+               dhcpcd_start "${device}"
+
+               exit 0
+               ;;
+
+       DISCONNECTED)
+               # Stop dhcpcd.
+               dhcpcd_stop "${device}"
+
+               exit 0
+               ;;
+
+       *)
+               # When we ever got here, there is a really big problem.
+               exit 1
+               ;;
+esac
index 92f174d8afdd356d3689856ccad5acd2d35bf2b4..548b4c4d05eca0d763aa9f8dab43b1a6592cee5b 100644 (file)
@@ -9,9 +9,29 @@ eval $(/usr/local/bin/readhash /var/ipfire/time/settings)
 case "$1" in
        start)
                if [ "$ENABLESETONBOOT" == "on" ]; then
-                       boot_mesg "Setting time on boot..."
-                       loadproc /usr/local/bin/settime $(cat /var/ipfire/time/settime.conf)
-               fi  
+                       boot_mesg -n "Setting time on boot..."
+                       if [ $(pidof wpa_supplicant) ]; then
+                               if [ ! -e /var/ipfire/red/active ]; then
+                                       boot_mesg ""
+                                       boot_mesg -n "Wait for wlan"
+                                       for (( i=30; i>1; i-- )) do
+                                               if [ -e /var/ipfire/red/active ]; then
+                                                       break;
+                                               fi
+                                               boot_mesg -n "."
+                                               sleep 2
+                                       done
+                                       sleep 5
+                               fi
+                       fi
+                       if [ -e /var/ipfire/red/active ]; then
+                               boot_mesg ""
+                               loadproc /usr/local/bin/settime $(cat /var/ipfire/time/settime.conf)
+                       else
+                               boot_mesg " ERROR! Not online!"
+                               echo_warning
+                       fi
+               fi
 
                boot_mesg "Starting ntpd..."
                loadproc /usr/bin/ntpd -Ap /var/run/ntpd.pid
index 8aba4ff1b4f3c60734b9834d00a415c7f3801208..9b4623eceb818dfee1277cc4dc759f80b7aad598 100644 (file)
@@ -35,7 +35,7 @@ if [ "x$MODE" = "xnone" ] ; then
 fi
 
 upsd=/usr/sbin/upsd
-upsdrvctl=/usr/bin/upsdrvctl
+upsdrvctl=/usr/sbin/upsdrvctl
 upsmon=/usr/sbin/upsmon
 log=">/dev/null 2>/dev/null"
 
index 33b56266a403289b181ed8ede518a5c372c94afb..f9b1aa92f09f6a2aa38aecefd9f6c01cfe2c7823 100644 (file)
@@ -6,7 +6,7 @@
 #
 # Authors     : Arne Fitzenreiter - arne_f@ipfire.org
 #
-# Version     : 1.01
+# Version     : 1.04
 #
 # Notes       :
 #
@@ -22,6 +22,12 @@ case "${1}" in
                mount -o remount,rw / > /dev/null
                evaluate_retval
 
+               boot_mesg "Create /etc/mtab..."
+               > /etc/mtab
+               mount -f / || failed=1
+               (exit ${failed})
+               evaluate_retval
+
                # Detect device
                ROOT=`mount | grep -m1 " / " | cut -d" " -f1`;
                if [ "${ROOT:`expr length $ROOT`-2:1}" == "p" ]; then
@@ -31,14 +37,18 @@ case "${1}" in
                fi
 
                boot_mesg "Change Partition ${DRV}3 to all free space ..."
-               echo -e 'd\n3\nn\np\n3\n\n\nw\nq\n' | fdisk ${DRV}
+               echo -e ',+' | sfdisk --no-reread -f -N3 ${DRV} 2>/dev/null
+
+               boot_mesg "Update c,h,s values of ${DRV}1 ..."
+               echo -e ',' | sfdisk --no-reread -f -N1 ${DRV} &> /dev/null
 
                # Erase symlink, it should run only once
                rm -f /etc/rc.d/rcsysinit.d/S25partresize
 
                boot_mesg "Rebooting ..."
                sync
-               mount -o remount,ro / > /dev/null
+               mount -o remount,ro / &> /dev/null
+               sleep 15
                reboot -f
 
                ;;
@@ -49,4 +59,3 @@ case "${1}" in
 esac
 
 # End $rc_base/init.d/partresize
-
index 185ad61f65692e317d6ca43caa7af06f76d60845..86a73d8e54abb69e61b779e548b3975097c01492 100644 (file)
@@ -1,43 +1,23 @@
 #!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/pound
+#
+# Description : pound reverse-proxy
+#
+########################################################################
 
 . /etc/sysconfig/rc
 . ${rc_functions}
 
-PATH=/bin:/usr/bin:/sbin:/usr/sbin
-
-test -x /usr/sbin/pound || exit 0
-
-# For configuration of the init script use the file
-# /etc/sysconfig/pound, do not edit this init script.
-
-# Set run_pound to 1 to start pound or 0 to disable it.
-run_pound=0
-
-# Specify additional pound options here (see manpage).
-pound_options=""
-
-# Specify module to load
-pound_module="none"
-
-[ -e /etc/sysconfig/pound ] && . /etc/sysconfig/pound
-
-DAEMON=/usr/sbin/pound
-
 case "${1}" in
        start)
-               boot_mesg "Starting pound ..."
-               if [ $run_pound = 1 ]
-               then
-                       # do we have to load a module?
-                       [ ${pound_module:-none} != "none" ] && /sbin/modprobe $pound_module
-
-                       loadproc $DAEMON $pound_options
-               fi
+               boot_mesg "Starting pound reverse-proxy..."
+               loadproc /usr/sbin/pound
                ;;
 
        stop)
-               boot_mesg "Stopping pound ..."
-               killproc $DAEMON
+               boot_mesg "Stopping pound reverse-proxy..."
+               killproc /usr/sbin/pound
                ;;
 
        restart)
@@ -47,7 +27,7 @@ case "${1}" in
                ;;
 
        status)
-               statusproc $DAEMON
+               statusproc /usr/sbin/pound
                ;;
 
        *)
@@ -56,3 +36,4 @@ case "${1}" in
                ;;
 esac
 
+# End $rc_base/init.d/pound
index 26c64e3b34afe3889e61436fd104d3d884920c7f..57aef99d42bb2fb689015011ce86f675698481fa 100644 (file)
@@ -15,14 +15,14 @@ case "$1" in
                        /bin/cat /var/tmp/random-seed >/dev/urandom
                fi
                /bin/dd if=/dev/urandom of=/var/tmp/random-seed \
-                       count=1 &>/dev/null
+                       count=4 &>/dev/null
                evaluate_retval
                ;;
 
        stop)
                boot_mesg "Saving random seed..."
                /bin/dd if=/dev/urandom of=/var/tmp/random-seed \
-                       count=1 &>/dev/null
+                       count=4 &>/dev/null
                evaluate_retval
                ;;
 
diff --git a/src/initscripts/init.d/rngd b/src/initscripts/init.d/rngd
new file mode 100644 (file)
index 0000000..22437fd
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/rngd
+#
+# Description : Random Number Generator Daemon
+#
+# Authors     : Michael Tremer <michael.tremer@ipfire.org>
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+function has_rdrand() {
+       grep -q "rdrand" /proc/cpuinfo
+}
+
+function has_hwrng() {
+       [ -e "/dev/hwrng" ]
+}
+
+case "${1}" in
+       start)
+               if ! has_hwrng && ! has_rdrand; then
+                       boot_mesg "No Hardware Random Number Generator found..."
+                       echo_warning
+                       exit 0
+               fi
+
+               boot_mesg "Starting Random Number Generator Daemon..."
+               loadproc /usr/sbin/rngd --no-tpm=1
+               ;;
+
+       stop)
+               boot_mesg "Stopping Random Number Generator Daemon..."
+               killproc /usr/sbin/rngd
+               ;;
+
+       restart)
+               ${0} stop
+               sleep 1
+               ${0} start
+               ;;
+
+       status)
+               statusproc /usr/sbin/rngd
+               ;;
+
+       udev-event)
+               $0 restart &>/dev/null
+               ;;
+
+       *)
+               echo "Usage: ${0} {start|stop|restart|status}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/rngd
index 1a1425d0c695f1b2a4628b1100006f9b5d708826..c641c7d37987ce7fa753e4fc0df2aacba71da6d7 100644 (file)
@@ -15,8 +15,8 @@ transparent() {
                eval $(/usr/local/bin/readhash /var/ipfire/proxy/settings)
 
                # If the proxy port is not set we set the default to 800.
-               if [ -z $PROXY_PORT ]; then
-                       PROXY_PORT=800
+               if [ -z "${TRANSPARENT_PORT}" ]; then
+                       TRANSPARENT_PORT=800
                fi
 
                LOCALIP=`cat /var/ipfire/red/local-ipaddress | tr -d \n`
@@ -43,7 +43,7 @@ transparent() {
                
                iptables -t nat -A SQUID -i $1 -p tcp -d $LOCALIP --dport 80 -j RETURN
                
-               iptables -t nat -A SQUID -i $1 -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
+               iptables -t nat -A SQUID -i $1 -p tcp --dport 80 -j REDIRECT --to-port "${TRANSPARENT_PORT}"
 }
 
 case "$1" in
@@ -62,13 +62,25 @@ case "$1" in
                eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
 
                if [ -e /var/ipfire/proxy/enable -o -e /var/ipfire/proxy/enable_blue ]; then
-
                        # Add Address to errorpage stylesheet
                        sed "s|XXXhostXXX|$GREEN_ADDRESS|g" /var/ipfire/proxy/errorpage-$ERR_DESIGN.css > \
                                /etc/squid/errorpage.css
 
+                       boot_mesg "Creating Squid swap directories..."
+                       /usr/sbin/squid -z >/dev/null 2>&1
+                       evaluate_retval
+
+                       # Make sure, that the process above has finished.
+                       counter=5
+                       while [ ${counter} -gt 0 ]; do
+                               if pidofproc -s /usr/sbin/squid; then
+                                       sleep 1
+                               else
+                                       break
+                               fi
+                       done
+
                        boot_mesg "Starting Squid Proxy Server..."
-                       loadproc /usr/sbin/squid -z >/dev/null 2>&1
                        loadproc /usr/sbin/squid
                fi
 
@@ -86,10 +98,31 @@ case "$1" in
                        boot_mesg "Stopping Squid Proxy Server..."
                        squid -k shutdown >/dev/null 2>&1
                        evaluate_retval
-                       killproc /usr/bin/squidGuard >/dev/null
-                       killproc /usr/sbin/updxlrator >/dev/null
-                       killproc /usr/bin/squidclamav >/dev/null
+
+                       # Stop squidGuard, updxlrator, squidclamav
+                       # and redirect_wrappers.                        
+                       killproc /usr/bin/squidGuard >/dev/null &
+                       killproc /usr/sbin/updxlrator >/dev/null &
+                       killproc /usr/bin/squidclamav >/dev/null &
+                       killproc /usr/sbin/redirect_wrapper >/dev/null &
+
+                       # Wait until all redirectors have been stopped.
+                       wait
+
+                       # If squid is still running, wait up to 30 seconds
+                       # before we go on to kill it.
+                       counter=30
+
+                       while [ ${counter} -gt 0 ]; do
+                               statusproc /usr/sbin/squid >/dev/null && break;
+                               sleep 1
+                               counter=$(( ${counter} - 1))
+                       done
+
+                       # Kill squid service, if still running.
                        killproc /usr/sbin/squid >/dev/null
+
+                       # Trash remain pid file from squid.
                        rm -rf /var/run/squid.pid       
                fi
                ;;
index e99e6940562f310c20fd79a1e1ec86a167bda768..0ed86616534c23d4bffcf1bae1e4c3b9b7986533 100644 (file)
 
 case "$1" in
     start)
-    if [ ! -e /etc/ssh/ssh_host_rsa_key ]; then
-       echo "Generating SSH Keys"
-       ssh-keygen -qf /etc/ssh/ssh_host_rsa_key -N ''
-       ssh-keygen -qf /etc/ssh/ssh_host_key -N '' -t rsa1
-       ssh-keygen -qf /etc/ssh/ssh_host_dsa_key -N '' -t dsa
-       ssh-keygen -qf /etc/ssh/ssh_host_ecdsa_key -N '' -t ecdsa
-    fi
+       if [ ! -e "/etc/ssh/ssh_host_key" ]; then
+               boot_mesg "Generating SSH host key..."
+               ssh-keygen -qf /etc/ssh/ssh_host_key -N '' -t rsa1
+               evaluate_retval
+       fi
+
+       for algo in rsa dsa ecdsa ed25519; do
+               keyfile="/etc/ssh/ssh_host_${algo}_key"
+
+               # If the key already exists, there is nothing to do.
+               [ -e "${keyfile}" ] && continue
+
+               case "${algo}" in
+                       rsa)
+                               algo="rsa1"
+                               ;;
+               esac
+
+               boot_mesg "Generating SSH key (${algo})..."
+               ssh-keygen -qf "${keyfile}" -N '' -t ${algo}
+               evaluate_retval
+       done
 
         [ -e "/var/ipfire/remote/enablessh" ] || exit 0 # SSH is not enabled
         boot_mesg "Starting SSH Server..."
-        # Also prevent ssh from being killed by out of memory conditions
         loadproc /usr/sbin/sshd 
-        sleep 3
-        echo "-16" >/proc/`cat /var/run/sshd.pid`/oom_adj
+
+        # Also prevent ssh from being killed by out of memory conditions
+       (
+               sleep 3
+               pid=$(cat /var/run/sshd.pid 2>/dev/null)
+               [ -n "${pid}" ] && echo "-16" > "/proc/${pid}/oom_score_adj"
+       ) &
         ;;
 
     stop)
index 9c15213b8f85417b2941204e00cc327da3b42062..43e58f392b79a18bc9288d2775df28d7c3148dbd 100644 (file)
@@ -4,29 +4,30 @@
 # Based on sysklogd script from LFS-3.1 and earlier.
 # Rewritten by Gerard Beekmans  - gerard@linuxfromscratch.org
 
-#$LastChangedBy: bdubbs $
-#$Date: 2006-09-10 19:41:47 -0500 (Sun, 10 Sep 2006) $
-
 . /etc/sysconfig/rc
 . $rc_functions
 
 case "$1" in
        start)
                boot_mesg "Starting SSLH Deamon..."
-               loadproc /usr/local/bin/sslh -u nobody -p `cat /var/ipfire/red/local-ipaddress`:443 -s localhost:222 -l localhost:444
-               evaluate_retval
 
-               if ! grep -q "443:443" /var/ipfire/xtaccess/config ; then
-                       echo "tcp,0.0.0.0/0,443:443,on,0.0.0.0,SSLH" >> /var/ipfire/xtaccess/config
-                       /usr/local/bin/setxtaccess
+               LOCAL_IP_ADDRESS="$(</var/ipfire/red/local-ipaddress)"
+               if [ -z "${LOCAL_IP_ADDRESS}" ]; then
+                       echo_failure
+                       boot_mesg -n "FAILURE:\n\nCould not determine" ${FAILURE}
+                       boot_mesg -n " your external IP address."
+                       boot_mesg "" ${NORMAL}
+                       exit 1
                fi
 
-               
+               loadproc /usr/sbin/sslh -u nobody \
+                       -p "${LOCAL_IP_ADDRESS}:443" -s localhost:222 -l localhost:444
+               evaluate_retval
                ;;
 
        stop)
                boot_mesg "Stopping SSLH Deamon..."
-               killproc /usr/local/bin/sslh
+               killproc /usr/sbin/sslh
                evaluate_retval
                ;;
 
@@ -37,7 +38,7 @@ case "$1" in
                ;;
 
        status)
-               statusproc /usr/local/bin/sslh
+               statusproc /usr/sbin/sslh
                ;;
 
        *)
diff --git a/src/initscripts/init.d/stunnel b/src/initscripts/init.d/stunnel
new file mode 100644 (file)
index 0000000..9494b5d
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/stunnel
+#
+# Description : Provides an SSL encryption wrapper.
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+case "$1" in
+       start)
+               boot_mesg "Starting the Stunnel Daemon..."
+               loadproc /usr/bin/stunnel
+               ;;
+
+       stop)
+               boot_mesg "Stopping the Stunnel Daemon..."
+               killproc /usr/bin/stunnel
+               ;;
+
+       restart)
+               $0 stop
+               sleep 1
+               $0 start
+               ;;
+
+       status)
+               statusproc /usr/bin/stunnel
+               ;;
+
+       *)
+               echo "Usage: $0 {start|stop|restart|status}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/stunnel
diff --git a/src/initscripts/init.d/tor b/src/initscripts/init.d/tor
new file mode 100644 (file)
index 0000000..551538e
--- /dev/null
@@ -0,0 +1,99 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/tor
+#
+# Description : Anonymizing overlay network for TCP
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+FILEDESCRIPTORS="65535"
+
+eval $(/usr/local/bin/readhash /var/ipfire/tor/settings)
+
+function tor_is_enabled() {
+       [ "${TOR_ENABLED}" = "on" ] || [ "${TOR_RELAY_ENABLED}" = "on" ]
+}
+
+function setup_firewall() {
+       # Flush all rules.
+       flush_firewall
+
+       if [ "${TOR_RELAY_ENABLED}" = "on" -a -n "${TOR_RELAY_PORT}" ]; then
+               iptables -A TOR_INPUT -p tcp --dport "${TOR_RELAY_PORT}" -j ACCEPT
+       fi
+
+       if [ "${TOR_RELAY_ENABLED}" = "on" -a -n "${TOR_RELAY_DIRPORT}" ] && [ "${TOR_RELAY_DIRPORT}" -ne 0 ]; then
+               iptables -A TOR_INPUT -p tcp --dport "${TOR_RELAY_DIRPORT}" -j ACCEPT
+       fi
+}
+
+function flush_firewall() {
+       # Flush all rules.
+       iptables -F TOR_INPUT
+}
+
+case "${1}" in
+       start)
+               tor_is_enabled || exit 0
+
+               # 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 \
+                       --defaults-torrc /usr/share/tor/defaults-torrc \
+                       -f /etc/tor/torrc \
+                       --quiet
+               ;;
+
+       stop)
+               # Flush firewall.
+               flush_firewall
+
+               boot_mesg "Stopping tor..."
+               killproc /usr/bin/tor
+               ;;
+
+       reload)
+               # Setup firewall.
+               setup_firewall
+
+               boot_mesg "Reloading tor..."
+               reloadproc /usr/bin/tor
+               ;;
+
+       restart)
+               ${0} stop
+               sleep 1
+               ${0} start
+               ;;
+
+       reload-or-restart)
+               # Reload the process if it is already running. Otherwise, restart.
+               if pidofproc -s /usr/bin/tor; then
+                       $0 reload
+               else
+                       $0 restart
+               fi
+               ;;
+
+       status)
+               statusproc /usr/bin/tor
+               ;;
+
+       *)
+               echo "Usage: ${0} {start|stop|reload|restart|reload-or-restart|status}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/tor
index 03846e6f3a983664b54991b25d2ea4e99389f7fa..6cf8771eaf745d132700feb999c4122ac9d3d7a3 100644 (file)
@@ -29,16 +29,10 @@ case "${1}" in
                        read ENTER
                        /etc/rc.d/init.d/halt stop
                fi
-
-               # Mount a temporary file system over /dev, so that any devices
-               # made or removed during this boot don't affect the next one.
-               # The reason we don't write to mtab is because we don't ever
-               # want /dev to be unavailable (such as by `umount -a').
-               mount -n -t tmpfs tmpfs /dev -o mode=755
-               if [ ${?} != 0 ]; then
+               if ! grep -q '[[:space:]]/dev' /proc/mounts; then
                        echo_failure
-                       boot_mesg -n "FAILURE:\n\nCannot mount a tmpfs" ${FAILURE}
-                       boot_mesg -n " onto /dev, this system will be halted."
+                       boot_mesg -n "FAILURE:\n\nKernel has no devtmpfs/mount" ${FAILURE}
+                       boot_mesg -n " support but this is needed for udev."
                        boot_mesg -n "\n\nAfter you press Enter, this system"
                        boot_mesg -n " will be halted and powered off."
                        boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
@@ -47,6 +41,16 @@ case "${1}" in
                        /etc/rc.d/init.d/halt stop
                fi
 
+               if ! grep -q '[[:space:]]/dev/shm' /proc/mounts; then
+                       mkdir -p /dev/shm
+                       mount -t tmpfs tmpfs /dev/shm
+               fi
+
+               if ! grep -q '[[:space:]]/dev/pts' /proc/mounts; then
+                       mkdir -p /dev/pts
+                       mount -t devpts devpts -o gid=5,mode=620 /dev/pts
+               fi
+
                # Udev handles uevents itself, so we don't need to have
                # the kernel call out to any binary in response to them
                echo > /proc/sys/kernel/hotplug
@@ -60,10 +64,10 @@ case "${1}" in
 
                # Now traverse /sys in order to "coldplug" devices that have
                # already been discovered
-               /sbin/udevadm trigger
+               /bin/udevadm trigger --action=add
 
                # Now wait for udevd to process the uevents we triggered
-               /sbin/udevadm settle
+               /bin/udevadm settle
                evaluate_retval
 
                ;;
index 78461ce77e293302f2f7f82e45023a1fe166b813..25e6967c813a32ed5fb44aba8d9f1add87f56e12 100644 (file)
@@ -26,7 +26,7 @@ case "${1}" in
                done 2>/dev/null
                
                # Now wait for udevd to process the uevents we triggered
-               /sbin/udevadm settle
+               /bin/udevadm settle
                evaluate_retval
                ;;
 
index 6d15775f498f50feafa139e9ddf2639f9d3356c6..a21949ad7316658140d830e97ce3791d8c959761 100644 (file)
@@ -1,44 +1,31 @@
 #!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/watchdog
+#
+# Description : watchdog daemon initscript
+#
+########################################################################
 
 . /etc/sysconfig/rc
 . ${rc_functions}
 
-PATH=/bin:/usr/bin:/sbin:/usr/sbin
-
-test -x /usr/sbin/watchdog || exit 0
-
-# For configuration of the init script use the file
-# /etc/sysconfig/watchdog, do not edit this init script.
-
-# Set run_watchdog to 1 to start watchdog or 0 to disable it.
-run_watchdog=0
-
-# Specify additional watchdog options here (see manpage).
-watchdog_options=""
-
-# Specify module to load
-watchdog_module="none"
-
-[ -e /etc/sysconfig/watchdog ] && . /etc/sysconfig/watchdog
-
-DAEMON=/usr/sbin/watchdog
-WD_DAEMON=/usr/sbin/wd_keepalive
+if [ -e "/etc/sysconfig/watchdog" ]; then
+       . /etc/sysconfig/watchdog
+fi
 
 case "${1}" in
        start)
-               boot_mesg "Starting watchdog ..."
-               if [ $run_watchdog = 1 ]
-               then
-                       # do we have to load a module?
-                       [ ${watchdog_module:-none} != "none" ] && /sbin/modprobe $watchdog_module
-
-                       loadproc $DAEMON $watchdog_options
-               fi
+               if [ -n "${watchdog_module}" ]; then
+                       modprobe -q "${watchdog_module}" 2>/dev/null
+               fi
+
+               boot_mesg "Starting watchdog daemon..."
+               loadproc /usr/sbin/watchdog ${watchdog_options}
                ;;
 
        stop)
-               boot_mesg "Stopping watchdog ..."
-               killproc $DAEMON
+               boot_mesg "Stopping watchdog daemon..."
+               killproc /usr/sbin/watchdog
                ;;
 
        restart)
@@ -48,7 +35,7 @@ case "${1}" in
                ;;
 
        status)
-               statusproc $DAEMON
+               statusproc /usr/sbin/watchdog
                ;;
 
        *)
@@ -57,3 +44,4 @@ case "${1}" in
                ;;
 esac
 
+# End $rc_base/init.d/watchdog
diff --git a/src/initscripts/init.d/wlanclient b/src/initscripts/init.d/wlanclient
new file mode 100644 (file)
index 0000000..ee24c43
--- /dev/null
@@ -0,0 +1,283 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/wlan_client
+#
+# Description : Wireless client initscript
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
+
+WIRELESS_CONFIG="/var/ipfire/ethernet/wireless"
+
+function device_is_wireless() {
+       local device=${1}
+
+       if [ -d "/sys/class/net/${device}/wireless" ]; then
+               return 0
+       fi
+
+       return 1
+}
+
+function wpa_supplicant_make_config() {
+       local device=${1}
+       local config=${2}
+       shift 2
+
+       # Check if device is wireless.
+       local wireless="false"
+       if device_is_wireless ${device}; then
+               wireless="true"
+       fi
+
+       # Write a configuration file header.
+       (
+               echo "#"
+               echo "# THIS FILE IS AUTOMATICALLY GENERATED AND"
+               echo "# ANY CUSTOM CHANGES WILL BE OVERWRITTEN!"
+               echo "#"
+               echo
+               echo "ctrl_interface=/var/run/wpa_supplicant"
+               echo
+       ) > ${config}
+
+       local items=0
+
+       local line
+       while IFS="," read -ra line; do
+               # Skip commented lines.
+               [ "${line:0:1}" = "#" ] && continue
+
+               # Skip disabled entries.
+               [ "${line[2]}" = "on" ] || continue
+
+               wpa_supplicant_config_line \
+                       ${device} ${config} \
+                       --wireless="${wireless}" \
+                       --mode="${line[3]}" \
+                       --wpa-mode="${line[4]}" \
+                       --ssid="${line[5]}" \
+                       --psk="${line[6]}" \
+                       --priority="${line[7]}"
+
+               items=$(( ${items} + 1 ))
+
+       done < ${WIRELESS_CONFIG}
+
+       # Return exit code 2, when there are no entries in the
+       # configuration file.
+       if [ "${items}" = "0" ]; then
+               return 2
+       fi
+
+       return 0
+}
+
+function wpa_supplicant_config_line() {
+       local device=${1}
+       local config=${2}
+       shift 2
+
+       local auth_alg
+       local proto
+       local key_mgmt
+       local pairwise
+       local group
+       local mode
+       local priority
+       local psk
+       local ssid
+       local wep_tx_keyidx
+       local wep_key0
+       local wireless="true"
+       local wpa_mode
+
+       while [ $# -gt 0 ]; do
+               case "${1}" in
+                       --mode=*)
+                               mode=${1#--mode=}
+                               ;;
+                       --priority=*)
+                               priority=${1#--priority=}
+                               ;;
+                       --psk=*)
+                               psk=${1#--psk=}
+                               ;;
+                       --ssid=*)
+                               ssid=${1#--ssid=}
+                               ;;
+                       --wireless=*)
+                               wireless=${1#--wireless=}
+                               ;;
+                       --wpa-mode=*)
+                               wpa_mode=${1#--wpa-mode=}
+                               ;;
+               esac
+               shift
+       done
+
+       case "${mode}" in
+               WPA2)
+                       auth_alg="OPEN"
+                       proto="RSN"
+                       key_mgmt="WPA-PSK"
+                       ;;
+               WPA)
+                       auth_alg="OPEN"
+                       proto="WPA"
+                       key_mgmt="WPA-PSK"
+                       ;;
+               WEP)
+                       auth_alg="SHARED"
+                       key_mgmt="NONE"
+
+                       wep_tx_keyidx=0
+                       wep_key0=${psk}
+                       psk=""
+                       ;;
+               NONE)
+                       auth_alg="OPEN"
+                       key_mgmt="NONE"
+                       ;;
+               *)
+                       # Unsupported mode.
+                       return 1
+                       ;;
+       esac
+
+       if [ "${mode}" = "WPA" -o "${mode}" = "WPA2" ]; then
+               case "${wpa_mode}" in
+                       CCMP-CCMP)
+                               pairwise="CCMP"
+                               group="CCMP"
+                               ;;
+                       CCMP-TKIP)
+                               pairwise="CCMP"
+                               group="TKIP"
+                               ;;
+                       TKIP-TKIP)
+                               pairwise="TKIP"
+                               group="TKIP"
+                               ;;
+                       *)
+                               pairwise="CCMP TKIP"
+                               group="CCMP TKIP"
+                               ;;
+               esac
+       fi
+
+       (
+               echo "network={"
+
+               if [ -n "${ssid}" ]; then
+                       echo "  ssid=\"${ssid}\""
+               fi
+               if [ "${wireless}" = "true" ]; then
+                       echo "  scan_ssid=1"
+               fi
+               if [ -n "${auth_alg}" ]; then
+                       echo "  auth_alg=${auth_alg}"
+               fi
+               if [ -n "${key_mgmt}" ]; then
+                       echo "  key_mgmt=${key_mgmt}"
+               fi
+               if [ -n "${psk}" ]; then
+                       echo "  psk=\"${psk}\""
+               fi
+               if [ -n "${wep_tx_keyidx}" ]; then
+                       echo "  wep_tx_keyidx=${wep_tx_keyidx}"
+               fi
+               if [ -n "${wep_key0}" ]; then
+                       echo "  wep_key0=\"${wep_key0}\""
+               fi
+               if [ -n "${proto}" ]; then
+                       echo "  proto=${proto}"
+               fi
+               if [ -n "${pairwise}" -a -n "${group}" ]; then
+                       echo "  pairwise=${pairwise}"
+                       echo "  group=${group}"
+               fi
+               if [ -n "${priority}" ]; then
+                       echo "  priority=${priority}"
+               fi
+
+               echo "}"
+               echo
+       ) >> ${config}
+}
+
+function wpa_supplicant_start() {
+       local device=${1}
+       local config="/etc/wpa_supplicant.conf"
+
+       # Write configuration file.
+       wpa_supplicant_make_config ${device} ${config}
+       [ $? -eq 0 ] || return 0
+
+       # Build wpa_supplicant command line.
+       local wpa_suppl_cmd="wpa_supplicant -B -qqq -i${device} -c${config}"
+
+       if device_is_wireless ${device}; then
+               wpa_suppl_cmd="${wpa_suppl_cmd} -Dwext"
+       else
+               wpa_suppl_cmd="${wpa_suppl_cmd} -Dwired"
+       fi
+
+       # Run the shiz.
+       boot_mesg "Starting wireless client on ${RED_DEV}..."
+       loadproc ${wpa_suppl_cmd}
+
+       # Run wpa_cli to handle reconnection events.
+       boot_mesg "Starting wireless event handler on ${RED_DEV}..."
+       wpa_cli -B -a /etc/rc.d/init.d/networking/wpa_supplicant.exe
+}
+
+function wpa_supplicant_stop() {
+       boot_mesg "Stopping wireless event handler on ${RED_DEV}..."
+       killproc wpa_cli
+
+       # wpa_cli does not send a disconnect event when get stopped.
+       # So we manually have to send it to the wpa_supplicant.exe.
+       /etc/rc.d/init.d/networking/wpa_supplicant.exe "${RED_DEV}" DISCONNECTED
+
+       boot_mesg "Stopping wireless client on ${RED_DEV}..."
+       killproc wpa_supplicant
+       
+       # Tidy up /tmp directory.
+       rm -f /tmp/wpa_ctrl_*
+}
+
+case "${1}" in
+       start)
+               if [ -n "${RED_DEV}" ] && device_is_wireless ${RED_DEV}; then
+                       wpa_supplicant_start ${RED_DEV}
+               fi
+               ;;
+
+       stop)
+               if [ -n "${RED_DEV}" ] && device_is_wireless ${RED_DEV}; then
+                       wpa_supplicant_stop
+               fi
+               ;;
+
+       restart)
+               ${0} stop
+               sleep 1
+               ${0} start
+               ;;
+
+       status)
+               statusproc wpa_supplicant
+               ;;
+
+       *)
+               echo "Usage: ${0} {start|stop|restart|status}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/wlan_client
index bf0a356e10271f61d2edd24f423fff14b28b142a..309e006c9d3927fd6ed0792ade6e911ae841159e 100644 (file)
@@ -12,7 +12,7 @@
 #include "install.h"
 #define _GNU_SOURCE
  
-#define INST_FILECOUNT 14400
+#define INST_FILECOUNT 21000
 #define UNATTENDED_CONF "/cdrom/boot/unattended.conf"
 #define LICENSE_FILE   "/cdrom/COPYING"
 
@@ -38,15 +38,16 @@ extern char *fr_tr[];
 extern char *nl_tr[];
 extern char *pl_tr[];
 extern char *ru_tr[];
+extern char *tr_tr[];
 
 int main(int argc, char *argv[])
 {
 
        char discl_msg[40000] = "Disclaimer\n";
 
-       char *langnames[] = { "Deutsch", "English", "Français", "Español", "Nederlands", "Polski", "Русский", NULL };
-       char *shortlangnames[] = { "de", "en", "fr", "es", "nl", "pl", "ru", NULL };
-       char **langtrs[] = { de_tr, en_tr, fr_tr, es_tr, nl_tr, pl_tr, ru_tr, NULL };
+       char *langnames[] = { "Deutsch", "English", "Français", "Español", "Nederlands", "Polski", "Русский", "Türkçe", NULL };
+       char *shortlangnames[] = { "de", "en", "fr", "es", "nl", "pl", "ru", "tr", NULL };
+       char **langtrs[] = { de_tr, en_tr, fr_tr, es_tr, nl_tr, pl_tr, ru_tr, tr_tr, NULL };
        char hdletter;
        char harddrive[30], sourcedrive[5];     /* Device holder. */
        char harddrive_info[STRING_SIZE];       /* Additional infos about target */
@@ -123,8 +124,6 @@ int main(int argc, char *argv[])
        }
 
        // Load common modules
-       mysystem("/sbin/modprobe iso9660"); // CDROM
-//     mysystem("/sbin/modprobe ext2"); // Boot patition
        mysystem("/sbin/modprobe vfat"); // USB key
        
        /* German is the default */
@@ -322,10 +321,10 @@ int main(int argc, char *argv[])
                swap_file = memory / 4;
        
   /* Calculating Root-Size dependend of Max Disk Space */
-  if ( disk < 756 )
-               root_partition = 200;
-       else if ( disk >= 756 && disk <= 3072 )
-               root_partition = 512;
+  if ( disk < 2048 )
+               root_partition = 1024;
+       else if ( disk >= 2048 && disk <= 3072 )
+               root_partition = 1536;
        else 
                root_partition = 2048;
                
@@ -371,7 +370,14 @@ int main(int argc, char *argv[])
 
        fclose(handle);
 
-       snprintf(commandstring, STRING_SIZE, "/sbin/sfdisk -L -uM %s < /tmp/partitiontable", hdparams.devnode_disk);
+       if (disk < 2097150) {
+               // <2TB use sfdisk and normal mbr
+               snprintf(commandstring, STRING_SIZE, "/sbin/sfdisk -L -uM %s < /tmp/partitiontable", hdparams.devnode_disk);
+       } else {
+               // >2TB use parted with gpt
+               snprintf(commandstring, STRING_SIZE, "/usr/sbin/parted -s %s mklabel gpt mkpart boot ext2 1M 64M mkpart swap linux-swap 64M 1000M mkpart root ext4 1000M 5000M mkpart var ext4 5000M 100%% disk_set pmbr_boot on", hdparams.devnode_disk);
+       }
+
        if (runcommandwithstatus(commandstring, ctr[TR_PARTITIONING_DISK]))
        {
                errorbox(ctr[TR_UNABLE_TO_PARTITION]);
@@ -432,7 +438,7 @@ int main(int argc, char *argv[])
        mkdir("/harddisk/boot", S_IRWXU|S_IRWXG|S_IRWXO);
        mkdir("/harddisk/var", S_IRWXU|S_IRWXG|S_IRWXO);
        mkdir("/harddisk/var/log", S_IRWXU|S_IRWXG|S_IRWXO);
-       
+
        snprintf(commandstring, STRING_SIZE, "/bin/mount %s1 /harddisk/boot", hdparams.devnode_part);
        if (runcommandwithstatus(commandstring, ctr[TR_MOUNTING_BOOT_FILESYSTEM]))
        {
@@ -536,7 +542,7 @@ int main(int argc, char *argv[])
                replace("/harddisk/boot/grub/grub.conf", "splashimage", "#splashimage");
                replace("/harddisk/boot/grub/grub.conf", "#serial", "serial");
                replace("/harddisk/boot/grub/grub.conf", "#terminal", "terminal");
-               replace("/harddisk/boot/grub/grub.conf", " panic=10 ", " console=ttyS0,38400n8 panic=10 ");
+               replace("/harddisk/boot/grub/grub.conf", " panic=10 ", " console=ttyS0,115200n8 panic=10 ");
 
                /*inittab*/
                replace("/harddisk/etc/inittab", "1:2345:respawn:", "#1:2345:respawn:");
index fbaec7e6e4ad806424cbc0160ada4564e7fd0c71..c3350209c207a51574ea7a68cae5180b4b754b79 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2012  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2014  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        #
 #                                                                             #
 ###############################################################################
 
+#lfs patch source here...
+version=FullIPFireVersion
+#
+
 echo "Scanning source media"
 
 # scan all Block devices
 for DEVICE in `find /sys/block/* -maxdepth 0 ! -name fd* ! -name loop* ! -name ram* -exec basename {} \;`
 do
                mount /dev/${DEVICE} /cdrom 2> /dev/null
-               if [ -n "$(ls /cdrom/ipfire-*.tlz 2>/dev/null)" ]; then
+               if [ -n "$(ls /cdrom/${version}.media 2>/dev/null)" ]; then
                        echo -n ${DEVICE} > /tmp/source_device
-                       echo "Found tarball on ${DEVICE}"
+                       echo "Found ${version} on ${DEVICE}"
                        exit 0
                else
-                       echo "Found no tarballs on ${DEVICE} - SKIP"
+                       echo "not found on ${DEVICE} - SKIP"
                fi
                umount /cdrom 2> /dev/null
 done
@@ -38,14 +42,14 @@ done
 # scan all Partitions on block devices
 for DEVICE in `find /sys/block/* -maxdepth 0 ! -name fd* ! -name loop* ! -name ram* -exec basename {} \;`
 do
-       for DEVICEP in $(ls /dev/${DEVICE}? | sed "s/\/dev\///" 2> /dev/null);do
+       for DEVICEP in $(ls /dev/${DEVICE}? 2>/dev/null | sed "s/\/dev\///");do
                mount /dev/${DEVICEP} /cdrom 2> /dev/null
-               if [ -n "$(ls /cdrom/ipfire-*.tlz 2>/dev/null)" ]; then
+               if [ -n "$(ls /cdrom/${version}.media 2>/dev/null)" ]; then
                        echo -n ${DEVICEP} > /tmp/source_device
-                       echo "Found tarball on ${DEVICEP}"
+                       echo "Found ${version} on ${DEVICEP}"
                        exit 0
                else
-                       echo "Found no tarballs on ${DEVICEP} - SKIP"
+                       echo "not found on ${DEVICEP} - SKIP"
                fi
                umount /cdrom 2> /dev/null
        done
@@ -54,14 +58,14 @@ done
 # scan all Partitions on raid/mmc devices
 for DEVICE in `find /sys/block/* -maxdepth 0 ! -name fd* ! -name loop* ! -name ram* -exec basename {} \;`
 do
-       for DEVICEP in $(ls /dev/${DEVICE}p? | sed "s/\/dev\///");do
+       for DEVICEP in $(ls /dev/${DEVICE}p? 2>/dev/null | sed "s/\/dev\///");do
                mount /dev/${DEVICEP} /cdrom 2> /dev/null
-               if [ -n "$(ls /cdrom/ipfire-*.tlz 2>/dev/null)" ]; then
+               if [ -n "$(ls /cdrom/${version}.media 2>/dev/null)" ]; then
                        echo -n ${DEVICEP} > /tmp/source_device
-                       echo "Found tarball on ${DEVICEP}"
+                       echo "Found ${version} on ${DEVICEP}"
                        exit 0
                else
-                       echo "Found no tarballs on ${DEVICEP} - SKIP"
+                       echo "not found on ${DEVICEP} - SKIP"
                fi
                umount /cdrom 2> /dev/null
        done
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 39cde7b9ded52d9c45bb354556a898be078d5d73..aef3e93225159b6d99e37b90e6a2515f8a871134 100644 (file)
@@ -347,6 +347,7 @@ int replace(char filename1[], char *from, char *to)
        #include "lang_pl.c"
        #include "lang_ru.c"
        #include "lang_nl.c"
+       #include "lang_tr.c"
 #endif
 
 // returns a pointer to the actual running version number of IPFire.
index de5c558c0e6091a1cb5d93194a09d70064f4aff6..8c6f3fa90f7158a946912d9fa483b1dbf7015085 100644 (file)
@@ -532,7 +532,7 @@ int create_udev(void)
        for (i = 0 ; i < 4 ; i++)
        {
                if (strcmp(knics[i].macaddr, "")) {
-                       fprintf(fp,"ACTION==\"add\", SUBSYSTEM==\"net\", SYSFS{type}==\"1\", SYSFS{address}==\"%s\", NAME=\"%s0\" # %s\n", knics[i].macaddr, lcolourcard[i], knics[i].description);
+                       fprintf(fp,"\n# %s\nACTION==\"add\", SUBSYSTEM==\"net\", ATTR{type}==\"1\", ATTR{address}==\"%s\", NAME=\"%s0\"\n", knics[i].description, knics[i].macaddr, lcolourcard[i]);
                }
        }
        fclose(fp);
@@ -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 accf92a0302016d3c18bd32f42261652e31cd581..b143492a1345df4a07d3968c79cf6b972765581c 100644 (file)
@@ -69,7 +69,7 @@ int handlekeymap(void)
                return 0;
        }       
        
-       strcpy(keymap, "/lib/kbd/keymaps/i386/qwertz/de-latin1-nodeadkeys.map.gz");
+       strcpy(keymap, "/lib/kbd/keymaps/i386/qwerty/us.map.gz");
        findkey(kv, "KEYMAP", keymap);
        
        choice = 0;
index d078a5258b7bca8f106359ef04bf0270cc7f19ac..d6531bdf083414f021f76d3e10e4d9257c0705c8 100644 (file)
@@ -27,6 +27,7 @@ extern char *es_tr[];
 extern char *pl_tr[];
 extern char *ru_tr[];
 extern char *nl_tr[];
+extern char *tr_tr[];
 
 int main(int argc, char *argv[])
 {
@@ -34,8 +35,8 @@ int main(int argc, char *argv[])
        char *shortlangnames[] = { "en", NULL };
        char **langtrs[] = { en_tr, NULL };
 #else
-       char *shortlangnames[] = { "de", "en", "fr", "es", "nl", "pl", "ru", NULL };
-       char **langtrs[] = { de_tr, en_tr, fr_tr, es_tr, nl_tr, pl_tr, ru_tr, NULL };
+       char *shortlangnames[] = { "de", "en", "fr", "es", "nl", "pl", "ru", "tr", NULL };
+       char **langtrs[] = { de_tr, en_tr, fr_tr, es_tr, nl_tr, pl_tr, ru_tr, tr_tr, NULL };
 #endif
        int choice;
        char *sections[11]; /* need to fill this out AFTER knowning lang */
index ae4f7800f4b8f58a46b98eae49cd6245e84ce067..58e9bb275d0e8838dc9a5918ad085eb84eb3d50f 100644 (file)
@@ -27,7 +27,7 @@ int writehostsfiles(void)
        FILE *file, *hosts;
        struct keyvalue *kv;
        char hostname[STRING_SIZE];
-       char domainname[STRING_SIZE] = "";
+       char domainname[STRING_SIZE] = "localdomain";
        char commandstring[STRING_SIZE];
        char buffer[STRING_SIZE];
        
index 9c13717158f44f701d33da5886dbf36a262b7550..edd3c71af0d60560c64b0f41616640c1eb3c60cd 100644 (file)
@@ -112,6 +112,8 @@ int handlenetworking(void)
                        runcommandwithstatus("/etc/rc.d/init.d/network start",
                                ctr[TR_PULLING_NETWORK_UP]);
                }
+       } else {
+               rename_nics();
        }
        create_udev();
        return 1;
index cc33266d0cd36ccb26ee0d88f1404358ca6ed56c..b4474355ad53797c46608dda2cfd09a2d6aae549 100644 (file)
@@ -24,16 +24,16 @@ 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 \
        setaliases urlfilterctrl updxlratorctrl fireinfoctrl rebuildroutes \
-       getconntracktable
+       getconntracktable wirelessclient dnsmasqctrl torctrl
+SUID_UPDX = updxsetperms
 
 install : all
        install -m 755  $(PROGS) /usr/local/bin
@@ -85,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 $@
 
@@ -157,3 +151,12 @@ rebuildroutes: rebuildroutes.c setuid.o ../install+setup/libsmooth/varval.o
 
 getconntracktable: getconntracktable.c setuid.o ../install+setup/libsmooth/varval.o
        $(COMPILE) -I../install+setup/libsmooth/ getconntracktable.c setuid.o ../install+setup/libsmooth/varval.o -o $@
+
+wirelessclient: wirelessclient.c setuid.o ../install+setup/libsmooth/varval.o
+       $(COMPILE) -I../install+setup/libsmooth/ wirelessclient.c setuid.o ../install+setup/libsmooth/varval.o -o $@
+
+dnsmasqctrl: dnsmasqctrl.c setuid.o ../install+setup/libsmooth/varval.o
+       $(COMPILE) -I../install+setup/libsmooth/ dnsmasqctrl.c setuid.o ../install+setup/libsmooth/varval.o -o $@
+
+torctrl: torctrl.c setuid.o ../install+setup/libsmooth/varval.o
+       $(COMPILE) -I../install+setup/libsmooth/ torctrl.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);
 }
similarity index 57%
rename from src/misc-progs/outgoingfwctrl.c
rename to src/misc-progs/dnsmasqctrl.c
index 2d993d940f513ad6f69b8030cfdb17780455f334..8ac3360e0671d9c0d125a4aee1ea89b9694764f7 100644 (file)
@@ -18,7 +18,17 @@ 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");
+       if (argc < 2) {
+               fprintf(stderr, "\nNo argument given.\n\ndnsmasqctrl (restart)\n\n");
+               exit(1);
+       }
+
+       if (strcmp(argv[1], "restart") == 0) {
+               safe_system("/etc/rc.d/init.d/dnsmasq restart");
+       } else {
+               fprintf(stderr, "\nBad argument given.\n\ndnsmasqctrl (restart)\n\n");
+               exit(1);
+       }
+
        return 0;
 }
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;
+}
diff --git a/src/misc-progs/firewallctrl.c b/src/misc-progs/firewallctrl.c
new file mode 100644 (file)
index 0000000..0f17659
--- /dev/null
@@ -0,0 +1,25 @@
+/* This file is part of the IPFire Firewall.
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence.  See the file COPYING for details.
+ *
+ */
+
+#include <unistd.h>
+
+#include "setuid.h"
+
+int main(int argc, char *argv[]) {
+       if (!(initsetuid()))
+               exit(1);
+
+       int retval = safe_system("/usr/lib/firewall/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 633004e2331d4d7044c77f4cf9d5f1dc82938a30..eb3fc4984f22ccfe4e46a2f2f804a60bf4386559 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.
@@ -42,6 +44,14 @@ void usage() {
         fprintf (stderr, "\t\tI : Print Statusinfo\n");
 }
 
+static void ipsec_reload() {
+       /* Re-read all configuration files and secrets and
+        * reload the daemon (#10339).
+        */
+       safe_system("/usr/sbin/ipsec rereadall >/dev/null 2>&1");
+       safe_system("/usr/sbin/ipsec reload >/dev/null 2>&1");
+}
+
 /*
         ACCEPT the ipsec protocol ah, esp & udp (for nat traversal) on the specified interface
 */
@@ -144,8 +154,8 @@ void turn_connection_on(char *name, char *type) {
                 "/usr/sbin/ipsec down %s >/dev/null", name);
         safe_system(command);
 
-       // Reload the configuration into the daemon.
-       safe_system("/usr/sbin/ipsec reload >/dev/null 2>&1");
+       // Reload the configuration into the daemon (#10339).
+       ipsec_reload();
 
        // Bring the connection up again.
        snprintf(command, STRING_SIZE - 1,
@@ -169,7 +179,7 @@ void turn_connection_off (char *name) {
         safe_system(command);
 
        // Reload, so the connection is dropped.
-        safe_system("/usr/sbin/ipsec reload >/dev/null 2>&1");
+       ipsec_reload();
 }
 
 int main(int argc, char *argv[]) {
@@ -193,7 +203,7 @@ int main(int argc, char *argv[]) {
         }
 
         if (strcmp(argv[1], "R") == 0) {
-                safe_system("/usr/sbin/ipsec reload >/dev/null 2>&1");
+               ipsec_reload();
                 exit(0);
         }
 
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 e7b128a3f57bdc8bd852282a51121f55db38ca07..462ce77cce0b99019a09cc8c3df75161b5e94924 100644 (file)
@@ -4,8 +4,11 @@
 #include <unistd.h>
 #include <stdlib.h>
 #include <sys/types.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
 #include <fcntl.h>
 #include "setuid.h"
+#include "netutil.h"
 #include "libsmooth.h"
 
 #define noovpndebug
@@ -22,17 +25,20 @@ char enableblue[STRING_SIZE] = "off";
 char enableorange[STRING_SIZE] = "off";
 
 // consts
-char OVPNRED[STRING_SIZE] = "OVPN";
-char OVPNBLUE[STRING_SIZE] = "OVPN_BLUE_";
-char OVPNORANGE[STRING_SIZE] = "OVPN_ORANGE_";
-char WRAPPERVERSION[STRING_SIZE] = "ipfire-2.2.2";
+char OVPNINPUT[STRING_SIZE] = "OVPNINPUT";
+char OVPNBLOCK[STRING_SIZE] = "OVPNBLOCK";
+char OVPNNAT[STRING_SIZE] = "OVPNNAT";
+char WRAPPERVERSION[STRING_SIZE] = "ipfire-2.2.4";
 
 struct connection_struct {
        char name[STRING_SIZE];
        char type[STRING_SIZE];
        char proto[STRING_SIZE];
        char status[STRING_SIZE];
-       int port;
+       char local_subnet[STRING_SIZE];
+       char transfer_subnet[STRING_SIZE];
+       char role[STRING_SIZE];
+       char port[STRING_SIZE];
        struct connection_struct *next;
 };
 
@@ -73,10 +79,6 @@ void usage(void)
        printf("      removes current OpenVPN chains and rules and resets them according to the config\n");
        printf(" -sdo --start-daemon-only\n");
        printf("      starts OpenVPN daemon only\n");
-       printf(" -ccr --create-chains-and-rules\n");
-       printf("      creates chains and rules for OpenVPN\n");
-       printf(" -dcr --delete-chains-and-rules\n");
-       printf("      removes all chains for OpenVPN\n");
        exit(1);
 }
 
@@ -132,10 +134,16 @@ connection *getConnections() {
                                strcpy(conn_curr->name, result);
                        } else if (count == 4) {
                                strcpy(conn_curr->type, result);
+                       } else if (count == 7) {
+                               strcpy(conn_curr->role, result);
+                       } else if (count == 9) {
+                               strcpy(conn_curr->local_subnet, result);
+                       } else if (count == 28) {
+                               strcpy(conn_curr->transfer_subnet, result);
                        } else if (count == 29) {
                                strcpy(conn_curr->proto, result);
                        } else if (count == 30) {
-                               conn_curr->port = atoi(result);
+                               strcpy(conn_curr->port, result);
                        }
 
                        count++;
@@ -150,7 +158,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);
        }
 
@@ -161,8 +168,30 @@ int readPidFile(const char *pidfile) {
        return pid;
 }
 
+int readExternalAddress(char* address) {
+       FILE *fp = fopen("/var/ipfire/red/local-ipaddress", "r");
+       if (!fp)
+               goto ERROR;
+
+       int r = fscanf(fp, "%s", address);
+       fclose(fp);
+
+       if (r < 0)
+               goto ERROR;
+
+       /* In case the read IP address is not valid, we empty
+        * the content of address and return non-zero. */
+       if (!VALID_IP(address))
+               goto ERROR;
+
+       return 0;
+
+ERROR:
+       address = NULL;
+       return 1;
+}
+
 void ovpnInit(void) {
-       
        // Read OpenVPN configuration
        kv = initkeyvalues();
        if (!readkeyvalues(kv, CONFIG_ROOT "/ovpn/settings")) {
@@ -171,17 +200,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);
@@ -207,24 +233,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);
 }
 
@@ -235,111 +259,113 @@ void executeCommand(char *command) {
        safe_system(strncat(command, " >/dev/null 2>&1", 17));
 }
 
-void setChainRules(char *chain, char *interface, char *protocol, char *port)
-{
-       char str[STRING_SIZE];
+void addRule(const char *chain, const char *interface, const char *protocol, const char *port) {
+       char command[STRING_SIZE];
 
-       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);
+       snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A %s -i %s -p %s --dport %s -j ACCEPT",
+               chain, interface, protocol, port);
+       executeCommand(command);
 }
 
 void flushChain(char *chain) {
        char str[STRING_SIZE];
 
-       sprintf(str, "/sbin/iptables -F %sINPUT", chain);
-       executeCommand(str);
-       sprintf(str, "/sbin/iptables -F %sFORWARD", chain);
+       snprintf(str, STRING_SIZE - 1, "/sbin/iptables -F %s", chain);
        executeCommand(str);
-       safe_system(str);
 }
 
-void deleteChainReference(char *chain) {
+void flushChainNAT(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);
+       snprintf(str, STRING_SIZE - 1, "/sbin/iptables -t nat -F %s", chain);
        executeCommand(str);
-       safe_system(str);
 }
 
-void deleteChain(char *chain) {
-       char str[STRING_SIZE];
+char* calcTransferNetAddress(const connection* conn) {
+       char *subnetmask = strdup(conn->transfer_subnet);
+       char *address = strsep(&subnetmask, "/");
 
-       sprintf(str, "/sbin/iptables -X %sINPUT", chain);
-       executeCommand(str);
-       sprintf(str, "/sbin/iptables -X %sFORWARD", chain);
-       executeCommand(str);
-}
+       if ((address == NULL) || (subnetmask == NULL)) {
+               goto ERROR;
+       }
 
-void deleteAllChains(void) {
-       // not an elegant solution, but to avoid timing problems with undeleted chain references
-       deleteChainReference(OVPNRED);
-       deleteChainReference(OVPNBLUE);
-       deleteChainReference(OVPNORANGE);
-       flushChain(OVPNRED);
-       flushChain(OVPNBLUE);
-       flushChain(OVPNORANGE);
-       deleteChain(OVPNRED);
-       deleteChain(OVPNBLUE);
-       deleteChain(OVPNORANGE);
-}
+       in_addr_t _address    = inet_addr(address);
+       in_addr_t _subnetmask = inet_addr(subnetmask);
+       _address &= _subnetmask;
 
-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);
-}
+       if (strcmp(conn->role, "server") == 0) {
+               _address += 1 << 24;
+       } else if (strcmp(conn->role, "client") == 0) {
+               _address += 2 << 24;
+       } else {
+               goto ERROR;
+       }
 
-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);
+       struct in_addr address_info;
+       address_info.s_addr = _address;
+
+       return inet_ntoa(address_info);
+
+ERROR:
+       fprintf(stderr, "Could not determine transfer net address: %s\n", conn->name);
+
+       free(address);
+       return NULL;
 }
 
-void createAllChains(void) {
-       // create chain and chain references
-       if (!strcmp(enableorange, "on")) {
-               if (strlen(orangeif)) {
-                       createChain(OVPNORANGE);
-                       createChainReference(OVPNORANGE);
-               } else {
-                       fprintf(stderr, "OpenVPN enabled on orange but no orange interface found\n");
-                       //exit(1);
-               }
+char* getLocalSubnetAddress(const connection* conn) {
+       kv = initkeyvalues();
+       if (!readkeyvalues(kv, CONFIG_ROOT "/ethernet/settings")) {
+               fprintf(stderr, "Cannot read ethernet settings\n");
+               exit(1);
        }
 
-       if (!strcmp(enableblue, "on")) {
-               if (strlen(blueif)) {
-                       createChain(OVPNBLUE);
-                       createChainReference(OVPNBLUE);
-               } else {
-                       fprintf(stderr, "OpenVPN enabled on blue but no blue interface found\n");
-                       //exit(1);
-               }
+       const char *zones[] = {"GREEN", "BLUE", "ORANGE", NULL};
+       char *zone = NULL;
+
+       // Get net address of the local openvpn subnet.
+       char *subnetmask = strdup(conn->local_subnet);
+       char *address = strsep(&subnetmask, "/");
+
+       if ((address == NULL) || (subnetmask == NULL)) {
+               goto ERROR;
        }
 
-       if (!strcmp(enablered, "on")) {
-               if (strlen(redif)) {
-                       createChain(OVPNRED);
-                       createChainReference(OVPNRED);
-               } else {
-                       fprintf(stderr, "OpenVPN enabled on red but no red interface found\n");
-                       //exit(1);
+       in_addr_t _address    = inet_addr(address);
+       in_addr_t _subnetmask = inet_addr(subnetmask);
+
+       in_addr_t _netaddr    = (_address &  _subnetmask);
+       in_addr_t _broadcast  = (_address | ~_subnetmask);
+
+       char zone_address_key[STRING_SIZE];
+       char zone_address[STRING_SIZE];
+       in_addr_t zone_addr;
+
+       int i = 0;
+       while (zones[i]) {
+               zone = zones[i++];
+               snprintf(zone_address_key, STRING_SIZE, "%s_ADDRESS", zone);
+
+               if (!findkey(kv, zone_address_key, zone_address))
+                       continue;
+
+               zone_addr = inet_addr(zone_address);
+               if ((zone_addr > _netaddr) && (zone_addr < _broadcast)) {
+                       freekeyvalues(kv);
+
+                       return strdup(zone_address);
                }
        }
+
+ERROR:
+       fprintf(stderr, "Could not determine local subnet address: %s\n", conn->name);
+
+       freekeyvalues(kv);
+       return NULL;
 }
 
 void setFirewallRules(void) {
+       char command[STRING_SIZE];
        char protocol[STRING_SIZE] = "";
        char dport[STRING_SIZE] = "";
        char dovpnip[STRING_SIZE] = "";
@@ -364,33 +390,50 @@ 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);
+       flushChain(OVPNINPUT);
+       flushChain(OVPNBLOCK);
+       flushChainNAT(OVPNNAT);
 
        // set firewall rules
        if (!strcmp(enablered, "on") && strlen(redif))
-               setChainRules(OVPNRED, redif, protocol, dport);
+               addRule(OVPNINPUT, redif, protocol, dport);
        if (!strcmp(enableblue, "on") && strlen(blueif))
-               setChainRules(OVPNBLUE, blueif, protocol, dport);
+               addRule(OVPNINPUT, blueif, protocol, dport);
        if (!strcmp(enableorange, "on") && strlen(orangeif))
-               setChainRules(OVPNORANGE, orangeif, protocol, dport);
+               addRule(OVPNINPUT, orangeif, protocol, dport);
+
+       /* Allow ICMP error messages to pass. */
+       snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A %s -p icmp"
+               " -m conntrack --ctstate RELATED -j RETURN", OVPNBLOCK);
+       executeCommand(command);
 
        // read connection configuration
        connection *conn = getConnections();
 
        // set firewall rules for n2n connections
-       char command[STRING_SIZE];
+       char *local_subnet_address = NULL;
+       char *transfer_subnet_address = NULL;
        while (conn != NULL) {
                if (strcmp(conn->type, "net") == 0) {
-                       sprintf(command, "/sbin/iptables -A %sINPUT -i %s -p %s --dport %d -j ACCEPT",
-                               OVPNRED, redif, conn->proto, conn->port);
+                       addRule(OVPNINPUT, redif, conn->proto, conn->port);
+
+                       /* Block all communication from the transfer nets. */
+                       snprintf(command, STRING_SIZE - 1, "/sbin/iptables -A %s -s %s -j DROP",
+                               OVPNBLOCK, conn->transfer_subnet);
                        executeCommand(command);
+
+                       local_subnet_address = getLocalSubnetAddress(conn);
+                       transfer_subnet_address = calcTransferNetAddress(conn);
+
+                       if ((local_subnet_address) && (transfer_subnet_address)) {
+                               snprintf(command, STRING_SIZE - 1, "/sbin/iptables -t nat -A %s -s %s -j SNAT --to-source %s",
+                                       OVPNNAT, transfer_subnet_address, local_subnet_address);
+                               executeCommand(command);
+                       }
                }
 
                conn = conn->next;
@@ -415,7 +458,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 {
@@ -467,10 +510,18 @@ int startNet2Net(char *name) {
        // Make sure all firewall rules are up to date.
        setFirewallRules();
 
+       // Get the external IP address.
+       char address[STRING_SIZE] = "";
+       int r = readExternalAddress(address);
+       if (r) {
+               fprintf(stderr, "Could not read the external address\n");
+               exit(1);
+       }
+
        char command[STRING_SIZE];
        snprintf(command, STRING_SIZE-1, "/sbin/modprobe tun");
        executeCommand(command);
-       snprintf(command, STRING_SIZE-1, "/usr/sbin/openvpn --config %s", configfile);
+       snprintf(command, STRING_SIZE-1, "/usr/sbin/openvpn --local %s --config %s", address, configfile);
        executeCommand(command);
 
        return 0;
@@ -597,16 +648,10 @@ int main(int argc, char *argv[]) {
                        displayopenvpn();
                        return 0;
                }
-               else if( (strcmp(argv[1], "-dcr") == 0) || (strcmp(argv[1], "--delete-chains-and-rules") == 0) ) {
-                       deleteAllChains();
-                       return 0;
-               }
                else {
                        ovpnInit();
                        
                        if( (strcmp(argv[1], "-s") == 0) || (strcmp(argv[1], "--start") == 0) ) {
-                               deleteAllChains();
-                               createAllChains();
                                setFirewallRules();
                                startDaemon();
                                return 0;
@@ -625,20 +670,11 @@ int main(int argc, char *argv[]) {
                        }
                        else if( (strcmp(argv[1], "-r") == 0) || (strcmp(argv[1], "--restart") == 0) ) {
                                stopDaemon();
-                               deleteAllChains();
-                               createAllChains();
                                setFirewallRules();
                                startDaemon();
                                return 0;
                        }
                        else if( (strcmp(argv[1], "-fwr") == 0) || (strcmp(argv[1], "--firewall-rules") == 0) ) {
-                               deleteAllChains();
-                               createAllChains();
-                               setFirewallRules();
-                               return 0;
-                       }
-                       else if( (strcmp(argv[1], "-ccr") == 0) || (strcmp(argv[1], "--create-chains-and-rules") == 0) ) {
-                               createAllChains();
                                setFirewallRules();
                                return 0;
                        }
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 */
diff --git a/src/misc-progs/torctrl.c b/src/misc-progs/torctrl.c
new file mode 100644 (file)
index 0000000..39d4956
--- /dev/null
@@ -0,0 +1,36 @@
+/* This file is part of the IPFire Firewall.
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence.  See the file COPYING for details.
+ *
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include "setuid.h"
+
+int main(int argc, char *argv[]) {
+       if (!(initsetuid()))
+               exit(1);
+
+       if (argc < 2) {
+               fprintf(stderr, "\nNo argument given.\n\ntorctrl (restart|stop)\n\n");
+               exit(1);
+       }
+
+       if (strcmp(argv[1], "restart") == 0) {
+               safe_system("/etc/rc.d/init.d/tor reload-or-restart");
+
+       } else if (strcmp(argv[1], "stop") == 0) {
+               safe_system("/etc/rc.d/init.d/tor stop");
+
+       } else {
+               fprintf(stderr, "\nBad argument given.\n\ntorctrl (restart|stop)\n\n");
+               exit(1);
+       }
+
+       return 0;
+}
diff --git a/src/misc-progs/wirelessclient.c b/src/misc-progs/wirelessclient.c
new file mode 100644 (file)
index 0000000..c85e531
--- /dev/null
@@ -0,0 +1,26 @@
+/* IPFire helper program - wirelessclient
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence.  See the file COPYING for details.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "setuid.h"
+
+int main(int argc, char *argv[]) {
+       if (!(initsetuid()))
+               exit(1);
+
+       if (strcmp(argv[1], "restart") == 0) {
+               safe_system("/etc/rc.d/init.d/wlanclient restart >/dev/null 2>&1");
+               return 0;
+       }
+
+       if (strcmp(argv[1], "status") == 0) {
+               safe_system("/usr/sbin/wpa_cli status verbose");
+               return 0;
+       }
+
+       return 0;
+}
index 12b954baa3f8509ae088fa7990694fd2f2f6dc63..4a2e6dc862d371f6cb9647766de2a9fd809df11b 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 --wait -A WIRELESSINPUT -i %s -j DROP -m comment --comment 'DROP_Wirelessinput'", blue_dev);
+               safe_system(command);
+               snprintf(command, STRING_SIZE-1, "/sbin/iptables --wait -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 --wait -F WIRELESSINPUT > /dev/null 2> /dev/null");
+       safe_system("/sbin/iptables --wait -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 --wait -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 --wait -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 --wait -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 --wait -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 --wait -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 --wait -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 --wait -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 --wait -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 --wait -A WIRELESSINPUT -m mac --mac-source %s -i %s -j ACCEPT", macaddress, blue_dev);
+                                       safe_system(command);
+                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables --wait -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 --wait -A WIRELESSINPUT -s %s -i %s -j ACCEPT", ipaddress, blue_dev);
+                                       safe_system(command);
+                                       snprintf(command, STRING_SIZE-1, "/sbin/iptables --wait -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 --wait -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 --wait -A WIRELESSFORWARD -i %s -j LOG --log-prefix 'DROP_Wirelessforward'", blue_dev);
+               safe_system(command);
+       }
+
+       return 0;
 }
index 133b4950f49a860557f3492edfea7bf5802906fc..d14e0314da05e1a7bfd5377cd7811c1812e22afd 100644 (file)
@@ -305,7 +305,12 @@ sub selectmirror {
                }
        }
        logger("MIRROR INFO: $scount servers found in list");
-       
+
+       if ($scount eq 0) {
+               logger("MIRROR INFO: Could not find any servers. Falling back to main server $Conf::mainserver");
+               return ("HTTP", $Conf::mainserver, "/$Conf::version");
+       }
+
        ### Choose a random server and test if it is online
        #   If the check fails try a new server.
        #   This will never give up.
index be75bf5a00ca00d086554b6328ce4a5425462196..1c74f3c85ea45ab17dd0f3eb0486348e026a148e 100644 (file)
@@ -2,7 +2,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        #
index bcbb63168b1865e8f2c1a36b153eaf4c4f9a7378..cb0266bae8ff4f0825b14c87f4ae55fcc61807d9 100644 (file)
 ############################################################################
 #
 . /opt/pakfire/lib/functions.sh
+
+# Create Username and group.
+getent group avahi >/dev/null || groupadd -r avahi
+getent passwd avahi >/dev/null || \
+      useradd -r -g avahi -d /var/run/avahi-daemon -s /sbin/nologin \
+      -c "Avahi mDNS daemon" avahi
+
 extract_files
 ln -svf  ../init.d/avahi /etc/rc.d/rc3.d/S65avahi
 ln -svf  ../init.d/avahi /etc/rc.d/rc0.d/K35avahi
index c6b354c864175bc2955212addfb795d4c45331cd..8268992b9b51cedc6035f67127cb85910bcddb7d 100644 (file)
@@ -23,7 +23,4 @@
 #
 . /opt/pakfire/lib/functions.sh
 extract_files
-mysqladmin --user=root -pmysqlfire create cacti
-mysql --user=root -pmysqlfire cacti < /usr/share/cacti/cacti.sql
-mysql --user=root -pmysqlfire -e "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser';" mysql
 /etc/init.d/apache restart
index 682363b5c7e9037200c075d9e576a2d00e5c801c..6aed752a8ff3cf3df0f463ab623d104d2cac2eb1 100644 (file)
 . /opt/pakfire/lib/functions.sh
 extract_files
 restore_backup ${NAME}
+
+mkdir -p /usr/lib/check_mk_agent/plugins
+
+if [[ -x /usr/sbin/xinetd ]];
+then
+   if [[ -x /etc/init.d/xinetd ]]
+   then
+      /etc/init.d/xinetd restart
+   fi
+fi
index 66f4344eb1786eac3c513b706ffb80f00efa02be..3a0860afeb82b8725380cc6fb5a67f98b9e3481b 100644 (file)
 . /opt/pakfire/lib/functions.sh
 make_backup ${NAME}
 remove_files
+
+if [[ -x /usr/sbin/xinetd ]];
+then
+   if [[ -x /etc/init.d/xinetd ]]
+   then
+      /etc/init.d/xinetd restart
+   fi
+fi
index 31c5fecae2e3f1a09e312e3e2bbbcc0e7e03c373..b379c0cdf88042beba78d429b0d3ed502e1b2f28 100644 (file)
@@ -25,3 +25,7 @@
 extract_files
 restore_backup ${NAME}
 start_service --background ${NAME}
+
+ln -sf  ../init.d/fetchmail /etc/rc.d/rc0.d/K25fetchmail
+ln -sf  ../init.d/fetchmail /etc/rc.d/rc3.d/S35fetchmail
+ln -sf  ../init.d/fetchmail /etc/rc.d/rc6.d/K25fetchmail
index a7b8a5370f68e23809d3bd94083f0150545980cb..2d2606f9962ef65a771b58eeed9519989eb0078f 100644 (file)
@@ -25,3 +25,5 @@
 stop_service ${NAME}
 make_backup ${NAME}
 remove_files
+
+rm -f /etc/rc.d/rc*.d/*fetchmail
diff --git a/src/paks/igmpproxy/install.sh b/src/paks/igmpproxy/install.sh
new file mode 100644 (file)
index 0000000..31c5fec
--- /dev/null
@@ -0,0 +1,27 @@
+#!/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) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+extract_files
+restore_backup ${NAME}
+start_service --background ${NAME}
similarity index 92%
rename from src/paks/linux-xen/uninstall.sh
rename to src/paks/igmpproxy/uninstall.sh
index fe2316566e615cab27aec842e15e307a1b005fbf..eb6ff5f9b916cae8b5ba20e49179cc518e127773 100644 (file)
 # 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>.                        #
+# Copyright (C) 2007 IPFire-Team <info@ipfire.org>.                        #
 #                                                                          #
 ############################################################################
 #
 . /opt/pakfire/lib/functions.sh
+stop_service ${NAME}
+extract_backup_includes
+make_backup ${NAME}
 remove_files
-mv -f /boot/grub/grub-backup-2.6.32.*-xen.conf /boot/grub/grub.conf
index ab740512fea6ad97e8811fa89c408686a82d9345..043bd4528b2d41d904ae54d169d174becf9ef648 100644 (file)
@@ -64,13 +64,13 @@ echo "  kernel /vmlinuz-$KVER-ipfire-pae root=$ROOT panic=10$console $MOUNT" >>
 echo "  initrd /ipfirerd-$KVER-pae.img" >> /boot/grub/grub.conf
 echo "  savedefault $ENTRY" >> /boot/grub/grub.conf
 #
-# Made initramdisk
-#
-/sbin/dracut --force --verbose /boot/ipfirerd-$KVER-pae.img $KVER-ipfire-pae
-#
 # Create new module depency
 #
 depmod -a $KVER-ipfire-pae
+#
+# Made initramdisk
+#
+/sbin/dracut --force --verbose /boot/ipfirerd-$KVER-pae.img $KVER-ipfire-pae
 
 # Default pae and request a reboot if pae is supported
 if [ ! "$(grep "^flags.* pae " /proc/cpuinfo)" == "" ]; then
diff --git a/src/paks/linux-xen/install.sh b/src/paks/linux-xen/install.sh
deleted file mode 100644 (file)
index 39ac87c..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.60
-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
index 20a9924caa5170ac860fcc27b1dc79989f8d4a1d..a27d09ed6130782f77f27cd1e11164b461112d16 100644 (file)
 ############################################################################
 #
 . /opt/pakfire/lib/functions.sh
+
 extract_files
+
 ln -svf  ../init.d/mysql /etc/rc.d/rc0.d/K26mysql
 ln -svf  ../init.d/mysql /etc/rc.d/rc3.d/S34mysql
 ln -svf  ../init.d/mysql /etc/rc.d/rc6.d/K26mysql
-/etc/init.d/mysql start
+
+restore_backup "${NAME}"
+
+start_service "${NAME}"
+
 COUNTER=0
 while [ "$COUNTER" -lt "10" ]; do
        [ -e "/var/run/mysql/mysql.sock" ] && break
@@ -34,6 +40,8 @@ while [ "$COUNTER" -lt "10" ]; do
        sleep 5
        COUNTER=$(($COUNTER + 1))
 done 
+
 [ -e "/var/run/mysql/mysql.sock" ] || (echo "MySQL still noch running... Exiting."; \
        exit 1)
+
 mysqladmin -u root --password='' password 'mysqlfire'
index ed4ff02e82ee58a4031471104c360f4c3d0e14f6..a312b2e18eba15ce493bd5bdb753a1b78998787d 100644 (file)
 ############################################################################
 #
 . /opt/pakfire/lib/functions.sh
+
+# Stop the mysql service
+stop_service "${NAME}"
+
+# Make backup
+make_backup "${NAME}"
+
 remove_files
+
+# Remove start links.
 rm -rvf /etc/rc.d/rc*.d/*mysql
index 89c40d0d7c5d3dd57b5944f3af4977d5f8d76760..548b9dbd3b50244d0a112450d75d33639e757634 100644 (file)
 ############################################################################
 #
 . /opt/pakfire/lib/functions.sh
-./uninstall.sh
-./install.sh
+
+# Create backup include file if it is missing.
+if [ ! -e "/var/ipfire/backup/addons/includes/mysql" ]; then
+       cat <<EOF > /var/ipfire/backup/addons/includes/mysql
+/etc/my.cnf
+/srv/mysql
+EOF
+fi
+
+# Stop the mysql service
+stop_service "${NAME}"
+
+# Make backup
+make_backup "${NAME}"
+
+# Update files
+remove_files
+extract_files
+
+# Restore backup
+restore_backup "${NAME}"
+
+# Restart the service
+start_service "${NAME}"
+
+exit 0
index b8b18098aa29086fd3199307eadb41c3618ab676..56c23e2c26bdea3576128c2881ab25171122267d 100644 (file)
@@ -27,6 +27,8 @@ postalias /etc/aliases
 # Set postfix's hostname
 postconf -e "myhostname=$(hostname -f)"
 /etc/init.d/postfix start
-ln -sf  ../init.d/fetchmail /etc/rc.d/rc0.d/K25fetchmail
-ln -sf  ../init.d/fetchmail /etc/rc.d/rc3.d/S35fetchmail
-ln -sf  ../init.d/fetchmail /etc/rc.d/rc6.d/K25fetchmail
+
+# Enable autostart for postfix
+ln -sf  ../init.d/postfix /etc/rc.d/rc0.d/K25postfix
+ln -sf  ../init.d/postfix /etc/rc.d/rc3.d/S35postfix
+ln -sf  ../init.d/postfix /etc/rc.d/rc6.d/K25postfix
index 95516021498f344f18c4a9abe187d50a7f238672..43760856c6bf0714a0e7fc5aa919d5b80d41a6eb 100644 (file)
@@ -28,11 +28,26 @@ extract_files
 VERSION=$(cat /opt/pakfire/db/installed/meta-squidclamav | grep Release | cut -d" " -f2)
 
 if [ "$VERSION" -gt "10" ]; then
- restore_backup ${NAME}
      restore_backup ${NAME}
 fi
 
 if [ "$VERSION" -lt "11" ]; then
- sed -e "s|logfile.*|logfile /var/log/squid/squidclamav.log|g" /etc/squidclamav.conf
      sed -e "s|logfile.*|logfile /var/log/squid/squidclamav.log|g" /etc/squidclamav.conf
 fi
 
+if [ "$VERSION" -lt "16" ]; then
+       sed -i /etc/squidclamav.conf \
+               -e "s/proxy none//g" \
+               -e "s/^#squid_ip 127\.0\.0\.1/squid_ip 127\.0\.0\.1/g" \
+               -e "s/^#squid_port 3128/squid_port 800/g" \
+               -e "s/^#trust_cache 1/trust_cache 1/g"
+
+       # Fix permissions.
+       chmod 664 /etc/squidclamav.conf
+       chown root.nobody /etc/squidclamav.conf
+
+       # Regenerate configuration files.
+       perl /srv/web/ipfire/cgi-bin/proxy.cgi
+fi
 /etc/init.d/squid restart
diff --git a/src/paks/stunnel/install.sh b/src/paks/stunnel/install.sh
new file mode 100644 (file)
index 0000000..efd3a9f
--- /dev/null
@@ -0,0 +1,37 @@
+#!/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) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+
+# Create Username and group.
+getent passwd stunnel >/dev/null || \
+      useradd -u 51 -g stunnel -d /var/lib/stunnel -s /bin/false \
+      -c "stunnel Daemon" stunnel
+
+extract_files
+ln -svf  ../init.d/stunnel /etc/rc.d/rc3.d/S65stunnel
+ln -svf  ../init.d/stunnel /etc/rc.d/rc0.d/K35stunnel
+ln -svf  ../init.d/stunnel /etc/rc.d/rc6.d/K35stunnel
+
+restore_backup ${NAME}
+start_service --background ${NAME}
diff --git a/src/paks/stunnel/uninstall.sh b/src/paks/stunnel/uninstall.sh
new file mode 100644 (file)
index 0000000..11f46d1
--- /dev/null
@@ -0,0 +1,28 @@
+#!/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) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+stop_service ${NAME}
+make_backup ${NAME}
+remove_files
+rm -rf /etc/rc.d/rc*.d/*stunnel
similarity index 98%
rename from src/paks/icecc/update.sh
rename to src/paks/stunnel/update.sh
index 88f1f3a78a64ee3448963e2e84df1c4eb5a5f0dd..89c40d0d7c5d3dd57b5944f3af4977d5f8d76760 100644 (file)
@@ -22,5 +22,5 @@
 ############################################################################
 #
 . /opt/pakfire/lib/functions.sh
-/etc/init.d/icecream stop
+./uninstall.sh
 ./install.sh
diff --git a/src/paks/tor/install.sh b/src/paks/tor/install.sh
new file mode 100644 (file)
index 0000000..31c5fec
--- /dev/null
@@ -0,0 +1,27 @@
+#!/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) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+extract_files
+restore_backup ${NAME}
+start_service --background ${NAME}
diff --git a/src/paks/tor/uninstall.sh b/src/paks/tor/uninstall.sh
new file mode 100644 (file)
index 0000000..a7b8a53
--- /dev/null
@@ -0,0 +1,27 @@
+#!/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) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+stop_service ${NAME}
+make_backup ${NAME}
+remove_files
diff --git a/src/paks/tor/update.sh b/src/paks/tor/update.sh
new file mode 100644 (file)
index 0000000..675e7f5
--- /dev/null
@@ -0,0 +1,37 @@
+#!/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) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+
+# Create backup include file if it is missing.
+if [ ! -e "/var/ipfire/backup/addons/includes/tor" ]; then
+        cat <<EOF > /var/ipfire/backup/addons/includes/tor
+/etc/tor
+/var/ipfire/tor
+/var/lib/tor/fingerprint
+/var/lib/tor/keys
+EOF
+fi
+
+./uninstall.sh
+./install.sh
similarity index 97%
rename from src/paks/icecc/install.sh
rename to src/paks/vdr_vnsiserver5/install.sh
index fa9a22dd80999caef1613c2db824ea7edb623a4f..3bb613eab1d5938a39c4c91bdbda716f0c1684af 100644 (file)
@@ -22,5 +22,6 @@
 ############################################################################
 #
 . /opt/pakfire/lib/functions.sh
+stop_service vdr
 extract_files
-start_service --delay 90 --background icecream
+start_service --background vdr
diff --git a/src/paks/vdr_vnsiserver5/uninstall.sh b/src/paks/vdr_vnsiserver5/uninstall.sh
new file mode 100644 (file)
index 0000000..cb55446
--- /dev/null
@@ -0,0 +1,27 @@
+#!/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) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+stop_service vdr
+remove_files
+start_service vdr --background
similarity index 97%
rename from src/paks/icecc/uninstall.sh
rename to src/paks/vdr_vnsiserver5/update.sh
index 36331ef866af49bc2e954b1cb0b5c78c2170c1b4..89c40d0d7c5d3dd57b5944f3af4977d5f8d76760 100644 (file)
@@ -22,5 +22,5 @@
 ############################################################################
 #
 . /opt/pakfire/lib/functions.sh
-stop_service icecream
-remove_files
+./uninstall.sh
+./install.sh
diff --git a/src/paks/xinetd/install.sh b/src/paks/xinetd/install.sh
new file mode 100644 (file)
index 0000000..347fd36
--- /dev/null
@@ -0,0 +1,34 @@
+#!/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) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+extract_files
+restore_backup ${NAME}
+
+mkdir /etc/xinetd.d
+
+start_service --background ${NAME}
+
+ln -sf ../init.d/${NAME} /etc/rc.d/rc0.d/K30xinetd
+ln -sf ../init.d/${NAME} /etc/rc.d/rc3.d/S30xinetd
+ln -sf ../init.d/${NAME} /etc/rc.d/rc6.d/K30xinetd
diff --git a/src/paks/xinetd/uninstall.sh b/src/paks/xinetd/uninstall.sh
new file mode 100644 (file)
index 0000000..a7b8a53
--- /dev/null
@@ -0,0 +1,27 @@
+#!/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) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+stop_service ${NAME}
+make_backup ${NAME}
+remove_files
diff --git a/src/paks/xinetd/update.sh b/src/paks/xinetd/update.sh
new file mode 100644 (file)
index 0000000..89c40d0
--- /dev/null
@@ -0,0 +1,26 @@
+#!/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) 2007 IPFire-Team <info@ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+./uninstall.sh
+./install.sh
diff --git a/src/patches/arm-dont-require-distutils.patch b/src/patches/arm-dont-require-distutils.patch
new file mode 100644 (file)
index 0000000..1fe2b8a
--- /dev/null
@@ -0,0 +1,20 @@
+diff -Nur arm.vanilla/src/util/hostnames.py arm/src/util/hostnames.py
+--- arm.vanilla/src/util/hostnames.py  2012-04-29 05:59:24.000000000 +0200
++++ arm/src/util/hostnames.py  2013-07-31 17:59:19.245591564 +0200
+@@ -30,7 +30,6 @@
+ import threading
+ import itertools
+ import Queue
+-import distutils.sysconfig
+ from util import log, sysTools
+@@ -264,7 +263,7 @@
+     # 'socket.gethostbyaddr'. The following checks if the system has the
+     # gethostbyname_r function, which determines if python resolutions can be
+     # done in parallel or not. If so, this is preferable.
+-    isSocketResolutionParallel = distutils.sysconfig.get_config_var("HAVE_GETHOSTBYNAME_R")
++    isSocketResolutionParallel = True #distutils.sysconfig.get_config_var("HAVE_GETHOSTBYNAME_R")
+     self.useSocketResolution = CONFIG["queries.hostnames.useSocketModule"] and isSocketResolutionParallel
+     
+     for _ in range(CONFIG["queries.hostnames.poolSize"]):
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/bitstream-makefile.patch b/src/patches/bitstream-makefile.patch
new file mode 100644 (file)
index 0000000..35aeac8
--- /dev/null
@@ -0,0 +1,7 @@
+--- Makefile.org        2013-06-14 12:59:46.000000000 +0200
++++ Makefile    2013-06-14 13:00:01.000000000 +0200
+@@ -1,4 +1,4 @@
+-PREFIX ?= /usr/local
++PREFIX ?= /usr
+ INCLUDE = $(subst //,/,$(DESTDIR)/$(PREFIX)/include/bitstream)
+ VERSION = 1.0
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
diff --git a/src/patches/cacti/cacti-0.8.8a-legal.patch b/src/patches/cacti/cacti-0.8.8a-legal.patch
new file mode 100644 (file)
index 0000000..af09209
--- /dev/null
@@ -0,0 +1,8166 @@
+diff -up cacti-0.8.8a/include/js/jquery/colorpicker.js.legal cacti-0.8.8a/include/js/jquery/colorpicker.js
+--- cacti-0.8.8a/include/js/jquery/colorpicker.js.legal        2013-01-04 15:44:38.025416061 -0500
++++ cacti-0.8.8a/include/js/jquery/colorpicker.js      2013-01-04 15:43:12.644377988 -0500
+@@ -0,0 +1,484 @@
++/**
++ *
++ * Color picker
++ * Author: Stefan Petre www.eyecon.ro
++ * 
++ * Dual licensed under the MIT and GPL licenses
++ * 
++ */
++(function ($) {
++      var ColorPicker = function () {
++              var
++                      ids = {},
++                      inAction,
++                      charMin = 65,
++                      visible,
++                      tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
++                      defaults = {
++                              eventName: 'click',
++                              onShow: function () {},
++                              onBeforeShow: function(){},
++                              onHide: function () {},
++                              onChange: function () {},
++                              onSubmit: function () {},
++                              color: 'ff0000',
++                              livePreview: true,
++                              flat: false
++                      },
++                      fillRGBFields = function  (hsb, cal) {
++                              var rgb = HSBToRGB(hsb);
++                              $(cal).data('colorpicker').fields
++                                      .eq(1).val(rgb.r).end()
++                                      .eq(2).val(rgb.g).end()
++                                      .eq(3).val(rgb.b).end();
++                      },
++                      fillHSBFields = function  (hsb, cal) {
++                              $(cal).data('colorpicker').fields
++                                      .eq(4).val(hsb.h).end()
++                                      .eq(5).val(hsb.s).end()
++                                      .eq(6).val(hsb.b).end();
++                      },
++                      fillHexFields = function (hsb, cal) {
++                              $(cal).data('colorpicker').fields
++                                      .eq(0).val(HSBToHex(hsb)).end();
++                      },
++                      setSelector = function (hsb, cal) {
++                              $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
++                              $(cal).data('colorpicker').selectorIndic.css({
++                                      left: parseInt(150 * hsb.s/100, 10),
++                                      top: parseInt(150 * (100-hsb.b)/100, 10)
++                              });
++                      },
++                      setHue = function (hsb, cal) {
++                              $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
++                      },
++                      setCurrentColor = function (hsb, cal) {
++                              $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
++                      },
++                      setNewColor = function (hsb, cal) {
++                              $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
++                      },
++                      keyDown = function (ev) {
++                              var pressedKey = ev.charCode || ev.keyCode || -1;
++                              if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
++                                      return false;
++                              }
++                              var cal = $(this).parent().parent();
++                              if (cal.data('colorpicker').livePreview === true) {
++                                      change.apply(this);
++                              }
++                      },
++                      change = function (ev) {
++                              var cal = $(this).parent().parent(), col;
++                              if (this.parentNode.className.indexOf('_hex') > 0) {
++                                      cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
++                              } else if (this.parentNode.className.indexOf('_hsb') > 0) {
++                                      cal.data('colorpicker').color = col = fixHSB({
++                                              h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
++                                              s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
++                                              b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
++                                      });
++                              } else {
++                                      cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
++                                              r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
++                                              g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
++                                              b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
++                                      }));
++                              }
++                              if (ev) {
++                                      fillRGBFields(col, cal.get(0));
++                                      fillHexFields(col, cal.get(0));
++                                      fillHSBFields(col, cal.get(0));
++                              }
++                              setSelector(col, cal.get(0));
++                              setHue(col, cal.get(0));
++                              setNewColor(col, cal.get(0));
++                              cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
++                      },
++                      blur = function (ev) {
++                              var cal = $(this).parent().parent();
++                              cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
++                      },
++                      focus = function () {
++                              charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
++                              $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
++                              $(this).parent().addClass('colorpicker_focus');
++                      },
++                      downIncrement = function (ev) {
++                              var field = $(this).parent().find('input').focus();
++                              var current = {
++                                      el: $(this).parent().addClass('colorpicker_slider'),
++                                      max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
++                                      y: ev.pageY,
++                                      field: field,
++                                      val: parseInt(field.val(), 10),
++                                      preview: $(this).parent().parent().data('colorpicker').livePreview                                      
++                              };
++                              $(document).bind('mouseup', current, upIncrement);
++                              $(document).bind('mousemove', current, moveIncrement);
++                      },
++                      moveIncrement = function (ev) {
++                              ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
++                              if (ev.data.preview) {
++                                      change.apply(ev.data.field.get(0), [true]);
++                              }
++                              return false;
++                      },
++                      upIncrement = function (ev) {
++                              change.apply(ev.data.field.get(0), [true]);
++                              ev.data.el.removeClass('colorpicker_slider').find('input').focus();
++                              $(document).unbind('mouseup', upIncrement);
++                              $(document).unbind('mousemove', moveIncrement);
++                              return false;
++                      },
++                      downHue = function (ev) {
++                              var current = {
++                                      cal: $(this).parent(),
++                                      y: $(this).offset().top
++                              };
++                              current.preview = current.cal.data('colorpicker').livePreview;
++                              $(document).bind('mouseup', current, upHue);
++                              $(document).bind('mousemove', current, moveHue);
++                      },
++                      moveHue = function (ev) {
++                              change.apply(
++                                      ev.data.cal.data('colorpicker')
++                                              .fields
++                                              .eq(4)
++                                              .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
++                                              .get(0),
++                                      [ev.data.preview]
++                              );
++                              return false;
++                      },
++                      upHue = function (ev) {
++                              fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
++                              fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
++                              $(document).unbind('mouseup', upHue);
++                              $(document).unbind('mousemove', moveHue);
++                              return false;
++                      },
++                      downSelector = function (ev) {
++                              var current = {
++                                      cal: $(this).parent(),
++                                      pos: $(this).offset()
++                              };
++                              current.preview = current.cal.data('colorpicker').livePreview;
++                              $(document).bind('mouseup', current, upSelector);
++                              $(document).bind('mousemove', current, moveSelector);
++                      },
++                      moveSelector = function (ev) {
++                              change.apply(
++                                      ev.data.cal.data('colorpicker')
++                                              .fields
++                                              .eq(6)
++                                              .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
++                                              .end()
++                                              .eq(5)
++                                              .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
++                                              .get(0),
++                                      [ev.data.preview]
++                              );
++                              return false;
++                      },
++                      upSelector = function (ev) {
++                              fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
++                              fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
++                              $(document).unbind('mouseup', upSelector);
++                              $(document).unbind('mousemove', moveSelector);
++                              return false;
++                      },
++                      enterSubmit = function (ev) {
++                              $(this).addClass('colorpicker_focus');
++                      },
++                      leaveSubmit = function (ev) {
++                              $(this).removeClass('colorpicker_focus');
++                      },
++                      clickSubmit = function (ev) {
++                              var cal = $(this).parent();
++                              var col = cal.data('colorpicker').color;
++                              cal.data('colorpicker').origColor = col;
++                              setCurrentColor(col, cal.get(0));
++                              cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
++                      },
++                      show = function (ev) {
++                              var cal = $('#' + $(this).data('colorpickerId'));
++                              cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
++                              var pos = $(this).offset();
++                              var viewPort = getViewport();
++                              var top = pos.top + this.offsetHeight;
++                              var left = pos.left;
++                              if (top + 176 > viewPort.t + viewPort.h) {
++                                      top -= this.offsetHeight + 176;
++                              }
++                              if (left + 356 > viewPort.l + viewPort.w) {
++                                      left -= 356;
++                              }
++                              cal.css({left: left + 'px', top: top + 'px'});
++                              if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
++                                      cal.show();
++                              }
++                              $(document).bind('mousedown', {cal: cal}, hide);
++                              return false;
++                      },
++                      hide = function (ev) {
++                              if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
++                                      if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
++                                              ev.data.cal.hide();
++                                      }
++                                      $(document).unbind('mousedown', hide);
++                              }
++                      },
++                      isChildOf = function(parentEl, el, container) {
++                              if (parentEl == el) {
++                                      return true;
++                              }
++                              if (parentEl.contains) {
++                                      return parentEl.contains(el);
++                              }
++                              if ( parentEl.compareDocumentPosition ) {
++                                      return !!(parentEl.compareDocumentPosition(el) & 16);
++                              }
++                              var prEl = el.parentNode;
++                              while(prEl && prEl != container) {
++                                      if (prEl == parentEl)
++                                              return true;
++                                      prEl = prEl.parentNode;
++                              }
++                              return false;
++                      },
++                      getViewport = function () {
++                              var m = document.compatMode == 'CSS1Compat';
++                              return {
++                                      l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
++                                      t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
++                                      w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
++                                      h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
++                              };
++                      },
++                      fixHSB = function (hsb) {
++                              return {
++                                      h: Math.min(360, Math.max(0, hsb.h)),
++                                      s: Math.min(100, Math.max(0, hsb.s)),
++                                      b: Math.min(100, Math.max(0, hsb.b))
++                              };
++                      }, 
++                      fixRGB = function (rgb) {
++                              return {
++                                      r: Math.min(255, Math.max(0, rgb.r)),
++                                      g: Math.min(255, Math.max(0, rgb.g)),
++                                      b: Math.min(255, Math.max(0, rgb.b))
++                              };
++                      },
++                      fixHex = function (hex) {
++                              var len = 6 - hex.length;
++                              if (len > 0) {
++                                      var o = [];
++                                      for (var i=0; i<len; i++) {
++                                              o.push('0');
++                                      }
++                                      o.push(hex);
++                                      hex = o.join('');
++                              }
++                              return hex;
++                      }, 
++                      HexToRGB = function (hex) {
++                              var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
++                              return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
++                      },
++                      HexToHSB = function (hex) {
++                              return RGBToHSB(HexToRGB(hex));
++                      },
++                      RGBToHSB = function (rgb) {
++                              var hsb = {
++                                      h: 0,
++                                      s: 0,
++                                      b: 0
++                              };
++                              var min = Math.min(rgb.r, rgb.g, rgb.b);
++                              var max = Math.max(rgb.r, rgb.g, rgb.b);
++                              var delta = max - min;
++                              hsb.b = max;
++                              if (max != 0) {
++                                      
++                              }
++                              hsb.s = max != 0 ? 255 * delta / max : 0;
++                              if (hsb.s != 0) {
++                                      if (rgb.r == max) {
++                                              hsb.h = (rgb.g - rgb.b) / delta;
++                                      } else if (rgb.g == max) {
++                                              hsb.h = 2 + (rgb.b - rgb.r) / delta;
++                                      } else {
++                                              hsb.h = 4 + (rgb.r - rgb.g) / delta;
++                                      }
++                              } else {
++                                      hsb.h = -1;
++                              }
++                              hsb.h *= 60;
++                              if (hsb.h < 0) {
++                                      hsb.h += 360;
++                              }
++                              hsb.s *= 100/255;
++                              hsb.b *= 100/255;
++                              return hsb;
++                      },
++                      HSBToRGB = function (hsb) {
++                              var rgb = {};
++                              var h = Math.round(hsb.h);
++                              var s = Math.round(hsb.s*255/100);
++                              var v = Math.round(hsb.b*255/100);
++                              if(s == 0) {
++                                      rgb.r = rgb.g = rgb.b = v;
++                              } else {
++                                      var t1 = v;
++                                      var t2 = (255-s)*v/255;
++                                      var t3 = (t1-t2)*(h%60)/60;
++                                      if(h==360) h = 0;
++                                      if(h<60) {rgb.r=t1;     rgb.b=t2; rgb.g=t2+t3}
++                                      else if(h<120) {rgb.g=t1; rgb.b=t2;     rgb.r=t1-t3}
++                                      else if(h<180) {rgb.g=t1; rgb.r=t2;     rgb.b=t2+t3}
++                                      else if(h<240) {rgb.b=t1; rgb.r=t2;     rgb.g=t1-t3}
++                                      else if(h<300) {rgb.b=t1; rgb.g=t2;     rgb.r=t2+t3}
++                                      else if(h<360) {rgb.r=t1; rgb.g=t2;     rgb.b=t1-t3}
++                                      else {rgb.r=0; rgb.g=0; rgb.b=0}
++                              }
++                              return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
++                      },
++                      RGBToHex = function (rgb) {
++                              var hex = [
++                                      rgb.r.toString(16),
++                                      rgb.g.toString(16),
++                                      rgb.b.toString(16)
++                              ];
++                              $.each(hex, function (nr, val) {
++                                      if (val.length == 1) {
++                                              hex[nr] = '0' + val;
++                                      }
++                              });
++                              return hex.join('');
++                      },
++                      HSBToHex = function (hsb) {
++                              return RGBToHex(HSBToRGB(hsb));
++                      },
++                      restoreOriginal = function () {
++                              var cal = $(this).parent();
++                              var col = cal.data('colorpicker').origColor;
++                              cal.data('colorpicker').color = col;
++                              fillRGBFields(col, cal.get(0));
++                              fillHexFields(col, cal.get(0));
++                              fillHSBFields(col, cal.get(0));
++                              setSelector(col, cal.get(0));
++                              setHue(col, cal.get(0));
++                              setNewColor(col, cal.get(0));
++                      };
++              return {
++                      init: function (opt) {
++                              opt = $.extend({}, defaults, opt||{});
++                              if (typeof opt.color == 'string') {
++                                      opt.color = HexToHSB(opt.color);
++                              } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
++                                      opt.color = RGBToHSB(opt.color);
++                              } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
++                                      opt.color = fixHSB(opt.color);
++                              } else {
++                                      return this;
++                              }
++                              return this.each(function () {
++                                      if (!$(this).data('colorpickerId')) {
++                                              var options = $.extend({}, opt);
++                                              options.origColor = opt.color;
++                                              var id = 'collorpicker_' + parseInt(Math.random() * 1000);
++                                              $(this).data('colorpickerId', id);
++                                              var cal = $(tpl).attr('id', id);
++                                              if (options.flat) {
++                                                      cal.appendTo(this).show();
++                                              } else {
++                                                      cal.appendTo(document.body);
++                                              }
++                                              options.fields = cal
++                                                                                      .find('input')
++                                                                                              .bind('keyup', keyDown)
++                                                                                              .bind('change', change)
++                                                                                              .bind('blur', blur)
++                                                                                              .bind('focus', focus);
++                                              cal
++                                                      .find('span').bind('mousedown', downIncrement).end()
++                                                      .find('>div.colorpicker_current_color').bind('click', restoreOriginal);
++                                              options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
++                                              options.selectorIndic = options.selector.find('div div');
++                                              options.el = this;
++                                              options.hue = cal.find('div.colorpicker_hue div');
++                                              cal.find('div.colorpicker_hue').bind('mousedown', downHue);
++                                              options.newColor = cal.find('div.colorpicker_new_color');
++                                              options.currentColor = cal.find('div.colorpicker_current_color');
++                                              cal.data('colorpicker', options);
++                                              cal.find('div.colorpicker_submit')
++                                                      .bind('mouseenter', enterSubmit)
++                                                      .bind('mouseleave', leaveSubmit)
++                                                      .bind('click', clickSubmit);
++                                              fillRGBFields(options.color, cal.get(0));
++                                              fillHSBFields(options.color, cal.get(0));
++                                              fillHexFields(options.color, cal.get(0));
++                                              setHue(options.color, cal.get(0));
++                                              setSelector(options.color, cal.get(0));
++                                              setCurrentColor(options.color, cal.get(0));
++                                              setNewColor(options.color, cal.get(0));
++                                              if (options.flat) {
++                                                      cal.css({
++                                                              position: 'relative',
++                                                              display: 'block'
++                                                      });
++                                              } else {
++                                                      $(this).bind(options.eventName, show);
++                                              }
++                                      }
++                              });
++                      },
++                      showPicker: function() {
++                              return this.each( function () {
++                                      if ($(this).data('colorpickerId')) {
++                                              show.apply(this);
++                                      }
++                              });
++                      },
++                      hidePicker: function() {
++                              return this.each( function () {
++                                      if ($(this).data('colorpickerId')) {
++                                              $('#' + $(this).data('colorpickerId')).hide();
++                                      }
++                              });
++                      },
++                      setColor: function(col) {
++                              if (typeof col == 'string') {
++                                      col = HexToHSB(col);
++                              } else if (col.r != undefined && col.g != undefined && col.b != undefined) {
++                                      col = RGBToHSB(col);
++                              } else if (col.h != undefined && col.s != undefined && col.b != undefined) {
++                                      col = fixHSB(col);
++                              } else {
++                                      return this;
++                              }
++                              return this.each(function(){
++                                      if ($(this).data('colorpickerId')) {
++                                              var cal = $('#' + $(this).data('colorpickerId'));
++                                              cal.data('colorpicker').color = col;
++                                              cal.data('colorpicker').origColor = col;
++                                              fillRGBFields(col, cal.get(0));
++                                              fillHSBFields(col, cal.get(0));
++                                              fillHexFields(col, cal.get(0));
++                                              setHue(col, cal.get(0));
++                                              setSelector(col, cal.get(0));
++                                              setCurrentColor(col, cal.get(0));
++                                              setNewColor(col, cal.get(0));
++                                      }
++                              });
++                      }
++              };
++      }();
++      $.fn.extend({
++              ColorPicker: ColorPicker.init,
++              ColorPickerHide: ColorPicker.hidePicker,
++              ColorPickerShow: ColorPicker.showPicker,
++              ColorPickerSetColor: ColorPicker.setColor
++      });
++})(jQuery)
+\ No newline at end of file
+diff -up cacti-0.8.8a/include/js/jquery/jquery.cookie.js.legal cacti-0.8.8a/include/js/jquery/jquery.cookie.js
+--- cacti-0.8.8a/include/js/jquery/jquery.cookie.js.legal      2013-01-04 15:44:38.027416060 -0500
++++ cacti-0.8.8a/include/js/jquery/jquery.cookie.js    2013-01-04 15:43:12.644377988 -0500
+@@ -0,0 +1,91 @@
++/*jslint browser: true */ /*global jQuery: true */
++
++/**
++ * jQuery Cookie plugin
++ *
++ * Copyright (c) 2010 Klaus Hartl (stilbuero.de)
++ * Dual licensed under the MIT and GPL licenses:
++ * http://www.opensource.org/licenses/mit-license.php
++ * http://www.gnu.org/licenses/gpl.html
++ *
++ */
++
++// TODO JsDoc
++
++/**
++ * Create a cookie with the given key and value and other optional parameters.
++ *
++ * @example $.cookie('the_cookie', 'the_value');
++ * @desc Set the value of a cookie.
++ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
++ * @desc Create a cookie with all available options.
++ * @example $.cookie('the_cookie', 'the_value');
++ * @desc Create a session cookie.
++ * @example $.cookie('the_cookie', null);
++ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
++ *       used when the cookie was set.
++ *
++ * @param String key The key of the cookie.
++ * @param String value The value of the cookie.
++ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
++ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
++ *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
++ *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
++ *                             when the the browser exits.
++ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
++ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
++ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
++ *                        require a secure protocol (like HTTPS).
++ * @type undefined
++ *
++ * @name $.cookie
++ * @cat Plugins/Cookie
++ * @author Klaus Hartl/klaus.hartl@stilbuero.de
++ */
++
++/**
++ * Get the value of a cookie with the given key.
++ *
++ * @example $.cookie('the_cookie');
++ * @desc Get the value of a cookie.
++ *
++ * @param String key The key of the cookie.
++ * @return The value of the cookie.
++ * @type String
++ *
++ * @name $.cookie
++ * @cat Plugins/Cookie
++ * @author Klaus Hartl/klaus.hartl@stilbuero.de
++ */
++jQuery.cookie = function (key, value, options) {
++
++    // key and at least value given, set cookie...
++    if (arguments.length > 1 && String(value) !== "[object Object]") {
++        options = jQuery.extend({}, options);
++
++        if (value === null || value === undefined) {
++            options.expires = -1;
++        }
++
++        if (typeof options.expires === 'number') {
++            var days = options.expires, t = options.expires = new Date();
++            t.setDate(t.getDate() + days);
++        }
++
++        value = String(value);
++
++        return (document.cookie = [
++            encodeURIComponent(key), '=',
++            options.raw ? value : encodeURIComponent(value),
++            options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
++            options.path ? '; path=' + options.path : '',
++            options.domain ? '; domain=' + options.domain : '',
++            options.secure ? '; secure' : ''
++        ].join(''));
++    }
++
++    // key and possibly options given, get cookie...
++    options = value || {};
++    var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
++    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
++};
+diff -up cacti-0.8.8a/include/js/jquery/jquery.dd.js.legal cacti-0.8.8a/include/js/jquery/jquery.dd.js
+--- cacti-0.8.8a/include/js/jquery/jquery.dd.js.legal  2013-01-04 15:44:38.030416069 -0500
++++ cacti-0.8.8a/include/js/jquery/jquery.dd.js        2013-01-04 15:43:12.644377988 -0500
+@@ -0,0 +1,11 @@
++// MSDropDown - jquery.dd.js
++// author: Marghoob Suleman - Search me on google
++// Date: 12th Aug, 2009, {18 Dec, 2010 (2.36)}
++// Version: 2.37.5 {date: 17 June, 2011}
++// Revision: 34
++// web: www.giftlelo.com | www.marghoobsuleman.com
++/*
++// msDropDown is free jQuery Plugin: you can redistribute it and/or modify
++// it under the terms of the either the MIT License or the Gnu General Public License (GPL) Version 2
++*/
++;eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(5($){3 1L="";3 3m=5(p,q){3 r=p;3 s=1a;3 q=$.3n({1d:4c,2q:7,3o:23,1U:6,1M:4d,3p:\'28\',1N:15,3q:\'4e\',2I:\'\',1j:\'\'},q);1a.1V=2r 3r();3 u="";3 v={};v.2J=6;v.2s=15;v.2t=1o;3 x=15;3 y={2K:\'4f\',1O:\'4g\',1H:\'4h\',29:\'4i\',1h:\'4j\',2L:\'4k\',2M:\'4l\',4m:\'4n\',2u:\'4o\',3s:\'4p\'};3 z={28:q.3p,2N:\'2N\',2O:\'2O\',2P:\'2P\',1t:\'1t\',1k:.30,2a:\'2a\',2v:\'2v\',2w:\'2w\',11:\'11\'};3 A={3t:"2x,2Q,2R,1P,2y,2z,1u,1B,2A,1Q,4q,1W,2S",18:"1C,1v,1k,4r"};1a.1R=2r 3r();3 B=$(r).18("1b");4(1w(B)=="14"||B.1c<=0){B="4s"+$.1S.3u++;$(r).2B("1b",B)};3 C=$(r).18("1j");q.1j+=(C==14)?"":C;3 D=$(r).3v();x=($(r).18("1C")>1||$(r).18("1v")==6)?6:15;4(x){q.2q=$(r).18("1C")};3 E={};3 F=0;3 G=15;3 H;3 I={};3 J=5(a){4(1w(I[a])=="14"){I[a]=1p.4t(a)}12 I[a]};3 K=5(a){12 B+y[a]};3 L=5(a){3 b=a;3 c=$(b).18("1j");12 c};3 M=5(a){3 b=$("#"+B+" 2T:11");4(b.1c>1){1D(3 i=0;i<b.1c;i++){4(a==b[i].1i){12 6}}}19 4(b.1c==1){4(b[0].1i==a){12 6}};12 15};3 N=5(a,b,c,d){3 e="";3 f=(d=="2U")?K("2M"):K("2L");3 g=(d=="2U")?f+"2V"+(b)+"2V"+(c):f+"2V"+(b);3 h="";3 i="";4(q.1N!=15){i=\' \'+q.1N+\' \'+a.3w}19{h=$(a).18("1X");h=(h.1c==0)?"":\'<3x 3y="\'+h+\'" 3z="3A" /> \'};3 j=$(a).1q();3 k=$(a).4u();3 l=($(a).18("1k")==6)?"1k":"2W";E[g]={1I:h+j,2b:k,1q:j,1i:a.1i,1b:g};3 m=L(a);4(M(a.1i)==6){e+=\'<a 3B="3C:3D(0);" 1r="\'+z.11+\' \'+l+i+\'"\'}19{e+=\'<a  3B="3C:3D(0);" 1r="\'+l+i+\'"\'};4(m!==15&&m!==14){e+=" 1j=\'"+m+"\'"};e+=\' 1b="\'+g+\'">\';e+=h+\'<1x 1r="\'+z.1t+\'">\'+j+\'</1x></a>\';12 e};3 O=5(t){3 b=t.3E();4(b.1c==0)12-1;3 a="";1D(3 i 2c E){3 c=E[i].1q.3E();4(c.3F(0,b.1c)==b){a+="#"+E[i].1b+", "}};12(a=="")?-1:a};3 P=5(){3 f=D;4(f.1c==0)12"";3 g="";3 h=K("2L");3 i=K("2M");f.2X(5(c){3 d=f[c];4(d.4v=="4w"){g+="<1y 1r=\'4x\'>";g+="<1x 1j=\'3G-4y:4z;3G-1j:4A; 4B:4C;\'>"+$(d).18("4D")+"</1x>";3 e=$(d).3v();e.2X(5(a){3 b=e[a];g+=N(b,c,a,"2U")});g+="</1y>"}19{g+=N(d,c,"","")}});12 g};3 Q=5(){3 a=K("1O");3 b=K("1h");3 c=q.1j;1Y="";1Y+=\'<1y 1b="\'+b+\'" 1r="\'+z.2P+\'"\';4(!x){1Y+=(c!="")?\' 1j="\'+c+\'"\':\'\'}19{1Y+=(c!="")?\' 1j="2C-1m:4E 4F #4G;1s:2d;1n:2Y;\'+c+\'"\':\'\'};1Y+=\'>\';12 1Y};3 R=5(){3 a=K("1H");3 b=K("2u");3 c=K("29");3 d=K("3s");3 e="";3 f="";4(J(B).1E.1c>0){e=$("#"+B+" 2T:11").1q();f=$("#"+B+" 2T:11").18("1X")};f=(f.1c==0||f==14||q.1U==15||q.1N!=15)?"":\'<3x 3y="\'+f+\'" 3z="3A" /> \';3 g=\'<1y 1b="\'+a+\'" 1r="\'+z.2N+\'"\';g+=\'>\';g+=\'<1x 1b="\'+b+\'" 1r="\'+z.2O+\'"></1x><1x 1r="\'+z.1t+\'" 1b="\'+c+\'">\'+f+\'<1x 1r="\'+z.1t+\'">\'+e+\'</1x></1x></1y>\';12 g};3 S=5(){3 c=K("1h");$("#"+c+" a.2W").1J("1P");$("#"+c+" a.2W").1e("1P",5(a){a.1Z();V(1a);21();4(!x){$("#"+c).1J("1B");X(15);3 b=(q.1U==15)?$(1a).1q():$(1a).1I();1T(b);s.2e()}})};3 T=5(){3 d=15;3 e=K("1O");3 f=K("1H");3 g=K("29");3 h=K("1h");3 i=K("2u");3 j=$("#"+B).2Z();j=j+2;3 k=q.1j;4($("#"+e).1c>0){$("#"+e).2D();d=6};3 l=\'<1y 1b="\'+e+\'" 1r="\'+z.28+\'"\';l+=(k!="")?\' 1j="\'+k+\'"\':\'\';l+=\'>\';l+=R();l+=Q();l+=P();l+="</1y>";l+="</1y>";4(d==6){3 m=K("2K");$("#"+m).31(l)}19{$("#"+B).31(l)};4(x){3 f=K("1H");$("#"+f).2f()};$("#"+e).9("2Z",j+"1z");$("#"+h).9("2Z",(j-2)+"1z");4(D.1c>q.2q){3 n=2g($("#"+h+" a:3H").9("2h-3I"))+2g($("#"+h+" a:3H").9("2h-1m"));3 o=((q.3o)*q.2q)-n;$("#"+h).9("1d",o+"1z")}19 4(x){3 o=$("#"+B).1d();$("#"+h).9("1d",o+"1z")};4(d==15){3J();W(B)};4($("#"+B).18("1k")==6){$("#"+e).9("2E",z.1k)};Z();$("#"+f).1e("1B",5(a){32(1)});$("#"+f).1e("1Q",5(a){32(0)});S();$("#"+h+" a.1k").9("2E",z.1k);4(x){$("#"+h).1e("1B",5(c){4(!v.2s){v.2s=6;$(1p).1e("1W",5(a){3 b=a.3K;v.2t=b;4(b==39||b==40){a.1Z();a.2i();33();21()};4(b==37||b==38){a.1Z();a.2i();34();21()}})}})};$("#"+h).1e("1Q",5(a){X(15);$(1p).1J("1W");v.2s=15;v.2t=1o});$("#"+f).1e("1P",5(b){X(15);4($("#"+h+":2j").1c==1){$("#"+h).1J("1B")}19{$("#"+h).1e("1B",5(a){X(6)});s.3L()}});$("#"+f).1e("1Q",5(a){X(15)});4(q.1U&&q.1N!=15){2k()}};3 U=5(a){1D(3 i 2c E){4(E[i].1i==a){12 E[i]}};12-1};3 V=5(a){3 b=K("1h");4($("#"+b+" a."+z.11).1c==1){u=$("#"+b+" a."+z.11).1q()};4(!x){$("#"+b+" a."+z.11).1K(z.11)};3 c=$("#"+b+" a."+z.11).18("1b");4(c!=14){3 d=(v.22==14||v.22==1o)?E[c].1i:v.22};4(a&&!x){$(a).1F(z.11)};4(x){3 e=v.2t;4($("#"+B).18("1v")==6){4(e==17){v.22=E[$(a).18("1b")].1i;$(a).4H(z.11)}19 4(e==16){$("#"+b+" a."+z.11).1K(z.11);$(a).1F(z.11);3 f=$(a).18("1b");3 g=E[f].1i;1D(3 i=35.4I(d,g);i<=35.4J(d,g);i++){$("#"+U(i).1b).1F(z.11)}}19{$("#"+b+" a."+z.11).1K(z.11);$(a).1F(z.11);v.22=E[$(a).18("1b")].1i}}19{$("#"+b+" a."+z.11).1K(z.11);$(a).1F(z.11);v.22=E[$(a).18("1b")].1i}}};3 W=5(a){3 b=a;J(b).4K=5(e){$("#"+b).1S(q)}};3 X=5(a){v.2J=a};3 Y=5(){12 v.2J};3 Z=5(){3 b=K("1O");3 c=A.3t.4L(",");1D(3 d=0;d<c.1c;d++){3 e=c[d];3 f=24(e);4(f==6){2F(e){1f"2x":$("#"+b).1e("4M",5(a){J(B).2x()});1g;1f"1P":$("#"+b).1e("1P",5(a){$("#"+B).1G("1P")});1g;1f"2y":$("#"+b).1e("2y",5(a){$("#"+B).1G("2y")});1g;1f"2z":$("#"+b).1e("2z",5(a){$("#"+B).1G("2z")});1g;1f"1u":$("#"+b).1e("1u",5(a){$("#"+B).1G("1u")});1g;1f"1B":$("#"+b).1e("1B",5(a){$("#"+B).1G("1B")});1g;1f"2A":$("#"+b).1e("2A",5(a){$("#"+B).1G("2A")});1g;1f"1Q":$("#"+b).1e("1Q",5(a){$("#"+B).1G("1Q")});1g}}}};3 3J=5(){3 a=K("2K");$("#"+B).31("<1y 1r=\'"+z.2a+"\' 1j=\'1d:3M;3N:3O;1n:36;\' 1b=\'"+a+"\'></1y>");$("#"+B).4N($("#"+a))};3 1T=5(a){3 b=K("29");$("#"+b).1I(a)};3 3a=5(w){3 a=w;3 b=K("1h");3 c=$("#"+b+" a:2j");3 d=c.1c;3 e=$("#"+b+" a:2j").1i($("#"+b+" a.11:2j"));3 f;2F(a){1f"3b":4(e<d-1){e++;f=c[e]};1g;1f"3P":4(e<d&&e>0){e--;f=c[e]};1g};4(1w(f)=="14"){12 15};$("#"+b+" a."+z.11).1K(z.11);$(f).1F(z.11);3 g=f.1b;4(!x){3 h=(q.1U==15)?E[g].1q:$("#"+g).1I();1T(h);2k(E[g].1i)};4(a=="3b"){4(2g(($("#"+g).1n().1m+$("#"+g).1d()))>=2g($("#"+b).1d())){$("#"+b).2l(($("#"+b).2l())+$("#"+g).1d()+$("#"+g).1d())}}19{4(2g(($("#"+g).1n().1m+$("#"+g).1d()))<=0){$("#"+b).2l(($("#"+b).2l()-$("#"+b).1d())-$("#"+g).1d())}}};3 33=5(){3a("3b")};3 34=5(){3a("3P")};3 2k=5(i){4(q.1N!=15){3 a=K("29");3 b=(1w(i)=="14")?J(B).1l:i;3 c=J(B).1E[b].3w;4(c.1c>0){3 d=K("1h");3 e=$("#"+d+" a."+c).18("1b");3 f=$("#"+e).9("2m-4O");3 g=$("#"+e).9("2m-1n");3 h=$("#"+e).9("2h-3Q");4(f!=14){$("#"+a).2n("."+z.1t).2B(\'1j\',"2m:"+f)};4(g!=14){$("#"+a).2n("."+z.1t).9(\'2m-1n\',g)};4(h!=14){$("#"+a).2n("."+z.1t).9(\'2h-3Q\',h)};$("#"+a).2n("."+z.1t).9(\'2m-3R\',\'4P-3R\');$("#"+a).2n("."+z.1t).9(\'2h-3I\',\'4Q\')}}};3 21=5(){3 a=K("1h");3 b=$("#"+a+" a."+z.11);4(b.1c==1){3 c=$("#"+a+" a."+z.11).1q();3 d=$("#"+a+" a."+z.11).18("1b");4(d!=14){3 e=E[d].2b;J(B).1l=E[d].1i};4(q.1U&&q.1N!=15)2k()}19 4(b.1c>1){1D(3 i=0;i<b.1c;i++){3 d=$(b[i]).18("1b");3 f=E[d].1i;J(B).1E[f].11="11"}};3 g=J(B).1l;s.1V["1l"]=g};3 24=5(a){4($("#"+B).18("4R"+a)!=14){12 6};3 b=$("#"+B).3c("4S");4(b&&b[a]){12 6};12 15};3 3S=5(){3 b=K("1h");4(24(\'2R\')==6){3 c=E[$("#"+b+" a.11").18("1b")].1q;4($.3T(u)!==$.3T(c)&&u!==""){$("#"+B).1G("2R")}};4(24(\'1u\')==6){$("#"+B).1G("1u")};4(24(\'2Q\')==6){$(1p).1e("1u",5(a){$("#"+B).2x();$("#"+B)[0].2Q();21();$(1p).1J("1u")})}};3 32=5(a){3 b=K("2u");4(a==1)$("#"+b).9({3U:\'0 4T%\'});19 $("#"+b).9({3U:\'0 0\'})};3 3V=5(){1D(3 i 2c J(B)){4(1w(J(B)[i])!=\'5\'&&J(B)[i]!==14&&J(B)[i]!==1o){s.1A(i,J(B)[i],6)}}};3 3W=5(a,b){4(U(b)!=-1){J(B)[a]=b;3 c=K("1h");$("#"+c+" a."+z.11).1K(z.11);$("#"+U(b).1b).1F(z.11);3 d=U(J(B).1l).1I;1T(d)}};3 3X=5(i,a){4(a==\'d\'){1D(3 b 2c E){4(E[b].1i==i){4U E[b];1g}}};3 c=0;1D(3 b 2c E){E[b].1i=c;c++}};3 2G=5(){3 a=K("1h");3 b=K("1O");3 c=$("#"+b).1n();3 d=$("#"+b).1d();3 e=$(3Y).1d();3 f=$(3Y).2l();3 g=$("#"+a).1d();3 h={1M:q.1M,1m:(c.1m+d)+"1z",1s:"2o"};3 i=q.3q;3 j=15;3 k=z.2w;$("#"+a).1K(z.2w);$("#"+a).1K(z.2v);4((e+f)<35.4V(g+d+c.1m)){3 l=c.1m-g;4((c.1m-g)<0){l=10};h={1M:q.1M,1m:l+"1z",1s:"2o"};i="25";j=6;k=z.2v};12{3d:j,3Z:i,9:h,2C:k}};3 3e=5(){4(s.1R["41"]!=1o){2H(s.1R["41"])(s)}};3 3f=5(){3S();4(s.1R["42"]!=1o){2H(s.1R["42"])(s)}};1a.3L=5(){4((s.26("1k",6)==6)||(s.26("1E",6).1c==0))12;3 e=K("1h");4(1L!=""&&e!=1L){$("#"+1L).43("3g");$("#"+1L).9({1M:\'0\'})};4($("#"+e).9("1s")=="2o"){u=E[$("#"+e+" a.11").18("1b")].1q;3 f="";H=$("#"+e).1d();$("#"+e+" a").25();$(1p).1e("1W",5(a){3 b=a.3K;4(b==8){a.1Z();a.2i();f=(f.1c==0)?"":f.3F(0,f.1c-1)};2F(b){1f 39:1f 40:a.1Z();a.2i();33();1g;1f 37:1f 38:a.1Z();a.2i();34();1g;1f 27:1f 13:s.2e();21();1g;44:4(b>46){f+=4W.4X(b)};3 c=O(f);4(c!=-1){$("#"+e).9({1d:\'4Y\'});$("#"+e+" a").2f();$(c).25();3 d=2G();$("#"+e).9(d.9);$("#"+e).9({1s:\'2d\'})}19{$("#"+e+" a").25();$("#"+e).9({1d:H+\'1z\'})};1g};4(24("1W")==6){J(B).4Z()}});$(1p).1e("2S",5(a){4($("#"+B).18("45")!=14){J(B).45()}});$(1p).1e("1u",5(a){4(Y()==15){s.2e()}});3 g=2G();$("#"+e).9(g.9);4(g.3d==6){$("#"+e).9({1s:\'2d\'});$("#"+e).1F(g.2C);3e()}19{$("#"+e)[g.3Z]("3g",5(){$("#"+e).1F(g.2C);3e()})};4(e!=1L){1L=e}}};1a.2e=5(){3 b=K("1h");3 c=$("#"+K("1H")).1n().1m;3 d=2G();G=15;4(d.3d==6){$("#"+b).50({1d:0,1m:c},5(){$("#"+b).9({1d:H+\'1z\',1s:\'2o\'});3f()})}19{$("#"+b).43("3g",5(a){3f();$("#"+b).9({1M:\'0\'});$("#"+b).9({1d:H+\'1z\'})})};2k();$(1p).1J("1W");$(1p).1J("2S");$(1p).1J("1u")};1a.1l=5(i){4(1w(i)=="14"){12 s.26("1l")}19{s.1A("1l",i)}};1a.51=5(a){4(1w(a)=="14"||a==6){$("."+z.2a).52("1j")}19{$("."+z.2a).2B("1j","1d:3M;3N:3O;1n:36")}};1a.1A=5(a,b,c){4(a==14||b==14)47{48:"1A 53 54?"};s.1V[a]=b;4(c!=6){2F(a){1f"1l":3W(a,b);1g;1f"1k":s.1k(b,6);1g;1f"1v":J(B)[a]=b;x=($(r).18("1C")>0||$(r).18("1v")==6)?6:15;4(x){3 d=$("#"+B).1d();3 f=K("1h");$("#"+f).9("1d",d+"1z");3 g=K("1H");$("#"+g).2f();3 f=K("1h");$("#"+f).9({1s:\'2d\',1n:\'2Y\'});S()};1g;1f"1C":J(B)[a]=b;4(b==0){J(B).1v=15};x=($(r).18("1C")>0||$(r).18("1v")==6)?6:15;4(b==0){3 g=K("1H");$("#"+g).25();3 f=K("1h");$("#"+f).9({1s:\'2o\',1n:\'36\'});3 h="";4(J(B).1l>=0){3 i=U(J(B).1l);h=i.1I;V($("#"+i.1b))};1T(h)}19{3 g=K("1H");$("#"+g).2f();3 f=K("1h");$("#"+f).9({1s:\'2d\',1n:\'2Y\'})};1g;44:55{J(B)[a]=b}56(e){};1g}}};1a.26=5(a,b){4(a==14&&b==14){12 s.1V};4(a!=14&&b==14){12(s.1V[a]!=14)?s.1V[a]:1o};4(a!=14&&b!=14){12 J(B)[a]}};1a.2j=5(a){3 b=K("1O");4(a==6){$("#"+b).25()}19 4(a==15){$("#"+b).2f()}19{12 $("#"+b).9("1s")}};1a.57=5(a,b){3 c=a;3 d=c.1q;3 e=(c.2b==14||c.2b==1o)?d:c.2b;3 f=(c["1X"]==14||c["1X"]==1o)?\'\':c["1X"];3 i=(b==14||b==1o)?J(B).1E.1c:b;J(B).1E[i]=2r 58(d,e);4(f!=\'\')J(B).1E[i]["1X"]=f;3 g=U(i);4(g!=-1){3 h=N(J(B).1E[i],i,"","");$("#"+g.1b).1I(h)}19{3 h=N(J(B).1E[i],i,"","");3 j=K("1h");$("#"+j).59(h);S()}};1a.2D=5(i){J(B).2D(i);4((U(i))!=-1){$("#"+U(i).1b).2D();3X(i,\'d\')};4(J(B).1c==0){1T("")}19{3 a=U(J(B).1l).1I;1T(a)};s.1A("1l",J(B).1l)};1a.1k=5(a,b){J(B).1k=a;3 c=K("1O");4(a==6){$("#"+c).9("2E",z.1k);s.2e()}19 4(a==15){$("#"+c).9("2E",1)};4(b!=6){s.1A("1k",a)}};1a.3h=5(){12(J(B).3h==14)?1o:J(B).3h};1a.3i=5(){4(2p.1c==1){12 J(B).3i(2p[0])}19 4(2p.1c==2){12 J(B).3i(2p[0],2p[1])}19{47{48:"5a 1i 5b 5c!"}}};1a.49=5(a){12 J(B).49(a)};1a.1v=5(a){4(1w(a)=="14"){12 s.26("1v")}19{s.1A("1v",a)}};1a.1C=5(a){4(1w(a)=="14"){12 s.26("1C")}19{s.1A("1C",a)}};1a.5d=5(a,b){s.1R[a]=b};1a.5e=5(a){2H(s.1R[a])(s)};3 4a=5(){s.1A("3j",$.1S.3j);s.1A("3k",$.1S.3k)};3 4b=5(){T();3V();4a();4(q.2I!=\'\'){2H(q.2I)(s)}};4b()};$.1S={3j:2.37,3k:"5f 5g",3u:20,5h:5(a,b){12 $(a).1S(b).3c("28")}};$.3l.3n({1S:5(b){12 1a.2X(5(){3 a=2r 3m(1a,b);$(1a).3c(\'28\',a)})}});4(1w($.3l.18)==\'14\'){$.3l.18=5(w){12 $(1a).2B(w)}}})(5i);',62,329,'|||var|if|function|true|||css||||||||||||||||||||||||||||||||||||||||||||||||||||||selected|return||undefined|false|||prop|else|this|id|length|height|bind|case|break|postChildID|index|style|disabled|selectedIndex|top|position|null|document|text|class|display|ddTitleText|mouseup|multiple|typeof|span|div|px|set|mouseover|size|for|options|addClass|trigger|postTitleID|html|unbind|removeClass|bs|zIndex|useSprite|postID|click|mouseout|onActions|msDropDown|bv|showIcon|ddProp|keydown|title|sDiv|preventDefault||bA|oldIndex||bB|show|get||dd|postTitleTextID|ddOutOfVision|value|in|block|close|hide|parseInt|padding|stopPropagation|visible|bz|scrollTop|background|find|none|arguments|visibleRows|new|keyboardAction|currentKey|postArrowID|borderTop|noBorderTop|focus|dblclick|mousedown|mousemove|attr|border|remove|opacity|switch|bH|eval|onInit|insideWindow|postElementHolder|postAID|postOPTAID|ddTitle|arrow|ddChild|blur|change|keyup|option|opt|_|enabled|each|relative|width||after|bD|bx|by|Math|absolute||||bw|next|data|opp|bI|bJ|fast|form|item|version|author|fn|bt|extend|rowHeight|mainCSS|animStyle|Object|postInputhidden|actions|counter|children|className|img|src|align|absmiddle|href|javascript|void|toLowerCase|substr|font|first|bottom|bu|keyCode|open|0px|overflow|hidden|previous|left|repeat|bC|trim|backgroundPosition|bE|bF|bG|window|ani||onOpen|onClose|slideUp|default|onkeyup||throw|message|namedItem|bK|bL|120|9999|slideDown|_msddHolder|_msdd|_title|_titletext|_child|_msa|_msopta|postInputID|_msinput|_arrow|_inp|keypress|tabindex|msdrpdd|getElementById|val|nodeName|OPTGROUP|opta|weight|bold|italic|clear|both|label|1px|solid|c3c3c3|toggleClass|min|max|refresh|split|mouseenter|appendTo|image|no|2px|on|events|100|delete|floor|String|fromCharCode|auto|onkeydown|animate|debug|removeAttr|to|what|try|catch|add|Option|append|An|is|required|addMyEvent|fireEvent|Marghoob|Suleman|create|jQuery'.split('|'),0,{}))
+\ No newline at end of file
+diff -up cacti-0.8.8a/include/js/jquery/jquery.dropdown.js.legal cacti-0.8.8a/include/js/jquery/jquery.dropdown.js
+--- cacti-0.8.8a/include/js/jquery/jquery.dropdown.js.legal    2013-01-04 15:44:38.032416068 -0500
++++ cacti-0.8.8a/include/js/jquery/jquery.dropdown.js  2013-01-04 15:43:12.644377988 -0500
+@@ -0,0 +1,227 @@
++/*
++ +-------------------------------------------------------------------------+
++ | Copyright (C) 2004-2013 The Cacti Group                                 |
++ |                                                                         |
++ | 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.                            |
++ +-------------------------------------------------------------------------+
++ | Cacti: The Complete RRDTool-based Graphing Solution                     |
++ +-------------------------------------------------------------------------+
++ | This code is designed, written, and maintained by the Cacti Group. See  |
++ | about.php and/or the AUTHORS file for specific developer information.   |
++ +-------------------------------------------------------------------------+
++ | http://www.cacti.net/                                                   |
++ +-------------------------------------------------------------------------+
++*/
++
++(function($){
++ $.fn.DropDownMenu = function(options) {
++
++      var defaults = {
++              title:                  false,
++              subtitle:               false,
++              name:                   'myName',
++              maxHeight:              300,
++              width:                  'auto',
++              timeout:                500,
++              auto_close:     10000,
++              html:                   '<h6>empty</h6>',
++              offsetX:                0,
++              offsetY:                0,
++              simultaneous:   false,
++              textAlign:              'left'
++      };
++
++      var timerref            = null;
++      var menu                        = null;
++      var menuHeight          = 0;
++      var options             = $.extend(defaults, options);
++      var contentHeight       = 0;
++
++      /* do nothing if requested menu is still loaded */
++      if($('#' + options.name).is(":visible")) { return; }
++
++      /* remove all open menus from DOM if they should not stay in front at the same time */
++      var oldMenus = $(".cacti_dd_menu");
++      if(options.simultaneous == false) {
++              oldMenus.css({'overflow-y':'hidden'}).slideUp('200');
++              oldMenus.queue(function () {
++                      oldMenus.remove();
++                      oldMenus.dequeue();
++              });
++      }
++
++      return this.each(function() {
++              obj = $(this);
++              newMenu = _init_menu(obj);
++              _open_menu(newMenu);
++      });
++
++      function _init_menu(initiator){
++              /* create the main menu structure */
++              $("<div id='" + options.name + "' style='display: none;' class='cacti_dd_menu ui-widget ui-corner-all'>"
++                      + "<div id='" + options.name + "_title' class='title ui-state-default ui-corner-top'><h6>" + options.title + "</h6></div>"
++                      + "<div id='" + options.name + "_back' class='back ui-state-active'></div>"
++                      + "<div id='" + options.name + "_content' class='content ui-widget-content ui-state-highlight " + ((options.subtitle !== false) ? "" : "ui-corner-bottom" ) + "'></div>"
++                      + "<div id='" + options.name + "_subtitle' class='subtitle ui-state-default ui-corner-bottom'><h6>" + options.subtitle + "</h6></div>"
++                      + "<div id='" + options.name + "_html' class='html'></div>"
++              + "</div>").appendTo("body");
++
++              /* define references to the menu and its different sections */
++              menu                    = $('#' + options.name);
++              menu_head               = $('#' + options.name + '_title');
++              menu_content    = $('#' + options.name + '_content');
++              menu_back               = $('#' + options.name + '_back');
++              menu_subhead    = $('#' + options.name + '_subtitle');
++              menu_html               = $('#' + options.name + '_html');
++
++              /* while div container "myName_html" holds the raw data ... */
++              menu_html.append(options.html);
++              i=1;
++              menu_html.find("h6:has(div)").each(function() {
++                      var subMenu = $(this);
++                      var subMenuClass = options.name + '_' + i;
++                      var subMenuTitle = subMenu.find('a:first').html();
++                      subMenu.addClass(subMenuClass);
++                      $('.'+subMenuClass).die().live("click", function(){ _switch_layer( subMenuClass); } );
++                      subMenu.children("div").hide();
++                      subMenu.find('a:first').html('<span style="float:left; min-width:80%;">' + subMenuTitle + '</span><span class="ui-icon ui-icon-triangle-1-e" style="float:right;"></span>');
++                      i++;
++              });
++
++              /* ... "myName_content" will have the visible menu data */
++              menu_content.append(menu_html.html());
++
++              /* if necessary show title, subtitle ... */
++              if(options.title        !== false) { menu_head.show(); }
++              if(options.subtitle !== false) { menu_subhead.show(); }
++
++              /* make content visible */
++              menu_content.show();
++
++              /* reduce height to a minimum for best fit */
++              menuHeight = (menu.outerHeight() > options.maxHeight) ? options.maxHeight : menu.outerHeight();
++
++              /* set the width to a fixed value */
++              if(!isNaN(parseInt(options.width))) {
++                      menu.css({
++                              'min-width' : options.width + 'px',
++                              'max-width' : options.width + 'px'
++                      });
++                      menu.width(options.width);
++              }else {
++                      // use real width plus 15 percent
++                      var width = menu.outerWidth(true)*1.15;
++                      menu.css({
++                              'min-width' : width + 'px',
++                              'max-width' : width + 'px'
++                      });
++                      menu.width(width);
++              }
++
++              /* default position of the menu container */
++              menu.css({
++                      // x-position in relation to the initiator
++                      'left'  : initiator.offset().left + options.offsetX + 'px',
++                      // y-position in relation to the initiator
++                      'top'   : initiator.offset().top + initiator.height() + options.offsetY + 'px'
++              });
++
++              /* change the orientation from right to left if width exceeds the windows size */
++              if((initiator.offset().left + initiator.width() + options.offsetX + menu.outerWidth(true)) > $(window).width()) {
++                      menu.css({'left' : (initiator.offset().left + initiator.width() - menu.outerWidth(true)) + 'px'});
++              }
++
++              menu.css({'height':0, 'text-align':options.textAlign});
++              menu.bind('mouseover', _cancel_timer);
++              menu.bind('mouseout', _set_timer);
++              return menu;
++      }
++
++
++      function _switch_layer(subMenuClass){
++              if(subMenuClass == null) {
++                      var content = menu_html;
++                      menu_back.empty().hide();
++                      menu_content.height(contentHeight);
++              }else {
++                      var content = menu_html.find('.' + subMenuClass + ' div:first');
++                      menu_back.show();
++              }
++
++              parentClass = menu_html.find('.' + subMenuClass).parents('h6').attr('class');
++
++              menu_back.empty().append( menu_html.find('.' + subMenuClass + ' a:first').html() );
++              menu_back.find('span:last').removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s');
++              menu_back.unbind('click').click( function() { _switch_layer( parentClass); });
++
++              menu_content.empty().append(content.html());
++
++              /* re-calculate content height */
++              if(subMenuClass != null) {
++                              menu_head_height        = menu_head.is(":visible")              ? menu_head.outerHeight()               : 0;
++                              menu_back_height        = menu_back.is(":visible")              ? menu_back.outerHeight()               : 0;
++                              menu_subhead_height     = menu_subhead.is(":visible")   ? menu_subhead.outerHeight()    : 0;
++
++                              menu_content.height(menuHeight - menu_head_height - menu_back_height - menu_subhead_height);
++              }
++
++              /* return false to suppress unwanted click events*/
++              return false;
++      }
++
++      function _set_timer(timer){
++                      timer = ( typeof(timer) != 'number' ) ? options.timeout : timer;
++                      timerref = window.setTimeout( _close_menu, timer);
++      }
++
++      function _cancel_timer() {
++              if(timerref) {
++                      window.clearTimeout(timerref);
++                      timerref = null;
++              }
++      }
++
++      function _close_menu(){
++              menu = $('#' + options.name);
++              menu.slideUp(menuHeight*3);
++              menu.queue(function () {
++                      menu.remove();
++                      menu.dequeue();
++              });
++      }
++
++      function _open_menu(obj){
++              //wait until oldMenu is completey closed before opening a new one
++              var wait = setInterval(function() {
++                      if( !oldMenus.is(":animated") ) {
++                              clearInterval(wait);
++                              obj.show().animate({height: menuHeight}, menuHeight*3);
++
++                              //setup contentHeight;
++                              menu_head_height        = menu_head.is(":visible")              ? menu_head.outerHeight()               : 0;
++                              menu_back_height        = menu_back.is(":visible")              ? menu_back.outerHeight()               : 0;
++                              menu_subhead_height     = menu_subhead.is(":visible")   ? menu_subhead.outerHeight()    : 0;
++
++                              menu_content.height(menuHeight - menu_head_height - menu_back_height - menu_subhead_height);
++
++                              contentHeight = $('#' + options.name + '_content').height();
++                              $('#' + options.name + '_content').css({'overflow-y':'auto'});
++
++                              obj.find('h6').eq(0).focus();
++                              if(options.auto_close !== false) {
++                                      _set_timer(options.auto_close);
++                              }
++                      }
++              }, 200);
++      }
++
++ };
++})(jQuery);
+\ No newline at end of file
+diff -up cacti-0.8.8a/include/js/jquery/jquery.js.legal cacti-0.8.8a/include/js/jquery/jquery.js
+--- cacti-0.8.8a/include/js/jquery/jquery.js.legal     2013-01-04 15:44:38.035416071 -0500
++++ cacti-0.8.8a/include/js/jquery/jquery.js   2013-01-04 15:43:12.644377988 -0500
+@@ -0,0 +1,4 @@
++/*! jQuery v1.7.1 jquery.com | jquery.org/license */
++(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},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(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
++f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.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(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
++{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
+\ No newline at end of file
+diff -up cacti-0.8.8a/include/js/jquery/jquery.jstree.js.legal cacti-0.8.8a/include/js/jquery/jquery.jstree.js
+--- cacti-0.8.8a/include/js/jquery/jquery.jstree.js.legal      2013-01-04 15:44:38.036416073 -0500
++++ cacti-0.8.8a/include/js/jquery/jquery.jstree.js    2013-01-04 15:43:12.645377988 -0500
+@@ -0,0 +1,4551 @@
++/*\r
++ * jsTree 1.0-rc3\r
++ * http://jstree.com/\r
++ *\r
++ * Copyright (c) 2010 Ivan Bozhanov (vakata.com)\r
++ *\r
++ * Licensed same as jquery - under the terms of either the MIT License or the GPL Version 2 License\r
++ *   http://www.opensource.org/licenses/mit-license.php\r
++ *   http://www.gnu.org/licenses/gpl.html\r
++ *\r
++ * $Date: 2011-02-09 01:17:14 +0200 (ср, 09 февр 2011) $\r
++ * $Revision: 236 $\r
++ */\r
++\r
++/*jslint browser: true, onevar: true, undef: true, bitwise: true, strict: true */\r
++/*global window : false, clearInterval: false, clearTimeout: false, document: false, setInterval: false, setTimeout: false, jQuery: false, navigator: false, XSLTProcessor: false, DOMParser: false, XMLSerializer: false*/\r
++\r
++"use strict";\r
++\r
++// top wrapper to prevent multiple inclusion (is this OK?)\r
++(function () { if(jQuery && jQuery.jstree) { return; }\r
++      var is_ie6 = false, is_ie7 = false, is_ff2 = false;\r
++\r
++/* \r
++ * jsTree core\r
++ */\r
++(function ($) {\r
++      // Common functions not related to jsTree \r
++      // decided to move them to a `vakata` "namespace"\r
++      $.vakata = {};\r
++      // CSS related functions\r
++      $.vakata.css = {\r
++              get_css : function(rule_name, delete_flag, sheet) {\r
++                      rule_name = rule_name.toLowerCase();\r
++                      var css_rules = sheet.cssRules || sheet.rules,\r
++                              j = 0;\r
++                      do {\r
++                              if(css_rules.length && j > css_rules.length + 5) { return false; }\r
++                              if(css_rules[j].selectorText && css_rules[j].selectorText.toLowerCase() == rule_name) {\r
++                                      if(delete_flag === true) {\r
++                                              if(sheet.removeRule) { sheet.removeRule(j); }\r
++                                              if(sheet.deleteRule) { sheet.deleteRule(j); }\r
++                                              return true;\r
++                                      }\r
++                                      else { return css_rules[j]; }\r
++                              }\r
++                      }\r
++                      while (css_rules[++j]);\r
++                      return false;\r
++              },\r
++              add_css : function(rule_name, sheet) {\r
++                      if($.jstree.css.get_css(rule_name, false, sheet)) { return false; }\r
++                      if(sheet.insertRule) { sheet.insertRule(rule_name + ' { }', 0); } else { sheet.addRule(rule_name, null, 0); }\r
++                      return $.vakata.css.get_css(rule_name);\r
++              },\r
++              remove_css : function(rule_name, sheet) { \r
++                      return $.vakata.css.get_css(rule_name, true, sheet); \r
++              },\r
++              add_sheet : function(opts) {\r
++                      var tmp = false, is_new = true;\r
++                      if(opts.str) {\r
++                              if(opts.title) { tmp = $("style[id='" + opts.title + "-stylesheet']")[0]; }\r
++                              if(tmp) { is_new = false; }\r
++                              else {\r
++                                      tmp = document.createElement("style");\r
++                                      tmp.setAttribute('type',"text/css");\r
++                                      if(opts.title) { tmp.setAttribute("id", opts.title + "-stylesheet"); }\r
++                              }\r
++                              if(tmp.styleSheet) {\r
++                                      if(is_new) { \r
++                                              document.getElementsByTagName("head")[0].appendChild(tmp); \r
++                                              tmp.styleSheet.cssText = opts.str; \r
++                                      }\r
++                                      else {\r
++                                              tmp.styleSheet.cssText = tmp.styleSheet.cssText + " " + opts.str; \r
++                                      }\r
++                              }\r
++                              else {\r
++                                      tmp.appendChild(document.createTextNode(opts.str));\r
++                                      document.getElementsByTagName("head")[0].appendChild(tmp);\r
++                              }\r
++                              return tmp.sheet || tmp.styleSheet;\r
++                      }\r
++                      if(opts.url) {\r
++                              if(document.createStyleSheet) {\r
++                                      try { tmp = document.createStyleSheet(opts.url); } catch (e) { }\r
++                              }\r
++                              else {\r
++                                      tmp                     = document.createElement('link');\r
++                                      tmp.rel         = 'stylesheet';\r
++                                      tmp.type        = 'text/css';\r
++                                      tmp.media       = "all";\r
++                                      tmp.href        = opts.url;\r
++                                      document.getElementsByTagName("head")[0].appendChild(tmp);\r
++                                      return tmp.styleSheet;\r
++                              }\r
++                      }\r
++              }\r
++      };\r
++\r
++      // private variables \r
++      var instances = [],                     // instance array (used by $.jstree.reference/create/focused)\r
++              focused_instance = -1,  // the index in the instance array of the currently focused instance\r
++              plugins = {},                   // list of included plugins\r
++              prepared_move = {};             // for the move_node function\r
++\r
++      // jQuery plugin wrapper (thanks to jquery UI widget function)\r
++      $.fn.jstree = function (settings) {\r
++              var isMethodCall = (typeof settings == 'string'), // is this a method call like $().jstree("open_node")\r
++                      args = Array.prototype.slice.call(arguments, 1), \r
++                      returnValue = this;\r
++\r
++              // if a method call execute the method on all selected instances\r
++              if(isMethodCall) {\r
++                      if(settings.substring(0, 1) == '_') { return returnValue; }\r
++                      this.each(function() {\r
++                              var instance = instances[$.data(this, "jstree_instance_id")],\r
++                                      methodValue = (instance && $.isFunction(instance[settings])) ? instance[settings].apply(instance, args) : instance;\r
++                                      if(typeof methodValue !== "undefined" && (settings.indexOf("is_") === 0 || (methodValue !== true && methodValue !== false))) { returnValue = methodValue; return false; }\r
++                      });\r
++              }\r
++              else {\r
++                      this.each(function() {\r
++                              // extend settings and allow for multiple hashes and $.data\r
++                              var instance_id = $.data(this, "jstree_instance_id"),\r
++                                      a = [],\r
++                                      b = settings ? $.extend({}, true, settings) : {},\r
++                                      c = $(this), \r
++                                      s = false, \r
++                                      t = [];\r
++                              a = a.concat(args);\r
++                              if(c.data("jstree")) { a.push(c.data("jstree")); }\r
++                              b = a.length ? $.extend.apply(null, [true, b].concat(a)) : b;\r
++\r
++                              // if an instance already exists, destroy it first\r
++                              if(typeof instance_id !== "undefined" && instances[instance_id]) { instances[instance_id].destroy(); }\r
++                              // push a new empty object to the instances array\r
++                              instance_id = parseInt(instances.push({}),10) - 1;\r
++                              // store the jstree instance id to the container element\r
++                              $.data(this, "jstree_instance_id", instance_id);\r
++                              // clean up all plugins\r
++                              b.plugins = $.isArray(b.plugins) ? b.plugins : $.jstree.defaults.plugins.slice();\r
++                              b.plugins.unshift("core");\r
++                              // only unique plugins\r
++                              b.plugins = b.plugins.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(",");\r
++\r
++                              // extend defaults with passed data\r
++                              s = $.extend(true, {}, $.jstree.defaults, b);\r
++                              s.plugins = b.plugins;\r
++                              $.each(plugins, function (i, val) { \r
++                                      if($.inArray(i, s.plugins) === -1) { s[i] = null; delete s[i]; } \r
++                                      else { t.push(i); }\r
++                              });\r
++                              s.plugins = t;\r
++\r
++                              // push the new object to the instances array (at the same time set the default classes to the container) and init\r
++                              instances[instance_id] = new $.jstree._instance(instance_id, $(this).addClass("jstree jstree-" + instance_id), s); \r
++                              // init all activated plugins for this instance\r
++                              $.each(instances[instance_id]._get_settings().plugins, function (i, val) { instances[instance_id].data[val] = {}; });\r
++                              $.each(instances[instance_id]._get_settings().plugins, function (i, val) { if(plugins[val]) { plugins[val].__init.apply(instances[instance_id]); } });\r
++                              // initialize the instance\r
++                              setTimeout(function() { if(instances[instance_id]) { instances[instance_id].init(); } }, 0);\r
++                      });\r
++              }\r
++              // return the jquery selection (or if it was a method call that returned a value - the returned value)\r
++              return returnValue;\r
++      };\r
++      // object to store exposed functions and objects\r
++      $.jstree = {\r
++              defaults : {\r
++                      plugins : []\r
++              },\r
++              _focused : function () { return instances[focused_instance] || null; },\r
++              _reference : function (needle) { \r
++                      // get by instance id\r
++                      if(instances[needle]) { return instances[needle]; }\r
++                      // get by DOM (if still no luck - return null\r
++                      var o = $(needle); \r
++                      if(!o.length && typeof needle === "string") { o = $("#" + needle); }\r
++                      if(!o.length) { return null; }\r
++                      return instances[o.closest(".jstree").data("jstree_instance_id")] || null; \r
++              },\r
++              _instance : function (index, container, settings) { \r
++                      // for plugins to store data in\r
++                      this.data = { core : {} };\r
++                      this.get_settings       = function () { return $.extend(true, {}, settings); };\r
++                      this._get_settings      = function () { return settings; };\r
++                      this.get_index          = function () { return index; };\r
++                      this.get_container      = function () { return container; };\r
++                      this.get_container_ul = function () { return container.children("ul:eq(0)"); };\r
++                      this._set_settings      = function (s) { \r
++                              settings = $.extend(true, {}, settings, s);\r
++                      };\r
++              },\r
++              _fn : { },\r
++              plugin : function (pname, pdata) {\r
++                      pdata = $.extend({}, {\r
++                              __init          : $.noop, \r
++                              __destroy       : $.noop,\r
++                              _fn                     : {},\r
++                              defaults        : false\r
++                      }, pdata);\r
++                      plugins[pname] = pdata;\r
++\r
++                      $.jstree.defaults[pname] = pdata.defaults;\r
++                      $.each(pdata._fn, function (i, val) {\r
++                              val.plugin              = pname;\r
++                              val.old                 = $.jstree._fn[i];\r
++                              $.jstree._fn[i] = function () {\r
++                                      var rslt,\r
++                                              func = val,\r
++                                              args = Array.prototype.slice.call(arguments),\r
++                                              evnt = new $.Event("before.jstree"),\r
++                                              rlbk = false;\r
++\r
++                                      if(this.data.core.locked === true && i !== "unlock" && i !== "is_locked") { return; }\r
++\r
++                                      // Check if function belongs to the included plugins of this instance\r
++                                      do {\r
++                                              if(func && func.plugin && $.inArray(func.plugin, this._get_settings().plugins) !== -1) { break; }\r
++                                              func = func.old;\r
++                                      } while(func);\r
++                                      if(!func) { return; }\r
++\r
++                                      // context and function to trigger events, then finally call the function\r
++                                      if(i.indexOf("_") === 0) {\r
++                                              rslt = func.apply(this, args);\r
++                                      }\r
++                                      else {\r
++                                              rslt = this.get_container().triggerHandler(evnt, { "func" : i, "inst" : this, "args" : args, "plugin" : func.plugin });\r
++                                              if(rslt === false) { return; }\r
++                                              if(typeof rslt !== "undefined") { args = rslt; }\r
++\r
++                                              rslt = func.apply(\r
++                                                      $.extend({}, this, { \r
++                                                              __callback : function (data) { \r
++                                                                      this.get_container().triggerHandler( i + '.jstree', { "inst" : this, "args" : args, "rslt" : data, "rlbk" : rlbk });\r
++                                                              },\r
++                                                              __rollback : function () { \r
++                                                                      rlbk = this.get_rollback();\r
++                                                                      return rlbk;\r
++                                                              },\r
++                                                              __call_old : function (replace_arguments) {\r
++                                                                      return func.old.apply(this, (replace_arguments ? Array.prototype.slice.call(arguments, 1) : args ) );\r
++                                                              }\r
++                                                      }), args);\r
++                                      }\r
++\r
++                                      // return the result\r
++                                      return rslt;\r
++                              };\r
++                              $.jstree._fn[i].old = val.old;\r
++                              $.jstree._fn[i].plugin = pname;\r
++                      });\r
++              },\r
++              rollback : function (rb) {\r
++                      if(rb) {\r
++                              if(!$.isArray(rb)) { rb = [ rb ]; }\r
++                              $.each(rb, function (i, val) {\r
++                                      instances[val.i].set_rollback(val.h, val.d);\r
++                              });\r
++                      }\r
++              }\r
++      };\r
++      // set the prototype for all instances\r
++      $.jstree._fn = $.jstree._instance.prototype = {};\r
++\r
++      // load the css when DOM is ready\r
++      $(function() {\r
++              // code is copied from jQuery ($.browser is deprecated + there is a bug in IE)\r
++              var u = navigator.userAgent.toLowerCase(),\r
++                      v = (u.match( /.+?(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],\r
++                      css_string = '' + \r
++                              '.jstree ul, .jstree li { display:block; margin:0 0 0 0; padding:0 0 0 0; list-style-type:none; } ' + \r
++                              '.jstree li { display:block; min-height:18px; line-height:18px; white-space:nowrap; margin-left:18px; min-width:18px; } ' + \r
++                              '.jstree-rtl li { margin-left:0; margin-right:18px; } ' + \r
++                              '.jstree > ul > li { margin-left:0px; } ' + \r
++                              '.jstree-rtl > ul > li { margin-right:0px; } ' + \r
++                              '.jstree ins { display:inline-block; text-decoration:none; width:18px; height:18px; margin:0 0 0 0; padding:0; } ' + \r
++                              '.jstree a { display:inline-block; line-height:16px; height:16px; color:black; white-space:nowrap; text-decoration:none; padding:1px 2px; margin:0; } ' + \r
++                              '.jstree a:focus { outline: none; } ' + \r
++                              '.jstree a > ins { height:16px; width:16px; } ' + \r
++                              '.jstree a > .jstree-icon { margin-right:3px; } ' + \r
++                              '.jstree-rtl a > .jstree-icon { margin-left:3px; margin-right:0; } ' + \r
++                              'li.jstree-open > ul { display:block; } ' + \r
++                              'li.jstree-closed > ul { display:none; } ';\r
++              // Correct IE 6 (does not support the > CSS selector)\r
++              if(/msie/.test(u) && parseInt(v, 10) == 6) { \r
++                      is_ie6 = true;\r
++\r
++                      // fix image flicker and lack of caching\r
++                      try {\r
++                              document.execCommand("BackgroundImageCache", false, true);\r
++                      } catch (err) { }\r
++\r
++                      css_string += '' + \r
++                              '.jstree li { height:18px; margin-left:0; margin-right:0; } ' + \r
++                              '.jstree li li { margin-left:18px; } ' + \r
++                              '.jstree-rtl li li { margin-left:0px; margin-right:18px; } ' + \r
++                              'li.jstree-open ul { display:block; } ' + \r
++                              'li.jstree-closed ul { display:none !important; } ' + \r
++                              '.jstree li a { display:inline; border-width:0 !important; padding:0px 2px !important; } ' + \r
++                              '.jstree li a ins { height:16px; width:16px; margin-right:3px; } ' + \r
++                              '.jstree-rtl li a ins { margin-right:0px; margin-left:3px; } ';\r
++              }\r
++              // Correct IE 7 (shifts anchor nodes onhover)\r
++              if(/msie/.test(u) && parseInt(v, 10) == 7) { \r
++                      is_ie7 = true;\r
++                      css_string += '.jstree li a { border-width:0 !important; padding:0px 2px !important; } ';\r
++              }\r
++              // correct ff2 lack of display:inline-block\r
++              if(!/compatible/.test(u) && /mozilla/.test(u) && parseFloat(v, 10) < 1.9) {\r
++                      is_ff2 = true;\r
++                      css_string += '' + \r
++                              '.jstree ins { display:-moz-inline-box; } ' + \r
++                              '.jstree li { line-height:12px; } ' + // WHY??\r
++                              '.jstree a { display:-moz-inline-box; } ' + \r
++                              '.jstree .jstree-no-icons .jstree-checkbox { display:-moz-inline-stack !important; } ';\r
++                              /* this shouldn't be here as it is theme specific */\r
++              }\r
++              // the default stylesheet\r
++              $.vakata.css.add_sheet({ str : css_string, title : "jstree" });\r
++      });\r
++\r
++      // core functions (open, close, create, update, delete)\r
++      $.jstree.plugin("core", {\r
++              __init : function () {\r
++                      this.data.core.locked = false;\r
++                      this.data.core.to_open = this.get_settings().core.initially_open;\r
++                      this.data.core.to_load = this.get_settings().core.initially_load;\r
++              },\r
++              defaults : { \r
++                      html_titles     : false,\r
++                      animation       : 500,\r
++                      initially_open : [],\r
++                      initially_load : [],\r
++                      open_parents : true,\r
++                      notify_plugins : true,\r
++                      rtl                     : false,\r
++                      load_open       : false,\r
++                      strings         : {\r
++                              loading         : "Loading ...",\r
++                              new_node        : "New node",\r
++                              multiple_selection : "Multiple selection"\r
++                      }\r
++              },\r
++              _fn : { \r
++                      init    : function () { \r
++                              this.set_focus(); \r
++                              if(this._get_settings().core.rtl) {\r
++                                      this.get_container().addClass("jstree-rtl").css("direction", "rtl");\r
++                              }\r
++                              this.get_container().html("<ul><li class='jstree-last jstree-leaf'><ins>&#160;</ins><a class='jstree-loading' href='#'><ins class='jstree-icon'>&#160;</ins>" + this._get_string("loading") + "</a></li></ul>");\r
++                              this.data.core.li_height = this.get_container_ul().find("li.jstree-closed, li.jstree-leaf").eq(0).height() || 18;\r
++\r
++                              this.get_container()\r
++                                      .delegate("li > ins", "click.jstree", $.proxy(function (event) {\r
++                                                      var trgt = $(event.target);\r
++                                                      // if(trgt.is("ins") && event.pageY - trgt.offset().top < this.data.core.li_height) { this.toggle_node(trgt); }\r
++                                                      this.toggle_node(trgt);\r
++                                              }, this))\r
++                                      .bind("mousedown.jstree", $.proxy(function () { \r
++                                                      this.set_focus(); // This used to be setTimeout(set_focus,0) - why?\r
++                                              }, this))\r
++                                      .bind("dblclick.jstree", function (event) { \r
++                                              var sel;\r
++                                              if(document.selection && document.selection.empty) { document.selection.empty(); }\r
++                                              else {\r
++                                                      if(window.getSelection) {\r
++                                                              sel = window.getSelection();\r
++                                                              try { \r
++                                                                      sel.removeAllRanges();\r
++                                                                      sel.collapse();\r
++                                                              } catch (err) { }\r
++                                                      }\r
++                                              }\r
++                                      });\r
++                              if(this._get_settings().core.notify_plugins) {\r
++                                      this.get_container()\r
++                                              .bind("load_node.jstree", $.proxy(function (e, data) { \r
++                                                              var o = this._get_node(data.rslt.obj),\r
++                                                                      t = this;\r
++                                                              if(o === -1) { o = this.get_container_ul(); }\r
++                                                              if(!o.length) { return; }\r
++                                                              o.find("li").each(function () {\r
++                                                                      var th = $(this);\r
++                                                                      if(th.data("jstree")) {\r
++                                                                              $.each(th.data("jstree"), function (plugin, values) {\r
++                                                                                      if(t.data[plugin] && $.isFunction(t["_" + plugin + "_notify"])) {\r
++                                                                                              t["_" + plugin + "_notify"].call(t, th, values);\r
++                                                                                      }\r
++                                                                              });\r
++                                                                      }\r
++                                                              });\r
++                                                      }, this));\r
++                              }\r
++                              if(this._get_settings().core.load_open) {\r
++                                      this.get_container()\r
++                                              .bind("load_node.jstree", $.proxy(function (e, data) { \r
++                                                              var o = this._get_node(data.rslt.obj),\r
++                                                                      t = this;\r
++                                                              if(o === -1) { o = this.get_container_ul(); }\r
++                                                              if(!o.length) { return; }\r
++                                                              o.find("li.jstree-open:not(:has(ul))").each(function () {\r
++                                                                      t.load_node(this, $.noop, $.noop);\r
++                                                              });\r
++                                                      }, this));\r
++                              }\r
++                              this.__callback();\r
++                              this.load_node(-1, function () { this.loaded(); this.reload_nodes(); });\r
++                      },\r
++                      destroy : function () { \r
++                              var i,\r
++                                      n = this.get_index(),\r
++                                      s = this._get_settings(),\r
++                                      _this = this;\r
++\r
++                              $.each(s.plugins, function (i, val) {\r
++                                      try { plugins[val].__destroy.apply(_this); } catch(err) { }\r
++                              });\r
++                              this.__callback();\r
++                              // set focus to another instance if this one is focused\r
++                              if(this.is_focused()) { \r
++                                      for(i in instances) { \r
++                                              if(instances.hasOwnProperty(i) && i != n) { \r
++                                                      instances[i].set_focus(); \r
++                                                      break; \r
++                                              } \r
++                                      }\r
++                              }\r
++                              // if no other instance found\r
++                              if(n === focused_instance) { focused_instance = -1; }\r
++                              // remove all traces of jstree in the DOM (only the ones set using jstree*) and cleans all events\r
++                              this.get_container()\r
++                                      .unbind(".jstree")\r
++                                      .undelegate(".jstree")\r
++                                      .removeData("jstree_instance_id")\r
++                                      .find("[class^='jstree']")\r
++                                              .andSelf()\r
++                                              .attr("class", function () { return this.className.replace(/jstree[^ ]*|$/ig,''); });\r
++                              $(document)\r
++                                      .unbind(".jstree-" + n)\r
++                                      .undelegate(".jstree-" + n);\r
++                              // remove the actual data\r
++                              instances[n] = null;\r
++                              delete instances[n];\r
++                      },\r
++\r
++                      _core_notify : function (n, data) {\r
++                              if(data.opened) {\r
++                                      this.open_node(n, false, true);\r
++                              }\r
++                      },\r
++\r
++                      lock : function () {\r
++                              this.data.core.locked = true;\r
++                              this.get_container().children("ul").addClass("jstree-locked").css("opacity","0.7");\r
++                              this.__callback({});\r
++                      },\r
++                      unlock : function () {\r
++                              this.data.core.locked = false;\r
++                              this.get_container().children("ul").removeClass("jstree-locked").css("opacity","1");\r
++                              this.__callback({});\r
++                      },\r
++                      is_locked : function () { return this.data.core.locked; },\r
++                      save_opened : function () {\r
++                              var _this = this;\r
++                              this.data.core.to_open = [];\r
++                              this.get_container_ul().find("li.jstree-open").each(function () { \r
++                                      if(this.id) { _this.data.core.to_open.push("#" + this.id.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:")); }\r
++                              });\r
++                              this.__callback(_this.data.core.to_open);\r
++                      },\r
++                      save_loaded : function () { },\r
++                      reload_nodes : function (is_callback) {\r
++                              var _this = this,\r
++                                      done = true,\r
++                                      current = [],\r
++                                      remaining = [];\r
++                              if(!is_callback) { \r
++                                      this.data.core.reopen = false; \r
++                                      this.data.core.refreshing = true; \r
++                                      this.data.core.to_open = $.map($.makeArray(this.data.core.to_open), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); });\r
++                                      this.data.core.to_load = $.map($.makeArray(this.data.core.to_load), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); });\r
++                                      if(this.data.core.to_open.length) {\r
++                                              this.data.core.to_load = this.data.core.to_load.concat(this.data.core.to_open);\r
++                                      }\r
++                              }\r
++                              if(this.data.core.to_load.length) {\r
++                                      $.each(this.data.core.to_load, function (i, val) {\r
++                                              if(val == "#") { return true; }\r
++                                              if($(val).length) { current.push(val); }\r
++                                              else { remaining.push(val); }\r
++                                      });\r
++                                      if(current.length) {\r
++                                              this.data.core.to_load = remaining;\r
++                                              $.each(current, function (i, val) { \r
++                                                      if(!_this._is_loaded(val)) {\r
++                                                              _this.load_node(val, function () { _this.reload_nodes(true); }, function () { _this.reload_nodes(true); });\r
++                                                              done = false;\r
++                                                      }\r
++                                              });\r
++                                      }\r
++                              }\r
++                              if(this.data.core.to_open.length) {\r
++                                      $.each(this.data.core.to_open, function (i, val) {\r
++                                              _this.open_node(val, false, true); \r
++                                      });\r
++                              }\r
++                              if(done) { \r
++                                      // TODO: find a more elegant approach to syncronizing returning requests\r
++                                      if(this.data.core.reopen) { clearTimeout(this.data.core.reopen); }\r
++                                      this.data.core.reopen = setTimeout(function () { _this.__callback({}, _this); }, 50);\r
++                                      this.data.core.refreshing = false;\r
++                                      this.reopen();\r
++                              }\r
++                      },\r
++                      reopen : function () {\r
++                              var _this = this;\r
++                              if(this.data.core.to_open.length) {\r
++                                      $.each(this.data.core.to_open, function (i, val) {\r
++                                              _this.open_node(val, false, true); \r
++                                      });\r
++                              }\r
++                              this.__callback({});\r
++                      },\r
++                      refresh : function (obj) {\r
++                              var _this = this;\r
++                              this.save_opened();\r
++                              if(!obj) { obj = -1; }\r
++                              obj = this._get_node(obj);\r
++                              if(!obj) { obj = -1; }\r
++                              if(obj !== -1) { obj.children("UL").remove(); }\r
++                              else { this.get_container_ul().empty(); }\r
++                              this.load_node(obj, function () { _this.__callback({ "obj" : obj}); _this.reload_nodes(); });\r
++                      },\r
++                      // Dummy function to fire after the first load (so that there is a jstree.loaded event)\r
++                      loaded  : function () { \r
++                              this.__callback(); \r
++                      },\r
++                      // deal with focus\r
++                      set_focus       : function () { \r
++                              if(this.is_focused()) { return; }\r
++                              var f = $.jstree._focused();\r
++                              if(f) { f.unset_focus(); }\r
++\r
++                              this.get_container().addClass("jstree-focused"); \r
++                              focused_instance = this.get_index(); \r
++                              this.__callback();\r
++                      },\r
++                      is_focused      : function () { \r
++                              return focused_instance == this.get_index(); \r
++                      },\r
++                      unset_focus     : function () {\r
++                              if(this.is_focused()) {\r
++                                      this.get_container().removeClass("jstree-focused"); \r
++                                      focused_instance = -1; \r
++                              }\r
++                              this.__callback();\r
++                      },\r
++\r
++                      // traverse\r
++                      _get_node               : function (obj) { \r
++                              var $obj = $(obj, this.get_container()); \r
++                              if($obj.is(".jstree") || obj == -1) { return -1; } \r
++                              $obj = $obj.closest("li", this.get_container()); \r
++                              return $obj.length ? $obj : false; \r
++                      },\r
++                      _get_next               : function (obj, strict) {\r
++                              obj = this._get_node(obj);\r
++                              if(obj === -1) { return this.get_container().find("> ul > li:first-child"); }\r
++                              if(!obj.length) { return false; }\r
++                              if(strict) { return (obj.nextAll("li").size() > 0) ? obj.nextAll("li:eq(0)") : false; }\r
++\r
++                              if(obj.hasClass("jstree-open")) { return obj.find("li:eq(0)"); }\r
++                              else if(obj.nextAll("li").size() > 0) { return obj.nextAll("li:eq(0)"); }\r
++                              else { return obj.parentsUntil(".jstree","li").next("li").eq(0); }\r
++                      },\r
++                      _get_prev               : function (obj, strict) {\r
++                              obj = this._get_node(obj);\r
++                              if(obj === -1) { return this.get_container().find("> ul > li:last-child"); }\r
++                              if(!obj.length) { return false; }\r
++                              if(strict) { return (obj.prevAll("li").length > 0) ? obj.prevAll("li:eq(0)") : false; }\r
++\r
++                              if(obj.prev("li").length) {\r
++                                      obj = obj.prev("li").eq(0);\r
++                                      while(obj.hasClass("jstree-open")) { obj = obj.children("ul:eq(0)").children("li:last"); }\r
++                                      return obj;\r
++                              }\r
++                              else { var o = obj.parentsUntil(".jstree","li:eq(0)"); return o.length ? o : false; }\r
++                      },\r
++                      _get_parent             : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              if(obj == -1 || !obj.length) { return false; }\r
++                              var o = obj.parentsUntil(".jstree", "li:eq(0)");\r
++                              return o.length ? o : -1;\r
++                      },\r
++                      _get_children   : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              if(obj === -1) { return this.get_container().children("ul:eq(0)").children("li"); }\r
++                              if(!obj.length) { return false; }\r
++                              return obj.children("ul:eq(0)").children("li");\r
++                      },\r
++                      get_path                : function (obj, id_mode) {\r
++                              var p = [],\r
++                                      _this = this;\r
++                              obj = this._get_node(obj);\r
++                              if(obj === -1 || !obj || !obj.length) { return false; }\r
++                              obj.parentsUntil(".jstree", "li").each(function () {\r
++                                      p.push( id_mode ? this.id : _this.get_text(this) );\r
++                              });\r
++                              p.reverse();\r
++                              p.push( id_mode ? obj.attr("id") : this.get_text(obj) );\r
++                              return p;\r
++                      },\r
++\r
++                      // string functions\r
++                      _get_string : function (key) {\r
++                              return this._get_settings().core.strings[key] || key;\r
++                      },\r
++\r
++                      is_open         : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-open"); },\r
++                      is_closed       : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-closed"); },\r
++                      is_leaf         : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-leaf"); },\r
++                      correct_state   : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              if(!obj || obj === -1) { return false; }\r
++                              obj.removeClass("jstree-closed jstree-open").addClass("jstree-leaf").children("ul").remove();\r
++                              this.__callback({ "obj" : obj });\r
++                      },\r
++                      // open/close\r
++                      open_node       : function (obj, callback, skip_animation) {\r
++                              obj = this._get_node(obj);\r
++                              if(!obj.length) { return false; }\r
++                              if(!obj.hasClass("jstree-closed")) { if(callback) { callback.call(); } return false; }\r
++                              var s = skip_animation || is_ie6 ? 0 : this._get_settings().core.animation,\r
++                                      t = this;\r
++                              if(!this._is_loaded(obj)) {\r
++                                      obj.children("a").addClass("jstree-loading");\r
++                                      this.load_node(obj, function () { t.open_node(obj, callback, skip_animation); }, callback);\r
++                              }\r
++                              else {\r
++                                      if(this._get_settings().core.open_parents) {\r
++                                              obj.parentsUntil(".jstree",".jstree-closed").each(function () {\r
++                                                      t.open_node(this, false, true);\r
++                                              });\r
++                                      }\r
++                                      if(s) { obj.children("ul").css("display","none"); }\r
++                                      obj.removeClass("jstree-closed").addClass("jstree-open").children("a").removeClass("jstree-loading");\r
++                                      if(s) { obj.children("ul").stop(true, true).slideDown(s, function () { this.style.display = ""; t.after_open(obj); }); }\r
++                                      else { t.after_open(obj); }\r
++                                      this.__callback({ "obj" : obj });\r
++                                      if(callback) { callback.call(); }\r
++                              }\r
++                      },\r
++                      after_open      : function (obj) { this.__callback({ "obj" : obj }); },\r
++                      close_node      : function (obj, skip_animation) {\r
++                              obj = this._get_node(obj);\r
++                              var s = skip_animation || is_ie6 ? 0 : this._get_settings().core.animation,\r
++                                      t = this;\r
++                              if(!obj.length || !obj.hasClass("jstree-open")) { return false; }\r
++                              if(s) { obj.children("ul").attr("style","display:block !important"); }\r
++                              obj.removeClass("jstree-open").addClass("jstree-closed");\r
++                              if(s) { obj.children("ul").stop(true, true).slideUp(s, function () { this.style.display = ""; t.after_close(obj); }); }\r
++                              else { t.after_close(obj); }\r
++                              this.__callback({ "obj" : obj });\r
++                      },\r
++                      after_close     : function (obj) { this.__callback({ "obj" : obj }); },\r
++                      toggle_node     : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              if(obj.hasClass("jstree-closed")) { return this.open_node(obj); }\r
++                              if(obj.hasClass("jstree-open")) { return this.close_node(obj); }\r
++                      },\r
++                      open_all        : function (obj, do_animation, original_obj) {\r
++                              obj = obj ? this._get_node(obj) : -1;\r
++                              if(!obj || obj === -1) { obj = this.get_container_ul(); }\r
++                              if(original_obj) { \r
++                                      obj = obj.find("li.jstree-closed");\r
++                              }\r
++                              else {\r
++                                      original_obj = obj;\r
++                                      if(obj.is(".jstree-closed")) { obj = obj.find("li.jstree-closed").andSelf(); }\r
++                                      else { obj = obj.find("li.jstree-closed"); }\r
++                              }\r
++                              var _this = this;\r
++                              obj.each(function () { \r
++                                      var __this = this; \r
++                                      if(!_this._is_loaded(this)) { _this.open_node(this, function() { _this.open_all(__this, do_animation, original_obj); }, !do_animation); }\r
++                                      else { _this.open_node(this, false, !do_animation); }\r
++                              });\r
++                              // so that callback is fired AFTER all nodes are open\r
++                              if(original_obj.find('li.jstree-closed').length === 0) { this.__callback({ "obj" : original_obj }); }\r
++                      },\r
++                      close_all       : function (obj, do_animation) {\r
++                              var _this = this;\r
++                              obj = obj ? this._get_node(obj) : this.get_container();\r
++                              if(!obj || obj === -1) { obj = this.get_container_ul(); }\r
++                              obj.find("li.jstree-open").andSelf().each(function () { _this.close_node(this, !do_animation); });\r
++                              this.__callback({ "obj" : obj });\r
++                      },\r
++                      clean_node      : function (obj) {\r
++                              obj = obj && obj != -1 ? $(obj) : this.get_container_ul();\r
++                              obj = obj.is("li") ? obj.find("li").andSelf() : obj.find("li");\r
++                              obj.removeClass("jstree-last")\r
++                                      .filter("li:last-child").addClass("jstree-last").end()\r
++                                      .filter(":has(li)")\r
++                                              .not(".jstree-open").removeClass("jstree-leaf").addClass("jstree-closed");\r
++                              obj.not(".jstree-open, .jstree-closed").addClass("jstree-leaf").children("ul").remove();\r
++                              this.__callback({ "obj" : obj });\r
++                      },\r
++                      // rollback\r
++                      get_rollback : function () { \r
++                              this.__callback();\r
++                              return { i : this.get_index(), h : this.get_container().children("ul").clone(true), d : this.data }; \r
++                      },\r
++                      set_rollback : function (html, data) {\r
++                              this.get_container().empty().append(html);\r
++                              this.data = data;\r
++                              this.__callback();\r
++                      },\r
++                      // Dummy functions to be overwritten by any datastore plugin included\r
++                      load_node       : function (obj, s_call, e_call) { this.__callback({ "obj" : obj }); },\r
++                      _is_loaded      : function (obj) { return true; },\r
++\r
++                      // Basic operations: create\r
++                      create_node     : function (obj, position, js, callback, is_loaded) {\r
++                              obj = this._get_node(obj);\r
++                              position = typeof position === "undefined" ? "last" : position;\r
++                              var d = $("<li />"),\r
++                                      s = this._get_settings().core,\r
++                                      tmp;\r
++\r
++                              if(obj !== -1 && !obj.length) { return false; }\r
++                              if(!is_loaded && !this._is_loaded(obj)) { this.load_node(obj, function () { this.create_node(obj, position, js, callback, true); }); return false; }\r
++\r
++                              this.__rollback();\r
++\r
++                              if(typeof js === "string") { js = { "data" : js }; }\r
++                              if(!js) { js = {}; }\r
++                              if(js.attr) { d.attr(js.attr); }\r
++                              if(js.metadata) { d.data(js.metadata); }\r
++                              if(js.state) { d.addClass("jstree-" + js.state); }\r
++                              if(!js.data) { js.data = this._get_string("new_node"); }\r
++                              if(!$.isArray(js.data)) { tmp = js.data; js.data = []; js.data.push(tmp); }\r
++                              $.each(js.data, function (i, m) {\r
++                                      tmp = $("<a />");\r
++                                      if($.isFunction(m)) { m = m.call(this, js); }\r
++                                      if(typeof m == "string") { tmp.attr('href','#')[ s.html_titles ? "html" : "text" ](m); }\r
++                                      else {\r
++                                              if(!m.attr) { m.attr = {}; }\r
++                                              if(!m.attr.href) { m.attr.href = '#'; }\r
++                                              tmp.attr(m.attr)[ s.html_titles ? "html" : "text" ](m.title);\r
++                                              if(m.language) { tmp.addClass(m.language); }\r
++                                      }\r
++                                      tmp.prepend("<ins class='jstree-icon'>&#160;</ins>");\r
++                                      if(!m.icon && js.icon) { m.icon = js.icon; }\r
++                                      if(m.icon) { \r
++                                              if(m.icon.indexOf("/") === -1) { tmp.children("ins").addClass(m.icon); }\r
++                                              else { tmp.children("ins").css("background","url('" + m.icon + "') center center no-repeat"); }\r
++                                      }\r
++                                      d.append(tmp);\r
++                              });\r
++                              d.prepend("<ins class='jstree-icon'>&#160;</ins>");\r
++                              if(obj === -1) {\r
++                                      obj = this.get_container();\r
++                                      if(position === "before") { position = "first"; }\r
++                                      if(position === "after") { position = "last"; }\r
++                              }\r
++                              switch(position) {\r
++                                      case "before": obj.before(d); tmp = this._get_parent(obj); break;\r
++                                      case "after" : obj.after(d);  tmp = this._get_parent(obj); break;\r
++                                      case "inside":\r
++                                      case "first" :\r
++                                              if(!obj.children("ul").length) { obj.append("<ul />"); }\r
++                                              obj.children("ul").prepend(d);\r
++                                              tmp = obj;\r
++                                              break;\r
++                                      case "last":\r
++                                              if(!obj.children("ul").length) { obj.append("<ul />"); }\r
++                                              obj.children("ul").append(d);\r
++                                              tmp = obj;\r
++                                              break;\r
++                                      default:\r
++                                              if(!obj.children("ul").length) { obj.append("<ul />"); }\r
++                                              if(!position) { position = 0; }\r
++                                              tmp = obj.children("ul").children("li").eq(position);\r
++                                              if(tmp.length) { tmp.before(d); }\r
++                                              else { obj.children("ul").append(d); }\r
++                                              tmp = obj;\r
++                                              break;\r
++                              }\r
++                              if(tmp === -1 || tmp.get(0) === this.get_container().get(0)) { tmp = -1; }\r
++                              this.clean_node(tmp);\r
++                              this.__callback({ "obj" : d, "parent" : tmp });\r
++                              if(callback) { callback.call(this, d); }\r
++                              return d;\r
++                      },\r
++                      // Basic operations: rename (deal with text)\r
++                      get_text        : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              if(!obj.length) { return false; }\r
++                              var s = this._get_settings().core.html_titles;\r
++                              obj = obj.children("a:eq(0)");\r
++                              if(s) {\r
++                                      obj = obj.clone();\r
++                                      obj.children("INS").remove();\r
++                                      return obj.html();\r
++                              }\r
++                              else {\r
++                                      obj = obj.contents().filter(function() { return this.nodeType == 3; })[0];\r
++                                      return obj.nodeValue;\r
++                              }\r
++                      },\r
++                      set_text        : function (obj, val) {\r
++                              obj = this._get_node(obj);\r
++                              if(!obj.length) { return false; }\r
++                              obj = obj.children("a:eq(0)");\r
++                              if(this._get_settings().core.html_titles) {\r
++                                      var tmp = obj.children("INS").clone();\r
++                                      obj.html(val).prepend(tmp);\r
++                                      this.__callback({ "obj" : obj, "name" : val });\r
++                                      return true;\r
++                              }\r
++                              else {\r
++                                      obj = obj.contents().filter(function() { return this.nodeType == 3; })[0];\r
++                                      this.__callback({ "obj" : obj, "name" : val });\r
++                                      return (obj.nodeValue = val);\r
++                              }\r
++                      },\r
++                      rename_node : function (obj, val) {\r
++                              obj = this._get_node(obj);\r
++                              this.__rollback();\r
++                              if(obj && obj.length && this.set_text.apply(this, Array.prototype.slice.call(arguments))) { this.__callback({ "obj" : obj, "name" : val }); }\r
++                      },\r
++                      // Basic operations: deleting nodes\r
++                      delete_node : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              if(!obj.length) { return false; }\r
++                              this.__rollback();\r
++                              var p = this._get_parent(obj), prev = $([]), t = this;\r
++                              obj.each(function () {\r
++                                      prev = prev.add(t._get_prev(this));\r
++                              });\r
++                              obj = obj.detach();\r
++                              if(p !== -1 && p.find("> ul > li").length === 0) {\r
++                                      p.removeClass("jstree-open jstree-closed").addClass("jstree-leaf");\r
++                              }\r
++                              this.clean_node(p);\r
++                              this.__callback({ "obj" : obj, "prev" : prev, "parent" : p });\r
++                              return obj;\r
++                      },\r
++                      prepare_move : function (o, r, pos, cb, is_cb) {\r
++                              var p = {};\r
++\r
++                              p.ot = $.jstree._reference(o) || this;\r
++                              p.o = p.ot._get_node(o);\r
++                              p.r = r === - 1 ? -1 : this._get_node(r);\r
++                              p.p = (typeof pos === "undefined" || pos === false) ? "last" : pos; // TODO: move to a setting\r
++                              if(!is_cb && prepared_move.o && prepared_move.o[0] === p.o[0] && prepared_move.r[0] === p.r[0] && prepared_move.p === p.p) {\r
++                                      this.__callback(prepared_move);\r
++                                      if(cb) { cb.call(this, prepared_move); }\r
++                                      return;\r
++                              }\r
++                              p.ot = $.jstree._reference(p.o) || this;\r
++                              p.rt = $.jstree._reference(p.r) || this; // r === -1 ? p.ot : $.jstree._reference(p.r) || this\r
++                              if(p.r === -1 || !p.r) {\r
++                                      p.cr = -1;\r
++                                      switch(p.p) {\r
++                                              case "first":\r
++                                              case "before":\r
++                                              case "inside":\r
++                                                      p.cp = 0; \r
++                                                      break;\r
++                                              case "after":\r
++                                              case "last":\r
++                                                      p.cp = p.rt.get_container().find(" > ul > li").length; \r
++                                                      break;\r
++                                              default:\r
++                                                      p.cp = p.p;\r
++                                                      break;\r
++                                      }\r
++                              }\r
++                              else {\r
++                                      if(!/^(before|after)$/.test(p.p) && !this._is_loaded(p.r)) {\r
++                                              return this.load_node(p.r, function () { this.prepare_move(o, r, pos, cb, true); });\r
++                                      }\r
++                                      switch(p.p) {\r
++                                              case "before":\r
++                                                      p.cp = p.r.index();\r
++                                                      p.cr = p.rt._get_parent(p.r);\r
++                                                      break;\r
++                                              case "after":\r
++                                                      p.cp = p.r.index() + 1;\r
++                                                      p.cr = p.rt._get_parent(p.r);\r
++                                                      break;\r
++                                              case "inside":\r
++                                              case "first":\r
++                                                      p.cp = 0;\r
++                                                      p.cr = p.r;\r
++                                                      break;\r
++                                              case "last":\r
++                                                      p.cp = p.r.find(" > ul > li").length; \r
++                                                      p.cr = p.r;\r
++                                                      break;\r
++                                              default: \r
++                                                      p.cp = p.p;\r
++                                                      p.cr = p.r;\r
++                                                      break;\r
++                                      }\r
++                              }\r
++                              p.np = p.cr == -1 ? p.rt.get_container() : p.cr;\r
++                              p.op = p.ot._get_parent(p.o);\r
++                              p.cop = p.o.index();\r
++                              if(p.op === -1) { p.op = p.ot ? p.ot.get_container() : this.get_container(); }\r
++                              if(!/^(before|after)$/.test(p.p) && p.op && p.np && p.op[0] === p.np[0] && p.o.index() < p.cp) { p.cp++; }\r
++                              //if(p.p === "before" && p.op && p.np && p.op[0] === p.np[0] && p.o.index() < p.cp) { p.cp--; }\r
++                              p.or = p.np.find(" > ul > li:nth-child(" + (p.cp + 1) + ")");\r
++                              prepared_move = p;\r
++                              this.__callback(prepared_move);\r
++                              if(cb) { cb.call(this, prepared_move); }\r
++                      },\r
++                      check_move : function () {\r
++                              var obj = prepared_move, ret = true, r = obj.r === -1 ? this.get_container() : obj.r;\r
++                              if(!obj || !obj.o || obj.or[0] === obj.o[0]) { return false; }\r
++                              if(obj.op && obj.np && obj.op[0] === obj.np[0] && obj.cp - 1 === obj.o.index()) { return false; }\r
++                              obj.o.each(function () { \r
++                                      if(r.parentsUntil(".jstree", "li").andSelf().index(this) !== -1) { ret = false; return false; }\r
++                              });\r
++                              return ret;\r
++                      },\r
++                      move_node : function (obj, ref, position, is_copy, is_prepared, skip_check) {\r
++                              if(!is_prepared) { \r
++                                      return this.prepare_move(obj, ref, position, function (p) {\r
++                                              this.move_node(p, false, false, is_copy, true, skip_check);\r
++                                      });\r
++                              }\r
++                              if(is_copy) { \r
++                                      prepared_move.cy = true;\r
++                              }\r
++                              if(!skip_check && !this.check_move()) { return false; }\r
++\r
++                              this.__rollback();\r
++                              var o = false;\r
++                              if(is_copy) {\r
++                                      o = obj.o.clone(true);\r
++                                      o.find("*[id]").andSelf().each(function () {\r
++                                              if(this.id) { this.id = "copy_" + this.id; }\r
++                                      });\r
++                              }\r
++                              else { o = obj.o; }\r
++\r
++                              if(obj.or.length) { obj.or.before(o); }\r
++                              else { \r
++                                      if(!obj.np.children("ul").length) { $("<ul />").appendTo(obj.np); }\r
++                                      obj.np.children("ul:eq(0)").append(o); \r
++                              }\r
++\r
++                              try { \r
++                                      obj.ot.clean_node(obj.op);\r
++                                      obj.rt.clean_node(obj.np);\r
++                                      if(!obj.op.find("> ul > li").length) {\r
++                                              obj.op.removeClass("jstree-open jstree-closed").addClass("jstree-leaf").children("ul").remove();\r
++                                      }\r
++                              } catch (e) { }\r
++\r
++                              if(is_copy) { \r
++                                      prepared_move.cy = true;\r
++                                      prepared_move.oc = o; \r
++                              }\r
++                              this.__callback(prepared_move);\r
++                              return prepared_move;\r
++                      },\r
++                      _get_move : function () { return prepared_move; }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree ui plugin\r
++ * This plugins handles selecting/deselecting/hovering/dehovering nodes\r
++ */\r
++(function ($) {\r
++      var scrollbar_width, e1, e2;\r
++      $(function() {\r
++              if (/msie/.test(navigator.userAgent.toLowerCase())) {\r
++                      e1 = $('<textarea cols="10" rows="2"></textarea>').css({ position: 'absolute', top: -1000, left: 0 }).appendTo('body');\r
++                      e2 = $('<textarea cols="10" rows="2" style="overflow: hidden;"></textarea>').css({ position: 'absolute', top: -1000, left: 0 }).appendTo('body');\r
++                      scrollbar_width = e1.width() - e2.width();\r
++                      e1.add(e2).remove();\r
++              } \r
++              else {\r
++                      e1 = $('<div />').css({ width: 100, height: 100, overflow: 'auto', position: 'absolute', top: -1000, left: 0 })\r
++                                      .prependTo('body').append('<div />').find('div').css({ width: '100%', height: 200 });\r
++                      scrollbar_width = 100 - e1.width();\r
++                      e1.parent().remove();\r
++              }\r
++      });\r
++      $.jstree.plugin("ui", {\r
++              __init : function () { \r
++                      this.data.ui.selected = $(); \r
++                      this.data.ui.last_selected = false; \r
++                      this.data.ui.hovered = null;\r
++                      this.data.ui.to_select = this.get_settings().ui.initially_select;\r
++\r
++                      this.get_container()\r
++                              .delegate("a", "click.jstree", $.proxy(function (event) {\r
++                                              event.preventDefault();\r
++                                              event.currentTarget.blur();\r
++                                              if(!$(event.currentTarget).hasClass("jstree-loading")) {\r
++                                                      this.select_node(event.currentTarget, true, event);\r
++                                              }\r
++                                      }, this))\r
++                              .delegate("a", "mouseenter.jstree", $.proxy(function (event) {\r
++                                              if(!$(event.currentTarget).hasClass("jstree-loading")) {\r
++                                                      this.hover_node(event.target);\r
++                                              }\r
++                                      }, this))\r
++                              .delegate("a", "mouseleave.jstree", $.proxy(function (event) {\r
++                                              if(!$(event.currentTarget).hasClass("jstree-loading")) {\r
++                                                      this.dehover_node(event.target);\r
++                                              }\r
++                                      }, this))\r
++                              .bind("reopen.jstree", $.proxy(function () { \r
++                                              this.reselect();\r
++                                      }, this))\r
++                              .bind("get_rollback.jstree", $.proxy(function () { \r
++                                              this.dehover_node();\r
++                                              this.save_selected();\r
++                                      }, this))\r
++                              .bind("set_rollback.jstree", $.proxy(function () { \r
++                                              this.reselect();\r
++                                      }, this))\r
++                              .bind("close_node.jstree", $.proxy(function (event, data) { \r
++                                              var s = this._get_settings().ui,\r
++                                                      obj = this._get_node(data.rslt.obj),\r
++                                                      clk = (obj && obj.length) ? obj.children("ul").find("a.jstree-clicked") : $(),\r
++                                                      _this = this;\r
++                                              if(s.selected_parent_close === false || !clk.length) { return; }\r
++                                              clk.each(function () { \r
++                                                      _this.deselect_node(this);\r
++                                                      if(s.selected_parent_close === "select_parent") { _this.select_node(obj); }\r
++                                              });\r
++                                      }, this))\r
++                              .bind("delete_node.jstree", $.proxy(function (event, data) { \r
++                                              var s = this._get_settings().ui.select_prev_on_delete,\r
++                                                      obj = this._get_node(data.rslt.obj),\r
++                                                      clk = (obj && obj.length) ? obj.find("a.jstree-clicked") : [],\r
++                                                      _this = this;\r
++                                              clk.each(function () { _this.deselect_node(this); });\r
++                                              if(s && clk.length) { \r
++                                                      data.rslt.prev.each(function () { \r
++                                                              if(this.parentNode) { _this.select_node(this); return false; /* if return false is removed all prev nodes will be selected */}\r
++                                                      });\r
++                                              }\r
++                                      }, this))\r
++                              .bind("move_node.jstree", $.proxy(function (event, data) { \r
++                                              if(data.rslt.cy) { \r
++                                                      data.rslt.oc.find("a.jstree-clicked").removeClass("jstree-clicked");\r
++                                              }\r
++                                      }, this));\r
++              },\r
++              defaults : {\r
++                      select_limit : -1, // 0, 1, 2 ... or -1 for unlimited\r
++                      select_multiple_modifier : "ctrl", // on, or ctrl, shift, alt\r
++                      select_range_modifier : "shift",\r
++                      selected_parent_close : "select_parent", // false, "deselect", "select_parent"\r
++                      selected_parent_open : true,\r
++                      select_prev_on_delete : true,\r
++                      disable_selecting_children : false,\r
++                      initially_select : []\r
++              },\r
++              _fn : { \r
++                      _get_node : function (obj, allow_multiple) {\r
++                              if(typeof obj === "undefined" || obj === null) { return allow_multiple ? this.data.ui.selected : this.data.ui.last_selected; }\r
++                              var $obj = $(obj, this.get_container()); \r
++                              if($obj.is(".jstree") || obj == -1) { return -1; } \r
++                              $obj = $obj.closest("li", this.get_container()); \r
++                              return $obj.length ? $obj : false; \r
++                      },\r
++                      _ui_notify : function (n, data) {\r
++                              if(data.selected) {\r
++                                      this.select_node(n, false);\r
++                              }\r
++                      },\r
++                      save_selected : function () {\r
++                              var _this = this;\r
++                              this.data.ui.to_select = [];\r
++                              this.data.ui.selected.each(function () { if(this.id) { _this.data.ui.to_select.push("#" + this.id.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:")); } });\r
++                              this.__callback(this.data.ui.to_select);\r
++                      },\r
++                      reselect : function () {\r
++                              var _this = this,\r
++                                      s = this.data.ui.to_select;\r
++                              s = $.map($.makeArray(s), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); });\r
++                              // this.deselect_all(); WHY deselect, breaks plugin state notifier?\r
++                              $.each(s, function (i, val) { if(val && val !== "#") { _this.select_node(val); } });\r
++                              this.data.ui.selected = this.data.ui.selected.filter(function () { return this.parentNode; });\r
++                              this.__callback();\r
++                      },\r
++                      refresh : function (obj) {\r
++                              this.save_selected();\r
++                              return this.__call_old();\r
++                      },\r
++                      hover_node : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              if(!obj.length) { return false; }\r
++                              //if(this.data.ui.hovered && obj.get(0) === this.data.ui.hovered.get(0)) { return; }\r
++                              if(!obj.hasClass("jstree-hovered")) { this.dehover_node(); }\r
++                              this.data.ui.hovered = obj.children("a").addClass("jstree-hovered").parent();\r
++                              this._fix_scroll(obj);\r
++                              this.__callback({ "obj" : obj });\r
++                      },\r
++                      dehover_node : function () {\r
++                              var obj = this.data.ui.hovered, p;\r
++                              if(!obj || !obj.length) { return false; }\r
++                              p = obj.children("a").removeClass("jstree-hovered").parent();\r
++                              if(this.data.ui.hovered[0] === p[0]) { this.data.ui.hovered = null; }\r
++                              this.__callback({ "obj" : obj });\r
++                      },\r
++                      select_node : function (obj, check, e) {\r
++                              obj = this._get_node(obj);\r
++                              if(obj == -1 || !obj || !obj.length) { return false; }\r
++                              var s = this._get_settings().ui,\r
++                                      is_multiple = (s.select_multiple_modifier == "on" || (s.select_multiple_modifier !== false && e && e[s.select_multiple_modifier + "Key"])),\r
++                                      is_range = (s.select_range_modifier !== false && e && e[s.select_range_modifier + "Key"] && this.data.ui.last_selected && this.data.ui.last_selected[0] !== obj[0] && this.data.ui.last_selected.parent()[0] === obj.parent()[0]),\r
++                                      is_selected = this.is_selected(obj),\r
++                                      proceed = true,\r
++                                      t = this;\r
++                              if(check) {\r
++                                      if(s.disable_selecting_children && is_multiple && \r
++                                              (\r
++                                                      (obj.parentsUntil(".jstree","li").children("a.jstree-clicked").length) ||\r
++                                                      (obj.children("ul").find("a.jstree-clicked:eq(0)").length)\r
++                                              )\r
++                                      ) {\r
++                                              return false;\r
++                                      }\r
++                                      proceed = false;\r
++                                      switch(!0) {\r
++                                              case (is_range):\r
++                                                      this.data.ui.last_selected.addClass("jstree-last-selected");\r
++                                                      obj = obj[ obj.index() < this.data.ui.last_selected.index() ? "nextUntil" : "prevUntil" ](".jstree-last-selected").andSelf();\r
++                                                      if(s.select_limit == -1 || obj.length < s.select_limit) {\r
++                                                              this.data.ui.last_selected.removeClass("jstree-last-selected");\r
++                                                              this.data.ui.selected.each(function () {\r
++                                                                      if(this !== t.data.ui.last_selected[0]) { t.deselect_node(this); }\r
++                                                              });\r
++                                                              is_selected = false;\r
++                                                              proceed = true;\r
++                                                      }\r
++                                                      else {\r
++                                                              proceed = false;\r
++                                                      }\r
++                                                      break;\r
++                                              case (is_selected && !is_multiple): \r
++                                                      this.deselect_all();\r
++                                                      is_selected = false;\r
++                                                      proceed = true;\r
++                                                      break;\r
++                                              case (!is_selected && !is_multiple): \r
++                                                      if(s.select_limit == -1 || s.select_limit > 0) {\r
++                                                              this.deselect_all();\r
++                                                              proceed = true;\r
++                                                      }\r
++                                                      break;\r
++                                              case (is_selected && is_multiple): \r
++                                                      this.deselect_node(obj);\r
++                                                      break;\r
++                                              case (!is_selected && is_multiple): \r
++                                                      if(s.select_limit == -1 || this.data.ui.selected.length + 1 <= s.select_limit) { \r
++                                                              proceed = true;\r
++                                                      }\r
++                                                      break;\r
++                                      }\r
++                              }\r
++                              if(proceed && !is_selected) {\r
++                                      if(!is_range) { this.data.ui.last_selected = obj; }\r
++                                      obj.children("a").addClass("jstree-clicked");\r
++                                      if(s.selected_parent_open) {\r
++                                              obj.parents(".jstree-closed").each(function () { t.open_node(this, false, true); });\r
++                                      }\r
++                                      this.data.ui.selected = this.data.ui.selected.add(obj);\r
++                                      this._fix_scroll(obj.eq(0));\r
++                                      this.__callback({ "obj" : obj, "e" : e });\r
++                              }\r
++                      },\r
++                      _fix_scroll : function (obj) {\r
++                              var c = this.get_container()[0], t;\r
++                              if(c.scrollHeight > c.offsetHeight) {\r
++                                      obj = this._get_node(obj);\r
++                                      if(!obj || obj === -1 || !obj.length || !obj.is(":visible")) { return; }\r
++                                      t = obj.offset().top - this.get_container().offset().top;\r
++                                      if(t < 0) { \r
++                                              c.scrollTop = c.scrollTop + t - 1; \r
++                                      }\r
++                                      if(t + this.data.core.li_height + (c.scrollWidth > c.offsetWidth ? scrollbar_width : 0) > c.offsetHeight) { \r
++                                              c.scrollTop = c.scrollTop + (t - c.offsetHeight + this.data.core.li_height + 1 + (c.scrollWidth > c.offsetWidth ? scrollbar_width : 0)); \r
++                                      }\r
++                              }\r
++                      },\r
++                      deselect_node : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              if(!obj.length) { return false; }\r
++                              if(this.is_selected(obj)) {\r
++                                      obj.children("a").removeClass("jstree-clicked");\r
++                                      this.data.ui.selected = this.data.ui.selected.not(obj);\r
++                                      if(this.data.ui.last_selected.get(0) === obj.get(0)) { this.data.ui.last_selected = this.data.ui.selected.eq(0); }\r
++                                      this.__callback({ "obj" : obj });\r
++                              }\r
++                      },\r
++                      toggle_select : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              if(!obj.length) { return false; }\r
++                              if(this.is_selected(obj)) { this.deselect_node(obj); }\r
++                              else { this.select_node(obj); }\r
++                      },\r
++                      is_selected : function (obj) { return this.data.ui.selected.index(this._get_node(obj)) >= 0; },\r
++                      get_selected : function (context) { \r
++                              return context ? $(context).find("a.jstree-clicked").parent() : this.data.ui.selected; \r
++                      },\r
++                      deselect_all : function (context) {\r
++                              var ret = context ? $(context).find("a.jstree-clicked").parent() : this.get_container().find("a.jstree-clicked").parent();\r
++                              ret.children("a.jstree-clicked").removeClass("jstree-clicked");\r
++                              this.data.ui.selected = $([]);\r
++                              this.data.ui.last_selected = false;\r
++                              this.__callback({ "obj" : ret });\r
++                      }\r
++              }\r
++      });\r
++      // include the selection plugin by default\r
++      $.jstree.defaults.plugins.push("ui");\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree CRRM plugin\r
++ * Handles creating/renaming/removing/moving nodes by user interaction.\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("crrm", { \r
++              __init : function () {\r
++                      this.get_container()\r
++                              .bind("move_node.jstree", $.proxy(function (e, data) {\r
++                                      if(this._get_settings().crrm.move.open_onmove) {\r
++                                              var t = this;\r
++                                              data.rslt.np.parentsUntil(".jstree").andSelf().filter(".jstree-closed").each(function () {\r
++                                                      t.open_node(this, false, true);\r
++                                              });\r
++                                      }\r
++                              }, this));\r
++              },\r
++              defaults : {\r
++                      input_width_limit : 200,\r
++                      move : {\r
++                              always_copy                     : false, // false, true or "multitree"\r
++                              open_onmove                     : true,\r
++                              default_position        : "last",\r
++                              check_move                      : function (m) { return true; }\r
++                      }\r
++              },\r
++              _fn : {\r
++                      _show_input : function (obj, callback) {\r
++                              obj = this._get_node(obj);\r
++                              var rtl = this._get_settings().core.rtl,\r
++                                      w = this._get_settings().crrm.input_width_limit,\r
++                                      w1 = obj.children("ins").width(),\r
++                                      w2 = obj.find("> a:visible > ins").width() * obj.find("> a:visible > ins").length,\r
++                                      t = this.get_text(obj),\r
++                                      h1 = $("<div />", { css : { "position" : "absolute", "top" : "-200px", "left" : (rtl ? "0px" : "-1000px"), "visibility" : "hidden" } }).appendTo("body"),\r
++                                      h2 = obj.css("position","relative").append(\r
++                                      $("<input />", { \r
++                                              "value" : t,\r
++                                              "class" : "jstree-rename-input",\r
++                                              // "size" : t.length,\r
++                                              "css" : {\r
++                                                      "padding" : "0",\r
++                                                      "border" : "1px solid silver",\r
++                                                      "position" : "absolute",\r
++                                                      "left"  : (rtl ? "auto" : (w1 + w2 + 4) + "px"),\r
++                                                      "right" : (rtl ? (w1 + w2 + 4) + "px" : "auto"),\r
++                                                      "top" : "0px",\r
++                                                      "height" : (this.data.core.li_height - 2) + "px",\r
++                                                      "lineHeight" : (this.data.core.li_height - 2) + "px",\r
++                                                      "width" : "150px" // will be set a bit further down\r
++                                              },\r
++                                              "blur" : $.proxy(function () {\r
++                                                      var i = obj.children(".jstree-rename-input"),\r
++                                                              v = i.val();\r
++                                                      if(v === "") { v = t; }\r
++                                                      h1.remove();\r
++                                                      i.remove(); // rollback purposes\r
++                                                      this.set_text(obj,t); // rollback purposes\r
++                                                      this.rename_node(obj, v);\r
++                                                      callback.call(this, obj, v, t);\r
++                                                      obj.css("position","");\r
++                                              }, this),\r
++                                              "keyup" : function (event) {\r
++                                                      var key = event.keyCode || event.which;\r
++                                                      if(key == 27) { this.value = t; this.blur(); return; }\r
++                                                      else if(key == 13) { this.blur(); return; }\r
++                                                      else {\r
++                                                              h2.width(Math.min(h1.text("pW" + this.value).width(),w));\r
++                                                      }\r
++                                              },\r
++                                              "keypress" : function(event) {\r
++                                                      var key = event.keyCode || event.which;\r
++                                                      if(key == 13) { return false; }\r
++                                              }\r
++                                      })\r
++                              ).children(".jstree-rename-input"); \r
++                              this.set_text(obj, "");\r
++                              h1.css({\r
++                                              fontFamily              : h2.css('fontFamily')          || '',\r
++                                              fontSize                : h2.css('fontSize')            || '',\r
++                                              fontWeight              : h2.css('fontWeight')          || '',\r
++                                              fontStyle               : h2.css('fontStyle')           || '',\r
++                                              fontStretch             : h2.css('fontStretch')         || '',\r
++                                              fontVariant             : h2.css('fontVariant')         || '',\r
++                                              letterSpacing   : h2.css('letterSpacing')       || '',\r
++                                              wordSpacing             : h2.css('wordSpacing')         || ''\r
++                              });\r
++                              h2.width(Math.min(h1.text("pW" + h2[0].value).width(),w))[0].select();\r
++                      },\r
++                      rename : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              this.__rollback();\r
++                              var f = this.__callback;\r
++                              this._show_input(obj, function (obj, new_name, old_name) { \r
++                                      f.call(this, { "obj" : obj, "new_name" : new_name, "old_name" : old_name });\r
++                              });\r
++                      },\r
++                      create : function (obj, position, js, callback, skip_rename) {\r
++                              var t, _this = this;\r
++                              obj = this._get_node(obj);\r
++                              if(!obj) { obj = -1; }\r
++                              this.__rollback();\r
++                              t = this.create_node(obj, position, js, function (t) {\r
++                                      var p = this._get_parent(t),\r
++                                              pos = $(t).index();\r
++                                      if(callback) { callback.call(this, t); }\r
++                                      if(p.length && p.hasClass("jstree-closed")) { this.open_node(p, false, true); }\r
++                                      if(!skip_rename) { \r
++                                              this._show_input(t, function (obj, new_name, old_name) { \r
++                                                      _this.__callback({ "obj" : obj, "name" : new_name, "parent" : p, "position" : pos });\r
++                                              });\r
++                                      }\r
++                                      else { _this.__callback({ "obj" : t, "name" : this.get_text(t), "parent" : p, "position" : pos }); }\r
++                              });\r
++                              return t;\r
++                      },\r
++                      remove : function (obj) {\r
++                              obj = this._get_node(obj, true);\r
++                              var p = this._get_parent(obj), prev = this._get_prev(obj);\r
++                              this.__rollback();\r
++                              obj = this.delete_node(obj);\r
++                              if(obj !== false) { this.__callback({ "obj" : obj, "prev" : prev, "parent" : p }); }\r
++                      },\r
++                      check_move : function () {\r
++                              if(!this.__call_old()) { return false; }\r
++                              var s = this._get_settings().crrm.move;\r
++                              if(!s.check_move.call(this, this._get_move())) { return false; }\r
++                              return true;\r
++                      },\r
++                      move_node : function (obj, ref, position, is_copy, is_prepared, skip_check) {\r
++                              var s = this._get_settings().crrm.move;\r
++                              if(!is_prepared) { \r
++                                      if(typeof position === "undefined") { position = s.default_position; }\r
++                                      if(position === "inside" && !s.default_position.match(/^(before|after)$/)) { position = s.default_position; }\r
++                                      return this.__call_old(true, obj, ref, position, is_copy, false, skip_check);\r
++                              }\r
++                              // if the move is already prepared\r
++                              if(s.always_copy === true || (s.always_copy === "multitree" && obj.rt.get_index() !== obj.ot.get_index() )) {\r
++                                      is_copy = true;\r
++                              }\r
++                              this.__call_old(true, obj, ref, position, is_copy, true, skip_check);\r
++                      },\r
++\r
++                      cut : function (obj) {\r
++                              obj = this._get_node(obj, true);\r
++                              if(!obj || !obj.length) { return false; }\r
++                              this.data.crrm.cp_nodes = false;\r
++                              this.data.crrm.ct_nodes = obj;\r
++                              this.__callback({ "obj" : obj });\r
++                      },\r
++                      copy : function (obj) {\r
++                              obj = this._get_node(obj, true);\r
++                              if(!obj || !obj.length) { return false; }\r
++                              this.data.crrm.ct_nodes = false;\r
++                              this.data.crrm.cp_nodes = obj;\r
++                              this.__callback({ "obj" : obj });\r
++                      },\r
++                      paste : function (obj) { \r
++                              obj = this._get_node(obj);\r
++                              if(!obj || !obj.length) { return false; }\r
++                              var nodes = this.data.crrm.ct_nodes ? this.data.crrm.ct_nodes : this.data.crrm.cp_nodes;\r
++                              if(!this.data.crrm.ct_nodes && !this.data.crrm.cp_nodes) { return false; }\r
++                              if(this.data.crrm.ct_nodes) { this.move_node(this.data.crrm.ct_nodes, obj); this.data.crrm.ct_nodes = false; }\r
++                              if(this.data.crrm.cp_nodes) { this.move_node(this.data.crrm.cp_nodes, obj, false, true); }\r
++                              this.__callback({ "obj" : obj, "nodes" : nodes });\r
++                      }\r
++              }\r
++      });\r
++      // include the crr plugin by default\r
++      // $.jstree.defaults.plugins.push("crrm");\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree themes plugin\r
++ * Handles loading and setting themes, as well as detecting path to themes, etc.\r
++ */\r
++(function ($) {\r
++      var themes_loaded = [];\r
++      // this variable stores the path to the themes folder - if left as false - it will be autodetected\r
++      $.jstree._themes = false;\r
++      $.jstree.plugin("themes", {\r
++              __init : function () { \r
++                      this.get_container()\r
++                              .bind("init.jstree", $.proxy(function () {\r
++                                              var s = this._get_settings().themes;\r
++                                              this.data.themes.dots = s.dots; \r
++                                              this.data.themes.icons = s.icons; \r
++                                              this.set_theme(s.theme, s.url);\r
++                                      }, this))\r
++                              .bind("loaded.jstree", $.proxy(function () {\r
++                                              // bound here too, as simple HTML tree's won't honor dots & icons otherwise\r
++                                              if(!this.data.themes.dots) { this.hide_dots(); }\r
++                                              else { this.show_dots(); }\r
++                                              if(!this.data.themes.icons) { this.hide_icons(); }\r
++                                              else { this.show_icons(); }\r
++                                      }, this));\r
++              },\r
++              defaults : { \r
++                      theme : "default", \r
++                      url : false,\r
++                      dots : true,\r
++                      icons : true\r
++              },\r
++              _fn : {\r
++                      set_theme : function (theme_name, theme_url) {\r
++                              if(!theme_name) { return false; }\r
++                              if(!theme_url) { theme_url = $.jstree._themes + theme_name + '/style.css'; }\r
++                              if($.inArray(theme_url, themes_loaded) == -1) {\r
++                                      $.vakata.css.add_sheet({ "url" : theme_url });\r
++                                      themes_loaded.push(theme_url);\r
++                              }\r
++                              if(this.data.themes.theme != theme_name) {\r
++                                      this.get_container().removeClass('jstree-' + this.data.themes.theme);\r
++                                      this.data.themes.theme = theme_name;\r
++                              }\r
++                              this.get_container().addClass('jstree-' + theme_name);\r
++                              if(!this.data.themes.dots) { this.hide_dots(); }\r
++                              else { this.show_dots(); }\r
++                              if(!this.data.themes.icons) { this.hide_icons(); }\r
++                              else { this.show_icons(); }\r
++                              this.__callback();\r
++                      },\r
++                      get_theme       : function () { return this.data.themes.theme; },\r
++\r
++                      show_dots       : function () { this.data.themes.dots = true; this.get_container().children("ul").removeClass("jstree-no-dots"); },\r
++                      hide_dots       : function () { this.data.themes.dots = false; this.get_container().children("ul").addClass("jstree-no-dots"); },\r
++                      toggle_dots     : function () { if(this.data.themes.dots) { this.hide_dots(); } else { this.show_dots(); } },\r
++\r
++                      show_icons      : function () { this.data.themes.icons = true; this.get_container().children("ul").removeClass("jstree-no-icons"); },\r
++                      hide_icons      : function () { this.data.themes.icons = false; this.get_container().children("ul").addClass("jstree-no-icons"); },\r
++                      toggle_icons: function () { if(this.data.themes.icons) { this.hide_icons(); } else { this.show_icons(); } }\r
++              }\r
++      });\r
++      // autodetect themes path\r
++      $(function () {\r
++              if($.jstree._themes === false) {\r
++                      $("script").each(function () { \r
++                              if(this.src.toString().match(/jquery\.jstree[^\/]*?\.js(\?.*)?$/)) { \r
++                                      $.jstree._themes = this.src.toString().replace(/jquery\.jstree[^\/]*?\.js(\?.*)?$/, "") + 'themes/'; \r
++                                      return false; \r
++                              }\r
++                      });\r
++              }\r
++              if($.jstree._themes === false) { $.jstree._themes = "themes/"; }\r
++      });\r
++      // include the themes plugin by default\r
++      $.jstree.defaults.plugins.push("themes");\r
++})(jQuery);\r
++//*/\r
++\r
++/*\r
++ * jsTree hotkeys plugin\r
++ * Enables keyboard navigation for all tree instances\r
++ * Depends on the jstree ui & jquery hotkeys plugins\r
++ */\r
++(function ($) {\r
++      var bound = [];\r
++      function exec(i, event) {\r
++              var f = $.jstree._focused(), tmp;\r
++              if(f && f.data && f.data.hotkeys && f.data.hotkeys.enabled) { \r
++                      tmp = f._get_settings().hotkeys[i];\r
++                      if(tmp) { return tmp.call(f, event); }\r
++              }\r
++      }\r
++      $.jstree.plugin("hotkeys", {\r
++              __init : function () {\r
++                      if(typeof $.hotkeys === "undefined") { throw "jsTree hotkeys: jQuery hotkeys plugin not included."; }\r
++                      if(!this.data.ui) { throw "jsTree hotkeys: jsTree UI plugin not included."; }\r
++                      $.each(this._get_settings().hotkeys, function (i, v) {\r
++                              if(v !== false && $.inArray(i, bound) == -1) {\r
++                                      $(document).bind("keydown", i, function (event) { return exec(i, event); });\r
++                                      bound.push(i);\r
++                              }\r
++                      });\r
++                      this.get_container()\r
++                              .bind("lock.jstree", $.proxy(function () {\r
++                                              if(this.data.hotkeys.enabled) { this.data.hotkeys.enabled = false; this.data.hotkeys.revert = true; }\r
++                                      }, this))\r
++                              .bind("unlock.jstree", $.proxy(function () {\r
++                                              if(this.data.hotkeys.revert) { this.data.hotkeys.enabled = true; }\r
++                                      }, this));\r
++                      this.enable_hotkeys();\r
++              },\r
++              defaults : {\r
++                      "up" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected || -1;\r
++                              this.hover_node(this._get_prev(o));\r
++                              return false; \r
++                      },\r
++                      "ctrl+up" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected || -1;\r
++                              this.hover_node(this._get_prev(o));\r
++                              return false; \r
++                      },\r
++                      "shift+up" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected || -1;\r
++                              this.hover_node(this._get_prev(o));\r
++                              return false; \r
++                      },\r
++                      "down" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected || -1;\r
++                              this.hover_node(this._get_next(o));\r
++                              return false;\r
++                      },\r
++                      "ctrl+down" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected || -1;\r
++                              this.hover_node(this._get_next(o));\r
++                              return false;\r
++                      },\r
++                      "shift+down" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected || -1;\r
++                              this.hover_node(this._get_next(o));\r
++                              return false;\r
++                      },\r
++                      "left" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected;\r
++                              if(o) {\r
++                                      if(o.hasClass("jstree-open")) { this.close_node(o); }\r
++                                      else { this.hover_node(this._get_prev(o)); }\r
++                              }\r
++                              return false;\r
++                      },\r
++                      "ctrl+left" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected;\r
++                              if(o) {\r
++                                      if(o.hasClass("jstree-open")) { this.close_node(o); }\r
++                                      else { this.hover_node(this._get_prev(o)); }\r
++                              }\r
++                              return false;\r
++                      },\r
++                      "shift+left" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected;\r
++                              if(o) {\r
++                                      if(o.hasClass("jstree-open")) { this.close_node(o); }\r
++                                      else { this.hover_node(this._get_prev(o)); }\r
++                              }\r
++                              return false;\r
++                      },\r
++                      "right" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected;\r
++                              if(o && o.length) {\r
++                                      if(o.hasClass("jstree-closed")) { this.open_node(o); }\r
++                                      else { this.hover_node(this._get_next(o)); }\r
++                              }\r
++                              return false;\r
++                      },\r
++                      "ctrl+right" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected;\r
++                              if(o && o.length) {\r
++                                      if(o.hasClass("jstree-closed")) { this.open_node(o); }\r
++                                      else { this.hover_node(this._get_next(o)); }\r
++                              }\r
++                              return false;\r
++                      },\r
++                      "shift+right" : function () { \r
++                              var o = this.data.ui.hovered || this.data.ui.last_selected;\r
++                              if(o && o.length) {\r
++                                      if(o.hasClass("jstree-closed")) { this.open_node(o); }\r
++                                      else { this.hover_node(this._get_next(o)); }\r
++                              }\r
++                              return false;\r
++                      },\r
++                      "space" : function () { \r
++                              if(this.data.ui.hovered) { this.data.ui.hovered.children("a:eq(0)").click(); } \r
++                              return false; \r
++                      },\r
++                      "ctrl+space" : function (event) { \r
++                              event.type = "click";\r
++                              if(this.data.ui.hovered) { this.data.ui.hovered.children("a:eq(0)").trigger(event); } \r
++                              return false; \r
++                      },\r
++                      "shift+space" : function (event) { \r
++                              event.type = "click";\r
++                              if(this.data.ui.hovered) { this.data.ui.hovered.children("a:eq(0)").trigger(event); } \r
++                              return false; \r
++                      },\r
++                      "f2" : function () { this.rename(this.data.ui.hovered || this.data.ui.last_selected); },\r
++                      "del" : function () { this.remove(this.data.ui.hovered || this._get_node(null)); }\r
++              },\r
++              _fn : {\r
++                      enable_hotkeys : function () {\r
++                              this.data.hotkeys.enabled = true;\r
++                      },\r
++                      disable_hotkeys : function () {\r
++                              this.data.hotkeys.enabled = false;\r
++                      }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree JSON plugin\r
++ * The JSON data store. Datastores are build by overriding the `load_node` and `_is_loaded` functions.\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("json_data", {\r
++              __init : function() {\r
++                      var s = this._get_settings().json_data;\r
++                      if(s.progressive_unload) {\r
++                              this.get_container().bind("after_close.jstree", function (e, data) {\r
++                                      data.rslt.obj.children("ul").remove();\r
++                              });\r
++                      }\r
++              },\r
++              defaults : { \r
++                      // `data` can be a function:\r
++                      //  * accepts two arguments - node being loaded and a callback to pass the result to\r
++                      //  * will be executed in the current tree's scope & ajax won't be supported\r
++                      data : false, \r
++                      ajax : false,\r
++                      correct_state : true,\r
++                      progressive_render : false,\r
++                      progressive_unload : false\r
++              },\r
++              _fn : {\r
++                      load_node : function (obj, s_call, e_call) { var _this = this; this.load_node_json(obj, function () { _this.__callback({ "obj" : _this._get_node(obj) }); s_call.call(this); }, e_call); },\r
++                      _is_loaded : function (obj) { \r
++                              var s = this._get_settings().json_data;\r
++                              obj = this._get_node(obj); \r
++                              return obj == -1 || !obj || (!s.ajax && !s.progressive_render && !$.isFunction(s.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").length > 0;\r
++                      },\r
++                      refresh : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              var s = this._get_settings().json_data;\r
++                              if(obj && obj !== -1 && s.progressive_unload && ($.isFunction(s.data) || !!s.ajax)) {\r
++                                      obj.removeData("jstree_children");\r
++                              }\r
++                              return this.__call_old();\r
++                      },\r
++                      load_node_json : function (obj, s_call, e_call) {\r
++                              var s = this.get_settings().json_data, d,\r
++                                      error_func = function () {},\r
++                                      success_func = function () {};\r
++                              obj = this._get_node(obj);\r
++\r
++                              if(obj && obj !== -1 && (s.progressive_render || s.progressive_unload) && !obj.is(".jstree-open, .jstree-leaf") && obj.children("ul").children("li").length === 0 && obj.data("jstree_children")) {\r
++                                      d = this._parse_json(obj.data("jstree_children"), obj);\r
++                                      if(d) {\r
++                                              obj.append(d);\r
++                                              if(!s.progressive_unload) { obj.removeData("jstree_children"); }\r
++                                      }\r
++                                      this.clean_node(obj);\r
++                                      if(s_call) { s_call.call(this); }\r
++                                      return;\r
++                              }\r
++\r
++                              if(obj && obj !== -1) {\r
++                                      if(obj.data("jstree_is_loading")) { return; }\r
++                                      else { obj.data("jstree_is_loading",true); }\r
++                              }\r
++                              switch(!0) {\r
++                                      case (!s.data && !s.ajax): throw "Neither data nor ajax settings supplied.";\r
++                                      // function option added here for easier model integration (also supporting async - see callback)\r
++                                      case ($.isFunction(s.data)):\r
++                                              s.data.call(this, obj, $.proxy(function (d) {\r
++                                                      d = this._parse_json(d, obj);\r
++                                                      if(!d) { \r
++                                                              if(obj === -1 || !obj) {\r
++                                                                      if(s.correct_state) { this.get_container().children("ul").empty(); }\r
++                                                              }\r
++                                                              else {\r
++                                                                      obj.children("a.jstree-loading").removeClass("jstree-loading");\r
++                                                                      obj.removeData("jstree_is_loading");\r
++                                                                      if(s.correct_state) { this.correct_state(obj); }\r
++                                                              }\r
++                                                              if(e_call) { e_call.call(this); }\r
++                                                      }\r
++                                                      else {\r
++                                                              if(obj === -1 || !obj) { this.get_container().children("ul").empty().append(d.children()); }\r
++                                                              else { obj.append(d).children("a.jstree-loading").removeClass("jstree-loading"); obj.removeData("jstree_is_loading"); }\r
++                                                              this.clean_node(obj);\r
++                                                              if(s_call) { s_call.call(this); }\r
++                                                      }\r
++                                              }, this));\r
++                                              break;\r
++                                      case (!!s.data && !s.ajax) || (!!s.data && !!s.ajax && (!obj || obj === -1)):\r
++                                              if(!obj || obj == -1) {\r
++                                                      d = this._parse_json(s.data, obj);\r
++                                                      if(d) {\r
++                                                              this.get_container().children("ul").empty().append(d.children());\r
++                                                              this.clean_node();\r
++                                                      }\r
++                                                      else { \r
++                                                              if(s.correct_state) { this.get_container().children("ul").empty(); }\r
++                                                      }\r
++                                              }\r
++                                              if(s_call) { s_call.call(this); }\r
++                                              break;\r
++                                      case (!s.data && !!s.ajax) || (!!s.data && !!s.ajax && obj && obj !== -1):\r
++                                              error_func = function (x, t, e) {\r
++                                                      var ef = this.get_settings().json_data.ajax.error; \r
++                                                      if(ef) { ef.call(this, x, t, e); }\r
++                                                      if(obj != -1 && obj.length) {\r
++                                                              obj.children("a.jstree-loading").removeClass("jstree-loading");\r
++                                                              obj.removeData("jstree_is_loading");\r
++                                                              if(t === "success" && s.correct_state) { this.correct_state(obj); }\r
++                                                      }\r
++                                                      else {\r
++                                                              if(t === "success" && s.correct_state) { this.get_container().children("ul").empty(); }\r
++                                                      }\r
++                                                      if(e_call) { e_call.call(this); }\r
++                                              };\r
++                                              success_func = function (d, t, x) {\r
++                                                      var sf = this.get_settings().json_data.ajax.success; \r
++                                                      if(sf) { d = sf.call(this,d,t,x) || d; }\r
++                                                      if(d === "" || (d && d.toString && d.toString().replace(/^[\s\n]+$/,"") === "") || (!$.isArray(d) && !$.isPlainObject(d))) {\r
++                                                              return error_func.call(this, x, t, "");\r
++                                                      }\r
++                                                      d = this._parse_json(d, obj);\r
++                                                      if(d) {\r
++                                                              if(obj === -1 || !obj) { this.get_container().children("ul").empty().append(d.children()); }\r
++                                                              else { obj.append(d).children("a.jstree-loading").removeClass("jstree-loading"); obj.removeData("jstree_is_loading"); }\r
++                                                              this.clean_node(obj);\r
++                                                              if(s_call) { s_call.call(this); }\r
++                                                      }\r
++                                                      else {\r
++                                                              if(obj === -1 || !obj) {\r
++                                                                      if(s.correct_state) { \r
++                                                                              this.get_container().children("ul").empty(); \r
++                                                                              if(s_call) { s_call.call(this); }\r
++                                                                      }\r
++                                                              }\r
++                                                              else {\r
++                                                                      obj.children("a.jstree-loading").removeClass("jstree-loading");\r
++                                                                      obj.removeData("jstree_is_loading");\r
++                                                                      if(s.correct_state) { \r
++                                                                              this.correct_state(obj);\r
++                                                                              if(s_call) { s_call.call(this); } \r
++                                                                      }\r
++                                                              }\r
++                                                      }\r
++                                              };\r
++                                              s.ajax.context = this;\r
++                                              s.ajax.error = error_func;\r
++                                              s.ajax.success = success_func;\r
++                                              if(!s.ajax.dataType) { s.ajax.dataType = "json"; }\r
++                                              if($.isFunction(s.ajax.url)) { s.ajax.url = s.ajax.url.call(this, obj); }\r
++                                              if($.isFunction(s.ajax.data)) { s.ajax.data = s.ajax.data.call(this, obj); }\r
++                                              $.ajax(s.ajax);\r
++                                              break;\r
++                              }\r
++                      },\r
++                      _parse_json : function (js, obj, is_callback) {\r
++                              var d = false, \r
++                                      p = this._get_settings(),\r
++                                      s = p.json_data,\r
++                                      t = p.core.html_titles,\r
++                                      tmp, i, j, ul1, ul2;\r
++\r
++                              if(!js) { return d; }\r
++                              if(s.progressive_unload && obj && obj !== -1) { \r
++                                      obj.data("jstree_children", d);\r
++                              }\r
++                              if($.isArray(js)) {\r
++                                      d = $();\r
++                                      if(!js.length) { return false; }\r
++                                      for(i = 0, j = js.length; i < j; i++) {\r
++                                              tmp = this._parse_json(js[i], obj, true);\r
++                                              if(tmp.length) { d = d.add(tmp); }\r
++                                      }\r
++                              }\r
++                              else {\r
++                                      if(typeof js == "string") { js = { data : js }; }\r
++                                      if(!js.data && js.data !== "") { return d; }\r
++                                      d = $("<li />");\r
++                                      if(js.attr) { d.attr(js.attr); }\r
++                                      if(js.metadata) { d.data(js.metadata); }\r
++                                      if(js.state) { d.addClass("jstree-" + js.state); }\r
++                                      if(!$.isArray(js.data)) { tmp = js.data; js.data = []; js.data.push(tmp); }\r
++                                      $.each(js.data, function (i, m) {\r
++                                              tmp = $("<a />");\r
++                                              if($.isFunction(m)) { m = m.call(this, js); }\r
++                                              if(typeof m == "string") { tmp.attr('href','#')[ t ? "html" : "text" ](m); }\r
++                                              else {\r
++                                                      if(!m.attr) { m.attr = {}; }\r
++                                                      if(!m.attr.href) { m.attr.href = '#'; }\r
++                                                      tmp.attr(m.attr)[ t ? "html" : "text" ](m.title);\r
++                                                      if(m.language) { tmp.addClass(m.language); }\r
++                                              }\r
++                                              tmp.prepend("<ins class='jstree-icon'>&#160;</ins>");\r
++                                              if(!m.icon && js.icon) { m.icon = js.icon; }\r
++                                              if(m.icon) { \r
++                                                      if(m.icon.indexOf("/") === -1) { tmp.children("ins").addClass(m.icon); }\r
++                                                      else { tmp.children("ins").css("background","url('" + m.icon + "') center center no-repeat"); }\r
++                                              }\r
++                                              d.append(tmp);\r
++                                      });\r
++                                      d.prepend("<ins class='jstree-icon'>&#160;</ins>");\r
++                                      if(js.children) { \r
++                                              if(s.progressive_render && js.state !== "open") {\r
++                                                      d.addClass("jstree-closed").data("jstree_children", js.children);\r
++                                              }\r
++                                              else {\r
++                                                      if(s.progressive_unload) { d.data("jstree_children", js.children); }\r
++                                                      if($.isArray(js.children) && js.children.length) {\r
++                                                              tmp = this._parse_json(js.children, obj, true);\r
++                                                              if(tmp.length) {\r
++                                                                      ul2 = $("<ul />");\r
++                                                                      ul2.append(tmp);\r
++                                                                      d.append(ul2);\r
++                                                              }\r
++                                                      }\r
++                                              }\r
++                                      }\r
++                              }\r
++                              if(!is_callback) {\r
++                                      ul1 = $("<ul />");\r
++                                      ul1.append(d);\r
++                                      d = ul1;\r
++                              }\r
++                              return d;\r
++                      },\r
++                      get_json : function (obj, li_attr, a_attr, is_callback) {\r
++                              var result = [], \r
++                                      s = this._get_settings(), \r
++                                      _this = this,\r
++                                      tmp1, tmp2, li, a, t, lang;\r
++                              obj = this._get_node(obj);\r
++                              if(!obj || obj === -1) { obj = this.get_container().find("> ul > li"); }\r
++                              li_attr = $.isArray(li_attr) ? li_attr : [ "id", "class" ];\r
++                              if(!is_callback && this.data.types) { li_attr.push(s.types.type_attr); }\r
++                              a_attr = $.isArray(a_attr) ? a_attr : [ ];\r
++\r
++                              obj.each(function () {\r
++                                      li = $(this);\r
++                                      tmp1 = { data : [] };\r
++                                      if(li_attr.length) { tmp1.attr = { }; }\r
++                                      $.each(li_attr, function (i, v) { \r
++                                              tmp2 = li.attr(v); \r
++                                              if(tmp2 && tmp2.length && tmp2.replace(/jstree[^ ]*/ig,'').length) {\r
++                                                      tmp1.attr[v] = (" " + tmp2).replace(/ jstree[^ ]*/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,""); \r
++                                              }\r
++                                      });\r
++                                      if(li.hasClass("jstree-open")) { tmp1.state = "open"; }\r
++                                      if(li.hasClass("jstree-closed")) { tmp1.state = "closed"; }\r
++                                      if(li.data()) { tmp1.metadata = li.data(); }\r
++                                      a = li.children("a");\r
++                                      a.each(function () {\r
++                                              t = $(this);\r
++                                              if(\r
++                                                      a_attr.length || \r
++                                                      $.inArray("languages", s.plugins) !== -1 || \r
++                                                      t.children("ins").get(0).style.backgroundImage.length || \r
++                                                      (t.children("ins").get(0).className && t.children("ins").get(0).className.replace(/jstree[^ ]*|$/ig,'').length)\r
++                                              ) { \r
++                                                      lang = false;\r
++                                                      if($.inArray("languages", s.plugins) !== -1 && $.isArray(s.languages) && s.languages.length) {\r
++                                                              $.each(s.languages, function (l, lv) {\r
++                                                                      if(t.hasClass(lv)) {\r
++                                                                              lang = lv;\r
++                                                                              return false;\r
++                                                                      }\r
++                                                              });\r
++                                                      }\r
++                                                      tmp2 = { attr : { }, title : _this.get_text(t, lang) }; \r
++                                                      $.each(a_attr, function (k, z) {\r
++                                                              tmp2.attr[z] = (" " + (t.attr(z) || "")).replace(/ jstree[^ ]*/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,"");\r
++                                                      });\r
++                                                      if($.inArray("languages", s.plugins) !== -1 && $.isArray(s.languages) && s.languages.length) {\r
++                                                              $.each(s.languages, function (k, z) {\r
++                                                                      if(t.hasClass(z)) { tmp2.language = z; return true; }\r
++                                                              });\r
++                                                      }\r
++                                                      if(t.children("ins").get(0).className.replace(/jstree[^ ]*|$/ig,'').replace(/^\s+$/ig,"").length) {\r
++                                                              tmp2.icon = t.children("ins").get(0).className.replace(/jstree[^ ]*|$/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,"");\r
++                                                      }\r
++                                                      if(t.children("ins").get(0).style.backgroundImage.length) {\r
++                                                              tmp2.icon = t.children("ins").get(0).style.backgroundImage.replace("url(","").replace(")","");\r
++                                                      }\r
++                                              }\r
++                                              else {\r
++                                                      tmp2 = _this.get_text(t);\r
++                                              }\r
++                                              if(a.length > 1) { tmp1.data.push(tmp2); }\r
++                                              else { tmp1.data = tmp2; }\r
++                                      });\r
++                                      li = li.find("> ul > li");\r
++                                      if(li.length) { tmp1.children = _this.get_json(li, li_attr, a_attr, true); }\r
++                                      result.push(tmp1);\r
++                              });\r
++                              return result;\r
++                      }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree languages plugin\r
++ * Adds support for multiple language versions in one tree\r
++ * This basically allows for many titles coexisting in one node, but only one of them being visible at any given time\r
++ * This is useful for maintaining the same structure in many languages (hence the name of the plugin)\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("languages", {\r
++              __init : function () { this._load_css();  },\r
++              defaults : [],\r
++              _fn : {\r
++                      set_lang : function (i) { \r
++                              var langs = this._get_settings().languages,\r
++                                      st = false,\r
++                                      selector = ".jstree-" + this.get_index() + ' a';\r
++                              if(!$.isArray(langs) || langs.length === 0) { return false; }\r
++                              if($.inArray(i,langs) == -1) {\r
++                                      if(!!langs[i]) { i = langs[i]; }\r
++                                      else { return false; }\r
++                              }\r
++                              if(i == this.data.languages.current_language) { return true; }\r
++                              st = $.vakata.css.get_css(selector + "." + this.data.languages.current_language, false, this.data.languages.language_css);\r
++                              if(st !== false) { st.style.display = "none"; }\r
++                              st = $.vakata.css.get_css(selector + "." + i, false, this.data.languages.language_css);\r
++                              if(st !== false) { st.style.display = ""; }\r
++                              this.data.languages.current_language = i;\r
++                              this.__callback(i);\r
++                              return true;\r
++                      },\r
++                      get_lang : function () {\r
++                              return this.data.languages.current_language;\r
++                      },\r
++                      _get_string : function (key, lang) {\r
++                              var langs = this._get_settings().languages,\r
++                                      s = this._get_settings().core.strings;\r
++                              if($.isArray(langs) && langs.length) {\r
++                                      lang = (lang && $.inArray(lang,langs) != -1) ? lang : this.data.languages.current_language;\r
++                              }\r
++                              if(s[lang] && s[lang][key]) { return s[lang][key]; }\r
++                              if(s[key]) { return s[key]; }\r
++                              return key;\r
++                      },\r
++                      get_text : function (obj, lang) {\r
++                              obj = this._get_node(obj) || this.data.ui.last_selected;\r
++                              if(!obj.size()) { return false; }\r
++                              var langs = this._get_settings().languages,\r
++                                      s = this._get_settings().core.html_titles;\r
++                              if($.isArray(langs) && langs.length) {\r
++                                      lang = (lang && $.inArray(lang,langs) != -1) ? lang : this.data.languages.current_language;\r
++                                      obj = obj.children("a." + lang);\r
++                              }\r
++                              else { obj = obj.children("a:eq(0)"); }\r
++                              if(s) {\r
++                                      obj = obj.clone();\r
++                                      obj.children("INS").remove();\r
++                                      return obj.html();\r
++                              }\r
++                              else {\r
++                                      obj = obj.contents().filter(function() { return this.nodeType == 3; })[0];\r
++                                      return obj.nodeValue;\r
++                              }\r
++                      },\r
++                      set_text : function (obj, val, lang) {\r
++                              obj = this._get_node(obj) || this.data.ui.last_selected;\r
++                              if(!obj.size()) { return false; }\r
++                              var langs = this._get_settings().languages,\r
++                                      s = this._get_settings().core.html_titles,\r
++                                      tmp;\r
++                              if($.isArray(langs) && langs.length) {\r
++                                      lang = (lang && $.inArray(lang,langs) != -1) ? lang : this.data.languages.current_language;\r
++                                      obj = obj.children("a." + lang);\r
++                              }\r
++                              else { obj = obj.children("a:eq(0)"); }\r
++                              if(s) {\r
++                                      tmp = obj.children("INS").clone();\r
++                                      obj.html(val).prepend(tmp);\r
++                                      this.__callback({ "obj" : obj, "name" : val, "lang" : lang });\r
++                                      return true;\r
++                              }\r
++                              else {\r
++                                      obj = obj.contents().filter(function() { return this.nodeType == 3; })[0];\r
++                                      this.__callback({ "obj" : obj, "name" : val, "lang" : lang });\r
++                                      return (obj.nodeValue = val);\r
++                              }\r
++                      },\r
++                      _load_css : function () {\r
++                              var langs = this._get_settings().languages,\r
++                                      str = "/* languages css */",\r
++                                      selector = ".jstree-" + this.get_index() + ' a',\r
++                                      ln;\r
++                              if($.isArray(langs) && langs.length) {\r
++                                      this.data.languages.current_language = langs[0];\r
++                                      for(ln = 0; ln < langs.length; ln++) {\r
++                                              str += selector + "." + langs[ln] + " {";\r
++                                              if(langs[ln] != this.data.languages.current_language) { str += " display:none; "; }\r
++                                              str += " } ";\r
++                                      }\r
++                                      this.data.languages.language_css = $.vakata.css.add_sheet({ 'str' : str, 'title' : "jstree-languages" });\r
++                              }\r
++                      },\r
++                      create_node : function (obj, position, js, callback) {\r
++                              var t = this.__call_old(true, obj, position, js, function (t) {\r
++                                      var langs = this._get_settings().languages,\r
++                                              a = t.children("a"),\r
++                                              ln;\r
++                                      if($.isArray(langs) && langs.length) {\r
++                                              for(ln = 0; ln < langs.length; ln++) {\r
++                                                      if(!a.is("." + langs[ln])) {\r
++                                                              t.append(a.eq(0).clone().removeClass(langs.join(" ")).addClass(langs[ln]));\r
++                                                      }\r
++                                              }\r
++                                              a.not("." + langs.join(", .")).remove();\r
++                                      }\r
++                                      if(callback) { callback.call(this, t); }\r
++                              });\r
++                              return t;\r
++                      }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/*\r
++ * jsTree cookies plugin\r
++ * Stores the currently opened/selected nodes in a cookie and then restores them\r
++ * Depends on the jquery.cookie plugin\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("cookies", {\r
++              __init : function () {\r
++                      if(typeof $.cookie === "undefined") { throw "jsTree cookie: jQuery cookie plugin not included."; }\r
++\r
++                      var s = this._get_settings().cookies,\r
++                              tmp;\r
++                      if(!!s.save_loaded) {\r
++                              tmp = $.cookie(s.save_loaded);\r
++                              if(tmp && tmp.length) { this.data.core.to_load = tmp.split(","); }\r
++                      }\r
++                      if(!!s.save_opened) {\r
++                              tmp = $.cookie(s.save_opened);\r
++                              if(tmp && tmp.length) { this.data.core.to_open = tmp.split(","); }\r
++                      }\r
++                      if(!!s.save_selected) {\r
++                              tmp = $.cookie(s.save_selected);\r
++                              if(tmp && tmp.length && this.data.ui) { this.data.ui.to_select = tmp.split(","); }\r
++                      }\r
++                      this.get_container()\r
++                              .one( ( this.data.ui ? "reselect" : "reopen" ) + ".jstree", $.proxy(function () {\r
++                                      this.get_container()\r
++                                              .bind("open_node.jstree close_node.jstree select_node.jstree deselect_node.jstree", $.proxy(function (e) { \r
++                                                              if(this._get_settings().cookies.auto_save) { this.save_cookie((e.handleObj.namespace + e.handleObj.type).replace("jstree","")); }\r
++                                                      }, this));\r
++                              }, this));\r
++              },\r
++              defaults : {\r
++                      save_loaded             : "jstree_load",\r
++                      save_opened             : "jstree_open",\r
++                      save_selected   : "jstree_select",\r
++                      auto_save               : true,\r
++                      cookie_options  : {}\r
++              },\r
++              _fn : {\r
++                      save_cookie : function (c) {\r
++                              if(this.data.core.refreshing) { return; }\r
++                              var s = this._get_settings().cookies;\r
++                              if(!c) { // if called manually and not by event\r
++                                      if(s.save_loaded) {\r
++                                              this.save_loaded();\r
++                                              $.cookie(s.save_loaded, this.data.core.to_load.join(","), s.cookie_options);\r
++                                      }\r
++                                      if(s.save_opened) {\r
++                                              this.save_opened();\r
++                                              $.cookie(s.save_opened, this.data.core.to_open.join(","), s.cookie_options);\r
++                                      }\r
++                                      if(s.save_selected && this.data.ui) {\r
++                                              this.save_selected();\r
++                                              $.cookie(s.save_selected, this.data.ui.to_select.join(","), s.cookie_options);\r
++                                      }\r
++                                      return;\r
++                              }\r
++                              switch(c) {\r
++                                      case "open_node":\r
++                                      case "close_node":\r
++                                              if(!!s.save_opened) { \r
++                                                      this.save_opened(); \r
++                                                      $.cookie(s.save_opened, this.data.core.to_open.join(","), s.cookie_options); \r
++                                              }\r
++                                              if(!!s.save_loaded) { \r
++                                                      this.save_loaded(); \r
++                                                      $.cookie(s.save_loaded, this.data.core.to_load.join(","), s.cookie_options); \r
++                                              }\r
++                                              break;\r
++                                      case "select_node":\r
++                                      case "deselect_node":\r
++                                              if(!!s.save_selected && this.data.ui) { \r
++                                                      this.save_selected(); \r
++                                                      $.cookie(s.save_selected, this.data.ui.to_select.join(","), s.cookie_options); \r
++                                              }\r
++                                              break;\r
++                              }\r
++                      }\r
++              }\r
++      });\r
++      // include cookies by default\r
++      // $.jstree.defaults.plugins.push("cookies");\r
++})(jQuery);\r
++//*/\r
++\r
++/*\r
++ * jsTree sort plugin\r
++ * Sorts items alphabetically (or using any other function)\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("sort", {\r
++              __init : function () {\r
++                      this.get_container()\r
++                              .bind("load_node.jstree", $.proxy(function (e, data) {\r
++                                              var obj = this._get_node(data.rslt.obj);\r
++                                              obj = obj === -1 ? this.get_container().children("ul") : obj.children("ul");\r
++                                              this.sort(obj);\r
++                                      }, this))\r
++                              .bind("rename_node.jstree create_node.jstree create.jstree", $.proxy(function (e, data) {\r
++                                              this.sort(data.rslt.obj.parent());\r
++                                      }, this))\r
++                              .bind("move_node.jstree", $.proxy(function (e, data) {\r
++                                              var m = data.rslt.np == -1 ? this.get_container() : data.rslt.np;\r
++                                              this.sort(m.children("ul"));\r
++                                      }, this));\r
++              },\r
++              defaults : function (a, b) { return this.get_text(a) > this.get_text(b) ? 1 : -1; },\r
++              _fn : {\r
++                      sort : function (obj) {\r
++                              var s = this._get_settings().sort,\r
++                                      t = this;\r
++                              obj.append($.makeArray(obj.children("li")).sort($.proxy(s, t)));\r
++                              obj.find("> li > ul").each(function() { t.sort($(this)); });\r
++                              this.clean_node(obj);\r
++                      }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/*\r
++ * jsTree DND plugin\r
++ * Drag and drop plugin for moving/copying nodes\r
++ */\r
++(function ($) {\r
++      var o = false,\r
++              r = false,\r
++              m = false,\r
++              ml = false,\r
++              sli = false,\r
++              sti = false,\r
++              dir1 = false,\r
++              dir2 = false,\r
++              last_pos = false;\r
++      $.vakata.dnd = {\r
++              is_down : false,\r
++              is_drag : false,\r
++              helper : false,\r
++              scroll_spd : 10,\r
++              init_x : 0,\r
++              init_y : 0,\r
++              threshold : 5,\r
++              helper_left : 5,\r
++              helper_top : 10,\r
++              user_data : {},\r
++\r
++              drag_start : function (e, data, html) { \r
++                      if($.vakata.dnd.is_drag) { $.vakata.drag_stop({}); }\r
++                      try {\r
++                              e.currentTarget.unselectable = "on";\r
++                              e.currentTarget.onselectstart = function() { return false; };\r
++                              if(e.currentTarget.style) { e.currentTarget.style.MozUserSelect = "none"; }\r
++                      } catch(err) { }\r
++                      $.vakata.dnd.init_x = e.pageX;\r
++                      $.vakata.dnd.init_y = e.pageY;\r
++                      $.vakata.dnd.user_data = data;\r
++                      $.vakata.dnd.is_down = true;\r
++                      $.vakata.dnd.helper = $("<div id='vakata-dragged' />").html(html); //.fadeTo(10,0.25);\r
++                      $(document).bind("mousemove", $.vakata.dnd.drag);\r
++                      $(document).bind("mouseup", $.vakata.dnd.drag_stop);\r
++                      return false;\r
++              },\r
++              drag : function (e) { \r
++                      if(!$.vakata.dnd.is_down) { return; }\r
++                      if(!$.vakata.dnd.is_drag) {\r
++                              if(Math.abs(e.pageX - $.vakata.dnd.init_x) > 5 || Math.abs(e.pageY - $.vakata.dnd.init_y) > 5) { \r
++                                      $.vakata.dnd.helper.appendTo("body");\r
++                                      $.vakata.dnd.is_drag = true;\r
++                                      $(document).triggerHandler("drag_start.vakata", { "event" : e, "data" : $.vakata.dnd.user_data });\r
++                              }\r
++                              else { return; }\r
++                      }\r
++\r
++                      // maybe use a scrolling parent element instead of document?\r
++                      if(e.type === "mousemove") { // thought of adding scroll in order to move the helper, but mouse poisition is n/a\r
++                              var d = $(document), t = d.scrollTop(), l = d.scrollLeft();\r
++                              if(e.pageY - t < 20) { \r
++                                      if(sti && dir1 === "down") { clearInterval(sti); sti = false; }\r
++                                      if(!sti) { dir1 = "up"; sti = setInterval(function () { $(document).scrollTop($(document).scrollTop() - $.vakata.dnd.scroll_spd); }, 150); }\r
++                              }\r
++                              else { \r
++                                      if(sti && dir1 === "up") { clearInterval(sti); sti = false; }\r
++                              }\r
++                              if($(window).height() - (e.pageY - t) < 20) {\r
++                                      if(sti && dir1 === "up") { clearInterval(sti); sti = false; }\r
++                                      if(!sti) { dir1 = "down"; sti = setInterval(function () { $(document).scrollTop($(document).scrollTop() + $.vakata.dnd.scroll_spd); }, 150); }\r
++                              }\r
++                              else { \r
++                                      if(sti && dir1 === "down") { clearInterval(sti); sti = false; }\r
++                              }\r
++\r
++                              if(e.pageX - l < 20) {\r
++                                      if(sli && dir2 === "right") { clearInterval(sli); sli = false; }\r
++                                      if(!sli) { dir2 = "left"; sli = setInterval(function () { $(document).scrollLeft($(document).scrollLeft() - $.vakata.dnd.scroll_spd); }, 150); }\r
++                              }\r
++                              else { \r
++                                      if(sli && dir2 === "left") { clearInterval(sli); sli = false; }\r
++                              }\r
++                              if($(window).width() - (e.pageX - l) < 20) {\r
++                                      if(sli && dir2 === "left") { clearInterval(sli); sli = false; }\r
++                                      if(!sli) { dir2 = "right"; sli = setInterval(function () { $(document).scrollLeft($(document).scrollLeft() + $.vakata.dnd.scroll_spd); }, 150); }\r
++                              }\r
++                              else { \r
++                                      if(sli && dir2 === "right") { clearInterval(sli); sli = false; }\r
++                              }\r
++                      }\r
++\r
++                      $.vakata.dnd.helper.css({ left : (e.pageX + $.vakata.dnd.helper_left) + "px", top : (e.pageY + $.vakata.dnd.helper_top) + "px" });\r
++                      $(document).triggerHandler("drag.vakata", { "event" : e, "data" : $.vakata.dnd.user_data });\r
++              },\r
++              drag_stop : function (e) {\r
++                      if(sli) { clearInterval(sli); }\r
++                      if(sti) { clearInterval(sti); }\r
++                      $(document).unbind("mousemove", $.vakata.dnd.drag);\r
++                      $(document).unbind("mouseup", $.vakata.dnd.drag_stop);\r
++                      $(document).triggerHandler("drag_stop.vakata", { "event" : e, "data" : $.vakata.dnd.user_data });\r
++                      $.vakata.dnd.helper.remove();\r
++                      $.vakata.dnd.init_x = 0;\r
++                      $.vakata.dnd.init_y = 0;\r
++                      $.vakata.dnd.user_data = {};\r
++                      $.vakata.dnd.is_down = false;\r
++                      $.vakata.dnd.is_drag = false;\r
++              }\r
++      };\r
++      $(function() {\r
++              var css_string = '#vakata-dragged { display:block; margin:0 0 0 0; padding:4px 4px 4px 24px; position:absolute; top:-2000px; line-height:16px; z-index:10000; } ';\r
++              $.vakata.css.add_sheet({ str : css_string, title : "vakata" });\r
++      });\r
++\r
++      $.jstree.plugin("dnd", {\r
++              __init : function () {\r
++                      this.data.dnd = {\r
++                              active : false,\r
++                              after : false,\r
++                              inside : false,\r
++                              before : false,\r
++                              off : false,\r
++                              prepared : false,\r
++                              w : 0,\r
++                              to1 : false,\r
++                              to2 : false,\r
++                              cof : false,\r
++                              cw : false,\r
++                              ch : false,\r
++                              i1 : false,\r
++                              i2 : false,\r
++                              mto : false\r
++                      };\r
++                      this.get_container()\r
++                              .bind("mouseenter.jstree", $.proxy(function (e) {\r
++                                              if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) {\r
++                                                      if(this.data.themes) {\r
++                                                              m.attr("class", "jstree-" + this.data.themes.theme); \r
++                                                              if(ml) { ml.attr("class", "jstree-" + this.data.themes.theme); }\r
++                                                              $.vakata.dnd.helper.attr("class", "jstree-dnd-helper jstree-" + this.data.themes.theme);\r
++                                                      }\r
++                                                      //if($(e.currentTarget).find("> ul > li").length === 0) {\r
++                                                      if(e.currentTarget === e.target && $.vakata.dnd.user_data.obj && $($.vakata.dnd.user_data.obj).length && $($.vakata.dnd.user_data.obj).parents(".jstree:eq(0)")[0] !== e.target) { // node should not be from the same tree\r
++                                                              var tr = $.jstree._reference(e.target), dc;\r
++                                                              if(tr.data.dnd.foreign) {\r
++                                                                      dc = tr._get_settings().dnd.drag_check.call(this, { "o" : o, "r" : tr.get_container(), is_root : true });\r
++                                                                      if(dc === true || dc.inside === true || dc.before === true || dc.after === true) {\r
++                                                                              $.vakata.dnd.helper.children("ins").attr("class","jstree-ok");\r
++                                                                      }\r
++                                                              }\r
++                                                              else {\r
++                                                                      tr.prepare_move(o, tr.get_container(), "last");\r
++                                                                      if(tr.check_move()) {\r
++                                                                              $.vakata.dnd.helper.children("ins").attr("class","jstree-ok");\r
++                                                                      }\r
++                                                              }\r
++                                                      }\r
++                                              }\r
++                                      }, this))\r
++                              .bind("mouseup.jstree", $.proxy(function (e) {\r
++                                              //if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree && $(e.currentTarget).find("> ul > li").length === 0) {\r
++                                              if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree && e.currentTarget === e.target && $.vakata.dnd.user_data.obj && $($.vakata.dnd.user_data.obj).length && $($.vakata.dnd.user_data.obj).parents(".jstree:eq(0)")[0] !== e.target) { // node should not be from the same tree\r
++                                                      var tr = $.jstree._reference(e.currentTarget), dc;\r
++                                                      if(tr.data.dnd.foreign) {\r
++                                                              dc = tr._get_settings().dnd.drag_check.call(this, { "o" : o, "r" : tr.get_container(), is_root : true });\r
++                                                              if(dc === true || dc.inside === true || dc.before === true || dc.after === true) {\r
++                                                                      tr._get_settings().dnd.drag_finish.call(this, { "o" : o, "r" : tr.get_container(), is_root : true });\r
++                                                              }\r
++                                                      }\r
++                                                      else {\r
++                                                              tr.move_node(o, tr.get_container(), "last", e[tr._get_settings().dnd.copy_modifier + "Key"]);\r
++                                                      }\r
++                                              }\r
++                                      }, this))\r
++                              .bind("mouseleave.jstree", $.proxy(function (e) {\r
++                                              if(e.relatedTarget && e.relatedTarget.id && e.relatedTarget.id === "jstree-marker-line") {\r
++                                                      return false; \r
++                                              }\r
++                                              if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) {\r
++                                                      if(this.data.dnd.i1) { clearInterval(this.data.dnd.i1); }\r
++                                                      if(this.data.dnd.i2) { clearInterval(this.data.dnd.i2); }\r
++                                                      if(this.data.dnd.to1) { clearTimeout(this.data.dnd.to1); }\r
++                                                      if(this.data.dnd.to2) { clearTimeout(this.data.dnd.to2); }\r
++                                                      if($.vakata.dnd.helper.children("ins").hasClass("jstree-ok")) {\r
++                                                              $.vakata.dnd.helper.children("ins").attr("class","jstree-invalid");\r
++                                                      }\r
++                                              }\r
++                                      }, this))\r
++                              .bind("mousemove.jstree", $.proxy(function (e) {\r
++                                              if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) {\r
++                                                      var cnt = this.get_container()[0];\r
++\r
++                                                      // Horizontal scroll\r
++                                                      if(e.pageX + 24 > this.data.dnd.cof.left + this.data.dnd.cw) {\r
++                                                              if(this.data.dnd.i1) { clearInterval(this.data.dnd.i1); }\r
++                                                              this.data.dnd.i1 = setInterval($.proxy(function () { this.scrollLeft += $.vakata.dnd.scroll_spd; }, cnt), 100);\r
++                                                      }\r
++                                                      else if(e.pageX - 24 < this.data.dnd.cof.left) {\r
++                                                              if(this.data.dnd.i1) { clearInterval(this.data.dnd.i1); }\r
++                                                              this.data.dnd.i1 = setInterval($.proxy(function () { this.scrollLeft -= $.vakata.dnd.scroll_spd; }, cnt), 100);\r
++                                                      }\r
++                                                      else {\r
++                                                              if(this.data.dnd.i1) { clearInterval(this.data.dnd.i1); }\r
++                                                      }\r
++\r
++                                                      // Vertical scroll\r
++                                                      if(e.pageY + 24 > this.data.dnd.cof.top + this.data.dnd.ch) {\r
++                                                              if(this.data.dnd.i2) { clearInterval(this.data.dnd.i2); }\r
++                                                              this.data.dnd.i2 = setInterval($.proxy(function () { this.scrollTop += $.vakata.dnd.scroll_spd; }, cnt), 100);\r
++                                                      }\r
++                                                      else if(e.pageY - 24 < this.data.dnd.cof.top) {\r
++                                                              if(this.data.dnd.i2) { clearInterval(this.data.dnd.i2); }\r
++                                                              this.data.dnd.i2 = setInterval($.proxy(function () { this.scrollTop -= $.vakata.dnd.scroll_spd; }, cnt), 100);\r
++                                                      }\r
++                                                      else {\r
++                                                              if(this.data.dnd.i2) { clearInterval(this.data.dnd.i2); }\r
++                                                      }\r
++\r
++                                              }\r
++                                      }, this))\r
++                              .bind("scroll.jstree", $.proxy(function (e) { \r
++                                              if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree && m && ml) {\r
++                                                      m.hide();\r
++                                                      ml.hide();\r
++                                              }\r
++                                      }, this))\r
++                              .delegate("a", "mousedown.jstree", $.proxy(function (e) { \r
++                                              if(e.which === 1) {\r
++                                                      this.start_drag(e.currentTarget, e);\r
++                                                      return false;\r
++                                              }\r
++                                      }, this))\r
++                              .delegate("a", "mouseenter.jstree", $.proxy(function (e) { \r
++                                              if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) {\r
++                                                      this.dnd_enter(e.currentTarget);\r
++                                              }\r
++                                      }, this))\r
++                              .delegate("a", "mousemove.jstree", $.proxy(function (e) { \r
++                                              if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) {\r
++                                                      if(!r || !r.length || r.children("a")[0] !== e.currentTarget) {\r
++                                                              this.dnd_enter(e.currentTarget);\r
++                                                      }\r
++                                                      if(typeof this.data.dnd.off.top === "undefined") { this.data.dnd.off = $(e.target).offset(); }\r
++                                                      this.data.dnd.w = (e.pageY - (this.data.dnd.off.top || 0)) % this.data.core.li_height;\r
++                                                      if(this.data.dnd.w < 0) { this.data.dnd.w += this.data.core.li_height; }\r
++                                                      this.dnd_show();\r
++                                              }\r
++                                      }, this))\r
++                              .delegate("a", "mouseleave.jstree", $.proxy(function (e) { \r
++                                              if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) {\r
++                                                      if(e.relatedTarget && e.relatedTarget.id && e.relatedTarget.id === "jstree-marker-line") {\r
++                                                              return false; \r
++                                                      }\r
++                                                              if(m) { m.hide(); }\r
++                                                              if(ml) { ml.hide(); }\r
++                                                      /*\r
++                                                      var ec = $(e.currentTarget).closest("li"), \r
++                                                              er = $(e.relatedTarget).closest("li");\r
++                                                      if(er[0] !== ec.prev()[0] && er[0] !== ec.next()[0]) {\r
++                                                              if(m) { m.hide(); }\r
++                                                              if(ml) { ml.hide(); }\r
++                                                      }\r
++                                                      */\r
++                                                      this.data.dnd.mto = setTimeout( \r
++                                                              (function (t) { return function () { t.dnd_leave(e); }; })(this),\r
++                                                      0);\r
++                                              }\r
++                                      }, this))\r
++                              .delegate("a", "mouseup.jstree", $.proxy(function (e) { \r
++                                              if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree) {\r
++                                                      this.dnd_finish(e);\r
++                                              }\r
++                                      }, this));\r
++\r
++                      $(document)\r
++                              .bind("drag_stop.vakata", $.proxy(function () {\r
++                                              if(this.data.dnd.to1) { clearTimeout(this.data.dnd.to1); }\r
++                                              if(this.data.dnd.to2) { clearTimeout(this.data.dnd.to2); }\r
++                                              if(this.data.dnd.i1) { clearInterval(this.data.dnd.i1); }\r
++                                              if(this.data.dnd.i2) { clearInterval(this.data.dnd.i2); }\r
++                                              this.data.dnd.after             = false;\r
++                                              this.data.dnd.before    = false;\r
++                                              this.data.dnd.inside    = false;\r
++                                              this.data.dnd.off               = false;\r
++                                              this.data.dnd.prepared  = false;\r
++                                              this.data.dnd.w                 = false;\r
++                                              this.data.dnd.to1               = false;\r
++                                              this.data.dnd.to2               = false;\r
++                                              this.data.dnd.i1                = false;\r
++                                              this.data.dnd.i2                = false;\r
++                                              this.data.dnd.active    = false;\r
++                                              this.data.dnd.foreign   = false;\r
++                                              if(m) { m.css({ "top" : "-2000px" }); }\r
++                                              if(ml) { ml.css({ "top" : "-2000px" }); }\r
++                                      }, this))\r
++                              .bind("drag_start.vakata", $.proxy(function (e, data) {\r
++                                              if(data.data.jstree) { \r
++                                                      var et = $(data.event.target);\r
++                                                      if(et.closest(".jstree").hasClass("jstree-" + this.get_index())) {\r
++                                                              this.dnd_enter(et);\r
++                                                      }\r
++                                              }\r
++                                      }, this));\r
++                              /*\r
++                              .bind("keydown.jstree-" + this.get_index() + " keyup.jstree-" + this.get_index(), $.proxy(function(e) {\r
++                                              if($.vakata.dnd.is_drag && $.vakata.dnd.user_data.jstree && !this.data.dnd.foreign) {\r
++                                                      var h = $.vakata.dnd.helper.children("ins");\r
++                                                      if(e[this._get_settings().dnd.copy_modifier + "Key"] && h.hasClass("jstree-ok")) {\r
++                                                              h.parent().html(h.parent().html().replace(/ \(Copy\)$/, "") + " (Copy)");\r
++                                                      } \r
++                                                      else {\r
++                                                              h.parent().html(h.parent().html().replace(/ \(Copy\)$/, ""));\r
++                                                      }\r
++                                              }\r
++                                      }, this)); */\r
++\r
++\r
++\r
++                      var s = this._get_settings().dnd;\r
++                      if(s.drag_target) {\r
++                              $(document)\r
++                                      .delegate(s.drag_target, "mousedown.jstree-" + this.get_index(), $.proxy(function (e) {\r
++                                              o = e.target;\r
++                                              $.vakata.dnd.drag_start(e, { jstree : true, obj : e.target }, "<ins class='jstree-icon'></ins>" + $(e.target).text() );\r
++                                              if(this.data.themes) { \r
++                                                      if(m) { m.attr("class", "jstree-" + this.data.themes.theme); }\r
++                                                      if(ml) { ml.attr("class", "jstree-" + this.data.themes.theme); }\r
++                                                      $.vakata.dnd.helper.attr("class", "jstree-dnd-helper jstree-" + this.data.themes.theme); \r
++                                              }\r
++                                              $.vakata.dnd.helper.children("ins").attr("class","jstree-invalid");\r
++                                              var cnt = this.get_container();\r
++                                              this.data.dnd.cof = cnt.offset();\r
++                                              this.data.dnd.cw = parseInt(cnt.width(),10);\r
++                                              this.data.dnd.ch = parseInt(cnt.height(),10);\r
++                                              this.data.dnd.foreign = true;\r
++                                              e.preventDefault();\r
++                                      }, this));\r
++                      }\r
++                      if(s.drop_target) {\r
++                              $(document)\r
++                                      .delegate(s.drop_target, "mouseenter.jstree-" + this.get_index(), $.proxy(function (e) {\r
++                                                      if(this.data.dnd.active && this._get_settings().dnd.drop_check.call(this, { "o" : o, "r" : $(e.target), "e" : e })) {\r
++                                                              $.vakata.dnd.helper.children("ins").attr("class","jstree-ok");\r
++                                                      }\r
++                                              }, this))\r
++                                      .delegate(s.drop_target, "mouseleave.jstree-" + this.get_index(), $.proxy(function (e) {\r
++                                                      if(this.data.dnd.active) {\r
++                                                              $.vakata.dnd.helper.children("ins").attr("class","jstree-invalid");\r
++                                                      }\r
++                                              }, this))\r
++                                      .delegate(s.drop_target, "mouseup.jstree-" + this.get_index(), $.proxy(function (e) {\r
++                                                      if(this.data.dnd.active && $.vakata.dnd.helper.children("ins").hasClass("jstree-ok")) {\r
++                                                              this._get_settings().dnd.drop_finish.call(this, { "o" : o, "r" : $(e.target), "e" : e });\r
++                                                      }\r
++                                              }, this));\r
++                      }\r
++              },\r
++              defaults : {\r
++                      copy_modifier   : "ctrl",\r
++                      check_timeout   : 100,\r
++                      open_timeout    : 500,\r
++                      drop_target             : ".jstree-drop",\r
++                      drop_check              : function (data) { return true; },\r
++                      drop_finish             : $.noop,\r
++                      drag_target             : ".jstree-draggable",\r
++                      drag_finish             : $.noop,\r
++                      drag_check              : function (data) { return { after : false, before : false, inside : true }; }\r
++              },\r
++              _fn : {\r
++                      dnd_prepare : function () {\r
++                              if(!r || !r.length) { return; }\r
++                              this.data.dnd.off = r.offset();\r
++                              if(this._get_settings().core.rtl) {\r
++                                      this.data.dnd.off.right = this.data.dnd.off.left + r.width();\r
++                              }\r
++                              if(this.data.dnd.foreign) {\r
++                                      var a = this._get_settings().dnd.drag_check.call(this, { "o" : o, "r" : r });\r
++                                      this.data.dnd.after = a.after;\r
++                                      this.data.dnd.before = a.before;\r
++                                      this.data.dnd.inside = a.inside;\r
++                                      this.data.dnd.prepared = true;\r
++                                      return this.dnd_show();\r
++                              }\r
++                              this.prepare_move(o, r, "before");\r
++                              this.data.dnd.before = this.check_move();\r
++                              this.prepare_move(o, r, "after");\r
++                              this.data.dnd.after = this.check_move();\r
++                              if(this._is_loaded(r)) {\r
++                                      this.prepare_move(o, r, "inside");\r
++                                      this.data.dnd.inside = this.check_move();\r
++                              }\r
++                              else {\r
++                                      this.data.dnd.inside = false;\r
++                              }\r
++                              this.data.dnd.prepared = true;\r
++                              return this.dnd_show();\r
++                      },\r
++                      dnd_show : function () {\r
++                              if(!this.data.dnd.prepared) { return; }\r
++                              var o = ["before","inside","after"],\r
++                                      r = false,\r
++                                      rtl = this._get_settings().core.rtl,\r
++                                      pos;\r
++                              if(this.data.dnd.w < this.data.core.li_height/3) { o = ["before","inside","after"]; }\r
++                              else if(this.data.dnd.w <= this.data.core.li_height*2/3) {\r
++                                      o = this.data.dnd.w < this.data.core.li_height/2 ? ["inside","before","after"] : ["inside","after","before"];\r
++                              }\r
++                              else { o = ["after","inside","before"]; }\r
++                              $.each(o, $.proxy(function (i, val) { \r
++                                      if(this.data.dnd[val]) {\r
++                                              $.vakata.dnd.helper.children("ins").attr("class","jstree-ok");\r
++                                              r = val;\r
++                                              return false;\r
++                                      }\r
++                              }, this));\r
++                              if(r === false) { $.vakata.dnd.helper.children("ins").attr("class","jstree-invalid"); }\r
++                              \r
++                              pos = rtl ? (this.data.dnd.off.right - 18) : (this.data.dnd.off.left + 10);\r
++                              switch(r) {\r
++                                      case "before":\r
++                                              m.css({ "left" : pos + "px", "top" : (this.data.dnd.off.top - 6) + "px" }).show();\r
++                                              if(ml) { ml.css({ "left" : (pos + 8) + "px", "top" : (this.data.dnd.off.top - 1) + "px" }).show(); }\r
++                                              break;\r
++                                      case "after":\r
++                                              m.css({ "left" : pos + "px", "top" : (this.data.dnd.off.top + this.data.core.li_height - 6) + "px" }).show();\r
++                                              if(ml) { ml.css({ "left" : (pos + 8) + "px", "top" : (this.data.dnd.off.top + this.data.core.li_height - 1) + "px" }).show(); }\r
++                                              break;\r
++                                      case "inside":\r
++                                              m.css({ "left" : pos + ( rtl ? -4 : 4) + "px", "top" : (this.data.dnd.off.top + this.data.core.li_height/2 - 5) + "px" }).show();\r
++                                              if(ml) { ml.hide(); }\r
++                                              break;\r
++                                      default:\r
++                                              m.hide();\r
++                                              if(ml) { ml.hide(); }\r
++                                              break;\r
++                              }\r
++                              last_pos = r;\r
++                              return r;\r
++                      },\r
++                      dnd_open : function () {\r
++                              this.data.dnd.to2 = false;\r
++                              this.open_node(r, $.proxy(this.dnd_prepare,this), true);\r
++                      },\r
++                      dnd_finish : function (e) {\r
++                              if(this.data.dnd.foreign) {\r
++                                      if(this.data.dnd.after || this.data.dnd.before || this.data.dnd.inside) {\r
++                                              this._get_settings().dnd.drag_finish.call(this, { "o" : o, "r" : r, "p" : last_pos });\r
++                                      }\r
++                              }\r
++                              else {\r
++                                      this.dnd_prepare();\r
++                                      this.move_node(o, r, last_pos, e[this._get_settings().dnd.copy_modifier + "Key"]);\r
++                              }\r
++                              o = false;\r
++                              r = false;\r
++                              m.hide();\r
++                              if(ml) { ml.hide(); }\r
++                      },\r
++                      dnd_enter : function (obj) {\r
++                              if(this.data.dnd.mto) { \r
++                                      clearTimeout(this.data.dnd.mto);\r
++                                      this.data.dnd.mto = false;\r
++                              }\r
++                              var s = this._get_settings().dnd;\r
++                              this.data.dnd.prepared = false;\r
++                              r = this._get_node(obj);\r
++                              if(s.check_timeout) { \r
++                                      // do the calculations after a minimal timeout (users tend to drag quickly to the desired location)\r
++                                      if(this.data.dnd.to1) { clearTimeout(this.data.dnd.to1); }\r
++                                      this.data.dnd.to1 = setTimeout($.proxy(this.dnd_prepare, this), s.check_timeout); \r
++                              }\r
++                              else { \r
++                                      this.dnd_prepare(); \r
++                              }\r
++                              if(s.open_timeout) { \r
++                                      if(this.data.dnd.to2) { clearTimeout(this.data.dnd.to2); }\r
++                                      if(r && r.length && r.hasClass("jstree-closed")) { \r
++                                              // if the node is closed - open it, then recalculate\r
++                                              this.data.dnd.to2 = setTimeout($.proxy(this.dnd_open, this), s.open_timeout);\r
++                                      }\r
++                              }\r
++                              else {\r
++                                      if(r && r.length && r.hasClass("jstree-closed")) { \r
++                                              this.dnd_open();\r
++                                      }\r
++                              }\r
++                      },\r
++                      dnd_leave : function (e) {\r
++                              this.data.dnd.after             = false;\r
++                              this.data.dnd.before    = false;\r
++                              this.data.dnd.inside    = false;\r
++                              $.vakata.dnd.helper.children("ins").attr("class","jstree-invalid");\r
++                              m.hide();\r
++                              if(ml) { ml.hide(); }\r
++                              if(r && r[0] === e.target.parentNode) {\r
++                                      if(this.data.dnd.to1) {\r
++                                              clearTimeout(this.data.dnd.to1);\r
++                                              this.data.dnd.to1 = false;\r
++                                      }\r
++                                      if(this.data.dnd.to2) {\r
++                                              clearTimeout(this.data.dnd.to2);\r
++                                              this.data.dnd.to2 = false;\r
++                                      }\r
++                              }\r
++                      },\r
++                      start_drag : function (obj, e) {\r
++                              o = this._get_node(obj);\r
++                              if(this.data.ui && this.is_selected(o)) { o = this._get_node(null, true); }\r
++                              var dt = o.length > 1 ? this._get_string("multiple_selection") : this.get_text(o),\r
++                                      cnt = this.get_container();\r
++                              if(!this._get_settings().core.html_titles) { dt = dt.replace(/</ig,"&lt;").replace(/>/ig,"&gt;"); }\r
++                              $.vakata.dnd.drag_start(e, { jstree : true, obj : o }, "<ins class='jstree-icon'></ins>" + dt );\r
++                              if(this.data.themes) { \r
++                                      if(m) { m.attr("class", "jstree-" + this.data.themes.theme); }\r
++                                      if(ml) { ml.attr("class", "jstree-" + this.data.themes.theme); }\r
++                                      $.vakata.dnd.helper.attr("class", "jstree-dnd-helper jstree-" + this.data.themes.theme); \r
++                              }\r
++                              this.data.dnd.cof = cnt.offset();\r
++                              this.data.dnd.cw = parseInt(cnt.width(),10);\r
++                              this.data.dnd.ch = parseInt(cnt.height(),10);\r
++                              this.data.dnd.active = true;\r
++                      }\r
++              }\r
++      });\r
++      $(function() {\r
++              var css_string = '' + \r
++                      '#vakata-dragged ins { display:block; text-decoration:none; width:16px; height:16px; margin:0 0 0 0; padding:0; position:absolute; top:4px; left:4px; ' + \r
++                      ' -moz-border-radius:4px; border-radius:4px; -webkit-border-radius:4px; ' +\r
++                      '} ' + \r
++                      '#vakata-dragged .jstree-ok { background:green; } ' + \r
++                      '#vakata-dragged .jstree-invalid { background:red; } ' + \r
++                      '#jstree-marker { padding:0; margin:0; font-size:12px; overflow:hidden; height:12px; width:8px; position:absolute; top:-30px; z-index:10001; background-repeat:no-repeat; display:none; background-color:transparent; text-shadow:1px 1px 1px white; color:black; line-height:10px; } ' + \r
++                      '#jstree-marker-line { padding:0; margin:0; line-height:0%; font-size:1px; overflow:hidden; height:1px; width:100px; position:absolute; top:-30px; z-index:10000; background-repeat:no-repeat; display:none; background-color:#456c43; ' + \r
++                      ' cursor:pointer; border:1px solid #eeeeee; border-left:0; -moz-box-shadow: 0px 0px 2px #666; -webkit-box-shadow: 0px 0px 2px #666; box-shadow: 0px 0px 2px #666; ' + \r
++                      ' -moz-border-radius:1px; border-radius:1px; -webkit-border-radius:1px; ' +\r
++                      '}' + \r
++                      '';\r
++              $.vakata.css.add_sheet({ str : css_string, title : "jstree" });\r
++              m = $("<div />").attr({ id : "jstree-marker" }).hide().html("&raquo;")\r
++                      .bind("mouseleave mouseenter", function (e) { \r
++                              m.hide();\r
++                              ml.hide();\r
++                              e.preventDefault(); \r
++                              e.stopImmediatePropagation(); \r
++                              return false; \r
++                      })\r
++                      .appendTo("body");\r
++              ml = $("<div />").attr({ id : "jstree-marker-line" }).hide()\r
++                      .bind("mouseup", function (e) { \r
++                              if(r && r.length) { \r
++                                      r.children("a").trigger(e); \r
++                                      e.preventDefault(); \r
++                                      e.stopImmediatePropagation(); \r
++                                      return false; \r
++                              } \r
++                      })\r
++                      .bind("mouseleave", function (e) { \r
++                              var rt = $(e.relatedTarget);\r
++                              if(rt.is(".jstree") || rt.closest(".jstree").length === 0) {\r
++                                      if(r && r.length) { \r
++                                              r.children("a").trigger(e); \r
++                                              m.hide();\r
++                                              ml.hide();\r
++                                              e.preventDefault(); \r
++                                              e.stopImmediatePropagation(); \r
++                                              return false; \r
++                                      }\r
++                              }\r
++                      })\r
++                      .appendTo("body");\r
++              $(document).bind("drag_start.vakata", function (e, data) {\r
++                      if(data.data.jstree) { m.show(); if(ml) { ml.show(); } }\r
++              });\r
++              $(document).bind("drag_stop.vakata", function (e, data) {\r
++                      if(data.data.jstree) { m.hide(); if(ml) { ml.hide(); } }\r
++              });\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/*\r
++ * jsTree checkbox plugin\r
++ * Inserts checkboxes in front of every node\r
++ * Depends on the ui plugin\r
++ * DOES NOT WORK NICELY WITH MULTITREE DRAG'N'DROP\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("checkbox", {\r
++              __init : function () {\r
++                      this.data.checkbox.noui = this._get_settings().checkbox.override_ui;\r
++                      if(this.data.ui && this.data.checkbox.noui) {\r
++                              this.select_node = this.deselect_node = this.deselect_all = $.noop;\r
++                              this.get_selected = this.get_checked;\r
++                      }\r
++\r
++                      this.get_container()\r
++                              .bind("open_node.jstree create_node.jstree clean_node.jstree refresh.jstree", $.proxy(function (e, data) { \r
++                                              this._prepare_checkboxes(data.rslt.obj);\r
++                                      }, this))\r
++                              .bind("loaded.jstree", $.proxy(function (e) {\r
++                                              this._prepare_checkboxes();\r
++                                      }, this))\r
++                              .delegate( (this.data.ui && this.data.checkbox.noui ? "a" : "ins.jstree-checkbox") , "click.jstree", $.proxy(function (e) {\r
++                                              e.preventDefault();\r
++                                              if(this._get_node(e.target).hasClass("jstree-checked")) { this.uncheck_node(e.target); }\r
++                                              else { this.check_node(e.target); }\r
++                                              if(this.data.ui && this.data.checkbox.noui) {\r
++                                                      this.save_selected();\r
++                                                      if(this.data.cookies) { this.save_cookie("select_node"); }\r
++                                              }\r
++                                              else {\r
++                                                      e.stopImmediatePropagation();\r
++                                                      return false;\r
++                                              }\r
++                                      }, this));\r
++              },\r
++              defaults : {\r
++                      override_ui : false,\r
++                      two_state : false,\r
++                      real_checkboxes : false,\r
++                      checked_parent_open : true,\r
++                      real_checkboxes_names : function (n) { return [ ("check_" + (n[0].id || Math.ceil(Math.random() * 10000))) , 1]; }\r
++              },\r
++              __destroy : function () {\r
++                      this.get_container()\r
++                              .find("input.jstree-real-checkbox").removeClass("jstree-real-checkbox").end()\r
++                              .find("ins.jstree-checkbox").remove();\r
++              },\r
++              _fn : {\r
++                      _checkbox_notify : function (n, data) {\r
++                              if(data.checked) {\r
++                                      this.check_node(n, false);\r
++                              }\r
++                      },\r
++                      _prepare_checkboxes : function (obj) {\r
++                              obj = !obj || obj == -1 ? this.get_container().find("> ul > li") : this._get_node(obj);\r
++                              if(obj === false) { return; } // added for removing root nodes\r
++                              var c, _this = this, t, ts = this._get_settings().checkbox.two_state, rc = this._get_settings().checkbox.real_checkboxes, rcn = this._get_settings().checkbox.real_checkboxes_names;\r
++                              obj.each(function () {\r
++                                      t = $(this);\r
++                                      c = t.is("li") && (t.hasClass("jstree-checked") || (rc && t.children(":checked").length)) ? "jstree-checked" : "jstree-unchecked";\r
++                                      t.find("li").andSelf().each(function () {\r
++                                              var $t = $(this), nm;\r
++                                              $t.children("a" + (_this.data.languages ? "" : ":eq(0)") ).not(":has(.jstree-checkbox)").prepend("<ins class='jstree-checkbox'>&#160;</ins>").parent().not(".jstree-checked, .jstree-unchecked").addClass( ts ? "jstree-unchecked" : c );\r
++                                              if(rc) {\r
++                                                      if(!$t.children(":checkbox").length) {\r
++                                                              nm = rcn.call(_this, $t);\r
++                                                              $t.prepend("<input type='checkbox' class='jstree-real-checkbox' id='" + nm[0] + "' name='" + nm[0] + "' value='" + nm[1] + "' />");\r
++                                                      }\r
++                                                      else {\r
++                                                              $t.children(":checkbox").addClass("jstree-real-checkbox");\r
++                                                      }\r
++                                              }\r
++                                              if(!ts) {\r
++                                                      if(c === "jstree-checked" || $t.hasClass("jstree-checked") || $t.children(':checked').length) {\r
++                                                              $t.find("li").andSelf().addClass("jstree-checked").children(":checkbox").prop("checked", true);\r
++                                                      }\r
++                                              }\r
++                                              else {\r
++                                                      if($t.hasClass("jstree-checked") || $t.children(':checked').length) {\r
++                                                              $t.addClass("jstree-checked").children(":checkbox").prop("checked", true);\r
++                                                      }\r
++                                              }\r
++                                      });\r
++                              });\r
++                              if(!ts) {\r
++                                      obj.find(".jstree-checked").parent().parent().each(function () { _this._repair_state(this); }); \r
++                              }\r
++                      },\r
++                      change_state : function (obj, state) {\r
++                              obj = this._get_node(obj);\r
++                              var coll = false, rc = this._get_settings().checkbox.real_checkboxes;\r
++                              if(!obj || obj === -1) { return false; }\r
++                              state = (state === false || state === true) ? state : obj.hasClass("jstree-checked");\r
++                              if(this._get_settings().checkbox.two_state) {\r
++                                      if(state) { \r
++                                              obj.removeClass("jstree-checked").addClass("jstree-unchecked"); \r
++                                              if(rc) { obj.children(":checkbox").prop("checked", false); }\r
++                                      }\r
++                                      else { \r
++                                              obj.removeClass("jstree-unchecked").addClass("jstree-checked"); \r
++                                              if(rc) { obj.children(":checkbox").prop("checked", true); }\r
++                                      }\r
++                              }\r
++                              else {\r
++                                      if(state) { \r
++                                              coll = obj.find("li").andSelf();\r
++                                              if(!coll.filter(".jstree-checked, .jstree-undetermined").length) { return false; }\r
++                                              coll.removeClass("jstree-checked jstree-undetermined").addClass("jstree-unchecked"); \r
++                                              if(rc) { coll.children(":checkbox").prop("checked", false); }\r
++                                      }\r
++                                      else { \r
++                                              coll = obj.find("li").andSelf();\r
++                                              if(!coll.filter(".jstree-unchecked, .jstree-undetermined").length) { return false; }\r
++                                              coll.removeClass("jstree-unchecked jstree-undetermined").addClass("jstree-checked"); \r
++                                              if(rc) { coll.children(":checkbox").prop("checked", true); }\r
++                                              if(this.data.ui) { this.data.ui.last_selected = obj; }\r
++                                              this.data.checkbox.last_selected = obj;\r
++                                      }\r
++                                      obj.parentsUntil(".jstree", "li").each(function () {\r
++                                              var $this = $(this);\r
++                                              if(state) {\r
++                                                      if($this.children("ul").children("li.jstree-checked, li.jstree-undetermined").length) {\r
++                                                              $this.parentsUntil(".jstree", "li").andSelf().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined");\r
++                                                              if(rc) { $this.parentsUntil(".jstree", "li").andSelf().children(":checkbox").prop("checked", false); }\r
++                                                              return false;\r
++                                                      }\r
++                                                      else {\r
++                                                              $this.removeClass("jstree-checked jstree-undetermined").addClass("jstree-unchecked");\r
++                                                              if(rc) { $this.children(":checkbox").prop("checked", false); }\r
++                                                      }\r
++                                              }\r
++                                              else {\r
++                                                      if($this.children("ul").children("li.jstree-unchecked, li.jstree-undetermined").length) {\r
++                                                              $this.parentsUntil(".jstree", "li").andSelf().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined");\r
++                                                              if(rc) { $this.parentsUntil(".jstree", "li").andSelf().children(":checkbox").prop("checked", false); }\r
++                                                              return false;\r
++                                                      }\r
++                                                      else {\r
++                                                              $this.removeClass("jstree-unchecked jstree-undetermined").addClass("jstree-checked");\r
++                                                              if(rc) { $this.children(":checkbox").prop("checked", true); }\r
++                                                      }\r
++                                              }\r
++                                      });\r
++                              }\r
++                              if(this.data.ui && this.data.checkbox.noui) { this.data.ui.selected = this.get_checked(); }\r
++                              this.__callback(obj);\r
++                              return true;\r
++                      },\r
++                      check_node : function (obj) {\r
++                              if(this.change_state(obj, false)) { \r
++                                      obj = this._get_node(obj);\r
++                                      if(this._get_settings().checkbox.checked_parent_open) {\r
++                                              var t = this;\r
++                                              obj.parents(".jstree-closed").each(function () { t.open_node(this, false, true); });\r
++                                      }\r
++                                      this.__callback({ "obj" : obj }); \r
++                              }\r
++                      },\r
++                      uncheck_node : function (obj) {\r
++                              if(this.change_state(obj, true)) { this.__callback({ "obj" : this._get_node(obj) }); }\r
++                      },\r
++                      check_all : function () {\r
++                              var _this = this, \r
++                                      coll = this._get_settings().checkbox.two_state ? this.get_container_ul().find("li") : this.get_container_ul().children("li");\r
++                              coll.each(function () {\r
++                                      _this.change_state(this, false);\r
++                              });\r
++                              this.__callback();\r
++                      },\r
++                      uncheck_all : function () {\r
++                              var _this = this,\r
++                                      coll = this._get_settings().checkbox.two_state ? this.get_container_ul().find("li") : this.get_container_ul().children("li");\r
++                              coll.each(function () {\r
++                                      _this.change_state(this, true);\r
++                              });\r
++                              this.__callback();\r
++                      },\r
++\r
++                      is_checked : function(obj) {\r
++                              obj = this._get_node(obj);\r
++                              return obj.length ? obj.is(".jstree-checked") : false;\r
++                      },\r
++                      get_checked : function (obj, get_all) {\r
++                              obj = !obj || obj === -1 ? this.get_container() : this._get_node(obj);\r
++                              return get_all || this._get_settings().checkbox.two_state ? obj.find(".jstree-checked") : obj.find("> ul > .jstree-checked, .jstree-undetermined > ul > .jstree-checked");\r
++                      },\r
++                      get_unchecked : function (obj, get_all) { \r
++                              obj = !obj || obj === -1 ? this.get_container() : this._get_node(obj);\r
++                              return get_all || this._get_settings().checkbox.two_state ? obj.find(".jstree-unchecked") : obj.find("> ul > .jstree-unchecked, .jstree-undetermined > ul > .jstree-unchecked");\r
++                      },\r
++\r
++                      show_checkboxes : function () { this.get_container().children("ul").removeClass("jstree-no-checkboxes"); },\r
++                      hide_checkboxes : function () { this.get_container().children("ul").addClass("jstree-no-checkboxes"); },\r
++\r
++                      _repair_state : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              if(!obj.length) { return; }\r
++                              if(this._get_settings().checkbox.two_state) {\r
++                                      obj.find('li').andSelf().not('.jstree-checked').removeClass('jstree-undetermined').addClass('jstree-unchecked').children(':checkbox').prop('checked', true);\r
++                                      return;\r
++                              }\r
++                              var rc = this._get_settings().checkbox.real_checkboxes,\r
++                                      a = obj.find("> ul > .jstree-checked").length,\r
++                                      b = obj.find("> ul > .jstree-undetermined").length,\r
++                                      c = obj.find("> ul > li").length;\r
++                              if(c === 0) { if(obj.hasClass("jstree-undetermined")) { this.change_state(obj, false); } }\r
++                              else if(a === 0 && b === 0) { this.change_state(obj, true); }\r
++                              else if(a === c) { this.change_state(obj, false); }\r
++                              else { \r
++                                      obj.parentsUntil(".jstree","li").andSelf().removeClass("jstree-checked jstree-unchecked").addClass("jstree-undetermined");\r
++                                      if(rc) { obj.parentsUntil(".jstree", "li").andSelf().children(":checkbox").prop("checked", false); }\r
++                              }\r
++                      },\r
++                      reselect : function () {\r
++                              if(this.data.ui && this.data.checkbox.noui) { \r
++                                      var _this = this,\r
++                                              s = this.data.ui.to_select;\r
++                                      s = $.map($.makeArray(s), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); });\r
++                                      this.deselect_all();\r
++                                      $.each(s, function (i, val) { _this.check_node(val); });\r
++                                      this.__callback();\r
++                              }\r
++                              else { \r
++                                      this.__call_old(); \r
++                              }\r
++                      },\r
++                      save_loaded : function () {\r
++                              var _this = this;\r
++                              this.data.core.to_load = [];\r
++                              this.get_container_ul().find("li.jstree-closed.jstree-undetermined").each(function () {\r
++                                      if(this.id) { _this.data.core.to_load.push("#" + this.id); }\r
++                              });\r
++                      }\r
++              }\r
++      });\r
++      $(function() {\r
++              var css_string = '.jstree .jstree-real-checkbox { display:none; } ';\r
++              $.vakata.css.add_sheet({ str : css_string, title : "jstree" });\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree XML plugin\r
++ * The XML data store. Datastores are build by overriding the `load_node` and `_is_loaded` functions.\r
++ */\r
++(function ($) {\r
++      $.vakata.xslt = function (xml, xsl, callback) {\r
++              var rs = "", xm, xs, processor, support;\r
++              // TODO: IE9 no XSLTProcessor, no document.recalc\r
++              if(document.recalc) {\r
++                      xm = document.createElement('xml');\r
++                      xs = document.createElement('xml');\r
++                      xm.innerHTML = xml;\r
++                      xs.innerHTML = xsl;\r
++                      $("body").append(xm).append(xs);\r
++                      setTimeout( (function (xm, xs, callback) {\r
++                              return function () {\r
++                                      callback.call(null, xm.transformNode(xs.XMLDocument));\r
++                                      setTimeout( (function (xm, xs) { return function () { $(xm).remove(); $(xs).remove(); }; })(xm, xs), 200);\r
++                              };\r
++                      })(xm, xs, callback), 100);\r
++                      return true;\r
++              }\r
++              if(typeof window.DOMParser !== "undefined" && typeof window.XMLHttpRequest !== "undefined" && typeof window.XSLTProcessor === "undefined") {\r
++                      xml = new DOMParser().parseFromString(xml, "text/xml");\r
++                      xsl = new DOMParser().parseFromString(xsl, "text/xml");\r
++                      // alert(xml.transformNode());\r
++                      // callback.call(null, new XMLSerializer().serializeToString(rs));\r
++                      \r
++              }\r
++              if(typeof window.DOMParser !== "undefined" && typeof window.XMLHttpRequest !== "undefined" && typeof window.XSLTProcessor !== "undefined") {\r
++                      processor = new XSLTProcessor();\r
++                      support = $.isFunction(processor.transformDocument) ? (typeof window.XMLSerializer !== "undefined") : true;\r
++                      if(!support) { return false; }\r
++                      xml = new DOMParser().parseFromString(xml, "text/xml");\r
++                      xsl = new DOMParser().parseFromString(xsl, "text/xml");\r
++                      if($.isFunction(processor.transformDocument)) {\r
++                              rs = document.implementation.createDocument("", "", null);\r
++                              processor.transformDocument(xml, xsl, rs, null);\r
++                              callback.call(null, new XMLSerializer().serializeToString(rs));\r
++                              return true;\r
++                      }\r
++                      else {\r
++                              processor.importStylesheet(xsl);\r
++                              rs = processor.transformToFragment(xml, document);\r
++                              callback.call(null, $("<div />").append(rs).html());\r
++                              return true;\r
++                      }\r
++              }\r
++              return false;\r
++      };\r
++      var xsl = {\r
++              'nest' : '<' + '?xml version="1.0" encoding="utf-8" ?>' + \r
++                      '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >' + \r
++                      '<xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" standalone="no" indent="no" media-type="text/html" />' + \r
++                      '<xsl:template match="/">' + \r
++                      '       <xsl:call-template name="nodes">' + \r
++                      '               <xsl:with-param name="node" select="/root" />' + \r
++                      '       </xsl:call-template>' + \r
++                      '</xsl:template>' + \r
++                      '<xsl:template name="nodes">' + \r
++                      '       <xsl:param name="node" />' + \r
++                      '       <ul>' + \r
++                      '       <xsl:for-each select="$node/item">' + \r
++                      '               <xsl:variable name="children" select="count(./item) &gt; 0" />' + \r
++                      '               <li>' + \r
++                      '                       <xsl:attribute name="class">' + \r
++                      '                               <xsl:if test="position() = last()">jstree-last </xsl:if>' + \r
++                      '                               <xsl:choose>' + \r
++                      '                                       <xsl:when test="@state = \'open\'">jstree-open </xsl:when>' + \r
++                      '                                       <xsl:when test="$children or @hasChildren or @state = \'closed\'">jstree-closed </xsl:when>' + \r
++                      '                                       <xsl:otherwise>jstree-leaf </xsl:otherwise>' + \r
++                      '                               </xsl:choose>' + \r
++                      '                               <xsl:value-of select="@class" />' + \r
++                      '                       </xsl:attribute>' + \r
++                      '                       <xsl:for-each select="@*">' + \r
++                      '                               <xsl:if test="name() != \'class\' and name() != \'state\' and name() != \'hasChildren\'">' + \r
++                      '                                       <xsl:attribute name="{name()}"><xsl:value-of select="." /></xsl:attribute>' + \r
++                      '                               </xsl:if>' + \r
++                      '                       </xsl:for-each>' + \r
++                      '       <ins class="jstree-icon"><xsl:text>&#xa0;</xsl:text></ins>' + \r
++                      '                       <xsl:for-each select="content/name">' + \r
++                      '                               <a>' + \r
++                      '                               <xsl:attribute name="href">' + \r
++                      '                                       <xsl:choose>' + \r
++                      '                                       <xsl:when test="@href"><xsl:value-of select="@href" /></xsl:when>' + \r
++                      '                                       <xsl:otherwise>#</xsl:otherwise>' + \r
++                      '                                       </xsl:choose>' + \r
++                      '                               </xsl:attribute>' + \r
++                      '                               <xsl:attribute name="class"><xsl:value-of select="@lang" /> <xsl:value-of select="@class" /></xsl:attribute>' + \r
++                      '                               <xsl:attribute name="style"><xsl:value-of select="@style" /></xsl:attribute>' + \r
++                      '                               <xsl:for-each select="@*">' + \r
++                      '                                       <xsl:if test="name() != \'style\' and name() != \'class\' and name() != \'href\'">' + \r
++                      '                                               <xsl:attribute name="{name()}"><xsl:value-of select="." /></xsl:attribute>' + \r
++                      '                                       </xsl:if>' + \r
++                      '                               </xsl:for-each>' + \r
++                      '                                       <ins>' + \r
++                      '                                               <xsl:attribute name="class">jstree-icon ' + \r
++                      '                                                       <xsl:if test="string-length(attribute::icon) > 0 and not(contains(@icon,\'/\'))"><xsl:value-of select="@icon" /></xsl:if>' + \r
++                      '                                               </xsl:attribute>' + \r
++                      '                                               <xsl:if test="string-length(attribute::icon) > 0 and contains(@icon,\'/\')"><xsl:attribute name="style">background:url(<xsl:value-of select="@icon" />) center center no-repeat;</xsl:attribute></xsl:if>' + \r
++                      '                                               <xsl:text>&#xa0;</xsl:text>' + \r
++                      '                                       </ins>' + \r
++                      '                                       <xsl:copy-of select="./child::node()" />' + \r
++                      '                               </a>' + \r
++                      '                       </xsl:for-each>' + \r
++                      '                       <xsl:if test="$children or @hasChildren"><xsl:call-template name="nodes"><xsl:with-param name="node" select="current()" /></xsl:call-template></xsl:if>' + \r
++                      '               </li>' + \r
++                      '       </xsl:for-each>' + \r
++                      '       </ul>' + \r
++                      '</xsl:template>' + \r
++                      '</xsl:stylesheet>',\r
++\r
++              'flat' : '<' + '?xml version="1.0" encoding="utf-8" ?>' + \r
++                      '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >' + \r
++                      '<xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" standalone="no" indent="no" media-type="text/xml" />' + \r
++                      '<xsl:template match="/">' + \r
++                      '       <ul>' + \r
++                      '       <xsl:for-each select="//item[not(@parent_id) or @parent_id=0 or not(@parent_id = //item/@id)]">' + /* the last `or` may be removed */\r
++                      '               <xsl:call-template name="nodes">' + \r
++                      '                       <xsl:with-param name="node" select="." />' + \r
++                      '                       <xsl:with-param name="is_last" select="number(position() = last())" />' + \r
++                      '               </xsl:call-template>' + \r
++                      '       </xsl:for-each>' + \r
++                      '       </ul>' + \r
++                      '</xsl:template>' + \r
++                      '<xsl:template name="nodes">' + \r
++                      '       <xsl:param name="node" />' + \r
++                      '       <xsl:param name="is_last" />' + \r
++                      '       <xsl:variable name="children" select="count(//item[@parent_id=$node/attribute::id]) &gt; 0" />' + \r
++                      '       <li>' + \r
++                      '       <xsl:attribute name="class">' + \r
++                      '               <xsl:if test="$is_last = true()">jstree-last </xsl:if>' + \r
++                      '               <xsl:choose>' + \r
++                      '                       <xsl:when test="@state = \'open\'">jstree-open </xsl:when>' + \r
++                      '                       <xsl:when test="$children or @hasChildren or @state = \'closed\'">jstree-closed </xsl:when>' + \r
++                      '                       <xsl:otherwise>jstree-leaf </xsl:otherwise>' + \r
++                      '               </xsl:choose>' + \r
++                      '               <xsl:value-of select="@class" />' + \r
++                      '       </xsl:attribute>' + \r
++                      '       <xsl:for-each select="@*">' + \r
++                      '               <xsl:if test="name() != \'parent_id\' and name() != \'hasChildren\' and name() != \'class\' and name() != \'state\'">' + \r
++                      '               <xsl:attribute name="{name()}"><xsl:value-of select="." /></xsl:attribute>' + \r
++                      '               </xsl:if>' + \r
++                      '       </xsl:for-each>' + \r
++                      '       <ins class="jstree-icon"><xsl:text>&#xa0;</xsl:text></ins>' + \r
++                      '       <xsl:for-each select="content/name">' + \r
++                      '               <a>' + \r
++                      '               <xsl:attribute name="href">' + \r
++                      '                       <xsl:choose>' + \r
++                      '                       <xsl:when test="@href"><xsl:value-of select="@href" /></xsl:when>' + \r
++                      '                       <xsl:otherwise>#</xsl:otherwise>' + \r
++                      '                       </xsl:choose>' + \r
++                      '               </xsl:attribute>' + \r
++                      '               <xsl:attribute name="class"><xsl:value-of select="@lang" /> <xsl:value-of select="@class" /></xsl:attribute>' + \r
++                      '               <xsl:attribute name="style"><xsl:value-of select="@style" /></xsl:attribute>' + \r
++                      '               <xsl:for-each select="@*">' + \r
++                      '                       <xsl:if test="name() != \'style\' and name() != \'class\' and name() != \'href\'">' + \r
++                      '                               <xsl:attribute name="{name()}"><xsl:value-of select="." /></xsl:attribute>' + \r
++                      '                       </xsl:if>' + \r
++                      '               </xsl:for-each>' + \r
++                      '                       <ins>' + \r
++                      '                               <xsl:attribute name="class">jstree-icon ' + \r
++                      '                                       <xsl:if test="string-length(attribute::icon) > 0 and not(contains(@icon,\'/\'))"><xsl:value-of select="@icon" /></xsl:if>' + \r
++                      '                               </xsl:attribute>' + \r
++                      '                               <xsl:if test="string-length(attribute::icon) > 0 and contains(@icon,\'/\')"><xsl:attribute name="style">background:url(<xsl:value-of select="@icon" />) center center no-repeat;</xsl:attribute></xsl:if>' + \r
++                      '                               <xsl:text>&#xa0;</xsl:text>' + \r
++                      '                       </ins>' + \r
++                      '                       <xsl:copy-of select="./child::node()" />' + \r
++                      '               </a>' + \r
++                      '       </xsl:for-each>' + \r
++                      '       <xsl:if test="$children">' + \r
++                      '               <ul>' + \r
++                      '               <xsl:for-each select="//item[@parent_id=$node/attribute::id]">' + \r
++                      '                       <xsl:call-template name="nodes">' + \r
++                      '                               <xsl:with-param name="node" select="." />' + \r
++                      '                               <xsl:with-param name="is_last" select="number(position() = last())" />' + \r
++                      '                       </xsl:call-template>' + \r
++                      '               </xsl:for-each>' + \r
++                      '               </ul>' + \r
++                      '       </xsl:if>' + \r
++                      '       </li>' + \r
++                      '</xsl:template>' + \r
++                      '</xsl:stylesheet>'\r
++      },\r
++      escape_xml = function(string) {\r
++              return string\r
++                      .toString()\r
++                      .replace(/&/g, '&amp;')\r
++                      .replace(/</g, '&lt;')\r
++                      .replace(/>/g, '&gt;')\r
++                      .replace(/"/g, '&quot;')\r
++                      .replace(/'/g, '&apos;');\r
++      };\r
++      $.jstree.plugin("xml_data", {\r
++              defaults : { \r
++                      data : false,\r
++                      ajax : false,\r
++                      xsl : "flat",\r
++                      clean_node : false,\r
++                      correct_state : true,\r
++                      get_skip_empty : false,\r
++                      get_include_preamble : true\r
++              },\r
++              _fn : {\r
++                      load_node : function (obj, s_call, e_call) { var _this = this; this.load_node_xml(obj, function () { _this.__callback({ "obj" : _this._get_node(obj) }); s_call.call(this); }, e_call); },\r
++                      _is_loaded : function (obj) { \r
++                              var s = this._get_settings().xml_data;\r
++                              obj = this._get_node(obj);\r
++                              return obj == -1 || !obj || (!s.ajax && !$.isFunction(s.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").size() > 0;\r
++                      },\r
++                      load_node_xml : function (obj, s_call, e_call) {\r
++                              var s = this.get_settings().xml_data,\r
++                                      error_func = function () {},\r
++                                      success_func = function () {};\r
++\r
++                              obj = this._get_node(obj);\r
++                              if(obj && obj !== -1) {\r
++                                      if(obj.data("jstree_is_loading")) { return; }\r
++                                      else { obj.data("jstree_is_loading",true); }\r
++                              }\r
++                              switch(!0) {\r
++                                      case (!s.data && !s.ajax): throw "Neither data nor ajax settings supplied.";\r
++                                      case ($.isFunction(s.data)):\r
++                                              s.data.call(this, obj, $.proxy(function (d) {\r
++                                                      this.parse_xml(d, $.proxy(function (d) {\r
++                                                              if(d) {\r
++                                                                      d = d.replace(/ ?xmlns="[^"]*"/ig, "");\r
++                                                                      if(d.length > 10) {\r
++                                                                              d = $(d);\r
++                                                                              if(obj === -1 || !obj) { this.get_container().children("ul").empty().append(d.children()); }\r
++                                                                              else { obj.children("a.jstree-loading").removeClass("jstree-loading"); obj.append(d); obj.removeData("jstree_is_loading"); }\r
++                                                                              if(s.clean_node) { this.clean_node(obj); }\r
++                                                                              if(s_call) { s_call.call(this); }\r
++                                                                      }\r
++                                                                      else {\r
++                                                                              if(obj && obj !== -1) { \r
++                                                                                      obj.children("a.jstree-loading").removeClass("jstree-loading");\r
++                                                                                      obj.removeData("jstree_is_loading");\r
++                                                                                      if(s.correct_state) { \r
++                                                                                              this.correct_state(obj);\r
++                                                                                              if(s_call) { s_call.call(this); } \r
++                                                                                      }\r
++                                                                              }\r
++                                                                              else {\r
++                                                                                      if(s.correct_state) { \r
++                                                                                              this.get_container().children("ul").empty();\r
++                                                                                              if(s_call) { s_call.call(this); } \r
++                                                                                      }\r
++                                                                              }\r
++                                                                      }\r
++                                                              }\r
++                                                      }, this));\r
++                                              }, this));\r
++                                              break;\r
++                                      case (!!s.data && !s.ajax) || (!!s.data && !!s.ajax && (!obj || obj === -1)):\r
++                                              if(!obj || obj == -1) {\r
++                                                      this.parse_xml(s.data, $.proxy(function (d) {\r
++                                                              if(d) {\r
++                                                                      d = d.replace(/ ?xmlns="[^"]*"/ig, "");\r
++                                                                      if(d.length > 10) {\r
++                                                                              d = $(d);\r
++                                                                              this.get_container().children("ul").empty().append(d.children());\r
++                                                                              if(s.clean_node) { this.clean_node(obj); }\r
++                                                                              if(s_call) { s_call.call(this); }\r
++                                                                      }\r
++                                                              }\r
++                                                              else { \r
++                                                                      if(s.correct_state) { \r
++                                                                              this.get_container().children("ul").empty(); \r
++                                                                              if(s_call) { s_call.call(this); }\r
++                                                                      }\r
++                                                              }\r
++                                                      }, this));\r
++                                              }\r
++                                              break;\r
++                                      case (!s.data && !!s.ajax) || (!!s.data && !!s.ajax && obj && obj !== -1):\r
++                                              error_func = function (x, t, e) {\r
++                                                      var ef = this.get_settings().xml_data.ajax.error; \r
++                                                      if(ef) { ef.call(this, x, t, e); }\r
++                                                      if(obj !== -1 && obj.length) {\r
++                                                              obj.children("a.jstree-loading").removeClass("jstree-loading");\r
++                                                              obj.removeData("jstree_is_loading");\r
++                                                              if(t === "success" && s.correct_state) { this.correct_state(obj); }\r
++                                                      }\r
++                                                      else {\r
++                                                              if(t === "success" && s.correct_state) { this.get_container().children("ul").empty(); }\r
++                                                      }\r
++                                                      if(e_call) { e_call.call(this); }\r
++                                              };\r
++                                              success_func = function (d, t, x) {\r
++                                                      d = x.responseText;\r
++                                                      var sf = this.get_settings().xml_data.ajax.success; \r
++                                                      if(sf) { d = sf.call(this,d,t,x) || d; }\r
++                                                      if(d === "" || (d && d.toString && d.toString().replace(/^[\s\n]+$/,"") === "")) {\r
++                                                              return error_func.call(this, x, t, "");\r
++                                                      }\r
++                                                      this.parse_xml(d, $.proxy(function (d) {\r
++                                                              if(d) {\r
++                                                                      d = d.replace(/ ?xmlns="[^"]*"/ig, "");\r
++                                                                      if(d.length > 10) {\r
++                                                                              d = $(d);\r
++                                                                              if(obj === -1 || !obj) { this.get_container().children("ul").empty().append(d.children()); }\r
++                                                                              else { obj.children("a.jstree-loading").removeClass("jstree-loading"); obj.append(d); obj.removeData("jstree_is_loading"); }\r
++                                                                              if(s.clean_node) { this.clean_node(obj); }\r
++                                                                              if(s_call) { s_call.call(this); }\r
++                                                                      }\r
++                                                                      else {\r
++                                                                              if(obj && obj !== -1) { \r
++                                                                                      obj.children("a.jstree-loading").removeClass("jstree-loading");\r
++                                                                                      obj.removeData("jstree_is_loading");\r
++                                                                                      if(s.correct_state) { \r
++                                                                                              this.correct_state(obj);\r
++                                                                                              if(s_call) { s_call.call(this); } \r
++                                                                                      }\r
++                                                                              }\r
++                                                                              else {\r
++                                                                                      if(s.correct_state) { \r
++                                                                                              this.get_container().children("ul").empty();\r
++                                                                                              if(s_call) { s_call.call(this); } \r
++                                                                                      }\r
++                                                                              }\r
++                                                                      }\r
++                                                              }\r
++                                                      }, this));\r
++                                              };\r
++                                              s.ajax.context = this;\r
++                                              s.ajax.error = error_func;\r
++                                              s.ajax.success = success_func;\r
++                                              if(!s.ajax.dataType) { s.ajax.dataType = "xml"; }\r
++                                              if($.isFunction(s.ajax.url)) { s.ajax.url = s.ajax.url.call(this, obj); }\r
++                                              if($.isFunction(s.ajax.data)) { s.ajax.data = s.ajax.data.call(this, obj); }\r
++                                              $.ajax(s.ajax);\r
++                                              break;\r
++                              }\r
++                      },\r
++                      parse_xml : function (xml, callback) {\r
++                              var s = this._get_settings().xml_data;\r
++                              $.vakata.xslt(xml, xsl[s.xsl], callback);\r
++                      },\r
++                      get_xml : function (tp, obj, li_attr, a_attr, is_callback) {\r
++                              var result = "", \r
++                                      s = this._get_settings(), \r
++                                      _this = this,\r
++                                      tmp1, tmp2, li, a, lang;\r
++                              if(!tp) { tp = "flat"; }\r
++                              if(!is_callback) { is_callback = 0; }\r
++                              obj = this._get_node(obj);\r
++                              if(!obj || obj === -1) { obj = this.get_container().find("> ul > li"); }\r
++                              li_attr = $.isArray(li_attr) ? li_attr : [ "id", "class" ];\r
++                              if(!is_callback && this.data.types && $.inArray(s.types.type_attr, li_attr) === -1) { li_attr.push(s.types.type_attr); }\r
++\r
++                              a_attr = $.isArray(a_attr) ? a_attr : [ ];\r
++\r
++                              if(!is_callback) { \r
++                                      if(s.xml_data.get_include_preamble) { \r
++                                              result += '<' + '?xml version="1.0" encoding="UTF-8"?' + '>'; \r
++                                      }\r
++                                      result += "<root>"; \r
++                              }\r
++                              obj.each(function () {\r
++                                      result += "<item";\r
++                                      li = $(this);\r
++                                      $.each(li_attr, function (i, v) { \r
++                                              var t = li.attr(v);\r
++                                              if(!s.xml_data.get_skip_empty || typeof t !== "undefined") {\r
++                                                      result += " " + v + "=\"" + escape_xml((" " + (t || "")).replace(/ jstree[^ ]*/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,"")) + "\""; \r
++                                              }\r
++                                      });\r
++                                      if(li.hasClass("jstree-open")) { result += " state=\"open\""; }\r
++                                      if(li.hasClass("jstree-closed")) { result += " state=\"closed\""; }\r
++                                      if(tp === "flat") { result += " parent_id=\"" + escape_xml(is_callback) + "\""; }\r
++                                      result += ">";\r
++                                      result += "<content>";\r
++                                      a = li.children("a");\r
++                                      a.each(function () {\r
++                                              tmp1 = $(this);\r
++                                              lang = false;\r
++                                              result += "<name";\r
++                                              if($.inArray("languages", s.plugins) !== -1) {\r
++                                                      $.each(s.languages, function (k, z) {\r
++                                                              if(tmp1.hasClass(z)) { result += " lang=\"" + escape_xml(z) + "\""; lang = z; return false; }\r
++                                                      });\r
++                                              }\r
++                                              if(a_attr.length) { \r
++                                                      $.each(a_attr, function (k, z) {\r
++                                                              var t = tmp1.attr(z);\r
++                                                              if(!s.xml_data.get_skip_empty || typeof t !== "undefined") {\r
++                                                                      result += " " + z + "=\"" + escape_xml((" " + t || "").replace(/ jstree[^ ]*/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,"")) + "\"";\r
++                                                              }\r
++                                                      });\r
++                                              }\r
++                                              if(tmp1.children("ins").get(0).className.replace(/jstree[^ ]*|$/ig,'').replace(/^\s+$/ig,"").length) {\r
++                                                      result += ' icon="' + escape_xml(tmp1.children("ins").get(0).className.replace(/jstree[^ ]*|$/ig,'').replace(/\s+$/ig," ").replace(/^ /,"").replace(/ $/,"")) + '"';\r
++                                              }\r
++                                              if(tmp1.children("ins").get(0).style.backgroundImage.length) {\r
++                                                      result += ' icon="' + escape_xml(tmp1.children("ins").get(0).style.backgroundImage.replace("url(","").replace(")","").replace(/'/ig,"").replace(/"/ig,"")) + '"';\r
++                                              }\r
++                                              result += ">";\r
++                                              result += "<![CDATA[" + _this.get_text(tmp1, lang) + "]]>";\r
++                                              result += "</name>";\r
++                                      });\r
++                                      result += "</content>";\r
++                                      tmp2 = li[0].id || true;\r
++                                      li = li.find("> ul > li");\r
++                                      if(li.length) { tmp2 = _this.get_xml(tp, li, li_attr, a_attr, tmp2); }\r
++                                      else { tmp2 = ""; }\r
++                                      if(tp == "nest") { result += tmp2; }\r
++                                      result += "</item>";\r
++                                      if(tp == "flat") { result += tmp2; }\r
++                              });\r
++                              if(!is_callback) { result += "</root>"; }\r
++                              return result;\r
++                      }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/*\r
++ * jsTree search plugin\r
++ * Enables both sync and async search on the tree\r
++ * DOES NOT WORK WITH JSON PROGRESSIVE RENDER\r
++ */\r
++(function ($) {\r
++      $.expr[':'].jstree_contains = function(a,i,m){\r
++              return (a.textContent || a.innerText || "").toLowerCase().indexOf(m[3].toLowerCase())>=0;\r
++      };\r
++      $.expr[':'].jstree_title_contains = function(a,i,m) {\r
++              return (a.getAttribute("title") || "").toLowerCase().indexOf(m[3].toLowerCase())>=0;\r
++      };\r
++      $.jstree.plugin("search", {\r
++              __init : function () {\r
++                      this.data.search.str = "";\r
++                      this.data.search.result = $();\r
++                      if(this._get_settings().search.show_only_matches) {\r
++                              this.get_container()\r
++                                      .bind("search.jstree", function (e, data) {\r
++                                              $(this).children("ul").find("li").hide().removeClass("jstree-last");\r
++                                              data.rslt.nodes.parentsUntil(".jstree").andSelf().show()\r
++                                                      .filter("ul").each(function () { $(this).children("li:visible").eq(-1).addClass("jstree-last"); });\r
++                                      })\r
++                                      .bind("clear_search.jstree", function () {\r
++                                              $(this).children("ul").find("li").css("display","").end().end().jstree("clean_node", -1);\r
++                                      });\r
++                      }\r
++              },\r
++              defaults : {\r
++                      ajax : false,\r
++                      search_method : "jstree_contains", // for case insensitive - jstree_contains\r
++                      show_only_matches : false\r
++              },\r
++              _fn : {\r
++                      search : function (str, skip_async) {\r
++                              if($.trim(str) === "") { this.clear_search(); return; }\r
++                              var s = this.get_settings().search, \r
++                                      t = this,\r
++                                      error_func = function () { },\r
++                                      success_func = function () { };\r
++                              this.data.search.str = str;\r
++\r
++                              if(!skip_async && s.ajax !== false && this.get_container_ul().find("li.jstree-closed:not(:has(ul)):eq(0)").length > 0) {\r
++                                      this.search.supress_callback = true;\r
++                                      error_func = function () { };\r
++                                      success_func = function (d, t, x) {\r
++                                              var sf = this.get_settings().search.ajax.success; \r
++                                              if(sf) { d = sf.call(this,d,t,x) || d; }\r
++                                              this.data.search.to_open = d;\r
++                                              this._search_open();\r
++                                      };\r
++                                      s.ajax.context = this;\r
++                                      s.ajax.error = error_func;\r
++                                      s.ajax.success = success_func;\r
++                                      if($.isFunction(s.ajax.url)) { s.ajax.url = s.ajax.url.call(this, str); }\r
++                                      if($.isFunction(s.ajax.data)) { s.ajax.data = s.ajax.data.call(this, str); }\r
++                                      if(!s.ajax.data) { s.ajax.data = { "search_string" : str }; }\r
++                                      if(!s.ajax.dataType || /^json/.exec(s.ajax.dataType)) { s.ajax.dataType = "json"; }\r
++                                      $.ajax(s.ajax);\r
++                                      return;\r
++                              }\r
++                              if(this.data.search.result.length) { this.clear_search(); }\r
++                              this.data.search.result = this.get_container().find("a" + (this.data.languages ? "." + this.get_lang() : "" ) + ":" + (s.search_method) + "(" + this.data.search.str + ")");\r
++                              this.data.search.result.addClass("jstree-search").parent().parents(".jstree-closed").each(function () {\r
++                                      t.open_node(this, false, true);\r
++                              });\r
++                              this.__callback({ nodes : this.data.search.result, str : str });\r
++                      },\r
++                      clear_search : function (str) {\r
++                              this.data.search.result.removeClass("jstree-search");\r
++                              this.__callback(this.data.search.result);\r
++                              this.data.search.result = $();\r
++                      },\r
++                      _search_open : function (is_callback) {\r
++                              var _this = this,\r
++                                      done = true,\r
++                                      current = [],\r
++                                      remaining = [];\r
++                              if(this.data.search.to_open.length) {\r
++                                      $.each(this.data.search.to_open, function (i, val) {\r
++                                              if(val == "#") { return true; }\r
++                                              if($(val).length && $(val).is(".jstree-closed")) { current.push(val); }\r
++                                              else { remaining.push(val); }\r
++                                      });\r
++                                      if(current.length) {\r
++                                              this.data.search.to_open = remaining;\r
++                                              $.each(current, function (i, val) { \r
++                                                      _this.open_node(val, function () { _this._search_open(true); }); \r
++                                              });\r
++                                              done = false;\r
++                                      }\r
++                              }\r
++                              if(done) { this.search(this.data.search.str, true); }\r
++                      }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree contextmenu plugin\r
++ */\r
++(function ($) {\r
++      $.vakata.context = {\r
++              hide_on_mouseleave : false,\r
++\r
++              cnt             : $("<div id='vakata-contextmenu' />"),\r
++              vis             : false,\r
++              tgt             : false,\r
++              par             : false,\r
++              func    : false,\r
++              data    : false,\r
++              rtl             : false,\r
++              show    : function (s, t, x, y, d, p, rtl) {\r
++                      $.vakata.context.rtl = !!rtl;\r
++                      var html = $.vakata.context.parse(s), h, w;\r
++                      if(!html) { return; }\r
++                      $.vakata.context.vis = true;\r
++                      $.vakata.context.tgt = t;\r
++                      $.vakata.context.par = p || t || null;\r
++                      $.vakata.context.data = d || null;\r
++                      $.vakata.context.cnt\r
++                              .html(html)\r
++                              .css({ "visibility" : "hidden", "display" : "block", "left" : 0, "top" : 0 });\r
++\r
++                      if($.vakata.context.hide_on_mouseleave) {\r
++                              $.vakata.context.cnt\r
++                                      .one("mouseleave", function(e) { $.vakata.context.hide(); });\r
++                      }\r
++\r
++                      h = $.vakata.context.cnt.height();\r
++                      w = $.vakata.context.cnt.width();\r
++                      if(x + w > $(document).width()) { \r
++                              x = $(document).width() - (w + 5); \r
++                              $.vakata.context.cnt.find("li > ul").addClass("right"); \r
++                      }\r
++                      if(y + h > $(document).height()) { \r
++                              y = y - (h + t[0].offsetHeight); \r
++                              $.vakata.context.cnt.find("li > ul").addClass("bottom"); \r
++                      }\r
++\r
++                      $.vakata.context.cnt\r
++                              .css({ "left" : x, "top" : y })\r
++                              .find("li:has(ul)")\r
++                                      .bind("mouseenter", function (e) { \r
++                                              var w = $(document).width(),\r
++                                                      h = $(document).height(),\r
++                                                      ul = $(this).children("ul").show(); \r
++                                              if(w !== $(document).width()) { ul.toggleClass("right"); }\r
++                                              if(h !== $(document).height()) { ul.toggleClass("bottom"); }\r
++                                      })\r
++                                      .bind("mouseleave", function (e) { \r
++                                              $(this).children("ul").hide(); \r
++                                      })\r
++                                      .end()\r
++                              .css({ "visibility" : "visible" })\r
++                              .show();\r
++                      $(document).triggerHandler("context_show.vakata");\r
++              },\r
++              hide    : function () {\r
++                      $.vakata.context.vis = false;\r
++                      $.vakata.context.cnt.attr("class","").css({ "visibility" : "hidden" });\r
++                      $(document).triggerHandler("context_hide.vakata");\r
++              },\r
++              parse   : function (s, is_callback) {\r
++                      if(!s) { return false; }\r
++                      var str = "",\r
++                              tmp = false,\r
++                              was_sep = true;\r
++                      if(!is_callback) { $.vakata.context.func = {}; }\r
++                      str += "<ul>";\r
++                      $.each(s, function (i, val) {\r
++                              if(!val) { return true; }\r
++                              $.vakata.context.func[i] = val.action;\r
++                              if(!was_sep && val.separator_before) {\r
++                                      str += "<li class='vakata-separator vakata-separator-before'></li>";\r
++                              }\r
++                              was_sep = false;\r
++                              str += "<li class='" + (val._class || "") + (val._disabled ? " jstree-contextmenu-disabled " : "") + "'><ins ";\r
++                              if(val.icon && val.icon.indexOf("/") === -1) { str += " class='" + val.icon + "' "; }\r
++                              if(val.icon && val.icon.indexOf("/") !== -1) { str += " style='background:url(" + val.icon + ") center center no-repeat;' "; }\r
++                              str += ">&#160;</ins><a href='#' rel='" + i + "'>";\r
++                              if(val.submenu) {\r
++                                      str += "<span style='float:" + ($.vakata.context.rtl ? "left" : "right") + ";'>&raquo;</span>";\r
++                              }\r
++                              str += val.label + "</a>";\r
++                              if(val.submenu) {\r
++                                      tmp = $.vakata.context.parse(val.submenu, true);\r
++                                      if(tmp) { str += tmp; }\r
++                              }\r
++                              str += "</li>";\r
++                              if(val.separator_after) {\r
++                                      str += "<li class='vakata-separator vakata-separator-after'></li>";\r
++                                      was_sep = true;\r
++                              }\r
++                      });\r
++                      str = str.replace(/<li class\='vakata-separator vakata-separator-after'\><\/li\>$/,"");\r
++                      str += "</ul>";\r
++                      $(document).triggerHandler("context_parse.vakata");\r
++                      return str.length > 10 ? str : false;\r
++              },\r
++              exec    : function (i) {\r
++                      if($.isFunction($.vakata.context.func[i])) {\r
++                              // if is string - eval and call it!\r
++                              $.vakata.context.func[i].call($.vakata.context.data, $.vakata.context.par);\r
++                              return true;\r
++                      }\r
++                      else { return false; }\r
++              }\r
++      };\r
++      $(function () {\r
++              var css_string = '' + \r
++                      '#vakata-contextmenu { display:block; visibility:hidden; left:0; top:-200px; position:absolute; margin:0; padding:0; min-width:180px; background:#ebebeb; border:1px solid silver; z-index:10000; *width:180px; } ' + \r
++                      '#vakata-contextmenu ul { min-width:180px; *width:180px; } ' + \r
++                      '#vakata-contextmenu ul, #vakata-contextmenu li { margin:0; padding:0; list-style-type:none; display:block; } ' + \r
++                      '#vakata-contextmenu li { line-height:20px; min-height:20px; position:relative; padding:0px; } ' + \r
++                      '#vakata-contextmenu li a { padding:1px 6px; line-height:17px; display:block; text-decoration:none; margin:1px 1px 0 1px; } ' + \r
++                      '#vakata-contextmenu li ins { float:left; width:16px; height:16px; text-decoration:none; margin-right:2px; } ' + \r
++                      '#vakata-contextmenu li a:hover, #vakata-contextmenu li.vakata-hover > a { background:gray; color:white; } ' + \r
++                      '#vakata-contextmenu li ul { display:none; position:absolute; top:-2px; left:100%; background:#ebebeb; border:1px solid gray; } ' + \r
++                      '#vakata-contextmenu .right { right:100%; left:auto; } ' + \r
++                      '#vakata-contextmenu .bottom { bottom:-1px; top:auto; } ' + \r
++                      '#vakata-contextmenu li.vakata-separator { min-height:0; height:1px; line-height:1px; font-size:1px; overflow:hidden; margin:0 2px; background:silver; /* border-top:1px solid #fefefe; */ padding:0; } ';\r
++              $.vakata.css.add_sheet({ str : css_string, title : "vakata" });\r
++              $.vakata.context.cnt\r
++                      .delegate("a","click", function (e) { e.preventDefault(); })\r
++                      .delegate("a","mouseup", function (e) {\r
++                              if(!$(this).parent().hasClass("jstree-contextmenu-disabled") && $.vakata.context.exec($(this).attr("rel"))) {\r
++                                      $.vakata.context.hide();\r
++                              }\r
++                              else { $(this).blur(); }\r
++                      })\r
++                      .delegate("a","mouseover", function () {\r
++                              $.vakata.context.cnt.find(".vakata-hover").removeClass("vakata-hover");\r
++                      })\r
++                      .appendTo("body");\r
++              $(document).bind("mousedown", function (e) { if($.vakata.context.vis && !$.contains($.vakata.context.cnt[0], e.target)) { $.vakata.context.hide(); } });\r
++              if(typeof $.hotkeys !== "undefined") {\r
++                      $(document)\r
++                              .bind("keydown", "up", function (e) { \r
++                                      if($.vakata.context.vis) { \r
++                                              var o = $.vakata.context.cnt.find("ul:visible").last().children(".vakata-hover").removeClass("vakata-hover").prevAll("li:not(.vakata-separator)").first();\r
++                                              if(!o.length) { o = $.vakata.context.cnt.find("ul:visible").last().children("li:not(.vakata-separator)").last(); }\r
++                                              o.addClass("vakata-hover");\r
++                                              e.stopImmediatePropagation(); \r
++                                              e.preventDefault();\r
++                                      } \r
++                              })\r
++                              .bind("keydown", "down", function (e) { \r
++                                      if($.vakata.context.vis) { \r
++                                              var o = $.vakata.context.cnt.find("ul:visible").last().children(".vakata-hover").removeClass("vakata-hover").nextAll("li:not(.vakata-separator)").first();\r
++                                              if(!o.length) { o = $.vakata.context.cnt.find("ul:visible").last().children("li:not(.vakata-separator)").first(); }\r
++                                              o.addClass("vakata-hover");\r
++                                              e.stopImmediatePropagation(); \r
++                                              e.preventDefault();\r
++                                      } \r
++                              })\r
++                              .bind("keydown", "right", function (e) { \r
++                                      if($.vakata.context.vis) { \r
++                                              $.vakata.context.cnt.find(".vakata-hover").children("ul").show().children("li:not(.vakata-separator)").removeClass("vakata-hover").first().addClass("vakata-hover");\r
++                                              e.stopImmediatePropagation(); \r
++                                              e.preventDefault();\r
++                                      } \r
++                              })\r
++                              .bind("keydown", "left", function (e) { \r
++                                      if($.vakata.context.vis) { \r
++                                              $.vakata.context.cnt.find(".vakata-hover").children("ul").hide().children(".vakata-separator").removeClass("vakata-hover");\r
++                                              e.stopImmediatePropagation(); \r
++                                              e.preventDefault();\r
++                                      } \r
++                              })\r
++                              .bind("keydown", "esc", function (e) { \r
++                                      $.vakata.context.hide(); \r
++                                      e.preventDefault();\r
++                              })\r
++                              .bind("keydown", "space", function (e) { \r
++                                      $.vakata.context.cnt.find(".vakata-hover").last().children("a").click();\r
++                                      e.preventDefault();\r
++                              });\r
++              }\r
++      });\r
++\r
++      $.jstree.plugin("contextmenu", {\r
++              __init : function () {\r
++                      this.get_container()\r
++                              .delegate("a", "contextmenu.jstree", $.proxy(function (e) {\r
++                                              e.preventDefault();\r
++                                              if(!$(e.currentTarget).hasClass("jstree-loading")) {\r
++                                                      this.show_contextmenu(e.currentTarget, e.pageX, e.pageY);\r
++                                              }\r
++                                      }, this))\r
++                              .delegate("a", "click.jstree", $.proxy(function (e) {\r
++                                              if(this.data.contextmenu) {\r
++                                                      $.vakata.context.hide();\r
++                                              }\r
++                                      }, this))\r
++                              .bind("destroy.jstree", $.proxy(function () {\r
++                                              // TODO: move this to descruct method\r
++                                              if(this.data.contextmenu) {\r
++                                                      $.vakata.context.hide();\r
++                                              }\r
++                                      }, this));\r
++                      $(document).bind("context_hide.vakata", $.proxy(function () { this.data.contextmenu = false; }, this));\r
++              },\r
++              defaults : { \r
++                      select_node : false, // requires UI plugin\r
++                      show_at_node : true,\r
++                      items : { // Could be a function that should return an object like this one\r
++                              "create" : {\r
++                                      "separator_before"      : false,\r
++                                      "separator_after"       : true,\r
++                                      "label"                         : "Create",\r
++                                      "action"                        : function (obj) { this.create(obj); }\r
++                              },\r
++                              "rename" : {\r
++                                      "separator_before"      : false,\r
++                                      "separator_after"       : false,\r
++                                      "label"                         : "Rename",\r
++                                      "action"                        : function (obj) { this.rename(obj); }\r
++                              },\r
++                              "remove" : {\r
++                                      "separator_before"      : false,\r
++                                      "icon"                          : false,\r
++                                      "separator_after"       : false,\r
++                                      "label"                         : "Delete",\r
++                                      "action"                        : function (obj) { if(this.is_selected(obj)) { this.remove(); } else { this.remove(obj); } }\r
++                              },\r
++                              "ccp" : {\r
++                                      "separator_before"      : true,\r
++                                      "icon"                          : false,\r
++                                      "separator_after"       : false,\r
++                                      "label"                         : "Edit",\r
++                                      "action"                        : false,\r
++                                      "submenu" : { \r
++                                              "cut" : {\r
++                                                      "separator_before"      : false,\r
++                                                      "separator_after"       : false,\r
++                                                      "label"                         : "Cut",\r
++                                                      "action"                        : function (obj) { this.cut(obj); }\r
++                                              },\r
++                                              "copy" : {\r
++                                                      "separator_before"      : false,\r
++                                                      "icon"                          : false,\r
++                                                      "separator_after"       : false,\r
++                                                      "label"                         : "Copy",\r
++                                                      "action"                        : function (obj) { this.copy(obj); }\r
++                                              },\r
++                                              "paste" : {\r
++                                                      "separator_before"      : false,\r
++                                                      "icon"                          : false,\r
++                                                      "separator_after"       : false,\r
++                                                      "label"                         : "Paste",\r
++                                                      "action"                        : function (obj) { this.paste(obj); }\r
++                                              }\r
++                                      }\r
++                              }\r
++                      }\r
++              },\r
++              _fn : {\r
++                      show_contextmenu : function (obj, x, y) {\r
++                              obj = this._get_node(obj);\r
++                              var s = this.get_settings().contextmenu,\r
++                                      a = obj.children("a:visible:eq(0)"),\r
++                                      o = false,\r
++                                      i = false;\r
++                              if(s.select_node && this.data.ui && !this.is_selected(obj)) {\r
++                                      this.deselect_all();\r
++                                      this.select_node(obj, true);\r
++                              }\r
++                              if(s.show_at_node || typeof x === "undefined" || typeof y === "undefined") {\r
++                                      o = a.offset();\r
++                                      x = o.left;\r
++                                      y = o.top + this.data.core.li_height;\r
++                              }\r
++                              i = obj.data("jstree") && obj.data("jstree").contextmenu ? obj.data("jstree").contextmenu : s.items;\r
++                              if($.isFunction(i)) { i = i.call(this, obj); }\r
++                              this.data.contextmenu = true;\r
++                              $.vakata.context.show(i, a, x, y, this, obj, this._get_settings().core.rtl);\r
++                              if(this.data.themes) { $.vakata.context.cnt.attr("class", "jstree-" + this.data.themes.theme + "-context"); }\r
++                      }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree types plugin\r
++ * Adds support types of nodes\r
++ * You can set an attribute on each li node, that represents its type.\r
++ * According to the type setting the node may get custom icon/validation rules\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("types", {\r
++              __init : function () {\r
++                      var s = this._get_settings().types;\r
++                      this.data.types.attach_to = [];\r
++                      this.get_container()\r
++                              .bind("init.jstree", $.proxy(function () { \r
++                                              var types = s.types, \r
++                                                      attr  = s.type_attr, \r
++                                                      icons_css = "", \r
++                                                      _this = this;\r
++\r
++                                              $.each(types, function (i, tp) {\r
++                                                      $.each(tp, function (k, v) { \r
++                                                              if(!/^(max_depth|max_children|icon|valid_children)$/.test(k)) { _this.data.types.attach_to.push(k); }\r
++                                                      });\r
++                                                      if(!tp.icon) { return true; }\r
++                                                      if( tp.icon.image || tp.icon.position) {\r
++                                                              if(i == "default")      { icons_css += '.jstree-' + _this.get_index() + ' a > .jstree-icon { '; }\r
++                                                              else                            { icons_css += '.jstree-' + _this.get_index() + ' li[' + attr + '="' + i + '"] > a > .jstree-icon { '; }\r
++                                                              if(tp.icon.image)       { icons_css += ' background-image:url(' + tp.icon.image + '); '; }\r
++                                                              if(tp.icon.position){ icons_css += ' background-position:' + tp.icon.position + '; '; }\r
++                                                              else                            { icons_css += ' background-position:0 0; '; }\r
++                                                              icons_css += '} ';\r
++                                                      }\r
++                                              });\r
++                                              if(icons_css !== "") { $.vakata.css.add_sheet({ 'str' : icons_css, title : "jstree-types" }); }\r
++                                      }, this))\r
++                              .bind("before.jstree", $.proxy(function (e, data) { \r
++                                              var s, t, \r
++                                                      o = this._get_settings().types.use_data ? this._get_node(data.args[0]) : false, \r
++                                                      d = o && o !== -1 && o.length ? o.data("jstree") : false;\r
++                                              if(d && d.types && d.types[data.func] === false) { e.stopImmediatePropagation(); return false; }\r
++                                              if($.inArray(data.func, this.data.types.attach_to) !== -1) {\r
++                                                      if(!data.args[0] || (!data.args[0].tagName && !data.args[0].jquery)) { return; }\r
++                                                      s = this._get_settings().types.types;\r
++                                                      t = this._get_type(data.args[0]);\r
++                                                      if(\r
++                                                              ( \r
++                                                                      (s[t] && typeof s[t][data.func] !== "undefined") || \r
++                                                                      (s["default"] && typeof s["default"][data.func] !== "undefined") \r
++                                                              ) && this._check(data.func, data.args[0]) === false\r
++                                                      ) {\r
++                                                              e.stopImmediatePropagation();\r
++                                                              return false;\r
++                                                      }\r
++                                              }\r
++                                      }, this));\r
++                      if(is_ie6) {\r
++                              this.get_container()\r
++                                      .bind("load_node.jstree set_type.jstree", $.proxy(function (e, data) {\r
++                                                      var r = data && data.rslt && data.rslt.obj && data.rslt.obj !== -1 ? this._get_node(data.rslt.obj).parent() : this.get_container_ul(),\r
++                                                              c = false,\r
++                                                              s = this._get_settings().types;\r
++                                                      $.each(s.types, function (i, tp) {\r
++                                                              if(tp.icon && (tp.icon.image || tp.icon.position)) {\r
++                                                                      c = i === "default" ? r.find("li > a > .jstree-icon") : r.find("li[" + s.type_attr + "='" + i + "'] > a > .jstree-icon");\r
++                                                                      if(tp.icon.image) { c.css("backgroundImage","url(" + tp.icon.image + ")"); }\r
++                                                                      c.css("backgroundPosition", tp.icon.position || "0 0");\r
++                                                              }\r
++                                                      });\r
++                                              }, this));\r
++                      }\r
++              },\r
++              defaults : {\r
++                      // defines maximum number of root nodes (-1 means unlimited, -2 means disable max_children checking)\r
++                      max_children            : -1,\r
++                      // defines the maximum depth of the tree (-1 means unlimited, -2 means disable max_depth checking)\r
++                      max_depth                       : -1,\r
++                      // defines valid node types for the root nodes\r
++                      valid_children          : "all",\r
++\r
++                      // whether to use $.data\r
++                      use_data : false, \r
++                      // where is the type stores (the rel attribute of the LI element)\r
++                      type_attr : "rel",\r
++                      // a list of types\r
++                      types : {\r
++                              // the default type\r
++                              "default" : {\r
++                                      "max_children"  : -1,\r
++                                      "max_depth"             : -1,\r
++                                      "valid_children": "all"\r
++\r
++                                      // Bound functions - you can bind any other function here (using boolean or function)\r
++                                      //"select_node" : true\r
++                              }\r
++                      }\r
++              },\r
++              _fn : {\r
++                      _types_notify : function (n, data) {\r
++                              if(data.type && this._get_settings().types.use_data) {\r
++                                      this.set_type(data.type, n);\r
++                              }\r
++                      },\r
++                      _get_type : function (obj) {\r
++                              obj = this._get_node(obj);\r
++                              return (!obj || !obj.length) ? false : obj.attr(this._get_settings().types.type_attr) || "default";\r
++                      },\r
++                      set_type : function (str, obj) {\r
++                              obj = this._get_node(obj);\r
++                              var ret = (!obj.length || !str) ? false : obj.attr(this._get_settings().types.type_attr, str);\r
++                              if(ret) { this.__callback({ obj : obj, type : str}); }\r
++                              return ret;\r
++                      },\r
++                      _check : function (rule, obj, opts) {\r
++                              obj = this._get_node(obj);\r
++                              var v = false, t = this._get_type(obj), d = 0, _this = this, s = this._get_settings().types, data = false;\r
++                              if(obj === -1) { \r
++                                      if(!!s[rule]) { v = s[rule]; }\r
++                                      else { return; }\r
++                              }\r
++                              else {\r
++                                      if(t === false) { return; }\r
++                                      data = s.use_data ? obj.data("jstree") : false;\r
++                                      if(data && data.types && typeof data.types[rule] !== "undefined") { v = data.types[rule]; }\r
++                                      else if(!!s.types[t] && typeof s.types[t][rule] !== "undefined") { v = s.types[t][rule]; }\r
++                                      else if(!!s.types["default"] && typeof s.types["default"][rule] !== "undefined") { v = s.types["default"][rule]; }\r
++                              }\r
++                              if($.isFunction(v)) { v = v.call(this, obj); }\r
++                              if(rule === "max_depth" && obj !== -1 && opts !== false && s.max_depth !== -2 && v !== 0) {\r
++                                      // also include the node itself - otherwise if root node it is not checked\r
++                                      obj.children("a:eq(0)").parentsUntil(".jstree","li").each(function (i) {\r
++                                              // check if current depth already exceeds global tree depth\r
++                                              if(s.max_depth !== -1 && s.max_depth - (i + 1) <= 0) { v = 0; return false; }\r
++                                              d = (i === 0) ? v : _this._check(rule, this, false);\r
++                                              // check if current node max depth is already matched or exceeded\r
++                                              if(d !== -1 && d - (i + 1) <= 0) { v = 0; return false; }\r
++                                              // otherwise - set the max depth to the current value minus current depth\r
++                                              if(d >= 0 && (d - (i + 1) < v || v < 0) ) { v = d - (i + 1); }\r
++                                              // if the global tree depth exists and it minus the nodes calculated so far is less than `v` or `v` is unlimited\r
++                                              if(s.max_depth >= 0 && (s.max_depth - (i + 1) < v || v < 0) ) { v = s.max_depth - (i + 1); }\r
++                                      });\r
++                              }\r
++                              return v;\r
++                      },\r
++                      check_move : function () {\r
++                              if(!this.__call_old()) { return false; }\r
++                              var m  = this._get_move(),\r
++                                      s  = m.rt._get_settings().types,\r
++                                      mc = m.rt._check("max_children", m.cr),\r
++                                      md = m.rt._check("max_depth", m.cr),\r
++                                      vc = m.rt._check("valid_children", m.cr),\r
++                                      ch = 0, d = 1, t;\r
++\r
++                              if(vc === "none") { return false; } \r
++                              if($.isArray(vc) && m.ot && m.ot._get_type) {\r
++                                      m.o.each(function () {\r
++                                              if($.inArray(m.ot._get_type(this), vc) === -1) { d = false; return false; }\r
++                                      });\r
++                                      if(d === false) { return false; }\r
++                              }\r
++                              if(s.max_children !== -2 && mc !== -1) {\r
++                                      ch = m.cr === -1 ? this.get_container().find("> ul > li").not(m.o).length : m.cr.find("> ul > li").not(m.o).length;\r
++                                      if(ch + m.o.length > mc) { return false; }\r
++                              }\r
++                              if(s.max_depth !== -2 && md !== -1) {\r
++                                      d = 0;\r
++                                      if(md === 0) { return false; }\r
++                                      if(typeof m.o.d === "undefined") {\r
++                                              // TODO: deal with progressive rendering and async when checking max_depth (how to know the depth of the moved node)\r
++                                              t = m.o;\r
++                                              while(t.length > 0) {\r
++                                                      t = t.find("> ul > li");\r
++                                                      d ++;\r
++                                              }\r
++                                              m.o.d = d;\r
++                                      }\r
++                                      if(md - m.o.d < 0) { return false; }\r
++                              }\r
++                              return true;\r
++                      },\r
++                      create_node : function (obj, position, js, callback, is_loaded, skip_check) {\r
++                              if(!skip_check && (is_loaded || this._is_loaded(obj))) {\r
++                                      var p  = (typeof position == "string" && position.match(/^before|after$/i) && obj !== -1) ? this._get_parent(obj) : this._get_node(obj),\r
++                                              s  = this._get_settings().types,\r
++                                              mc = this._check("max_children", p),\r
++                                              md = this._check("max_depth", p),\r
++                                              vc = this._check("valid_children", p),\r
++                                              ch;\r
++                                      if(typeof js === "string") { js = { data : js }; }\r
++                                      if(!js) { js = {}; }\r
++                                      if(vc === "none") { return false; } \r
++                                      if($.isArray(vc)) {\r
++                                              if(!js.attr || !js.attr[s.type_attr]) { \r
++                                                      if(!js.attr) { js.attr = {}; }\r
++                                                      js.attr[s.type_attr] = vc[0]; \r
++                                              }\r
++                                              else {\r
++                                                      if($.inArray(js.attr[s.type_attr], vc) === -1) { return false; }\r
++                                              }\r
++                                      }\r
++                                      if(s.max_children !== -2 && mc !== -1) {\r
++                                              ch = p === -1 ? this.get_container().find("> ul > li").length : p.find("> ul > li").length;\r
++                                              if(ch + 1 > mc) { return false; }\r
++                                      }\r
++                                      if(s.max_depth !== -2 && md !== -1 && (md - 1) < 0) { return false; }\r
++                              }\r
++                              return this.__call_old(true, obj, position, js, callback, is_loaded, skip_check);\r
++                      }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree HTML plugin\r
++ * The HTML data store. Datastores are build by replacing the `load_node` and `_is_loaded` functions.\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("html_data", {\r
++              __init : function () { \r
++                      // this used to use html() and clean the whitespace, but this way any attached data was lost\r
++                      this.data.html_data.original_container_html = this.get_container().find(" > ul > li").clone(true);\r
++                      // remove white space from LI node - otherwise nodes appear a bit to the right\r
++                      this.data.html_data.original_container_html.find("li").andSelf().contents().filter(function() { return this.nodeType == 3; }).remove();\r
++              },\r
++              defaults : { \r
++                      data : false,\r
++                      ajax : false,\r
++                      correct_state : true\r
++              },\r
++              _fn : {\r
++                      load_node : function (obj, s_call, e_call) { var _this = this; this.load_node_html(obj, function () { _this.__callback({ "obj" : _this._get_node(obj) }); s_call.call(this); }, e_call); },\r
++                      _is_loaded : function (obj) { \r
++                              obj = this._get_node(obj); \r
++                              return obj == -1 || !obj || (!this._get_settings().html_data.ajax && !$.isFunction(this._get_settings().html_data.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").size() > 0;\r
++                      },\r
++                      load_node_html : function (obj, s_call, e_call) {\r
++                              var d,\r
++                                      s = this.get_settings().html_data,\r
++                                      error_func = function () {},\r
++                                      success_func = function () {};\r
++                              obj = this._get_node(obj);\r
++                              if(obj && obj !== -1) {\r
++                                      if(obj.data("jstree_is_loading")) { return; }\r
++                                      else { obj.data("jstree_is_loading",true); }\r
++                              }\r
++                              switch(!0) {\r
++                                      case ($.isFunction(s.data)):\r
++                                              s.data.call(this, obj, $.proxy(function (d) {\r
++                                                      if(d && d !== "" && d.toString && d.toString().replace(/^[\s\n]+$/,"") !== "") {\r
++                                                              d = $(d);\r
++                                                              if(!d.is("ul")) { d = $("<ul />").append(d); }\r
++                                                              if(obj == -1 || !obj) { this.get_container().children("ul").empty().append(d.children()).find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'>&#160;</ins>").end().filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon"); }\r
++                                                              else { obj.children("a.jstree-loading").removeClass("jstree-loading"); obj.append(d).children("ul").find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'>&#160;</ins>").end().filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon"); obj.removeData("jstree_is_loading"); }\r
++                                                              this.clean_node(obj);\r
++                                                              if(s_call) { s_call.call(this); }\r
++                                                      }\r
++                                                      else {\r
++                                                              if(obj && obj !== -1) {\r
++                                                                      obj.children("a.jstree-loading").removeClass("jstree-loading");\r
++                                                                      obj.removeData("jstree_is_loading");\r
++                                                                      if(s.correct_state) { \r
++                                                                              this.correct_state(obj);\r
++                                                                              if(s_call) { s_call.call(this); } \r
++                                                                      }\r
++                                                              }\r
++                                                              else {\r
++                                                                      if(s.correct_state) { \r
++                                                                              this.get_container().children("ul").empty();\r
++                                                                              if(s_call) { s_call.call(this); } \r
++                                                                      }\r
++                                                              }\r
++                                                      }\r
++                                              }, this));\r
++                                              break;\r
++                                      case (!s.data && !s.ajax):\r
++                                              if(!obj || obj == -1) {\r
++                                                      this.get_container()\r
++                                                              .children("ul").empty()\r
++                                                              .append(this.data.html_data.original_container_html)\r
++                                                              .find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'>&#160;</ins>").end()\r
++                                                              .filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon");\r
++                                                      this.clean_node();\r
++                                              }\r
++                                              if(s_call) { s_call.call(this); }\r
++                                              break;\r
++                                      case (!!s.data && !s.ajax) || (!!s.data && !!s.ajax && (!obj || obj === -1)):\r
++                                              if(!obj || obj == -1) {\r
++                                                      d = $(s.data);\r
++                                                      if(!d.is("ul")) { d = $("<ul />").append(d); }\r
++                                                      this.get_container()\r
++                                                              .children("ul").empty().append(d.children())\r
++                                                              .find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'>&#160;</ins>").end()\r
++                                                              .filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon");\r
++                                                      this.clean_node();\r
++                                              }\r
++                                              if(s_call) { s_call.call(this); }\r
++                                              break;\r
++                                      case (!s.data && !!s.ajax) || (!!s.data && !!s.ajax && obj && obj !== -1):\r
++                                              obj = this._get_node(obj);\r
++                                              error_func = function (x, t, e) {\r
++                                                      var ef = this.get_settings().html_data.ajax.error; \r
++                                                      if(ef) { ef.call(this, x, t, e); }\r
++                                                      if(obj != -1 && obj.length) {\r
++                                                              obj.children("a.jstree-loading").removeClass("jstree-loading");\r
++                                                              obj.removeData("jstree_is_loading");\r
++                                                              if(t === "success" && s.correct_state) { this.correct_state(obj); }\r
++                                                      }\r
++                                                      else {\r
++                                                              if(t === "success" && s.correct_state) { this.get_container().children("ul").empty(); }\r
++                                                      }\r
++                                                      if(e_call) { e_call.call(this); }\r
++                                              };\r
++                                              success_func = function (d, t, x) {\r
++                                                      var sf = this.get_settings().html_data.ajax.success; \r
++                                                      if(sf) { d = sf.call(this,d,t,x) || d; }\r
++                                                      if(d === "" || (d && d.toString && d.toString().replace(/^[\s\n]+$/,"") === "")) {\r
++                                                              return error_func.call(this, x, t, "");\r
++                                                      }\r
++                                                      if(d) {\r
++                                                              d = $(d);\r
++                                                              if(!d.is("ul")) { d = $("<ul />").append(d); }\r
++                                                              if(obj == -1 || !obj) { this.get_container().children("ul").empty().append(d.children()).find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'>&#160;</ins>").end().filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon"); }\r
++                                                              else { obj.children("a.jstree-loading").removeClass("jstree-loading"); obj.append(d).children("ul").find("li, a").filter(function () { return !this.firstChild || !this.firstChild.tagName || this.firstChild.tagName !== "INS"; }).prepend("<ins class='jstree-icon'>&#160;</ins>").end().filter("a").children("ins:first-child").not(".jstree-icon").addClass("jstree-icon"); obj.removeData("jstree_is_loading"); }\r
++                                                              this.clean_node(obj);\r
++                                                              if(s_call) { s_call.call(this); }\r
++                                                      }\r
++                                                      else {\r
++                                                              if(obj && obj !== -1) {\r
++                                                                      obj.children("a.jstree-loading").removeClass("jstree-loading");\r
++                                                                      obj.removeData("jstree_is_loading");\r
++                                                                      if(s.correct_state) { \r
++                                                                              this.correct_state(obj);\r
++                                                                              if(s_call) { s_call.call(this); } \r
++                                                                      }\r
++                                                              }\r
++                                                              else {\r
++                                                                      if(s.correct_state) { \r
++                                                                              this.get_container().children("ul").empty();\r
++                                                                              if(s_call) { s_call.call(this); } \r
++                                                                      }\r
++                                                              }\r
++                                                      }\r
++                                              };\r
++                                              s.ajax.context = this;\r
++                                              s.ajax.error = error_func;\r
++                                              s.ajax.success = success_func;\r
++                                              if(!s.ajax.dataType) { s.ajax.dataType = "html"; }\r
++                                              if($.isFunction(s.ajax.url)) { s.ajax.url = s.ajax.url.call(this, obj); }\r
++                                              if($.isFunction(s.ajax.data)) { s.ajax.data = s.ajax.data.call(this, obj); }\r
++                                              $.ajax(s.ajax);\r
++                                              break;\r
++                              }\r
++                      }\r
++              }\r
++      });\r
++      // include the HTML data plugin by default\r
++      $.jstree.defaults.plugins.push("html_data");\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree themeroller plugin\r
++ * Adds support for jQuery UI themes. Include this at the end of your plugins list, also make sure "themes" is not included.\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("themeroller", {\r
++              __init : function () {\r
++                      var s = this._get_settings().themeroller;\r
++                      this.get_container()\r
++                              .addClass("ui-widget-content")\r
++                              .addClass("jstree-themeroller")\r
++                              .delegate("a","mouseenter.jstree", function (e) {\r
++                                      if(!$(e.currentTarget).hasClass("jstree-loading")) {\r
++                                              $(this).addClass(s.item_h);\r
++                                      }\r
++                              })\r
++                              .delegate("a","mouseleave.jstree", function () {\r
++                                      $(this).removeClass(s.item_h);\r
++                              })\r
++                              .bind("init.jstree", $.proxy(function (e, data) { \r
++                                              data.inst.get_container().find("> ul > li > .jstree-loading > ins").addClass("ui-icon-refresh");\r
++                                              this._themeroller(data.inst.get_container().find("> ul > li"));\r
++                                      }, this))\r
++                              .bind("open_node.jstree create_node.jstree", $.proxy(function (e, data) { \r
++                                              this._themeroller(data.rslt.obj);\r
++                                      }, this))\r
++                              .bind("loaded.jstree refresh.jstree", $.proxy(function (e) {\r
++                                              this._themeroller();\r
++                                      }, this))\r
++                              .bind("close_node.jstree", $.proxy(function (e, data) {\r
++                                              this._themeroller(data.rslt.obj);\r
++                                      }, this))\r
++                              .bind("delete_node.jstree", $.proxy(function (e, data) {\r
++                                              this._themeroller(data.rslt.parent);\r
++                                      }, this))\r
++                              .bind("correct_state.jstree", $.proxy(function (e, data) {\r
++                                              data.rslt.obj\r
++                                                      .children("ins.jstree-icon").removeClass(s.opened + " " + s.closed + " ui-icon").end()\r
++                                                      .find("> a > ins.ui-icon")\r
++                                                              .filter(function() { \r
++                                                                      return this.className.toString()\r
++                                                                              .replace(s.item_clsd,"").replace(s.item_open,"").replace(s.item_leaf,"")\r
++                                                                              .indexOf("ui-icon-") === -1; \r
++                                                              }).removeClass(s.item_open + " " + s.item_clsd).addClass(s.item_leaf || "jstree-no-icon");\r
++                                      }, this))\r
++                              .bind("select_node.jstree", $.proxy(function (e, data) {\r
++                                              data.rslt.obj.children("a").addClass(s.item_a);\r
++                                      }, this))\r
++                              .bind("deselect_node.jstree deselect_all.jstree", $.proxy(function (e, data) {\r
++                                              this.get_container()\r
++                                                      .find("a." + s.item_a).removeClass(s.item_a).end()\r
++                                                      .find("a.jstree-clicked").addClass(s.item_a);\r
++                                      }, this))\r
++                              .bind("dehover_node.jstree", $.proxy(function (e, data) {\r
++                                              data.rslt.obj.children("a").removeClass(s.item_h);\r
++                                      }, this))\r
++                              .bind("hover_node.jstree", $.proxy(function (e, data) {\r
++                                              this.get_container()\r
++                                                      .find("a." + s.item_h).not(data.rslt.obj).removeClass(s.item_h);\r
++                                              data.rslt.obj.children("a").addClass(s.item_h);\r
++                                      }, this))\r
++                              .bind("move_node.jstree", $.proxy(function (e, data) {\r
++                                              this._themeroller(data.rslt.o);\r
++                                              this._themeroller(data.rslt.op);\r
++                                      }, this));\r
++              },\r
++              __destroy : function () {\r
++                      var s = this._get_settings().themeroller,\r
++                              c = [ "ui-icon" ];\r
++                      $.each(s, function (i, v) {\r
++                              v = v.split(" ");\r
++                              if(v.length) { c = c.concat(v); }\r
++                      });\r
++                      this.get_container()\r
++                              .removeClass("ui-widget-content")\r
++                              .find("." + c.join(", .")).removeClass(c.join(" "));\r
++              },\r
++              _fn : {\r
++                      _themeroller : function (obj) {\r
++                              var s = this._get_settings().themeroller;\r
++                              obj = !obj || obj == -1 ? this.get_container_ul() : this._get_node(obj).parent();\r
++                              obj\r
++                                      .find("li.jstree-closed")\r
++                                              .children("ins.jstree-icon").removeClass(s.opened).addClass("ui-icon " + s.closed).end()\r
++                                              .children("a").addClass(s.item)\r
++                                                      .children("ins.jstree-icon").addClass("ui-icon")\r
++                                                              .filter(function() { \r
++                                                                      return this.className.toString()\r
++                                                                              .replace(s.item_clsd,"").replace(s.item_open,"").replace(s.item_leaf,"")\r
++                                                                              .indexOf("ui-icon-") === -1; \r
++                                                              }).removeClass(s.item_leaf + " " + s.item_open).addClass(s.item_clsd || "jstree-no-icon")\r
++                                                              .end()\r
++                                                      .end()\r
++                                              .end()\r
++                                      .end()\r
++                                      .find("li.jstree-open")\r
++                                              .children("ins.jstree-icon").removeClass(s.closed).addClass("ui-icon " + s.opened).end()\r
++                                              .children("a").addClass(s.item)\r
++                                                      .children("ins.jstree-icon").addClass("ui-icon")\r
++                                                              .filter(function() { \r
++                                                                      return this.className.toString()\r
++                                                                              .replace(s.item_clsd,"").replace(s.item_open,"").replace(s.item_leaf,"")\r
++                                                                              .indexOf("ui-icon-") === -1; \r
++                                                              }).removeClass(s.item_leaf + " " + s.item_clsd).addClass(s.item_open || "jstree-no-icon")\r
++                                                              .end()\r
++                                                      .end()\r
++                                              .end()\r
++                                      .end()\r
++                                      .find("li.jstree-leaf")\r
++                                              .children("ins.jstree-icon").removeClass(s.closed + " ui-icon " + s.opened).end()\r
++                                              .children("a").addClass(s.item)\r
++                                                      .children("ins.jstree-icon").addClass("ui-icon")\r
++                                                              .filter(function() { \r
++                                                                      return this.className.toString()\r
++                                                                              .replace(s.item_clsd,"").replace(s.item_open,"").replace(s.item_leaf,"")\r
++                                                                              .indexOf("ui-icon-") === -1; \r
++                                                              }).removeClass(s.item_clsd + " " + s.item_open).addClass(s.item_leaf || "jstree-no-icon");\r
++                      }\r
++              },\r
++              defaults : {\r
++                      "opened"        : "ui-icon-triangle-1-se",\r
++                      "closed"        : "ui-icon-triangle-1-e",\r
++                      "item"          : "ui-state-default",\r
++                      "item_h"        : "ui-state-hover",\r
++                      "item_a"        : "ui-state-active",\r
++                      "item_open"     : "ui-icon-folder-open",\r
++                      "item_clsd"     : "ui-icon-folder-collapsed",\r
++                      "item_leaf"     : "ui-icon-document"\r
++              }\r
++      });\r
++      $(function() {\r
++              var css_string = '' + \r
++                      '.jstree-themeroller .ui-icon { overflow:visible; } ' + \r
++                      '.jstree-themeroller a { padding:0 2px; } ' + \r
++                      '.jstree-themeroller .jstree-no-icon { display:none; }';\r
++              $.vakata.css.add_sheet({ str : css_string, title : "jstree" });\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/* \r
++ * jsTree unique plugin\r
++ * Forces different names amongst siblings (still a bit experimental)\r
++ * NOTE: does not check language versions (it will not be possible to have nodes with the same title, even in different languages)\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("unique", {\r
++              __init : function () {\r
++                      this.get_container()\r
++                              .bind("before.jstree", $.proxy(function (e, data) { \r
++                                              var nms = [], res = true, p, t;\r
++                                              if(data.func == "move_node") {\r
++                                                      // obj, ref, position, is_copy, is_prepared, skip_check\r
++                                                      if(data.args[4] === true) {\r
++                                                              if(data.args[0].o && data.args[0].o.length) {\r
++                                                                      data.args[0].o.children("a").each(function () { nms.push($(this).text().replace(/^\s+/g,"")); });\r
++                                                                      res = this._check_unique(nms, data.args[0].np.find("> ul > li").not(data.args[0].o), "move_node");\r
++                                                              }\r
++                                                      }\r
++                                              }\r
++                                              if(data.func == "create_node") {\r
++                                                      // obj, position, js, callback, is_loaded\r
++                                                      if(data.args[4] || this._is_loaded(data.args[0])) {\r
++                                                              p = this._get_node(data.args[0]);\r
++                                                              if(data.args[1] && (data.args[1] === "before" || data.args[1] === "after")) {\r
++                                                                      p = this._get_parent(data.args[0]);\r
++                                                                      if(!p || p === -1) { p = this.get_container(); }\r
++                                                              }\r
++                                                              if(typeof data.args[2] === "string") { nms.push(data.args[2]); }\r
++                                                              else if(!data.args[2] || !data.args[2].data) { nms.push(this._get_string("new_node")); }\r
++                                                              else { nms.push(data.args[2].data); }\r
++                                                              res = this._check_unique(nms, p.find("> ul > li"), "create_node");\r
++                                                      }\r
++                                              }\r
++                                              if(data.func == "rename_node") {\r
++                                                      // obj, val\r
++                                                      nms.push(data.args[1]);\r
++                                                      t = this._get_node(data.args[0]);\r
++                                                      p = this._get_parent(t);\r
++                                                      if(!p || p === -1) { p = this.get_container(); }\r
++                                                      res = this._check_unique(nms, p.find("> ul > li").not(t), "rename_node");\r
++                                              }\r
++                                              if(!res) {\r
++                                                      e.stopPropagation();\r
++                                                      return false;\r
++                                              }\r
++                                      }, this));\r
++              },\r
++              defaults : { \r
++                      error_callback : $.noop\r
++              },\r
++              _fn : { \r
++                      _check_unique : function (nms, p, func) {\r
++                              var cnms = [];\r
++                              p.children("a").each(function () { cnms.push($(this).text().replace(/^\s+/g,"")); });\r
++                              if(!cnms.length || !nms.length) { return true; }\r
++                              cnms = cnms.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(",");\r
++                              if((cnms.length + nms.length) != cnms.concat(nms).sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(",").length) {\r
++                                      this._get_settings().unique.error_callback.call(null, nms, p, func);\r
++                                      return false;\r
++                              }\r
++                              return true;\r
++                      },\r
++                      check_move : function () {\r
++                              if(!this.__call_old()) { return false; }\r
++                              var p = this._get_move(), nms = [];\r
++                              if(p.o && p.o.length) {\r
++                                      p.o.children("a").each(function () { nms.push($(this).text().replace(/^\s+/g,"")); });\r
++                                      return this._check_unique(nms, p.np.find("> ul > li").not(p.o), "check_move");\r
++                              }\r
++                              return true;\r
++                      }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/*\r
++ * jsTree wholerow plugin\r
++ * Makes select and hover work on the entire width of the node\r
++ * MAY BE HEAVY IN LARGE DOM\r
++ */\r
++(function ($) {\r
++      $.jstree.plugin("wholerow", {\r
++              __init : function () {\r
++                      if(!this.data.ui) { throw "jsTree wholerow: jsTree UI plugin not included."; }\r
++                      this.data.wholerow.html = false;\r
++                      this.data.wholerow.to = false;\r
++                      this.get_container()\r
++                              .bind("init.jstree", $.proxy(function (e, data) { \r
++                                              this._get_settings().core.animation = 0;\r
++                                      }, this))\r
++                              .bind("open_node.jstree create_node.jstree clean_node.jstree loaded.jstree", $.proxy(function (e, data) { \r
++                                              this._prepare_wholerow_span( data && data.rslt && data.rslt.obj ? data.rslt.obj : -1 );\r
++                                      }, this))\r
++                              .bind("search.jstree clear_search.jstree reopen.jstree after_open.jstree after_close.jstree create_node.jstree delete_node.jstree clean_node.jstree", $.proxy(function (e, data) { \r
++                                              if(this.data.to) { clearTimeout(this.data.to); }\r
++                                              this.data.to = setTimeout( (function (t, o) { return function() { t._prepare_wholerow_ul(o); }; })(this,  data && data.rslt && data.rslt.obj ? data.rslt.obj : -1), 0);\r
++                                      }, this))\r
++                              .bind("deselect_all.jstree", $.proxy(function (e, data) { \r
++                                              this.get_container().find(" > .jstree-wholerow .jstree-clicked").removeClass("jstree-clicked " + (this.data.themeroller ? this._get_settings().themeroller.item_a : "" ));\r
++                                      }, this))\r
++                              .bind("select_node.jstree deselect_node.jstree ", $.proxy(function (e, data) { \r
++                                              data.rslt.obj.each(function () { \r
++                                                      var ref = data.inst.get_container().find(" > .jstree-wholerow li:visible:eq(" + ( parseInt((($(this).offset().top - data.inst.get_container().offset().top + data.inst.get_container()[0].scrollTop) / data.inst.data.core.li_height),10)) + ")");\r
++                                                      // ref.children("a")[e.type === "select_node" ? "addClass" : "removeClass"]("jstree-clicked");\r
++                                                      ref.children("a").attr("class",data.rslt.obj.children("a").attr("class"));\r
++                                              });\r
++                                      }, this))\r
++                              .bind("hover_node.jstree dehover_node.jstree", $.proxy(function (e, data) { \r
++                                              this.get_container().find(" > .jstree-wholerow .jstree-hovered").removeClass("jstree-hovered " + (this.data.themeroller ? this._get_settings().themeroller.item_h : "" ));\r
++                                              if(e.type === "hover_node") {\r
++                                                      var ref = this.get_container().find(" > .jstree-wholerow li:visible:eq(" + ( parseInt(((data.rslt.obj.offset().top - this.get_container().offset().top + this.get_container()[0].scrollTop) / this.data.core.li_height),10)) + ")");\r
++                                                      // ref.children("a").addClass("jstree-hovered");\r
++                                                      ref.children("a").attr("class",data.rslt.obj.children(".jstree-hovered").attr("class"));\r
++                                              }\r
++                                      }, this))\r
++                              .delegate(".jstree-wholerow-span, ins.jstree-icon, li", "click.jstree", function (e) {\r
++                                              var n = $(e.currentTarget);\r
++                                              if(e.target.tagName === "A" || (e.target.tagName === "INS" && n.closest("li").is(".jstree-open, .jstree-closed"))) { return; }\r
++                                              n.closest("li").children("a:visible:eq(0)").click();\r
++                                              e.stopImmediatePropagation();\r
++                                      })\r
++                              .delegate("li", "mouseover.jstree", $.proxy(function (e) {\r
++                                              e.stopImmediatePropagation();\r
++                                              if($(e.currentTarget).children(".jstree-hovered, .jstree-clicked").length) { return false; }\r
++                                              this.hover_node(e.currentTarget);\r
++                                              return false;\r
++                                      }, this))\r
++                              .delegate("li", "mouseleave.jstree", $.proxy(function (e) {\r
++                                              if($(e.currentTarget).children("a").hasClass("jstree-hovered").length) { return; }\r
++                                              this.dehover_node(e.currentTarget);\r
++                                      }, this));\r
++                      if(is_ie7 || is_ie6) {\r
++                              $.vakata.css.add_sheet({ str : ".jstree-" + this.get_index() + " { position:relative; } ", title : "jstree" });\r
++                      }\r
++              },\r
++              defaults : {\r
++              },\r
++              __destroy : function () {\r
++                      this.get_container().children(".jstree-wholerow").remove();\r
++                      this.get_container().find(".jstree-wholerow-span").remove();\r
++              },\r
++              _fn : {\r
++                      _prepare_wholerow_span : function (obj) {\r
++                              obj = !obj || obj == -1 ? this.get_container().find("> ul > li") : this._get_node(obj);\r
++                              if(obj === false) { return; } // added for removing root nodes\r
++                              obj.each(function () {\r
++                                      $(this).find("li").andSelf().each(function () {\r
++                                              var $t = $(this);\r
++                                              if($t.children(".jstree-wholerow-span").length) { return true; }\r
++                                              $t.prepend("<span class='jstree-wholerow-span' style='width:" + ($t.parentsUntil(".jstree","li").length * 18) + "px;'>&#160;</span>");\r
++                                      });\r
++                              });\r
++                      },\r
++                      _prepare_wholerow_ul : function () {\r
++                              var o = this.get_container().children("ul").eq(0), h = o.html();\r
++                              o.addClass("jstree-wholerow-real");\r
++                              if(this.data.wholerow.last_html !== h) {\r
++                                      this.data.wholerow.last_html = h;\r
++                                      this.get_container().children(".jstree-wholerow").remove();\r
++                                      this.get_container().append(\r
++                                              o.clone().removeClass("jstree-wholerow-real")\r
++                                                      .wrapAll("<div class='jstree-wholerow' />").parent()\r
++                                                      .width(o.parent()[0].scrollWidth)\r
++                                                      .css("top", (o.height() + ( is_ie7 ? 5 : 0)) * -1 )\r
++                                                      .find("li[id]").each(function () { this.removeAttribute("id"); }).end()\r
++                                      );\r
++                              }\r
++                      }\r
++              }\r
++      });\r
++      $(function() {\r
++              var css_string = '' + \r
++                      '.jstree .jstree-wholerow-real { position:relative; z-index:1; } ' + \r
++                      '.jstree .jstree-wholerow-real li { cursor:pointer; } ' + \r
++                      '.jstree .jstree-wholerow-real a { border-left-color:transparent !important; border-right-color:transparent !important; } ' + \r
++                      '.jstree .jstree-wholerow { position:relative; z-index:0; height:0; } ' + \r
++                      '.jstree .jstree-wholerow ul, .jstree .jstree-wholerow li { width:100%; } ' + \r
++                      '.jstree .jstree-wholerow, .jstree .jstree-wholerow ul, .jstree .jstree-wholerow li, .jstree .jstree-wholerow a { margin:0 !important; padding:0 !important; } ' + \r
++                      '.jstree .jstree-wholerow, .jstree .jstree-wholerow ul, .jstree .jstree-wholerow li { background:transparent !important; }' + \r
++                      '.jstree .jstree-wholerow ins, .jstree .jstree-wholerow span, .jstree .jstree-wholerow input { display:none !important; }' + \r
++                      '.jstree .jstree-wholerow a, .jstree .jstree-wholerow a:hover { text-indent:-9999px; !important; width:100%; padding:0 !important; border-right-width:0px !important; border-left-width:0px !important; } ' + \r
++                      '.jstree .jstree-wholerow-span { position:absolute; left:0; margin:0px; padding:0; height:18px; border-width:0; padding:0; z-index:0; }';\r
++              if(is_ff2) {\r
++                      css_string += '' + \r
++                              '.jstree .jstree-wholerow a { display:block; height:18px; margin:0; padding:0; border:0; } ' + \r
++                              '.jstree .jstree-wholerow-real a { border-color:transparent !important; } ';\r
++              }\r
++              if(is_ie7 || is_ie6) {\r
++                      css_string += '' + \r
++                              '.jstree .jstree-wholerow, .jstree .jstree-wholerow li, .jstree .jstree-wholerow ul, .jstree .jstree-wholerow a { margin:0; padding:0; line-height:18px; } ' + \r
++                              '.jstree .jstree-wholerow a { display:block; height:18px; line-height:18px; overflow:hidden; } ';\r
++              }\r
++              $.vakata.css.add_sheet({ str : css_string, title : "jstree" });\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++/*\r
++* jsTree model plugin\r
++* This plugin gets jstree to use a class model to retrieve data, creating great dynamism\r
++*/\r
++(function ($) {\r
++      var nodeInterface = ["getChildren","getChildrenCount","getAttr","getName","getProps"],\r
++              validateInterface = function(obj, inter) {\r
++                      var valid = true;\r
++                      obj = obj || {};\r
++                      inter = [].concat(inter);\r
++                      $.each(inter, function (i, v) {\r
++                              if(!$.isFunction(obj[v])) { valid = false; return false; }\r
++                      });\r
++                      return valid;\r
++              };\r
++      $.jstree.plugin("model", {\r
++              __init : function () {\r
++                      if(!this.data.json_data) { throw "jsTree model: jsTree json_data plugin not included."; }\r
++                      this._get_settings().json_data.data = function (n, b) {\r
++                              var obj = (n == -1) ? this._get_settings().model.object : n.data("jstree_model");\r
++                              if(!validateInterface(obj, nodeInterface)) { return b.call(null, false); }\r
++                              if(this._get_settings().model.async) {\r
++                                      obj.getChildren($.proxy(function (data) {\r
++                                              this.model_done(data, b);\r
++                                      }, this));\r
++                              }\r
++                              else {\r
++                                      this.model_done(obj.getChildren(), b);\r
++                              }\r
++                      };\r
++              },\r
++              defaults : {\r
++                      object : false,\r
++                      id_prefix : false,\r
++                      async : false\r
++              },\r
++              _fn : {\r
++                      model_done : function (data, callback) {\r
++                              var ret = [], \r
++                                      s = this._get_settings(),\r
++                                      _this = this;\r
++\r
++                              if(!$.isArray(data)) { data = [data]; }\r
++                              $.each(data, function (i, nd) {\r
++                                      var r = nd.getProps() || {};\r
++                                      r.attr = nd.getAttr() || {};\r
++                                      if(nd.getChildrenCount()) { r.state = "closed"; }\r
++                                      r.data = nd.getName();\r
++                                      if(!$.isArray(r.data)) { r.data = [r.data]; }\r
++                                      if(_this.data.types && $.isFunction(nd.getType)) {\r
++                                              r.attr[s.types.type_attr] = nd.getType();\r
++                                      }\r
++                                      if(r.attr.id && s.model.id_prefix) { r.attr.id = s.model.id_prefix + r.attr.id; }\r
++                                      if(!r.metadata) { r.metadata = { }; }\r
++                                      r.metadata.jstree_model = nd;\r
++                                      ret.push(r);\r
++                              });\r
++                              callback.call(null, ret);\r
++                      }\r
++              }\r
++      });\r
++})(jQuery);\r
++//*/\r
++\r
++})();
+\ No newline at end of file
+diff -up cacti-0.8.8a/include/js/jquery/jquery.tablednd.js.legal cacti-0.8.8a/include/js/jquery/jquery.tablednd.js
+--- cacti-0.8.8a/include/js/jquery/jquery.tablednd.js.legal    2013-01-04 15:44:38.038416075 -0500
++++ cacti-0.8.8a/include/js/jquery/jquery.tablednd.js  2013-01-04 15:43:12.645377988 -0500
+@@ -0,0 +1,382 @@
++/**
++ * TableDnD plug-in for JQuery, allows you to drag and drop table rows
++ * You can set up various options to control how the system will work
++ * Copyright (c) Denis Howlett <denish@isocra.com>
++ * Licensed like jQuery, see http://docs.jquery.com/License.
++ *
++ * Configuration options:
++ *
++ * onDragStyle
++ *     This is the style that is assigned to the row during drag. There are limitations to the styles that can be
++ *     associated with a row (such as you can't assign a border--well you can, but it won't be
++ *     displayed). (So instead consider using onDragClass.) The CSS style to apply is specified as
++ *     a map (as used in the jQuery css(...) function).
++ * onDropStyle
++ *     This is the style that is assigned to the row when it is dropped. As for onDragStyle, there are limitations
++ *     to what you can do. Also this replaces the original style, so again consider using onDragClass which
++ *     is simply added and then removed on drop.
++ * onDragClass
++ *     This class is added for the duration of the drag and then removed when the row is dropped. It is more
++ *     flexible than using onDragStyle since it can be inherited by the row cells and other content. The default
++ *     is class is tDnD_whileDrag. So to use the default, simply customise this CSS class in your
++ *     stylesheet.
++ * onDrop
++ *     Pass a function that will be called when the row is dropped. The function takes 2 parameters: the table
++ *     and the row that was dropped. You can work out the new order of the rows by using
++ *     table.rows.
++ * onDragStart
++ *     Pass a function that will be called when the user starts dragging. The function takes 2 parameters: the
++ *     table and the row which the user has started to drag.
++ * onAllowDrop
++ *     Pass a function that will be called as a row is over another row. If the function returns true, allow
++ *     dropping on that row, otherwise not. The function takes 2 parameters: the dragged row and the row under
++ *     the cursor. It returns a boolean: true allows the drop, false doesn't allow it.
++ * scrollAmount
++ *     This is the number of pixels to scroll if the user moves the mouse cursor to the top or bottom of the
++ *     window. The page should automatically scroll up or down as appropriate (tested in IE6, IE7, Safari, FF2,
++ *     FF3 beta
++ * dragHandle
++ *     This is the name of a class that you assign to one or more cells in each row that is draggable. If you
++ *     specify this class, then you are responsible for setting cursor: move in the CSS and only these cells
++ *     will have the drag behaviour. If you do not specify a dragHandle, then you get the old behaviour where
++ *     the whole row is draggable.
++ *
++ * Other ways to control behaviour:
++ *
++ * Add class="nodrop" to any rows for which you don't want to allow dropping, and class="nodrag" to any rows
++ * that you don't want to be draggable.
++ *
++ * Inside the onDrop method you can also call $.tableDnD.serialize() this returns a string of the form
++ * <tableID>[]=<rowID1>&<tableID>[]=<rowID2> so that you can send this back to the server. The table must have
++ * an ID as must all the rows.
++ *
++ * Other methods:
++ *
++ * $("...").tableDnDUpdate()
++ * Will update all the matching tables, that is it will reapply the mousedown method to the rows (or handle cells).
++ * This is useful if you have updated the table rows using Ajax and you want to make the table draggable again.
++ * The table maintains the original configuration (so you don't have to specify it again).
++ *
++ * $("...").tableDnDSerialize()
++ * Will serialize and return the serialized string as above, but for each of the matching tables--so it can be
++ * called from anywhere and isn't dependent on the currentTable being set up correctly before calling
++ *
++ * Known problems:
++ * - Auto-scoll has some problems with IE7  (it scrolls even when it shouldn't), work-around: set scrollAmount to 0
++ *
++ * Version 0.2: 2008-02-20 First public version
++ * Version 0.3: 2008-02-07 Added onDragStart option
++ *                         Made the scroll amount configurable (default is 5 as before)
++ * Version 0.4: 2008-03-15 Changed the noDrag/noDrop attributes to nodrag/nodrop classes
++ *                         Added onAllowDrop to control dropping
++ *                         Fixed a bug which meant that you couldn't set the scroll amount in both directions
++ *                         Added serialize method
++ * Version 0.5: 2008-05-16 Changed so that if you specify a dragHandle class it doesn't make the whole row
++ *                         draggable
++ *                         Improved the serialize method to use a default (and settable) regular expression.
++ *                         Added tableDnDupate() and tableDnDSerialize() to be called when you are outside the table
++ */
++jQuery.tableDnD = {
++    /** Keep hold of the current table being dragged */
++    currentTable : null,
++    /** Keep hold of the current drag object if any */
++    dragObject: null,
++    /** The current mouse offset */
++    mouseOffset: null,
++    /** Remember the old value of Y so that we don't do too much processing */
++    oldY: 0,
++
++    /** Actually build the structure */
++    build: function(options) {
++        // Set up the defaults if any
++
++        this.each(function() {
++            // This is bound to each matching table, set up the defaults and override with user options
++            this.tableDnDConfig = jQuery.extend({
++                onDragStyle: null,
++                onDropStyle: null,
++                              // Add in the default class for whileDragging
++                              onDragClass: "tDnD_whileDrag",
++                onDrop: null,
++                onDragStart: null,
++                scrollAmount: 5,
++                              serializeRegexp: /[^\_]*$/, // The regular expression to use to trim row IDs
++                              serializeParamName: null, // If you want to specify another parameter name instead of the table ID
++                dragHandle: null // If you give the name of a class here, then only Cells with this class will be draggable
++            }, options || {});
++            // Now make the rows draggable
++            jQuery.tableDnD.makeDraggable(this);
++        });
++
++        // Now we need to capture the mouse up and mouse move event
++        // We can use bind so that we don't interfere with other event handlers
++        jQuery(document)
++            .bind('mousemove', jQuery.tableDnD.mousemove)
++            .bind('mouseup', jQuery.tableDnD.mouseup);
++
++        // Don't break the chain
++        return this;
++    },
++
++    /** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */
++    makeDraggable: function(table) {
++        var config = table.tableDnDConfig;
++              if (table.tableDnDConfig.dragHandle) {
++                      // We only need to add the event to the specified cells
++                      var cells = jQuery("td."+table.tableDnDConfig.dragHandle, table);
++                      cells.each(function() {
++                              // The cell is bound to "this"
++                jQuery(this).mousedown(function(ev) {
++                    jQuery.tableDnD.dragObject = this.parentNode;
++                    jQuery.tableDnD.currentTable = table;
++                    jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
++                    if (config.onDragStart) {
++                        // Call the onDrop method if there is one
++                        config.onDragStart(table, this);
++                    }
++                    return false;
++                });
++                      })
++              } else {
++                      // For backwards compatibility, we add the event to the whole row
++              var rows = jQuery("tr", table); // get all the rows as a wrapped set
++              rows.each(function() {
++                              // Iterate through each row, the row is bound to "this"
++                              var row = jQuery(this);
++                              if (! row.hasClass("nodrag")) {
++                      row.mousedown(function(ev) {
++                          if (ev.target.tagName == "TD") {
++                              jQuery.tableDnD.dragObject = this;
++                              jQuery.tableDnD.currentTable = table;
++                              jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev);
++                              if (config.onDragStart) {
++                                  // Call the onDrop method if there is one
++                                  config.onDragStart(table, this);
++                              }
++                              return false;
++                          }
++                      }).css("cursor", "move"); // Store the tableDnD object
++                              }
++                      });
++              }
++      },
++
++      updateTables: function() {
++              this.each(function() {
++                      // this is now bound to each matching table
++                      if (this.tableDnDConfig) {
++                              jQuery.tableDnD.makeDraggable(this);
++                      }
++              })
++      },
++
++    /** Get the mouse coordinates from the event (allowing for browser differences) */
++    mouseCoords: function(ev){
++        if(ev.pageX || ev.pageY){
++            return {x:ev.pageX, y:ev.pageY};
++        }
++        return {
++            x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
++            y:ev.clientY + document.body.scrollTop  - document.body.clientTop
++        };
++    },
++
++    /** Given a target element and a mouse event, get the mouse offset from that element.
++        To do this we need the element's position and the mouse position */
++    getMouseOffset: function(target, ev) {
++        ev = ev || window.event;
++
++        var docPos    = this.getPosition(target);
++        var mousePos  = this.mouseCoords(ev);
++        return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
++    },
++
++    /** Get the position of an element by going up the DOM tree and adding up all the offsets */
++    getPosition: function(e){
++        var left = 0;
++        var top  = 0;
++        /** Safari fix -- thanks to Luis Chato for this! */
++        if (e.offsetHeight == 0) {
++            /** Safari 2 doesn't correctly grab the offsetTop of a table row
++            this is detailed here:
++            http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari/
++            the solution is likewise noted there, grab the offset of a table cell in the row - the firstChild.
++            note that firefox will return a text node as a first child, so designing a more thorough
++            solution may need to take that into account, for now this seems to work in firefox, safari, ie */
++            e = e.firstChild; // a table cell
++        }
++
++        while (e.offsetParent){
++            left += e.offsetLeft;
++            top  += e.offsetTop;
++            e     = e.offsetParent;
++        }
++
++        left += e.offsetLeft;
++        top  += e.offsetTop;
++
++        return {x:left, y:top};
++    },
++
++    mousemove: function(ev) {
++        if (jQuery.tableDnD.dragObject == null) {
++            return;
++        }
++
++        var dragObj = jQuery(jQuery.tableDnD.dragObject);
++        var config = jQuery.tableDnD.currentTable.tableDnDConfig;
++        var mousePos = jQuery.tableDnD.mouseCoords(ev);
++        var y = mousePos.y - jQuery.tableDnD.mouseOffset.y;
++        //auto scroll the window
++          var yOffset = window.pageYOffset;
++              if (document.all) {
++              // Windows version
++              //yOffset=document.body.scrollTop;
++              if (typeof document.compatMode != 'undefined' &&
++                   document.compatMode != 'BackCompat') {
++                 yOffset = document.documentElement.scrollTop;
++              }
++              else if (typeof document.body != 'undefined') {
++                 yOffset=document.body.scrollTop;
++              }
++
++          }
++
++              if (mousePos.y-yOffset < config.scrollAmount) {
++              window.scrollBy(0, -config.scrollAmount);
++          } else {
++            var windowHeight = window.innerHeight ? window.innerHeight
++                    : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
++            if (windowHeight-(mousePos.y-yOffset) < config.scrollAmount) {
++                window.scrollBy(0, config.scrollAmount);
++            }
++        }
++
++
++        if (y != jQuery.tableDnD.oldY) {
++            // work out if we're going up or down...
++            var movingDown = y > jQuery.tableDnD.oldY;
++            // update the old value
++            jQuery.tableDnD.oldY = y;
++            // update the style to show we're dragging
++                      if (config.onDragClass) {
++                              dragObj.addClass(config.onDragClass);
++                      } else {
++                  dragObj.css(config.onDragStyle);
++                      }
++            // If we're over a row then move the dragged row to there so that the user sees the
++            // effect dynamically
++            var currentRow = jQuery.tableDnD.findDropTargetRow(dragObj, y);
++            if (currentRow) {
++                // TODO worry about what happens when there are multiple TBODIES
++                if (movingDown && jQuery.tableDnD.dragObject != currentRow) {
++                    jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow.nextSibling);
++                } else if (! movingDown && jQuery.tableDnD.dragObject != currentRow) {
++                    jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow);
++                }
++            }
++        }
++
++        return false;
++    },
++
++    /** We're only worried about the y position really, because we can only move rows up and down */
++    findDropTargetRow: function(draggedRow, y) {
++        var rows = jQuery.tableDnD.currentTable.rows;
++        for (var i=0; i<rows.length; i++) {
++            var row = rows[i];
++            var rowY    = this.getPosition(row).y;
++            var rowHeight = parseInt(row.offsetHeight)/2;
++            if (row.offsetHeight == 0) {
++                rowY = this.getPosition(row.firstChild).y;
++                rowHeight = parseInt(row.firstChild.offsetHeight)/2;
++            }
++            // Because we always have to insert before, we need to offset the height a bit
++            if ((y > rowY - rowHeight) && (y < (rowY + rowHeight))) {
++                // that's the row we're over
++                              // If it's the same as the current row, ignore it
++                              if (row == draggedRow) {return null;}
++                var config = jQuery.tableDnD.currentTable.tableDnDConfig;
++                if (config.onAllowDrop) {
++                    if (config.onAllowDrop(draggedRow, row)) {
++                        return row;
++                    } else {
++                        return null;
++                    }
++                } else {
++                                      // If a row has nodrop class, then don't allow dropping (inspired by John Tarr and Famic)
++                    var nodrop = jQuery(row).hasClass("nodrop");
++                    if (! nodrop) {
++                        return row;
++                    } else {
++                        return null;
++                    }
++                }
++                return row;
++            }
++        }
++        return null;
++    },
++
++    mouseup: function(e) {
++        if (jQuery.tableDnD.currentTable && jQuery.tableDnD.dragObject) {
++            var droppedRow = jQuery.tableDnD.dragObject;
++            var config = jQuery.tableDnD.currentTable.tableDnDConfig;
++            // If we have a dragObject, then we need to release it,
++            // The row will already have been moved to the right place so we just reset stuff
++                      if (config.onDragClass) {
++                  jQuery(droppedRow).removeClass(config.onDragClass);
++                      } else {
++                  jQuery(droppedRow).css(config.onDropStyle);
++                      }
++            jQuery.tableDnD.dragObject   = null;
++            if (config.onDrop) {
++                // Call the onDrop method if there is one
++                config.onDrop(jQuery.tableDnD.currentTable, droppedRow);
++            }
++            jQuery.tableDnD.currentTable = null; // let go of the table too
++        }
++    },
++
++    serialize: function() {
++        if (jQuery.tableDnD.currentTable) {
++            return jQuery.tableDnD.serializeTable(jQuery.tableDnD.currentTable);
++        } else {
++            return "Error: No Table id set, you need to set an id on your table and every row";
++        }
++    },
++
++      serializeTable: function(table) {
++        var result = "";
++        var tableId = table.id;
++        var rows = table.rows;
++        for (var i=0; i<rows.length; i++) {
++            if (result.length > 0) result += "&";
++            var rowId = rows[i].id;
++            if (rowId && rowId && table.tableDnDConfig && table.tableDnDConfig.serializeRegexp) {
++                rowId = rowId.match(table.tableDnDConfig.serializeRegexp)[0];
++            }
++
++            result += tableId + '[]=' + rowId;
++        }
++        return result;
++      },
++
++      serializeTables: function() {
++        var result = "";
++        this.each(function() {
++                      // this is now bound to each matching table
++                      result += jQuery.tableDnD.serializeTable(this);
++              });
++        return result;
++    }
++
++}
++
++jQuery.fn.extend(
++      {
++              tableDnD : jQuery.tableDnD.build,
++              tableDnDUpdate : jQuery.tableDnD.updateTables,
++              tableDnDSerialize: jQuery.tableDnD.serializeTables
++      }
++);
+\ No newline at end of file
+diff -up cacti-0.8.8a/include/js/jquery/jquery.timepicker.js.legal cacti-0.8.8a/include/js/jquery/jquery.timepicker.js
+--- cacti-0.8.8a/include/js/jquery/jquery.timepicker.js.legal  2013-01-04 15:44:38.041416077 -0500
++++ cacti-0.8.8a/include/js/jquery/jquery.timepicker.js        2013-01-04 15:43:12.645377988 -0500
+@@ -0,0 +1,1060 @@
++/*
++* jQuery timepicker addon
++* By: Trent Richardson [http://trentrichardson.com]
++* Version 0.9.6
++* Last Modified: 07/20/2011
++*
++* Copyright 2011 Trent Richardson
++* Dual licensed under the MIT and GPL licenses.
++* http://trentrichardson.com/Impromptu/GPL-LICENSE.txt
++* http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
++*
++* HERES THE CSS:
++* .ui-timepicker-div .ui-widget-header{ margin-bottom: 8px; }
++* .ui-timepicker-div dl{ text-align: left; }
++* .ui-timepicker-div dl dt{ height: 25px; }
++* .ui-timepicker-div dl dd{ margin: -25px 10px 10px 65px; }
++* .ui-timepicker-div td { font-size: 90%; }
++*/
++
++(function($) {
++
++$.extend($.ui, { timepicker: { version: "0.9.6" } });
++
++/* Time picker manager.
++   Use the singleton instance of this class, $.timepicker, to interact with the time picker.
++   Settings for (groups of) time pickers are maintained in an instance object,
++   allowing multiple different settings on the same page. */
++
++function Timepicker() {
++      this.regional = []; // Available regional settings, indexed by language code
++      this.regional[''] = { // Default regional settings
++              currentText: 'Now',
++              closeText: 'Done',
++              ampm: false,
++              timeFormat: 'hh:mm tt',
++              timeSuffix: '',
++              timeOnlyTitle: 'Choose Time',
++              timeText: 'Time',
++              hourText: 'Hour',
++              minuteText: 'Minute',
++              secondText: 'Second',
++              timezoneText: 'Time Zone'
++      };
++      this._defaults = { // Global defaults for all the datetime picker instances
++              showButtonPanel: true,
++              timeOnly: false,
++              showHour: true,
++              showMinute: true,
++              showSecond: false,
++              showTimezone: false,
++              showTime: true,
++              stepHour: 0.05,
++              stepMinute: 0.05,
++              stepSecond: 0.05,
++              hour: 0,
++              minute: 0,
++              second: 0,
++              timezone: '+0000',
++              hourMin: 0,
++              minuteMin: 0,
++              secondMin: 0,
++              hourMax: 23,
++              minuteMax: 59,
++              secondMax: 59,
++              minDateTime: null,
++              maxDateTime: null,
++              hourGrid: 0,
++              minuteGrid: 0,
++              secondGrid: 0,
++              alwaysSetTime: true,
++              separator: ' ',
++              altFieldTimeOnly: true,
++              showTimepicker: true,
++              timezoneList: ["-1100", "-1000", "-0900", "-0800", "-0700", "-0600",
++                             "-0500", "-0400", "-0300", "-0200", "-0100", "+0000",
++                             "+0100", "+0200", "+0300", "+0400", "+0500", "+0600",
++                             "+0700", "+0800", "+0900", "+1000", "+1100", "+1200"]
++      };
++      $.extend(this._defaults, this.regional['']);
++}
++
++$.extend(Timepicker.prototype, {
++      $input: null,
++      $altInput: null,
++      $timeObj: null,
++      inst: null,
++      hour_slider: null,
++      minute_slider: null,
++      second_slider: null,
++      timezone_select: null,
++      hour: 0,
++      minute: 0,
++      second: 0,
++      timezone: '+0000',
++      hourMinOriginal: null,
++      minuteMinOriginal: null,
++      secondMinOriginal: null,
++      hourMaxOriginal: null,
++      minuteMaxOriginal: null,
++      secondMaxOriginal: null,
++      ampm: '',
++      formattedDate: '',
++      formattedTime: '',
++      formattedDateTime: '',
++      timezoneList: ["-1100", "-1000", "-0900", "-0800", "-0700", "-0600",
++                      "-0500", "-0400", "-0300", "-0200", "-0100", "+0000",
++                      "+0100", "+0200", "+0300", "+0400", "+0500", "+0600",
++                      "+0700", "+0800", "+0900", "+1000", "+1100", "+1200"],
++
++      /* Override the default settings for all instances of the time picker.
++         @param  settings  object - the new settings to use as defaults (anonymous object)
++         @return the manager object */
++      setDefaults: function(settings) {
++              extendRemove(this._defaults, settings || {});
++              return this;
++      },
++
++      //########################################################################
++      // Create a new Timepicker instance
++      //########################################################################
++      _newInst: function($input, o) {
++              var tp_inst = new Timepicker(),
++                      inlineSettings = {};
++
++              for (var attrName in this._defaults) {
++                      var attrValue = $input.attr('time:' + attrName);
++                      if (attrValue) {
++                              try {
++                                      inlineSettings[attrName] = eval(attrValue);
++                              } catch (err) {
++                                      inlineSettings[attrName] = attrValue;
++                              }
++                      }
++              }
++              tp_inst._defaults = $.extend({}, this._defaults, inlineSettings, o, {
++                      beforeShow: function(input, dp_inst) {
++                              if ($.isFunction(o.beforeShow))
++                                      o.beforeShow(input, dp_inst, tp_inst);
++                      },
++                      onChangeMonthYear: function(year, month, dp_inst) {
++                              // Update the time as well : this prevents the time from disappearing from the $input field.
++                              tp_inst._updateDateTime(dp_inst);
++                              if ($.isFunction(o.onChangeMonthYear))
++                                      o.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);
++                      },
++                      onClose: function(dateText, dp_inst) {
++                              if (tp_inst.timeDefined === true && $input.val() != '')
++                                      tp_inst._updateDateTime(dp_inst);
++                              if ($.isFunction(o.onClose))
++                                      o.onClose.call($input[0], dateText, dp_inst, tp_inst);
++                      },
++                      timepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker');
++              });
++
++              tp_inst.hour = tp_inst._defaults.hour;
++              tp_inst.minute = tp_inst._defaults.minute;
++              tp_inst.second = tp_inst._defaults.second;
++              tp_inst.ampm = '';
++              tp_inst.$input = $input;
++
++              if (o.altField)
++                      tp_inst.$altInput = $(o.altField)
++                              .css({ cursor: 'pointer' })
++                              .focus(function(){ $input.trigger("focus"); });
++
++              // datepicker needs minDate/maxDate, timepicker needs minDateTime/maxDateTime..
++              if(tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date)
++                      tp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime());
++              if(tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date)
++                      tp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime());
++              if(tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date)
++                      tp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime());
++              if(tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date)
++                      tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime());
++
++              return tp_inst;
++      },
++
++      //########################################################################
++      // add our sliders to the calendar
++      //########################################################################
++      _addTimePicker: function(dp_inst) {
++              var currDT = (this.$altInput && this._defaults.altFieldTimeOnly) ?
++                              this.$input.val() + ' ' + this.$altInput.val() :
++                              this.$input.val();
++
++              this.timeDefined = this._parseTime(currDT);
++              this._limitMinMaxDateTime(dp_inst, false);
++              this._injectTimePicker();
++      },
++
++      //########################################################################
++      // parse the time string from input value or _setTime
++      //########################################################################
++      _parseTime: function(timeString, withDate) {
++              var regstr = this._defaults.timeFormat.toString()
++                              .replace(/h{1,2}/ig, '(\\d?\\d)')
++                              .replace(/m{1,2}/ig, '(\\d?\\d)')
++                              .replace(/s{1,2}/ig, '(\\d?\\d)')
++                              .replace(/t{1,2}/ig, '(am|pm|a|p)?')
++                              .replace(/z{1}/ig, '((\\+|-)\\d\\d\\d\\d)?')
++                              .replace(/\s/g, '\\s?') + this._defaults.timeSuffix + '$',
++                      order = this._getFormatPositions(),
++                      treg;
++
++              if (!this.inst) this.inst = $.datepicker._getInst(this.$input[0]);
++
++              if (withDate || !this._defaults.timeOnly) {
++                      // the time should come after x number of characters and a space.
++                      // x = at least the length of text specified by the date format
++                      var dp_dateFormat = $.datepicker._get(this.inst, 'dateFormat');
++                      // escape special regex characters in the seperator
++                      var specials = new RegExp("[.*+?|()\\[\\]{}\\\\]", "g");
++                      regstr = '.{' + dp_dateFormat.length + ',}' + this._defaults.separator.replace(specials, "\\$&") + regstr;
++              }
++
++              treg = timeString.match(new RegExp(regstr, 'i'));
++
++              if (treg) {
++                      if (order.t !== -1)
++                              this.ampm = ((treg[order.t] === undefined || treg[order.t].length === 0) ?
++                                      '' :
++                                      (treg[order.t].charAt(0).toUpperCase() == 'A') ? 'AM' : 'PM').toUpperCase();
++
++                      if (order.h !== -1) {
++                              if (this.ampm == 'AM' && treg[order.h] == '12')
++                                      this.hour = 0; // 12am = 0 hour
++                              else if (this.ampm == 'PM' && treg[order.h] != '12')
++                                      this.hour = (parseFloat(treg[order.h]) + 12).toFixed(0); // 12pm = 12 hour, any other pm = hour + 12
++                              else this.hour = Number(treg[order.h]);
++                      }
++
++                      if (order.m !== -1) this.minute = Number(treg[order.m]);
++                      if (order.s !== -1) this.second = Number(treg[order.s]);
++                      if (order.z !== -1) this.timezone = treg[order.z];
++
++                      return true;
++
++              }
++              return false;
++      },
++
++      //########################################################################
++      // figure out position of time elements.. cause js cant do named captures
++      //########################################################################
++      _getFormatPositions: function() {
++              var finds = this._defaults.timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|t{1,2}|z)/g),
++                      orders = { h: -1, m: -1, s: -1, t: -1, z: -1 };
++
++              if (finds)
++                      for (var i = 0; i < finds.length; i++)
++                              if (orders[finds[i].toString().charAt(0)] == -1)
++                                      orders[finds[i].toString().charAt(0)] = i + 1;
++
++              return orders;
++      },
++
++      //########################################################################
++      // generate and inject html for timepicker into ui datepicker
++      //########################################################################
++      _injectTimePicker: function() {
++              var $dp = this.inst.dpDiv,
++                      o = this._defaults,
++                      tp_inst = this,
++                      // Added by Peter Medeiros:
++                      // - Figure out what the hour/minute/second max should be based on the step values.
++                      // - Example: if stepMinute is 15, then minMax is 45.
++                      hourMax = (o.hourMax - (o.hourMax % o.stepHour)).toFixed(0),
++                      minMax  = (o.minuteMax - (o.minuteMax % o.stepMinute)).toFixed(0),
++                      secMax  = (o.secondMax - (o.secondMax % o.stepSecond)).toFixed(0),
++                      dp_id = this.inst.id.toString().replace(/([^A-Za-z0-9_])/g, '');
++
++              // Prevent displaying twice
++              //if ($dp.find("div#ui-timepicker-div-"+ dp_id).length === 0) {
++              if ($dp.find("div#ui-timepicker-div-"+ dp_id).length === 0 && o.showTimepicker) {
++                      var noDisplay = ' style="display:none;"',
++                              html =  '<div class="ui-timepicker-div" id="ui-timepicker-div-' + dp_id + '"><dl>' +
++                                              '<dt class="ui_tpicker_time_label" id="ui_tpicker_time_label_' + dp_id + '"' +
++                                              ((o.showTime) ? '' : noDisplay) + '>' + o.timeText + '</dt>' +
++                                              '<dd class="ui_tpicker_time" id="ui_tpicker_time_' + dp_id + '"' +
++                                              ((o.showTime) ? '' : noDisplay) + '></dd>' +
++                                              '<dt class="ui_tpicker_hour_label" id="ui_tpicker_hour_label_' + dp_id + '"' +
++                                              ((o.showHour) ? '' : noDisplay) + '>' + o.hourText + '</dt>',
++                              hourGridSize = 0,
++                              minuteGridSize = 0,
++                              secondGridSize = 0,
++                              size;
++
++                      if (o.showHour && o.hourGrid > 0) {
++                              html += '<dd class="ui_tpicker_hour">' +
++                                              '<div id="ui_tpicker_hour_' + dp_id + '"' + ((o.showHour)   ? '' : noDisplay) + '></div>' +
++                                              '<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>';
++
++                              for (var h = o.hourMin; h <= hourMax; h += o.hourGrid) {
++                                      hourGridSize++;
++                                      var tmph = (o.ampm && h > 12) ? h-12 : h;
++                                      if (tmph < 10) tmph = '0' + tmph;
++                                      if (o.ampm) {
++                                              if (h == 0) tmph = 12 +'a';
++                                              else if (h < 12) tmph += 'a';
++                                              else tmph += 'p';
++                                      }
++                                      html += '<td>' + tmph + '</td>';
++                              }
++
++                              html += '</tr></table></div>' +
++                                              '</dd>';
++                      } else html += '<dd class="ui_tpicker_hour" id="ui_tpicker_hour_' + dp_id + '"' +
++                                                      ((o.showHour) ? '' : noDisplay) + '></dd>';
++
++                      html += '<dt class="ui_tpicker_minute_label" id="ui_tpicker_minute_label_' + dp_id + '"' +
++                                      ((o.showMinute) ? '' : noDisplay) + '>' + o.minuteText + '</dt>';
++
++                      if (o.showMinute && o.minuteGrid > 0) {
++                              html += '<dd class="ui_tpicker_minute ui_tpicker_minute_' + o.minuteGrid + '">' +
++                                              '<div id="ui_tpicker_minute_' + dp_id + '"' +
++                                              ((o.showMinute) ? '' : noDisplay) + '></div>' +
++                                              '<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>';
++
++                              for (var m = o.minuteMin; m <= minMax; m += o.minuteGrid) {
++                                      minuteGridSize++;
++                                      html += '<td>' + ((m < 10) ? '0' : '') + m + '</td>';
++                              }
++
++                              html += '</tr></table></div>' +
++                                              '</dd>';
++                      } else html += '<dd class="ui_tpicker_minute" id="ui_tpicker_minute_' + dp_id + '"' +
++                                                      ((o.showMinute) ? '' : noDisplay) + '></dd>';
++
++                      html += '<dt class="ui_tpicker_second_label" id="ui_tpicker_second_label_' + dp_id + '"' +
++                                      ((o.showSecond) ? '' : noDisplay) + '>' + o.secondText + '</dt>';
++
++                      if (o.showSecond && o.secondGrid > 0) {
++                              html += '<dd class="ui_tpicker_second ui_tpicker_second_' + o.secondGrid + '">' +
++                                              '<div id="ui_tpicker_second_' + dp_id + '"' +
++                                              ((o.showSecond) ? '' : noDisplay) + '></div>' +
++                                              '<div style="padding-left: 1px"><table><tr>';
++
++                              for (var s = o.secondMin; s <= secMax; s += o.secondGrid) {
++                                      secondGridSize++;
++                                      html += '<td>' + ((s < 10) ? '0' : '') + s + '</td>';
++                              }
++
++                              html += '</tr></table></div>' +
++                                              '</dd>';
++                      } else html += '<dd class="ui_tpicker_second" id="ui_tpicker_second_' + dp_id + '"'     +
++                                                      ((o.showSecond) ? '' : noDisplay) + '></dd>';
++
++                      html += '<dt class="ui_tpicker_timezone_label" id="ui_tpicker_timezone_label_' + dp_id + '"' +
++                                      ((o.showTimezone) ? '' : noDisplay) + '>' + o.timezoneText + '</dt>';
++                      html += '<dd class="ui_tpicker_timezone" id="ui_tpicker_timezone_' + dp_id + '"'        +
++                                                      ((o.showTimezone) ? '' : noDisplay) + '></dd>';
++
++                      html += '</dl></div>';
++                      $tp = $(html);
++
++                              // if we only want time picker...
++                      if (o.timeOnly === true) {
++                              $tp.prepend(
++                                      '<div class="ui-widget-header ui-helper-clearfix ui-corner-all">' +
++                                              '<div class="ui-datepicker-title">' + o.timeOnlyTitle + '</div>' +
++                                      '</div>');
++                              $dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide();
++                      }
++
++                      this.hour_slider = $tp.find('#ui_tpicker_hour_'+ dp_id).slider({
++                              orientation: "horizontal",
++                              value: this.hour,
++                              min: o.hourMin,
++                              max: hourMax,
++                              step: o.stepHour,
++                              slide: function(event, ui) {
++                                      tp_inst.hour_slider.slider( "option", "value", ui.value);
++                                      tp_inst._onTimeChange();
++                              }
++                      });
++
++                      // Updated by Peter Medeiros:
++                      // - Pass in Event and UI instance into slide function
++                      this.minute_slider = $tp.find('#ui_tpicker_minute_'+ dp_id).slider({
++                              orientation: "horizontal",
++                              value: this.minute,
++                              min: o.minuteMin,
++                              max: minMax,
++                              step: o.stepMinute,
++                              slide: function(event, ui) {
++                                      // update the global minute slider instance value with the current slider value
++                                      tp_inst.minute_slider.slider( "option", "value", ui.value);
++                                      tp_inst._onTimeChange();
++                              }
++                      });
++
++                      this.second_slider = $tp.find('#ui_tpicker_second_'+ dp_id).slider({
++                              orientation: "horizontal",
++                              value: this.second,
++                              min: o.secondMin,
++                              max: secMax,
++                              step: o.stepSecond,
++                              slide: function(event, ui) {
++                                      tp_inst.second_slider.slider( "option", "value", ui.value);
++                                      tp_inst._onTimeChange();
++                              }
++                      });
++
++
++                      this.timezone_select = $tp.find('#ui_tpicker_timezone_'+ dp_id).append('<select></select>').find("select");
++                      $.fn.append.apply(this.timezone_select,
++                              $.map(o.timezoneList, function(val, idx) {
++                                      return $("<option />")
++                                              .val(typeof val == "object" ? val.value : val)
++                                              .text(typeof val == "object" ? val.label : val);
++                              })
++                      );
++                      this.timezone_select.val((typeof this.timezone != "undefined" && this.timezone != null && this.timezone != "") ? this.timezone : o.timezone);
++                      this.timezone_select.change(function() {
++                              tp_inst._onTimeChange();
++                      });
++
++                      // Add grid functionality
++                      if (o.showHour && o.hourGrid > 0) {
++                              size = 100 * hourGridSize * o.hourGrid / (hourMax - o.hourMin);
++
++                              $tp.find(".ui_tpicker_hour table").css({
++                                      width: size + "%",
++                                      marginLeft: (size / (-2 * hourGridSize)) + "%",
++                                      borderCollapse: 'collapse'
++                              }).find("td").each( function(index) {
++                                      $(this).click(function() {
++                                              var h = $(this).html();
++                                              if(o.ampm)      {
++                                                      var ap = h.substring(2).toLowerCase(),
++                                                              aph = parseInt(h.substring(0,2), 10);
++                                                      if (ap == 'a') {
++                                                              if (aph == 12) h = 0;
++                                                              else h = aph;
++                                                      } else if (aph == 12) h = 12;
++                                                      else h = aph + 12;
++                                              }
++                                              tp_inst.hour_slider.slider("option", "value", h);
++                                              tp_inst._onTimeChange();
++                                              tp_inst._onSelectHandler();
++                                      }).css({
++                                              cursor: 'pointer',
++                                              width: (100 / hourGridSize) + '%',
++                                              textAlign: 'center',
++                                              overflow: 'hidden'
++                                      });
++                              });
++                      }
++
++                      if (o.showMinute && o.minuteGrid > 0) {
++                              size = 100 * minuteGridSize * o.minuteGrid / (minMax - o.minuteMin);
++                              $tp.find(".ui_tpicker_minute table").css({
++                                      width: size + "%",
++                                      marginLeft: (size / (-2 * minuteGridSize)) + "%",
++                                      borderCollapse: 'collapse'
++                              }).find("td").each(function(index) {
++                                      $(this).click(function() {
++                                              tp_inst.minute_slider.slider("option", "value", $(this).html());
++                                              tp_inst._onTimeChange();
++                                              tp_inst._onSelectHandler();
++                                      }).css({
++                                              cursor: 'pointer',
++                                              width: (100 / minuteGridSize) + '%',
++                                              textAlign: 'center',
++                                              overflow: 'hidden'
++                                      });
++                              });
++                      }
++
++                      if (o.showSecond && o.secondGrid > 0) {
++                              $tp.find(".ui_tpicker_second table").css({
++                                      width: size + "%",
++                                      marginLeft: (size / (-2 * secondGridSize)) + "%",
++                                      borderCollapse: 'collapse'
++                              }).find("td").each(function(index) {
++                                      $(this).click(function() {
++                                              tp_inst.second_slider.slider("option", "value", $(this).html());
++                                              tp_inst._onTimeChange();
++                                              tp_inst._onSelectHandler();
++                                      }).css({
++                                              cursor: 'pointer',
++                                              width: (100 / secondGridSize) + '%',
++                                              textAlign: 'center',
++                                              overflow: 'hidden'
++                                      });
++                              });
++                      }
++
++                      var $buttonPanel = $dp.find('.ui-datepicker-buttonpane');
++                      if ($buttonPanel.length) $buttonPanel.before($tp);
++                      else $dp.append($tp);
++
++                      this.$timeObj = $tp.find('#ui_tpicker_time_'+ dp_id);
++
++                      if (this.inst !== null) {
++                              var timeDefined = this.timeDefined;
++                              this._onTimeChange();
++                              this.timeDefined = timeDefined;
++                      }
++
++                      //Emulate datepicker onSelect behavior. Call on slidestop.
++                      var onSelectDelegate = function() {
++                              tp_inst._onSelectHandler();
++                      };
++                      this.hour_slider.bind('slidestop',onSelectDelegate);
++                      this.minute_slider.bind('slidestop',onSelectDelegate);
++                      this.second_slider.bind('slidestop',onSelectDelegate);
++              }
++      },
++
++      //########################################################################
++      // This function tries to limit the ability to go outside the
++      // min/max date range
++      //########################################################################
++      _limitMinMaxDateTime: function(dp_inst, adjustSliders){
++              var o = this._defaults,
++                      dp_date = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay);
++
++              if(!this._defaults.showTimepicker) return; // No time so nothing to check here
++
++              if($.datepicker._get(dp_inst, 'minDateTime') !== null && dp_date){
++                      var minDateTime = $.datepicker._get(dp_inst, 'minDateTime'),
++                              minDateTimeDate = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), 0, 0, 0, 0);
++
++                      if(this.hourMinOriginal === null || this.minuteMinOriginal === null || this.secondMinOriginal === null){
++                              this.hourMinOriginal = o.hourMin;
++                              this.minuteMinOriginal = o.minuteMin;
++                              this.secondMinOriginal = o.secondMin;
++                      }
++
++                      if(dp_inst.settings.timeOnly || minDateTimeDate.getTime() == dp_date.getTime()) {
++                              this._defaults.hourMin = minDateTime.getHours();
++                              if (this.hour <= this._defaults.hourMin) {
++                                      this.hour = this._defaults.hourMin;
++                                      this._defaults.minuteMin = minDateTime.getMinutes();
++                                      if (this.minute <= this._defaults.minuteMin) {
++                                              this.minute = this._defaults.minuteMin;
++                                              this._defaults.secondMin = minDateTime.getSeconds();
++                                      } else {
++                                              if(this.second < this._defaults.secondMin) this.second = this._defaults.secondMin;
++                                              this._defaults.secondMin = this.secondMinOriginal;
++                                      }
++                              } else {
++                                      this._defaults.minuteMin = this.minuteMinOriginal;
++                                      this._defaults.secondMin = this.secondMinOriginal;
++                              }
++                      }else{
++                              this._defaults.hourMin = this.hourMinOriginal;
++                              this._defaults.minuteMin = this.minuteMinOriginal;
++                              this._defaults.secondMin = this.secondMinOriginal;
++                      }
++              }
++
++              if($.datepicker._get(dp_inst, 'maxDateTime') !== null && dp_date){
++                      var maxDateTime = $.datepicker._get(dp_inst, 'maxDateTime'),
++                              maxDateTimeDate = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), 0, 0, 0, 0);
++
++                      if(this.hourMaxOriginal === null || this.minuteMaxOriginal === null || this.secondMaxOriginal === null){
++                              this.hourMaxOriginal = o.hourMax;
++                              this.minuteMaxOriginal = o.minuteMax;
++                              this.secondMaxOriginal = o.secondMax;
++                      }
++
++                      if(dp_inst.settings.timeOnly || maxDateTimeDate.getTime() == dp_date.getTime()){
++                              this._defaults.hourMax = maxDateTime.getHours();
++                              if (this.hour >= this._defaults.hourMax) {
++                                      this.hour = this._defaults.hourMax;
++                                      this._defaults.minuteMax = maxDateTime.getMinutes();
++                                      if (this.minute >= this._defaults.minuteMax) {
++                                              this.minute = this._defaults.minuteMax;
++                                              this._defaults.secondMax = maxDateTime.getSeconds();
++                                      } else {
++                                              if(this.second > this._defaults.secondMax) this.second = this._defaults.secondMax;
++                                              this._defaults.secondMax = this.secondMaxOriginal;
++                                      }
++                              } else {
++                                      this._defaults.minuteMax = this.minuteMaxOriginal;
++                                      this._defaults.secondMax = this.secondMaxOriginal;
++                              }
++                      }else{
++                              this._defaults.hourMax = this.hourMaxOriginal;
++                              this._defaults.minuteMax = this.minuteMaxOriginal;
++                              this._defaults.secondMax = this.secondMaxOriginal;
++                      }
++              }
++
++              if(adjustSliders !== undefined && adjustSliders === true){
++                      var hourMax = (this._defaults.hourMax - (this._defaults.hourMax % this._defaults.stepHour)).toFixed(0),
++                              minMax  = (this._defaults.minuteMax - (this._defaults.minuteMax % this._defaults.stepMinute)).toFixed(0),
++                              secMax  = (this._defaults.secondMax - (this._defaults.secondMax % this._defaults.stepSecond)).toFixed(0);
++
++                      if(this.hour_slider)
++                              this.hour_slider.slider("option", { min: this._defaults.hourMin, max: hourMax }).slider('value', this.hour);
++                      if(this.minute_slider)
++                              this.minute_slider.slider("option", { min: this._defaults.minuteMin, max: minMax }).slider('value', this.minute);
++                      if(this.second_slider)
++                              this.second_slider.slider("option", { min: this._defaults.secondMin, max: secMax }).slider('value', this.second);
++              }
++
++      },
++
++
++      //########################################################################
++      // when a slider moves, set the internal time...
++      // on time change is also called when the time is updated in the text field
++      //########################################################################
++      _onTimeChange: function() {
++              var hour   = (this.hour_slider) ? this.hour_slider.slider('value') : false,
++                      minute = (this.minute_slider) ? this.minute_slider.slider('value') : false,
++                      second = (this.second_slider) ? this.second_slider.slider('value') : false,
++                      timezone = (this.timezone_select) ? this.timezone_select.val() : false;
++
++              if (typeof(hour) == 'object') hour = false;
++              if (typeof(minute) == 'object') minute = false;
++              if (typeof(second) == 'object') second = false;
++              if (typeof(timezone) == 'object') timezone = false;
++
++              if (hour !== false) hour = parseInt(hour,10);
++              if (minute !== false) minute = parseInt(minute,10);
++              if (second !== false) second = parseInt(second,10);
++
++              var ampm = (hour < 12) ? 'AM' : 'PM';
++
++              // If the update was done in the input field, the input field should not be updated.
++              // If the update was done using the sliders, update the input field.
++              var hasChanged = (hour != this.hour || minute != this.minute || second != this.second || (this.ampm.length > 0 && this.ampm != ampm) || timezone != this.timezone);
++
++              if (hasChanged) {
++
++                      if (hour !== false)this.hour = hour;
++                      if (minute !== false) this.minute = minute;
++                      if (second !== false) this.second = second;
++                      if (timezone !== false) this.timezone = timezone;
++
++                      if (!this.inst) this.inst = $.datepicker._getInst(this.$input[0]);
++
++                      this._limitMinMaxDateTime(this.inst, true);
++              }
++              if (this._defaults.ampm) this.ampm = ampm;
++
++              this._formatTime();
++              if (this.$timeObj) this.$timeObj.text(this.formattedTime + this._defaults.timeSuffix);
++              this.timeDefined = true;
++              if (hasChanged) this._updateDateTime();
++      },
++
++      //########################################################################
++      // call custom onSelect.
++      // bind to sliders slidestop, and grid click.
++      //########################################################################
++      _onSelectHandler: function() {
++              var onSelect = this._defaults['onSelect'];
++              var inputEl = this.$input ? this.$input[0] : null;
++              if (onSelect && inputEl) {
++                      onSelect.apply(inputEl, [this.formattedDateTime, this]);
++              }
++      },
++
++      //########################################################################
++      // format the time all pretty...
++      //########################################################################
++      _formatTime: function(time, format, ampm) {
++              if (ampm == undefined) ampm = this._defaults.ampm;
++              time = time || { hour: this.hour, minute: this.minute, second: this.second, ampm: this.ampm, timezone: this.timezone };
++              var tmptime = format || this._defaults.timeFormat.toString();
++
++              if (ampm) {
++                      var hour12 = ((time.ampm == 'AM') ? (time.hour) : (time.hour % 12));
++                      hour12 = (Number(hour12) === 0) ? 12 : hour12;
++                      tmptime = tmptime.toString()
++                              .replace(/hh/g, ((hour12 < 10) ? '0' : '') + hour12)
++                              .replace(/h/g, hour12)
++                              .replace(/mm/g, ((time.minute < 10) ? '0' : '') + time.minute)
++                              .replace(/m/g, time.minute)
++                              .replace(/ss/g, ((time.second < 10) ? '0' : '') + time.second)
++                              .replace(/s/g, time.second)
++                              .replace(/TT/g, time.ampm.toUpperCase())
++                              .replace(/Tt/g, time.ampm.toUpperCase())
++                              .replace(/tT/g, time.ampm.toLowerCase())
++                              .replace(/tt/g, time.ampm.toLowerCase())
++                              .replace(/T/g, time.ampm.charAt(0).toUpperCase())
++                              .replace(/t/g, time.ampm.charAt(0).toLowerCase())
++                              .replace(/z/g, time.timezone);
++              } else {
++                      tmptime = tmptime.toString()
++                              .replace(/hh/g, ((time.hour < 10) ? '0' : '') + time.hour)
++                              .replace(/h/g, time.hour)
++                              .replace(/mm/g, ((time.minute < 10) ? '0' : '') + time.minute)
++                              .replace(/m/g, time.minute)
++                              .replace(/ss/g, ((time.second < 10) ? '0' : '') + time.second)
++                              .replace(/s/g, time.second)
++                              .replace(/z/g, time.timezone);
++                      tmptime = $.trim(tmptime.replace(/t/gi, ''));
++              }
++
++              if (arguments.length) return tmptime;
++              else this.formattedTime = tmptime;
++      },
++
++      //########################################################################
++      // update our input with the new date time..
++      //########################################################################
++      _updateDateTime: function(dp_inst) {
++              dp_inst = this.inst || dp_inst,
++                      dt = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay),
++                      dateFmt = $.datepicker._get(dp_inst, 'dateFormat'),
++                      formatCfg = $.datepicker._getFormatConfig(dp_inst),
++                      timeAvailable = dt !== null && this.timeDefined;
++              this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);
++              var formattedDateTime = this.formattedDate;
++              if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0))
++                      return;
++
++              if (this._defaults.timeOnly === true) {
++                      formattedDateTime = this.formattedTime;
++              } else if (this._defaults.timeOnly !== true && (this._defaults.alwaysSetTime || timeAvailable)) {
++                      formattedDateTime += this._defaults.separator + this.formattedTime + this._defaults.timeSuffix;
++              }
++
++              this.formattedDateTime = formattedDateTime;
++
++              if(!this._defaults.showTimepicker) {
++                      this.$input.val(this.formattedDate);
++              } else if (this.$altInput && this._defaults.altFieldTimeOnly === true) {
++                      this.$altInput.val(this.formattedTime);
++                      this.$input.val(this.formattedDate);
++              } else if(this.$altInput) {
++                      this.$altInput.val(formattedDateTime);
++                      this.$input.val(formattedDateTime);
++              } else {
++                      this.$input.val(formattedDateTime);
++              }
++
++              this.$input.trigger("change");
++      }
++
++});
++
++$.fn.extend({
++      //########################################################################
++      // shorthand just to use timepicker..
++      //########################################################################
++      timepicker: function(o) {
++              o = o || {};
++              var tmp_args = arguments;
++
++              if (typeof o == 'object') tmp_args[0] = $.extend(o, { timeOnly: true });
++
++              return $(this).each(function() {
++                      $.fn.datetimepicker.apply($(this), tmp_args);
++              });
++      },
++
++      //########################################################################
++      // extend timepicker to datepicker
++      //########################################################################
++      datetimepicker: function(o) {
++              o = o || {};
++              var $input = this,
++              tmp_args = arguments;
++
++              if (typeof(o) == 'string'){
++                      if(o == 'getDate')
++                              return $.fn.datepicker.apply($(this[0]), tmp_args);
++                      else
++                              return this.each(function() {
++                                      var $t = $(this);
++                                      $t.datepicker.apply($t, tmp_args);
++                              });
++              }
++              else
++                      return this.each(function() {
++                              var $t = $(this);
++                              $t.datepicker($.timepicker._newInst($t, o)._defaults);
++                      });
++      }
++});
++
++//########################################################################
++// the bad hack :/ override datepicker so it doesnt close on select
++// inspired: http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date/1762378#1762378
++//########################################################################
++$.datepicker._base_selectDate = $.datepicker._selectDate;
++$.datepicker._selectDate = function (id, dateStr) {
++      var inst = this._getInst($(id)[0]),
++              tp_inst = this._get(inst, 'timepicker');
++
++      if (tp_inst) {
++              tp_inst._limitMinMaxDateTime(inst, true);
++              inst.inline = inst.stay_open = true;
++              //This way the onSelect handler called from calendarpicker get the full dateTime
++              this._base_selectDate(id, dateStr + tp_inst._defaults.separator + tp_inst.formattedTime + tp_inst._defaults.timeSuffix);
++              inst.inline = inst.stay_open = false;
++              this._notifyChange(inst);
++              this._updateDatepicker(inst);
++      }
++      else this._base_selectDate(id, dateStr);
++};
++
++//#############################################################################################
++// second bad hack :/ override datepicker so it triggers an event when changing the input field
++// and does not redraw the datepicker on every selectDate event
++//#############################################################################################
++$.datepicker._base_updateDatepicker = $.datepicker._updateDatepicker;
++$.datepicker._updateDatepicker = function(inst) {
++
++      // don't popup the datepicker if there is another instance already opened
++      var input = inst.input[0];
++      if($.datepicker._curInst &&
++         $.datepicker._curInst != inst &&
++         $.datepicker._datepickerShowing &&
++         $.datepicker._lastInput != input) {
++              return;
++      }
++
++      if (typeof(inst.stay_open) !== 'boolean' || inst.stay_open === false) {
++
++              this._base_updateDatepicker(inst);
++
++              // Reload the time control when changing something in the input text field.
++              var tp_inst = this._get(inst, 'timepicker');
++              if(tp_inst) tp_inst._addTimePicker(inst);
++      }
++};
++
++//#######################################################################################
++// third bad hack :/ override datepicker so it allows spaces and colon in the input field
++//#######################################################################################
++$.datepicker._base_doKeyPress = $.datepicker._doKeyPress;
++$.datepicker._doKeyPress = function(event) {
++      var inst = $.datepicker._getInst(event.target),
++              tp_inst = $.datepicker._get(inst, 'timepicker');
++
++      if (tp_inst) {
++              if ($.datepicker._get(inst, 'constrainInput')) {
++                      var ampm = tp_inst._defaults.ampm,
++                              dateChars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')),
++                              datetimeChars = tp_inst._defaults.timeFormat.toString()
++                                                              .replace(/[hms]/g, '')
++                                                              .replace(/TT/g, ampm ? 'APM' : '')
++                                                              .replace(/Tt/g, ampm ? 'AaPpMm' : '')
++                                                              .replace(/tT/g, ampm ? 'AaPpMm' : '')
++                                                              .replace(/T/g, ampm ? 'AP' : '')
++                                                              .replace(/tt/g, ampm ? 'apm' : '')
++                                                              .replace(/t/g, ampm ? 'ap' : '') +
++                                                              " " +
++                                                              tp_inst._defaults.separator +
++                                                              tp_inst._defaults.timeSuffix +
++                                                              (tp_inst._defaults.showTimezone ? tp_inst._defaults.timezoneList.join('') : '') +
++                                                              dateChars,
++                              chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);
++                      return event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1);
++              }
++      }
++
++      return $.datepicker._base_doKeyPress(event);
++};
++
++//#######################################################################################
++// Override key up event to sync manual input changes.
++//#######################################################################################
++$.datepicker._base_doKeyUp = $.datepicker._doKeyUp;
++$.datepicker._doKeyUp = function (event) {
++      var inst = $.datepicker._getInst(event.target),
++              tp_inst = $.datepicker._get(inst, 'timepicker');
++
++      if (tp_inst) {
++              if (tp_inst._defaults.timeOnly && (inst.input.val() != inst.lastVal)) {
++                      try {
++                              $.datepicker._updateDatepicker(inst);
++                      }
++                      catch (err) {
++                              $.datepicker.log(err);
++                      }
++              }
++      }
++
++      return $.datepicker._base_doKeyUp(event);
++};
++
++//#######################################################################################
++// override "Today" button to also grab the time.
++//#######################################################################################
++$.datepicker._base_gotoToday = $.datepicker._gotoToday;
++$.datepicker._gotoToday = function(id) {
++      this._base_gotoToday(id);
++      this._setTime(this._getInst($(id)[0]), new Date());
++};
++
++//#######################################################################################
++// Disable & enable the Time in the datetimepicker
++//#######################################################################################
++$.datepicker._disableTimepickerDatepicker = function(target, date, withDate) {
++      var inst = this._getInst(target),
++      tp_inst = this._get(inst, 'timepicker');
++      $(target).datepicker('getDate'); // Init selected[Year|Month|Day]
++      if (tp_inst) {
++              tp_inst._defaults.showTimepicker = false;
++              tp_inst._updateDateTime(inst);
++      }
++};
++
++$.datepicker._enableTimepickerDatepicker = function(target, date, withDate) {
++      var inst = this._getInst(target),
++      tp_inst = this._get(inst, 'timepicker');
++      $(target).datepicker('getDate'); // Init selected[Year|Month|Day]
++      if (tp_inst) {
++              tp_inst._defaults.showTimepicker = true;
++              tp_inst._addTimePicker(inst); // Could be disabled on page load
++              tp_inst._updateDateTime(inst);
++      }
++};
++
++//#######################################################################################
++// Create our own set time function
++//#######################################################################################
++$.datepicker._setTime = function(inst, date) {
++      var tp_inst = this._get(inst, 'timepicker');
++      if (tp_inst) {
++              var defaults = tp_inst._defaults,
++                      // calling _setTime with no date sets time to defaults
++                      hour = date ? date.getHours() : defaults.hour,
++                      minute = date ? date.getMinutes() : defaults.minute,
++                      second = date ? date.getSeconds() : defaults.second;
++
++              //check if within min/max times..
++              if ((hour < defaults.hourMin || hour > defaults.hourMax) || (minute < defaults.minuteMin || minute > defaults.minuteMax) || (second < defaults.secondMin || second > defaults.secondMax)) {
++                      hour = defaults.hourMin;
++                      minute = defaults.minuteMin;
++                      second = defaults.secondMin;
++              }
++
++              tp_inst.hour = hour;
++              tp_inst.minute = minute;
++              tp_inst.second = second;
++
++              if (tp_inst.hour_slider) tp_inst.hour_slider.slider('value', hour);
++              if (tp_inst.minute_slider) tp_inst.minute_slider.slider('value', minute);
++              if (tp_inst.second_slider) tp_inst.second_slider.slider('value', second);
++
++              tp_inst._onTimeChange();
++              tp_inst._updateDateTime(inst);
++      }
++};
++
++//#######################################################################################
++// Create new public method to set only time, callable as $().datepicker('setTime', date)
++//#######################################################################################
++$.datepicker._setTimeDatepicker = function(target, date, withDate) {
++      var inst = this._getInst(target),
++              tp_inst = this._get(inst, 'timepicker');
++
++      if (tp_inst) {
++              this._setDateFromField(inst);
++              var tp_date;
++              if (date) {
++                      if (typeof date == "string") {
++                              tp_inst._parseTime(date, withDate);
++                              tp_date = new Date();
++                              tp_date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second);
++                      }
++                      else tp_date = new Date(date.getTime());
++                      if (tp_date.toString() == 'Invalid Date') tp_date = undefined;
++                      this._setTime(inst, tp_date);
++              }
++      }
++
++};
++
++//#######################################################################################
++// override setDate() to allow setting time too within Date object
++//#######################################################################################
++$.datepicker._base_setDateDatepicker = $.datepicker._setDateDatepicker;
++$.datepicker._setDateDatepicker = function(target, date) {
++      var inst = this._getInst(target),
++      tp_date = (date instanceof Date) ? new Date(date.getTime()) : date;
++
++      this._updateDatepicker(inst);
++      this._base_setDateDatepicker.apply(this, arguments);
++      this._setTimeDatepicker(target, tp_date, true);
++};
++
++//#######################################################################################
++// override getDate() to allow getting time too within Date object
++//#######################################################################################
++$.datepicker._base_getDateDatepicker = $.datepicker._getDateDatepicker;
++$.datepicker._getDateDatepicker = function(target, noDefault) {
++      var inst = this._getInst(target),
++              tp_inst = this._get(inst, 'timepicker');
++
++      if (tp_inst) {
++              this._setDateFromField(inst, noDefault);
++              var date = this._getDate(inst);
++              if (date && tp_inst._parseTime($(target).val(), tp_inst.timeOnly)) date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second);
++              return date;
++      }
++      return this._base_getDateDatepicker(target, noDefault);
++};
++
++//#######################################################################################
++// override parseDate() because UI 1.8.14 throws an error about "Extra characters"
++// An option in datapicker to ignore extra format characters would be nicer.
++//#######################################################################################
++$.datepicker._base_parseDate = $.datepicker.parseDate;
++$.datepicker.parseDate = function(format, value, settings) {
++      var date;
++      try {
++              date = this._base_parseDate(format, value, settings);
++      } catch (err) {
++              // Hack!  The error message ends with a colon, a space, and
++              // the "extra" characters.  We rely on that instead of
++              // attempting to perfectly reproduce the parsing algorithm.
++              date = this._base_parseDate(format, value.substring(0,value.length-(err.length-err.indexOf(':')-2)), settings);
++      }
++      return date;
++};
++
++//#######################################################################################
++// override options setter to add time to maxDate(Time) and minDate(Time)
++//#######################################################################################
++$.datepicker._base_optionDatepicker = $.datepicker._optionDatepicker;
++$.datepicker._optionDatepicker = function(target, name, value) {
++      this._base_optionDatepicker(target, name, value);
++      var inst = this._getInst(target),
++              tp_inst = this._get(inst, 'timepicker');
++      if (tp_inst) {
++              //Set minimum and maximum date values if we have timepicker
++              if(name==='minDate') {
++              if(tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date)
++                              tp_inst._defaults.minDateTime = new Date(value);
++                      if(tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date)
++                              tp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime());
++                      tp_inst._limitMinMaxDateTime(inst,true);
++              }
++              if(name==='maxDate') {
++                      if(tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date)
++                              tp_inst._defaults.maxDateTime = new Date(value);
++                      if(tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date)
++                              tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime());
++                      tp_inst._limitMinMaxDateTime(inst,true);
++              }
++      }
++};
++
++//#######################################################################################
++// jQuery extend now ignores nulls!
++//#######################################################################################
++function extendRemove(target, props) {
++      $.extend(target, props);
++      for (var name in props)
++              if (props[name] === null || props[name] === undefined)
++                      target[name] = props[name];
++      return target;
++}
++
++$.timepicker = new Timepicker(); // singleton instance
++$.timepicker.version = "0.9.6";
++
++})(jQuery);
+\ No newline at end of file
+diff -up cacti-0.8.8a/include/js/jquery/jquery-ui.js.legal cacti-0.8.8a/include/js/jquery/jquery-ui.js
+--- cacti-0.8.8a/include/js/jquery/jquery-ui.js.legal  2013-01-04 15:44:38.043416079 -0500
++++ cacti-0.8.8a/include/js/jquery/jquery-ui.js        2013-01-04 15:43:12.646377987 -0500
+@@ -0,0 +1,356 @@
++/*!
++ * jQuery UI 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI
++ */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery);/*!
++ * jQuery UI Widget 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Widget
++ */(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);/*!
++ * jQuery UI Mouse 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Mouse
++ *
++ * Depends:
++ *    jquery.ui.widget.js
++ */(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);/*
++ * jQuery UI Position 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Position
++ */(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1];return this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]!==e){var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0}},top:function(b,c){if(c.at[1]!==e){var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];if(!c||!c.ownerDocument)return null;if(b)return this.each(function(){a.offset.setOffset(this,b)});return h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);/*
++ * jQuery UI Draggable 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Draggables
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.mouse.js
++ *    jquery.ui.widget.js
++ */(function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1}this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.18"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d.snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!!e.length){var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style.zIndex=f+a}),this[0].style.zIndex=f+e.length}}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})})(jQuery);/*
++ * jQuery UI Droppable 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Droppables
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.widget.js
++ *    jquery.ui.mouse.js
++ *    jquery.ui.draggable.js
++ */(function(a,b){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var b=this.options,c=b.accept;this.isover=0,this.isout=1,this.accept=a.isFunction(c)?c:function(a){return a.is(c)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},a.ui.ddmanager.droppables[b.scope]=a.ui.ddmanager.droppables[b.scope]||[],a.ui.ddmanager.droppables[b.scope].push(this),b.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++)b[c]==this&&b.splice(c,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(b,c){b=="accept"&&(this.accept=a.isFunction(c)?c:function(a){return a.is(c)}),a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),c&&this._trigger("activate",b,this.ui(c))},_deactivate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),c&&this._trigger("deactivate",b,this.ui(c))},_over:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentItem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",b,this.ui(c)))},_out:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentItem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",b,this.ui(c)))},_drop:function(b,c){var d=c||a.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var e=!1;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var b=a.data(this,"droppable");if(b.options.greedy&&!b.options.disabled&&b.options.scope==d.options.scope&&b.accept.call(b.element[0],d.currentItem||d.element)&&a.ui.intersect(d,a.extend(b,{offset:b.element.offset()}),b.options.tolerance)){e=!0;return!1}});if(e)return!1;if(this.accept.call(this.element[0],d.currentItem||d.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",b,this.ui(d));return this.element}return!1},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}}),a.extend(a.ui.droppable,{version:"1.8.18"}),a.ui.intersect=function(b,c,d){if(!c.offset)return!1;var e=(b.positionAbs||b.position.absolute).left,f=e+b.helperProportions.width,g=(b.positionAbs||b.position.absolute).top,h=g+b.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case"fit":return i<=e&&f<=j&&k<=g&&h<=l;case"intersect":return i<e+b.helperProportions.width/2&&f-b.helperProportions.width/2<j&&k<g+b.helperProportions.height/2&&h-b.helperProportions.height/2<l;case"pointer":var m=(b.positionAbs||b.position.absolute).left+(b.clickOffset||b.offset.click).left,n=(b.positionAbs||b.position.absolute).top+(b.clickOffset||b.offset.click).top,o=a.ui.isOver(n,m,k,i,c.proportions.height,c.proportions.width);return o;case"touch":return(g>=k&&g<=l||h>=k&&h<=l||g<k&&h>l)&&(e>=i&&e<=j||f>=i&&f<=j||e<i&&f>j);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();droppablesLoop:for(var g=0;g<d.length;g++){if(d[g].options.disabled||b&&!d[g].accept.call(d[g].element[0],b.currentItem||b.element))continue;for(var h=0;h<f.length;h++)if(f[h]==d[g].element[0]){d[g].proportions.height=0;continue droppablesLoop}d[g].visible=d[g].element.css("display")!="none";if(!d[g].visible)continue;e=="mousedown"&&d[g]._activate.call(d[g],c),d[g].offset=d[g].element.offset(),d[g].proportions={width:d[g].element[0].offsetWidth,height:d[g].element[0].offsetHeight}}},drop:function(b,c){var d=!1;a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){!this.options||(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)&&(d=this._drop.call(this,c)||d),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],b.currentItem||b.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,c)))});return d},dragStart:function(b,c){b.element.parents(":not(body,html)").bind("scroll.droppable",function(){b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)})},drag:function(b,c){b.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(b,c),a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var d=a.ui.intersect(b,this,this.options.tolerance),e=!d&&this.isover==1?"isout":d&&this.isover==0?"isover":null;if(!e)return;var f;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");g.length&&(f=a.data(g[0],"droppable"),f.greedyChild=e=="isover"?1:0)}f&&e=="isover"&&(f.isover=0,f.isout=1,f._out.call(f,c)),this[e]=1,this[e=="isout"?"isover":"isout"]=0,this[e=="isover"?"_over":"_out"].call(this,c),f&&e=="isout"&&(f.isout=0,f.isover=1,f._over.call(f,c))}})},dragStop:function(b,c){b.element.parents(":not(body,html)").unbind("scroll.droppable"),b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)}}})(jQuery);/*
++ * jQuery UI Resizable 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Resizables
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.mouse.js
++ *    jquery.ui.widget.js
++ */(function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a('<div class="ui-resizable-handle '+g+'"></div>');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width));return a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(a.browser.msie&&(!!a(c).is(":hidden")||!!a(c).parents(":hidden").length))continue;e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a('<div style="overflow:hidden;"></div>');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.18"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery);/*
++ * jQuery UI Selectable 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Selectables
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.mouse.js
++ *    jquery.ui.widget.js
++ */(function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy();return this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(!this.options.disabled){var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element});return!1}})}},_mouseDrag:function(b){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!!i&&i.element!=c.element[0]){var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.right<e||i.top>h||i.bottom<f):d.tolerance=="fit"&&(j=i.left>e&&i.right<g&&i.top>f&&i.bottom<h),j?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,c._trigger("selecting",b,{selecting:i.element}))):(i.selecting&&((b.metaKey||b.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),c._trigger("unselecting",b,{unselecting:i.element}))),i.selected&&!b.metaKey&&!b.ctrlKey&&!i.startselected&&(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,c._trigger("unselecting",b,{unselecting:i.element})))}});return!1}},_mouseStop:function(b){var c=this;this.dragged=!1;var d=this.options;a(".ui-unselecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-unselecting"),d.unselecting=!1,d.startselected=!1,c._trigger("unselected",b,{unselected:d.element})}),a(".ui-selecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected"),d.selecting=!1,d.selected=!0,d.startselected=!0,c._trigger("selected",b,{selected:d.element})}),this._trigger("stop",b),this.helper.remove();return!1}}),a.extend(a.ui.selectable,{version:"1.8.18"})})(jQuery);/*
++ * jQuery UI Sortable 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Sortables
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.mouse.js
++ *    jquery.ui.widget.js
++ */(function(a,b){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},destroy:function(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f){e=a(this);return!1}});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}this.currentItem=e,this._removeCurrentsFromItems();return!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b);return!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY<c.scrollSensitivity?this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop+c.scrollSpeed:b.pageY-this.overflowOffset.top<c.scrollSensitivity&&(this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop-c.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-b.pageX<c.scrollSensitivity?this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft+c.scrollSpeed:b.pageX-this.overflowOffset.left<c.scrollSensitivity&&(this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft-c.scrollSpeed)):(b.pageY-a(document).scrollTop()<c.scrollSensitivity?d=a(document).scrollTop(a(document).scrollTop()-c.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<c.scrollSensitivity&&(d=a(document).scrollTop(a(document).scrollTop()+c.scrollSpeed)),b.pageX-a(document).scrollLeft()<c.scrollSensitivity?d=a(document).scrollLeft(a(document).scrollLeft()-c.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<c.scrollSensitivity&&(d=a(document).scrollLeft(a(document).scrollLeft()+c.scrollSpeed))),d!==!1&&a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var e=this.items.length-1;e>=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(b,c){if(!!b){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"=");return d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")});return d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+j<i&&b+k>f&&b+k<g;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?l:f<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<g&&h<d+this.helperProportions.height/2&&e-this.helperProportions.height/2<i},_intersectsWithPointer:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left,b.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();if(!e)return!1;return this.floating?g&&g=="right"||f=="down"?2:1:f&&(f=="down"?2:1)},_intersectsWithSides:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top+b.height/2,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left+b.width/2,b.width),e=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();return this.floating&&f?f=="right"&&d||f=="left"&&!d:e&&(e=="down"&&c||e=="up"&&!c)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a),this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(b){this.items=[],this.containers=[this];var c=this.items,d=this,e=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]],f=this._connectWith();if(f&&this.ready)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i<m;i++){var n=a(l[i]);n.data(this.widgetName+"-item",k),c.push({item:n,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var c=this.items.length-1;c>=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];e||(b.style.visibility="hidden");return b},update:function(a,b){if(!e||!!d.forcePlaceholderSize)b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!!c)if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"];Math.abs(j-h)<f&&(f=Math.abs(j-h),g=this.items[i])}if(!g&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[d],g?this._rearrange(b,g,null,!0):this._rearrange(b,null,this.containers[d].element,!0),this._trigger("change",b,this._uiHash()),this.containers[d]._trigger("change",b,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):c.helper=="clone"?this.currentItem.clone():this.currentItem;d.parents("body").length||a(c.appendTo!="parent"?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(d[0].style.width==""||c.forceHelperSize)&&d.width(this.currentItem.width()),(d[0].style.height==""||c.forceHelperSize)&&d.height(this.currentItem.height());return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)){var c=a(b.containment)[0],d=a(b.containment).offset(),e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var f=b.pageX,g=b.pageY;if(this.originalPosition){this.containment&&(b.pageX-this.offset.click.left<this.containment[0]&&(f=this.containment[0]+this.offset.click.left),b.pageY-this.offset.click.top<this.containment[1]&&(g=this.containment[1]+this.offset.click.top),b.pageX-this.offset.click.left>this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.top<this.containment[1]||h-this.offset.click.top>this.containment[3]?h-this.offset.click.top<this.containment[1]?h+c.grid[1]:h-c.grid[1]:h:h;var i=this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0];f=this.containment?i-this.offset.click.left<this.containment[0]||i-this.offset.click.left>this.containment[2]?i-this.offset.click.left<this.containment[0]?i+c.grid[0]:i-c.grid[0]:i:i}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_rearrange:function(a,b,c,d){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var e=this,f=this.counter;window.setTimeout(function(){f==e.counter&&e.refreshPositions(!d)},0)},_clear:function(b,c){this.reverting=!1;var d=[],e=this;!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var f in this._storedCSS)if(this._storedCSS[f]=="auto"||this._storedCSS[f]=="static")this._storedCSS[f]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&d.push(function(a){this._trigger("receive",a,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c&&d.push(function(a){this._trigger("update",a,this._uiHash())});if(!a.ui.contains(this.element[0],this.currentItem[0])){c||d.push(function(a){this._trigger("remove",a,this._uiHash())});for(var f=this.containers.length-1;f>=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}return!1}c||this._trigger("beforeStop",b,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!c){for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}this.fromOutside=!1;return!0},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(b){var c=b||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:b?b.element:null}}}),a.extend(a.ui.sortable,{version:"1.8.18"})})(jQuery);/*
++ * jQuery UI Accordion 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Accordion
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.widget.js
++ */(function(a,b){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:!0,clearStyle:!1,collapsible:!1,event:"click",fillSpace:!1,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var b=this,c=b.options;b.running=0,b.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"),b.headers=b.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||a(this).removeClass("ui-state-focus")}),b.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(c.navigation){var d=b.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var e=d.closest(".ui-accordion-header");e.length?b.active=e:b.active=d.closest(".ui-accordion-content").prev()}}b.active=b._findActive(b.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top"),b.active.next().addClass("ui-accordion-content-active"),b._createIcons(),b.resize(),b.element.attr("role","tablist"),b.headers.attr("role","tab").bind("keydown.accordion",function(a){return b._keydown(a)}).next().attr("role","tabpanel"),b.headers.not(b.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide(),b.active.length?b.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):b.headers.eq(0).attr("tabIndex",0),a.browser.safari||b.headers.find("a").attr("tabIndex",-1),c.event&&b.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(a){b._clickHandler.call(b,a,this),a.preventDefault()})},_createIcons:function(){var b=this.options;b.icons&&(a("<span></span>").addClass("ui-icon "+b.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(b.icons.header).toggleClass(b.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove(),this.element.removeClass("ui-accordion-icons")},destroy:function(){var b=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"),this.headers.find("a").removeAttr("tabIndex"),this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(b.autoHeight||b.fillHeight)&&c.css("height","");return a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b=="active"&&this.activate(c),b=="icons"&&(this._destroyIcons(),c&&this._createIcons()),b=="disabled"&&this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(b){if(!(this.options.disabled||b.altKey||b.ctrlKey)){var c=a.ui.keyCode,d=this.headers.length,e=this.headers.index(b.target),f=!1;switch(b.keyCode){case c.RIGHT:case c.DOWN:f=this.headers[(e+1)%d];break;case c.LEFT:case c.UP:f=this.headers[(e-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:b.target},b.target),b.preventDefault()}if(f){a(b.target).attr("tabIndex",-1),a(f).attr("tabIndex",0),f.focus();return!1}return!0}},resize:function(){var b=this.options,c;if(b.fillSpace){if(a.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height(),a.browser.msie&&this.element.parent().css("overflow",d),this.headers.each(function(){c-=a(this).outerHeight(!0)}),this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")}else b.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,a(this).height("").height())}).height(c));return this},activate:function(a){this.options.active=a;var b=this._findActive(a)[0];this._clickHandler({target:b},b);return this},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===!1?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,c){var d=this.options;if(!d.disabled){if(!b.target){if(!d.collapsible)return;this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),this.active.next().addClass("ui-accordion-content-active");var e=this.active.next(),f={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:e},g=this.active=a([]);this._toggle(g,e,f);return}var h=a(b.currentTarget||c),i=h[0]===this.active[0];d.active=d.collapsible&&i?!1:this.headers.index(h);if(this.running||!d.collapsible&&i)return;var j=this.active,g=h.next(),e=this.active.next(),f={options:d,newHeader:i&&d.collapsible?a([]):h,oldHeader:this.active,newContent:i&&d.collapsible?a([]):g,oldContent:e},k=this.headers.index(this.active[0])>this.headers.index(h[0]);this.active=i?a([]):h,this._toggle(g,e,f,i,k),j.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),i||(h.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),h.next().addClass("ui-accordion-content-active"));return}},_toggle:function(b,c,d,e,f){var g=this,h=g.options;g.toShow=b,g.toHide=c,g.data=d;var i=function(){if(!!g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data),g.running=c.size()===0?b.size():c.size();if(h.animated){var j={};h.collapsible&&e?j={toShow:a([]),toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace}:j={toShow:b,toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace},h.proxied||(h.proxied=h.animated),h.proxiedDuration||(h.proxiedDuration=h.duration),h.animated=a.isFunction(h.proxied)?h.proxied(j):h.proxied,h.duration=a.isFunction(h.proxiedDuration)?h.proxiedDuration(j):h.proxiedDuration;var k=a.ui.accordion.animations,l=h.duration,m=h.animated;m&&!k[m]&&!a.easing[m]&&(m="slide"),k[m]||(k[m]=function(a){this.slide(a,{easing:m,duration:l||700})}),k[m](j)}else h.collapsible&&e?b.toggle():(c.hide(),b.show()),i(!0);c.prev().attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).blur(),b.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}}),a.extend(a.ui.accordion,{version:"1.8.18",animations:{slide:function(b,c){b=a.extend({easing:"swing",duration:300},b,c);if(!b.toHide.size())b.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},b);else{if(!b.toShow.size()){b.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},b);return}var d=b.toShow.css("overflow"),e=0,f={},g={},h=["height","paddingTop","paddingBottom"],i,j=b.toShow;i=j[0].style.width,j.width(j.parent().width()-parseFloat(j.css("paddingLeft"))-parseFloat(j.css("paddingRight"))-(parseFloat(j.css("borderLeftWidth"))||0)-(parseFloat(j.css("borderRightWidth"))||0)),a.each(h,function(c,d){g[d]="hide";var e=(""+a.css(b.toShow[0],d)).match(/^([\d+-.]+)(.*)$/);f[d]={value:e[1],unit:e[2]||"px"}}),b.toShow.css({height:0,overflow:"hidden"}).show(),b.toHide.filter(":hidden").each(b.complete).end().filter(":visible").animate(g,{step:function(a,c){c.prop=="height"&&(e=c.end-c.start===0?0:(c.now-c.start)/(c.end-c.start)),b.toShow[0].style[c.prop]=e*f[c.prop].value+f[c.prop].unit},duration:b.duration,easing:b.easing,complete:function(){b.autoHeight||b.toShow.css("height",""),b.toShow.css({width:i,overflow:d}),b.complete()}})}},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1e3:200})}}})})(jQuery);/*
++ * jQuery UI Autocomplete 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Autocomplete
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.widget.js
++ *    jquery.ui.position.js
++ */(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!b.options.disabled&&!b.element.propAttr("readOnly")){d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._move("previous",c),c.preventDefault();break;case e.DOWN:b._move("next",c),c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){b.options.disabled||(b.selectedItem=null,b.previous=b.element.val())}).bind("blur.autocomplete",function(a){b.options.disabled||(clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150))}),this._initSource(),this.response=function(){return b._response.apply(b,arguments)},this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,d,e;a.isArray(this.options.source)?(d=this.options.source,this.source=function(b,c){c(a.ui.autocomplete.filter(d,b.term))}):typeof this.options.source=="string"?(e=this.options.source,this.source=function(d,f){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:e,data:d,dataType:"json",context:{autocompleteRequest:++c},success:function(a,b){this.autocompleteRequest===c&&f(a)},error:function(){this.autocompleteRequest===c&&f([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==!1)return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this.response)},_response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close(),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){if(b.length&&b[0].label&&b[0].value)return b;return a.map(b,function(b){if(typeof b=="string")return{label:b,value:b};return a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible"))this.search(null,b);else{if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)}},widget:function(){return this.menu.element}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){!a(c.target).closest(".ui-menu-item a").length||(c.preventDefault(),b.select(c))}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){!this.active||(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active)this.activate(c,this.element.children(b));else{var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))}},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10}),result.length||(result=this.element.children(".ui-menu-item:first")),this.activate(b,result)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);/*
++ * jQuery UI Button 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Button
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.widget.js
++ */(function(a,b){var c,d,e,f,g="ui-button ui-widget ui-state-default ui-corner-all",h="ui-state-hover ui-state-active ",i="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",j=function(){var b=a(this).find(":ui-button");setTimeout(function(){b.button("refresh")},1)},k=function(b){var c=b.name,d=b.form,e=a([]);c&&(d?e=a(d).find("[name='"+c+"']"):e=a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form}));return e};a.widget("ui.button",{options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",j),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.propAttr("disabled"):this.element.propAttr("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var b=this,h=this.options,i=this.type==="checkbox"||this.type==="radio",l="ui-state-hover"+(i?"":" ui-state-active"),m="ui-state-focus";h.label===null&&(h.label=this.buttonElement.html()),this.buttonElement.addClass(g).attr("role","button").bind("mouseenter.button",function(){h.disabled||(a(this).addClass("ui-state-hover"),this===c&&a(this).addClass("ui-state-active"))}).bind("mouseleave.button",function(){h.disabled||a(this).removeClass(l)}).bind("click.button",function(a){h.disabled&&(a.preventDefault(),a.stopImmediatePropagation())}),this.element.bind("focus.button",function(){b.buttonElement.addClass(m)}).bind("blur.button",function(){b.buttonElement.removeClass(m)}),i&&(this.element.bind("change.button",function(){f||b.refresh()}),this.buttonElement.bind("mousedown.button",function(a){h.disabled||(f=!1,d=a.pageX,e=a.pageY)}).bind("mouseup.button",function(a){!h.disabled&&(d!==a.pageX||e!==a.pageY)&&(f=!0)})),this.type==="checkbox"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).toggleClass("ui-state-active"),b.buttonElement.attr("aria-pressed",b.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).addClass("ui-state-active"),b.buttonElement.attr("aria-pressed","true");var c=b.element[0];k(c).not(c).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown.button",function(){if(h.disabled)return!1;a(this).addClass("ui-state-active"),c=this,a(document).one("mouseup",function(){c=null})}).bind("mouseup.button",function(){if(h.disabled)return!1;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(b){if(h.disabled)return!1;(b.keyCode==a.ui.keyCode.SPACE||b.keyCode==a.ui.keyCode.ENTER)&&a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(b){b.keyCode===a.ui.keyCode.SPACE&&a(this).click()})),this._setOption("disabled",h.disabled),this._resetButton()},_determineButtonType:function(){this.element.is(":checkbox")?this.type="checkbox":this.element.is(":radio")?this.type="radio":this.element.is("input")?this.type="input":this.type="button";if(this.type==="checkbox"||this.type==="radio"){var a=this.element.parents().filter(":last"),b="label[for='"+this.element.attr("id")+"']";this.buttonElement=a.find(b),this.buttonElement.length||(a=a.length?a.siblings():this.element.siblings(),this.buttonElement=a.filter(b),this.buttonElement.length||(this.buttonElement=a.find(b))),this.element.addClass("ui-helper-hidden-accessible");var c=this.element.is(":checked");c&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.attr("aria-pressed",c)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(g+" "+h+" "+i).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title"),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);b==="disabled"?c?this.element.propAttr("disabled",!0):this.element.propAttr("disabled",!1):this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b),this.type==="radio"?k(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass(i),c=a("<span></span>",this.element[0].ownerDocument).addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary,f=[];d.primary||d.secondary?(this.options.text&&f.push("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary")),d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>"),d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>"),this.options.text||(f.push(e?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||b.attr("title",c))):f.push("ui-button-text-only"),b.addClass(f.join(" "))}}}),a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c),a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(b?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(b?"ui-corner-left":"ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"),a.Widget.prototype.destroy.call(this)}})})(jQuery);/*
++ * jQuery UI Dialog 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Dialog
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.widget.js
++ *  jquery.ui.button.js
++ *    jquery.ui.draggable.js
++ *    jquery.ui.mouse.js
++ *    jquery.ui.position.js
++ *    jquery.ui.resizable.js
++ */(function(a,b){var c="ui-dialog ui-widget ui-widget-content ui-corner-all ",d={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},e={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},f=a.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};a.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(b){var c=a(this).css(b).offset().top;c<0&&a(this).css("top",b.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.options.title=this.options.title||this.originalTitle;var b=this,d=b.options,e=d.title||"&#160;",f=a.ui.dialog.getTitleId(b.element),g=(b.uiDialog=a("<div></div>")).appendTo(document.body).hide().addClass(c+d.dialogClass).css({zIndex:d.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(c){d.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(a){b.moveToTop(!1,a)}),h=b.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g),i=(b.uiDialogTitlebar=a("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),j=a('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){j.addClass("ui-state-hover")},function(){j.removeClass("ui-state-hover")}).focus(function(){j.addClass("ui-state-focus")}).blur(function(){j.removeClass("ui-state-focus")}).click(function(a){b.close(a);return!1}).appendTo(i),k=(b.uiDialogTitlebarCloseText=a("<span></span>")).addClass("ui-icon ui-icon-closethick").text(d.closeText).appendTo(j),l=a("<span></span>").addClass("ui-dialog-title").attr("id",f).html(e).prependTo(i);a.isFunction(d.beforeclose)&&!a.isFunction(d.beforeClose)&&(d.beforeClose=d.beforeclose),i.find("*").add(i).disableSelection(),d.draggable&&a.fn.draggable&&b._makeDraggable(),d.resizable&&a.fn.resizable&&b._makeResizable(),b._createButtons(d.buttons),b._isOpen=!1,a.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy(),a.uiDialog.hide(),a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),a.uiDialog.remove(),a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(b){var c=this,d,e;if(!1!==c._trigger("beforeClose",b)){c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",b)}):(c.uiDialog.hide(),c._trigger("close",b)),a.ui.dialog.overlay.resize(),c.options.modal&&(d=0,a(".ui-dialog").each(function(){this!==c.uiDialog[0]&&(e=a(this).css("z-index"),isNaN(e)||(d=Math.max(d,e)))}),a.ui.dialog.maxZ=d);return c}},isOpen:function(){return this._isOpen},moveToTop:function(b,c){var d=this,e=d.options,f;if(e.modal&&!b||!e.stack&&!e.modal)return d._trigger("focus",c);e.zIndex>a.ui.dialog.maxZ&&(a.ui.dialog.maxZ=e.zIndex),d.overlay&&(a.ui.dialog.maxZ+=1,d.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)),f={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()},a.ui.dialog.maxZ+=1,d.uiDialog.css("z-index",a.ui.dialog.maxZ),d.element.attr(f),d._trigger("focus",c);return d},open:function(){if(!this._isOpen){var b=this,c=b.options,d=b.uiDialog;b.overlay=c.modal?new a.ui.dialog.overlay(b):null,b._size(),b._position(c.position),d.show(c.show),b.moveToTop(!0),c.modal&&d.bind("keydown.ui-dialog",function(b){if(b.keyCode===a.ui.keyCode.TAB){var c=a(":tabbable",this),d=c.filter(":first"),e=c.filter(":last");if(b.target===e[0]&&!b.shiftKey){d.focus(1);return!1}if(b.target===d[0]&&b.shiftKey){e.focus(1);return!1}}}),a(b.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus(),b._isOpen=!0,b._trigger("open");return b}},_createButtons:function(b){var c=this,d=!1,e=a("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=a("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);c.uiDialog.find(".ui-dialog-buttonpane").remove(),typeof b=="object"&&b!==null&&a.each(b,function(){return!(d=!0)}),d&&(a.each(b,function(b,d){d=a.isFunction(d)?{click:d,text:b}:d;var e=a('<button type="button"></button>').click(function(){d.click.apply(c.element[0],arguments)}).appendTo(g);a.each(d,function(a,b){a!=="click"&&(a in f?e[a](b):e.attr(a,b))}),a.fn.button&&e.button()}),e.appendTo(c.uiDialog))},_makeDraggable:function(){function f(a){return{position:a.position,offset:a.offset}}var b=this,c=b.options,d=a(document),e;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(d,g){e=c.height==="auto"?"auto":a(this).height(),a(this).height(a(this).height()).addClass("ui-dialog-dragging"),b._trigger("dragStart",d,f(g))},drag:function(a,c){b._trigger("drag",a,f(c))},stop:function(g,h){c.position=[h.position.left-d.scrollLeft(),h.position.top-d.scrollTop()],a(this).removeClass("ui-dialog-dragging").height(e),b._trigger("dragStop",g,f(h)),a.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function h(a){return{originalPosition:a.originalPosition,originalSize:a.originalSize,position:a.position,size:a.size}}c=c===b?this.options.resizable:c;var d=this,e=d.options,f=d.uiDialog.css("position"),g=typeof c=="string"?c:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:g,start:function(b,c){a(this).addClass("ui-dialog-resizing"),d._trigger("resizeStart",b,h(c))},resize:function(a,b){d._trigger("resize",a,h(b))},stop:function(b,c){a(this).removeClass("ui-dialog-resizing"),e.height=a(this).height(),e.width=a(this).width(),d._trigger("resizeStop",b,h(c)),a.ui.dialog.overlay.resize()}}).css("position",f).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(b){var c=[],d=[0,0],e;if(b){if(typeof b=="string"||typeof b=="object"&&"0"in b)c=b.split?b.split(" "):[b[0],b[1]],c.length===1&&(c[1]=c[0]),a.each(["left","top"],function(a,b){+c[a]===c[a]&&(d[a]=c[a],c[a]=b)}),b={my:c.join(" "),at:c.join(" "),offset:d.join(" ")};b=a.extend({},a.ui.dialog.prototype.options.position,b)}else b=a.ui.dialog.prototype.options.position;e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},b)),e||this.uiDialog.hide()},_setOptions:function(b){var c=this,f={},g=!1;a.each(b,function(a,b){c._setOption(a,b),a in d&&(g=!0),a in e&&(f[a]=b)}),g&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(b,d){var e=this,f=e.uiDialog;switch(b){case"beforeclose":b="beforeClose";break;case"buttons":e._createButtons(d);break;case"closeText":e.uiDialogTitlebarCloseText.text(""+d);break;case"dialogClass":f.removeClass(e.options.dialogClass).addClass(c+d);break;case"disabled":d?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case"draggable":var g=f.is(":data(draggable)");g&&!d&&f.draggable("destroy"),!g&&d&&e._makeDraggable();break;case"position":e._position(d);break;case"resizable":var h=f.is(":data(resizable)");h&&!d&&f.resizable("destroy"),h&&typeof d=="string"&&f.resizable("option","handles",d),!h&&d!==!1&&e._makeResizable(d);break;case"title":a(".ui-dialog-title",e.uiDialogTitlebar).html(""+(d||"&#160;"))}a.Widget.prototype._setOption.apply(e,arguments)},_size:function(){var b=this.options,c,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),b.minWidth>b.width&&(b.width=b.minWidth),c=this.uiDialog.css({height:"auto",width:b.width}).height(),d=Math.max(0,b.minHeight-c);if(b.height==="auto")if(a.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();var f=this.element.css("height","auto").height();e||this.uiDialog.hide(),this.element.height(Math.max(f,d))}else this.element.height(Math.max(b.height-c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),a.extend(a.ui.dialog,{version:"1.8.18",uuid:0,maxZ:0,getTitleId:function(a){var b=a.attr("id");b||(this.uuid+=1,b=this.uuid);return"ui-dialog-title-"+b},overlay:function(b){this.$el=a.ui.dialog.overlay.create(b)}}),a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(b){this.instances.length===0&&(setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()<a.ui.dialog.overlay.maxZ)return!1})},1),a(document).bind("keydown.dialog-overlay",function(c){b.options.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}),a(window).bind("resize.dialog-overlay",a.ui.dialog.overlay.resize));var c=(this.oldInstances.pop()||a("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});a.fn.bgiframe&&c.bgiframe(),this.instances.push(c);return c},destroy:function(b){var c=a.inArray(b,this.instances);c!=-1&&this.oldInstances.push(this.instances.splice(c,1)[0]),this.instances.length===0&&a([document,window]).unbind(".dialog-overlay"),b.remove();var d=0;a.each(this.instances,function(){d=Math.max(d,this.css("z-index"))}),this.maxZ=d},height:function(){var b,c;if(a.browser.msie&&a.browser.version<7){b=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return b<c?a(window).height()+"px":b+"px"}return a(document).height()+"px"},width:function(){var b,c;if(a.browser.msie){b=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),c=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return b<c?a(window).width()+"px":b+"px"}return a(document).width()+"px"},resize:function(){var b=a([]);a.each(a.ui.dialog.overlay.instances,function(){b=b.add(this)}),b.css({width:0,height:0}).css({width:a.ui.dialog.overlay.width(),height:a.ui.dialog.overlay.height()})}}),a.extend(a.ui.dialog.overlay.prototype,{destroy:function(){a.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);/*
++ * jQuery UI Slider 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Slider
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.mouse.js
++ *    jquery.ui.widget.js
++ */(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;i<g;i+=1)h.push(f);this.handles=e.add(a(h.join("")).appendTo(b.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(a){a.preventDefault()}).hover(function(){d.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){d.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")}),this.handles.each(function(b){a(this).data("index.ui-slider-handle",b)}),this.handles.keydown(function(d){var e=a(this).data("index.ui-slider-handle"),f,g,h,i;if(!b.options.disabled){switch(d.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:d.preventDefault();if(!b._keySliding){b._keySliding=!0,a(this).addClass("ui-state-active"),f=b._start(d,e);if(f===!1)return}}i=b.options.step,b.options.values&&b.options.values.length?g=h=b.values(e):g=h=b.value();switch(d.keyCode){case a.ui.keyCode.HOME:h=b._valueMin();break;case a.ui.keyCode.END:h=b._valueMax();break;case a.ui.keyCode.PAGE_UP:h=b._trimAlignValue(g+(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(g-(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(g===b._valueMax())return;h=b._trimAlignValue(g+i);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(g===b._valueMin())return;h=b._trimAlignValue(g-i)}b._slide(d,e,h)}}).keyup(function(c){var d=a(this).data("index.ui-slider-handle");b._keySliding&&(b._keySliding=!1,b._stop(c,d),b._change(c,d),a(this).removeClass("ui-state-active"))}),this._refreshValue(),this._animateOff=!1},destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"),this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options,d,e,f,g,h,i,j,k,l;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),d={x:b.pageX,y:b.pageY},e=this._normValueFromMouse(d),f=this._valueMax()-this._valueMin()+1,h=this,this.handles.each(function(b){var c=Math.abs(e-h.values(b));f>c&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i);if(j===!1)return!1;this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0;return!0},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);this._slide(a,this._handleIndex,c);return!1},_mouseStop:function(a){this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1;return!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e;return this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values());return this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c<d)&&(c=d),c!==this.values(b)&&(e=this.values(),e[b]=c,f=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e}),d=this.values(b?0:1),f!==!1&&this.values(b,c,!0))):c!==this.value()&&(f=this._trigger("slide",a,{handle:this.handles[b],value:c}),f!==!1&&this.value(c))},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("change",a,c)}},value:function(a){if(arguments.length)this.options.value=this._trimAlignValue(a),this._refreshValue(),this._change(null,0);else return this._value()},values:function(b,c){var d,e,f;if(arguments.length>1)this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f<d.length;f+=1)d[f]=this._trimAlignValue(e[f]),this._change(null,f);this._refreshValue()}},_setOption:function(b,c){var d,e=0;a.isArray(this.options.values)&&(e=this.options.values.length),a.Widget.prototype._setOption.apply(this,arguments);switch(b){case"disabled":c?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.propAttr("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(d=0;d<e;d+=1)this._change(null,d);this._animateOff=!1}},_value:function(){var a=this.options.value;a=this._trimAlignValue(a);return a},_values:function(a){var b,c,d;if(arguments.length){b=this.options.values[a],b=this._trimAlignValue(b);return b}c=this.options.values.slice();for(d=0;d<c.length;d+=1)c[d]=this._trimAlignValue(c[d]);return c},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;Math.abs(c)*2>=b&&(d+=c>0?b:-b);return parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.18"})})(jQuery);/*
++ * jQuery UI Tabs 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Tabs
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ *    jquery.ui.widget.js
++ */(function(a,b){function f(){return++d}function e(){return++c}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash){e.selected=a;return!1}}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1){this.blur();return!1}e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected")){e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur();return!1}if(!f.length){e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur();return!1}}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$="+a+"]")));return a},destroy:function(){var b=this.options;this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie);return this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0]));return this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a])));return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup();return this},url:function(a,b){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.18"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){t=d.selected,e()}:function(a){a.clientX&&c.rotate(null)});a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate);return this}})})(jQuery);/*
++ * jQuery UI Datepicker 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Datepicker
++ *
++ * Depends:
++ *    jquery.ui.core.js
++ */(function($,undefined){function isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\Array\(\)/))}function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function bindHover(a){var b="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return a.bind("mouseout",function(a){var c=$(a.target).closest(b);!c.length||c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);!$.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])&&!!d.length&&(d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),d.addClass("ui-state-hover"),d.hasClass("ui-datepicker-prev")&&d.addClass("ui-datepicker-prev-hover"),d.hasClass("ui-datepicker-next")&&d.addClass("ui-datepicker-next-hover"))})}function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}$.extend($.ui,{datepicker:{version:"1.8.18"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){extendRemove(this._defaults,a||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);c.hasClass(this.markerClassName)||(this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a))},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$('<span class="'+this._appendClass+'">'+c+"</span>"),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$('<button type="button"></button>').addClass(this._triggerClass).html(g==""?f:$("<img/>").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){$.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]);return!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;d<a.length;d++)a[d].length>b&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);c.hasClass(this.markerClassName)||(c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block"))},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+g+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f);return this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return!0;return!1},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(a,b,c){var d=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?$.extend({},$.datepicker._defaults):d?b=="all"?$.extend({},d.settings):this._get(d,b):null;var e=b||{};typeof b=="string"&&(e={},e[b]=c);if(d){this._curInst==d&&this._hideDatepicker();var f=this._getDateDatepicker(a,!0),g=this._getMinMaxDate(d,"min"),h=this._getMinMaxDate(d,"max");extendRemove(d.settings,e),g!==null&&e.dateFormat!==undefined&&e.minDate===undefined&&(d.settings.minDate=this._formatDate(d,g)),h!==null&&e.dateFormat!==undefined&&e.maxDate===undefined&&(d.settings.maxDate=this._formatDate(d,h)),this._attachments($(a),d),this._autoSize(d),this._setDate(d,f),this._updateAlternate(d),this._updateDatepicker(d)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){var b=this._getInst(a);b&&this._updateDatepicker(b)},_setDateDatepicker:function(a,b){var c=this._getInst(a);c&&(this._setDate(c,b),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(a,b){var c=this._getInst(a);c&&!c.inline&&this._setDateFromField(c,b);return c?this._getDate(c):null},_doKeyDown:function(a){var b=$.datepicker._getInst(a.target),c=!0,d=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=!0;if($.datepicker._datepickerShowing)switch(a.keyCode){case 9:$.datepicker._hideDatepicker(),c=!1;break;case 13:var e=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",b.dpDiv);e[0]&&$.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,e[0]);var f=$.datepicker._get(b,"onSelect");if(f){var g=$.datepicker._formatDate(b);f.apply(b.input?b.input[0]:null,[g,b])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&$.datepicker._clearDate(a.target),c=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&$.datepicker._gotoToday(a.target),c=a.ctrlKey||a.metaKey;break;case 37:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?1:-1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,-7,"D"),c=a.ctrlKey||a.metaKey;break;case 39:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?-1:1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,7,"D"),c=a.ctrlKey||a.metaKey;break;default:c=!1}else a.keyCode==36&&a.ctrlKey?$.datepicker._showDatepicker(this):c=!1;c&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(a){var b=$.datepicker._getInst(a.target);if($.datepicker._get(b,"constrainInput")){var c=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),d=String.fromCharCode(a.charCode==undefined?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||d<" "||!c||c.indexOf(d)>-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(a){$.datepicker.log(a)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if(!$.datepicker._isDisabledDatepicker(a)&&$.datepicker._lastInput!=a){var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){e|=$(this).css("position")=="fixed";return!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0);return b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=$.data(a,PROP_NAME))&&this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=this,f=function(){$.datepicker._tidyDialog(b),e._curInst=null};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,f):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,f),c||f(),this._datepickerShowing=!1;var g=this._get(b,"onClose");g&&g.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!!$.datepicker._curInst){var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);this._isDisabledDatepicker(d[0])||(this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e))},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if(!$(d).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(e[0])){var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();b.setMonth(0),b.setDate(1);return Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1<a.length&&a.charAt(s+1)==b;c&&s++;return c},o=function(a){var c=n(a),d=a=="@"?14:a=="!"?20:a=="y"&&c?4:a=="o"?3:2,e=new RegExp("^\\d{1,"+d+"}"),f=b.substring(r).match(e);if(!f)throw"Missing number at position "+r;r+=f[0].length;return parseInt(f[0],10)},p=function(a,c,d){var e=$.map(n(a)?d:c,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),f=-1;$.each(e,function(a,c){var d=c[1];if(b.substr(r,d.length).toLowerCase()==d.toLowerCase()){f=c[0],r+=d.length;return!1}});if(f!=-1)return f+1;throw"Unknown name at position "+r},q=function(){if(b.charAt(r)!=a.charAt(s))throw"Unexpected literal at position "+r;r++},r=0;for(var s=0;s<a.length;s++)if(m)a.charAt(s)=="'"&&!n("'")?m=!1:q();else switch(a.charAt(s)){case"d":k=o("d");break;case"D":p("D",e,f);break;case"o":l=o("o");break;case"m":j=o("m");break;case"M":j=p("M",g,h);break;case"y":i=o("y");break;case"@":var t=new Date(o("@"));i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"!":var t=new Date((o("!")-this._ticksTo1970)/1e4);i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"'":n("'")?q():m=!0;break;default:q()}if(r<b.length)throw"Extra/unparsed characters found in date: "+b.substring(r);i==-1?i=(new Date).getFullYear():i<100&&(i+=(new Date).getFullYear()-(new Date).getFullYear()%100+(i<=d?0:-100));if(l>-1){j=1,k=l;for(;;){var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+1<a.length&&a.charAt(m+1)==b;c&&m++;return c},i=function(a,b,c){var d=""+b;if(h(a))while(d.length<c)d="0"+d;return d},j=function(a,b,c,d){return h(a)?d[b]:c[b]},k="",l=!1;if(b)for(var m=0;m<a.length;m++)if(l)a.charAt(m)=="'"&&!h("'")?l=!1:k+=a.charAt(m);else switch(a.charAt(m)){case"d":k+=i("d",b.getDate(),2);break;case"D":k+=j("D",b.getDay(),d,e);break;case"o":k+=i("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":k+=i("m",b.getMonth()+1,2);break;case"M":k+=j("M",b.getMonth(),f,g);break;case"y":k+=h("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case"@":k+=b.getTime();break;case"!":k+=b.getTime()*1e4+this._ticksTo1970;break;case"'":h("'")?k+="'":l=!0;break;default:k+=a.charAt(m)}return k},_possibleChars:function(a){var b="",c=!1,d=function(b){var c=e+1<a.length&&a.charAt(e+1)==b;c&&e++;return c};for(var e=0;e<a.length;e++)if(c)a.charAt(e)=="'"&&!d("'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case"d":case"m":case"y":case"@":b+="0123456789";break;case"D":case"M":return null;case"'":d("'")?b+="'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),d=a.lastVal=a.input?a.input.val():null,e,f;e=f=this._getDefaultDate(a);var g=this._getFormatConfig(a);try{e=this.parseDate(c,d,g)||f}catch(h){this.log(h),d=b?"":d}a.selectedDay=e.getDate(),a.drawMonth=a.selectedMonth=e.getMonth(),a.drawYear=a.selectedYear=e.getFullYear(),a.currentDay=d?e.getDate():0,a.currentMonth=d?e.getMonth():0,a.currentYear=d?e.getFullYear():0,this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var d=function(a){var b=new Date;b.setDate(b.getDate()+a);return b},e=function(b){try{return $.datepicker.parseDate($.datepicker._get(a,"dateFormat"),b,$.datepicker._getFormatConfig(a))}catch(c){}var d=(b.toLowerCase().match(/^c/)?$.datepicker._getDate(a):null)||new Date,e=d.getFullYear(),f=d.getMonth(),g=d.getDate(),h=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,i=h.exec(b);while(i){switch(i[2]||"d"){case"d":case"D":g+=parseInt(i[1],10);break;case"w":case"W":g+=parseInt(i[1],10)*7;break;case"m":case"M":f+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f));break;case"y":case"Y":e+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f))}i=h.exec(b)}return new Date(e,f,g)},f=b==null||b===""?c:typeof b=="string"?e(b):typeof b=="number"?isNaN(b)?c:d(b):new Date(b.getTime());f=f&&f.toString()=="Invalid Date"?c:f,f&&(f.setHours(0),f.setMinutes(0),f.setSeconds(0),f.setMilliseconds(0));return this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&p<l?l:p;while(this._daylightSavingAdjust(new Date(o,n,1))>p)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', -"+i+", 'M');\""+' title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>":e?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', +"+i+", 'M');\""+' title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":e?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+dpuuid+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>",x=d?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?w:"")+(this._isInRange(a,v)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._gotoToday('#"+a.id+"');\""+">"+u+"</button>":"")+(c?"":w)+"</div>":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L<g[0];L++){var M="";this.maxRows=4;for(var N=0;N<g[1];N++){var O=this._daylightSavingAdjust(new Date(o,n,a.selectedDay)),P=" ui-corner-all",Q="";if(j){Q+='<div class="ui-datepicker-group';if(g[1]>1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+P+'">'+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var R=z?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="<th"+((S+y+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+A[T]+'">'+C[T]+"</span></th>"}Q+=R+"</tr></thead><tbody>";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z<X;Z++){Q+="<tr>";var _=z?'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(Y)+"</td>":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Y<l||m&&Y>m;_+='<td class="'+((S+y+6)%7>=5?" ui-datepicker-week-end":"")+(bb?" ui-datepicker-other-month":"")+(Y.getTime()==O.getTime()&&n==a.selectedMonth&&a._keyEvent||J.getTime()==Y.getTime()&&J.getTime()==O.getTime()?" "+this._dayOverClass:"")+(bc?" "+this._unselectableClass+" ui-state-disabled":"")+(bb&&!G?"":" "+ba[1]+(Y.getTime()==k.getTime()?" "+this._currentClass:"")+(Y.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!bb||G)&&ba[2]?' title="'+ba[2]+'"':"")+(bc?"":' onclick="DP_jQuery_'+dpuuid+".datepicker._selectDay('#"+a.id+"',"+Y.getMonth()+","+Y.getFullYear()+', this);return false;"')+">"+(bb&&!G?"&#xa0;":bc?'<span class="ui-state-default">'+Y.getDate()+"</span>":'<a class="ui-state-default'+(Y.getTime()==b.getTime()?" ui-state-highlight":"")+(Y.getTime()==k.getTime()?" ui-state-active":"")+(bb?" ui-priority-secondary":"")+'" href="#">'+Y.getDate()+"</a>")+"</td>",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+"</tr>"}n++,n>11&&(n=0,o++),Q+="</tbody></table>"+(j?"</div>"+(g[0]>0&&N==g[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),M+=Q}K+=M}K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),
++a._keyEvent=!1;return K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='<div class="ui-datepicker-title">',m="";if(f||!i)m+='<span class="ui-datepicker-month">'+g[b]+"</span>";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" "+">";for(var p=0;p<12;p++)(!n||p>=d.getMonth())&&(!o||p<=e.getMonth())&&(m+='<option value="'+p+'"'+(p==b?' selected="selected"':"")+">"+h[p]+"</option>");m+="</select>"}k||(l+=m+(f||!i||!j?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+='<span class="ui-datepicker-year">'+c+"</span>";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" "+">";for(;t<=u;t++)a.yearshtml+='<option value="'+t+'"'+(t==c?' selected="selected"':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?"&#xa0;":"")+m),l+="</div>";return l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&b<c?c:b;e=d&&e>d?d:e;return e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth()));return this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)})},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.18",window["DP_jQuery_"+dpuuid]=$})(jQuery);/*
++ * jQuery UI Progressbar 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Progressbar
++ *
++ * Depends:
++ *   jquery.ui.core.js
++ *   jquery.ui.widget.js
++ */(function(a,b){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=a("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove(),a.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===b)return this._value();this._setOption("value",a);return this},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;typeof a!="number"&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.18"})})(jQuery);/*
++ * jQuery UI Effects 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/
++ */jQuery.effects||function(a,b){function l(b){if(!b||typeof b=="number"||a.fx.speeds[b])return!0;if(typeof b=="string"&&!a.effects[b])return!0;return!1}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete;return[b,c,d,e]}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function c(b){var c;if(b&&b.constructor==Array&&b.length==3)return b;if(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];if(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))return[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55];if(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];if(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];if(c=/rgba\(0, 0, 0, 0\)/.exec(b))return e.transparent;return e[a.trim(b).toLowerCase()]}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){a.isFunction(d)&&(e=d,d=null);return this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class");a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){return typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.18",save:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){b=="toggle"&&(b=a.is(":hidden")?"show":"hide");return b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0),"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;if(b.parent().is(".ui-effects-wrapper")){c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus();return c}return b},setTransition:function(b,c,d,e){e=e||{},a.each(c,function(a,c){unit=b.cssUnit(c),unit[0]>0&&(e[c]=unit[0]*d+unit[1])});return e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g={options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];if(a.fx.off||!i)return h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)});return i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="show";return this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="hide";return this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);c[1].mode="toggle";return this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])});return d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.easing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b+c;return-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b+c;return d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b+c;return-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b*b+c;return d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){if(b==0)return c;if(b==e)return c+d;if((b/=e/2)<1)return d/2*Math.pow(2,10*(b-1))+c;return d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){if((b/=e/2)<1)return-d/2*(Math.sqrt(1-b*b)-1)+c;return d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;g||(g=e*.3*1.5);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);if(b<1)return-0.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c;return h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)*.5+d+c},easeInBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);if((c/=f/2)<1)return e/2*c*c*(((g*=1.525)+1)*c-g)+d;return e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(b,c,d,e,f){return e-a.easing.easeOutBounce(b,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(b,c,d,e,f){if(c<f/2)return a.easing.easeInBounce(b,c*2,0,e,f)*.5+d;return a.easing.easeOutBounce(b,c*2-f,0,e,f)*.5+e*.5+d}})}(jQuery);/*
++ * jQuery UI Effects Blind 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Blind
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.blind=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=f=="vertical"?"height":"width",i=f=="vertical"?g.height():g.width();e=="show"&&g.css(h,0);var j={};j[h]=e=="show"?i:0,g.animate(j,b.duration,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/*
++ * jQuery UI Effects Bounce 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Bounce
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.bounce=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"up",g=b.options.distance||20,h=b.options.times||5,i=b.duration||250;/show|hide/.test(e)&&d.push("opacity"),a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",g=b.options.distance||(j=="top"?c.outerHeight({margin:!0})/3:c.outerWidth({margin:!0})/3);e=="show"&&c.css("opacity",0).css(j,k=="pos"?-g:g),e=="hide"&&(g=g/(h*2)),e!="hide"&&h--;if(e=="show"){var l={opacity:1};l[j]=(k=="pos"?"+=":"-=")+g,c.animate(l,i/2,b.options.easing),g=g/2,h--}for(var m=0;m<h;m++){var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing),g=e=="hide"?g*2:g/2}if(e=="hide"){var l={opacity:0};l[j]=(k=="pos"?"-=":"+=")+g,c.animate(l,i/2,b.options.easing,function(){c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}else{var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);/*
++ * jQuery UI Effects Clip 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Clip
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.clip=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","height","width"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=c[0].tagName=="IMG"?g:c,i={size:f=="vertical"?"height":"width",position:f=="vertical"?"top":"left"},j=f=="vertical"?h.height():h.width();e=="show"&&(h.css(i.size,0),h.css(i.position,j/2));var k={};k[i.size]=e=="show"?j:0,k[i.position]=e=="show"?0:j/2,h.animate(k,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()}})})}})(jQuery);/*
++ * jQuery UI Effects Drop 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Drop
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.drop=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","opacity"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0})/2:c.outerWidth({margin:!0})/2);e=="show"&&c.css("opacity",0).css(g,h=="pos"?-i:i);var j={opacity:e=="show"?1:0};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
++ * jQuery UI Effects Explode 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Explode
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.explode=function(b){return this.queue(function(){var c=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3,d=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?a(this).is(":visible")?"hide":"show":b.options.mode;var e=a(this).show().css("visibility","hidden"),f=e.offset();f.top-=parseInt(e.css("marginTop"),10)||0,f.left-=parseInt(e.css("marginLeft"),10)||0;var g=e.outerWidth(!0),h=e.outerHeight(!0);for(var i=0;i<c;i++)for(var j=0;j<d;j++)e.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(g/d),top:-i*(h/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/d,height:h/c,left:f.left+j*(g/d)+(b.options.mode=="show"?(j-Math.floor(d/2))*(g/d):0),top:f.top+i*(h/c)+(b.options.mode=="show"?(i-Math.floor(c/2))*(h/c):0),opacity:b.options.mode=="show"?0:1}).animate({left:f.left+j*(g/d)+(b.options.mode=="show"?0:(j-Math.floor(d/2))*(g/d)),top:f.top+i*(h/c)+(b.options.mode=="show"?0:(i-Math.floor(c/2))*(h/c)),opacity:b.options.mode=="show"?1:0},b.duration||500);setTimeout(function(){b.options.mode=="show"?e.css({visibility:"visible"}):e.css({visibility:"visible"}).hide(),b.callback&&b.callback.apply(e[0]),e.dequeue(),a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);/*
++ * jQuery UI Effects Fade 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Fade
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
++ * jQuery UI Effects Fold 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Fold
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.fold=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.size||15,g=!!b.options.horizFirst,h=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(c,d),c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),j=e=="show"!=g,k=j?["width","height"]:["height","width"],l=j?[i.width(),i.height()]:[i.height(),i.width()],m=/([0-9]+)%/.exec(f);m&&(f=parseInt(m[1],10)/100*l[e=="hide"?0:1]),e=="show"&&i.css(g?{height:0,width:f}:{height:f,width:0});var n={},p={};n[k[0]]=e=="show"?l[0]:f,p[k[1]]=e=="show"?l[1]:0,i.animate(n,h,b.options.easing).animate(p,h,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/*
++ * jQuery UI Effects Highlight 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Highlight
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.highlight=function(b){return this.queue(function(){var c=a(this),d=["backgroundImage","backgroundColor","opacity"],e=a.effects.setMode(c,b.options.mode||"show"),f={backgroundColor:c.css("backgroundColor")};e=="hide"&&(f.opacity=0),a.effects.save(c,d),c.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(f,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),e=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
++ * jQuery UI Effects Pulsate 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Pulsate
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.pulsate=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"show");times=(b.options.times||5)*2-1,duration=b.duration?b.duration/2:a.fx.speeds._default/2,isVisible=c.is(":visible"),animateTo=0,isVisible||(c.css("opacity",0).show(),animateTo=1),(d=="hide"&&isVisible||d=="show"&&!isVisible)&&times--;for(var e=0;e<times;e++)c.animate({opacity:animateTo},duration,b.options.easing),animateTo=(animateTo+1)%2;c.animate({opacity:animateTo},duration,b.options.easing,function(){animateTo==0&&c.hide(),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);/*
++ * jQuery UI Effects Scale 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Scale
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.puff=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide"),e=parseInt(b.options.percent,10)||150,f=e/100,g={height:c.height(),width:c.width()};a.extend(b.options,{fade:!0,mode:d,percent:d=="hide"?e:100,from:d=="hide"?g:{height:g.height*f,width:g.width*f}}),c.effect("scale",b.options,b.duration,b.callback),c.dequeue()})},a.effects.scale=function(b){return this.queue(function(){var c=a(this),d=a.extend(!0,{},b.options),e=a.effects.setMode(c,b.options.mode||"effect"),f=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:e=="hide"?0:100),g=b.options.direction||"both",h=b.options.origin;e!="effect"&&(d.origin=h||["middle","center"],d.restore=!0);var i={height:c.height(),width:c.width()};c.from=b.options.from||(e=="show"?{height:0,width:0}:i);var j={y:g!="horizontal"?f/100:1,x:g!="vertical"?f/100:1};c.to={height:i.height*j.y,width:i.width*j.x},b.options.fade&&(e=="show"&&(c.from.opacity=0,c.to.opacity=1),e=="hide"&&(c.from.opacity=1,c.to.opacity=0)),d.from=c.from,d.to=c.to,d.mode=e,c.effect("size",d,b.duration,b.callback),c.dequeue()})},a.effects.size=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","width","height","overflow","opacity"],e=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],g=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],j=a.effects.setMode(c,b.options.mode||"effect"),k=b.options.restore||!1,l=b.options.scale||"both",m=b.options.origin,n={height:c.height(),width:c.width()};c.from=b.options.from||n,c.to=b.options.to||n;if(m){var p=a.effects.getBaseline(m,n);c.from.top=(n.height-c.from.height)*p.y,c.from.left=(n.width-c.from.width)*p.x,c.to.top=(n.height-c.to.height)*p.y,c.to.left=(n.width-c.to.width)*p.x}var q={from:{y:c.from.height/n.height,x:c.from.width/n.width},to:{y:c.to.height/n.height,x:c.to.width/n.width}};if(l=="box"||l=="both")q.from.y!=q.to.y&&(d=d.concat(h),c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(d=d.concat(i),c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to));(l=="content"||l=="both")&&q.from.y!=q.to.y&&(d=d.concat(g),c.from=a.effects.setTransition(c,g,q.from.y,c.from),c.to=a.effects.setTransition(c,g,q.to.y,c.to)),a.effects.save(c,k?d:e),c.show(),a.effects.createWrapper(c),c.css("overflow","hidden").css(c.from);if(l=="content"||l=="both")h=h.concat(["marginTop","marginBottom"]).concat(g),i=i.concat(["marginLeft","marginRight"]),f=d.concat(h).concat(i),c.find("*[width]").each(function(){child=a(this),k&&a.effects.save(child,f);var c={height:child.height(),width:child.width()};child.from={height:c.height*q.from.y,width:c.width*q.from.x},child.to={height:c.height*q.to.y,width:c.width*q.to.x},q.from.y!=q.to.y&&(child.from=a.effects.setTransition(child,h,q.from.y,child.from),child.to=a.effects.setTransition(child,h,q.to.y,child.to)),q.from.x!=q.to.x&&(child.from=a.effects.setTransition(child,i,q.from.x,child.from),child.to=a.effects.setTransition(child,i,q.to.x,child.to)),child.css(child.from),child.animate(child.to,b.duration,b.options.easing,function(){k&&a.effects.restore(child,f)})});c.animate(c.to,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity),j=="hide"&&c.hide(),a.effects.restore(c,k?d:e),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
++ * jQuery UI Effects Shake 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Shake
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.shake=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"left",g=b.options.distance||20,h=b.options.times||3,i=b.duration||b.options.duration||140;a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",l={},m={},n={};l[j]=(k=="pos"?"-=":"+=")+g,m[j]=(k=="pos"?"+=":"-=")+g*2,n[j]=(k=="pos"?"-=":"+=")+g*2,c.animate(l,i,b.options.easing);for(var p=1;p<h;p++)c.animate(m,i,b.options.easing).animate(n,i,b.options.easing);c.animate(m,i,b.options.easing).animate(l,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);/*
++ * jQuery UI Effects Slide 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Slide
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.slide=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"show"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c).css({overflow:"hidden"});var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0}):c.outerWidth({margin:!0}));e=="show"&&c.css(g,h=="pos"?isNaN(i)?"-"+i:-i:i);var j={};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
++ * jQuery UI Effects Transfer 1.8.18
++ *
++ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * http://docs.jquery.com/UI/Effects/Transfer
++ *
++ * Depends:
++ *    jquery.effects.core.js
++ */(function(a,b){a.effects.transfer=function(b){return this.queue(function(){var c=a(this),d=a(b.options.to),e=d.offset(),f={top:e.top,left:e.left,height:d.innerHeight(),width:d.innerWidth()},g=c.offset(),h=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,b.duration,b.options.easing,function(){h.remove(),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);
+\ No newline at end of file
+diff -up cacti-0.8.8a/include/js/jquery/jquery.zoom.js.legal cacti-0.8.8a/include/js/jquery/jquery.zoom.js
+--- cacti-0.8.8a/include/js/jquery/jquery.zoom.js.legal        2013-01-04 15:44:38.045416081 -0500
++++ cacti-0.8.8a/include/js/jquery/jquery.zoom.js      2013-01-04 15:43:12.646377987 -0500
+@@ -0,0 +1,866 @@
++/*
++ +-------------------------------------------------------------------------+
++ | Copyright (C) 2004-2013 The Cacti Group                                 |
++ |                                                                         |
++ | 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.                            |
++ +-------------------------------------------------------------------------+
++ | Cacti: The Complete RRDTool-based Graphing Solution                     |
++ +-------------------------------------------------------------------------+
++ | This code is designed, written, and maintained by the Cacti Group. See  |
++ | about.php and/or the AUTHORS file for specific developer information.   |
++ +-------------------------------------------------------------------------+
++ | http://www.cacti.net/                                                   |
++ +-------------------------------------------------------------------------+
++*/
++
++/* requirements:
++      jQuery 1.7.x or above
++      jQuery UI 1.8.x or above
++      jQuery cookie plugin
++*/
++
++(function($){
++      $.fn.zoom = function(options) {
++
++              /* +++++++++++++++++++++++ Global Variables +++++++++++++++++++++++++ */
++
++              // default values of the different options being offered
++              var defaults = {
++                      inputfieldStartTime     : '',                                           // ID of the input field that contains the start date
++                      inputfieldEndTime       : '',                                           // ID of the input field that contains the end date
++                      submitButton            : 'button_refresh_x',                           // ID of the submit button
++                      cookieName                      : 'cacti_zoom'                                  // default name required for session cookie
++              };
++
++              // define global variables / objects here
++              var zoom = {
++                      // "initiator" is the element that initiates Zoom
++                      initiator: $(this),
++                      // "image" means the image tag and its properties
++                      image: { top:0, left:0, width:0, height:0 },
++                      // "graph" stands for the rrdgraph itself excluding legend, graph title etc.
++                      graph: { timespan:0, secondsPerPixel:0 },
++                      // "box" describes the area in front of the graph whithin jQueryZoom will allow interaction
++                      box: { top:0, left:0, right:0, width:0, height:0 },
++                      // "markers" are selectors useable within the advanced mode
++                      marker: { 1 : { placed:false }, 2 : { placed:false} },
++                      // "custom" holds the local configuration done by the user
++                      custom: {},
++                      // "options" contains the start input parameters
++                      options: $.extend(defaults, options),
++                      // "attributes" holds all values that will describe the selected area
++                      attr: { activeElement:'', start:'none', end:'none', action:'left2right', location: window.location.href.split("?") }
++              };
++
++
++              /* ++++++++++++++++++++++++ Initialization ++++++++++++++++++++++++++ */
++
++              // use a cookie to support local settings
++              zoom.custom =  $.cookie(zoom.options.cookieName) ? unserialize( $.cookie(zoom.options.cookieName) ) : {};
++              if(zoom.custom.zoomMode == undefined) zoom.custom.zoomMode = 'quick';
++              if(zoom.custom.zoomOutPositioning == undefined) zoom.custom.zoomOutPositioning = 'center';
++              if(zoom.custom.zoomOutFactor == undefined) zoom.custom.zoomOutFactor = '2';
++              if(zoom.custom.zoomMarkers == undefined) zoom.custom.zoomMarkers = true;
++              if(zoom.custom.zoomTimestamps == undefined) zoom.custom.zoomTimestamps = 'auto';
++              if(zoom.custom.zoom3rdMouseButton == undefined) zoom.custom.zoom3rdMouseButton = false;
++
++              // create or update a session cookie
++              $.cookie( zoom.options.cookieName, serialize(zoom.custom), {expires: null} );
++
++              // support jQuery's concatination
++              return this.each(function() { zoom_init( $(this) ); });
++
++
++              /* ++++++++++++++++++++ Universal Functions +++++++++++++++++++++++++ */
++
++              /**
++               * checks if an image has been already loaded or if the link is broken
++               **/
++              function isReady(image){
++                      if(typeof image[0].naturalWidth !== undefined && image[0].naturalWidth == 0) {
++                              return false;
++                      }
++                      // support older versions of IE(6-8)
++                      if(!image[0].complete) {
++                              return false;
++                      }
++                      return true;
++              }
++
++              /**
++               * splits off the parameters of a given url
++               **/
++              function getUrlVars(url) {
++                      var parameters = [], name, value;
++
++                      urlBaseAndParameters = url.split("?");
++                      urlBase = urlBaseAndParameters[0];
++                      urlParameters = urlBaseAndParameters[1].split("&");
++                      parameters["urlBase"] = urlBase;
++
++                      for(var i=0; i<urlParameters.length; i++) {
++                              parameter = urlParameters[i].split("=");
++                              parameters[parameter[0].replace(/^graph_/, "")] = $.isNumeric(parameter[1]) ? +parameter[1] : parameter[1];
++                      }
++                      return parameters;
++              }
++
++              /**
++               * transforms an object into a comma separated string of key-value pairs
++               **/
++              function serialize(object){
++                      var str = "";
++                      for(var key in object) { str += (key + '=' + object[key] + ','); }
++                      return str.slice(0, -1);
++              }
++
++              /**
++               * transforms a comma separated string of key-values pairs into an object
++               * including a change of the value type from string to boolean or numeric if reasonable.
++               **/
++              function unserialize(string){
++                      var obj = new Array();
++                      pairs = string.split(',');
++                      for(var i=0; i<pairs.length; i++) {
++                              pair = pairs[i].split("=");
++                              if(pair[1] == "true") {
++                                      pair[1] = true;
++                              }else if(pair[1] == "false") {
++                                      pair[1] = false;
++                              }else if($.isNumeric(pair[1])) {
++                                      pair[1] = +pair[1];
++                              }
++                              obj[pair[0]] = pair[1];
++                      }
++                      return obj;
++              }
++
++              /**
++               * converts a Unix time stamp to a formatted date string
++               **/
++              function unixTime2Date(unixTime){
++                      var date        = new Date(unixTime*1000);
++                      var year        = date.getFullYear();
++                      var month       = ((date.getMonth()+1) < 9 ) ? '0' + (date.getMonth()+1) : date.getMonth()+1;
++                      var day         = (date.getDate() > 9) ? date.getDate() : '0' + date.getDate();
++                      var hours       = (date.getHours() > 9) ? date.getHours() : '0' + date.getHours();
++                      var minutes     = (date.getMinutes() > 9) ? date.getMinutes() : '0' + date.getMinutes();
++                      var seconds     = (date.getSeconds() > 9) ? date.getSeconds() : '0' + date.getSeconds();
++
++                      var formattedTime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
++                      return formattedTime;
++              }
++
++
++              /* +++++++++++++++++++++++ Core Functions +++++++++++++++++++++++++++ */
++
++              /* init zoom */
++              function zoom_init(image) {
++                      var $this = image;
++                      $this.mouseenter(
++                              function(){
++                                      if(zoom.attr.activeElement == '') {
++                                              zoom.attr.activeElement = $(this).attr('id');
++                                              zoomFunction_init($this);
++                                      // focusing another image will trigger a reset of Zoom
++                                      }else if(zoom.attr.activeElement != $(this).attr('id')) {
++                                              zoom.attr.activeElement = $(this).attr('id');
++                                              zoomFunction_init($this);
++                                      }
++                              }
++                      );
++              }
++
++              function zoomFunction_init(image) {
++                      var $this = image;
++                      // exit if image has not been already loaded or if image is not available
++                      if(isReady($this)) {
++                              // update zoom.image object with the attributes of this image
++                              zoom.image.width        = parseInt($this.width());
++                              zoom.image.height       = parseInt($this.height());
++                              zoom.image.top          = parseInt($this.offset().top);
++                              zoom.image.left         = parseInt($this.offset().left);
++                      }else {
++                              return;
++                      }
++
++                      // get all graph parameters and merge results with zoom.graph object
++                      $.extend(zoom.graph, getUrlVars( $this.attr("src") ));
++                      zoom.graph.timespan                     = zoom.graph.end - zoom.graph.start;
++                      zoom.graph.secondsPerPixel      = zoom.graph.timespan/zoom.graph.width;
++
++                      if((zoom.graph.title_font_size <= 0) || (zoom.graph.title_font_size == "")) {
++                              zoom.graph.title_font_size = 10;
++                      }
++
++                      if(zoom.graph.nolegend != undefined) {
++                              zoom.graph.title_font_size      *= .70;
++                      }
++
++                      // update all zoom box attributes. Unfortunately we have to use that best fit way
++                      // to support RRDtool 1.2 and below. With RRDtool 1.3 or higher there would be a
++                      // much more elegant solution available. (see RRDdtool graph option "graphv")
++                      zoom.box.width          = zoom.graph.width;
++                      zoom.box.height         = zoom.graph.height;
++
++                      if(zoom.graph.title_font_size == null) {
++                              zoom.box.top = 32 - 1;
++                      }else {
++                              //default multiplier
++                              var multiplier = 2.4;
++                              // array of "best fit" multipliers
++                              multipliers = new Array("-5", "-2", "0", "1.7", "1.6", "1.7", "1.8", "1.9", "2", "2", "2.1", "2.1", "2.2", "2.2", "2.3", "2.3", "2.3", "2.3", "2.3");
++                              if(multipliers[Math.round(zoom.graph.title_font_size)] != null) {
++                                      multiplier = multipliers[Math.round(zoom.graph.title_font_size)];
++                              }
++                              zoom.box.top = zoom.image.top + parseInt(Math.abs(zoom.graph.title_font_size) * multiplier) + 15;
++                      }
++
++                      zoom.box.bottom = zoom.box.top + zoom.box.height;
++                      zoom.box.right  = zoom.image.left + zoom.image.width - 30;
++                      zoom.box.left   = zoom.box.right - zoom.graph.width;
++
++                      // add all additional HTML elements to the DOM if necessary and register
++                      // the individual events needed. Once added we will only reset
++                      // and reposition these elements.
++
++                      // add the "zoomBox"
++                      if($("#zoom-box").length == 0) {
++                              // Please note: IE does not fire hover or click behaviors on completely transparent elements.
++                              // Use a background color and set opacity to 1% as a workaround.(see CSS file)
++                              $("<div id='zoom-box'></div>").appendTo("body");
++                      }
++
++                      // add the "zoomSelectedArea"
++                      if($("#zoom-area").length == 0) {
++                              $("<div id='zoom-area'></div>").appendTo("body");
++                      }
++
++                      // add two markers for the advanced mode
++                      if($("#zoom-marker-1").length == 0) {
++                              $('<div id="zoom-excluded-area-1" class="zoom-area-excluded"></div>').appendTo("body");
++                              $('<div class="zoom-marker" id="zoom-marker-1"><div class="zoom-marker-arrow-down"></div><div class="zoom-marker-arrow-up"></div></div>').appendTo("body");
++                              $('<div id="zoom-marker-tooltip-1" class="zoom-marker-tooltip"><div id="zoom-marker-tooltip-1-arrow-left" class="zoom-marker-tooltip-arrow-left"><div id="zoom-marker-tooltip-1-arrow-left-inner" class="zoom-marker-tooltip-arrow-left-inner"></div></div><span id="zoom-marker-tooltip-value-1" class="zoom-marker-tooltip-value">-</span><div id="zoom-marker-tooltip-1-arrow-right" class="zoom-marker-tooltip-arrow-right"><div id="zoom-marker-tooltip-1-arrow-right-inner" class="zoom-marker-tooltip-arrow-right-inner"></div></div></div>').appendTo('body');
++                      }
++                      if($("#zoom-marker-2").length == 0) {
++                              $('<div id="zoom-excluded-area-2" class="zoom-area-excluded"></div>').appendTo("body");
++                              $('<div class="zoom-marker" id="zoom-marker-2"><div class="zoom-marker-arrow-down"></div><div class="zoom-marker-arrow-up"></div></div>').appendTo("body");
++                              $('<div id="zoom-marker-tooltip-2" class="zoom-marker-tooltip"><div id="zoom-marker-tooltip-2-arrow-left" class="zoom-marker-tooltip-arrow-left"><div id="zoom-marker-tooltip-1-arrow-left-inner" class="zoom-marker-tooltip-arrow-left-inner"></div></div><span id="zoom-marker-tooltip-value-2" class="zoom-marker-tooltip-value">-</span><div id="zoom-marker-tooltip-2-arrow-right" class="zoom-marker-tooltip-arrow-right"><div id="zoom-marker-tooltip-2-arrow-right-inner" class="zoom-marker-tooltip-arrow-right-inner"></div></div></div>').appendTo('body');
++                      }
++                      zoom.marker[1].placed = false;
++                      zoom.marker[2].placed = false;
++
++                      // add the context (right click) menu
++                      if($("#zoom-menu").length == 0) {
++                              $('<div id="zoom-menu" class="zoom-menu">'
++                                      + '<div class="first_li">'
++                                      +               '<div class="ui-icon ui-icon-zoomin"></div>'
++                                      +       '<span class="zoomContextMenuAction__zoom_in">Zoom In</span>'
++                                      + '</div>'
++                                      + '<div class="first_li">'
++                                      +               '<div class="ui-icon ui-icon-zoomout"></div>'
++                                      +               '<span class="zoomContextMenuAction__zoom_out">Zoom Out (2x)</span>'
++                                      +               '<div class="inner_li advanced_mode">'
++                                      +                       '<span class="zoomContextMenuAction__zoom_out__2">2x</span>'
++                                      +                       '<span class="zoomContextMenuAction__zoom_out__4">4x</span>'
++                                      +                       '<span class="zoomContextMenuAction__zoom_out__8">8x</span>'
++                                      +                       '<span class="zoomContextMenuAction__zoom_out__16">16x</span>'
++                                      +                       '<span class="zoomContextMenuAction__zoom_out__32">32x</span>'
++                                      +               '</div>'
++                                      + '</div>'
++                                      + '<div class="sep_li"></div>'
++                                      + '<div class="first_li">'
++                                      +               '<div class="ui-icon ui-icon-empty"></div><span>Zoom Mode</span>'
++                                      +               '<div class="inner_li">'
++                                      +                       '<span class="zoomContextMenuAction__set_zoomMode__quick">Quick</span>'
++                                      +                       '<span class="zoomContextMenuAction__set_zoomMode__advanced">Advanced</span>'
++                                      +               '</div>'
++                                      + '</div>'
++                                      + '<div class="first_li advanced_mode">'
++                                      +               '<div class="ui-icon ui-icon-wrench"></div><span>Settings</span>'
++                                      +                       '<div class="inner_li">'
++                                      +                               '<div class="sec_li"><span>Markers</span>'
++                                      +                                       '<div class="inner_li advanced_mode">'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomMarkers__on">Enabled</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomMarkers__off">Disabled</span>'
++                                      +                                       '</div>'
++                                      +                               '</div>'
++                                      +                               '<div class="sec_li"><span>Timestamps</span></span>'
++                                      +                                       '<div class="inner_li advanced_mode">'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomTimestamps__on">Always On</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomTimestamps__auto">Auto</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomTimestamps__off">Always Off</span>'
++                                      +                                       '</div>'
++                                      +                               '</div>'
++                                      +                               '<div class="sep_li"></div>'
++                                      +                               '<div class="sec_li"><span>Zoom Out Factor</span>'
++                                      +                                       '<div class="inner_li advanced_mode">'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomOutFactor__2">2x</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomOutFactor__4">4x</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomOutFactor__8">8x</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomOutFactor__16">16x</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomOutFactor__32">32x</span>'
++                                      +                                       '</div>'
++                                      +                               '</div>'
++                                      +                               '<div class="sec_li"><span>Zoom Out Positioning</span>'
++                                      +                                       '<div class="inner_li advanced_mode">'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomOutPositioning__begin">Begin with</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomOutPositioning__center">Center</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoomOutPositioning__end">End with</span>'
++                                      +                                       '</div>'
++                                      +                               '</div>'
++                                      +                               '<div class="sec_li"><span>3rd Mouse Button</span>'
++                                      +                                       '<div class="inner_li advanced_mode">'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoom3rdMouseButton__zoom_in">Zoom in</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoom3rdMouseButton__zoom_out">Zoom out</span>'
++                                      +                                               '<span class="zoomContextMenuAction__set_zoom3rdMouseButton__off">Disabled</span>'
++                                      +                                       '</div>'
++                                      +                               '</div>'
++                                      +                       '</div>'
++                                      +               '</div>'
++                                      + '<div class="sep_li"></div>'
++                                      + '<div class="first_li">'
++                                      +               '<div class="ui-icon ui-icon-close"></div><span class="zoomContextMenuAction__close">Close</span>'
++                                      + '</div>').appendTo('body');
++                      }
++                      zoomElemtents_reset()
++                      zoomContextMenu_init();
++                      zoomAction_init(image);
++              }
++
++              /**
++               * resets all elements of Zoom
++               **/
++              function zoomElemtents_reset() {
++                      zoom.marker = { 1 : { placed:false }, 2 : { placed:false} };
++                      $('div[id^="zoom-"]').not('#zoom-menu').each( function () {
++                              $(this).removeAttr('style');
++                      });
++                      $("#zoom-box").off();
++                      $("#zoom-box").css({ cursor:'crosshair', width:zoom.box.width + 'px', height:zoom.box.height + 'px', top:zoom.box.top+'px', left:zoom.box.left+'px' });
++                      $("#zoom-box").bind('contextmenu', function(e) { zoomContextMenu_show(e); return false;} );
++                      $("#zoom-area").off().css({ top:zoom.box.top+'px', height:zoom.box.height+'px' });
++                      $(".zoom-area-excluded").off();
++                      $(".zoom-area-excluded").bind('contextmenu', function(e) { zoomContextMenu_show(e); return false;} );
++                      $(".zoom-area-excluded").bind('click', function(e) { zoomContextMenu_hide(); return false;} );
++                      $(".zoom-marker-arrow-up").css({ top:(zoom.box.height-6) + 'px' });
++                      $(".zoom-marker-tooltip-value").disableSelection();
++              }
++
++              /*
++              * registers all the different mouse click event handler
++              */
++              function zoomAction_init(image) {
++
++                      if(zoom.custom.zoomMode == 'quick') {
++                              $("#zoom-box").off("mousedown").on("mousedown", function(e) {
++                                      switch(e.which) {
++                                              /* clicking the left mouse button will initiates a zoom-in */
++                                              case 1:
++                                                      zoomContextMenu_hide();
++                                                      // reset the zoom area
++                                                      zoom.attr.start = e.pageX;
++                                                      if(zoom.custom.zoomMode != 'quick') {
++                                                              $("#zoom-marker-1").css({ height:zoom.box.height+'px', top:zoom.box.top+'px', left:zoom.attr.start+'px', display:'block' });
++                                                              $("#zoom-marker-tooltip-1").css({ top:zoom.box.top+'px', left:zoom.attr.start+'px'});
++                                                      }
++                                                      $("#zoom-box").css({ cursor:'e-resize' });
++                                                      $("#zoom-area").css({ width:'0px', left:zoom.attr.start+'px' });
++                                              break;
++                                      }
++                              });
++
++                              /* register the mouse up event */
++                              $("#zoom-area").off("mouseup").on("mouseup", function(e) {
++                                      switch(e.which) {
++                                              /* leaving the left mouse button will execute a zoom in */
++                                              case 1:
++                                                      if(zoom.custom.zoomMode == 'quick' && zoom.attr.start != 'none') {
++                                                              zoomAction_zoom_in();
++                                                      }
++                                              break;
++                                      }
++                              });
++
++                              /* stretch the zoom area in that direction the user moved the mouse pointer */
++                              $("#zoom-box").mousemove( function(e) { zoomAction_draw(e) } );
++
++                              /* stretch the zoom area in that direction the user moved the mouse pointer.
++                                 That is required to get it working faultlessly with Opera, IE and Chrome     */
++                              $("#zoom-area").mousemove( function(e) { zoomAction_draw(e); } );
++
++                              /* moving the mouse pointer quickly will avoid that the mousemove event has enough time to actualize the zoom area */
++                              $("#zoom-box").mouseout( function(e) { zoomAction_draw(e) } );
++
++                      }else{
++                              /* welcome to the advanced mode ;) */
++                              $("#zoom-box").off("mousedown").on("mousedown", function(e) {
++                                      switch(e.which) {
++                                              case 1:
++                                                      /* hide context menu if open */
++                                                      zoomContextMenu_hide();
++
++                                                      /* find out which marker has to be added */
++                                                      if(zoom.marker[1].placed && zoom.marker[2].placed) {
++                                                              zoomAction_zoom_in();
++                                                              return;
++                                                      }else {
++                                                              var marker = zoom.marker[1].placed ? 2 : 1;
++                                                              var secondmarker = (marker == 1) ? 2 : 1;
++                                                      }
++
++                                                      /* select marker */
++                                                      var $this = $("#zoom-marker-" + marker);
++
++                                                      /* place the marker and make it visible */
++                                                      $this.css({ height:zoom.box.height+'px', top:zoom.box.top+'px', left:e.pageX+'px', display:'block' });
++                                                      zoom.marker[marker].placed = true;
++                                                      zoom.marker[marker].left = e.pageX;
++
++                                                      /* place the marker's tooltip, update its value and make it visible if necessary (Setting: "Always On") */
++                                                      zoom.marker[marker].unixtime = parseInt(parseInt(zoom.graph.start) + (e.pageX + 1 - zoom.box.left)*zoom.graph.secondsPerPixel);
++                                                      $("#zoom-marker-tooltip-value-" + marker).html(
++                                                              unixTime2Date(zoom.marker[marker].unixtime).replace(" ", "<br>")
++                                                      );
++                                                      zoom.marker[marker].width = $("#zoom-marker-tooltip-" + marker).width();
++
++                                                      $("#zoom-marker-tooltip-" + marker).css({
++                                                              top: ( (marker == 1) ? zoom.box.top+3 : zoom.box.bottom-30 )+'px',
++                                                              left:( (marker == 1) ? e.pageX - zoom.marker[marker].width : e.pageX )+'px'}
++                                                      );
++
++                                                      if(zoom.custom.zoomTimestamps === true) {
++                                                              $("#zoom-marker-tooltip-" + marker).fadeIn(500);
++                                                      }
++
++                                                      if(e.pageX == $("#zoom-marker-tooltip-" + marker).position().left) {
++                                                              $("#zoom-marker-tooltip-" + marker + "-arrow-right").css({ visibility:'hidden'});
++                                                      }else {
++                                                              $("#zoom-marker-tooltip-" + marker + "-arrow-left").css({ visibility:'hidden'});
++                                                      }
++
++                                                      /* make the excluded areas visible directly in that moment both markers are set */
++                                                      if(zoom.marker[1].placed && zoom.marker[2].placed) {
++                                                              zoom.marker.distance    = zoom.marker[1].left - zoom.marker[2].left;
++
++                                                              $("#zoom-excluded-area-1").css({
++                                                                      height:zoom.box.height+'px',
++                                                                      top:zoom.box.top+'px',
++                                                                      left: (zoom.marker.distance > 0) ? zoom.marker[1].left : zoom.box.left,
++                                                                      width: (zoom.marker.distance > 0) ? zoom.box.right - zoom.marker[1].left : zoom.marker[1].left - zoom.box.left,
++                                                                      display:'block'
++                                                              });
++
++                                                              $("#zoom-excluded-area-2").css({
++                                                                      height:zoom.box.height+'px',
++                                                                      top:zoom.box.top+'px',
++                                                                      left: (zoom.marker.distance < 0) ? zoom.marker[2].left : zoom.box.left,
++                                                                      width: (zoom.marker.distance < 0) ? zoom.box.right - zoom.marker[2].left : zoom.marker[2].left - zoom.box.left,
++                                                                      display:'block'
++                                                              });
++
++                                                              /* reposition both tooltips */
++                                                              $("#zoom-marker-tooltip-1").css({ left: $("#zoom-marker-1").position().left - ( (zoom.marker.distance > 0) ? 0 : $("#zoom-marker-tooltip-1").width() ) + 'px' });
++                                                              $("#zoom-marker-tooltip-1-arrow-left").css({ visibility: (($("#zoom-marker-tooltip-1").position().left < $("#zoom-marker-1").position().left ) ? 'hidden' : 'visible') });
++                                                              $("#zoom-marker-tooltip-1-arrow-right").css({ visibility: (($("#zoom-marker-tooltip-1").position().left < $("#zoom-marker-1").position().left ) ? 'visible' : 'hidden') });
++
++                                                              $("#zoom-marker-tooltip-2").css({ left: $("#zoom-marker-2").position().left - ( (zoom.marker.distance < 0) ? 0 : $("#zoom-marker-tooltip-2").width() ) + 'px' });
++                                                              $("#zoom-marker-tooltip-2-arrow-left").css({ visibility: (($("#zoom-marker-tooltip-2").position().left < $("#zoom-marker-2").position().left ) ? 'hidden' : 'visible') });
++                                                              $("#zoom-marker-tooltip-2-arrow-right").css({ visibility: (($("#zoom-marker-tooltip-2").position().left < $("#zoom-marker-2").position().left ) ? 'visible' : 'hidden') });
++                                                      }
++
++                                                      /* make the marker draggable */
++                                                      $this.draggable({
++                                                              containment:[ zoom.box.left-1, 0 , zoom.box.left+parseInt(zoom.box.width), 0 ],
++                                                              axis: "x",
++                                                              start:
++                                                                      function(event, ui) {
++                                                                              if(zoom.custom.zoomTimestamps == "auto") {
++                                                                                      $(".zoom-marker-tooltip").fadeIn(500);
++                                                                              }
++                                                                      },
++                                                              drag:
++                                                                      function(event, ui) {
++
++                                                                              zoom.marker[marker].left = ui.position["left"];
++
++                                                                              /* update the timestamp shown in tooltip */
++                                                                              zoom.marker[marker].unixtime = parseInt(parseInt(zoom.graph.start) + (zoom.marker[marker].left + 1 - zoom.box.left)*zoom.graph.secondsPerPixel);
++                                                                              $("#zoom-marker-tooltip-value-" + marker).html(
++                                                                                      unixTime2Date(zoom.marker[marker].unixtime).replace(" ", "<br>")
++                                                                              );
++
++                                                                              zoom.marker[marker].width = $("#zoom-marker-tooltip-" + marker).width();
++
++                                                                              /* update the execludedArea if both markers have been placed */
++                                                                              if(zoom.marker[1].placed && zoom.marker[2].placed) {
++                                                                                      zoom.marker.distance = zoom.marker[marker].left - zoom.marker[secondmarker].left;
++
++                                                                                      if( zoom.marker.distance > 0 ) {
++                                                                                              zoom.marker[marker].excludeArea = 'right';
++                                                                                              zoom.marker[secondmarker].excludeArea = 'left';
++                                                                                      }else {
++                                                                                              zoom.marker[marker].excludeArea = 'left';
++                                                                                              zoom.marker[secondmarker].excludeArea = 'right';
++                                                                                      }
++
++                                                                                      /* in that case we have to update the tooltip of both marker */
++                                                                                      $("#zoom-excluded-area-" + marker).css({ left: (zoom.marker.distance > 0) ? zoom.marker[marker].left : zoom.box.left, width: (zoom.marker.distance > 0) ? zoom.box.right - zoom.marker[marker].left : zoom.marker[marker].left - zoom.box.left});
++                                                                                      $("#zoom-marker-tooltip-" + marker).css({ left: zoom.marker[marker].left + ( (zoom.marker[marker].excludeArea == 'right') ? (0) : (-zoom.marker[marker].width) ) });
++                                                                                      $("#zoom-marker-tooltip-" + marker + "-arrow-left").css({ visibility: ( zoom.marker[marker].excludeArea == 'left' ? 'hidden' : 'visible') });
++                                                                                      $("#zoom-marker-tooltip-" + marker + "-arrow-right").css({ visibility: ( zoom.marker[marker].excludeArea == 'left' ? 'visible' : 'hidden') });
++
++                                                                                      $("#zoom-excluded-area-" + secondmarker).css({ left: (zoom.marker.distance > 0) ? zoom.box.left : zoom.marker[secondmarker].left, width: (zoom.marker.distance > 0) ? zoom.marker[secondmarker].left - zoom.box.left : zoom.box.right - zoom.marker[secondmarker].left});
++                                                                                      $("#zoom-marker-tooltip-" + secondmarker ).css({ left: zoom.marker[secondmarker].left + ( (zoom.marker[secondmarker].excludeArea == 'right') ? (0) : (-zoom.marker[secondmarker].width) ) });
++                                                                                      $("#zoom-marker-tooltip-" + secondmarker + "-arrow-left").css({ visibility: ( zoom.marker[secondmarker].excludeArea == 'left' ? 'hidden' : 'visible') });
++                                                                                      $("#zoom-marker-tooltip-" + secondmarker + "-arrow-right").css({ visibility: ( zoom.marker[secondmarker].excludeArea == 'left' ? 'visible' : 'hidden') });
++
++                                                                              }else {
++                                                                                      /* let the tooltip follow its marker */
++                                                                                      $("#zoom-marker-tooltip-" + marker).css({ left: zoom.marker[marker].left -zoom.marker[marker].width });
++                                                                              }
++
++                                                                      },
++                                                              stop:
++                                                                      function(event,ui) {
++                                                                              /* hide all tooltip if we are in auto mode */
++                                                                              if(zoom.custom.zoomTimestamps == "auto") {
++                                                                                      $(".zoom-marker-tooltip").fadeOut(1000);
++                                                                              }
++                                                                      }
++
++                                                      });
++
++                                                      break;
++                                              case 2:
++                                                      if(zoom.custom.zoom3rdMouseButton != false) {
++                                                              /* hide context menu if open */
++                                                              zoomContextMenu_hide();
++                                                              if(zoom.custom.zoom3rdMouseButton == "zoom_in") {
++                                                                      zoomAction_zoom_in();
++                                                              }else {
++                                                                      zoomAction_zoom_out( zoom.custom.zoomOutFactor );
++                                                              }
++                                                      }
++                                                      break;
++                                      }
++                                      return false;
++
++                              });
++
++                      }
++              }
++
++
++              /*
++              * executes a dynamic zoom in
++              */
++              function zoomAction_zoom_in(){
++
++                      /* hide context menu if open */
++                      zoomContextMenu_hide();
++
++                      if(zoom.custom.zoomMode == 'quick') {
++
++                              var newGraphStartTime   = (zoom.attr.action == 'left2right')    ? parseInt(parseInt(zoom.graph.start) + (zoom.attr.start - zoom.box.left)*zoom.graph.secondsPerPixel)
++                                                                                                                                                              : parseInt(parseInt(zoom.graph.start) + (zoom.attr.end - zoom.box.left)*zoom.graph.secondsPerPixel);
++                              var newGraphEndTime     = (zoom.attr.action == 'left2right')    ? parseInt(newGraphStartTime + (zoom.attr.end-zoom.attr.start)*zoom.graph.secondsPerPixel)
++                                                                                                                                                              : parseInt(newGraphStartTime + (zoom.attr.start-zoom.attr.end)*zoom.graph.secondsPerPixel);
++
++                              /* If the user only clicked on a graph then equal end and start date to ensure that we do not propergate NaNs */
++                              if(isNaN(newGraphStartTime) & isNaN(newGraphEndTime)) {
++                                      return;
++                              }else if(isNaN(newGraphStartTime) & !isNaN(newGraphEndTime)) {
++                                      newGraphStartTime = newGraphEndTime;
++                              }else if(!isNaN(newGraphStartTime) & isNaN(newGraphEndTime)){
++                                      newGraphEndTime = newGraphStartTime;
++                              }
++                      }else {
++                              /* advanced mode has other requirements */
++                              /* first of, do nothing if not both marker have been positioned */
++                              if(!zoom.marker[1].placed | !zoom.marker[2].placed) {
++                                      alert("NOTE: In advanced mode both markers have to be positioned first to define the period of time you want to zoom in.");
++                                      return;
++                              }else {
++                                      var newGraphStartTime = zoom.marker[((zoom.marker[1].unixtime > zoom.marker[2].unixtime)? 2 : 1 )].unixtime;
++                                      var newGraphEndTime = zoom.marker[((zoom.marker[1].unixtime > zoom.marker[2].unixtime)? 1 : 2 )].unixtime;
++                              }
++                      }
++
++                      if(zoom.options.inputfieldStartTime != '' & zoom.options.inputfieldEndTime != ''){
++                              /* execute zoom within "tree view" or the "preview view" */
++                              $('#' + zoom.options.inputfieldStartTime).val(unixTime2Date(newGraphStartTime));
++                              $('#' + zoom.options.inputfieldEndTime).val(unixTime2Date(newGraphEndTime));
++
++                              $("input[name='" + zoom.options.submitButton + "']").trigger('click');
++                              return false;
++                      }else {
++                              /* graph view is alread in zoom status */
++                              open(zoom.attr.location[0] + "?action=" + zoom.graph.action + "&local_graph_id=" + zoom.graph.local_graph_id + "&rra_id=" + zoom.graph.rra_id + "&view_type=" + zoom.graph.view_type + "&graph_start=" + newGraphStartTime + "&graph_end=" + newGraphEndTime + "&graph_height=" + zoom.graph.height + "&graph_width=" + zoom.graph.width + "&title_font_size=" + zoom.graph.title_font_size, "_self");
++                      }
++
++              }
++
++
++
++
++              /*
++              * executes a static zoom out (as right click event)
++              */
++              function zoomAction_zoom_out(multiplier){
++
++                      multiplier--;
++                      /* avoid that we can not zoom out anymore if start and end date will be equal */
++                      if(zoom.graph.timespan == 0) {
++                              zoom.graph.timespan = 1;
++                      }
++
++                      if(zoom.custom.zoomMode == 'quick' || !zoom.marker[1].placed || !zoom.marker[2].placed ) {
++                              if(zoom.custom.zoomOutPositioning == 'begin') {
++                                      var newGraphStartTime = parseInt(zoom.graph.start);
++                                      var newGraphEndTime = parseInt(parseInt(zoom.graph.end) + (multiplier * zoom.graph.timespan));
++                              }else if(zoom.custom.zoomOutPositioning == 'end') {
++                                      var newGraphStartTime = parseInt(parseInt(zoom.graph.start) - (multiplier * zoom.graph.timespan));
++                                      var newGraphEndTime = parseInt(zoom.graph.end);
++                              }else {
++                                      // define the new start and end time, so that the selected area will be centered per default
++                                      var newGraphStartTime = parseInt(parseInt(zoom.graph.start) - (0.5 * multiplier * zoom.graph.timespan));
++                                      var newGraphEndTime = parseInt(parseInt(zoom.graph.end) + (0.5 * multiplier * zoom.graph.timespan));
++                              }
++                      }else {
++                              var newGraphStartTime = zoom.marker[((zoom.marker[1].unixtime > zoom.marker[2].unixtime)? 2 : 1 )].unixtime;
++                              var newGraphEndTime = zoom.marker[((zoom.marker[1].unixtime > zoom.marker[2].unixtime)? 1 : 2 )].unixtime;
++                              var selectedTimeSpan = newGraphEndTime - newGraphStartTime;
++
++                              if(zoom.custom.zoomOutPositioning == 'begin') {
++                                      newGraphEndTime = newGraphEndTime + multiplier * selectedTimeSpan;
++                              }else if(zoom.custom.zoomOutPositioning == 'end') {
++                                      newGraphStartTime = newGraphStartTime - multiplier * selectedTimeSpan;
++                              }else {
++                                      newGraphStartTime = newGraphStartTime - 0.5 * multiplier * selectedTimeSpan;
++                                      newGraphEndTime = newGraphEndTime + 0.5 * multiplier * selectedTimeSpan;
++                              }
++                      }
++
++                      if(zoom.options.inputfieldStartTime != '' & zoom.options.inputfieldEndTime != ''){
++                              $('#' + zoom.options.inputfieldStartTime).val(unixTime2Date(newGraphStartTime));
++                              $('#' + zoom.options.inputfieldEndTime).val(unixTime2Date(newGraphEndTime));
++                              $('#' + zoom.options.inputfieldStartTime).closest("form").submit();
++                      }else {
++                              open(zoom.attr.location[0] + "?action=" + zoom.graph.action + "&local_graph_id=" + zoom.graph.local_graph_id + "&rra_id=" + zoom.graph.rra_id + "&view_type=" + zoom.graph.view_type + "&graph_start=" + newGraphStartTime + "&graph_end=" + newGraphEndTime + "&graph_height=" + zoom.graph.height + "&graph_width=" + zoom.graph.width + "&title_font_size=" + zoom.graph.title_font_size, "_self");
++                      }
++              }
++
++
++              /*
++              * updates the css parameters of the zoom area to reflect user's interaction
++              */
++              function zoomAction_draw(event) {
++
++                      if(zoom.attr.start == 'none') { return; }
++
++                      /* mouse has been moved from right to left */
++                      if((event.pageX-zoom.attr.start)<0) {
++                              zoom.attr.action = 'right2left';
++                              zoom.attr.end = (event.pageX < zoom.box.left) ? zoom.box.left : event.pageX;
++                              $("#zoom-area").css({ background:'red', left:(zoom.attr.end+1)+'px', width:Math.abs(zoom.attr.start-zoom.attr.end-1)+'px' });
++                      /* mouse has been moved from left to right*/
++                      }else {
++                              zoom.attr.action = 'left2right';
++                              zoom.attr.end = (event.pageX > zoom.box.right) ? zoom.box.right : event.pageX;
++                              $("#zoom-area").css({ background:'red', left:zoom.attr.start+'px', width:Math.abs(zoom.attr.end-zoom.attr.start-1)+'px' });
++                      }
++                      /* move second marker if necessary */
++                      if(zoom.custom.zoomMode != 'quick') {
++                              $("#zoom-marker-2").css({ left:(zoom.attr.end+1)+'px' });
++                              $("#zoom-marker-tooltip-2").css({ top:zoom.box.top+'px', left:(zoom.attr.end-5)+'px' });
++                      }
++              }
++
++              /**
++               *
++               * @access public
++               * @return void
++               **/
++              function zoomContextMenu_init(){
++
++                      /* sync menu with cookie parameters */
++                      $(".zoomContextMenuAction__set_zoomMode__" + zoom.custom.zoomMode).addClass("ui-state-highlight");
++                      $(".zoomContextMenuAction__set_zoomMarkers__" + ((zoom.custom.zoomMarkers === true) ? "on" : "off") ).addClass("ui-state-highlight");
++                      $(".zoomContextMenuAction__set_zoomTimestamps__" + ((zoom.custom.zoomTimestamps == 'auto') ? "auto" : ((zoom.custom.zoomTimestamps) ? "on" : "off" ))).addClass("ui-state-highlight");
++                      $(".zoomContextMenuAction__set_zoomOutFactor__" + zoom.custom.zoomOutFactor).addClass("ui-state-highlight");
++                      $(".zoomContextMenuAction__set_zoomOutPositioning__" + zoom.custom.zoomOutPositioning).addClass("ui-state-highlight");
++                      $(".zoomContextMenuAction__set_zoom3rdMouseButton__" + ((zoom.custom.zoom3rdMouseButton === false) ? "off" : zoom.custom.zoom3rdMouseButton) ).addClass("ui-state-highlight");
++
++                      if(zoom.custom.zoomMode == "quick") {
++                              $("#zoom-menu > .advanced_mode").hide();
++                      }else {
++                              $(".zoomContextMenuAction__zoom_out").text("Zoom Out (" + zoom.custom.zoomOutFactor + "x)");
++                      }
++
++                      /* init click on events */
++                      $('[class*=zoomContextMenuAction__]').off().on('click', function() {
++                              var zoomContextMenuAction = false;
++                              var zoomContextMenuActionValue = false;
++                              var classList = $(this).attr('class').trim().split(/\s+/);
++
++                              $.each( classList, function(index, item){
++                                      if( item.search("zoomContextMenuAction__") != -1) {
++                                              zoomContextMenuActionList = item.replace("zoomContextMenuAction__", "").split("__");
++                                              zoomContextMenuAction = zoomContextMenuActionList[0];
++                                              if(zoomContextMenuActionList[1] == 'undefined' || zoomContextMenuActionList[1] == 'off') {
++                                                      zoomContextMenuActionValue = false;
++                                              }else if(zoomContextMenuActionList[1] == 'on') {
++                                                      zoomContextMenuActionValue = true;
++                                              }else {
++                                                      zoomContextMenuActionValue = zoomContextMenuActionList[1];
++                                              }
++                                              return( false );
++                                      }
++                              });
++
++                              if( zoomContextMenuAction ) {
++                                      if( zoomContextMenuAction.substring(0,8) == "set_zoom") {
++                                              zoomContextMenuAction_set( zoomContextMenuAction.replace("set_zoom", "").toLowerCase(), zoomContextMenuActionValue);
++                                      }else {
++                                              zoomContextMenuAction_do( zoomContextMenuAction, zoomContextMenuActionValue);
++                                      }
++                              }
++                      });
++
++                      /* init hover events */
++                      $(".first_li , .sec_li, .inner_li span").hover(
++                              function () {
++                                      $(this).css({backgroundColor : '#E0EDFE' , cursor : 'pointer'});
++                                      if ( $(this).children().size() >0 )
++                                              if(zoom.custom.zoomMode == "quick") {
++                                                      $(this).children('.inner_li:not(.advanced_mode)').show();
++                                              }else {
++                                                      $(this).children('.inner_li').show();
++                                              }
++                                      },
++                              function () {
++                                      $(this).css('background-color' , '#fff' );
++                                      $(this).children('.inner_li').hide();
++                              }
++                      );
++              };
++
++              /**
++               *
++               * @access public
++               * @return void
++               **/
++              function zoomContextMenuAction_set(object, value){
++                      switch(object) {
++                              case "mode":
++                                      if( zoom.custom.zoomMode != value) {
++                                              zoom.custom.zoomMode = value;
++                                              $('[class*=zoomContextMenuAction__set_zoomMode__]').toggleClass("ui-state-highlight");
++
++                                              if(value == "quick") {
++                                                      // reset menu
++                                                      $("#zoom-menu > .advanced_mode").hide();
++                                                      $(".zoomContextMenuAction__zoom_out").text("Zoom Out (2x)");
++
++                                                      zoom.custom.zoomMode                    = 'quick';
++                                                      $.cookie( zoom.options.cookieName, serialize(zoom.custom));
++                                              }else {
++                                                      // switch to advanced mode
++                                                      $("#zoom-menu > .advanced_mode").show();
++                                                      $(".zoomContextMenuAction__zoom_out").text("Zoom Out (" +  + zoom.custom.zoomOutFactor + "x)");
++
++                                                      zoom.custom.zoomMode                    = 'advanced';
++                                                      $.cookie( zoom.options.cookieName, serialize(zoom.custom));
++                                              }
++                                              zoomElemtents_reset();
++                                              zoomAction_init(zoom.initiator);
++
++                                      }
++                                      break;
++                              case "markers":
++                                      if( zoom.custom.zoomMarkers != value) {
++                                              zoom.custom.zoomMarkers = value;
++                                              $.cookie( zoom.options.cookieName, serialize(zoom.custom));
++                                              $('[class*=zoomContextMenuAction__set_zoomMarkers__]').toggleClass('ui-state-highlight');
++                                      }
++                                      break;
++                              case "timestamps":
++                                      if( zoom.custom.zoomTimestamps != value) {
++                                              zoom.custom.zoomTimestamps = value;
++                                              $.cookie( zoom.options.cookieName, serialize(zoom.custom));
++                                              $('[class*=zoomContextMenuAction__set_zoomTimestamps__]').removeClass('ui-state-highlight');
++                                              $('.zoomContextMenuAction__set_zoomTimestamps__' + ((zoom.custom.zoomTimestamps == 'auto') ? "auto" : ((zoom.custom.zoomTimestamps) ? "on" : "off" ))).addClass('ui-state-highlight');
++
++                                              /* make them visible only for mode "Always On" */
++                                              if(zoom.custom.zoomTimestamps === true) {
++                                                      $('.zoom-marker-tooltip').fadeIn(500);
++                                              }else {
++                                                      $('.zoom-marker-tooltip').fadeOut(500);
++                                              }
++                                      }
++                                      break;
++                              case "outfactor":
++                                      if( zoom.custom.zoomOutFactor != value) {
++                                              zoom.custom.zoomOutFactor = value;
++                                              $.cookie( zoom.options.cookieName, serialize(zoom.custom));
++                                              $('[class*=zoomContextMenuAction__set_zoomOutFactor__]').removeClass('ui-state-highlight');
++                                              $('.zoomContextMenuAction__set_zoomOutFactor__' + value).addClass('ui-state-highlight');
++                                              $('.zoomContextMenuAction__zoom_out').text('Zoom Out (' + value + 'x)');
++                                      }
++                                      break;
++                              case "outpositioning":
++                                      if( zoom.custom.zoomOutPositioning != value) {
++                                              zoom.custom.zoomOutPositioning = value;
++                                              $.cookie( zoom.options.cookieName, serialize(zoom.custom));
++                                              $('[class*=zoomContextMenuAction__set_zoomOutPositioning__]').removeClass('ui-state-highlight');
++                                              $('.zoomContextMenuAction__set_zoomOutPositioning__' + value).addClass('ui-state-highlight');
++                                      }
++                                      break;
++                              case "3rdmousebutton":
++                                      if( zoom.custom.zoom3rdMouseButton != value) {
++                                              zoom.custom.zoom3rdMouseButton = value;
++                                              $.cookie( zoom.options.cookieName, serialize(zoom.custom));
++                                              $('[class*=zoomContextMenuAction__set_zoom3rdMouseButton__]').removeClass('ui-state-highlight');
++                                              $('.zoomContextMenuAction__set_zoom3rdMouseButton__' + ((value === false) ? "off" : value)).addClass('ui-state-highlight');
++                                      }
++                                      break;
++                      }
++              }
++
++              function zoomContextMenuAction_do(action, value){
++                      switch(action) {
++                              case "close":
++                                      zoomContextMenu_hide();
++                                      break;
++                              case "zoom_out":
++                                      if(value == undefined) {
++                                              value = (zoom.custom.zoomMode != "quick") ? zoom.custom.zoomOutFactor : 2;
++                                      }
++                                      zoomAction_zoom_out(value);
++                                      break;
++                              case "zoom_in":
++                                      zoomAction_zoom_in();
++                                      break;
++                      }
++              }
++
++              function zoomContextMenu_show(e){
++                      $("#zoom-menu").css({ left: e.pageX, top: e.pageY, zIndex: '101' }).show();
++              };
++
++              function zoomContextMenu_hide(){
++                      $('#zoom-menu').hide();
++              }
++
++      };
++
++})(jQuery);
+\ No newline at end of file
+diff -up cacti-0.8.8a/include/js/jquery/themes/default/d.gif.legal cacti-0.8.8a/include/js/jquery/themes/default/d.gif
+Binary files cacti-0.8.8a/include/js/jquery/themes/default/d.gif.legal and cacti-0.8.8a/include/js/jquery/themes/default/d.gif differ
+diff -up cacti-0.8.8a/include/js/jquery/themes/default/d.png.legal cacti-0.8.8a/include/js/jquery/themes/default/d.png
+Binary files cacti-0.8.8a/include/js/jquery/themes/default/d.png.legal and cacti-0.8.8a/include/js/jquery/themes/default/d.png differ
+diff -up cacti-0.8.8a/include/js/jquery/themes/default/style.css.legal cacti-0.8.8a/include/js/jquery/themes/default/style.css
+--- cacti-0.8.8a/include/js/jquery/themes/default/style.css.legal      2013-01-04 15:44:49.350420872 -0500
++++ cacti-0.8.8a/include/js/jquery/themes/default/style.css    2013-01-04 15:44:08.391403304 -0500
+@@ -0,0 +1,74 @@
++/*
++ * jsTree default theme 1.0
++ * Supported features: dots/no-dots, icons/no-icons, focused, loading
++ * Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search
++ */
++
++.jstree-default li, 
++.jstree-default ins { background-image:url("d.png"); background-repeat:no-repeat; background-color:transparent; }
++.jstree-default li { background-position:-90px 0; background-repeat:repeat-y; }
++.jstree-default li.jstree-last { background:transparent; }
++.jstree-default .jstree-open > ins { background-position:-72px 0; }
++.jstree-default .jstree-closed > ins { background-position:-54px 0; }
++.jstree-default .jstree-leaf > ins { background-position:-36px 0; }
++
++.jstree-default .jstree-hovered { background:#e7f4f9; border:1px solid #d8f0fa; padding:0 2px 0 1px; }
++.jstree-default .jstree-clicked { background:#beebff; border:1px solid #99defd; padding:0 2px 0 1px; }
++.jstree-default a .jstree-icon { background-position:-56px -19px; }
++.jstree-default a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; }
++
++.jstree-default.jstree-focused { background:#ffffee; }
++
++.jstree-default .jstree-no-dots li, 
++.jstree-default .jstree-no-dots .jstree-leaf > ins { background:transparent; }
++.jstree-default .jstree-no-dots .jstree-open > ins { background-position:-18px 0; }
++.jstree-default .jstree-no-dots .jstree-closed > ins { background-position:0 0; }
++
++.jstree-default .jstree-no-icons a .jstree-icon { display:none; }
++
++.jstree-default .jstree-search { font-style:italic; }
++
++.jstree-default .jstree-no-icons .jstree-checkbox { display:inline-block; }
++.jstree-default .jstree-no-checkboxes .jstree-checkbox { display:none !important; }
++.jstree-default .jstree-checked > a > .jstree-checkbox { background-position:-38px -19px; }
++.jstree-default .jstree-unchecked > a > .jstree-checkbox { background-position:-2px -19px; }
++.jstree-default .jstree-undetermined > a > .jstree-checkbox { background-position:-20px -19px; }
++.jstree-default .jstree-checked > a > .jstree-checkbox:hover { background-position:-38px -37px; }
++.jstree-default .jstree-unchecked > a > .jstree-checkbox:hover { background-position:-2px -37px; }
++.jstree-default .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-20px -37px; }
++
++#vakata-dragged.jstree-default ins { background:transparent !important; }
++#vakata-dragged.jstree-default .jstree-ok { background:url("d.png") -2px -53px no-repeat !important; }
++#vakata-dragged.jstree-default .jstree-invalid { background:url("d.png") -18px -53px no-repeat !important; }
++#jstree-marker.jstree-default { background:url("d.png") -41px -57px no-repeat !important; text-indent:-100px; }
++
++.jstree-default a.jstree-search { color:aqua; }
++.jstree-default .jstree-locked a { color:silver; cursor:default; }
++
++#vakata-contextmenu.jstree-default-context, 
++#vakata-contextmenu.jstree-default-context li ul { background:#f0f0f0; border:1px solid #979797; -moz-box-shadow: 1px 1px 2px #999; -webkit-box-shadow: 1px 1px 2px #999; box-shadow: 1px 1px 2px #999; }
++#vakata-contextmenu.jstree-default-context li { }
++#vakata-contextmenu.jstree-default-context a { color:black; }
++#vakata-contextmenu.jstree-default-context a:hover, 
++#vakata-contextmenu.jstree-default-context .vakata-hover > a { padding:0 5px; background:#e8eff7; border:1px solid #aecff7; color:black; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
++#vakata-contextmenu.jstree-default-context li.jstree-contextmenu-disabled a, 
++#vakata-contextmenu.jstree-default-context li.jstree-contextmenu-disabled a:hover { color:silver; background:transparent; border:0; padding:1px 4px; }
++#vakata-contextmenu.jstree-default-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; }
++#vakata-contextmenu.jstree-default-context li ul { margin-left:-4px; }
++
++/* IE6 BEGIN */
++.jstree-default li, 
++.jstree-default ins,
++#vakata-dragged.jstree-default .jstree-invalid, 
++#vakata-dragged.jstree-default .jstree-ok, 
++#jstree-marker.jstree-default { _background-image:url("d.gif"); }
++.jstree-default .jstree-open ins { _background-position:-72px 0; }
++.jstree-default .jstree-closed ins { _background-position:-54px 0; }
++.jstree-default .jstree-leaf ins { _background-position:-36px 0; }
++.jstree-default a ins.jstree-icon { _background-position:-56px -19px; }
++#vakata-contextmenu.jstree-default-context ins { _display:none; }
++#vakata-contextmenu.jstree-default-context li { _zoom:1; }
++.jstree-default .jstree-undetermined a .jstree-checkbox { _background-position:-20px -19px; }
++.jstree-default .jstree-checked a .jstree-checkbox { _background-position:-38px -19px; }
++.jstree-default .jstree-unchecked a .jstree-checkbox { _background-position:-2px -19px; }
++/* IE6 END */
+\ No newline at end of file
+diff -up cacti-0.8.8a/include/js/jquery/themes/default/throbber.gif.legal cacti-0.8.8a/include/js/jquery/themes/default/throbber.gif
+Binary files cacti-0.8.8a/include/js/jquery/themes/default/throbber.gif.legal and cacti-0.8.8a/include/js/jquery/themes/default/throbber.gif differ
diff --git a/src/patches/cacti/cacti-0.8.8a-replace_treeview_by_jquery.jstree.patch b/src/patches/cacti/cacti-0.8.8a-replace_treeview_by_jquery.jstree.patch
new file mode 100644 (file)
index 0000000..b0b54fe
--- /dev/null
@@ -0,0 +1,607 @@
+Description: treeview has a license issue, cacti upstream is going to replace it
+ with functionality from jquery.jstree.
+ .
+ This patch implements the changes needed for an upstream layout where the
+ necessary code is in cacti/include/js/jquery/ but the code in that path is
+ not included in this patch.
+ .
+ The necessary jquery scripts and theme info can come from cacti upstream and from
+ debian packages (libjs-jquery and libjs-jquery-cookie) The version used when
+ creating this patch can be found here:
+ http://svn.cacti.net/viewvc/cacti/branches/0.8.9/include/js/jquery/jquery.js?pathrev=7324
+ http://svn.cacti.net/viewvc/cacti/branches/0.8.9/include/js/jquery/jquery.jstree.js?pathrev=7324
+ http://svn.cacti.net/viewvc/cacti/branches/main/include/js/jquery/themes/default/?pathrev=7324
+ http://anonscm.debian.org/gitweb/?p=pkg-javascript/jquery-goodies.git;a=blob;f=cookie/jquery.cookie.js;hb=c50e1a2d599cb48893e8d77470e71e83e44dfdb5
+ .
+ This patch does NOT implement the changes needed for the Debian package of
+ cacti.
+ .
+ This patch was updated with the patch from Jan Zalesak <zalesak@jaw.cz> in
+ http://bugs.debian.org/702690 which was further improved to also cover
+ lib/graph_export.php and to keep tag alignment consistent. 
+Bug: http://bugs.cacti.net/view.php?id=2228
+Bug-Debian: http://bugs.debian.org/679980
+Author: Paul Gevers <elbrus@debian.org>
+Date: Sun, 31 Mar 2013 11:59:05 +0200
+
+--- a/include/top_graph_header.php
++++ b/include/top_graph_header.php
+@@ -84,8 +84,9 @@
+       <link href="<?php echo $config['url_path']; ?>include/main.css" type="text/css" rel="stylesheet">
+       <link href="<?php echo $config['url_path']; ?>images/favicon.ico" rel="shortcut icon"/>
+       <script type="text/javascript" src="<?php echo $config['url_path']; ?>include/layout.js"></script>
+-      <script type="text/javascript" src="<?php echo $config['url_path']; ?>include/treeview/ua.js"></script>
+-      <script type="text/javascript" src="<?php echo $config['url_path']; ?>include/treeview/ftiens4.js"></script>
++      <script type="text/javascript" src="<?php echo $config['url_path']; ?>include/js/jquery/jquery.js" language="javascript"></script>
++      <script type="text/javascript" src="<?php echo $config['url_path']; ?>include/js/jquery/jquery.cookie.js" language="javascript"></script>
++      <script type="text/javascript" src="<?php echo $config['url_path']; ?>include/js/jquery/jquery.jstree.js"></script>
+       <script type="text/javascript" src="<?php echo $config['url_path']; ?>include/jscalendar/calendar.js"></script>
+       <script type="text/javascript" src="<?php echo $config['url_path']; ?>include/jscalendar/lang/calendar-en.js"></script>
+       <script type="text/javascript" src="<?php echo $config['url_path']; ?>include/jscalendar/calendar-setup.js"></script>
+@@ -178,7 +179,6 @@
+               <td valign="top" style="padding: 5px; border-right: #aaaaaa 1px solid;background-repeat:repeat-y;background-color:#efefef;" bgcolor='#efefef' width='<?php print htmlspecialchars(read_graph_config_option("default_dual_pane_width"));?>' class='noprint'>
+                       <table border=0 cellpadding=0 cellspacing=0><tr><td><a style="font-size:7pt;text-decoration:none;color:silver" href="http://www.treemenu.net/" target=_blank></a></td></tr></table>
+                       <?php grow_dhtml_trees(); ?>
+-                      <script type="text/javascript">initializeDocument();</script>
+                       <?php if (isset($_GET["select_first"])) { ?>
+                       <script type="text/javascript">
+--- a/lib/graph_export.php
++++ b/lib/graph_export.php
+@@ -1365,15 +1365,6 @@
+       /* create the treeview representation for the html data */
+       grow_dhtml_trees_export($fp,$tree_id);
+-      fwrite($fp,"<script type='text/javascript'>initializeDocument();</script>\n");
+-      fwrite($fp,"<script type='text/javascript'>\n");
+-      fwrite($fp,"var obj;\n");
+-      fwrite($fp,"obj = findObj(1);\n");
+-      fwrite($fp,"if (!obj.isOpen) {\n");
+-      fwrite($fp,"clickOnNode(1);\n");
+-      fwrite($fp,"}\n");
+-      fwrite($fp,"clickOnLink(2,'','main');\n");
+-      fwrite($fp,"</script>\n");
+       fwrite($fp,"</td>\n");
+       fwrite($fp,"<td valign='top'>\n");
+ }
+@@ -1383,16 +1374,7 @@
+       include_once($config["library_path"] . "/tree.php");
+       include_once($config["library_path"] . "/data_query.php");
+-      fwrite($fp, "<script type='text/javascript'>\n");
+-      fwrite($fp, "<!--
+-                      USETEXTLINKS = 1
+-                      STARTALLOPEN = 0
+-                      USEFRAMES = 0
+-                      USEICONS = 0
+-                      WRAPTEXT = 1
+-                      ICONPATH = 'treeview/'
+-                      PERSERVESTATE = 1
+-                      HIGHLIGHT = 1\n");
++      fwrite($fp, "<div id=\"jtree\">\n");
+       if (read_config_option("export_tree_isolation") == "off") {
+               $dhtml_tree_base = 0;
+@@ -1413,9 +1395,34 @@
+               }
+       }
+-      fwrite($fp,"foldersTree.treeID = \"t2\"
+-                      //-->\n
+-                      </script>\n");
++      fwrite($fp, "</div>\n");
++      fwrite($fp, "<script type=\"text/javascript\">\n");
++      fwrite($fp, "$(function () {
++      $(\"#jtree\")
++              .jstree({
++                        \"plugins\" : [\"ui\",\"themes\",\"html_data\",\"cookies\"],
++                      \"themes\" : {\"icons\" : false,
++                              \"url\" : \"./js/style.css\"},
++                      \"cookies\" : {
++                              \"save_opened\" : \"Cacti_jstree_open\",
++                              \"save_selected\" : \"Cacti_jstree_select\"
++                              }
++
++                })
++
++                // Make sure that the nodes are actually used as links
++                // We need reselect to prevent endless loops
++                // https://groups.google.com/d/topic/jstree/j6XNq9hQdeA/discussion
++                .bind(\"reselect.jstree\", function (e, data) {
++                      data.inst.get_container().bind(\"select_node.jstree\", function (e, data) {
++                           // data.rstl.obj is the object that was selected.
++                           document.location.href = data.rslt.obj.children(\"a\").attr(\"href\");
++                       });
++                });
++
++});\n");
++      fwrite($fp, "</script>\n");
++
+ }
+ /* get_graph_tree_array_export - returns a list of graph trees taking permissions into account if
+@@ -1478,8 +1485,7 @@
+       $dhtml_tree = array();
+       $dhtml_tree[0] = $start;
+       $dhtml_tree[1] = read_graph_config_option("expand_hosts");
+-      $dhtml_tree[2] = "foldersTree = gFld(\"\", \"\")\n";
+-      $i = 2;
++      $i = 1;
+       $tree_list = get_graph_tree_array_export();
+@@ -1499,7 +1505,6 @@
+               if (((read_config_option("export_tree_isolation") == "on") && ($tree_id == $tree["id"])) ||
+                       (read_config_option("export_tree_isolation") == "off")) {
+-                      $i++;
+                       $hier_sql = "SELECT DISTINCT
+                                       graph_tree_items.id,
+@@ -1522,19 +1527,53 @@
+                       $dhtml_tree_id = 0;
+                       if (sizeof($hierarchy) > 0) {
++                              $last_tier = 1;
++                              $openli = false;
++                              $lasthost = false;
++                              $opentree = false;
+                               foreach ($hierarchy as $leaf) {
+                                       if ($dhtml_tree_id <> $tree["id"]) {
+-                                              $dhtml_tree[$i] = "ou0 = insFld(foldersTree, gFld(\"" . get_tree_name($tree["id"]) . "\", \"" . clean_up_export_name(get_tree_name($tree["id"])) . "_leaf.html\"))\n";
++                                              if ($opentree) {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t</ul>\n\t\t</li>\n\t</ul>\n";
++                                              }
++                                              $i++;
++                                              $clean_id = clean_up_export_name(get_tree_name($tree["id"]));
++                                              $dhtml_tree[$i] = "\t<ul>\n\t\t<li id=\"" . $clean_id . "\"><a href=\"" . $clean_id . "_leaf.html\">" . get_tree_name($tree["id"]) . "</a>\n\t\t\t<ul>\n";
++                                              $opentree = true;
+                                       }
+                                       $dhtml_tree_id = $tree["id"];
+-                                      $i++;
+                                       $tier = tree_tier($leaf["order_key"]);
+                                       if ($leaf["host_id"] > 0) {  //It's a host
+-                                              $dhtml_tree[$i] = "ou" . ($tier) . " = insFld(ou" . ($tier-1) . ", gFld(\"Host: " . $leaf["hostname"] . "\", \"" . clean_up_export_name($leaf["hostname"] . "_" . $leaf["id"]) . ".html\"))\n";
++                                              if ($tier > $last_tier) {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t<ul>\n";
++                                              } elseif ($tier < $last_tier) {
++                                                      if (!$lasthost) {
++                                                              $i++;
++                                                              $dhtml_tree[$i] = "\t\t\t\t</li>\n";
++                                                      }
++                                                      for ($x = $tier; $x < $last_tier; $x++) {
++                                                              $i++;
++                                                              $dhtml_tree[$i] = "\t\t\t</ul>\n\t\t\t\t</li>\n";
++                                                              $openli = false;
++                                                      }
++                                              } elseif ($openli && !$lasthost) {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t\t</li>\n";
++                                                      $openli = false;
++                                              }
++                                              $last_tier = $tier;
++                                              $lasthost = true;
++                                              $i++;
++                                              $clean_id = clean_up_export_name($leaf["hostname"] . "_" . $leaf["id"]);
++                                              $dhtml_tree[$i] = "\t\t\t\t<li id=\"" . $clean_id . "\"><a href=\"" . $clean_id . ".html\">Host: " . htmlspecialchars($leaf["hostname"]) . "</a>\n";
+                                               if (read_config_option("export_tree_expand_hosts") == "on") {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t\t\t<ul>\n";
+                                                       if ($leaf["host_grouping_type"] == HOST_GROUPING_GRAPH_TEMPLATE) {
+                                                               $graph_templates = db_fetch_assoc("SELECT
+                                                                       graph_templates.id,
+@@ -1552,7 +1591,8 @@
+                                                               if (sizeof($graph_templates) > 0) {
+                                                                       foreach ($graph_templates as $graph_template) {
+                                                                               $i++;
+-                                                                              $dhtml_tree[$i] = "ou" . ($tier+1) . " = insFld(ou" . ($tier) . ", gFld(\" " . $graph_template["name"] . "\", \"" . clean_up_export_name($leaf["hostname"] . "_gt_" . $leaf["id"]) . "_" . $graph_template["id"] . ".html\"))\n";
++                                                                              $clean_id = clean_up_export_name($leaf["hostname"] . "_gt_" . $leaf["id"] . "_" . $graph_template["id"]);
++                                                                              $dhtml_tree[$i] = "\t\t\t\t\t\t<li id=\"" . $clean_id . "\"><a href=\"" . $clean_id . ".html\">" . htmlspecialchars($graph_template["name"]) . "</a></li>\n";
+                                                                       }
+                                                               }
+                                                       }else if ($leaf["host_grouping_type"] == HOST_GROUPING_DATA_QUERY_INDEX) {
+@@ -1567,36 +1607,77 @@
+                                                               array_push($data_queries, array(
+                                                                       "id" => "0",
+-                                                                      "name" => "Graph Template Based"
++                                                                      "name" => "Non Query Based"
+                                                                       ));
+                                                               if (sizeof($data_queries) > 0) {
+-                                                              foreach ($data_queries as $data_query) {
+-                                                                      $i++;
+-
+-                                                                      $dhtml_tree[$i] = "ou" . ($tier+1) . " = insFld(ou" . ($tier) . ", gFld(\" " . $data_query["name"] . "\", \"" . clean_up_export_name($leaf["hostname"] . "_dq_" . $leaf["title"] . "_" . $leaf["id"]) . "_" . $data_query["id"] . ".html\"))\n";
++                                                                      foreach ($data_queries as $data_query) {
++                                                                              $i++;
++                                                                              $clean_id = clean_up_export_name($leaf["hostname"] . "_dq_" . $leaf["title"] . "_" . $leaf["id"] . "_" . $data_query["id"]);
++                                                                              $dhtml_tree[$i] = "\t\t\t\t\t\t<li id=\"" . $clean_id . "\"><a href=\"" . $clean_id . ".html\">" . htmlspecialchars($data_query["name"]) . "</a>\n";
+-                                                                      /* fetch a list of field names that are sorted by the preferred sort field */
+-                                                                      $sort_field_data = get_formatted_data_query_indexes($leaf["host_id"], $data_query["id"]);
++                                                                              /* fetch a list of field names that are sorted by the preferred sort field */
++                                                                              $sort_field_data = get_formatted_data_query_indexes($leaf["host_id"], $data_query["id"]);
+-                                                                      if ($data_query["id"] > 0) {
+-                                                                              while (list($snmp_index, $sort_field_value) = each($sort_field_data)) {
++                                                                              if ($data_query["id"] > 0) {
++                                                                                      $i++;
++                                                                                      $dhtml_tree[$i] = "\t\t\t\t\t\t\t<ul>\n";
++                                                                                      while (list($snmp_index, $sort_field_value) = each($sort_field_data)) {
++                                                                                              $i++;
++                                                                                              $clean_id = clean_up_export_name($leaf["hostname"] . "_dqi_" . $leaf["id"] . "_" . $data_query["id"] . "_" . $snmp_index);
++                                                                                              $dhtml_tree[$i] = "\t\t\t\t\t\t\t\t<li id=\"" . $clean_id . "\"><a href=\"" . $clean_id . ".html\">" . htmlspecialchars($sort_field_value) . "</a></li>\n";
++                                                                                      }
+                                                                                       $i++;
+-                                                                                      $dhtml_tree[$i] = "ou" . ($tier+2) . " = insFld(ou" . ($tier+1) . ", gFld(\" " . $sort_field_value . "\", \"" . clean_up_export_name($leaf["hostname"] . "_dqi_" . $leaf["title"] . "_" . $leaf["id"]) . "_" . $data_query["id"] . "_" . $snmp_index . ".html\"))\n";
++                                                                                      $dhtml_tree[$i] = "\t\t\t\t\t\t\t</ul>\n";
+                                                                               }
++                                                                              $i++;
++                                                                              $dhtml_tree[$i] = "\t\t\t\t\t\t</li>\n";
+                                                                       }
+                                                               }
+-                                                              }
+                                                       }
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t\t\t</ul>\n";
+                                               }
+-                                      }else {
+-                                              $dhtml_tree[$i] = "ou" . ($tier) . " = insFld(ou" . ($tier-1) . ", gFld(\"" . $leaf["title"] . "\", \"" . clean_up_export_name(get_tree_name($tree["id"]) . "_" . $leaf["title"] . "_" . $leaf["id"]) . "_leaf.html\"))\n";
++                                              $i++;
++                                              $dhtml_tree[$i] = "\t\t\t\t</li>\n";
++                                      }else { //It's not a host
++                                              if ($tier > $last_tier) {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t<ul>\n";
++                                              } elseif ($tier < $last_tier) {
++                                                      if (!$lasthost) {
++                                                              $i++;
++                                                              $dhtml_tree[$i] = "</li>\n";
++                                                      }
++                                                      for ($x = $tier; $x < $last_tier; $x++) {
++                                                              $i++;
++                                                              $dhtml_tree[$i] = "\t\t\t\t</ul>\n\t\t\t\t</li>\n";
++                                                              $openli = false;
++                                                      }
++                                              } elseif ($openli && !$lasthost) {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "</li>\n";
++                                                      $openli = false;
++                                              }
++                                              $last_tier = $tier;
++                                              $i++;
++                                              $clean_id = clean_up_export_name(get_tree_name($tree["id"]) . "_" . $leaf["title"] . "_" . $leaf["id"]);
++                                              $dhtml_tree[$i] = "\t\t\t\t<li id=\"" . $clean_id . "\"><a href=\"" . $clean_id . "_leaf.html\">" . htmlspecialchars($leaf["title"]) . "</a>\n";
++                                              $openli = true;
++                                              $lasthost = false;
+                                       }
+                               }
++                              for ($x = $last_tier; $x > 1; $x--) {
++                                      $i++;
++                                      $dhtml_tree[$i] = "\t\t\t\t\t</ul>\n\t\t\t\t</li>\n";
++                              }
++                              $i++;
++                              $dhtml_tree[$i] = "\t\t\t</ul>\n\t\t</li>\n\t</ul>\n";
+                       }else{
+                               if ($dhtml_tree_id <> $tree["id"]) {
+-                                      $dhtml_tree[$i] = "ou0 = insFld(foldersTree, gFld(\"" . get_tree_name($tree["id"]) . "\", \"" . clean_up_export_name(get_tree_name($tree["id"])) . "_leaf.html\"))\n";
+                                       $i++;
++                                      $clean_id = clean_up_export_name(get_tree_name($tree["id"]));
++                                      $dhtml_tree[$i] = "\t<ul>\n\t\t<li id=\"" . $clean_id . "_leaf\"><a href=\"" . $clean_id . "_leaf.html\">" . get_tree_name($tree["id"]) . "</a></li>\n\t</ul>";
+                               }
+                       }
+               }
+@@ -1612,10 +1693,10 @@
+         $dir - the export directory where graphs will either be staged or located.
+ */
+ function create_export_directory_structure($cacti_root_path, $dir) {
+-      /* create the treeview sub-directory */
+-      if (!is_dir("$dir/treeview")) {
+-              if (!mkdir("$dir/treeview", 0755)) {
+-                      export_fatal("Create directory '" . $dir . "/treeview' failed.  Can not continue");
++      /* create the jquery sub-directory */
++      if (!is_dir("$dir/js")) {
++              if (!mkdir("$dir/js", 0755)) {
++                      export_fatal("Create directory '" . $dir . "/js' failed.  Can not continue");
+               }
+       }
+@@ -1626,8 +1707,6 @@
+               }
+       }
+-      $treeview_dir = $dir . "/treeview";
+-
+       /* css */
+       copy("$cacti_root_path/include/main.css", "$dir/main.css");
+@@ -1639,18 +1718,15 @@
+       copy("$cacti_root_path/images/shadow_gray.gif", "$dir/shadow_gray.gif");
+       /* java scripts for the tree */
+-      copy("$cacti_root_path/include/treeview/ftiens4_export.js", "$treeview_dir/ftiens4.js");
+-      copy("$cacti_root_path/include/treeview/ua.js", "$treeview_dir/ua.js");
+-
+-      /* images for the tree */
+-      copy("$cacti_root_path/include/treeview/ftv2blank.gif", "$treeview_dir/ftv2blank.gif");
+-      copy("$cacti_root_path/include/treeview/ftv2lastnode.gif", "$treeview_dir/ftv2lastnode.gif");
+-      copy("$cacti_root_path/include/treeview/ftv2mlastnode.gif", "$treeview_dir/ftv2mlastnode.gif");
+-      copy("$cacti_root_path/include/treeview/ftv2mnode.gif", "$treeview_dir/ftv2mnode.gif");
+-      copy("$cacti_root_path/include/treeview/ftv2node.gif", "$treeview_dir/ftv2node.gif");
+-      copy("$cacti_root_path/include/treeview/ftv2plastnode.gif", "$treeview_dir/ftv2plastnode.gif");
+-      copy("$cacti_root_path/include/treeview/ftv2pnode.gif", "$treeview_dir/ftv2pnode.gif");
+-      copy("$cacti_root_path/include/treeview/ftv2vertline.gif", "$treeview_dir/ftv2vertline.gif");
++      copy("$cacti_root_path/include/js/jquery/jquery.js", "$dir/js/jquery.js");
++      copy("$cacti_root_path/include/js/jquery/jquery.jstree.js", "$dir/js/jquery.jstree.js");
++      copy("$cacti_root_path/include/js/jquery/jquery.cookie.js", "$dir/js/jquery.cookie.js");
++
++      /* theme info for java scripts */
++      copy("$cacti_root_path/include/js/jquery/themes/default/style.css", "$dir/js/style.css");
++      copy("$cacti_root_path/include/js/jquery/themes/default/d.png", "$dir/js/d.png");
++      copy("$cacti_root_path/include/js/jquery/themes/default/d.gif", "$dir/js/d.gif");
++      copy("$cacti_root_path/include/js/jquery/themes/default/throbber.gif", "$dir/js/throbber.gif");
+ }
+ function get_host_description($host_id) {
+@@ -1738,8 +1814,9 @@
+       <meta http-equiv=refresh content='300'; url='index.html'>
+       <meta http-equiv=Pragma content=no-cache>
+       <meta http-equiv=cache-control content=no-cache>
+-      <script type=\"text/javascript\" src=\"./treeview/ua.js\"></script>
+-      <script type=\"text/javascript\" src=\"./treeview/ftiens4.js\"></script>
++      <script type=\"text/javascript\" src=\"./js/jquery.js\" language=\"javascript\"></script>
++      <script type=\"text/javascript\" src=\"./js/jquery.cookie.js\" language=\"javascript\"></script>
++      <script type=\"text/javascript\" src=\"./js/jquery.jstree.js\" language=\"javascript\"></script>
+ </head>
+ <body>
+ <table style='width:100%;height:100%;' cellspacing='0' cellpadding='0'>
+--- a/lib/html_tree.php
++++ b/lib/html_tree.php
+@@ -495,17 +495,9 @@
+       include_once($config["library_path"] . "/data_query.php");
+       ?>
+-      <script type="text/javascript">
+-      <!--
+-      USETEXTLINKS = 1
+-      STARTALLOPEN = 0
+-      USEFRAMES = 0
+-      USEICONS = 0
+-      WRAPTEXT = 1
+-      PERSERVESTATE = 1
+-      HIGHLIGHT = 1
+       <?php
+       /* get current time */
++/* Probably not needed anymore as jstree uses jquery.cookies
+       list($micro,$seconds) = explode(" ", microtime());
+       $current_time = $seconds + $micro;
+       $expand_hosts = read_graph_config_option("expand_hosts");
+@@ -522,6 +514,8 @@
+                       $dhtml_tree = $_SESSION['dhtml_tree'];
+               }
+       }
++*/
++      $dhtml_tree = create_dhtml_tree();
+       $total_tree_items = sizeof($dhtml_tree) - 1;
+@@ -529,8 +523,31 @@
+               print $dhtml_tree[$i];
+       }
+       ?>
+-      //-->
+-      </script>
++<script type="text/javascript">
++$(function () {
++      $("#jtree")
++              .jstree({
++                      "plugins" : ["ui","themes","html_data","cookies"],
++                      "themes" : {"icons" : false,
++                              "url" : "<?php echo  $config['url_path']; ?>include/js/jquery/themes/default/style.css"},
++                      "cookies" : {
++                              "save_opened" : "Cacti_jstree_open",
++                              "save_selected" : "Cacti_jstree_select"
++                              }
++                      })
++
++              // Make sure that the nodes are actually used as links
++              // We need reselect to prevent endless loops
++              // https://groups.google.com/d/topic/jstree/j6XNq9hQdeA/discussion
++              .bind("reselect.jstree", function (e, data) {
++                      data.inst.get_container().bind("select_node.jstree", function (e, data) {
++                              // data.rstl.obj is the object that was selected.
++                              document.location.href = data.rslt.obj.children("a").attr("href");
++                      });
++              });
++
++});
++</script>
+       <?php
+ }
+@@ -543,9 +560,8 @@
+       $dhtml_tree[0] = $start;
+       $dhtml_tree[1] = read_graph_config_option("expand_hosts");
+-      $dhtml_tree[2] = "foldersTree = gFld(\"\", \"\")\n";
+-      $dhtml_tree[3] = "foldersTree.xID = \"root\"\n";
+-      $i = 3;
++      $dhtml_tree[2] = "\n<div id=\"jtree\">\n";
++      $i = 2;
+       $tree_list = get_graph_tree_array();
+@@ -567,7 +583,6 @@
+       if (sizeof($tree_list) > 0) {
+               foreach ($tree_list as $tree) {
+-                      $i++;
+                       $hierarchy = db_fetch_assoc("select
+                               graph_tree_items.id,
+                               graph_tree_items.title,
+@@ -583,21 +598,45 @@
+                               and graph_tree_items.local_graph_id = 0
+                               order by graph_tree_items.order_key");
+-                      $dhtml_tree[$i] = "ou0 = insFld(foldersTree, gFld(\"" . htmlspecialchars($tree["name"]) . "\", \"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"]) . "\"))\n";
+                       $i++;
+-                      $dhtml_tree[$i] = "ou0.xID = \"tree_" . $tree["id"] . "\"\n";
++                      $dhtml_tree[$i] = "\t<ul>\n\t\t<li id=\"" . htmlspecialchars("tree_" . $tree["id"]) . "\"><a href=\"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"]) . "\">" . htmlspecialchars($tree["name"]) . "</a>\n";
+                       if (sizeof($hierarchy) > 0) {
++                              $i++;
++                              $dhtml_tree[$i] = "\t\t\t<ul>\n";
++                              $last_tier = 1;
++                              $openli = false;
++                              $lasthost = false;
+                               foreach ($hierarchy as $leaf) {
+-                                      $i++;
+                                       $tier = tree_tier($leaf["order_key"]);
+-                                      if ($leaf["host_id"] > 0) {
+-                                              $dhtml_tree[$i] = "ou" . ($tier) . " = insFld(ou" . abs(($tier-1)) . ", gFld(\"" . "Host: " . htmlspecialchars($leaf["hostname"]) . "\", \"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"]) . "\"))\n";
++                                      if ($leaf["host_id"] > 0) {  //It's a host
++                                              if ($tier > $last_tier) {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t<ul>\n";
++                                              } elseif ($tier < $last_tier) {
++                                                      if (!$lasthost) {
++                                                              $i++;
++                                                              $dhtml_tree[$i] = "\t\t\t\t</li>\n";
++                                                      }
++                                                      for ($x = $tier; $x < $last_tier; $x++) {
++                                                              $i++;
++                                                              $dhtml_tree[$i] = "\t\t\t</ul>\n\t\t\t\t</li>\n";
++                                                              $openli = false;
++                                                      }
++                                              } elseif ($openli && !$lasthost) {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t\t</li>\n";
++                                                      $openli = false;
++                                              }
++                                              $last_tier = $tier;
++                                              $lasthost = true;
+                                               $i++;
+-                                              $dhtml_tree[$i] = "ou" . ($tier) . ".xID = \"tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "\"\n";
++                                              $dhtml_tree[$i] = "\t\t\t\t<li id=\"" . htmlspecialchars("tree_" . $tree["id"] . "_leaf_" . $leaf["id"]) . "\"><a href=\"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"]) . "\">Host: " . htmlspecialchars($leaf["hostname"]) . "</a>\n";
+                                               if (read_graph_config_option("expand_hosts") == "on") {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t\t\t<ul>\n";
+                                                       if ($leaf["host_grouping_type"] == HOST_GROUPING_GRAPH_TEMPLATE) {
+                                                               $graph_templates = db_fetch_assoc("select
+                                                                       graph_templates.id,
+@@ -612,9 +651,7 @@
+                                                               if (sizeof($graph_templates) > 0) {
+                                                                       foreach ($graph_templates as $graph_template) {
+                                                                               $i++;
+-                                                                              $dhtml_tree[$i] = "ou" . ($tier+1) . " = insFld(ou" . ($tier) . ", gFld(\" " . htmlspecialchars($graph_template["name"]) . "\", \"graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"] . "&host_group_data=graph_template:" . $graph_template["id"] . "\"))\n";
+-                                                                              $i++;
+-                                                                              $dhtml_tree[$i] = "ou" . ($tier+1) . ".xID = \"tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "_hgd_gt_" . $graph_template["id"] . "\"\n";
++                                                                              $dhtml_tree[$i] = "\t\t\t\t\t\t<li id=\"" . htmlspecialchars("tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "_hgd_gt_" . $graph_template["id"]) . "\"><a href=\"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"] . "&host_group_data=graph_template:" . $graph_template["id"]) . "\">" . htmlspecialchars($graph_template["name"]) . "</a></li>\n";
+                                                                       }
+                                                               }
+                                                       }else if ($leaf["host_grouping_type"] == HOST_GROUPING_DATA_QUERY_INDEX) {
+@@ -645,33 +682,71 @@
+                                                                               if ((($data_query["id"] == 0) && ($non_template_graphs > 0)) ||
+                                                                                       (($data_query["id"] > 0) && (sizeof($sort_field_data) > 0))) {
+                                                                                       $i++;
+-                                                                                      $dhtml_tree[$i] = "ou" . ($tier+1) . " = insFld(ou" . ($tier) . ", gFld(\" " . htmlspecialchars($data_query["name"]) . "\", \"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"] . "&host_group_data=data_query:" . $data_query["id"]) . "\"))\n";
+-                                                                                      $i++;
+-                                                                                      $dhtml_tree[$i] = "ou" . ($tier+1) . ".xID = \"tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "_hgd_dq_" . $data_query["id"] . "\"\n";
+-
++                                                                                      $dhtml_tree[$i] = "\t\t\t\t\t\t<li id=\"" . htmlspecialchars("tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "_hgd_dq_" . $data_query["id"]) . "\"><a href=\"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"] . "&host_group_data=data_query:" . $data_query["id"]) . "\">" . htmlspecialchars($data_query["name"]) . "</a>\n";
+                                                                                       if ($data_query["id"] > 0) {
++                                                                                              $i++;
++                                                                                              $dhtml_tree[$i] = "\t\t\t\t\t\t\t<ul>\n";
+                                                                                               while (list($snmp_index, $sort_field_value) = each($sort_field_data)) {
+                                                                                                       $i++;
+-                                                                                                      $dhtml_tree[$i] = "ou" . ($tier+2) . " = insFld(ou" . ($tier+1) . ", gFld(\" " . htmlspecialchars($sort_field_value) . "\", \"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"] . "&host_group_data=data_query_index:" . $data_query["id"] . ":" . urlencode($snmp_index)) . "\"))\n";
+-                                                                                                      $i++;
+-                                                                                                      $dhtml_tree[$i] = "ou" . ($tier+2) . ".xID = \"tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "_hgd_dqi" . $data_query["id"] . "_" . urlencode($snmp_index) . "\"\n";
++                                                                                                      $dhtml_tree[$i] = "\t\t\t\t\t\t\t\t<li id=\"" . htmlspecialchars("tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "_hgd_dqi" . $data_query["id"]) . "_" . urlencode($snmp_index) . "\"><a href=\"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"] . "&host_group_data=data_query_index:" . $data_query["id"] . ":" . urlencode($snmp_index)) . "\">" . htmlspecialchars($sort_field_value) . "</a></li>\n";
+                                                                                               }
++                                                                                      $i++;
++                                                                                      $dhtml_tree[$i] = "\t\t\t\t\t\t\t</ul>\n";
++                                                                                      $i++;
++                                                                                      $dhtml_tree[$i] = "\t\t\t\t\t\t</li>\n";
+                                                                                       }
+                                                                               }
+                                                                       }
+                                                               }
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t\t\t\t</li>\n";
++                                                      }
++                                              $i++;
++                                              $dhtml_tree[$i] = "\t\t\t\t\t</ul>\n";
++                                              }
++                                      $i++;
++                                      $dhtml_tree[$i] = "\t\t\t\t</li>\n";
++                                      }else{ //It's not a host
++                                              if ($tier > $last_tier) {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "\t\t\t<ul>\n";
++                                              } elseif ($tier < $last_tier) {
++                                                      if (!$lasthost) {
++                                                              $i++;
++                                                              $dhtml_tree[$i] = "</li>\n";
+                                                       }
++                                                      for ($x = $tier; $x < $last_tier; $x++) {
++                                                              $i++;
++                                                              $dhtml_tree[$i] = "\t\t\t\t</ul>\n\t\t\t\t</li>\n";
++                                                              $openli = false;
++                                                      }
++                                              } elseif ($openli && !$lasthost) {
++                                                      $i++;
++                                                      $dhtml_tree[$i] = "</li>\n";
++                                                      $openli = false;
+                                               }
+-                                      }else{
+-                                              $dhtml_tree[$i] = "ou" . ($tier) . " = insFld(ou" . abs(($tier-1)) . ", gFld(\"" . htmlspecialchars($leaf["title"]) . "\", \"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"]) . "\"))\n";
++                                              $last_tier = $tier;
+                                               $i++;
+-                                              $dhtml_tree[$i] = "ou" . ($tier) . ".xID = \"tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "\"\n";
++                                              $dhtml_tree[$i] = "\t\t\t\t<li id=\"" . htmlspecialchars("tree_" . $tree["id"] . "_leaf_" . $leaf["id"]) . "\"><a href=\"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"]) . "\">" . htmlspecialchars($leaf["title"]) . "</a>\n";
++                                              $openli = true;
++                                              $lasthost = false;
+                                       }
+                               }
++                              for ($x = $last_tier; $x > 1; $x--) {
++                                      $i++;
++                                      $dhtml_tree[$i] = "\t\t\t\t\t</ul>\n\t\t\t\t</li>\n";
++                              }
++                              $i++;
++                              $dhtml_tree[$i] = "\t\t\t</ul>\n";
+                       }
++                      $i++;
++                      $dhtml_tree[$i] = "\t\t</li>\n\t</ul>\n";
+               }
+       }
++      $i++;
++      $dhtml_tree[$i] = "</div>\n";
++
+       return $dhtml_tree;
+ }
+@@ -758,14 +833,6 @@
+               }
+       }
+-      print "<script type=\"text/javascript\">\n";
+-      print "<!--\n";
+-      print "myNode = findObj(\"$nodeid\")\n";
+-      print "myNode.forceOpeningOfAncestorFolders();\n";
+-      print "highlightObjLink(myNode)\n";
+-      print "//-->\n";
+-      print "</script>";
+-
+       /* ================= input validation ================= */
+       input_validate_input_number(get_request_var_post("graphs"));
+       input_validate_input_number(get_request_var_post("page"));
diff --git a/src/patches/cacti/cacti-0.8.8b-html-injection.patch b/src/patches/cacti/cacti-0.8.8b-html-injection.patch
new file mode 100644 (file)
index 0000000..1326dff
--- /dev/null
@@ -0,0 +1,19 @@
+------------------------------------------------------------------------
+r7443 | rony | 2014-03-30 18:43:28 -0500 (Sun, 30 Mar 2014) | 2 lines
+
+bug#0002431: CVE-2014-2326 Unspecified HTML Injection Vulnerability 
+
+------------------------------------------------------------------------
+Index: branches/0.8.8/cdef.php
+===================================================================
+--- branches/0.8.8/cdef.php    (revision 7442)
++++ branches/0.8.8/cdef.php    (revision 7443)
+@@ -431,7 +431,7 @@
+                                               <a class="linkEditMain" href="<?php print htmlspecialchars("cdef.php?action=item_edit&id=" . $cdef_item["id"] . "&cdef_id=" . $cdef["id"]);?>">Item #<?php print htmlspecialchars($i);?></a>
+                                       </td>
+                                       <td>
+-                                              <em><?php $cdef_item_type = $cdef_item["type"]; print $cdef_item_types[$cdef_item_type];?></em>: <strong><?php print get_cdef_item_name($cdef_item["id"]);?></strong>
++                                              <em><?php $cdef_item_type = $cdef_item["type"]; print $cdef_item_types[$cdef_item_type];?></em>: <strong><?php print htmlspecialchars(get_cdef_item_name($cdef_item["id"]));?></strong>
+                                       </td>
+                                       <td>
+                                               <a href="<?php print htmlspecialchars("cdef.php?action=item_movedown&id=" . $cdef_item["id"] . "&cdef_id=" . $cdef["id"]);?>"><img src="images/move_down.gif" border="0" alt="Move Down"></a>
diff --git a/src/patches/cacti/cacti-0.8.8b-remote-command-execution.patch b/src/patches/cacti/cacti-0.8.8b-remote-command-execution.patch
new file mode 100644 (file)
index 0000000..c357a06
--- /dev/null
@@ -0,0 +1,28 @@
+------------------------------------------------------------------------
+r7442 | rony | 2014-03-30 18:41:56 -0500 (Sun, 30 Mar 2014) | 2 lines
+
+bug#0002433: CVE-2014-2328 Unspecified Remote Command Execution Vulnerability
+
+------------------------------------------------------------------------
+Index: branches/0.8.8/lib/graph_export.php
+===================================================================
+--- branches/0.8.8/lib/graph_export.php        (revision 7441)
++++ branches/0.8.8/lib/graph_export.php        (revision 7442)
+@@ -339,7 +339,7 @@
+       chdir($stExportDir);
+       /* set the initial command structure */
+-      $stExecute = 'ncftpput -R -V -r 1 -u '.$aFtpExport['username'].' -p '.$aFtpExport['password'];
++      $stExecute = 'ncftpput -R -V -r 1 -u ' . cacti_escapeshellarg($aFtpExport['username']) . ' -p ' . cacti_escapeshellarg($aFtpExport['password']);
+       /* if the user requested passive mode, use it */
+       if ($aFtpExport['passive']) {
+@@ -347,7 +347,7 @@
+       }
+       /* setup the port, server, remote directory and all files */
+-      $stExecute .= ' -P ' . $aFtpExport['port'] . ' ' . $aFtpExport['server'] . ' ' . $aFtpExport['remotedir'] . ".";
++      $stExecute .= ' -P ' . cacti_escapeshellarg($aFtpExport['port']) . ' ' . cacti_escapeshellarg($aFtpExport['server']) . ' ' . cacti_escapeshellarg($aFtpExport['remotedir']) . ".";
+       /* run the command */
+       $iExecuteReturns = 0;
diff --git a/src/patches/cacti/cacti-0.8.8b-rra-comments.patch b/src/patches/cacti/cacti-0.8.8b-rra-comments.patch
new file mode 100644 (file)
index 0000000..c5becfe
--- /dev/null
@@ -0,0 +1,42 @@
+------------------------------------------------------------------------
+r7418 | gandalf | 2013-08-13 13:32:49 -0600 (Tue, 13 Aug 2013) | 1 line
+
+fix COMMENT handling, even in case COMMENT is empty, with or without HR and with variable substitution
+------------------------------------------------------------------------
+Index: branches/0.8.8/lib/rrd.php
+===================================================================
+--- branches/0.8.8/lib/rrd.php (revision 7417)
++++ branches/0.8.8/lib/rrd.php (revision 7418)
+@@ -1343,20 +1343,20 @@
+               $need_rrd_nl = TRUE;
+               if ($graph_item_types{$graph_item["graph_type_id"]} == "COMMENT") {
++                      # perform variable substitution first (in case this will yield an empty results or brings command injection problems)
++                      $comment_arg = rrd_substitute_host_query_data($graph_variables["text_format"][$graph_item_id], $graph, $graph_item);
++                      # next, compute the argument of the COMMENT statement and perform injection counter measures
++                      if (trim($comment_arg) == '') { # an empty COMMENT must be treated with care
++                              $comment_arg = cacti_escapeshellarg(' ' . $hardreturn[$graph_item_id]);
++                      } else {
++                              $comment_arg = cacti_escapeshellarg($comment_arg . $hardreturn[$graph_item_id]);
++                      }
++
++                      # create rrdtool specific command line
+                       if (read_config_option("rrdtool_version") != "rrd-1.0.x") {
+-                              $comment_string = $graph_item_types{$graph_item["graph_type_id"]} . ":" . str_replace(":", "\:", cacti_escapeshellarg($graph_variables["text_format"][$graph_item_id] . $hardreturn[$graph_item_id])) . " ";
+-                              if (trim($comment_string) == 'COMMENT:"\n"') {
+-                                      $txt_graph_items .= 'COMMENT:" \n"'; # rrdtool will skip a COMMENT that holds a NL only; so add a blank to make NL work
+-                              } else if (trim($comment_string) != "COMMENT:\"\"") {
+-                                      $txt_graph_items .= rrd_substitute_host_query_data($comment_string, $graph, $graph_item);
+-                              }
++                              $txt_graph_items .= $graph_item_types{$graph_item["graph_type_id"]} . ":" . str_replace(":", "\:", $comment_arg) . " ";
+                       }else {
+-                              $comment_string = $graph_item_types{$graph_item["graph_type_id"]} . ":" . cacti_escapeshellarg($graph_variables["text_format"][$graph_item_id] . $hardreturn[$graph_item_id]) . " ";
+-                              if (trim($comment_string) == 'COMMENT:"\n"') {
+-                                      $txt_graph_items .= 'COMMENT:" \n"'; # rrdtool will skip a COMMENT that holds a NL only; so add a blank to make NL work
+-                              } else if (trim($comment_string) != "COMMENT:\"\"") {
+-                                      $txt_graph_items .= rrd_substitute_host_query_data($comment_string, $graph, $graph_item);
+-                              }
++                              $txt_graph_items .= $graph_item_types{$graph_item["graph_type_id"]} . ":" . $comment_arg . " ";
+                       }
+               }elseif (($graph_item_types{$graph_item["graph_type_id"]} == "GPRINT") && (!isset($graph_data_array["graph_nolegend"]))) {
+                       $graph_variables["text_format"][$graph_item_id] = str_replace(":", "\:", $graph_variables["text_format"][$graph_item_id]); /* escape colons */
diff --git a/src/patches/cacti/cacti-0.8.8b-sanitize-variables.patch b/src/patches/cacti/cacti-0.8.8b-sanitize-variables.patch
new file mode 100644 (file)
index 0000000..37ded2e
--- /dev/null
@@ -0,0 +1,155 @@
+------------------------------------------------------------------------
+r7420 | cigamit | 2013-08-17 21:41:24 -0600 (Sat, 17 Aug 2013) | 1 line
+
+Bug #0002383 : Sanitize the step and id variables
+------------------------------------------------------------------------
+Index: branches/0.8.8/host.php
+===================================================================
+--- branches/0.8.8/host.php    (revision 7419)
++++ branches/0.8.8/host.php    (revision 7420)
+@@ -149,6 +149,9 @@
+               if ($_POST["snmp_version"] == 3 && ($_POST["snmp_password"] != $_POST["snmp_password_confirm"])) {
+                       raise_message(4);
+               }else{
++                      input_validate_input_number(get_request_var_post("id"));
++                      input_validate_input_number(get_request_var_post("host_template_id"));
++
+                       $host_id = api_device_save($_POST["id"], $_POST["host_template_id"], $_POST["description"],
+                               trim($_POST["hostname"]), $_POST["snmp_community"], $_POST["snmp_version"],
+                               $_POST["snmp_username"], $_POST["snmp_password"],
+Index: branches/0.8.8/lib/api_device.php
+===================================================================
+--- branches/0.8.8/lib/api_device.php  (revision 7419)
++++ branches/0.8.8/lib/api_device.php  (revision 7420)
+@@ -107,7 +107,7 @@
+               $_host_template_id = db_fetch_cell("select host_template_id from host where id=$id");
+       }
+-      $save["id"] = $id;
++      $save["id"]                   = form_input_validate($id, "id", "^[0-9]+$", false, 3);
+       $save["host_template_id"]     = form_input_validate($host_template_id, "host_template_id", "^[0-9]+$", false, 3);
+       $save["description"]          = form_input_validate($description, "description", "", false, 3);
+       $save["hostname"]             = form_input_validate(trim($hostname), "hostname", "", false, 3);
+Index: branches/0.8.8/install/index.php
+===================================================================
+--- branches/0.8.8/install/index.php   (revision 7419)
++++ branches/0.8.8/install/index.php   (revision 7420)
+@@ -310,27 +310,28 @@
+ }
+ /* pre-processing that needs to be done for each step */
+-if (empty($_REQUEST["step"])) {
+-      $_REQUEST["step"] = 1;
+-}else{
+-      if ($_REQUEST["step"] == "1") {
+-              $_REQUEST["step"] = "2";
+-      }elseif (($_REQUEST["step"] == "2") && ($_REQUEST["install_type"] == "1")) {
+-              $_REQUEST["step"] = "3";
+-      }elseif (($_REQUEST["step"] == "2") && ($_REQUEST["install_type"] == "3")) {
+-              $_REQUEST["step"] = "8";
+-      }elseif (($_REQUEST["step"] == "8") && ($old_version_index <= array_search("0.8.5a", $cacti_versions))) {
+-              $_REQUEST["step"] = "9";
+-      }elseif ($_REQUEST["step"] == "8") {
+-              $_REQUEST["step"] = "3";
+-      }elseif ($_REQUEST["step"] == "9") {
+-              $_REQUEST["step"] = "3";
+-      }elseif ($_REQUEST["step"] == "3") {
+-              $_REQUEST["step"] = "4";
++if (isset($_REQUEST["step"]) && $_REQUEST["step"] > 0) {
++      $step = intval($_REQUEST["step"]);
++      if ($step == "1") {
++              $step = "2";
++      } elseif (($step == "2") && ($_REQUEST["install_type"] == "1")) {
++              $step = "3";
++      } elseif (($step == "2") && ($_REQUEST["install_type"] == "3")) {
++              $step = "8";
++      } elseif (($step == "8") && ($old_version_index <= array_search("0.8.5a", $cacti_versions))) {
++              $step = "9";
++      } elseif ($step == "8") {
++              $step = "3";
++      } elseif ($step == "9") {
++              $step = "3";
++      } elseif ($step == "3") {
++              $step = "4";
+       }
++} else {
++      $step = 1;
+ }
+-if ($_REQUEST["step"] == "4") {
++if ($step == "4") {
+       include_once("../lib/data_query.php");
+       include_once("../lib/utility.php");
+@@ -366,7 +367,7 @@
+       header ("Location: ../index.php");
+       exit;
+-}elseif (($_REQUEST["step"] == "8") && ($_REQUEST["install_type"] == "3")) {
++}elseif (($step == "8") && ($_REQUEST["install_type"] == "3")) {
+       /* if the version is not found, die */
+       if (!is_int($old_version_index)) {
+               print " <p style='font-family: Verdana, Arial; font-size: 16px; font-weight: bold; color: red;'>Error</p>
+@@ -505,7 +506,7 @@
+                               </tr>
+                               <tr>
+                                       <td width="100%" style="font-size: 12px;">
+-                                              <?php if ($_REQUEST["step"] == "1") { ?>
++                                              <?php if ($step == "1") { ?>
+                                               <p>Thanks for taking the time to download and install cacti, the complete graphing
+                                               solution for your network. Before you can start making cool graphs, there are a few
+@@ -530,7 +531,7 @@
+                                               MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+                                               GNU General Public License for more details.</p>
+-                                              <?php }elseif ($_REQUEST["step"] == "2") { ?>
++                                              <?php }elseif ($step == "2") { ?>
+                                               <p>Please select the type of installation</p>
+@@ -551,7 +552,7 @@
+                                                       print "Server Operating System Type: " . $config["cacti_server_os"] . "<br>"; ?>
+                                               </p>
+-                                              <?php }elseif ($_REQUEST["step"] == "3") { ?>
++                                              <?php }elseif ($step == "3") { ?>
+                                               <p>Make sure all of these values are correct before continuing.</p>
+                                               <?php
+@@ -609,7 +610,7 @@
+                                               is an upgrade. You can change any of the settings on this screen at a later
+                                               time by going to "Cacti Settings" from within Cacti.</p>
+-                                              <?php }elseif ($_REQUEST["step"] == "8") { ?>
++                                              <?php }elseif ($step == "8") { ?>
+                                               <p>Upgrade results:</p>
+@@ -659,7 +660,7 @@
+                                               print $upgrade_results;
+                                               ?>
+-                                              <?php }elseif ($_REQUEST["step"] == "9") { ?>
++                                              <?php }elseif ($step == "9") { ?>
+                                               <p style='font-size: 16px; font-weight: bold; color: red;'>Important Upgrade Notice</p>
+@@ -673,7 +674,7 @@
+                                               <?php }?>
+-                                              <p align="right"><input type="image" src="install_<?php if ($_REQUEST["step"] == "3") {?>finish<?php }else{?>next<?php }?>.gif" alt="<?php if ($_REQUEST["step"] == "3"){?>Finish<?php }else{?>Next<?php }?>"></p>
++                                              <p align="right"><input type="image" src="install_<?php if ($step == "3") {?>finish<?php }else{?>next<?php }?>.gif" alt="<?php if ($step == "3"){?>Finish<?php }else{?>Next<?php }?>"></p>
+                                       </td>
+                               </tr>
+                       </table>
+@@ -681,7 +682,7 @@
+       </tr>
+ </table>
+-<input type="hidden" name="step" value="<?php print $_REQUEST["step"];?>">
++<input type="hidden" name="step" value="<?php print $step;?>">
+ </form>
diff --git a/src/patches/cacti/cacti-0.8.8b-sql-injection-shell-escaping.patch b/src/patches/cacti/cacti-0.8.8b-sql-injection-shell-escaping.patch
new file mode 100644 (file)
index 0000000..cb72d79
--- /dev/null
@@ -0,0 +1,117 @@
+------------------------------------------------------------------------
+r7439 | rony | 2014-03-30 17:52:10 -0500 (Sun, 30 Mar 2014) | 5 lines
+
+bug#0002405: SQL injection in graph_xport.php
+
+ - Fixed form input validation problems
+ - Fixed rrd export and graph shell escape issues
+
+------------------------------------------------------------------------
+Index: branches/0.8.8/graph_xport.php
+===================================================================
+--- branches/0.8.8/graph_xport.php     (revision 7438)
++++ branches/0.8.8/graph_xport.php     (revision 7439)
+@@ -47,43 +47,48 @@
+ $graph_data_array = array();
++/* ================= input validation ================= */
++input_validate_input_number(get_request_var("local_graph_id"));
++input_validate_input_number(get_request_var("rra_id"));
++/* ==================================================== */
++
+ /* override: graph start time (unix time) */
+-if (!empty($_GET["graph_start"]) && $_GET["graph_start"] < 1600000000) {
+-      $graph_data_array["graph_start"] = $_GET["graph_start"];
++if (!empty($_GET["graph_start"]) && is_numeric($_GET["graph_start"] && $_GET["graph_start"] < 1600000000)) {
++      $graph_data_array["graph_start"] = get_request_var("graph_start");
+ }
+ /* override: graph end time (unix time) */
+-if (!empty($_GET["graph_end"]) && $_GET["graph_end"] < 1600000000) {
+-      $graph_data_array["graph_end"] = $_GET["graph_end"];
++if (!empty($_GET["graph_end"]) && is_numeric($_GET["graph_end"]) && $_GET["graph_end"] < 1600000000) {
++      $graph_data_array["graph_end"] = get_request_var("graph_end");
+ }
+ /* override: graph height (in pixels) */
+-if (!empty($_GET["graph_height"]) && $_GET["graph_height"] < 3000) {
+-      $graph_data_array["graph_height"] = $_GET["graph_height"];
++if (!empty($_GET["graph_height"]) && is_numeric($_GET["graph_height"]) && $_GET["graph_height"] < 3000) {
++      $graph_data_array["graph_height"] = get_request_var("graph_height");
+ }
+ /* override: graph width (in pixels) */
+-if (!empty($_GET["graph_width"]) && $_GET["graph_width"] < 3000) {
+-      $graph_data_array["graph_width"] = $_GET["graph_width"];
++if (!empty($_GET["graph_width"]) && is_numeric($_GET["graph_width"]) && $_GET["graph_width"] < 3000) {
++      $graph_data_array["graph_width"] = get_request_var("graph_width");
+ }
+ /* override: skip drawing the legend? */
+ if (!empty($_GET["graph_nolegend"])) {
+-      $graph_data_array["graph_nolegend"] = $_GET["graph_nolegend"];
++      $graph_data_array["graph_nolegend"] = get_request_var("graph_nolegend");
+ }
+ /* print RRDTool graph source? */
+ if (!empty($_GET["show_source"])) {
+-      $graph_data_array["print_source"] = $_GET["show_source"];
++      $graph_data_array["print_source"] = get_request_var("show_source");
+ }
+-$graph_info = db_fetch_row("SELECT * FROM graph_templates_graph WHERE local_graph_id='" . $_REQUEST["local_graph_id"] . "'");
++$graph_info = db_fetch_row("SELECT * FROM graph_templates_graph WHERE local_graph_id='" . get_request_var("local_graph_id") . "'");
+ /* for bandwidth, NThPercentile */
+ $xport_meta = array();
+ /* Get graph export */
+-$xport_array = @rrdtool_function_xport($_GET["local_graph_id"], $_GET["rra_id"], $graph_data_array, $xport_meta);
++$xport_array = @rrdtool_function_xport($_GET["local_graph_id"], get_request_var("rra_id"), $graph_data_array, $xport_meta);
+ /* Make graph title the suggested file name */
+ if (is_array($xport_array["meta"])) {
+Index: branches/0.8.8/lib/rrd.php
+===================================================================
+--- branches/0.8.8/lib/rrd.php (revision 7438)
++++ branches/0.8.8/lib/rrd.php (revision 7439)
+@@ -865,13 +865,13 @@
+       /* basic graph options */
+       $graph_opts .=
+               "--imgformat=" . $image_types{$graph["image_format_id"]} . RRD_NL .
+-              "--start=$graph_start" . RRD_NL .
+-              "--end=$graph_end" . RRD_NL .
++              "--start=" . cacti_escapeshellarg($graph_start) . RRD_NL .
++              "--end=" . cacti_escapeshellarg($graph_end) . RRD_NL .
+               "--title=" . cacti_escapeshellarg($graph["title_cache"]) . RRD_NL .
+               "$rigid" .
+-              "--base=" . $graph["base_value"] . RRD_NL .
+-              "--height=$graph_height" . RRD_NL .
+-              "--width=$graph_width" . RRD_NL .
++              "--base=" . cacti_escapeshellarg($graph["base_value"]) . RRD_NL .
++              "--height=" . cacti_escapeshellarg($graph_height) . RRD_NL .
++              "--width=" . cacti_escapeshellarg($graph_width) . RRD_NL .
+               "$scale" .
+               "$unit_value" .
+               "$unit_exponent_value" .
+@@ -1606,8 +1606,8 @@
+       /* basic export options */
+       $xport_opts =
+-              "--start=$xport_start" . RRD_NL .
+-              "--end=$xport_end" . RRD_NL .
++              "--start=" . cacti_escapeshellarg($xport_start) . RRD_NL .
++              "--end=" . cacti_escapeshellarg($xport_end) . RRD_NL .
+               "--maxrows=10000" . RRD_NL;
+       $xport_defs = "";
+@@ -1997,7 +1997,7 @@
+                       $stacked_columns["col" . $j] = ($graph_item_types{$xport_item["graph_type_id"]} == "STACK") ? 1 : 0;
+                       $j++;
+-                      $txt_xport_items .= "XPORT:" . $data_source_name . ":" . str_replace(":", "", cacti_escapeshellarg($legend_name)) ;
++                      $txt_xport_items .= "XPORT:" . cacti_escapeshellarg($data_source_name) . ":" . str_replace(":", "", cacti_escapeshellarg($legend_name)) ;
+               }else{
+                       $need_rrd_nl = FALSE;
+               }
diff --git a/src/patches/compat-drivers-3.8-1-u-kref_get_unless_zero.patch b/src/patches/compat-drivers-3.8-1-u-kref_get_unless_zero.patch
new file mode 100644 (file)
index 0000000..1930d80
--- /dev/null
@@ -0,0 +1,38 @@
+--- compat-drivers-3.8-1-u/include/linux/compat-3.8.h.orig     2013-05-16 20:35:27.046386772 +0200
++++ compat-drivers-3.8-1-u/include/linux/compat-3.8.h  2013-05-16 20:35:39.219767618 +0200
+@@ -24,35 +24,6 @@
+ /* This backports:
+  *
+- * commit 4b20db3de8dab005b07c74161cb041db8c5ff3a7
+- * Author: Thomas Hellstrom <thellstrom@vmware.com>
+- * Date:   Tue Nov 6 11:31:49 2012 +0000
+- *
+- *    kref: Implement kref_get_unless_zero v3
+- */
+-/**
+- * kref_get_unless_zero - Increment refcount for object unless it is zero.
+- * @kref: object.
+- *
+- * Return non-zero if the increment succeeded. Otherwise return 0.
+- *
+- * This function is intended to simplify locking around refcounting for
+- * objects that can be looked up from a lookup structure, and which are
+- * removed from that lookup structure in the object destructor.
+- * Operations on such objects require at least a read lock around
+- * lookup + kref_get, and a write lock around kref_put + remove from lookup
+- * structure. Furthermore, RCU implementations become extremely tricky.
+- * With a lookup followed by a kref_get_unless_zero *with return value check*
+- * locking in the kref_put path can be deferred to the actual removal from
+- * the lookup structure and RCU lookups become trivial.
+- */
+-static inline int __must_check kref_get_unless_zero(struct kref *kref)
+-{
+-      return atomic_add_unless(&kref->refcount, 1, 0);
+-}
+-
+-/* This backports:
+- *
+  * commit 83e68189745ad931c2afd45d8ee3303929233e7f
+  * Author: Matt Fleming <matt.fleming@intel.com>
+  * Date:   Wed Nov 14 09:42:35 2012 +0000
diff --git a/src/patches/compat-drivers-3.8-arm_missing_vmalloc.patch b/src/patches/compat-drivers-3.8-arm_missing_vmalloc.patch
deleted file mode 100644 (file)
index d32008b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naur compat-drivers-3.8-1-u.org/drivers/net/ethernet/atheros/alx/alx_main.c compat-drivers-3.8-1-u/drivers/net/ethernet/atheros/alx/alx_main.c
---- compat-drivers-3.8-1-u.org/drivers/net/ethernet/atheros/alx/alx_main.c     2013-02-20 14:24:50.000000000 +0100
-+++ compat-drivers-3.8-1-u/drivers/net/ethernet/atheros/alx/alx_main.c 2013-03-03 12:41:04.000000000 +0100
-@@ -26,6 +26,7 @@
- #include <linux/bitops.h>
- #include <linux/netdevice.h>
- #include <linux/etherdevice.h>
-+#include <linux/vmalloc.h>
- #include "alx_reg.h"
- #include "alx_hw.h"
diff --git a/src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch b/src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch
new file mode 100644 (file)
index 0000000..acfb12f
--- /dev/null
@@ -0,0 +1,39 @@
+diff -Naur compat-drivers-3.8.3-2-snpu.org/drivers/net/wireless/ath/regd.c compat-drivers-3.8.3-2-snpu/drivers/net/wireless/ath/regd.c
+--- compat-drivers-3.8.3-2-snpu.org/drivers/net/wireless/ath/regd.c    2013-03-15 22:55:09.000000000 +0100
++++ compat-drivers-3.8.3-2-snpu/drivers/net/wireless/ath/regd.c        2013-08-22 11:51:36.793297656 +0200
+@@ -200,6 +200,8 @@
+       u32 bandwidth = 0;
+       int r;
++      return;
++
+       for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
+               if (!wiphy->bands[band])
+@@ -259,6 +261,8 @@
+       u32 bandwidth = 0;
+       int r;
++      return;
++
+       sband = wiphy->bands[IEEE80211_BAND_2GHZ];
+       if (!sband)
+               return;
+@@ -308,6 +312,8 @@
+       struct ieee80211_channel *ch;
+       unsigned int i;
++      return;
++
+       if (!wiphy->bands[IEEE80211_BAND_5GHZ])
+               return;
+@@ -514,6 +520,8 @@
+ {
+       const struct ieee80211_regdomain *regd;
++      return 0;
++
+       wiphy->reg_notifier = reg_notifier;
+       wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY;
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/dracut-006_add_run_dir.patch b/src/patches/dracut-006_add_run_dir.patch
new file mode 100644 (file)
index 0000000..08063f8
--- /dev/null
@@ -0,0 +1,13 @@
+diff -Naur dracut-006.org/modules.d/99base/init dracut-006/modules.d/99base/init
+--- dracut-006.org/modules.d/99base/init       2010-06-17 10:46:29.000000000 +0200
++++ dracut-006/modules.d/99base/init   2013-10-31 16:51:17.658771341 +0100
+@@ -87,6 +87,9 @@
+ ln -s /proc/self/fd /dev/fd >/dev/null 2>&1
++# create run dir
++mkdir run
++
+ if getarg rdinitdebug; then
+     getarg quiet && DRACUT_QUIET="yes"
+     mkfifo /dev/initlog.pipe
diff --git a/src/patches/dracut-006_remove_scsi_wait.patch b/src/patches/dracut-006_remove_scsi_wait.patch
new file mode 100644 (file)
index 0000000..cfccf01
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Naur dracut-006.org/modules.d/99base/init dracut-006/modules.d/99base/init
+--- dracut-006.org/modules.d/99base/init       2010-06-17 10:46:29.000000000 +0200
++++ dracut-006/modules.d/99base/init   2013-10-31 17:05:09.135475525 +0100
+@@ -175,7 +175,7 @@
+     $UDEV_QUEUE_EMPTY >/dev/null 2>&1 || continue
+-    modprobe scsi_wait_scan && rmmod scsi_wait_scan
++    sleep 0.1
+     $UDEV_QUEUE_EMPTY >/dev/null 2>&1 || continue
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-rh886968.patch b/src/patches/glibc/glibc-rh886968.patch
new file mode 100644 (file)
index 0000000..4872a91
--- /dev/null
@@ -0,0 +1,33 @@
+diff -Nrup a/elf/dl-load.c b/elf/dl-load.c
+--- a/elf/dl-load.c    2013-01-10 08:57:20.098898830 -0500
++++ b/elf/dl-load.c    2013-01-10 12:04:48.155962895 -0500
+@@ -819,7 +819,7 @@ lose (int code, int fd, const char *name
+     {
+       r->r_state = RT_CONSISTENT;
+       _dl_debug_state ();
+-      LIBC_PROBE (rtld_map_complete, 2, nsid, r);
++      LIBC_PROBE (rtld_map_complete, 3, nsid, r, NULL);
+     }
+   _dl_signal_error (code, name, NULL, msg);
+diff -Nrup a/elf/dl-open.c b/elf/dl-open.c
+--- a/elf/dl-open.c    2013-01-10 08:57:19.917897417 -0500
++++ b/elf/dl-open.c    2013-01-10 12:06:04.644775710 -0500
+@@ -298,7 +298,7 @@ dl_open_worker (void *a)
+   struct r_debug *r = _dl_debug_initialize (0, args->nsid);
+   r->r_state = RT_CONSISTENT;
+   _dl_debug_state ();
+-  LIBC_PROBE (rtld_map_complete, 2, args->nsid, r);
++  LIBC_PROBE (rtld_map_complete, 3, args->nsid, r, new);
+   /* Only do lazy relocation if `LD_BIND_NOW' is not set.  */
+   int reloc_mode = mode & __RTLD_AUDIT;
+@@ -472,7 +472,7 @@ TLS generation counter wrapped!  Please 
+   /* Notify the debugger all new objects have been relocated.  */
+   if (relocation_in_progress)
+-    LIBC_PROBE (rtld_reloc_complete, 2, args->nsid, r);
++    LIBC_PROBE (rtld_reloc_complete, 3, args->nsid, r, new);
+   /* Run the initializer functions of new objects.  */
+   _dl_init (new, args->argc, args->argv, args->env);
diff --git a/src/patches/glibc/glibc-rh905575.patch b/src/patches/glibc/glibc-rh905575.patch
new file mode 100644 (file)
index 0000000..70baa89
--- /dev/null
@@ -0,0 +1,72 @@
+diff -rup a/sysdeps/ieee754/dbl-64/slowexp.c b/sysdeps/ieee754/dbl-64/slowexp.c
+--- a/sysdeps/ieee754/dbl-64/slowexp.c 2012-01-01 05:16:32.000000000 -0700
++++ b/sysdeps/ieee754/dbl-64/slowexp.c 2012-03-13 11:57:51.225330782 -0600
+@@ -31,6 +31,8 @@
+ #include "mpa.h"
+ #include "math_private.h"
++#include <stap-probe.h>
++
+ void __mpexp(mp_no *x, mp_no *y, int p);
+ /*Converting from double precision to Multi-precision and calculating  e^x */
+@@ -61,12 +63,21 @@ __slowexp(double x) {
+   __sub(&mpy,&mpcor,&mpz,p);
+   __mp_dbl(&mpw, &w, p);
+   __mp_dbl(&mpz, &z, p);
+-  if (w == z) return w;
++  if (w == z) {
++    /* Track how often we get to the slow exp code plus
++       its input/output values.  */
++    LIBC_PROBE (slowexp_p6, 2, &x, &w);
++    return w;
++  }
+   else  {                   /* if calculating is not exactly   */
+     p = 32;
+     __dbl_mp(x,&mpx,p);
+     __mpexp(&mpx, &mpy, p);
+     __mp_dbl(&mpy, &res, p);
++ 
++    /* Track how often we get to the uber-slow exp code plus
++       its input/output values.  */
++    LIBC_PROBE (slowexp_p32, 2, &x, &res);
+     return res;
+   }
+ }
+diff -rup a/sysdeps/ieee754/dbl-64/slowpow.c b/sysdeps/ieee754/dbl-64/slowpow.c
+--- a/sysdeps/ieee754/dbl-64/slowpow.c 2012-01-01 05:16:32.000000000 -0700
++++ b/sysdeps/ieee754/dbl-64/slowpow.c 2012-03-13 11:57:59.865284437 -0600
+@@ -35,6 +35,8 @@
+ #include "mpa.h"
+ #include "math_private.h"
++#include <stap-probe.h>
++
+ void __mpexp(mp_no *x, mp_no *y, int p);
+ void __mplog(mp_no *x, mp_no *y, int p);
+ double ulog(double);
+@@ -66,7 +68,12 @@ __slowpow(double x, double y, double z)
+   __mp_dbl(&mpr, &res, p);
+   __sub(&mpp,&eps,&mpr1,p);   /*  pp -eps =r1 */
+   __mp_dbl(&mpr1, &res1, p);  /*  converting into double precision */
+-  if (res == res1) return res;
++  if (res == res1) {
++    /* Track how often we get to the slow pow code plus
++       its input/output values.  */
++    LIBC_PROBE (slowpow_p10, 4, &x, &y, &z, &res);
++    return res;
++  }
+   p = 32;     /* if we get here result wasn't calculated exactly, continue */
+   __dbl_mp(x,&mpx,p);                          /* for more exact calculation */
+@@ -76,5 +83,10 @@ __slowpow(double x, double y, double z)
+   __mul(&mpy,&mpz,&mpw,p);  /* y*z =w    */
+   __mpexp(&mpw, &mpp, p);   /* e^w=pp    */
+   __mp_dbl(&mpp, &res, p);  /* converting into double precision */
++
++  /* Track how often we get to the uber-slow pow code plus
++     its input/output values.  */
++    LIBC_PROBE (slowpow_p32, 4, &x, &y, &z, &res);
++
+   return res;
+ }
diff --git a/src/patches/glibc/glibc-rh905874.patch b/src/patches/glibc/glibc-rh905874.patch
new file mode 100644 (file)
index 0000000..1d9ea10
--- /dev/null
@@ -0,0 +1,174 @@
+#
+# Backported from upstream.
+#
+# - Add en_US.UTF-8 as pre-requisite for regression test:
+#
+# commit 62c4a69dc2aea24776cbf0e951d41709a7408cc6
+# Author: Joseph Myers <joseph@codesourcery.com>
+# Date:   Thu Nov 1 00:22:04 2012 +0000
+#
+#    Build en_US.UTF-8 locale for testing.
+#
+# - Fix buffer overrun:
+#
+# commit a445af0bc722d620afed7683cd320c0e4c7c6059
+# Author: Andreas Schwab <schwab@suse.de>
+# Date:   Tue Jan 29 14:45:15 2013 +0100
+#
+#    Fix buffer overrun in regexp matcher
+#
+# ChangeLog/
+# 2013-02-12  Andreas Schwab  <schwab@suse.de>
+# 
+#      [BZ #15078]
+#      * posix/regexec.c (extend_buffers): Add parameter min_len.
+#      (check_matching): Pass minimum needed length.
+#      (clean_state_log_if_needed): Likewise.
+#      (get_subexp): Likewise.
+#      * posix/Makefile (tests): Add bug-regex34.
+#      (bug-regex34-ENV): Define.
+#      * posix/bug-regex34.c: New file.
+#
+diff -urN glibc-2.12-2-gc4ccff1.orig/localedata/Makefile glibc-2.12-2-gc4ccff1/localedata/Makefile
+--- glibc-2.12-2-gc4ccff1.orig/localedata/Makefile     2013-07-24 20:40:37.364888120 -0400
++++ glibc-2.12-2-gc4ccff1/localedata/Makefile  2013-07-24 20:59:54.713289753 -0400
+@@ -133,7 +133,7 @@
+ ifeq (no,$(cross-compiling))
+ # We have to generate locales
+ LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \
+-         en_US.ISO-8859-1 ja_JP.EUC-JP da_DK.ISO-8859-1 \
++         en_US.ISO-8859-1 en_US.UTF-8 ja_JP.EUC-JP da_DK.ISO-8859-1 \
+          hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS fr_FR.ISO-8859-1 \
+          vi_VN.TCVN5712-1 nb_NO.ISO-8859-1 nn_NO.ISO-8859-1 \
+          tr_TR.UTF-8 cs_CZ.UTF-8 zh_TW.EUC-TW fa_IR.UTF-8 fr_FR.UTF-8 \
+diff -urN glibc-2.12-2-gc4ccff1.orig/posix/bug-regex34.c glibc-2.12-2-gc4ccff1/posix/bug-regex34.c
+--- glibc-2.12-2-gc4ccff1.orig/posix/bug-regex34.c     1969-12-31 19:00:00.000000000 -0500
++++ glibc-2.12-2-gc4ccff1/posix/bug-regex34.c  2013-07-24 20:59:54.713289753 -0400
+@@ -0,0 +1,46 @@
++/* Test re_search with multi-byte characters in UTF-8.
++   Copyright (C) 2013 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/>.  */
++
++#define _GNU_SOURCE 1
++#include <stdio.h>
++#include <string.h>
++#include <locale.h>
++#include <regex.h>
++
++static int
++do_test (void)
++{
++  struct re_pattern_buffer r;
++  /* ကျွန်ုပ်x */
++  const char *s = "\xe1\x80\x80\xe1\x80\xbb\xe1\x80\xbd\xe1\x80\x94\xe1\x80\xba\xe1\x80\xaf\xe1\x80\x95\xe1\x80\xbax";
++
++  if (setlocale (LC_ALL, "en_US.UTF-8") == NULL)
++    {
++      puts ("setlocale failed");
++      return 1;
++    }
++  memset (&r, 0, sizeof (r));
++
++  re_compile_pattern ("[^x]x", 5, &r);
++  /* This was triggering a buffer overflow.  */
++  re_search (&r, s, strlen (s), 0, strlen (s), 0);
++  return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+diff -urN glibc-2.12-2-gc4ccff1.orig/posix/Makefile glibc-2.12-2-gc4ccff1/posix/Makefile
+--- glibc-2.12-2-gc4ccff1.orig/posix/Makefile  2013-07-24 20:40:37.399888098 -0400
++++ glibc-2.12-2-gc4ccff1/posix/Makefile       2013-07-24 21:00:43.267265979 -0400
+@@ -94,7 +94,7 @@
+                  tst-rfc3484-3 \
+                  tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset \
+                  bug-getopt1 bug-getopt2 bug-getopt3 bug-getopt4 \
+-                 bug-getopt5
++                 bug-getopt5 bug-regex34
+ xtests                := bug-ga2
+ ifeq (yes,$(build-shared))
+ test-srcs     := globtest
+@@ -199,6 +199,7 @@
+ bug-regex25-ENV = LOCPATH=$(common-objpfx)localedata
+ bug-regex26-ENV = LOCPATH=$(common-objpfx)localedata
+ bug-regex30-ENV = LOCPATH=$(common-objpfx)localedata
++bug-regex34-ENV = LOCPATH=$(common-objpfx)localedata
+ tst-rxspencer-ARGS = --utf8 rxspencer/tests
+ tst-rxspencer-ENV = LOCPATH=$(common-objpfx)localedata
+ tst-pcre-ARGS = PCRE.tests
+diff -urN glibc-2.12-2-gc4ccff1.orig/posix/regexec.c glibc-2.12-2-gc4ccff1/posix/regexec.c
+--- glibc-2.12-2-gc4ccff1.orig/posix/regexec.c 2013-07-24 20:40:37.396888100 -0400
++++ glibc-2.12-2-gc4ccff1/posix/regexec.c      2013-07-24 21:02:53.005156187 -0400
+@@ -198,7 +198,7 @@
+ static int check_node_accept (const re_match_context_t *mctx,
+                             const re_token_t *node, int idx)
+      internal_function;
+-static reg_errcode_t extend_buffers (re_match_context_t *mctx)
++static reg_errcode_t extend_buffers (re_match_context_t *mctx, int min_len)
+      internal_function;
\f
+ /* Entry point for POSIX code.  */
+@@ -1160,7 +1160,7 @@
+         || (BE (next_char_idx >= mctx->input.valid_len, 0)
+             && mctx->input.valid_len < mctx->input.len))
+       {
+-        err = extend_buffers (mctx);
++        err = extend_buffers (mctx, next_char_idx + 1);
+         if (BE (err != REG_NOERROR, 0))
+           {
+             assert (err == REG_ESPACE);
+@@ -1737,7 +1737,7 @@
+         && mctx->input.valid_len < mctx->input.len))
+     {
+       reg_errcode_t err;
+-      err = extend_buffers (mctx);
++      err = extend_buffers (mctx, next_state_log_idx + 1);
+       if (BE (err != REG_NOERROR, 0))
+       return err;
+     }
+@@ -2791,7 +2791,7 @@
+                 if (bkref_str_off >= mctx->input.len)
+                   break;
+-                err = extend_buffers (mctx);
++                err = extend_buffers (mctx, bkref_str_off + 1);
+                 if (BE (err != REG_NOERROR, 0))
+                   return err;
+@@ -4099,7 +4099,7 @@
+ static reg_errcode_t
+ internal_function __attribute_warn_unused_result__
+-extend_buffers (re_match_context_t *mctx)
++extend_buffers (re_match_context_t *mctx, int min_len)
+ {
+   reg_errcode_t ret;
+   re_string_t *pstr = &mctx->input;
+@@ -4108,8 +4108,10 @@
+   if (BE (INT_MAX / 2 / sizeof (re_dfastate_t *) <= pstr->bufs_len, 0))
+     return REG_ESPACE;
+-  /* Double the lengthes of the buffers.  */
+-  ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
++  /* Double the lengthes of the buffers, but allocate at least MIN_LEN.  */
++  ret = re_string_realloc_buffers (pstr,
++                                 MAX (min_len,
++                                      MIN (pstr->len, pstr->bufs_len * 2)));
+   if (BE (ret != REG_NOERROR, 0))
+     return ret;
diff --git a/src/patches/glibc/glibc-rh916986.patch b/src/patches/glibc/glibc-rh916986.patch
new file mode 100644 (file)
index 0000000..9bed61f
--- /dev/null
@@ -0,0 +1,123 @@
+commit cf7c9078a5acdbb435498ace92cd81009637a971
+Author: Ulrich Drepper <drepper@redhat.com>
+Date:   Fri Nov 19 09:35:39 2010 -0500
+
+    Define MAP_HUGETLB.
+
+       * sysdeps/unix/sysv/linux/i386/bits/mman.h: Define MAP_HUGETLB.
+       * sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Likewise.
+
+commit dd62fda6cc83b3afa150a4be7d273ab118bf9825
+Author: Anton Blanchard <anton@samba.org>
+Date:   Tue Mar 27 18:37:16 2012 -0700
+
+    Define MAP_STACK and MAP_HUGETLB on powerpc, s390, sh and sparc.
+    
+        * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Define MAP_STACK and
+        MAP_HUGETLB.
+        * sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise.
+        * sysdeps/unix/sysv/linux/sh/bits/mman.h: Likewise.
+        * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise.
+
+commit 7e4fc5890e07549e5ad98b4244e3e0ed5c709e6a
+Author: Mike Frysinger <vapier@gentoo.org>
+Date:   Mon Apr 16 22:44:23 2012 -0400
+
+    ia64: add MAP_{STACK,HUGETLB} to bits/mman.h
+
+    Just adding new bit flags that newer kernels define.
+
+    Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+
+       * sysdeps/unix/sysv/linux/ia64/bits/mman.h (MAP_STACK): Define.
+       (MAP_HUGETLB): Likewise.
+
+Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/powerpc/bits/mman.h
+===================================================================
+--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/powerpc/bits/mman.h     2013-07-23 04:01:42.440052942 -0300
++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/powerpc/bits/mman.h  2013-07-23 22:26:42.317789260 -0300
+@@ -65,6 +65,8 @@
+ # define MAP_NORESERVE        0x00040         /* Don't check for reservations.  */
+ # define MAP_POPULATE 0x08000         /* Populate (prefault) pagetables.  */
+ # define MAP_NONBLOCK 0x10000         /* Do not block on IO.  */
++# define MAP_STACK    0x20000         /* Allocation is for a stack.  */
++# define MAP_HUGETLB  0x40000         /* Create huge page mapping.  */
+ #endif
+ /* Flags to `msync'.  */
+Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/mman.h
+===================================================================
+--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/s390/bits/mman.h        2013-07-23 04:01:42.447052393 -0300
++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/s390/bits/mman.h     2013-07-23 22:26:42.335787833 -0300
+@@ -64,6 +64,8 @@
+ # define MAP_NORESERVE        0x04000         /* Don't check for reservations.  */
+ # define MAP_POPULATE 0x08000         /* Populate (prefault) pagetables.  */
+ # define MAP_NONBLOCK 0x10000         /* Do not block on IO.  */
++# define MAP_STACK    0x20000         /* Allocation is for a stack.  */
++# define MAP_HUGETLB  0x40000         /* Create huge page mapping.  */
+ #endif
+ /* Flags to `msync'.  */
+Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sh/bits/mman.h
+===================================================================
+--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/sh/bits/mman.h  2010-05-04 08:27:23.000000000 -0300
++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sh/bits/mman.h       2013-07-23 22:26:42.336787753 -0300
+@@ -64,6 +64,8 @@
+ # define MAP_NORESERVE        0x4000          /* Don't check for reservations.  */
+ # define MAP_POPULATE 0x8000          /* Populate (prefault) pagetables.  */
+ # define MAP_NONBLOCK 0x10000         /* Do not block on IO.  */
++# define MAP_STACK    0x20000         /* Allocation is for a stack.  */
++# define MAP_HUGETLB  0x40000         /* Create huge page mapping.  */
+ #endif
+ /* Flags to `msync'.  */
+Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sparc/bits/mman.h
+===================================================================
+--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/sparc/bits/mman.h       2010-05-04 08:27:23.000000000 -0300
++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/sparc/bits/mman.h    2013-07-23 22:26:42.337787674 -0300
+@@ -66,6 +66,8 @@
+ # define _MAP_NEW     0x80000000      /* Binary compatibility with SunOS.  */
+ # define MAP_POPULATE 0x8000          /* Populate (prefault) pagetables.  */
+ # define MAP_NONBLOCK 0x10000         /* Do not block on IO.  */
++# define MAP_STACK    0x20000         /* Allocation is for a stack.  */
++# define MAP_HUGETLB  0x40000         /* Create huge page mapping.  */
+ #endif
+ /* Flags to `msync'.  */
+Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/bits/mman.h
+===================================================================
+--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/i386/bits/mman.h        2013-07-23 04:01:42.406055607 -0300
++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/i386/bits/mman.h     2013-07-23 22:32:37.407630135 -0300
+@@ -64,6 +64,7 @@
+ # define MAP_POPULATE 0x08000         /* Populate (prefault) pagetables.  */
+ # define MAP_NONBLOCK 0x10000         /* Do not block on IO.  */
+ # define MAP_STACK    0x20000         /* Allocation is for a stack.  */
++# define MAP_HUGETLB  0x40000         /* Create huge page mapping.  */
+ #endif
+ /* Flags to `msync'.  */
+Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/x86_64/bits/mman.h
+===================================================================
+--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/x86_64/bits/mman.h      2013-07-23 04:01:42.493048788 -0300
++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/x86_64/bits/mman.h   2013-07-23 22:32:37.433628073 -0300
+@@ -65,6 +65,7 @@
+ # define MAP_POPULATE 0x08000         /* Populate (prefault) pagetables.  */
+ # define MAP_NONBLOCK 0x10000         /* Do not block on IO.  */
+ # define MAP_STACK    0x20000         /* Allocation is for a stack.  */
++# define MAP_HUGETLB  0x40000         /* Create huge page mapping.  */
+ #endif
+ /* Flags to `msync'.  */
+Index: glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/bits/mman.h
+===================================================================
+--- glibc-2.12-2-gc4ccff1.orig/sysdeps/unix/sysv/linux/ia64/bits/mman.h        2010-05-04 08:27:23.000000000 -0300
++++ glibc-2.12-2-gc4ccff1/sysdeps/unix/sysv/linux/ia64/bits/mman.h     2013-07-23 22:37:28.643530951 -0300
+@@ -65,6 +65,8 @@
+ # define MAP_NORESERVE          0x04000       /* Don't check for reservations.  */
+ # define MAP_POPULATE   0x08000       /* Populate (prefault) pagetables.  */
+ # define MAP_NONBLOCK   0x10000       /* Do not block on IO.  */
++# define MAP_STACK      0x20000       /* Allocation is for a stack.  */
++# define MAP_HUGETLB    0x40000       /* Create huge page mapping.  */
+ #endif
+ /* Flags to `msync'.  */
diff --git a/src/patches/glibc/glibc-rh928318.patch b/src/patches/glibc/glibc-rh928318.patch
new file mode 100644 (file)
index 0000000..36aa19a
--- /dev/null
@@ -0,0 +1,31 @@
+diff --git a/resolv/res_init.c b/resolv/res_init.c
+index 40dbe7d..202569d 100644
+--- a/resolv/res_init.c
++++ b/resolv/res_init.c
+@@ -176,13 +176,6 @@ __res_vinit(res_state statp, int preinit) {
+               statp->id = res_randomid();
+       }
+-#ifdef USELOOPBACK
+-      statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1);
+-#else
+-      statp->nsaddr.sin_addr.s_addr = INADDR_ANY;
+-#endif
+-      statp->nsaddr.sin_family = AF_INET;
+-      statp->nsaddr.sin_port = htons(NAMESERVER_PORT);
+       statp->nscount = 0;
+       statp->ndots = 1;
+       statp->pfcode = 0;
+@@ -433,6 +426,12 @@ __res_vinit(res_state statp, int preinit) {
+ #endif
+           (void) fclose(fp);
+       }
++      if (__builtin_expect(statp->nscount == 0, 0)) {
++          statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1);
++          statp->nsaddr.sin_family = AF_INET;
++          statp->nsaddr.sin_port = htons(NAMESERVER_PORT);
++          statp->nscount = 1;
++      }
+       if (statp->defdname[0] == 0 &&
+           __gethostname(buf, sizeof(statp->defdname) - 1) == 0 &&
+           (cp = strchr(buf, '.')) != NULL)
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-rh947882.patch b/src/patches/glibc/glibc-rh947882.patch
new file mode 100644 (file)
index 0000000..6d10982
--- /dev/null
@@ -0,0 +1,63 @@
+#
+# Backport from upstream:
+#
+# From 1cef1b19089528db11f221e938f60b9b048945d7 Mon Sep 17 00:00:00 2001
+# From: Andreas Schwab <schwab@suse.de>
+# Date: Thu, 21 Mar 2013 15:50:27 +0100
+# Subject: [PATCH] Fix stack overflow in getaddrinfo with many results
+#
+# ---
+# ChangeLog                   |    6 ++++++
+# NEWS                        |    5 ++++-
+# sysdeps/posix/getaddrinfo.c |   23 +++++++++++++++++++++--
+# 3 files changed, 31 insertions(+), 3 deletions(-)
+#
+# 2013-04-03  Andreas Schwab  <schwab@suse.de>
+#
+#      [BZ #15330]
+#      * sysdeps/posix/getaddrinfo.c (getaddrinfo): Allocate results and
+#      order arrays from heap if bigger than alloca cutoff.
+#
+diff -urN glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/getaddrinfo.c glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c
+--- glibc-2.12-2-gc4ccff1.orig/sysdeps/posix/getaddrinfo.c     2013-07-24 20:40:37.601887975 -0400
++++ glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c  2013-07-24 20:54:32.722447705 -0400
+@@ -2386,11 +2386,27 @@
+       __typeof (once) old_once = once;
+       __libc_once (once, gaiconf_init);
+       /* Sort results according to RFC 3484.  */
+-      struct sort_result results[nresults];
+-      size_t order[nresults];
++      struct sort_result *results;
++      size_t *order;
+       struct addrinfo *q;
+       struct addrinfo *last = NULL;
+       char *canonname = NULL;
++      bool malloc_results;
++
++      malloc_results
++      = !__libc_use_alloca (nresults * (sizeof (*results) + sizeof (*order)));
++      if (malloc_results)
++      {
++        results = malloc (nresults * (sizeof (*results) + sizeof (*order)));
++        if (results == NULL)
++          {
++            free (in6ai);
++            return EAI_MEMORY;
++          }
++      }
++      else
++      results = alloca (nresults * (sizeof (*results) + sizeof (*order)));
++      order = (size_t *) (results + nresults);
+       /* If we have information about deprecated and temporary addresses
+        sort the array now.  */
+@@ -2557,6 +2573,9 @@
+       /* Fill in the canonical name into the new first entry.  */
+       p->ai_canonname = canonname;
++
++      if (malloc_results)
++      free (results);
+     }
+   free (in6ai);
diff --git a/src/patches/glibc/glibc-rh952422.patch b/src/patches/glibc/glibc-rh952422.patch
new file mode 100644 (file)
index 0000000..c73bf52
--- /dev/null
@@ -0,0 +1,127 @@
+diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
+index af454b6..249bd19 100644
+--- a/sysdeps/unix/sysv/linux/getsysstats.c
++++ b/sysdeps/unix/sysv/linux/getsysstats.c
+@@ -35,6 +34,7 @@
+ #include <atomic.h>
+ #include <not-cancel.h>
++#include <kernel-features.h>
+ /* How we can determine the number of available processors depends on
+@@ -49,8 +49,6 @@
+    But not all systems have support for the /proc filesystem.  If it
+    is not available we simply return 1 since there is no way.  */
+-#include <not-cancel.h>
+-
+ /* Other architectures use different formats for /proc/cpuinfo.  This
+    provides a hook for alternative parsers.  */
+@@ -128,6 +126,15 @@ next_line (int fd, char *const buffer, char **cp, char **re,
+ int
+ __get_nprocs ()
+ {
++  static int cached_result;
++  static time_t timestamp;
++
++  time_t now = time (NULL);
++  time_t prev = timestamp;
++  atomic_read_barrier ();
++  if (now == prev)
++    return cached_result;
++
+   /* XXX Here will come a test for the new system call.  */
+   const size_t buffer_size = __libc_use_alloca (8192) ? 8192 : 512;
+@@ -135,20 +142,65 @@ __get_nprocs ()
+   char *buffer_end = buffer + buffer_size;
+   char *cp = buffer_end;
+   char *re = buffer_end;
+-  int result = 1;
+ #ifdef O_CLOEXEC
+   const int flags = O_RDONLY | O_CLOEXEC;
+ #else
+   const int flags = O_RDONLY;
+ #endif
++  int fd = open_not_cancel_2 ("/sys/devices/system/cpu/online", flags);
++  char *l;
++  int result = 0;
++  if (fd != -1)
++    {
++      l = next_line (fd, buffer, &cp, &re, buffer_end);
++      if (l != NULL)
++      do
++        {
++          char *endp;
++          unsigned long int n = strtoul (l, &endp, 10);
++          if (l == endp)
++            {
++              result = 0;
++              break;
++            }
++
++          unsigned long int m = n;
++          if (*endp == '-')
++            {
++              l = endp + 1;
++              m = strtoul (l, &endp, 10);
++              if (l == endp)
++                {
++                  result = 0;
++                  break;
++                }
++            }
++
++          result += m - n + 1;
++
++          l = endp;
++          while (l < re && isspace (*l))
++            ++l;
++        }
++      while (l < re);
++
++      close_not_cancel_no_status (fd);
++
++      if (result > 0)
++      goto out;
++    }
++
++  cp = buffer_end;
++  re = buffer_end;
++  result = 1;
++
+   /* The /proc/stat format is more uniform, use it by default.  */
+-  int fd = open_not_cancel_2 ("/proc/stat", flags);
++  fd = open_not_cancel_2 ("/proc/stat", flags);
+   if (fd != -1)
+     {
+       result = 0;
+-      char *l;
+       while ((l = next_line (fd, buffer, &cp, &re, buffer_end)) != NULL)
+       /* The current format of /proc/stat has all the cpu* entries
+          at the front.  We assume here that stays this way.  */
+@@ -169,6 +221,11 @@ __get_nprocs ()
+       }
+     }
++ out:
++  cached_result = result;
++  atomic_write_barrier ();
++  timestamp = now;
++
+   return result;
+ }
+ weak_alias (__get_nprocs, get_nprocs)
+@@ -236,7 +293,7 @@ phys_pages_info (const char *format)
+   long int result = -1;
+   /* If we haven't found an appropriate entry return 1.  */
+-  FILE *fp = fopen ("/proc/meminfo", "rc");
++  FILE *fp = fopen ("/proc/meminfo", "rce");
+   if (fp != NULL)
+     {
+       /* No threads use this stream.  */
diff --git a/src/patches/glibc/glibc-rh966775.patch b/src/patches/glibc/glibc-rh966775.patch
new file mode 100644 (file)
index 0000000..32a0f21
--- /dev/null
@@ -0,0 +1,177 @@
+diff -pruN glibc-2.12-2-gc4ccff1/math/math_private.h glibc-2.12-2-gc4ccff1.new/math/math_private.h
+--- glibc-2.12-2-gc4ccff1/math/math_private.h  2013-06-07 08:35:52.785442441 -0400
++++ glibc-2.12-2-gc4ccff1.new/math/math_private.h      2013-06-07 08:29:35.621042340 -0400
+@@ -394,4 +394,31 @@ extern void __docos (double __x, double 
+ #define libc_feupdateenvf(e) (void) feupdateenv (e)
+ #define libc_feupdateenvl(e) (void) feupdateenv (e)
++/* Save and set the rounding mode.  The use of fenv_t to store the old mode
++   allows a target-specific version of this function to avoid converting the
++   rounding mode from the fpu format.  By default we have no choice but to
++   manipulate the entire env.  */
++
++#ifndef libc_feholdsetround
++# define libc_feholdsetround(e, r, c)  libc_feholdexcept_setround(e, r)
++#endif
++#ifndef libc_feholdsetroundf
++# define libc_feholdsetroundf(e, r, c) libc_feholdexcept_setroundf(e, r)
++#endif
++#ifndef libc_feholdsetroundl
++# define libc_feholdsetroundl(e, r, c) libc_feholdexcept_setroundl(e, r)
++#endif
++
++/* ... and the reverse.  */
++
++#ifndef libc_feresetround
++# define libc_feresetround(e, c)  libc_feupdateenv(e)
++#endif
++#ifndef libc_feresetroundf
++# define libc_feresetroundf(e, c) libc_feupdateenvf(e)
++#endif
++#ifndef libc_feresetroundl
++# define libc_feresetroundl(e, c) libc_feupdateenvl(e)
++#endif
++
+ #endif /* _MATH_PRIVATE_H_ */
+diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_exp.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_exp.c
+--- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_exp.c       2013-06-07 08:35:52.785442441 -0400
++++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_exp.c   2013-06-07 08:30:21.976222459 -0400
+@@ -57,7 +57,8 @@ double __ieee754_exp(double x) {
+   fenv_t env;
+   double retval;
+-  libc_feholdexcept_setround (&env, FE_TONEAREST);
++  int changed;
++  libc_feholdsetround (&env, FE_TONEAREST, changed);
+   junk1.x = x;
+   m = junk1.i[HIGH_HALF];
+@@ -152,7 +153,7 @@ double __ieee754_exp(double x) {
+     else { retval = __slowexp(x); goto ret; }
+   }
+  ret:
+-  libc_feupdateenv (&env);
++  libc_feresetround (&env, changed);
+   return retval;
+ }
+diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_pow.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_pow.c
+--- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/e_pow.c       2013-06-07 08:35:52.785442441 -0400
++++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/e_pow.c   2013-06-07 08:31:00.294939087 -0400
+@@ -83,7 +83,8 @@ double __ieee754_pow(double x, double y)
+     fenv_t env;
+     double retval;
+-    libc_feholdexcept_setround (&env, FE_TONEAREST);
++    int changed;
++    libc_feholdsetround (&env, FE_TONEAREST, changed);
+     z = log1(x,&aa,&error);                                 /* x^y  =e^(y log (X)) */
+     t = y*134217729.0;
+@@ -100,7 +101,7 @@ double __ieee754_pow(double x, double y)
+     t = __exp1(a1,a2,1.9e16*error);     /* return -10 or 0 if wasn't computed exactly */
+     retval = (t>0)?t:power1(x,y);
+-    libc_feupdateenv (&env);
++    libc_feresetround (&env, changed);
+     return retval;
+   }
+diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_sin.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_sin.c
+--- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_sin.c       2013-06-07 08:35:52.786442462 -0400
++++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_sin.c   2013-06-07 08:32:08.254822633 -0400
+@@ -101,7 +101,8 @@ double __sin(double x){
+       fenv_t env;
+       double retval = 0;
+-      libc_feholdexcept_setround (&env, FE_TONEAREST);
++      int changed;
++      libc_feholdsetround (&env, FE_TONEAREST, changed);
+       u.x = x;
+       m = u.i[HIGH_HALF];
+@@ -355,7 +356,7 @@ double __sin(double x){
+       }
+  ret:
+-      libc_feupdateenv (&env);
++      libc_feresetround (&env, changed);
+       return retval;
+ }
+@@ -374,7 +375,8 @@ double __cos(double x)
+   fenv_t env;
+   double retval = 0;
+-  libc_feholdexcept_setround (&env, FE_TONEAREST);
++  int changed;
++  libc_feholdsetround (&env, FE_TONEAREST, changed);
+   u.x = x;
+   m = u.i[HIGH_HALF];
+@@ -623,7 +625,7 @@ double __cos(double x)
+   }
+  ret:
+-  libc_feupdateenv (&env);
++  libc_feresetround (&env, changed);
+   return retval;
+ }
+diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_tan.c glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_tan.c
+--- glibc-2.12-2-gc4ccff1/sysdeps/ieee754/dbl-64/s_tan.c       2013-06-07 08:35:52.786442462 -0400
++++ glibc-2.12-2-gc4ccff1.new/sysdeps/ieee754/dbl-64/s_tan.c   2013-06-07 08:32:39.736162619 -0400
+@@ -66,7 +66,8 @@ double tan(double x) {
+   int __branred(double, double *, double *);
+   int __mpranred(double, mp_no *, int);
+-  libc_feholdexcept_setround (&env, FE_TONEAREST);
++  int changed;
++  libc_feholdsetround (&env, FE_TONEAREST, changed);
+   /* x=+-INF, x=NaN */
+   num.d = x;  ux = num.i[HIGH_HALF];
+@@ -495,7 +496,7 @@ double tan(double x) {
+   goto ret;
+  ret:
+-  libc_feupdateenv (&env);
++  libc_feresetround (&env, changed);
+   return retval;
+ }
+diff -pruN glibc-2.12-2-gc4ccff1/sysdeps/x86_64/fpu/math_private.h glibc-2.12-2-gc4ccff1.new/sysdeps/x86_64/fpu/math_private.h
+--- glibc-2.12-2-gc4ccff1/sysdeps/x86_64/fpu/math_private.h    2013-06-07 08:35:52.787442488 -0400
++++ glibc-2.12-2-gc4ccff1.new/sysdeps/x86_64/fpu/math_private.h        2013-06-07 08:34:35.370109759 -0400
+@@ -139,3 +139,31 @@ do {                                                              \
+ #undef libc_feupdateenvf
+ #define libc_feupdateenvf(e) libc_feupdateenv (e)
+ // #define libc_feupdateenvl(e) (void) feupdateenv (e)
++
++#undef libc_feholdsetround
++#define libc_feholdsetround(e, r, c) \
++({ \
++  unsigned int mxcsr, new_mxcsr; \
++  asm ("stmxcsr %0" : "=m" (*&mxcsr)); \
++  new_mxcsr = (mxcsr & ~0x6000) | ((r) << 3); \
++  if (__builtin_expect (new_mxcsr != mxcsr, 0)) \
++    { \
++      (e)->__mxcsr = mxcsr; \
++      asm volatile ("ldmxcsr %0" : : "m" (*&new_mxcsr)); \
++      c = 1; \
++    } \
++  else \
++    c = 0; \
++})
++
++#undef libc_feresetround
++#define libc_feresetround(e, c) \
++({ \
++  if (__builtin_expect (c, 0)) \
++    { \
++      unsigned int mxcsr; \
++      asm ("stmxcsr %0" : "=m" (*&mxcsr)); \
++      mxcsr = (mxcsr & ~0x6000) | ((e)->__mxcsr & 0x6000); \
++      asm volatile ("ldmxcsr %0" : : "m" (*&mxcsr)); \
++    } \
++})
diff --git a/src/patches/glibc/glibc-rh966778.patch b/src/patches/glibc/glibc-rh966778.patch
new file mode 100644 (file)
index 0000000..d8fd3fa
--- /dev/null
@@ -0,0 +1,54 @@
+commit 3056dcdb783a177158a5617657d1a33f872358d6
+Author: Ulrich Drepper <drepper@redhat.com>
+Date:   Mon Nov 22 11:11:24 2010 -0500
+
+    Fix multiple nss_compat initgroups() bugs
+    
+    Compat initgroups() is completely broken; the code will always set
+    skip_initgroups_dyn to true, so initgroups() will never be actually
+    called, but due to the nature of the code, setgrent() won't be called
+    either - thus, subsequent invocations of initgroups() will not return
+    the NIS group list anymore.
+    
+    This is a simple patch that makes sure skip_initgroups_dyn is set only
+    in case initgroups is not available; it also attempts to handle the
+    unavailability of other NSS interfaces better.
+    
+    Conflicts:
+    
+       ChangeLog
+
+diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c
+index 07a3b92..de8d95c 100644
+--- a/nis/nss_compat/compat-initgroups.c
++++ b/nis/nss_compat/compat-initgroups.c
+@@ -474,18 +474,21 @@ internal_getgrent_r (ent_t *ent, char *buffer, size_t buflen, const char *user,
+         /* If the selected module does not support getgrent_r or
+            initgroups_dyn, abort. We cannot find the needed group
+            entries.  */
+-        if (nss_getgrent_r == NULL && nss_initgroups_dyn == NULL)
++        if (nss_initgroups_dyn == NULL || nss_getgrgid_r == NULL)
++          {
++            if (nss_setgrent != NULL)
++              {
++                nss_setgrent (1);
++                ent->need_endgrent = true;
++              }
++            ent->skip_initgroups_dyn = true;
++          }
++
++        if (ent->skip_initgroups_dyn && nss_getgrent_r == NULL)
+           return NSS_STATUS_UNAVAIL;
+         ent->files = false;
+-        if (nss_initgroups_dyn == NULL && nss_setgrent != NULL)
+-          {
+-            nss_setgrent (1);
+-            ent->need_endgrent = true;
+-          }
+-        ent->skip_initgroups_dyn = true;
+-
+         return getgrent_next_nss (ent, buffer, buflen, user, group,
+                                   start, size, groupsp, limit, errnop);
+       }
diff --git a/src/patches/glibc/glibc-rh970090.patch b/src/patches/glibc/glibc-rh970090.patch
new file mode 100644 (file)
index 0000000..6010624
--- /dev/null
@@ -0,0 +1,24 @@
+diff -pruN glibc-2.18/nscd/aicache.c glibc-2.18.new/nscd/aicache.c
+--- glibc-2.18/nscd/aicache.c  2013-08-11 04:22:55.000000000 +0530
++++ glibc-2.18.new/nscd/aicache.c      2013-08-26 11:10:25.843470413 +0530
+@@ -25,6 +25,7 @@
+ #include <time.h>
+ #include <unistd.h>
+ #include <sys/mman.h>
++#include <resolv/res_hconf.h>
+ #include "dbg_log.h"
+ #include "nscd.h"
+@@ -100,8 +101,11 @@ addhstaiX (struct database_dyn *db, int
+     no_more = __nss_database_lookup ("hosts", NULL,
+                                    "dns [!UNAVAIL=return] files", &nip);
++  /* Initialize configurations.  */
++  if (__builtin_expect (!_res_hconf.initialized, 0))
++    _res_hconf_init ();
+   if (__res_maybe_init (&_res, 0) == -1)
+-          no_more = 1;
++    no_more = 1;
+   /* If we are looking for both IPv4 and IPv6 address we don't want
+      the lookup functions to automatically promote IPv4 addresses to
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/hostname-rh.patch b/src/patches/hostname-rh.patch
new file mode 100644 (file)
index 0000000..d56ae59
--- /dev/null
@@ -0,0 +1,69 @@
+diff -up hostname/Makefile.rh hostname/Makefile
+--- hostname/Makefile.rh       2013-11-04 10:12:59.670379153 +0100
++++ hostname/Makefile  2013-11-04 10:15:04.957314495 +0100
+@@ -10,21 +10,17 @@ OBJS=hostname.o
+ hostname: $(OBJS)
+       $(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS) -lnsl
+-      ln -fs hostname dnsdomainname
+-      ln -fs hostname domainname
+-      ln -fs hostname ypdomainname
+-      ln -fs hostname nisdomainname
+ install: hostname
+       install -d ${BASEDIR}$(MANDIR)/man1
+-      install -o root -g root -m 0644 hostname.1 ${BASEDIR}$(MANDIR)/man1
++      install -m 0644 hostname.1 ${BASEDIR}$(MANDIR)/man1
+       ln -fs hostname.1 ${BASEDIR}$(MANDIR)/man1/dnsdomainname.1
+       ln -fs hostname.1 ${BASEDIR}$(MANDIR)/man1/domainname.1
+       ln -fs hostname.1 ${BASEDIR}$(MANDIR)/man1/ypdomainname.1
+       ln -fs hostname.1 ${BASEDIR}$(MANDIR)/man1/nisdomainname.1
+       install -d ${BASEDIR}$(BINDIR)
+-      install -o root -g root -m 0755 hostname ${BASEDIR}$(BINDIR)
++      install -m 0755 hostname ${BASEDIR}$(BINDIR)
+       ln -fs hostname ${BASEDIR}$(BINDIR)/dnsdomainname
+       ln -fs hostname ${BASEDIR}$(BINDIR)/domainname
+       ln -fs hostname ${BASEDIR}$(BINDIR)/nisdomainname
+diff -up hostname/hostname.1.rh hostname/hostname.1
+--- hostname/hostname.1.rh     2013-11-03 15:24:23.000000000 +0100
++++ hostname/hostname.1        2013-11-04 10:12:59.670379153 +0100
+@@ -80,6 +80,28 @@ complete FQDN of the system is returned
+ .B "THE FQDN"
+ below).
++.LP
++The function 
++.BR gethostname(2)
++is used to get the hostname.  When the 
++.BR "hostname \-a, \-d, \-f or \-i" 
++is called will 
++.BR gethostbyname(3)
++be called.  The difference in 
++.BR gethostname(2)
++and
++.BR gethostbyname(3)
++is that
++.BR gethostbyname(3)
++is network aware, so it consults 
++.IR /etc/nsswitch.conf
++and
++.IR /etc/host.conf
++to decide whether to read information in
++.IR /etc/hostname
++or
++.IR /etc/hosts
++
+ .SS "SET NAME"
+ When called with one argument or with the
+ .B \-\-file
+@@ -105,8 +127,7 @@ command (see
+ .B "THE FQDN"
+ below).
+ .LP
+-The host name is usually set once at system startup in
+-.I /etc/init.d/hostname.sh
++The host name is usually set once at system startup
+ (normally by reading the contents of a file which contains
+ the host name, e.g.
+ .IR /etc/hostname ).
diff --git a/src/patches/icecream-0.9.7-platform-arm.patch b/src/patches/icecream-0.9.7-platform-arm.patch
deleted file mode 100644 (file)
index 53402f0..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Index: services/scheduler.cpp
-===================================================================
---- services/scheduler.cpp     (revision 1310078)
-+++ services/scheduler.cpp     (working copy)
-@@ -52,7 +52,7 @@
- #include "config.h"
- #include "bench.h"
--#define DEBUG_SCHEDULER 0
-+#define DEBUG_SCHEDULER 1
- /* TODO:
-    * leak check
-@@ -613,6 +613,8 @@
-       platform_map.insert( make_pair( string( "ppc" ), string( "ppc64" ) ) );
-       platform_map.insert( make_pair( string( "s390" ), string( "s390x" ) ) );
-+
-+      platform_map.insert( make_pair( string( "armv5tel"), string( "armv7l" ) ) );
-     }
-   multimap<string, string>::const_iterator end = platform_map.upper_bound( target );
diff --git a/src/patches/icecream-rename-scheduler.patch b/src/patches/icecream-rename-scheduler.patch
deleted file mode 100644 (file)
index 5de7738..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-Index: icecc-0.9.6/doc/man-scheduler.1.docbook
-===================================================================
---- icecc-0.9.6.orig/doc/man-scheduler.1.docbook
-+++ icecc-0.9.6/doc/man-scheduler.1.docbook
-@@ -23,13 +23,13 @@
- </refmeta>
- <refnamediv>
--      <refname>scheduler</refname>
-+      <refname>icecc-scheduler</refname>
-       <refpurpose>Icecream scheduler</refpurpose>
- </refnamediv>
- <refsynopsisdiv>
- <cmdsynopsis>
--<command>scheduler</command>
-+<command>icecc-scheduler</command>
- <group>
-   <arg choice="opt">
-     <option>-n</option>
-@@ -151,7 +151,7 @@ need to run the scheduler with root righ
- <refsect1>
- <title>See Also</title>
--<para>icecream, scheduler, iceccd, icemon</para>
-+<para>icecream, icecc-scheduler, iceccd, icemon</para>
- </refsect1>
- <refsect1>
-Index: icecc-0.9.6/services/Makefile.am
-===================================================================
---- icecc-0.9.6.orig/services/Makefile.am
-+++ icecc-0.9.6/services/Makefile.am
-@@ -11,9 +11,9 @@ ice_HEADERS = job.h comm.h
- noinst_HEADERS = bench.h exitcode.h getifaddrs.h logging.h tempfile.h platform.h
- icedir = $(includedir)/icecc
--sbin_PROGRAMS = scheduler
--scheduler_SOURCES = scheduler.cpp
--scheduler_LDADD = libicecc.la
-+sbin_PROGRAMS = icecc-scheduler
-+icecc_scheduler_SOURCES = scheduler.cpp
-+icecc_scheduler_LDADD = libicecc.la
- pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = icecc.pc
-Index: icecc-0.9.6/services/Makefile.in
-===================================================================
---- icecc-0.9.6.orig/services/Makefile.in
-+++ icecc-0.9.6/services/Makefile.in
-@@ -37,7 +37,7 @@ PRE_UNINSTALL = :
- POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
--sbin_PROGRAMS = scheduler$(EXEEXT)
-+sbin_PROGRAMS = icecc-scheduler$(EXEEXT)
- subdir = services
- DIST_COMMON = $(ice_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in $(srcdir)/icecc.pc.in
-@@ -82,9 +82,9 @@ libicecc_la_LINK = $(LIBTOOL) --tag=CXX 
-       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libicecc_la_CXXFLAGS) \
-       $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
- PROGRAMS = $(sbin_PROGRAMS)
--am_scheduler_OBJECTS = scheduler.$(OBJEXT)
--scheduler_OBJECTS = $(am_scheduler_OBJECTS)
--scheduler_DEPENDENCIES = libicecc.la
-+am_icecc_scheduler_OBJECTS = scheduler.$(OBJEXT)
-+icecc_scheduler_OBJECTS = $(am_icecc_scheduler_OBJECTS)
-+icecc_scheduler_DEPENDENCIES = libicecc.la
- DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
- depcomp = $(SHELL) $(top_srcdir)/depcomp
- am__depfiles_maybe = depfiles
-@@ -107,8 +107,8 @@ CXXLD = $(CXX)
- CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-       --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
-       $(LDFLAGS) -o $@
--SOURCES = $(libicecc_la_SOURCES) $(scheduler_SOURCES)
--DIST_SOURCES = $(libicecc_la_SOURCES) $(scheduler_SOURCES)
-+SOURCES = $(libicecc_la_SOURCES) $(icecc_scheduler_SOURCES)
-+DIST_SOURCES = $(libicecc_la_SOURCES) $(icecc_scheduler_SOURCES)
- DATA = $(pkgconfig_DATA)
- HEADERS = $(ice_HEADERS) $(noinst_HEADERS)
- ETAGS = etags
-@@ -242,8 +242,8 @@ libicecc_la_CXXFLAGS = -fPIC -DPIC
- ice_HEADERS = job.h comm.h
- noinst_HEADERS = bench.h exitcode.h getifaddrs.h logging.h tempfile.h platform.h
- icedir = $(includedir)/icecc
--scheduler_SOURCES = scheduler.cpp
--scheduler_LDADD = libicecc.la
-+icecc_scheduler_SOURCES = scheduler.cpp
-+icecc_scheduler_LDADD = libicecc.la
- pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = icecc.pc
- all: all-am
-@@ -358,9 +358,9 @@ clean-sbinPROGRAMS:
-       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-       echo " rm -f" $$list; \
-       rm -f $$list
--scheduler$(EXEEXT): $(scheduler_OBJECTS) $(scheduler_DEPENDENCIES) 
--      @rm -f scheduler$(EXEEXT)
--      $(CXXLINK) $(scheduler_OBJECTS) $(scheduler_LDADD) $(LIBS)
-+icecc-scheduler$(EXEEXT): $(icecc_scheduler_OBJECTS) $(icecc_scheduler_DEPENDENCIES) 
-+      @rm -f icecc-scheduler$(EXEEXT)
-+      $(CXXLINK) $(icecc_scheduler_OBJECTS) $(icecc_scheduler_LDADD) $(LIBS)
- mostlyclean-compile:
-       -rm -f *.$(OBJEXT)
diff --git a/src/patches/igmpproxy-001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch b/src/patches/igmpproxy-001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch
new file mode 100644 (file)
index 0000000..ffe1cf1
--- /dev/null
@@ -0,0 +1,79 @@
+From fed8c3db10bc9d3a1e799a774924c00522595d0c Mon Sep 17 00:00:00 2001
+From: Evgeny Yurchenko <evg.yurch@rogers.com>
+Date: Mon, 4 Jan 2010 05:13:59 +0500
+Subject: [PATCH] Send IGMP packets with IP Router Alert option [RFC 2113] included in IP header
+
+---
+ src/igmp.c      |   17 ++++++++++++-----
+ src/igmpproxy.h |    1 +
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/src/igmp.c b/src/igmp.c
+index a0cd27d..b547688 100644
+--- a/src/igmp.c
++++ b/src/igmp.c
+@@ -67,7 +67,7 @@ void initIgmp() {
+      * - Checksum (let the kernel fill it in)
+      */
+     ip->ip_v   = IPVERSION;
+-    ip->ip_hl  = sizeof(struct ip) >> 2;
++    ip->ip_hl  = (sizeof(struct ip) + 4) >> 2; /* +4 for Router Alert option */
+     ip->ip_tos = 0xc0;      /* Internet Control */
+     ip->ip_ttl = MAXTTL;    /* applies to unicasts only */
+     ip->ip_p   = IPPROTO_IGMP;
+@@ -213,7 +213,7 @@ void buildIgmp(uint32_t src, uint32_t dst, int type, int code, uint32_t group, i
+     ip                      = (struct ip *)send_buf;
+     ip->ip_src.s_addr       = src;
+     ip->ip_dst.s_addr       = dst;
+-    ip_set_len(ip, MIN_IP_HEADER_LEN + IGMP_MINLEN + datalen);
++    ip_set_len(ip, IP_HEADER_RAOPT_LEN + IGMP_MINLEN + datalen);
+     if (IN_MULTICAST(ntohl(dst))) {
+         ip->ip_ttl = curttl;
+@@ -221,13 +221,20 @@ void buildIgmp(uint32_t src, uint32_t dst, int type, int code, uint32_t group, i
+         ip->ip_ttl = MAXTTL;
+     }
+-    igmp                    = (struct igmp *)(send_buf + MIN_IP_HEADER_LEN);
++    /* Add Router Alert option */
++    ((u_char*)send_buf+MIN_IP_HEADER_LEN)[0] = IPOPT_RA;
++    ((u_char*)send_buf+MIN_IP_HEADER_LEN)[1] = 0x04;
++    ((u_char*)send_buf+MIN_IP_HEADER_LEN)[2] = 0x00;
++    ((u_char*)send_buf+MIN_IP_HEADER_LEN)[3] = 0x00;
++
++    igmp                    = (struct igmp *)(send_buf + IP_HEADER_RAOPT_LEN);
+     igmp->igmp_type         = type;
+     igmp->igmp_code         = code;
+     igmp->igmp_group.s_addr = group;
+     igmp->igmp_cksum        = 0;
+     igmp->igmp_cksum        = inetChksum((u_short *)igmp,
+-                                         IGMP_MINLEN + datalen);
++                                         IP_HEADER_RAOPT_LEN + datalen);
++
+ }
+ /* 
+@@ -257,7 +264,7 @@ void sendIgmp(uint32_t src, uint32_t dst, int type, int code, uint32_t group, in
+ #endif
+     sdst.sin_addr.s_addr = dst;
+     if (sendto(MRouterFD, send_buf,
+-               MIN_IP_HEADER_LEN + IGMP_MINLEN + datalen, 0,
++               IP_HEADER_RAOPT_LEN + IGMP_MINLEN + datalen, 0,
+                (struct sockaddr *)&sdst, sizeof(sdst)) < 0) {
+         if (errno == ENETDOWN)
+             my_log(LOG_ERR, errno, "Sender VIF was down.");
+diff --git a/src/igmpproxy.h b/src/igmpproxy.h
+index 0de7791..4df8a79 100644
+--- a/src/igmpproxy.h
++++ b/src/igmpproxy.h
+@@ -64,6 +64,7 @@
+ #define MAX_IP_PACKET_LEN     576
+ #define MIN_IP_HEADER_LEN     20
+ #define MAX_IP_HEADER_LEN     60
++#define IP_HEADER_RAOPT_LEN   24
+ #define MAX_MC_VIFS    32     // !!! check this const in the specific includes
+-- 
+1.7.2.5
+
diff --git a/src/patches/igmpproxy-002-Change-default-interface-state-to-disabled-wrt-29458.patch b/src/patches/igmpproxy-002-Change-default-interface-state-to-disabled-wrt-29458.patch
new file mode 100644 (file)
index 0000000..d7550d7
--- /dev/null
@@ -0,0 +1,43 @@
+From 85e240727305b156097ee7aa0f0c4473a136291f Mon Sep 17 00:00:00 2001
+From: Constantin Baranov <const@mimas.ru>
+Date: Tue, 23 Feb 2010 21:08:02 +0400
+Subject: [PATCH] Change default interface state to disabled (wrt #2945877)
+
+---
+ src/ifvc.c      |    2 +-
+ src/igmpproxy.c |    6 ++++--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/ifvc.c b/src/ifvc.c
+index 545b3b4..9d7ee97 100644
+--- a/src/ifvc.c
++++ b/src/ifvc.c
+@@ -139,7 +139,7 @@ void buildIfVc() {
+             IfDescEp->allowednets->subnet_addr = subnet;
+             // Set the default params for the IF...
+-            IfDescEp->state         = IF_STATE_DOWNSTREAM;
++            IfDescEp->state         = IF_STATE_DISABLED;
+             IfDescEp->robustness    = DEFAULT_ROBUSTNESS;
+             IfDescEp->threshold     = DEFAULT_THRESHOLD;   /* ttl limit */
+             IfDescEp->ratelimit     = DEFAULT_RATELIMIT; 
+diff --git a/src/igmpproxy.c b/src/igmpproxy.c
+index 1ece15a..35000c7 100644
+--- a/src/igmpproxy.c
++++ b/src/igmpproxy.c
+@@ -186,8 +186,10 @@ int igmpProxyInit() {
+                     }
+                 }
+-                addVIF( Dp );
+-                vifcount++;
++                if (Dp->state != IF_STATE_DISABLED) {
++                    addVIF( Dp );
++                    vifcount++;
++                }
+             }
+         }
+-- 
+1.7.2.5
+
diff --git a/src/patches/igmpproxy-003-Restrict-igmp-reports-for-downstream-interfaces-wrt-.patch b/src/patches/igmpproxy-003-Restrict-igmp-reports-for-downstream-interfaces-wrt-.patch
new file mode 100644 (file)
index 0000000..90d4d5f
--- /dev/null
@@ -0,0 +1,164 @@
+From 65f777e7f66b55239d935c1cf81bb5abc0f6c89f Mon Sep 17 00:00:00 2001
+From: Grinch <grinch79@users.sourceforge.net>
+Date: Sun, 16 Aug 2009 19:58:26 +0500
+Subject: [PATCH] Restrict igmp reports for downstream interfaces (wrt #2833339)
+
+atm all igmp membership reports are forwarded to the upstream interface.
+Unfortunately some ISP Providers restrict some multicast groups (esp. those
+that are defined as local link groups and that are not supposed to be
+forwarded to the wan, i.e 224.0.0.0/24). Therefore there should be some
+kind of black oder whitelisting.
+As whitelisting can be accomplished quite easy I wrote a litte patch, which
+is attached to this request.
+---
+ doc/igmpproxy.conf.5.in |   19 +++++++++++++++++++
+ src/config.c            |   23 ++++++++++++++++++++++-
+ src/igmpproxy.h         |    1 +
+ src/request.c           |   20 ++++++++++++++++----
+ 4 files changed, 58 insertions(+), 5 deletions(-)
+
+diff --git a/doc/igmpproxy.conf.5.in b/doc/igmpproxy.conf.5.in
+index a4ea7d0..56efa22 100644
+--- a/doc/igmpproxy.conf.5.in
++++ b/doc/igmpproxy.conf.5.in
+@@ -116,6 +116,25 @@ This is especially useful for the upstream interface, since the source for multi
+ traffic is often from a remote location. Any number of altnet parameters can be specified.
+ .RE
++.B whitelist
++.I networkaddr
++.RS
++Defines a whitelist for multicast groups. The network address must be in the following
++format 'a.b.c.d/n'. If you want to allow one single group use a network mask of /32,
++i.e. 'a.b.c.d/32'. 
++
++By default all multicast groups are allowed on any downstream interface. If at least one
++whitelist entry is defined, all igmp membership reports for not explicitly whitelisted
++multicast groups will be ignored and therefore not be served by igmpproxy. This is especially
++useful, if your provider does only allow a predefined set of multicast groups. These whitelists
++are only obeyed by igmpproxy itself, they won't prevent any other igmp client running on the
++same machine as igmpproxy from requesting 'unallowed' multicast groups.
++
++You may specify as many whitelist entries as needed. Although you should keep it as simple as
++possible, as this list is parsed for every membership report and therefore this increases igmp
++response times. Often used or large groups should be defined first, as parsing ends as soon as
++a group matches an entry.
++.RE
+ .SH EXAMPLE
+ ## Enable quickleave
+diff --git a/src/config.c b/src/config.c
+index 5a96ce0..d72619f 100644
+--- a/src/config.c
++++ b/src/config.c
+@@ -46,6 +46,9 @@ struct vifconfig {
+     // Keep allowed nets for VIF.
+     struct SubnetList*  allowednets;
++
++    // Allowed Groups
++    struct SubnetList*  allowedgroups;
+     
+     // Next config in list...
+     struct vifconfig*   next;
+@@ -202,6 +205,8 @@ void configureVifs() {
+                     // Insert the configured nets...
+                     vifLast->next = confPtr->allowednets;
++                  Dp->allowedgroups = confPtr->allowedgroups;
++
+                     break;
+                 }
+             }
+@@ -215,7 +220,7 @@ void configureVifs() {
+ */
+ struct vifconfig *parsePhyintToken() {
+     struct vifconfig  *tmpPtr;
+-    struct SubnetList **anetPtr;
++    struct SubnetList **anetPtr, **agrpPtr;
+     char *token;
+     short parseError = 0;
+@@ -239,6 +244,7 @@ struct vifconfig *parsePhyintToken() {
+     tmpPtr->threshold = 1;
+     tmpPtr->state = IF_STATE_DOWNSTREAM;
+     tmpPtr->allowednets = NULL;
++    tmpPtr->allowedgroups = NULL;
+     // Make a copy of the token to store the IF name
+     tmpPtr->name = strdup( token );
+@@ -248,6 +254,7 @@ struct vifconfig *parsePhyintToken() {
+     // Set the altnet pointer to the allowednets pointer.
+     anetPtr = &tmpPtr->allowednets;
++    agrpPtr = &tmpPtr->allowedgroups; 
+     // Parse the rest of the config..
+     token = nextConfigToken();
+@@ -266,6 +273,20 @@ struct vifconfig *parsePhyintToken() {
+                 anetPtr = &(*anetPtr)->next;
+             }
+         }
++      else if(strcmp("whitelist", token)==0) {
++          // Whitelist
++          token = nextConfigToken();
++          my_log(LOG_DEBUG, 0, "Config: IF: Got whitelist token %s.", token);
++      
++          *agrpPtr = parseSubnetAddress(token);
++          if(*agrpPtr == NULL) {
++              parseError = 1;
++              my_log(LOG_WARNING, 0, "Unable to parse subnet address.");
++              break;
++          } else {
++              agrpPtr = &(*agrpPtr)->next;
++          }
++      }
+         else if(strcmp("upstream", token)==0) {
+             // Upstream
+             my_log(LOG_DEBUG, 0, "Config: IF: Got upstream token.");
+diff --git a/src/igmpproxy.h b/src/igmpproxy.h
+index 4dabd1c..0de7791 100644
+--- a/src/igmpproxy.h
++++ b/src/igmpproxy.h
+@@ -145,6 +145,7 @@ struct IfDesc {
+     short               Flags;
+     short               state;
+     struct SubnetList*  allowednets;
++    struct SubnetList*  allowedgroups;
+     unsigned int        robustness;
+     unsigned char       threshold;   /* ttl limit */
+     unsigned int        ratelimit; 
+diff --git a/src/request.c b/src/request.c
+index e3589f6..89b91de 100644
+--- a/src/request.c
++++ b/src/request.c
+@@ -82,10 +82,22 @@ void acceptGroupReport(uint32_t src, uint32_t group, uint8_t type) {
+         my_log(LOG_DEBUG, 0, "Should insert group %s (from: %s) to route table. Vif Ix : %d",
+             inetFmt(group,s1), inetFmt(src,s2), sourceVif->index);
+-        // The membership report was OK... Insert it into the route table..
+-        insertRoute(group, sourceVif->index);
+-
+-
++      // If we don't have a whitelist we insertRoute and done
++      if(sourceVif->allowedgroups == NULL)
++      {
++          insertRoute(group, sourceVif->index);
++          return;
++      }
++      // Check if this Request is legit on this interface
++      struct SubnetList *sn;
++      for(sn = sourceVif->allowedgroups; sn != NULL; sn = sn->next)
++          if((group & sn->subnet_mask) == sn->subnet_addr)
++          {
++              // The membership report was OK... Insert it into the route table..
++              insertRoute(group, sourceVif->index);
++              return;
++          }
++      my_log(LOG_INFO, 0, "The group address %s may not be requested from this interface. Ignoring.", inetFmt(group, s1));
+     } else {
+         // Log the state of the interface the report was recieved on.
+         my_log(LOG_INFO, 0, "Mebership report was recieved on %s. Ignoring.",
+-- 
+1.7.2.5
+
diff --git a/src/patches/igmpproxy-004-Restrict-igmp-reports-forwarding-to-upstream-interfa.patch b/src/patches/igmpproxy-004-Restrict-igmp-reports-forwarding-to-upstream-interfa.patch
new file mode 100644 (file)
index 0000000..a4caed7
--- /dev/null
@@ -0,0 +1,62 @@
+From bcd7c648e86d97263c931de53a008c9629e7797e Mon Sep 17 00:00:00 2001
+From: Stefan Becker <stefan.becker@nokia.com>
+Date: Fri, 11 Dec 2009 21:08:57 +0200
+Subject: [PATCH] Restrict igmp reports forwarding to upstream interface
+
+Utilize the new "whitelist" keyword also on the upstream interface definition.
+If specified then only whitelisted multicast groups will be forwarded upstream.
+
+This can be used to avoid publishing private multicast groups to the world,
+e.g. SSDP from a UPnP server on the internal network.
+---
+ doc/igmpproxy.conf.5.in |    5 +++++
+ src/rttable.c           |   17 +++++++++++++++++
+ 2 files changed, 22 insertions(+), 0 deletions(-)
+
+diff --git a/doc/igmpproxy.conf.5.in b/doc/igmpproxy.conf.5.in
+index 56efa22..d916f05 100644
+--- a/doc/igmpproxy.conf.5.in
++++ b/doc/igmpproxy.conf.5.in
+@@ -134,6 +134,11 @@ You may specify as many whitelist entries as needed. Although you should keep it
+ possible, as this list is parsed for every membership report and therefore this increases igmp
+ response times. Often used or large groups should be defined first, as parsing ends as soon as
+ a group matches an entry.
++
++You may also specify whitelist entries for the upstream interface. Only igmp membership reports
++for explicitely whitelisted multicast groups will be sent out on the upstream interface. This
++is useful if you want to use multicast groups only between your downstream interfaces, like SSDP
++from a UPnP server.
+ .RE
+ .SH EXAMPLE
+diff --git a/src/rttable.c b/src/rttable.c
+index f0701a8..77dd791 100644
+--- a/src/rttable.c
++++ b/src/rttable.c
+@@ -117,6 +117,23 @@ void sendJoinLeaveUpstream(struct RouteTable* route, int join) {
+         my_log(LOG_ERR, 0 ,"FATAL: Unable to get Upstream IF.");
+     }
++    // Check if there is a white list for the upstram VIF
++    if (upstrIf->allowedgroups != NULL) {
++      uint32_t           group = route->group;
++        struct SubnetList* sn;
++
++        // Check if this Request is legit to be forwarded to upstream
++        for(sn = upstrIf->allowedgroups; sn != NULL; sn = sn->next)
++            if((group & sn->subnet_mask) == sn->subnet_addr)
++                // Forward is OK...
++                break;
++
++        if (sn == NULL) {
++          my_log(LOG_INFO, 0, "The group address %s may not be forwarded upstream. Ignoring.", inetFmt(group, s1));
++            return;
++        }
++    }
++
+     // Send join or leave request...
+     if(join) {
+-- 
+1.7.2.5
+
diff --git a/src/patches/igmpproxy-100-use-monotic-clock-instead-of-time-of-day.patch b/src/patches/igmpproxy-100-use-monotic-clock-instead-of-time-of-day.patch
new file mode 100644 (file)
index 0000000..e75283c
--- /dev/null
@@ -0,0 +1,120 @@
+From d0e66e0719ae8eb549f7cc220fdc66575d3db332 Mon Sep 17 00:00:00 2001
+From: Jonas Gorski <jonas.gorski@gmail.com>
+Date: Thu, 29 Mar 2012 17:01:11 +0200
+Subject: [PATCH 4/4] use monotic clock instead of time of day
+
+The time of day might chance e.g. by daylight savings time during the
+runtime, which causes timers to fire repeatedly for a long time.
+
+Contributed by T-Labs, Deutsche Telekom Innovation Laboratories
+
+Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
+---
+ configure.ac    |    2 ++
+ src/igmpproxy.c |   26 +++++++++++++-------------
+ src/igmpproxy.h |    3 ++-
+ 3 files changed, 17 insertions(+), 14 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 85beb08..bd84eba 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -25,6 +25,8 @@ AC_CHECK_MEMBERS([struct sockaddr_in.sin_len], [], [], [[
+ #include <netinet/in.h>
+ ]])
++AC_SEARCH_LIBS([clock_gettime],[rt])
++
+ AC_CONFIG_FILES([
+       Makefile
+       doc/Makefile
+diff --git a/src/igmpproxy.c b/src/igmpproxy.c
+index 35000c7..3a9ccad 100644
+--- a/src/igmpproxy.c
++++ b/src/igmpproxy.c
+@@ -234,13 +234,13 @@ void igmpProxyRun() {
+     int     MaxFD, Rt, secs;
+     fd_set  ReadFDS;
+     socklen_t dummy = 0;
+-    struct  timeval  curtime, lasttime, difftime, tv; 
++    struct  timespec  curtime, lasttime, difftime, tv; 
+     // The timeout is a pointer in order to set it to NULL if nessecary.
+-    struct  timeval  *timeout = &tv;
++    struct  timespec  *timeout = &tv;
+     // Initialize timer vars
+-    difftime.tv_usec = 0;
+-    gettimeofday(&curtime, NULL);
++    difftime.tv_nsec = 0;
++    clock_gettime(CLOCK_MONOTONIC, &curtime);
+     lasttime = curtime;
+     // First thing we send a membership query in downstream VIF's...
+@@ -263,7 +263,7 @@ void igmpProxyRun() {
+         if(secs == -1) {
+             timeout = NULL;
+         } else {
+-            timeout->tv_usec = 0;
++            timeout->tv_nsec = 0;
+             timeout->tv_sec = secs;
+         }
+@@ -274,7 +274,7 @@ void igmpProxyRun() {
+         FD_SET( MRouterFD, &ReadFDS );
+         // wait for input
+-        Rt = select( MaxFD +1, &ReadFDS, NULL, NULL, timeout );
++        Rt = pselect( MaxFD +1, &ReadFDS, NULL, NULL, timeout, NULL );
+         // log and ignore failures
+         if( Rt < 0 ) {
+@@ -307,20 +307,20 @@ void igmpProxyRun() {
+              */
+             if (Rt == 0) {
+                 curtime.tv_sec = lasttime.tv_sec + secs;
+-                curtime.tv_usec = lasttime.tv_usec;
++                curtime.tv_nsec = lasttime.tv_nsec;
+                 Rt = -1; /* don't do this next time through the loop */
+             } else {
+-                gettimeofday(&curtime, NULL);
++                clock_gettime(CLOCK_MONOTONIC, &curtime);
+             }
+             difftime.tv_sec = curtime.tv_sec - lasttime.tv_sec;
+-            difftime.tv_usec += curtime.tv_usec - lasttime.tv_usec;
+-            while (difftime.tv_usec > 1000000) {
++            difftime.tv_nsec += curtime.tv_nsec - lasttime.tv_nsec;
++            while (difftime.tv_nsec > 1000000000) {
+                 difftime.tv_sec++;
+-                difftime.tv_usec -= 1000000;
++                difftime.tv_nsec -= 1000000000;
+             }
+-            if (difftime.tv_usec < 0) {
++            if (difftime.tv_nsec < 0) {
+                 difftime.tv_sec--;
+-                difftime.tv_usec += 1000000;
++                difftime.tv_nsec += 1000000000;
+             }
+             lasttime = curtime;
+             if (secs == 0 || difftime.tv_sec > 0)
+diff --git a/src/igmpproxy.h b/src/igmpproxy.h
+index 4df8a79..36a4f04 100644
+--- a/src/igmpproxy.h
++++ b/src/igmpproxy.h
+@@ -44,12 +44,13 @@
+ #include <string.h>
+ #include <fcntl.h>
+ #include <stdbool.h>
++#include <time.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+-#include <sys/time.h>
+ #include <sys/ioctl.h>
+ #include <sys/param.h>
++#include <sys/select.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+-- 
+1.7.2.5
+
diff --git a/src/patches/imspector-20101008-ssl.patch b/src/patches/imspector-20101008-ssl.patch
new file mode 100644 (file)
index 0000000..32ac766
--- /dev/null
@@ -0,0 +1,11 @@
+--- imspector/sslstate.h       2010-02-23 18:21:56.000000000 +0100
++++ imspector/sslstate.h       2013-12-14 15:40:04.796370688 +0100
+@@ -52,7 +52,7 @@
+               int sslverify;            //!< Our VERIFY_ choice.
+               
+               bool localdebugmode;      //!< Saves us from passing this around.
+-              SSL_METHOD *method;       //!< openssl method handle.
++              const SSL_METHOD *method;       //!< openssl method handle.
+               SSL_CTX *connectctx;      //!< Our IM server-sde CTX.
+               SSL_CTX *ctx;             //!< Our IM client-side CTX.
+
diff --git a/src/patches/inetutils-1.4.2-daemon_fixes-1.patch b/src/patches/inetutils-1.4.2-daemon_fixes-1.patch
deleted file mode 100644 (file)
index c57f9ae..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-Submitted By:            Randy McMurchy <randy_at_linuxfromscratch_dot_org>
-Date:                    2005-03-23
-Initial Package Version: 1.4.2
-Upstream Status:         Not sure
-Origin:                  Internet (URL's are now lost)
-Description:             Fix the rexecd daemon so that it understands shadow
-                         passwords. Fix the rshd daemon so that it properly
-                         resolves hostnames.
-
-diff -Naur inetutils-1.4.2-orig/rexecd/rexecd.c inetutils-1.4.2/rexecd/rexecd.c
---- inetutils-1.4.2-orig/rexecd/rexecd.c       2002-12-11 12:38:00.000000000 +0000
-+++ inetutils-1.4.2/rexecd/rexecd.c    2005-02-22 19:53:44.146962264 +0000
-@@ -79,6 +79,10 @@
- #include <varargs.h>
- #endif
-+#ifdef HAVE_SHADOW_H
-+#include <shadow.h>
-+#endif
-+
- void error __P ((const char *fmt, ...));
- /*
-  * remote execute server:
-@@ -127,6 +131,10 @@
-       char *cmdbuf, *cp, *namep;
-       char *user, *pass;
-       struct passwd *pwd;
-+#ifdef HAVE_SHADOW_H
-+      struct spwd *spwd;
-+      char *pw_field;
-+#endif
-       int s;
-       u_short port;
-       int pv[2], pid, cc;
-@@ -186,6 +194,24 @@
-               exit(1);
-       }
-       endpwent();
-+
-+#ifdef HAVE_SHADOW_H
-+      // Get encrypted password from /etc/shadow if possible,
-+      // else from /etc/passwd.
-+      spwd = getspnam(user);
-+      if (spwd) {
-+              pw_field = spwd->sp_pwdp;
-+      } else {
-+              pw_field = pwd->pw_passwd;
-+      }
-+      if (*pw_field != '\0') {
-+              namep = CRYPT (pass, pw_field);
-+              if (strcmp(namep, pw_field)) {
-+                      error("Password incorrect.\n");
-+                      exit(1);
-+              }
-+      }
-+#else
-       if (*pwd->pw_passwd != '\0') {
-               namep = CRYPT (pass, pwd->pw_passwd);
-               if (strcmp(namep, pwd->pw_passwd)) {
-@@ -193,6 +219,7 @@
-                       exit(1);
-               }
-       }
-+#endif
-       write(STDERR_FILENO, "\0", 1);
-       if (port) {
-               pipe(pv);
-diff -Naur inetutils-1.4.2-orig/rshd/rshd.c inetutils-1.4.2/rshd/rshd.c
---- inetutils-1.4.2-orig/rshd/rshd.c   2002-12-11 12:38:00.000000000 +0000
-+++ inetutils-1.4.2/rshd/rshd.c        2005-02-22 19:54:33.162510768 +0000
-@@ -443,7 +443,7 @@
-       dup2 (sockfd, STDERR_FILENO);
-     }
--  /* Get the "name" of the clent form its Internet address.
-+  /* Get the "name" of the client form its Internet address.
-    * This is used for the autentication below
-    */
-   errorstr = NULL;
-@@ -457,52 +457,49 @@
-        * in a remote net; look up the name and check that this
-        * address corresponds to the name.
-        */
--      hostname = strdup (hp->h_name);
-+      const char *remotehost = strdup(hp->h_name);
- #ifdef        KERBEROS
-       if (!use_kerberos)
- #endif
--      if (check_all || local_domain (hp->h_name))
-+       if (! remotehost)
-+           errorstr = "Out of memory\n";
-+       else if (check_all || local_domain (remotehost))
-         {
--          char *remotehost = (char *) alloca (strlen (hp->h_name) + 1);
--          if (! remotehost)
--            errorstr = "Out of memory\n";
--          else
-+           errorhost = remotehost;
-+           hp = gethostbyname (remotehost);
-+           if (hp == NULL)
-             {
--              strcpy (remotehost, hp->h_name);
--              errorhost = remotehost;
--              hp = gethostbyname (remotehost);
--              if (hp == NULL)
-+               syslog (LOG_INFO,
-+                       "Couldn't look up address for %s", remotehost);
-+                       errorstr = "Couldn't look up address for your host (%s)\n";
-+                       hostname = strdup(inet_ntoa(fromp->sin_addr));
-+             }
-+           else
-+              {
-+               for (; ; hp->h_addr_list++)
-                 {
--                  syslog (LOG_INFO,
--                          "Couldn't look up address for %s", remotehost);
--                  errorstr = "Couldn't look up address for your host (%s)\n";
--                  hostname = inet_ntoa (fromp->sin_addr);
-+                   if (hp->h_addr_list[0] == NULL)
-+                     {
-+                       syslog (LOG_NOTICE,
-+                               "Host addr %s not listed for host %s",
-+                               inet_ntoa (fromp->sin_addr), hp->h_name);
-+                       errorstr = "Host address mismatch for %s\n";
-+                       hostname = strdup(inet_ntoa(fromp->sin_addr));
-+                       break;
-+                     }
-+                   if (!memcmp (hp->h_addr_list[0],
-+                               (caddr_t)&fromp->sin_addr,
-+                               sizeof fromp->sin_addr))
-+                     {
-+                       hostname = strdup(hp->h_name);
-+                       break; /* equal, OK */
-+                     }
-                 }
--              else
--                for (; ; hp->h_addr_list++)
--                  {
--                    if (hp->h_addr_list[0] == NULL)
--                      {
--                        syslog (LOG_NOTICE,
--                                "Host addr %s not listed for host %s",
--                                inet_ntoa (fromp->sin_addr), hp->h_name);
--                        errorstr = "Host address mismatch for %s\n";
--                        hostname = inet_ntoa (fromp->sin_addr);
--                        break;
--                      }
--                    if (!memcmp (hp->h_addr_list[0],
--                                 (caddr_t)&fromp->sin_addr,
--                                 sizeof fromp->sin_addr))
--                      {
--                        hostname = hp->h_name;
--                        break; /* equal, OK */
--                      }
--                  }
--            }
-+              }
-         }
-     }
-   else
--    errorhost = hostname = inet_ntoa (fromp->sin_addr);
-+    errorhost = hostname = strdup(inet_ntoa(fromp->sin_addr));
- #ifdef        KERBEROS
-   if (use_kerberos)
-
diff --git a/src/patches/inetutils-1.4.2-gcc4_fixes-3.patch b/src/patches/inetutils-1.4.2-gcc4_fixes-3.patch
deleted file mode 100644 (file)
index fd7d847..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-Submitted By: Matthew Burgess <matthew@linuxfromscratch.org>
-Date: 2005-08-30
-Initial Package Version: 1.4.2
-Upstream Status: From upstream
-Origin: Greg Schafer <gschafer@zip.com.au> (http://www.diy-linux.org/downloads/patches/GCC4/inetutils-1.4.2-gcc4-fixes-1.patch)
-Description: Fix compilation issues with gcc4
-
-diff -Naur inetutils-1.4.2.orig/ftp/ftp_var.h inetutils-1.4.2/ftp/ftp_var.h
---- inetutils-1.4.2.orig/ftp/ftp_var.h 2000-07-08 01:00:53.000000000 +0000
-+++ inetutils-1.4.2/ftp/ftp_var.h      2005-08-30 20:25:27.205932304 +0000
-@@ -36,8 +36,6 @@
- #include <sys/param.h>
- #include <setjmp.h>
--#include "extern.h"
--
- #ifndef FTP_EXTERN
- #define FTP_EXTERN extern
- #endif
-@@ -129,3 +127,5 @@
- FTP_EXTERN int macnum;                        /* number of defined macros */
- FTP_EXTERN struct macel macros[16];
- FTP_EXTERN char macbuf[4096];
-+
-+#include "extern.h"
-diff -Naur inetutils-1.4.2.orig/libinetutils/ttymsg.c inetutils-1.4.2/libinetutils/ttymsg.c
---- inetutils-1.4.2.orig/libinetutils/ttymsg.c 2001-11-01 15:52:19.000000000 +0000
-+++ inetutils-1.4.2/libinetutils/ttymsg.c      2005-08-30 20:24:27.168059448 +0000
-@@ -132,7 +132,7 @@
-           }
-         if (wret)
-           {
--            (char *)iov->iov_base += wret;
-+            iov->iov_base = (char *)iov->iov_base + wret;
-             iov->iov_len -= wret;
-           }
-         continue;
diff --git a/src/patches/iptraf-ng-1.1.4-tcplog_flowrate_msg.patch b/src/patches/iptraf-ng-1.1.4-tcplog_flowrate_msg.patch
new file mode 100644 (file)
index 0000000..24a6ce4
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Nur iptraf-ng-1.1.4-orig/src/tcptable.c iptraf-ng-1.1.4/src/tcptable.c
+--- iptraf-ng-1.1.4-orig/src/tcptable.c        2013-07-23 15:06:11.000000000 +0200
++++ iptraf-ng-1.1.4/src/tcptable.c     2013-08-28 19:10:33.000000000 +0200
+@@ -444,6 +444,8 @@
+                                size_t bufsize)
+ {
+       time_t interval = time(NULL) - entry->conn_starttime;
++      if (interval < 1)
++              interval = 1;
+       char rbuf[64];
+       rate_print(entry->bcount / interval, rbuf, sizeof(rbuf));
diff --git a/src/patches/jwhois-4.0-conf_update.patch b/src/patches/jwhois-4.0-conf_update.patch
new file mode 100644 (file)
index 0000000..512d300
--- /dev/null
@@ -0,0 +1,714 @@
+diff -up jwhois-4.0/example/jwhois.conf.orig jwhois-4.0/example/jwhois.conf
+--- jwhois-4.0/example/jwhois.conf.orig        2007-03-26 11:12:08.000000000 +0200
++++ jwhois-4.0/example/jwhois.conf     2010-12-20 14:26:06.450882316 +0100
+@@ -17,6 +17,11 @@ whois-servers {
+       type = regex;
+       #
++      # Catch ENUM domains
++      #
++      "\\([0-9]\\.\\)+e164\\.arpa" = "struct enum-blocks";
++
++      #
+       # You can use the special value `struct' to redirect the query
+       # to another block which optionally can use another type of matching.
+       # Here we use it to have IPv4 numbers matched using CIDR blocks instead
+@@ -27,6 +32,7 @@ whois-servers {
+       "^CORE-[0-9]+$" = "struct handles";
+       "^CO[CH]O-[0-9]+$" = "struct handles";
+       ".*-[A-Z]+$" = "struct handles";
++      ".*-6BONE$" = "struct handles";
+       #
+       # Catch AS numbers
+@@ -81,6 +87,7 @@ whois-servers {
+       # Pseudo-ccTLDs must be listed above gTLDs
+       #
+       "\\.ae\\.org$" = "whois.centralnic.net";
++      "\\.ar\\.com$" = "whois.centralnic.com";
+       "\\.br\\.com$" = "whois.centralnic.net";
+       "\\.cn\\.com$" = "whois.centralnic.net";
+       "\\.de\\.com$" = "whois.centralnic.net";
+@@ -103,17 +110,30 @@ whois-servers {
+       "\\.uy\\.com$" = "whois.centralnic.net";
+       "\\.web\\.com$" = "whois.centralnic.net";
+       "\\.za\\.com$" = "whois.centralnic.net";
++      "\\.za\\.net$" = "whois.za.net";
++        "\\.za\\.org$" = "whois.za.org";
+       "\\.ac$" = "whois.nic.ac";
+-      "\\.ae$" = "whois.uaenic.ae";
++      "\\.ae$" = "whois.aeda.net.ae";
++      "\\.co\\.ae$" = "whois.aeda.net.ae";
++      "\\.net\\.ae$" = "whois.aeda.net.ae";
++      "\\.org\\.ae$" = "whois.aeda.net.ae";
++      "\\.sch\\.ae$" = "whois.aeda.net.ae";
++      "\\.ac\\.ae$" = "whois.aeda.net.ae";
++      "\\.mil\\.ae$" = "whois.aeda.net.ae";
++      "\\.gov\\.ae$" = "whois.aeda.net.ae";
++      "\\.1\\.7\\.9\\.e164\\.arpa$" = "whois.aeda.net.ae";
+       "\\.aero$" = "whois.aero";
+-      "\\.af$" = "whois.nic.af";
++      "\\.af$" = "whois.cocca.cx";
+       "\\.ag$" = "whois.nic.ag";
+-      "\\.ai$" = "whois.offshore.ai";
+-      "\\.al$" = "whois.ripe.net";
++      "\\.ai$" = "whois.ai";
++      "\\.al$" = "www.ert.gov.al";
+       "\\.am$" = "whois.amnic.net";
++      "\\.edu\\.ar$" = "www.riu.edu.ar";
+       "\\.ar$" = "www.nic.ar";
++      "\\.arpa$" = "whois.iana.org";
+       "\\.as$" = "whois.nic.as";
++      "\\.asia$" = "whois.nic.asia";
+       "\\.at$" = "whois.nic.at";
+       "\\.asn\\.au$" = "whois.ausregistry.net.au";
+       "\\.com\\.au$" = "whois.ausregistry.net.au";
+@@ -125,30 +145,40 @@ whois-servers {
+       "\\.ba$" = "whois.ripe.net";
+       "\\.be$" = "whois.dns.be";
+       "\\.bg$" = "whois.register.bg";
+-      "\\.bi$" = "www.nic.bi";
+-      "\\.biz$" = "whois.neulevel.biz";
++      "\\.bi$" = "whois.nic.bi";
++      "\\.biz$" = "whois.biz";
+       "\\.bj$" = "whois.nic.bj";
+       "\\.bm$" = "rwhois.ibl.bm 4321";
++      "\\.bo$" = "whois.nic.bo";
+       "\\.br$" = "whois.nic.br";
++      "\\.bs$" = "www.register.bs";
+       "\\.bv$" = "whois.ripe.net";
+-      "\\.by$" = "whois.ripe.net";
++      "\\.by$" = "www.domain.by";
+       "\\.bz$" = "whois.belizenic.bz";
++      "\\.co\\.ca$" = "whois.co.ca";
+       "\\.ca$" = "whois.cira.ca";
+       "\\.cat$" = "whois.cat";
+-      "\\.cc$" = "whois.nic.cc";
++      "\\.cc$" {
++              whois-server = "ccwhois.verisign-grs.com";
++              query-format = "domain $*";
++      }
+       "\\.cd$" = "whois.nic.cd";
+       "\\.cg$" = "www.nic.cg";
+       "\\.ch$" = "whois.nic.ch";
+       "\\.ci$" = "whois.nic.ci";
+       "\\.ck$" = "whois.nic.ck";
+       "\\.cl$" = "whois.nic.cl";
++      "\\.co\\.cm$" = "whois.netcom.cm";
++      "\\.com\\.cm$" = "whois.netcom.cm";
++      "\\.net\\.cm$" = "whois.netcom.cm";
+       "\\.edu\\.cn$" = "whois.edu.cn";
+-      "\\.cn$" = "whois.cnnic.net.cn";
++      "\\.cn$" = "whois.cnnic.cn";
+       "\\.com$" {
+               whois-server = "whois.verisign-grs.com";
+               query-format = "domain $*";
+       }
+       "\\.coop$" = "whois.nic.coop";
++      "\\.cu$" = "www.nic.cu";
+       "\\.cx$" = "whois.nic.cx";
+       "\\.cy$" = "whois.ripe.net";
+       "\\.cz$" = "whois.nic.cz";
+@@ -156,12 +186,15 @@ whois-servers {
+               whois-server = "whois.denic.de";
+               query-format = "-C UTF-8 -T dn,ace $*";
+       }
+-      "\\.dk$" = "whois.dk-hostmaster.dk";
++      "\\.dk$" {
++              whois-server = "whois.dk-hostmaster.dk";
++              query-format = "--show-handles $*";
++      }
+       "\\.dm$" = "whois.nic.dm";
+       "\\.do$" = "whois.nic.do";
+-      "\\.dz$" = "whois.ripe.net";
++      "\\.dz$" = "www.nic.dz";
+       "\\.ec$" = "www.nic.ec";
+-      "\\.edu$" = "whois.educause.net";
++      "\\.edu$" = "whois.educause.edu";
+       "\\.ee$" = "whois.eenet.ee";
+       "\\.eg$" = "whois.ripe.net";
+       "\\.es$" = "www.nic.es";
+@@ -171,17 +204,20 @@ whois-servers {
+       "\\.fm$" = "www.dot.fm";
+       "\\.fo$" = "whois.ripe.net";
+       "\\.fr$" = "whois.nic.fr";
+-      "\\.gi$" = "www.nic.gi";
++      "\\.gd$" = "whois.adamsnames.com";
++      "\\.gi$" = "whois2.afilias-grs.net";
+       "\\.gov$" = "whois.nic.gov";
+-      "\\.gg$" = "whois.isles.net";
++      "\\.gg$" = "whois.gg";
+       "\\.gm$" = "whois.ripe.net";
+       "\\.gp$" = "whois.nic.gp";
+       "\\.gr$" = "whois.ripe.net";
+-      "\\.gs$" = "203.119.12.22";
++      "\\.gs$" = "whois.nic.gs";
+       "\\.gt$" = "www.gt";
+-      "\\.hk$" = "whois.hkdnr.net.hk";
++      "\\.hk$" = "whois.hkirc.hk";
+       "\\.hm$" = "whois.registry.hm";
++      "\\.hn$" = "whois2.afilias-grs.net";
+       "\\.hr$" = "www.dns.hr";
++      "\\.ht$" = "whois.nic.ht";
+       "\\.hu$" = "whois.nic.hu";
+       "\\.id$" = "whois.idnic.net.id";
+       "\\.ie$" = "whois.domainregistry.ie";
+@@ -195,69 +231,94 @@ whois-servers {
+       "\\.is$" = "whois.isnic.is";
+       "\\.it$" = "whois.nic.it";
+       "\\.je$" = "whois.isles.net";
++      "\\.jobs$" {
++                whois-server = "jobswhois.verisign-grs.com";
++                query-format = "domain $*";
++      }
+       "\\.jp$" {
+               whois-server = "whois.jprs.jp";
+               query-format = "$* /e";
+       }
++      "\\.ke$" = "whois.kenic.or.ke";
++      "\\.kp$" = "whois.kcce.kp";
+       "\\.kg$" = "whois.domain.kg";
+-      "\\.ki$" = "whois.nic.ki";
++      "\\.ki$" = "whois.cocca.cx";
+       "\\.kr$" = "whois.krnic.net";
+       "\\.kz$" = "whois.nic.kz";
+       "\\.la$" = "whois.nic.la";
+       "\\.lb$" = "cgi.aub.edu.lb";
++      "\\.lc$" = "whois2.afilias-grs.net";
+       "\\.li$" = "whois.nic.li";
+       "\\.lk$" = "whois.nic.lk";
+       "\\.lt$" = "whois.domreg.lt";
+       "\\.lu$" = "whois.dns.lu";
+       "\\.lv$" = "whois.nic.lv";
+       "\\.ly$" = "whois.nic.ly";
+-      "\\.ma$" = "whois.ripe.net";
++      "\\.ma$" = "whois.iam.net.ma";
++      "\\.md$" = "whois.nic.md";
++      "\\.me$" = "whois.nic.me";
+       "\\.mil$" = "whois.nic.mil";
+       "\\.mk$" = "whois.ripe.net";
+       "\\.mm$" = "whois.nic.mm";
++      "\\.mn$" = "whois2.afilias-grs.net";
+       "\\.mobi$" = "whois.dotmobiregistry.net";
+-      "\\.ms$" = "whois.adamsnames.tc";
+-      "\\.mt$" = "www.um.edu.mt";
++      "\\.ms$" = "whois.nic.ms";
++      "\\.mt$" = "whois.nic.org.mt";
+       "\\.mu$" = "whois.nic.mu";
+       "\\.museum$" = "whois.museum";
+       "\\.mw$" = "www.tarsus.net";
+       "\\.mx$" = "whois.nic.mx";
+-      "\\.my$" = "whois.mynic.net.my";
++      "\\.my$" = "whois.domainregistry.my";
+       "\\.na$" = "whois.na-nic.com.na";
+-      "\\.name$" = "whois.nic.name";
++      "\\.name$" {
++              whois-server = "whois.nic.name";
++              query-format = "domain = $*";
++              }
+       "\\.net$" {
+               whois-server = "whois.verisign-grs.com";
+               query-format = "domain $*";
+       }
+-      "\\.ng$" = "whois.rg.net";
++      "\\.nf$" = "whois.cocca.cx";
++      "\\.ng$" = "whois.nic.net.ng";
+       "\\.nl$" = "whois.domain-registry.nl";
+       "\\.no$" = "whois.norid.no";
+       "\\.nu$" = "whois.nic.nu";
+       "\\.nz$" = "whois.srs.net.nz";
+       "\\.org$" = "whois.publicinterestregistry.net";
+-      "\\.pe$" = "whois.nic.pe";
++      "\\.pa$" = "www.nic.pa";
++      "\\.pe$" = "kero.yachay.pe";
+       "\\.pk$" = "pknic.net.pk";
+       "\\.pl$" = "whois.dns.pl";
+       "\\.pm$" = "whois.nic.pm";
++      "\\.pr$" = "whois.nic.pr";
+       "\\.pro$" = "whois.registrypro.pro";
++      "\\.ps$" = "www.nic.ps";
+       "\\.pt$" = "whois.dns.pt";
+       "\\.pw$" = "whois.nic.pw";
+       "\\.re$" = "whois.nic.re";
+       "\\.ro$" = "whois.rotld.ro";
++      "\\.edu\.ru$" = "whois.informika.ru";
+       "\\.ru$" = "whois.ripn.net";
+       "\\.rw$" = "www.nic.rw";
+       "\\.sa$" = "saudinic.net.sa";
++      "\\.sb$" = "whois.nic.sb";
++      "\\.sc$" = "whois2.afilias-grs.net";
+       "\\.se$" = "whois.iis.se";
+-      "\\.sg$" = "whois.nic.net.sg";
++      "\\.sg$" = "whois.sgnic.sg";
+       "\\.sh$" = "whois.nic.sh";
+       "\\.si$" = "whois.arnes.si";
+       "\\.sj$" = "whois.ripe.net";
+-      "\\.sk$" = "whois.ripe.net";
++      "\\.sk$" = "whois.sk-nic.sk";
++      "\\.sl$" = "whois.nic.sl";
+       "\\.sm$" = "whois.ripe.net";
++      "\\.sn$" = "whois.nic.sn";
++      "\\.so$" = "whois.nic.so";
+       "\\.sr$" = "whois.register.sr";
+       "\\.st$" = "whois.nic.st";
+       "\\.su$" = "whois.ripn.net";
++      "\\.sv$" = "www.svnet.org.sv";
+       "\\.tc$" = "whois.adamsnames.tc";
++      "\\.tel$" = "whois.nic.tel";
+       "\\.tf$" = "whois.afnic.fr";
+       "\\.tg$" = "www.nic.tg";
+       "\\.th$" = "whois.thnic.net";
+@@ -268,8 +329,12 @@ whois-servers {
+       "\\.tn$" = "whois.ripe.net";
+       "\\.to$" = "whois.tonic.to";
+       "\\.tr$" = "whois.nic.tr";
++      "\\.travel$" = "whois.nic.travel";
+       "\\.tt$" = "www.nic.tt";
+-      "\\.tv$" = "whois.nic.tv";
++      "\\.tv$" {
++              whois-server = "tvwhois.verisign-grs.com";
++              query-format = "domain $*";
++        }
+       "\\.tw$" = "whois.twnic.net";
+       "\\.ua$" = "whois.com.ua";
+       "\\.ug$" = "whois.co.ug";
+@@ -279,9 +344,12 @@ whois-servers {
+       "\\.fed\\.us$" = "whois.nic.gov";
+       "\\.us$" = "whois.nic.us";
+       "\\.com\\.uy$" = "dns.antel.net.uy";
+-      "\\.uy$" = "www.rau.edu.uy"; # is a whois server
+-      "\\.uz$" = "www.noc.uz";
++      "\\.uy$" = "whois.nic.org.uy";
++      "\\.co\\.uz$" = "whois.reg.uz";
++      "\\.com\\.uz$" = "whois.reg.uz";
++      "\\.uz$" = "whois.cctld.uz";
+       "\\.va$" = "whois.ripe.net";
++      "\\.vc$" = "whois2.afilias-grs.net";
+       "\\.ve$" = "whois.nic.ve";
+       "\\.vi$" = "www.nic.vi";
+       "\\.vg$" = "whois.adamsnames.tc";
+@@ -289,12 +357,15 @@ whois-servers {
+       "\\.vu$" = "www.vunic.vu";
+       "\\.wf$" = "whois.nic.wf";
+       "\\.ws$" = "whois.worldsite.ws";
++      "\\.xn--mgbaam7a8h$" = "whois.aeda.net.ae";
+       "\\.yt$" = "whois.nic.yt";
+-      "\\.yu$" = "whois.ripe.net";
++      "\\.yu$" = "www.nic.yu";
+       "\\.ac\\.za$" = "whois.ac.za";
+       "\\.org\\.za$" = "rwhois.org.za 4321";
+       "\\.co\\.za$" = "whois.co.za";
++      "\\.nom\\.za$" = "www.nom.za";
+       # "\\.za$" = "whois.frd.ac.za";
++      "\\.co\\.zw$" = "www.zispa.co.zw";
+       #
+       # Specify different port numbers to connect to by postfixing the IP
+@@ -311,6 +382,16 @@ whois-servers {
+ }
+ #
++# enum-blocks
++#
++enum-blocks {
++      type = regex;
++
++      "\\.9\\.4\\.e164\\.arpa$" = "whois.enum.denic.de";
++      "\\.1\\.6\\.e164\\.arpa$" = "whois-check.enum.com.au";
++}
++
++#
+ # cidr-blocks contains a list of all known CIDR blocks assigned to
+ # RIPE or APNIC. Default all queries to ARIN which has most other blocks.
+ #
+@@ -580,7 +661,7 @@ cidr-blocks {
+ cidr6-blocks {
+       type = cidr6;
+-      "2001:0000::/23" = "whois.iana.org";
++      "2001:0000::/23" = "whois.iana.org"; # correct, but nothing usable is returned
+       "2001:0200::/23" = "whois.apnic.net";
+       "2001:0400::/23" = "whois.arin.net";
+       "2001:0600::/23" = "whois.ripe.net";
+@@ -593,13 +674,13 @@ cidr6-blocks {
+       "2001:1600::/23" = "whois.ripe.net";
+       "2001:1800::/23" = "whois.arin.net";
+       "2001:1A00::/23" = "whois.ripe.net";
+-      "2001:1C00::/23" = "whois.ripe.net";
+-      "2001:1E00::/23" = "whois.ripe.net";
++      "2001:1C00::/22" = "whois.ripe.net";
+       "2001:2000::/20" = "whois.ripe.net";
+       "2001:3000::/21" = "whois.ripe.net";
+       "2001:3800::/22" = "whois.ripe.net";
++      "2001:3C00::/22" = "whois.arin.net"; # not correct, but shows better information
+       "2001:4000::/23" = "whois.ripe.net";
+-      "2001:4200::/23" = "whois.arin.net";
++      "2001:4200::/23" = "whois.afrinic.net";
+       "2001:4400::/23" = "whois.apnic.net";
+       "2001:4600::/23" = "whois.ripe.net";
+       "2001:4800::/23" = "whois.arin.net";
+@@ -610,23 +691,47 @@ cidr6-blocks {
+       "2001:A000::/20" = "whois.apnic.net";
+       "2001:B000::/20" = "whois.apnic.net";
++      "2002:0000::/16" = "whois.arin.net"; # not correct, but shows better information
++
+       "2003:0000::/18" = "whois.ripe.net";
+-      "2400:0000::/19" = "whois.apnic.net";
+-      "2400:2000::/19" = "whois.apnic.net";
+-      "2400:4000::/21" = "whois.apnic.net";
+-      "2404:0000::/23" = "whois.apnic.net";
+-
+-      "2600:0000::/22" = "whois.arin.net";
+-      "2604:0000::/22" = "whois.arin.net";
+-      "2608:0000::/22" = "whois.arin.net";
+-      "260C:0000::/22" = "whois.arin.net";
++      "2400:0000::/12" = "whois.apnic.net";
++
++      "2600:0000::/12" = "whois.arin.net";
+       "2610:0000::/23" = "whois.arin.net";
++      "2620:0000::/23" = "whois.arin.net";
++
++      "2800:0000::/12" = "whois.lacnic.net";
+-      "2800:0000::/23" = "whois.lacnic.net";
++      "2C00:0000::/12" = "whois.afrinic.net";
+-      "2A00:0000::/21" = "whois.ripe.net";
+-      "2A01:0000::/16" = "whois.ripe.net";
++      #
++      # IPv6 blocks by carriers used for SixXS;
++      # see e.g. http://www.sixxs.net/pops/
++      #
++      "2001:0610::/32" = "whois.sixxs.net";
++      "2001:06A0::/32" = "whois.sixxs.net";
++      "2001:06A8::/32" = "whois.sixxs.net";
++      "2001:06F8::/32" = "whois.sixxs.net";
++      "2001:0770::/32" = "whois.sixxs.net";
++      "2001:07B8::/32" = "whois.sixxs.net";
++      "2001:0808::/32" = "whois.sixxs.net";
++      "2001:0838::/32" = "whois.sixxs.net";
++      "2001:0960::/32" = "whois.sixxs.net";
++      "2001:0A60::/32" = "whois.sixxs.net";
++      "2001:0AD0::/32" = "whois.sixxs.net";
++      "2001:0B18::/32" = "whois.sixxs.net";
++      "2001:1418::/32" = "whois.sixxs.net";
++      "2001:14B8::/32" = "whois.sixxs.net";
++      "2001:15C0::/32" = "whois.sixxs.net";
++      "2001:16D8::/32" = "whois.sixxs.net";
++      "2001:1938::/32" = "whois.sixxs.net";
++      "2001:4830::/32" = "whois.sixxs.net";
++      "2001:4978::/32" = "whois.sixxs.net";
++      "2001:41E0::/32" = "whois.sixxs.net";
++      "2001:4428::/32" = "whois.sixxs.net";
++      "2A01:0198::/32" = "whois.sixxs.net";
++      "2A01:0348::/32" = "whois.sixxs.net";
+       #
+       # Experimental IPv6 network 6bone (RFC2471)
+@@ -662,7 +767,7 @@ handles {
+       ".*-NICAT$" = "whois.nic.at";
+       ".*-CZ$" = "whois.nic.cz";
+       ".*-NICIR$" = "whois.nic.ir";
+-      ".*-UYNIC$" = "www.rau.edu.uy";
++      ".*-UYNIC$" = "whois.nic.org.uy";
+       ".*-ITNIC$" = "whois.nic.it";
+       ".*-FRNIC$" = "whois.nic.fr";
+       ".*-LACNIC$" = "whois.lacnic.net";
+@@ -671,6 +776,49 @@ handles {
+               whois-server = "saudinic.net.sa";
+               query-format = "PERSON $*";
+       }
++      ".*-SIXXS$" = "whois.sixxs.net";
++      ".*-6BONE$" = "whois.6bone.net";
++      ".*-IRNIC$" = "whois.nic.ir";
++      ".*-RIPN$" = "whois.ripn.net";
++      ".*-AFRINIC$" = "whois.afrinic.net";
++      "^C[0-9]+-LRMS$" {
++              whois-server = "whois.afilias.info";
++              query-format = "CONTACT ID $*";
++      }
++      "^D[0-9]+-LRMS$" {
++              whois-server = "whois.afilias.info";
++              query-format = "DOMAIN ID $*";
++      }
++      "^H[0-9]+-LRMS$" {
++              whois-server = "whois.afilias.info";
++              query-format = "HOST ID $*";
++      }
++      "^R[0-9]+-LRMS$" {
++              whois-server = "whois.afilias.info";
++              query-format = "REGISTRAR ID $*";
++      }
++      ".*-KENIC$" = "whois.kenic.or.ke";
++      ".*-UANIC$" = "whois.com.ua";
++      ".*-COOP$" {
++              whois-server = "whois.nic.coop";
++              query-format = "CONTACT $*";
++      }
++      ".*CONTACT-NAME$" {
++              whois-server = "whois.nic.name";
++              query-format = "contact = $*";
++      }
++      ".*REGISTRAR-NAME$" {
++              whois-server = "whois.nic.name";
++              query-format = "registrar = $*";
++      }
++      "^C[0-9]+-AERO$" {
++              whois-server = "whois.aero";
++              query-format = "CONTACT ID $*";
++      }
++      "^D[0-9]+-AERO$" {
++              whois-server = "whois.aero";
++              query-format = "DOMAIN ID $*";
++      }
+ }
+ #
+@@ -678,11 +826,6 @@ handles {
+ # each host. 
+ #
+ server-options {
+-      "rwhois\\.nic\\.ve" {
+-              rwhois = true;
+-              rwhois-display = "dump";
+-              rwhois-limit = 10;
+-      }
+       "rwhois\\.exodus\\.net" {
+               rwhois = true;
+       }
+@@ -754,13 +897,6 @@ server-options {
+               form-element = "name";
+       }
+-      "www\\.um\\.edu\\.mt" {
+-              http = "true";
+-              http-method = "GET";
+-              http-action = "/cgi-bin/nic/whois";
+-              form-element = "domain";
+-      }
+-
+       "www\\.gt" {
+               http = "true";
+               http-method = "GET";
+@@ -777,13 +913,6 @@ server-options {
+               query-format = "Upit=${+2}"; # All but last domain segment
+       }
+-      "whois\\.offshore\\.ai" {
+-              http = "true";
+-              http-method = "POST";
+-              http-action = "/cgi-bin/whois.pl";
+-              form-element = "domain-name";
+-      }
+-
+       "www\\.io\\.io" {
+               http = "true";
+               http-method = "GET";
+@@ -813,11 +942,12 @@ server-options {
+               form-element = "query";
+       }
+-      "www\\.nic\\.bi" {
+-              http = "true";
+-              http-method = "POST";
+-              http-action = "/cgi-bin/whoisbi.pl"; # Formatting problems in Lynx
+-              form-element = "DOMAINWHOIS";
++      "whois\\.nic\\.bi" {
++              http = "true"; # I can't connect on port 43
++              http-method = "GET";
++              http-action = "/register/whois.hei";
++              form-element = "query";
++              form-extra = "type=domain";
+       }
+       "www\\.nic\\.cg" {
+@@ -848,13 +978,6 @@ server-options {
+               form-element = "name";
+       }
+-      "www\\.noc\\.uz" {
+-              http = "true";
+-              http-method = "POST";
+-              http-action = "/whois.php4";
+-              form-element = "dname";
+-      }
+-
+       "www\\.nic\\.vi" {
+               http = "true";
+               http-method = "POST";
+@@ -878,9 +1001,9 @@ server-options {
+       "www\\.nic\\.tg" {
+               http = "true";
+-              http-method = "GET";
+-              http-action = "/moteur/info_dom.php";
+-              form-element = "domaine";
++              http-method = "POST";
++              http-action = "/nictg/indexplus.php?pg=verifdom&op=whois";
++              query-format = "tosearch=${+2}&typedom=.tg";
+       }
+       "cgi\\.aub\\.edu\\.lb" {
+@@ -910,33 +1033,152 @@ server-options {
+               form-element = "nombre";
+       }
+-      "www\\.denic\\.de" {
+-              http = "true";
+-              http-method = "POST";
+-              http-action = "/en/whois/data.jsp";
+-              form-element = "domainname";
+-              form-extra = "service=WhoisData&lang=en&submit=Accept";
+-      }
+       "whois\\.denic\\.de" {
+               whois-server = "whois.denic.de";
+               query-format = "-C UTF-8 -T dn,ace $*";
+               answer-charset = "UTF-8";
+       }
++
++      "whois\\.enum\\.denic\\.de" {
++              whois-server = "whois.enum.denic.de";
++              query-format = "-C UTF-8 -T dn $*";
++              answer-charset = "UTF-8";
++      }
++
+       "whois\\.nic\\.ad\\.jp" {
+               query-format = "$*/e";
+       }
++
+       "whois\\.nic\\.ch" {
+               answer-charset = "UTF-8";
+       }
++
+       "whois\\.nic\\.li" {
+               answer-charset = "UTF-8";
+       }
++
+       "whois\\.centralnic\\.*" {
+                 whois-redirect = ".*Whois Server: \\(.*\\)";
+         }
++
+       ".*\\.verisign-grs\\.com" {
+               whois-redirect = ".*Whois Server: \\(.*\\)";
+       }
++
++      "whois\\.sixxs\\.net" {
++              whois-redirect = ".*ReferralServer: whois:\/\/\\(.*\\)";
++        }
++
++      "whois2\\.afilias-grs\\.net" {
++              whois-redirect = "Whois Server:\\(.*\\)";
++      }
++
++      "whois\\.registrar\\.telekom\\.de" {
++              query-format = "full $*";
++      }
++
++      "whois\\.rrpproxy\\.net" {
++              answer-charset = "UTF-8";
++      }
++
++      "www\\.nom\\.za" {
++              http = "true";
++              http-method = "POST";
++              http-action = "/do.php";
++              query-format = "chkDomain=${+3}&chkAvail=Check";
++      }
++
++      "www\\.nic\\.pa" {
++              http = "true";
++              http-method = "GET";
++              http-action = "/egh/whois.php";
++              form-element = "nombre_d";
++      }
++
++      "www\\.nic\\.dz" {
++              http = "true";
++              http-method = "POST";
++              http-action = "/index.php?option=com_content&task=view&id=37&Itemid=51";
++              form-element = "domain_name";
++      }
++
++      "www\\.nic\\.yu" {
++              http = "true";
++              http-method = "GET";
++              http-action = "/cgi-bin/checkavail.cgi";
++              form-element = "domain";
++      }
++
++      "whois\\.dotster\\.com" {
++              answer-charset = "UTF-8";
++      }
++
++      "www\\.ert\\.gov\\.al" {
++              http = "true";
++              http-method = "POST";
++              http-action = "/ert_eng/domain_res.html";
++              query-format = "Domain=${+2}";
++      }
++
++      "www\\.nic\\.cu" {
++              http = "true";
++              http-method = "GET";
++              http-action = "/dom_det.php";
++              form-element = "domsrch";
++      }
++
++      "www\\.nic\\.ps" {
++              http = "true";
++              http-method = "GET";
++              http-action = "/whois/domain_whois.php";
++              form-element = "dname";
++      }
++
++      "www\\.svnet\\.org\\.sv" {
++              http = "true";
++              http-method = "POST";
++              http-action = "/registro/consultas/whois.php";
++              form-element = "subdominio";
++      }
++
++      "www\\.zispa\\.co\\.zw" {
++              http = "true";
++              http-method = "GET";
++              http-action = "/cgi-bin/search";
++              form-element = "domain";
++      }
++
++      "www\\.riu\\.edu\\.ar" {
++              http = "true";
++              http-method = "POST";
++              http-action = "/cgi-bin/verdom.pl.nuevo";
++              query-format = "username=${+3}";
++      }
++
++      "www\\.register\\.bs" {
++              http = "true";
++              http-method = "POST";
++              http-action = "/cgi-bin/search.pl";
++              form-element = "name";
++      }
++
++      "www\\.domain\\.by" {
++              http = "true";
++              http-method = "POST";
++              http-action = "/cgi-bin/registry.cgi";
++              query-format = "domain=${+2}&lang=e&mode=slquest";
++      }
++
++      "www\\.nic\\.ac" {
++              http = "true";
++              http-method = "GET";
++              http-action = "/cgi-bin/whois";
++              form-element = "textfield";
++      }
++
++      "whois\\.1api\\.net" {
++              answer-charset = "UTF-8";
++      }
+ }
+ #
diff --git a/src/patches/jwhois-4.0-conf_update2.patch b/src/patches/jwhois-4.0-conf_update2.patch
new file mode 100644 (file)
index 0000000..72dd300
--- /dev/null
@@ -0,0 +1,163 @@
+Patch by Robert Scheck <robert@fedoraproject.org> for jwhois >= 4.0, which adds various new
+IDN top-level-domains, updates some whois servers of ccTLDs and corrects the answer charset
+setting for some whois servers, too.
+
+--- jwhois-4.0/example/jwhois.conf                     2011-05-22 20:36:19.000000000 +0200
++++ jwhois-4.0/example/jwhois.conf.conf_update2                2011-05-22 23:46:21.000000000 +0200
+@@ -122,7 +122,6 @@
+       "\\.ac\\.ae$" = "whois.aeda.net.ae";
+       "\\.mil\\.ae$" = "whois.aeda.net.ae";
+       "\\.gov\\.ae$" = "whois.aeda.net.ae";
+-      "\\.1\\.7\\.9\\.e164\\.arpa$" = "whois.aeda.net.ae";
+       "\\.aero$" = "whois.aero";
+       "\\.af$" = "whois.cocca.cx";
+       "\\.ag$" = "whois.nic.ag";
+@@ -192,7 +191,7 @@
+       }
+       "\\.dm$" = "whois.nic.dm";
+       "\\.do$" = "whois.nic.do";
+-      "\\.dz$" = "www.nic.dz";
++      "\\.dz$" = "whois.nic.dz";
+       "\\.ec$" = "www.nic.ec";
+       "\\.edu$" = "whois.educause.edu";
+       "\\.ee$" = "whois.eenet.ee";
+@@ -243,7 +242,7 @@
+       "\\.kp$" = "whois.kcce.kp";
+       "\\.kg$" = "whois.domain.kg";
+       "\\.ki$" = "whois.cocca.cx";
+-      "\\.kr$" = "whois.krnic.net";
++      "\\.kr$" = "whois.kr";
+       "\\.kz$" = "whois.nic.kz";
+       "\\.la$" = "whois.nic.la";
+       "\\.lb$" = "cgi.aub.edu.lb";
+@@ -292,13 +291,14 @@
+       "\\.pm$" = "whois.nic.pm";
+       "\\.pr$" = "whois.nic.pr";
+       "\\.pro$" = "whois.registrypro.pro";
+-      "\\.ps$" = "www.nic.ps";
++      "\\.ps$" = "whois.pnina.ps";
+       "\\.pt$" = "whois.dns.pt";
+       "\\.pw$" = "whois.nic.pw";
+       "\\.re$" = "whois.nic.re";
+       "\\.ro$" = "whois.rotld.ro";
++      "\\.rs$" = "whois.rnids.rs";
+       "\\.edu\.ru$" = "whois.informika.ru";
+-      "\\.ru$" = "whois.ripn.net";
++      "\\.ru$" = "whois.tcinet.ru";
+       "\\.rw$" = "www.nic.rw";
+       "\\.sa$" = "saudinic.net.sa";
+       "\\.sb$" = "whois.nic.sb";
+@@ -317,6 +317,7 @@
+       "\\.st$" = "whois.nic.st";
+       "\\.su$" = "whois.ripn.net";
+       "\\.sv$" = "www.svnet.org.sv";
++      "\\.sy$" = "whois.tld.sy";
+       "\\.tc$" = "whois.adamsnames.tc";
+       "\\.tel$" = "whois.nic.tel";
+       "\\.tf$" = "whois.afnic.fr";
+@@ -335,7 +336,7 @@
+               whois-server = "tvwhois.verisign-grs.com";
+               query-format = "domain $*";
+         }
+-      "\\.tw$" = "whois.twnic.net";
++      "\\.tw$" = "whois.twnic.net.tw";
+       "\\.ua$" = "whois.com.ua";
+       "\\.ug$" = "whois.co.ug";
+       "\\.ac\\.uk$" = "whois.ja.net";
+@@ -357,9 +358,25 @@
+       "\\.vu$" = "www.vunic.vu";
+       "\\.wf$" = "whois.nic.wf";
+       "\\.ws$" = "whois.worldsite.ws";
++      "\\.xn--3e0b707e$" = "whois.kr";
++      "\\.xn--90a3ac$" = "whois.rnids.rs";
++      "\\.xn--clchc0ea0b2g2a9gcd$" = "whois.sgnic.sg";
++      "\\.xn--fiqs8s$" = "cwhois.cnnic.cn";
++      "\\.xn--fiqz9s$" = "cwhois.cnnic.cn";
++      "\\.xn--fzc2c9e2c$" = "whois.nic.lk";
++      "\\.xn--j6w193g$" = "whois.hkirc.hk";
++      "\\.xn--kprw13d$" = "whois.twnic.net.tw";
++      "\\.xn--kpry57d$" = "whois.twnic.net.tw";
++      "\\.xn--lgbbat1ad8j$" = "whois.nic.dz";
+       "\\.xn--mgbaam7a8h$" = "whois.aeda.net.ae";
++      "\\.xn--mgberp4a5d4ar$" = "whois.nic.net.sa";
++      "\\.xn--o3cw4h$" = "whois.thnic.co.th";
++      "\\.xn--ogbpf8fl$" = "whois.tld.sy";
++      "\\.xn--p1ai$" = "whois.tcinet.ru";
++      "\\.xn--xkc2al3hye2a$" = "whois.nic.lk";
++      "\\.xn--yfro4i67o$" = "whois.sgnic.sg";
++      "\\.xn--ygbi2ammx$" = "whois.pnina.ps";
+       "\\.yt$" = "whois.nic.yt";
+-      "\\.yu$" = "www.nic.yu";
+       "\\.ac\\.za$" = "whois.ac.za";
+       "\\.org\\.za$" = "rwhois.org.za 4321";
+       "\\.co\\.za$" = "whois.co.za";
+@@ -389,6 +406,7 @@
+       "\\.9\\.4\\.e164\\.arpa$" = "whois.enum.denic.de";
+       "\\.1\\.6\\.e164\\.arpa$" = "whois-check.enum.com.au";
++      "\\.1\\.7\\.9\\.e164\\.arpa$" = "whois.aeda.net.ae";
+ }
+ #
+@@ -1095,20 +1113,6 @@
+               form-element = "nombre_d";
+       }
+-      "www\\.nic\\.dz" {
+-              http = "true";
+-              http-method = "POST";
+-              http-action = "/index.php?option=com_content&task=view&id=37&Itemid=51";
+-              form-element = "domain_name";
+-      }
+-
+-      "www\\.nic\\.yu" {
+-              http = "true";
+-              http-method = "GET";
+-              http-action = "/cgi-bin/checkavail.cgi";
+-              form-element = "domain";
+-      }
+-
+       "whois\\.dotster\\.com" {
+               answer-charset = "UTF-8";
+       }
+@@ -1127,13 +1131,6 @@
+               form-element = "domsrch";
+       }
+-      "www\\.nic\\.ps" {
+-              http = "true";
+-              http-method = "GET";
+-              http-action = "/whois/domain_whois.php";
+-              form-element = "dname";
+-      }
+-
+       "www\\.svnet\\.org\\.sv" {
+               http = "true";
+               http-method = "POST";
+@@ -1179,6 +1176,26 @@
+       "whois\\.1api\\.net" {
+               answer-charset = "UTF-8";
+       }
++
++      "whois\\.kr" {
++              answer-charset = "EUC-KR";
++      }
++
++      "whois\\.nic\\.or\\.kr" {
++              answer-charset = "EUC-KR";
++      }
++
++      "whois\\.nic\\.dz" {
++              answer-charset = "UTF-8";
++      }
++
++      "whois\\.nic\\.lk" {
++              answer-charset = "ISO-8859-11";
++      }
++
++      "whois\\.iana\\.org" {
++              answer-charset = "UTF-8";
++      }
+ }
+ #
diff --git a/src/patches/jwhois-4.0-connect.patch b/src/patches/jwhois-4.0-connect.patch
new file mode 100644 (file)
index 0000000..2a639d7
--- /dev/null
@@ -0,0 +1,58 @@
+This fixes somewhat reversed logic of trying to connect to WHOIS server.
+Tue Nov 20 2007, Lubomir Kundrak <lkundrak@redhat.com>
+
+--- jwhois-4.0/src/utils.c.connect     2007-06-26 09:00:20.000000000 +0200
++++ jwhois-4.0/src/utils.c     2007-11-20 17:05:33.000000000 +0100
+@@ -247,7 +247,7 @@ make_connect(const char *host, int port)
+     {
+       return -1;
+     }
+-  while (res)
++  for (; res; res = res->ai_next)
+     {
+       sa = res->ai_addr;
+       sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
+@@ -266,15 +266,15 @@ make_connect(const char *host, int port)
+       flags = fcntl(sockfd, F_GETFL, 0);
+       if (fcntl(sockfd, F_SETFL, flags|O_NONBLOCK) == -1)
+       {
++        close (sockfd);
+         return -1;
+       }
+-
+       error = connect(sockfd, res->ai_addr, res->ai_addrlen);
+-
+       if (error < 0 && errno != EINPROGRESS)
+       {
+-        break;
++        close (sockfd);
++        continue;
+       }
+       FD_ZERO(&fdset);
+@@ -283,18 +283,20 @@ make_connect(const char *host, int port)
+       error = select(FD_SETSIZE, NULL, &fdset, NULL, &timeout);
+       if (error == 0)
+       {
+-        break;
++        close (sockfd);
++        return -1;
+       }
+       retlen = sizeof(retval);
+       error = getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &retval, &retlen);
+       if (error < 0 || retval)
+       {
+-        break;
++        close (sockfd);
++        return -1;
+       }
+-      res = res->ai_next;
++
++      break;
+     }
+-  if (error < 0 || retval) return -1;
+ #endif
+   return sockfd;
diff --git a/src/patches/jwhois-4.0-fclose.patch b/src/patches/jwhois-4.0-fclose.patch
new file mode 100644 (file)
index 0000000..e9c896f
--- /dev/null
@@ -0,0 +1,12 @@
+diff -up jwhois-4.0/src/init.c_old jwhois-4.0/src/init.c
+--- jwhois-4.0/src/init.c_old  2007-06-26 08:59:17.000000000 +0200
++++ jwhois-4.0/src/init.c      2009-01-27 15:49:35.000000000 +0100
+@@ -283,6 +283,8 @@ parse_args(int *argc, char ***argv)
+   if (in)
+     jconfig_parse_file(in);
++  fclose(in);
++
+   if (verbose>1)
+     {
+       printf("[Debug: Cache = %s]\n", cache?"On":"Off");
diff --git a/src/patches/jwhois-4.0-idna.patch b/src/patches/jwhois-4.0-idna.patch
new file mode 100644 (file)
index 0000000..ff13a4f
--- /dev/null
@@ -0,0 +1,43 @@
+diff -up jwhois-4.0/src/jwhois.c.orig jwhois-4.0/src/jwhois.c
+--- jwhois-4.0/src/jwhois.c.orig       2007-06-26 08:59:35.000000000 +0200
++++ jwhois-4.0/src/jwhois.c    2011-05-24 12:29:37.398892451 +0200
+@@ -98,7 +98,7 @@ main(int argc, char **argv)
+   /* Parse remaining arguments and place them into the wq
+      structure. */
+-  while (optind < argc)
++  while (optind < argc-1)
+     {
+       count += strlen(argv[optind])+1;
+       if (!qstring)
+@@ -116,19 +116,25 @@ main(int argc, char **argv)
+       strcat(qstring, " ");
+       optind++;
+     }
+-  qstring[strlen(qstring)-1] = '\0';
+ #ifdef LIBIDN
+-  rc = idna_to_ascii_lz(qstring, &idn, 0);
++  rc = idna_to_ascii_lz(argv[optind], &idn, 0);
+   if (rc != IDNA_SUCCESS)
+     {
+-      printf("[IDN encoding of '%s' failed with error code %d]\n", qstring, rc);
++      printf("[IDN encoding of '%s' failed with error code %d]\n", argv[optind], rc);
+       exit(1);
+     }
+-  wq.query = strdup(idn);
++  qstring = realloc(qstring, count+strlen(idn)+1);
++  memcpy(qstring+count,
++         idn,
++         strlen(idn)+1);
+   free(idn);
+ #else
+-  wq.query = qstring;
++  qstring = realloc(qstring, count+strlen(argv[optind])+1);
++  memcpy(qstring+count,
++         argv[optind],
++         strlen(argv[optind])+1);
+ #endif
++  wq.query = qstring;
+   if (ghost)
+     {
diff --git a/src/patches/jwhois-4.0-ipv6match.patch b/src/patches/jwhois-4.0-ipv6match.patch
new file mode 100644 (file)
index 0000000..0e5ad0e
--- /dev/null
@@ -0,0 +1,15 @@
+When IPv6 address mask did not end on an octed boundary, the the opposite
+part of last byte of host address was taken into account when a match was
+attempted. -- Lubomir Kundrak <lkundrak@redhat.com>
+
+--- jwhois-4.0/src/lookup.c.ipv6-match 2007-12-04 17:09:57.000000000 +0100
++++ jwhois-4.0/src/lookup.c    2007-12-04 17:10:20.000000000 +0100
+@@ -149,7 +149,7 @@ static int ipv6_address_is_in_network(co
+     }
+   /* i == bits / 8 */
+   if (bits % 8 != 0
+-      && (addr->s6_addr[i] & (0xFFu << (bits % 8))) != net->s6_addr[i])
++      && (addr->s6_addr[i] & (0xFFu << 8-(bits % 8))) != net->s6_addr[i])
+     return 0;
+   return 1;
+ }
diff --git a/src/patches/jwhois-4.0-multi-homed.patch b/src/patches/jwhois-4.0-multi-homed.patch
new file mode 100644 (file)
index 0000000..05d6f46
--- /dev/null
@@ -0,0 +1,15 @@
+diff -up jwhois-4.0/src/utils.c.orig jwhois-4.0/src/utils.c
+--- jwhois-4.0/src/utils.c.orig        2010-09-29 16:19:24.453608330 +0200
++++ jwhois-4.0/src/utils.c     2010-09-29 16:20:10.686608189 +0200
+@@ -292,7 +292,10 @@ make_connect(const char *host, int port)
+       if (error < 0 || retval)
+       {
+         close (sockfd);
+-        return -1;
++        if (retval == ENETUNREACH)
++          continue;
++        else
++          return -1;
+       }
+       break;
diff --git a/src/patches/jwhois-4.0-select.patch b/src/patches/jwhois-4.0-select.patch
new file mode 100644 (file)
index 0000000..b60ec96
--- /dev/null
@@ -0,0 +1,27 @@
+diff -ur jwhois-4.0.old/src/whois.c jwhois-4.0/src/whois.c
+--- jwhois-4.0.old/src/whois.c 2007-06-26 03:00:29.000000000 -0400
++++ jwhois-4.0/src/whois.c     2009-04-29 11:42:56.000000000 -0400
+@@ -115,6 +115,7 @@
+   unsigned int count, start_count;
+   int ret;
+   char data[MAXBUFSIZE];
++  fd_set rfds;
+   count = 0;
+@@ -124,7 +125,15 @@
+   do
+     {
++      FD_ZERO(&rfds);
++      FD_SET(fd, &rfds);
++      ret = select(fd + 1, &rfds, NULL, NULL, NULL);
++
++      if (ret <= 0)
++        return -1;
++
+       ret = read(fd, data, MAXBUFSIZE-1);
++
+       if (ret >= 0)
+       {
+         count += ret;
diff --git a/src/patches/kernel/omap/0002-omap2-twl-common-Add-default-power-configuration.patch b/src/patches/kernel/omap/0002-omap2-twl-common-Add-default-power-configuration.patch
new file mode 100644 (file)
index 0000000..d27ad54
--- /dev/null
@@ -0,0 +1,88 @@
+From 2e908aeebd6804296e7d14a96de6be1e2de38e93 Mon Sep 17 00:00:00 2001
+From: Matthias Brugger <matthias.bgg@gmail.com>
+Date: Wed, 23 Jan 2013 19:50:38 +0100
+Subject: [PATCH 2/2] omap2: twl-common: Add default power configuration
+
+This patch adds a generic power script configuration.
+When rebooting an OMAP3530 at 125 MHz, the reboot hangs.
+With the generic power script, TWL4030 will be reset
+when a warm reset occures. This way the OMAP3530 does not
+hang on reboot.
+
+Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
+---
+ arch/arm/mach-omap2/twl-common.c |   38 ++++++++++++++++++++++++++++++++++++++
+ arch/arm/mach-omap2/twl-common.h |    1 +
+ 2 files changed, 39 insertions(+)
+
+diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c
+index e49b40b..f096beb 100644
+--- a/arch/arm/mach-omap2/twl-common.c
++++ b/arch/arm/mach-omap2/twl-common.c
+@@ -120,6 +120,41 @@ static struct twl4030_audio_data omap3_audio_pdata = {
+       .codec = &omap3_codec,
+ };
++static struct twl4030_ins wrst_seq[] __initdata = {
++      {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_OFF), 2},
++      {MSG_SINGULAR(DEV_GRP_P1, 0xf, RES_STATE_WRST), 15},
++      {MSG_SINGULAR(DEV_GRP_P1, 0x10, RES_STATE_WRST), 15},
++      {MSG_SINGULAR(DEV_GRP_P1, 0x7, RES_STATE_WRST), 0x60},
++      {MSG_SINGULAR(DEV_GRP_P1, 0x19, RES_STATE_ACTIVE), 2},
++      {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_ACTIVE), 2},
++};
++
++static struct twl4030_script wrst_script __initdata = {
++      .script = wrst_seq,
++      .size   = ARRAY_SIZE(wrst_seq),
++      .flags  = TWL4030_WRST_SCRIPT,
++};
++
++static struct twl4030_script *omap3_power_scripts[] __initdata = {
++      &wrst_script,
++};
++
++static struct twl4030_resconfig omap3_rconfig[] = {
++      { .resource = RES_HFCLKOUT, .devgroup = DEV_GRP_P3, .type = -1,
++              .type2 = -1 },
++      { .resource = RES_VDD1, .devgroup = DEV_GRP_P1, .type = -1,
++              .type2 = -1 },
++      { .resource = RES_VDD2, .devgroup = DEV_GRP_P1, .type = -1,
++              .type2 = -1 },
++      { 0, 0},
++};
++
++static struct twl4030_power_data omap3_power_pdata = {
++      .scripts        = omap3_power_scripts,
++      .num            = ARRAY_SIZE(omap3_power_scripts),
++      .resource_config = omap3_rconfig,
++};
++
+ static struct regulator_consumer_supply omap3_vdda_dac_supplies[] = {
+       REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"),
+ };
+@@ -224,6 +259,9 @@ void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
+       if (pdata_flags & TWL_COMMON_PDATA_AUDIO && !pmic_data->audio)
+               pmic_data->audio = &omap3_audio_pdata;
++      if (pdata_flags & TWL_COMMON_PDATA_POWER && !pmic_data->power)
++              pmic_data->power = &omap3_power_pdata;
++
+       /* Common regulator configurations */
+       if (regulators_flags & TWL_COMMON_REGULATOR_VDAC && !pmic_data->vdac)
+               pmic_data->vdac = &omap3_vdac_idata;
+diff --git a/arch/arm/mach-omap2/twl-common.h b/arch/arm/mach-omap2/twl-common.h
+index dcfbad5..dbeb905 100644
+--- a/arch/arm/mach-omap2/twl-common.h
++++ b/arch/arm/mach-omap2/twl-common.h
+@@ -7,6 +7,7 @@
+ #define TWL_COMMON_PDATA_BCI          (1 << 1)
+ #define TWL_COMMON_PDATA_MADC         (1 << 2)
+ #define TWL_COMMON_PDATA_AUDIO                (1 << 3)
++#define TWL_COMMON_PDATA_POWER                (1 << 4)
+ /* Common LDO regulators for TWL4030/TWL6030 */
+ #define TWL_COMMON_REGULATOR_VDAC     (1 << 0)
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/3isp/0001-omap3isp-Use-the-common-clock-framework.patch b/src/patches/kernel/omap/3isp/0001-omap3isp-Use-the-common-clock-framework.patch
new file mode 100644 (file)
index 0000000..a61d5b8
--- /dev/null
@@ -0,0 +1,444 @@
+From 369b60c157f67a71a6f302ab9843ae2de1805a2a Mon Sep 17 00:00:00 2001
+From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Date: Mon, 22 Oct 2012 15:43:00 +0200
+Subject: [PATCH 1/6] omap3isp: Use the common clock framework
+
+Expose the two ISP external clocks XCLKA and XCLKB as common clocks for
+subdev drivers.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Acked-by: Mike Turquette <mturquette@linaro.org>
+---
+ drivers/media/platform/omap3isp/isp.c |  277 ++++++++++++++++++++++++---------
+ drivers/media/platform/omap3isp/isp.h |   22 ++-
+ include/media/omap3isp.h              |   10 +-
+ 3 files changed, 225 insertions(+), 84 deletions(-)
+
+diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
+index 6e5ad8e..1d7dbd5 100644
+--- a/drivers/media/platform/omap3isp/isp.c
++++ b/drivers/media/platform/omap3isp/isp.c
+@@ -55,6 +55,7 @@
+ #include <asm/cacheflush.h>
+ #include <linux/clk.h>
++#include <linux/clkdev.h>
+ #include <linux/delay.h>
+ #include <linux/device.h>
+ #include <linux/dma-mapping.h>
+@@ -148,6 +149,201 @@ void omap3isp_flush(struct isp_device *isp)
+       isp_reg_readl(isp, OMAP3_ISP_IOMEM_MAIN, ISP_REVISION);
+ }
++/* -----------------------------------------------------------------------------
++ * XCLK
++ */
++
++#define to_isp_xclk(_hw)      container_of(_hw, struct isp_xclk, hw)
++
++static void isp_xclk_update(struct isp_xclk *xclk, u32 divider)
++{
++      switch (xclk->id) {
++      case ISP_XCLK_A:
++              isp_reg_clr_set(xclk->isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL,
++                              ISPTCTRL_CTRL_DIVA_MASK,
++                              divider << ISPTCTRL_CTRL_DIVA_SHIFT);
++              break;
++      case ISP_XCLK_B:
++              isp_reg_clr_set(xclk->isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL,
++                              ISPTCTRL_CTRL_DIVB_MASK,
++                              divider << ISPTCTRL_CTRL_DIVB_SHIFT);
++              break;
++      }
++}
++
++static int isp_xclk_prepare(struct clk_hw *hw)
++{
++      struct isp_xclk *xclk = to_isp_xclk(hw);
++
++      omap3isp_get(xclk->isp);
++
++      return 0;
++}
++
++static void isp_xclk_unprepare(struct clk_hw *hw)
++{
++      struct isp_xclk *xclk = to_isp_xclk(hw);
++
++      omap3isp_put(xclk->isp);
++}
++
++static int isp_xclk_enable(struct clk_hw *hw)
++{
++      struct isp_xclk *xclk = to_isp_xclk(hw);
++      unsigned long flags;
++
++      spin_lock_irqsave(&xclk->lock, flags);
++      isp_xclk_update(xclk, xclk->divider);
++      xclk->enabled = true;
++      spin_unlock_irqrestore(&xclk->lock, flags);
++
++      return 0;
++}
++
++static void isp_xclk_disable(struct clk_hw *hw)
++{
++      struct isp_xclk *xclk = to_isp_xclk(hw);
++      unsigned long flags;
++
++      spin_lock_irqsave(&xclk->lock, flags);
++      isp_xclk_update(xclk, 0);
++      xclk->enabled = false;
++      spin_unlock_irqrestore(&xclk->lock, flags);
++}
++
++static unsigned long isp_xclk_recalc_rate(struct clk_hw *hw,
++                                        unsigned long parent_rate)
++{
++      struct isp_xclk *xclk = to_isp_xclk(hw);
++
++      return parent_rate / xclk->divider;
++}
++
++static u32 isp_xclk_calc_divider(unsigned long *rate, unsigned long parent_rate)
++{
++      u32 divider;
++
++      if (*rate >= parent_rate) {
++              *rate = parent_rate;
++              return ISPTCTRL_CTRL_DIV_BYPASS;
++      }
++
++      divider = DIV_ROUND_CLOSEST(parent_rate, *rate);
++      if (divider >= ISPTCTRL_CTRL_DIV_BYPASS)
++              divider = ISPTCTRL_CTRL_DIV_BYPASS - 1;
++
++      *rate = parent_rate / divider;
++      return divider;
++}
++
++static long isp_xclk_round_rate(struct clk_hw *hw, unsigned long rate,
++                              unsigned long *parent_rate)
++{
++      isp_xclk_calc_divider(&rate, *parent_rate);
++      return rate;
++}
++
++static int isp_xclk_set_rate(struct clk_hw *hw, unsigned long rate,
++                           unsigned long parent_rate)
++{
++      struct isp_xclk *xclk = to_isp_xclk(hw);
++      unsigned long flags;
++      u32 divider;
++
++      divider = isp_xclk_calc_divider(&rate, parent_rate);
++
++      spin_lock_irqsave(&xclk->lock, flags);
++
++      xclk->divider = divider;
++      if (xclk->enabled)
++              isp_xclk_update(xclk, divider);
++
++      spin_unlock_irqrestore(&xclk->lock, flags);
++
++      dev_dbg(xclk->isp->dev, "%s: cam_xclk%c set to %lu Hz (div %u)\n",
++              __func__, xclk->id == ISP_XCLK_A ? 'a' : 'b', rate, divider);
++      return 0;
++}
++
++static const struct clk_ops isp_xclk_ops = {
++      .prepare = isp_xclk_prepare,
++      .unprepare = isp_xclk_unprepare,
++      .enable = isp_xclk_enable,
++      .disable = isp_xclk_disable,
++      .recalc_rate = isp_xclk_recalc_rate,
++      .round_rate = isp_xclk_round_rate,
++      .set_rate = isp_xclk_set_rate,
++};
++
++static const char *isp_xclk_parent_name = "cam_mclk";
++
++static const struct clk_init_data isp_xclk_init_data = {
++      .name = "cam_xclk",
++      .ops = &isp_xclk_ops,
++      .parent_names = &isp_xclk_parent_name,
++      .num_parents = 1,
++};
++
++static int isp_xclk_init(struct isp_device *isp)
++{
++      struct isp_platform_data *pdata = isp->pdata;
++      struct clk_init_data init;
++      unsigned int i;
++
++      for (i = 0; i < ARRAY_SIZE(isp->xclks); ++i) {
++              struct isp_xclk *xclk = &isp->xclks[i];
++              struct clk *clk;
++
++              xclk->isp = isp;
++              xclk->id = i == 0 ? ISP_XCLK_A : ISP_XCLK_B;
++              xclk->divider = 1;
++              spin_lock_init(&xclk->lock);
++
++              init.name = i == 0 ? "cam_xclka" : "cam_xclkb";
++              init.ops = &isp_xclk_ops;
++              init.parent_names = &isp_xclk_parent_name;
++              init.num_parents = 1;
++
++              xclk->hw.init = &init;
++
++              clk = devm_clk_register(isp->dev, &xclk->hw);
++              if (IS_ERR(clk))
++                      return PTR_ERR(clk);
++
++              if (pdata->xclks[i].con_id == NULL &&
++                  pdata->xclks[i].dev_id == NULL)
++                      continue;
++
++              xclk->lookup = kzalloc(sizeof(*xclk->lookup), GFP_KERNEL);
++              if (xclk->lookup == NULL)
++                      return -ENOMEM;
++
++              xclk->lookup->con_id = pdata->xclks[i].con_id;
++              xclk->lookup->dev_id = pdata->xclks[i].dev_id;
++              xclk->lookup->clk = clk;
++
++              clkdev_add(xclk->lookup);
++      }
++
++      return 0;
++}
++
++static void isp_xclk_cleanup(struct isp_device *isp)
++{
++      unsigned int i;
++
++      for (i = 0; i < ARRAY_SIZE(isp->xclks); ++i) {
++              struct isp_xclk *xclk = &isp->xclks[i];
++
++              if (xclk->lookup)
++                      clkdev_drop(xclk->lookup);
++      }
++}
++
++/* -----------------------------------------------------------------------------
++ * Interrupts
++ */
++
+ /*
+  * isp_enable_interrupts - Enable ISP interrupts.
+  * @isp: OMAP3 ISP device
+@@ -180,80 +376,6 @@ static void isp_disable_interrupts(struct isp_device *isp)
+       isp_reg_writel(isp, 0, OMAP3_ISP_IOMEM_MAIN, ISP_IRQ0ENABLE);
+ }
+-/**
+- * isp_set_xclk - Configures the specified cam_xclk to the desired frequency.
+- * @isp: OMAP3 ISP device
+- * @xclk: Desired frequency of the clock in Hz. 0 = stable low, 1 is stable high
+- * @xclksel: XCLK to configure (0 = A, 1 = B).
+- *
+- * Configures the specified MCLK divisor in the ISP timing control register
+- * (TCTRL_CTRL) to generate the desired xclk clock value.
+- *
+- * Divisor = cam_mclk_hz / xclk
+- *
+- * Returns the final frequency that is actually being generated
+- **/
+-static u32 isp_set_xclk(struct isp_device *isp, u32 xclk, u8 xclksel)
+-{
+-      u32 divisor;
+-      u32 currentxclk;
+-      unsigned long mclk_hz;
+-
+-      if (!omap3isp_get(isp))
+-              return 0;
+-
+-      mclk_hz = clk_get_rate(isp->clock[ISP_CLK_CAM_MCLK]);
+-
+-      if (xclk >= mclk_hz) {
+-              divisor = ISPTCTRL_CTRL_DIV_BYPASS;
+-              currentxclk = mclk_hz;
+-      } else if (xclk >= 2) {
+-              divisor = mclk_hz / xclk;
+-              if (divisor >= ISPTCTRL_CTRL_DIV_BYPASS)
+-                      divisor = ISPTCTRL_CTRL_DIV_BYPASS - 1;
+-              currentxclk = mclk_hz / divisor;
+-      } else {
+-              divisor = xclk;
+-              currentxclk = 0;
+-      }
+-
+-      switch (xclksel) {
+-      case ISP_XCLK_A:
+-              isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL,
+-                              ISPTCTRL_CTRL_DIVA_MASK,
+-                              divisor << ISPTCTRL_CTRL_DIVA_SHIFT);
+-              dev_dbg(isp->dev, "isp_set_xclk(): cam_xclka set to %d Hz\n",
+-                      currentxclk);
+-              break;
+-      case ISP_XCLK_B:
+-              isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_MAIN, ISP_TCTRL_CTRL,
+-                              ISPTCTRL_CTRL_DIVB_MASK,
+-                              divisor << ISPTCTRL_CTRL_DIVB_SHIFT);
+-              dev_dbg(isp->dev, "isp_set_xclk(): cam_xclkb set to %d Hz\n",
+-                      currentxclk);
+-              break;
+-      case ISP_XCLK_NONE:
+-      default:
+-              omap3isp_put(isp);
+-              dev_dbg(isp->dev, "ISP_ERR: isp_set_xclk(): Invalid requested "
+-                      "xclk. Must be 0 (A) or 1 (B).\n");
+-              return -EINVAL;
+-      }
+-
+-      /* Do we go from stable whatever to clock? */
+-      if (divisor >= 2 && isp->xclk_divisor[xclksel - 1] < 2)
+-              omap3isp_get(isp);
+-      /* Stopping the clock. */
+-      else if (divisor < 2 && isp->xclk_divisor[xclksel - 1] >= 2)
+-              omap3isp_put(isp);
+-
+-      isp->xclk_divisor[xclksel - 1] = divisor;
+-
+-      omap3isp_put(isp);
+-
+-      return currentxclk;
+-}
+-
+ /*
+  * isp_core_init - ISP core settings
+  * @isp: OMAP3 ISP device
+@@ -1969,6 +2091,7 @@ static int isp_remove(struct platform_device *pdev)
+       isp_unregister_entities(isp);
+       isp_cleanup_modules(isp);
++      isp_xclk_cleanup(isp);
+       __omap3isp_get(isp, false);
+       iommu_detach_device(isp->domain, &pdev->dev);
+@@ -2042,7 +2165,6 @@ static int isp_probe(struct platform_device *pdev)
+       }
+       isp->autoidle = autoidle;
+-      isp->platform_cb.set_xclk = isp_set_xclk;
+       mutex_init(&isp->isp_mutex);
+       spin_lock_init(&isp->stat_lock);
+@@ -2093,6 +2215,10 @@ static int isp_probe(struct platform_device *pdev)
+       if (ret < 0)
+               goto error_isp;
++      ret = isp_xclk_init(isp);
++      if (ret < 0)
++              goto error_isp;
++
+       /* Memory resources */
+       for (m = 0; m < ARRAY_SIZE(isp_res_maps); m++)
+               if (isp->revision == isp_res_maps[m].isp_rev)
+@@ -2162,6 +2288,7 @@ detach_dev:
+ free_domain:
+       iommu_domain_free(isp->domain);
+ error_isp:
++      isp_xclk_cleanup(isp);
+       omap3isp_put(isp);
+ error:
+       platform_set_drvdata(pdev, NULL);
+diff --git a/drivers/media/platform/omap3isp/isp.h b/drivers/media/platform/omap3isp/isp.h
+index c77e1f2..cd3eff4 100644
+--- a/drivers/media/platform/omap3isp/isp.h
++++ b/drivers/media/platform/omap3isp/isp.h
+@@ -29,6 +29,7 @@
+ #include <media/omap3isp.h>
+ #include <media/v4l2-device.h>
++#include <linux/clk-provider.h>
+ #include <linux/device.h>
+ #include <linux/io.h>
+ #include <linux/iommu.h>
+@@ -125,8 +126,20 @@ struct isp_reg {
+       u32 val;
+ };
+-struct isp_platform_callback {
+-      u32 (*set_xclk)(struct isp_device *isp, u32 xclk, u8 xclksel);
++enum isp_xclk_id {
++      ISP_XCLK_A,
++      ISP_XCLK_B,
++};
++
++struct isp_xclk {
++      struct isp_device *isp;
++      struct clk_hw hw;
++      struct clk_lookup *lookup;
++      enum isp_xclk_id id;
++
++      spinlock_t lock;        /* Protects enabled and divider */
++      bool enabled;
++      unsigned int divider;
+ };
+ /*
+@@ -149,6 +162,7 @@ struct isp_platform_callback {
+  * @cam_mclk: Pointer to camera functional clock structure.
+  * @csi2_fck: Pointer to camera CSI2 complexIO clock structure.
+  * @l3_ick: Pointer to OMAP3 L3 bus interface clock.
++ * @xclks: External clocks provided by the ISP
+  * @irq: Currently attached ISP ISR callbacks information structure.
+  * @isp_af: Pointer to current settings for ISP AutoFocus SCM.
+  * @isp_hist: Pointer to current settings for ISP Histogram SCM.
+@@ -185,12 +199,12 @@ struct isp_device {
+       int has_context;
+       int ref_count;
+       unsigned int autoidle;
+-      u32 xclk_divisor[2];    /* Two clocks, a and b. */
+ #define ISP_CLK_CAM_ICK               0
+ #define ISP_CLK_CAM_MCLK      1
+ #define ISP_CLK_CSI2_FCK      2
+ #define ISP_CLK_L3_ICK                3
+       struct clk *clock[4];
++      struct isp_xclk xclks[2];
+       /* ISP modules */
+       struct ispstat isp_af;
+@@ -209,8 +223,6 @@ struct isp_device {
+       unsigned int subclk_resources;
+       struct iommu_domain *domain;
+-
+-      struct isp_platform_callback platform_cb;
+ };
+ #define v4l2_dev_to_isp_device(dev) \
+diff --git a/include/media/omap3isp.h b/include/media/omap3isp.h
+index 9584269..c9d06d9 100644
+--- a/include/media/omap3isp.h
++++ b/include/media/omap3isp.h
+@@ -29,10 +29,6 @@
+ struct i2c_board_info;
+ struct isp_device;
+-#define ISP_XCLK_NONE                 0
+-#define ISP_XCLK_A                    1
+-#define ISP_XCLK_B                    2
+-
+ enum isp_interface_type {
+       ISP_INTERFACE_PARALLEL,
+       ISP_INTERFACE_CSI2A_PHY2,
+@@ -153,7 +149,13 @@ struct isp_v4l2_subdevs_group {
+       } bus; /* gcc < 4.6.0 chokes on anonymous union initializers */
+ };
++struct isp_platform_xclk {
++      const char *dev_id;
++      const char *con_id;
++};
++
+ struct isp_platform_data {
++      struct isp_platform_xclk xclks[2];
+       struct isp_v4l2_subdevs_group *subdevs;
+       void (*set_constraints)(struct isp_device *isp, bool enable);
+ };
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/3isp/0002-mt9m032-Fix-PLL-setup.patch b/src/patches/kernel/omap/3isp/0002-mt9m032-Fix-PLL-setup.patch
new file mode 100644 (file)
index 0000000..9d2b19c
--- /dev/null
@@ -0,0 +1,91 @@
+From 7c44c8a989ad01bd7cd02370d4ca4a742db218be Mon Sep 17 00:00:00 2001
+From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Date: Tue, 25 Sep 2012 15:46:34 +0200
+Subject: [PATCH 2/6] mt9m032: Fix PLL setup
+
+The MT9M032 PLL was assumed to be identical to the MT9P031 PLL but
+differs significantly. Update the registers definitions and PLL limits
+according to the datasheet.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+---
+ drivers/media/i2c/mt9m032.c |   24 +++++++++++++-----------
+ 1 file changed, 13 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/media/i2c/mt9m032.c b/drivers/media/i2c/mt9m032.c
+index f80c1d7e..30d755a 100644
+--- a/drivers/media/i2c/mt9m032.c
++++ b/drivers/media/i2c/mt9m032.c
+@@ -87,7 +87,7 @@
+ #define MT9M032_RESTART                                       0x0b
+ #define MT9M032_RESET                                 0x0d
+ #define MT9M032_PLL_CONFIG1                           0x11
+-#define               MT9M032_PLL_CONFIG1_OUTDIV_MASK         0x3f
++#define               MT9M032_PLL_CONFIG1_PREDIV_MASK         0x3f
+ #define               MT9M032_PLL_CONFIG1_MUL_SHIFT           8
+ #define MT9M032_READ_MODE1                            0x1e
+ #define MT9M032_READ_MODE2                            0x20
+@@ -106,6 +106,8 @@
+ #define               MT9M032_GAIN_AMUL_SHIFT                 6
+ #define               MT9M032_GAIN_ANALOG_MASK                0x3f
+ #define MT9M032_FORMATTER1                            0x9e
++#define               MT9M032_FORMATTER1_PLL_P1_6             (1 << 8)
++#define               MT9M032_FORMATTER1_PARALLEL             (1 << 12)
+ #define MT9M032_FORMATTER2                            0x9f
+ #define               MT9M032_FORMATTER2_DOUT_EN              0x1000
+ #define               MT9M032_FORMATTER2_PIXCLK_EN            0x2000
+@@ -121,8 +123,6 @@
+ #define               MT9P031_PLL_CONTROL_PWROFF              0x0050
+ #define               MT9P031_PLL_CONTROL_PWRON               0x0051
+ #define               MT9P031_PLL_CONTROL_USEPLL              0x0052
+-#define MT9P031_PLL_CONFIG2                           0x11
+-#define               MT9P031_PLL_CONFIG2_P1_DIV_MASK         0x1f
+ struct mt9m032 {
+       struct v4l2_subdev subdev;
+@@ -255,13 +255,14 @@ static int mt9m032_setup_pll(struct mt9m032 *sensor)
+               .n_max = 64,
+               .m_min = 16,
+               .m_max = 255,
+-              .p1_min = 1,
+-              .p1_max = 128,
++              .p1_min = 6,
++              .p1_max = 7,
+       };
+       struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev);
+       struct mt9m032_platform_data *pdata = sensor->pdata;
+       struct aptina_pll pll;
++      u16 reg_val;
+       int ret;
+       pll.ext_clock = pdata->ext_clock;
+@@ -274,18 +275,19 @@ static int mt9m032_setup_pll(struct mt9m032 *sensor)
+       sensor->pix_clock = pdata->pix_clock;
+       ret = mt9m032_write(client, MT9M032_PLL_CONFIG1,
+-                          (pll.m << MT9M032_PLL_CONFIG1_MUL_SHIFT)
+-                          | (pll.p1 - 1));
+-      if (!ret)
+-              ret = mt9m032_write(client, MT9P031_PLL_CONFIG2, pll.n - 1);
++                          (pll.m << MT9M032_PLL_CONFIG1_MUL_SHIFT) |
++                          ((pll.n - 1) & MT9M032_PLL_CONFIG1_PREDIV_MASK));
+       if (!ret)
+               ret = mt9m032_write(client, MT9P031_PLL_CONTROL,
+                                   MT9P031_PLL_CONTROL_PWRON |
+                                   MT9P031_PLL_CONTROL_USEPLL);
+       if (!ret)               /* more reserved, Continuous, Master Mode */
+               ret = mt9m032_write(client, MT9M032_READ_MODE1, 0x8006);
+-      if (!ret)               /* Set 14-bit mode, select 7 divider */
+-              ret = mt9m032_write(client, MT9M032_FORMATTER1, 0x111e);
++      if (!ret) {
++              reg_val = (pll.p1 == 6 ? MT9M032_FORMATTER1_PLL_P1_6 : 0)
++                      | MT9M032_FORMATTER1_PARALLEL | 0x001e; /* 14-bit */
++              ret = mt9m032_write(client, MT9M032_FORMATTER1, reg_val);
++      }
+       return ret;
+ }
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/3isp/0003-mt9m032-Define-MT9M032_READ_MODE1-bits.patch b/src/patches/kernel/omap/3isp/0003-mt9m032-Define-MT9M032_READ_MODE1-bits.patch
new file mode 100644 (file)
index 0000000..c80e876
--- /dev/null
@@ -0,0 +1,55 @@
+From 1115becbb4875d62abb10f94a9510c81f376606f Mon Sep 17 00:00:00 2001
+From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Date: Wed, 26 Sep 2012 10:54:17 +0200
+Subject: [PATCH 3/6] mt9m032: Define MT9M032_READ_MODE1 bits
+
+Replace hardcoded values with #define's.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+---
+ drivers/media/i2c/mt9m032.c |   22 +++++++++++++++++++++-
+ 1 file changed, 21 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/media/i2c/mt9m032.c b/drivers/media/i2c/mt9m032.c
+index 30d755a..de150d3 100644
+--- a/drivers/media/i2c/mt9m032.c
++++ b/drivers/media/i2c/mt9m032.c
+@@ -90,6 +90,24 @@
+ #define               MT9M032_PLL_CONFIG1_PREDIV_MASK         0x3f
+ #define               MT9M032_PLL_CONFIG1_MUL_SHIFT           8
+ #define MT9M032_READ_MODE1                            0x1e
++#define               MT9M032_READ_MODE1_OUTPUT_BAD_FRAMES    (1 << 13)
++#define               MT9M032_READ_MODE1_MAINTAIN_FRAME_RATE  (1 << 12)
++#define               MT9M032_READ_MODE1_XOR_LINE_VALID       (1 << 11)
++#define               MT9M032_READ_MODE1_CONT_LINE_VALID      (1 << 10)
++#define               MT9M032_READ_MODE1_INVERT_TRIGGER       (1 << 9)
++#define               MT9M032_READ_MODE1_SNAPSHOT             (1 << 8)
++#define               MT9M032_READ_MODE1_GLOBAL_RESET         (1 << 7)
++#define               MT9M032_READ_MODE1_BULB_EXPOSURE        (1 << 6)
++#define               MT9M032_READ_MODE1_INVERT_STROBE        (1 << 5)
++#define               MT9M032_READ_MODE1_STROBE_ENABLE        (1 << 4)
++#define               MT9M032_READ_MODE1_STROBE_START_TRIG1   (0 << 2)
++#define               MT9M032_READ_MODE1_STROBE_START_EXP     (1 << 2)
++#define               MT9M032_READ_MODE1_STROBE_START_SHUTTER (2 << 2)
++#define               MT9M032_READ_MODE1_STROBE_START_TRIG2   (3 << 2)
++#define               MT9M032_READ_MODE1_STROBE_END_TRIG1     (0 << 0)
++#define               MT9M032_READ_MODE1_STROBE_END_EXP       (1 << 0)
++#define               MT9M032_READ_MODE1_STROBE_END_SHUTTER   (2 << 0)
++#define               MT9M032_READ_MODE1_STROBE_END_TRIG2     (3 << 0)
+ #define MT9M032_READ_MODE2                            0x20
+ #define               MT9M032_READ_MODE2_VFLIP_SHIFT          15
+ #define               MT9M032_READ_MODE2_HFLIP_SHIFT          14
+@@ -282,7 +300,9 @@ static int mt9m032_setup_pll(struct mt9m032 *sensor)
+                                   MT9P031_PLL_CONTROL_PWRON |
+                                   MT9P031_PLL_CONTROL_USEPLL);
+       if (!ret)               /* more reserved, Continuous, Master Mode */
+-              ret = mt9m032_write(client, MT9M032_READ_MODE1, 0x8006);
++              ret = mt9m032_write(client, MT9M032_READ_MODE1, 0x8000 |
++                                  MT9M032_READ_MODE1_STROBE_START_EXP |
++                                  MT9M032_READ_MODE1_STROBE_END_SHUTTER);
+       if (!ret) {
+               reg_val = (pll.p1 == 6 ? MT9M032_FORMATTER1_PLL_P1_6 : 0)
+                       | MT9M032_FORMATTER1_PARALLEL | 0x001e; /* 14-bit */
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/3isp/0004-mt9p031-Use-devm_-managed-helpers.patch b/src/patches/kernel/omap/3isp/0004-mt9p031-Use-devm_-managed-helpers.patch
new file mode 100644 (file)
index 0000000..bcc4360
--- /dev/null
@@ -0,0 +1,62 @@
+From d3f188f38eaa34acf6375d5d88fe27971aae1170 Mon Sep 17 00:00:00 2001
+From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Date: Fri, 21 Dec 2012 20:34:06 +0100
+Subject: [PATCH 4/6] mt9p031: Use devm_* managed helpers
+
+Replace kzalloc and gpio_request_one by their managed equivalents.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+---
+ drivers/media/i2c/mt9p031.c |   13 +++----------
+ 1 file changed, 3 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/media/i2c/mt9p031.c b/drivers/media/i2c/mt9p031.c
+index e328332..e0bad59 100644
+--- a/drivers/media/i2c/mt9p031.c
++++ b/drivers/media/i2c/mt9p031.c
+@@ -927,7 +927,7 @@ static int mt9p031_probe(struct i2c_client *client,
+               return -EIO;
+       }
+-      mt9p031 = kzalloc(sizeof(*mt9p031), GFP_KERNEL);
++      mt9p031 = devm_kzalloc(&client->dev, sizeof(*mt9p031), GFP_KERNEL);
+       if (mt9p031 == NULL)
+               return -ENOMEM;
+@@ -1001,8 +1001,8 @@ static int mt9p031_probe(struct i2c_client *client,
+       mt9p031->format.colorspace = V4L2_COLORSPACE_SRGB;
+       if (pdata->reset != -1) {
+-              ret = gpio_request_one(pdata->reset, GPIOF_OUT_INIT_LOW,
+-                                     "mt9p031_rst");
++              ret = devm_gpio_request_one(&client->dev, pdata->reset,
++                                          GPIOF_OUT_INIT_LOW, "mt9p031_rst");
+               if (ret < 0)
+                       goto done;
+@@ -1013,12 +1013,8 @@ static int mt9p031_probe(struct i2c_client *client,
+ done:
+       if (ret < 0) {
+-              if (mt9p031->reset != -1)
+-                      gpio_free(mt9p031->reset);
+-
+               v4l2_ctrl_handler_free(&mt9p031->ctrls);
+               media_entity_cleanup(&mt9p031->subdev.entity);
+-              kfree(mt9p031);
+       }
+       return ret;
+@@ -1032,9 +1028,6 @@ static int mt9p031_remove(struct i2c_client *client)
+       v4l2_ctrl_handler_free(&mt9p031->ctrls);
+       v4l2_device_unregister_subdev(subdev);
+       media_entity_cleanup(&subdev->entity);
+-      if (mt9p031->reset != -1)
+-              gpio_free(mt9p031->reset);
+-      kfree(mt9p031);
+       return 0;
+ }
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/3isp/0005-mt9p031-Add-support-for-regulators.patch b/src/patches/kernel/omap/3isp/0005-mt9p031-Add-support-for-regulators.patch
new file mode 100644 (file)
index 0000000..57c80fd
--- /dev/null
@@ -0,0 +1,82 @@
+From 9ff2bc0c9458f0eecde6d9b52a899fd2bb1dd3a3 Mon Sep 17 00:00:00 2001
+From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Date: Tue, 8 May 2012 15:10:36 +0200
+Subject: [PATCH 5/6] mt9p031: Add support for regulators
+
+Enable the regulators when powering the sensor up, and disable them when
+powering it down.
+
+The regulators are mandatory. Boards that don't allow controlling the
+sensor power lines must provide fixed voltage regulators.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+---
+ drivers/media/i2c/mt9p031.c |   24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+diff --git a/drivers/media/i2c/mt9p031.c b/drivers/media/i2c/mt9p031.c
+index e0bad59..ecf4492 100644
+--- a/drivers/media/i2c/mt9p031.c
++++ b/drivers/media/i2c/mt9p031.c
+@@ -19,6 +19,7 @@
+ #include <linux/i2c.h>
+ #include <linux/log2.h>
+ #include <linux/pm.h>
++#include <linux/regulator/consumer.h>
+ #include <linux/slab.h>
+ #include <linux/videodev2.h>
+@@ -121,6 +122,10 @@ struct mt9p031 {
+       struct mutex power_lock; /* lock to protect power_count */
+       int power_count;
++      struct regulator *vaa;
++      struct regulator *vdd;
++      struct regulator *vdd_io;
++
+       enum mt9p031_model model;
+       struct aptina_pll pll;
+       int reset;
+@@ -264,6 +269,11 @@ static int mt9p031_power_on(struct mt9p031 *mt9p031)
+               usleep_range(1000, 2000);
+       }
++      /* Bring up the supplies */
++      regulator_enable(mt9p031->vdd);
++      regulator_enable(mt9p031->vdd_io);
++      regulator_enable(mt9p031->vaa);
++
+       /* Emable clock */
+       if (mt9p031->pdata->set_xclk)
+               mt9p031->pdata->set_xclk(&mt9p031->subdev,
+@@ -285,6 +295,10 @@ static void mt9p031_power_off(struct mt9p031 *mt9p031)
+               usleep_range(1000, 2000);
+       }
++      regulator_disable(mt9p031->vaa);
++      regulator_disable(mt9p031->vdd_io);
++      regulator_disable(mt9p031->vdd);
++
+       if (mt9p031->pdata->set_xclk)
+               mt9p031->pdata->set_xclk(&mt9p031->subdev, 0);
+ }
+@@ -937,6 +951,16 @@ static int mt9p031_probe(struct i2c_client *client,
+       mt9p031->model = did->driver_data;
+       mt9p031->reset = -1;
++      mt9p031->vaa = devm_regulator_get(&client->dev, "vaa");
++      mt9p031->vdd = devm_regulator_get(&client->dev, "vdd");
++      mt9p031->vdd_io = devm_regulator_get(&client->dev, "vdd_io");
++
++      if (IS_ERR(mt9p031->vaa) || IS_ERR(mt9p031->vdd) ||
++          IS_ERR(mt9p031->vdd_io)) {
++              dev_err(&client->dev, "Unable to get regulators\n");
++              return -ENODEV;
++      }
++
+       v4l2_ctrl_handler_init(&mt9p031->ctrls, ARRAY_SIZE(mt9p031_ctrls) + 6);
+       v4l2_ctrl_new_std(&mt9p031->ctrls, &mt9p031_ctrl_ops,
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/3isp/0006-mt9p031-Use-the-common-clock-framework.patch b/src/patches/kernel/omap/3isp/0006-mt9p031-Use-the-common-clock-framework.patch
new file mode 100644 (file)
index 0000000..fc8d583
--- /dev/null
@@ -0,0 +1,110 @@
+From 6cd62f5ae305142c0490e80caa04f99f00029b68 Mon Sep 17 00:00:00 2001
+From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Date: Fri, 21 Dec 2012 20:11:55 +0100
+Subject: [PATCH 6/6] mt9p031: Use the common clock framework
+
+Configure the device external clock using the common clock framework
+instead of a board code callback function.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Acked-by: Sakari Ailus <sakari.ailus@iki.fi>
+---
+ drivers/media/i2c/mt9p031.c |   21 ++++++++++++++-------
+ include/media/mt9p031.h     |    2 --
+ 2 files changed, 14 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/media/i2c/mt9p031.c b/drivers/media/i2c/mt9p031.c
+index ecf4492..28cf95b 100644
+--- a/drivers/media/i2c/mt9p031.c
++++ b/drivers/media/i2c/mt9p031.c
+@@ -12,6 +12,7 @@
+  * published by the Free Software Foundation.
+  */
++#include <linux/clk.h>
+ #include <linux/delay.h>
+ #include <linux/device.h>
+ #include <linux/gpio.h>
+@@ -122,6 +123,7 @@ struct mt9p031 {
+       struct mutex power_lock; /* lock to protect power_count */
+       int power_count;
++      struct clk *clk;
+       struct regulator *vaa;
+       struct regulator *vdd;
+       struct regulator *vdd_io;
+@@ -200,7 +202,7 @@ static int mt9p031_reset(struct mt9p031 *mt9p031)
+                                         0);
+ }
+-static int mt9p031_pll_setup(struct mt9p031 *mt9p031)
++static int mt9p031_clk_setup(struct mt9p031 *mt9p031)
+ {
+       static const struct aptina_pll_limits limits = {
+               .ext_clock_min = 6000000,
+@@ -221,6 +223,12 @@ static int mt9p031_pll_setup(struct mt9p031 *mt9p031)
+       struct i2c_client *client = v4l2_get_subdevdata(&mt9p031->subdev);
+       struct mt9p031_platform_data *pdata = mt9p031->pdata;
++      mt9p031->clk = devm_clk_get(&client->dev, NULL);
++      if (IS_ERR(mt9p031->clk))
++              return PTR_ERR(mt9p031->clk);
++
++      clk_set_rate(mt9p031->clk, pdata->ext_freq);
++
+       mt9p031->pll.ext_clock = pdata->ext_freq;
+       mt9p031->pll.pix_clock = pdata->target_freq;
+@@ -275,9 +283,8 @@ static int mt9p031_power_on(struct mt9p031 *mt9p031)
+       regulator_enable(mt9p031->vaa);
+       /* Emable clock */
+-      if (mt9p031->pdata->set_xclk)
+-              mt9p031->pdata->set_xclk(&mt9p031->subdev,
+-                                       mt9p031->pdata->ext_freq);
++      if (mt9p031->clk)
++              clk_prepare_enable(mt9p031->clk);
+       /* Now RESET_BAR must be high */
+       if (mt9p031->reset != -1) {
+@@ -299,8 +306,8 @@ static void mt9p031_power_off(struct mt9p031 *mt9p031)
+       regulator_disable(mt9p031->vdd_io);
+       regulator_disable(mt9p031->vdd);
+-      if (mt9p031->pdata->set_xclk)
+-              mt9p031->pdata->set_xclk(&mt9p031->subdev, 0);
++      if (mt9p031->clk)
++              clk_disable_unprepare(mt9p031->clk);
+ }
+ static int __mt9p031_set_power(struct mt9p031 *mt9p031, bool on)
+@@ -1033,7 +1040,7 @@ static int mt9p031_probe(struct i2c_client *client,
+               mt9p031->reset = pdata->reset;
+       }
+-      ret = mt9p031_pll_setup(mt9p031);
++      ret = mt9p031_clk_setup(mt9p031);
+ done:
+       if (ret < 0) {
+diff --git a/include/media/mt9p031.h b/include/media/mt9p031.h
+index 0c97b19..b1e63f2 100644
+--- a/include/media/mt9p031.h
++++ b/include/media/mt9p031.h
+@@ -5,13 +5,11 @@ struct v4l2_subdev;
+ /*
+  * struct mt9p031_platform_data - MT9P031 platform data
+- * @set_xclk: Clock frequency set callback
+  * @reset: Chip reset GPIO (set to -1 if not used)
+  * @ext_freq: Input clock frequency
+  * @target_freq: Pixel clock frequency
+  */
+ struct mt9p031_platform_data {
+-      int (*set_xclk)(struct v4l2_subdev *subdev, int hz);
+       int reset;
+       int ext_freq;
+       int target_freq;
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/0001-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch b/src/patches/kernel/omap/beagle/0001-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch
new file mode 100644 (file)
index 0000000..34d6034
--- /dev/null
@@ -0,0 +1,30 @@
+From 6ac98647956cbff190954b4cac6bd71fdbb8647b Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Wed, 23 Mar 2011 08:37:54 -0500
+Subject: [PATCH 1/5] meego: modedb add Toshiba LTA070B220F 800x480 support
+
+ from http://wiki.meego.com/ARM/Meego_on_Beagleboard_from_scratch
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ drivers/video/modedb.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
+index 5b686de..69ad1ec 100644
+--- a/drivers/video/modedb.c
++++ b/drivers/video/modedb.c
+@@ -293,6 +293,10 @@ static const struct fb_videomode modedb[] = {
+       /* 864x480 @ 60 Hz, 35.15 kHz hsync */
+       { NULL, 60, 864, 480, 27777, 1, 1, 1, 1, 0, 0,
+               0, FB_VMODE_NONINTERLACED },
++
++      /* 800x480 @ 60 Hz, Toshiba LTA070B220F 7 inch LCD */
++      {  NULL, 60, 800, 480, 32787, 48, 80, 33, 31, 32, 2,
++              FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED },
+ };
+ #ifdef CONFIG_FB_MODE_HELPERS
+-- 
+1.7.7.6
+
diff --git a/src/patches/kernel/omap/beagle/0002-backlight-Add-TLC59108-backlight-control-driver.patch b/src/patches/kernel/omap/beagle/0002-backlight-Add-TLC59108-backlight-control-driver.patch
new file mode 100644 (file)
index 0000000..ce4df82
--- /dev/null
@@ -0,0 +1,217 @@
+From e989473bea15beef8d480b822a619e7b8fca860c Mon Sep 17 00:00:00 2001
+From: "Manjunathappa, Prakash" <prakash.pm@ti.com>
+Date: Mon, 1 Aug 2011 18:25:11 +0530
+Subject: [PATCH 2/5] backlight: Add TLC59108 backlight control driver
+
+This patch adds support for I2C configurable TLC59108 backlight
+control driver.
+
+Signed-off-by: Manjunathappa, Prakash <prakash.pm@ti.com>
+Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
+---
+ drivers/video/backlight/Kconfig    |    8 ++
+ drivers/video/backlight/Makefile   |    1 +
+ drivers/video/backlight/tlc59108.c |  160 ++++++++++++++++++++++++++++++++++++
+ 3 files changed, 169 insertions(+)
+ create mode 100644 drivers/video/backlight/tlc59108.c
+
+diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
+index db10d01..04a2275 100644
+--- a/drivers/video/backlight/Kconfig
++++ b/drivers/video/backlight/Kconfig
+@@ -418,6 +418,14 @@ config BACKLIGHT_AS3711
+         If you have an Austrian Microsystems AS3711 say Y to enable the
+         backlight driver.
++config BACKLIGHT_TLC59108
++      tristate "TLC59108 LCD Backlight Driver"
++      depends on I2C && BACKLIGHT_CLASS_DEVICE
++      default n
++      help
++        If you have an LCD Panel with backlight control via TLC59108,
++        say Y to enable its LCD control driver.
++
+ endif # BACKLIGHT_CLASS_DEVICE
+ endif # BACKLIGHT_LCD_SUPPORT
+diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
+index 96c4d62..3687852 100644
+--- a/drivers/video/backlight/Makefile
++++ b/drivers/video/backlight/Makefile
+@@ -41,6 +41,7 @@ obj-$(CONFIG_BACKLIGHT_LP855X)               += lp855x_bl.o
+ obj-$(CONFIG_BACKLIGHT_LP8788)                += lp8788_bl.o
+ obj-$(CONFIG_BACKLIGHT_MAX8925)               += max8925_bl.o
+ obj-$(CONFIG_BACKLIGHT_OMAP1)         += omap1_bl.o
++obj-$(CONFIG_BACKLIGHT_TLC59108)      += tlc59108.o
+ obj-$(CONFIG_BACKLIGHT_OT200)         += ot200_bl.o
+ obj-$(CONFIG_BACKLIGHT_PANDORA)               += pandora_bl.o
+ obj-$(CONFIG_BACKLIGHT_PCF50633)      += pcf50633-backlight.o
+diff --git a/drivers/video/backlight/tlc59108.c b/drivers/video/backlight/tlc59108.c
+new file mode 100644
+index 0000000..4f4ea34
+--- /dev/null
++++ b/drivers/video/backlight/tlc59108.c
+@@ -0,0 +1,160 @@
++/*
++ * ti81xxhdmi_tlc59108.c
++ *
++ * Copyright (C) 2011 Texas Instruments
++ * Author: Senthil Natarajan
++ *
++ * tlc59108 HDMI Driver
++ *
++ * 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.
++ *
++ * 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/>.
++ * History:
++ *
++ * Senthil Natarajan<senthil.n@ti.com> July 2011 I2C driver for tlc59108
++ *                                             backlight control
++ */
++
++#include <linux/i2c.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/backlight.h>
++#include <linux/fb.h>
++
++#define tlc59108_MODULE_NAME  "tlc59108"
++#define TLC59108_MODE1   0x00
++#define TLC59108_PWM2    0x04
++#define TLC59108_LEDOUT0 0x0c
++#define TLC59108_LEDOUT1 0x0d
++#define TLC59108_MAX_BRIGHTNESS 0xFF
++
++struct tlc59108_bl {
++      struct i2c_client *client;
++      struct backlight_device *bl;
++};
++
++static void tlc59108_bl_set_backlight(struct tlc59108_bl *data, int brightness)
++{
++      /* Set Mode1 Register */
++      i2c_smbus_write_byte_data(data->client, TLC59108_MODE1, 0x00);
++
++      /* Set LEDOUT0 Register */
++      i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT0, 0x21);
++
++      /* Set Backlight Duty Cycle*/
++      i2c_smbus_write_byte_data(data->client, TLC59108_PWM2,
++                                brightness & 0xff);
++}
++
++static int tlc59108_bl_get_brightness(struct backlight_device *dev)
++{
++      struct backlight_properties *props = &dev->props;
++
++      return props->brightness;
++}
++
++static int tlc59108_bl_update_status(struct backlight_device *dev)
++{
++      struct backlight_properties *props = &dev->props;
++      struct tlc59108_bl *data = dev_get_drvdata(&dev->dev);
++      int brightness = props->brightness;
++
++      tlc59108_bl_set_backlight(data, brightness);
++
++      return 0;
++}
++
++static const struct backlight_ops bl_ops = {
++      .get_brightness         = tlc59108_bl_get_brightness,
++      .update_status          = tlc59108_bl_update_status,
++};
++
++static int tlc59108_probe(struct i2c_client *c, const struct i2c_device_id *id)
++{
++      struct backlight_properties props;
++      struct tlc59108_bl *data = kzalloc(sizeof(struct tlc59108_bl),
++                                         GFP_KERNEL);
++      int ret = 0;
++
++      if (!data)
++              return -ENOMEM;
++
++      i2c_set_clientdata(c, data);
++      data->client = c;
++
++      memset(&props, 0, sizeof(struct backlight_properties));
++      props.max_brightness = TLC59108_MAX_BRIGHTNESS;
++      props.type = BACKLIGHT_RAW;
++      data->bl = backlight_device_register("tlc59108-bl", &c->dev, data,
++                                           &bl_ops, &props);
++      if (IS_ERR(data->bl)) {
++              ret = PTR_ERR(data->bl);
++              goto err_reg;
++      }
++
++      data->bl->props.brightness = TLC59108_MAX_BRIGHTNESS;
++
++      backlight_update_status(data->bl);
++
++      return 0;
++
++err_reg:
++      data->bl = NULL;
++      kfree(data);
++      return ret;
++}
++
++static int tlc59108_remove(struct i2c_client *c)
++{
++      struct tlc59108_bl *data = i2c_get_clientdata(c);
++
++      backlight_device_unregister(data->bl);
++      data->bl = NULL;
++
++      kfree(data);
++
++      return 0;
++}
++
++/* I2C Device ID table */
++static const struct i2c_device_id tlc59108_id[] = {
++      { "tlc59108", 0 },
++      { }
++};
++MODULE_DEVICE_TABLE(i2c, tlc59108_id);
++
++/* I2C driver data */
++static struct i2c_driver tlc59108_driver = {
++      .driver = {
++              .owner = THIS_MODULE,
++              .name = tlc59108_MODULE_NAME,
++      },
++      .probe = tlc59108_probe,
++      .remove = tlc59108_remove,
++      .id_table = tlc59108_id,
++};
++
++static int __init tlc59108_init(void)
++{
++      return i2c_add_driver(&tlc59108_driver);
++}
++
++static void __exit tlc59108_exit(void)
++{
++      i2c_del_driver(&tlc59108_driver);
++}
++
++module_init(tlc59108_init);
++module_exit(tlc59108_exit);
++
++MODULE_DESCRIPTION("LCD/Backlight control for TLC59108");
++MODULE_AUTHOR("Senthil Natarajan <senthil.n@ti.com>");
++MODULE_LICENSE("GPL v2");
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/0003-tlc59108-adjust-for-beagleboard-uLCD7.patch b/src/patches/kernel/omap/beagle/0003-tlc59108-adjust-for-beagleboard-uLCD7.patch
new file mode 100644 (file)
index 0000000..5c9659b
--- /dev/null
@@ -0,0 +1,124 @@
+From 40cbddde06a9f0e1845810b904502f922fc3288f Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen@dominion.thruhere.net>
+Date: Fri, 27 Apr 2012 21:30:00 +0200
+Subject: [PATCH 3/5] tlc59108: adjust for beagleboard+uLCD7
+
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+---
+ drivers/video/backlight/tlc59108.c |   46 ++++++++++++++++++++++++-----------
+ 1 files changed, 31 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/video/backlight/tlc59108.c b/drivers/video/backlight/tlc59108.c
+index 4f4ea34..40a21e7 100644
+--- a/drivers/video/backlight/tlc59108.c
++++ b/drivers/video/backlight/tlc59108.c
+@@ -29,9 +29,16 @@
+ #include <linux/backlight.h>
+ #include <linux/fb.h>
+-#define tlc59108_MODULE_NAME  "tlc59108"
+ #define TLC59108_MODE1   0x00
+-#define TLC59108_PWM2    0x04
++#define TLC59108_MODE2   0x01
++#define TLC59108_PWM0 0x02
++#define TLC59108_PWM1 0x03
++#define TLC59108_PWM2 0x04
++#define TLC59108_PWM3 0x05
++#define TLC59108_PWM4 0x06
++#define TLC59108_PWM5 0x07
++#define TLC59108_PWM6 0x08
++#define TLC59108_PWM7 0x09
+ #define TLC59108_LEDOUT0 0x0c
+ #define TLC59108_LEDOUT1 0x0d
+ #define TLC59108_MAX_BRIGHTNESS 0xFF
+@@ -43,15 +50,9 @@ struct tlc59108_bl {
+ static void tlc59108_bl_set_backlight(struct tlc59108_bl *data, int brightness)
+ {
+-      /* Set Mode1 Register */
+-      i2c_smbus_write_byte_data(data->client, TLC59108_MODE1, 0x00);
+-
+-      /* Set LEDOUT0 Register */
+-      i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT0, 0x21);
+-
+       /* Set Backlight Duty Cycle*/
+       i2c_smbus_write_byte_data(data->client, TLC59108_PWM2,
+-                                brightness & 0xff);
++                                0xff - brightness );
+ }
+ static int tlc59108_bl_get_brightness(struct backlight_device *dev)
+@@ -65,8 +66,18 @@ static int tlc59108_bl_update_status(struct backlight_device *dev)
+ {
+       struct backlight_properties *props = &dev->props;
+       struct tlc59108_bl *data = dev_get_drvdata(&dev->dev);
++
+       int brightness = props->brightness;
++      if (dev->props.state & BL_CORE_FBBLANK) {
++              brightness = 0;
++              /* Set LEDOUT0 Register */
++              i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT0, 0x10);
++      } else {
++              /* Set LEDOUT0 Register */
++              i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT0, 0x30);
++      }
++
+       tlc59108_bl_set_backlight(data, brightness);
+       return 0;
+@@ -77,7 +88,7 @@ static const struct backlight_ops bl_ops = {
+       .update_status          = tlc59108_bl_update_status,
+ };
+-static int tlc59108_probe(struct i2c_client *c, const struct i2c_device_id *id)
++static int __devinit tlc59108_probe(struct i2c_client *c, const struct i2c_device_id *id)
+ {
+       struct backlight_properties props;
+       struct tlc59108_bl *data = kzalloc(sizeof(struct tlc59108_bl),
+@@ -104,6 +115,11 @@ static int tlc59108_probe(struct i2c_client *c, const struct i2c_device_id *id)
+       backlight_update_status(data->bl);
++      i2c_smbus_write_byte_data(data->client, TLC59108_MODE1, 0x00);
++      i2c_smbus_write_byte_data(data->client, TLC59108_PWM2, 0x80);
++      i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT1, 0x05);
++      i2c_smbus_write_byte_data(data->client, TLC59108_LEDOUT1, 0x15);
++
+       return 0;
+ err_reg:
+@@ -125,7 +141,7 @@ static int tlc59108_remove(struct i2c_client *c)
+ }
+ /* I2C Device ID table */
+-static const struct i2c_device_id tlc59108_id[] = {
++static struct i2c_device_id tlc59108_id[] = {
+       { "tlc59108", 0 },
+       { }
+ };
+@@ -134,12 +150,12 @@ MODULE_DEVICE_TABLE(i2c, tlc59108_id);
+ /* I2C driver data */
+ static struct i2c_driver tlc59108_driver = {
+       .driver = {
+-              .owner = THIS_MODULE,
+-              .name = tlc59108_MODULE_NAME,
++              .owner  = THIS_MODULE,
++              .name   = "tlc59108"
+       },
++      .id_table = tlc59108_id,
+       .probe = tlc59108_probe,
+       .remove = tlc59108_remove,
+-      .id_table = tlc59108_id,
+ };
+ static int __init tlc59108_init(void)
+@@ -157,4 +173,4 @@ module_exit(tlc59108_exit);
+ MODULE_DESCRIPTION("LCD/Backlight control for TLC59108");
+ MODULE_AUTHOR("Senthil Natarajan <senthil.n@ti.com>");
+-MODULE_LICENSE("GPL v2");
++MODULE_LICENSE("GPL");
+-- 
+1.7.7.6
+
diff --git a/src/patches/kernel/omap/beagle/0004-zeroMAP-Open-your-eyes.patch b/src/patches/kernel/omap/beagle/0004-zeroMAP-Open-your-eyes.patch
new file mode 100644 (file)
index 0000000..d179420
--- /dev/null
@@ -0,0 +1,31 @@
+From 81ff7627ad0d958a5c156cb7d880af8707e14f47 Mon Sep 17 00:00:00 2001
+From: Alexander Holler <holler@ahsoftware.de>
+Date: Wed, 4 Jul 2012 00:03:04 +0200
+Subject: [PATCH 4/5] zeroMAP: Open your eyes!
+
+Signed-off-by: Alexander Holler <holler@ahsoftware.de>
+---
+ kernel/printk.c |    7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/kernel/printk.c b/kernel/printk.c
+index 22e070f..3678740 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -1759,6 +1759,13 @@ static int __init console_setup(char *str)
+       char *s, *options, *brl_options = NULL;
+       int idx;
++#ifdef CONFIG_SERIAL_OMAP
++      if (!strncmp(str, "tty0", 4) && '0' <= str[4] && '9' >= str[4]) {
++              str[3] = 'O';
++              pr_warn("We are opening your eyes, assuming you want to use an OMAP based serial driver and not a zeroMAP based one! ;)\n");
++              pr_warn("Which means 'tty0%s' was changed to 'ttyO%s' automagically for your pleasure.\n", str+4, str+4);
++      }
++#endif
+ #ifdef CONFIG_A11Y_BRAILLE_CONSOLE
+       if (!memcmp(str, "brl,", 4)) {
+               brl_options = "";
+-- 
+1.7.7.6
+
diff --git a/src/patches/kernel/omap/beagle/0005-ARM-OMAP-Beagle-use-TWL4030-generic-reset-script.patch b/src/patches/kernel/omap/beagle/0005-ARM-OMAP-Beagle-use-TWL4030-generic-reset-script.patch
new file mode 100644 (file)
index 0000000..ffb5ffb
--- /dev/null
@@ -0,0 +1,29 @@
+From f2ec859cb99e6137d78b457f8a6693e69e3b1f33 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Thu, 24 Jan 2013 09:43:51 -0600
+Subject: [PATCH 5/5] ARM: OMAP: Beagle: use TWL4030 generic reset script
+
+Enable TWL_COMMON_PDATA_POWER such that OMAP3530 revisions of the
+Beagle (Bx/Cx) will not hang on reboot when running at 125 Mhz.
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 5b57885..9a2c80b 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -831,7 +831,7 @@ static int __init omap3_beagle_i2c_init(void)
+ {
+       omap3_pmic_get_config(&beagle_twldata,
+                       TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_MADC |
+-                      TWL_COMMON_PDATA_AUDIO,
++                      TWL_COMMON_PDATA_AUDIO | TWL_COMMON_PDATA_POWER,
+                       TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2);
+       beagle_twldata.vpll2->constraints.name = "VDVI";
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/0006-DSS2-use-DSI-PLL-for-DPI-with-OMAP3.patch b/src/patches/kernel/omap/beagle/0006-DSS2-use-DSI-PLL-for-DPI-with-OMAP3.patch
new file mode 100644 (file)
index 0000000..56879cb
--- /dev/null
@@ -0,0 +1,28 @@
+From 40d889a09a05765138f3b737becadfe927c9b004 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Tue, 19 Mar 2013 13:40:50 -0500
+Subject: [PATCH 6/6] DSS2: use DSI PLL for DPI with OMAP3
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ drivers/video/omap2/dss/dpi.c |    4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c
+index 757b57f..12ed14f 100644
+--- a/drivers/video/omap2/dss/dpi.c
++++ b/drivers/video/omap2/dss/dpi.c
+@@ -58,10 +58,6 @@ static struct platform_device *dpi_get_dsidev(enum omap_channel channel)
+        */
+       switch (omapdss_get_version()) {
+       case OMAPDSS_VER_OMAP24xx:
+-      case OMAPDSS_VER_OMAP34xx_ES1:
+-      case OMAPDSS_VER_OMAP34xx_ES3:
+-      case OMAPDSS_VER_OMAP3630:
+-      case OMAPDSS_VER_AM35xx:
+               return NULL;
+       case OMAPDSS_VER_OMAP4430_ES1:
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0001-Beagle-expansion-add-buddy-param-for-expansionboard-.patch b/src/patches/kernel/omap/beagle/expansion/0001-Beagle-expansion-add-buddy-param-for-expansionboard-.patch
new file mode 100644 (file)
index 0000000..44a1ae3
--- /dev/null
@@ -0,0 +1,63 @@
+From c070885eaf883884f89a77e2f71def5b447f914b Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Tue, 11 Dec 2012 06:25:27 -0600
+Subject: [PATCH 01/10] Beagle: expansion: add buddy param for expansionboard
+ names
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |   17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index c3558f9..29d549c 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -23,6 +23,7 @@
+ #include <linux/pwm.h>
+ #include <linux/leds_pwm.h>
+ #include <linux/gpio.h>
++#include <linux/irq.h>
+ #include <linux/input.h>
+ #include <linux/gpio_keys.h>
+ #include <linux/opp.h>
+@@ -191,6 +192,8 @@ static void __init omap3_beagle_init_rev(void)
+       }
+ }
++char expansionboard_name[16];
++
+ static struct mtd_partition omap3beagle_nand_partitions[] = {
+       /* All the partition sizes are listed in terms of NAND block size */
+       {
+@@ -470,6 +473,18 @@ static struct omap_board_mux board_mux[] __initdata = {
+ };
+ #endif
++static int __init expansionboard_setup(char *str)
++{
++      if (!machine_is_omap3_beagle())
++              return 0;
++
++      if (!str)
++              return -EINVAL;
++      strncpy(expansionboard_name, str, 16);
++      pr_info("Beagle expansionboard: %s\n", expansionboard_name);
++      return 0;
++}
++
+ static int __init beagle_opp_init(void)
+ {
+       int r = 0;
+@@ -559,6 +574,8 @@ static void __init omap3_beagle_init(void)
+       pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
+ }
++early_param("buddy", expansionboard_setup);
++
+ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
+       /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
+       .atag_offset    = 0x100,
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0002-Beagle-expansion-add-zippy.patch b/src/patches/kernel/omap/beagle/expansion/0002-Beagle-expansion-add-zippy.patch
new file mode 100644 (file)
index 0000000..fff6243
--- /dev/null
@@ -0,0 +1,242 @@
+From e71075202707e044a28604bd929fd6f7a89adeae Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Mon, 21 Jan 2013 11:47:02 -0600
+Subject: [PATCH 02/10] Beagle: expansion: add zippy
+
+v2: add #include <linux/regulator/fixed.h>
+build fix from Pantelis Antoniou <panto@antoniou-consulting.com>
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |  164 +++++++++++++++++++++++++++++--
+ 1 file changed, 158 insertions(+), 6 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 4e6e767..b3685ed 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -37,6 +37,7 @@
+ #include <linux/usb/nop-usb-xceiv.h>
+ #include <linux/regulator/machine.h>
++#include <linux/regulator/fixed.h>
+ #include <linux/i2c/twl.h>
+ #include <asm/mach-types.h>
+@@ -195,6 +196,86 @@ static void __init omap3_beagle_init_rev(void)
+ char expansionboard_name[16];
++enum {
++      EXPANSION_MMC_NONE = 0,
++      EXPANSION_MMC_ZIPPY,
++      EXPANSION_MMC_WIFI,
++};
++
++enum {
++      EXPANSION_I2C_NONE = 0,
++      EXPANSION_I2C_ZIPPY,
++};
++
++static struct {
++      int mmc_settings;
++      int i2c_settings;
++} expansion_config = {
++      .mmc_settings = EXPANSION_MMC_NONE,
++      .i2c_settings = EXPANSION_I2C_NONE,
++};
++
++//rcn-ee: this is just a fake regulator, the zippy hardware provides 3.3/1.8 with jumper..
++static struct fixed_voltage_config beagle_vzippy = {
++      .supply_name = "vzippy",
++      .microvolts = 3300000,  /* 3.3V */
++      .startup_delay = 70000, /* 70ms */
++      .enable_high = 1,
++      .enabled_at_boot = 0,
++      .init_data = &beagle_vmmc2,
++};
++
++static struct platform_device omap_zippy_device = {
++      .name   = "reg-fixed-voltage",
++      .id             = 1,
++      .dev = {
++              .platform_data = &beagle_vzippy,
++      },
++};
++
++#define OMAP3BEAGLE_GPIO_ZIPPY_MMC_WP 141
++#define OMAP3BEAGLE_GPIO_ZIPPY_MMC_CD 162
++
++#if IS_ENABLED(CONFIG_ENC28J60)
++#include <linux/platform_data/spi-omap2-mcspi.h>
++#include <linux/spi/spi.h>
++
++#define OMAP3BEAGLE_GPIO_ENC28J60_IRQ 157
++
++static struct omap2_mcspi_device_config enc28j60_spi_chip_info = {
++      .turbo_mode     = 0,
++};
++
++static struct spi_board_info omap3beagle_zippy_spi_board_info[] __initdata = {
++      {
++              .modalias               = "enc28j60",
++              .bus_num                = 4,
++              .chip_select    = 0,
++              .max_speed_hz   = 20000000,
++              .controller_data        = &enc28j60_spi_chip_info,
++      },
++};
++
++static void __init omap3beagle_enc28j60_init(void)
++{
++      if ((gpio_request(OMAP3BEAGLE_GPIO_ENC28J60_IRQ, "ENC28J60_IRQ") == 0) &&
++          (gpio_direction_input(OMAP3BEAGLE_GPIO_ENC28J60_IRQ) == 0)) {
++              gpio_export(OMAP3BEAGLE_GPIO_ENC28J60_IRQ, 0);
++              omap3beagle_zippy_spi_board_info[0].irq = gpio_to_irq(OMAP3BEAGLE_GPIO_ENC28J60_IRQ);
++              irq_set_irq_type(omap3beagle_zippy_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING);
++      } else {
++              pr_err("Beagle expansionboard: could not obtain gpio for ENC28J60_IRQ\n");
++              return;
++      }
++
++      spi_register_board_info(omap3beagle_zippy_spi_board_info,
++                      ARRAY_SIZE(omap3beagle_zippy_spi_board_info));
++}
++
++#else
++static inline void __init omap3beagle_enc28j60_init(void) { return; }
++#endif
++
+ static struct mtd_partition omap3beagle_nand_partitions[] = {
+       /* All the partition sizes are listed in terms of NAND block size */
+       {
+@@ -271,6 +352,23 @@ static struct omap2_hsmmc_info mmc[] = {
+       {}      /* Terminator */
+ };
++static struct omap2_hsmmc_info mmc_zippy[] = {
++      {
++              .mmc            = 1,
++              .caps           = MMC_CAP_4_BIT_DATA,
++              .gpio_wp        = -EINVAL,
++              .deferred       = true,
++      },
++      {
++              .mmc            = 2,
++              .caps           = MMC_CAP_4_BIT_DATA,
++              .gpio_wp        = OMAP3BEAGLE_GPIO_ZIPPY_MMC_WP,
++              .gpio_cd        = OMAP3BEAGLE_GPIO_ZIPPY_MMC_CD,
++              .transceiver    = true,
++              .deferred       = true,
++      },
++      {}      /* Terminator */
++};
+ static struct regulator_consumer_supply beagle_vmmc1_supply[] = {
+       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
+ };
+@@ -301,10 +399,21 @@ static int beagle_twl_gpio_setup(struct device *dev,
+ {
+       int r;
+-      mmc[0].gpio_wp = beagle_config.mmc1_gpio_wp;
+-      /* gpio + 0 is "mmc0_cd" (input/IRQ) */
+-      mmc[0].gpio_cd = gpio + 0;
+-      omap_hsmmc_late_init(mmc);
++      switch (expansion_config.mmc_settings) {
++      case EXPANSION_MMC_ZIPPY:
++              mmc_zippy[0].gpio_wp = beagle_config.mmc1_gpio_wp;
++              /* gpio + 0 is "mmc0_cd" (input/IRQ) */
++              mmc_zippy[0].gpio_cd = gpio + 0;
++
++              omap_hsmmc_late_init(mmc_zippy);
++              break;
++      default:
++              mmc[0].gpio_wp = beagle_config.mmc1_gpio_wp;
++              /* gpio + 0 is "mmc0_cd" (input/IRQ) */
++              mmc[0].gpio_cd = gpio + 0;
++
++              omap_hsmmc_late_init(mmc);
++      }
+       /*
+        * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active
+@@ -396,6 +505,14 @@ static struct i2c_board_info __initdata beagle_i2c_eeprom[] = {
+        },
+ };
++static struct i2c_board_info __initdata zippy_i2c2_rtc[] = {
++#if defined(CONFIG_RTC_DRV_DS1307) || defined(CONFIG_RTC_DRV_DS1307_MODULE)
++      {
++              I2C_BOARD_INFO("ds1307", 0x68),
++      },
++#endif
++};
++
+ static int __init omap3_beagle_i2c_init(void)
+ {
+       omap3_pmic_get_config(&beagle_twldata,
+@@ -406,6 +523,15 @@ static int __init omap3_beagle_i2c_init(void)
+       beagle_twldata.vpll2->constraints.name = "VDVI";
+       omap3_pmic_init("twl4030", &beagle_twldata);
++
++      switch (expansion_config.i2c_settings) {
++      case EXPANSION_I2C_ZIPPY:
++              omap_register_i2c_bus(2, 400, zippy_i2c2_rtc, ARRAY_SIZE(zippy_i2c2_rtc));
++              break;
++      default:
++              omap_register_i2c_bus(2, 400, NULL, 0);
++      }
++
+       /* Bus 3 is attached to the DVI port where devices like the pico DLP
+        * projector don't work reliably with 400kHz */
+       omap_register_i2c_bus(3, 100, beagle_i2c_eeprom, ARRAY_SIZE(beagle_i2c_eeprom));
+@@ -548,10 +674,30 @@ static void __init omap3_beagle_init(void)
+       omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
+       omap3_beagle_init_rev();
++      if (!strcmp(expansionboard_name, "zippy"))
++      {
++              pr_info("Beagle expansionboard: initializing zippy mmc\n");
++              platform_device_register(&omap_zippy_device);
++
++              expansion_config.i2c_settings = EXPANSION_I2C_ZIPPY;
++              expansion_config.mmc_settings = EXPANSION_MMC_ZIPPY;
++
++              omap_mux_init_gpio(OMAP3BEAGLE_GPIO_ZIPPY_MMC_WP, OMAP_PIN_INPUT);
++              omap_mux_init_gpio(OMAP3BEAGLE_GPIO_ZIPPY_MMC_CD, OMAP_PIN_INPUT);
++      }
++
+       if (gpio_is_valid(beagle_config.mmc1_gpio_wp))
+               omap_mux_init_gpio(beagle_config.mmc1_gpio_wp, OMAP_PIN_INPUT);
+-      mmc[0].caps = beagle_config.mmc_caps;
+-      omap_hsmmc_init(mmc);
++
++      switch (expansion_config.mmc_settings) {
++      case EXPANSION_MMC_ZIPPY:
++              mmc_zippy[0].caps = beagle_config.mmc_caps;
++              omap_hsmmc_init(mmc_zippy);
++              break;
++      default:
++              mmc[0].caps = beagle_config.mmc_caps;
++              omap_hsmmc_init(mmc);
++      }
+       omap3_beagle_i2c_init();
+@@ -566,6 +712,12 @@ static void __init omap3_beagle_init(void)
+       omap_sdrc_init(mt46h32m32lf6_sdrc_params,
+                                 mt46h32m32lf6_sdrc_params);
++      if (!strcmp(expansionboard_name, "zippy"))
++      {
++              pr_info("Beagle expansionboard: initializing enc28j60\n");
++              omap3beagle_enc28j60_init();
++      }
++
+       usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
+       usb_musb_init(NULL);
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0003-Beagle-expansion-add-zippy2.patch b/src/patches/kernel/omap/beagle/expansion/0003-Beagle-expansion-add-zippy2.patch
new file mode 100644 (file)
index 0000000..b569f92
--- /dev/null
@@ -0,0 +1,86 @@
+From 45bed17e65e1a83f753896e250f3458654dcb229 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Tue, 11 Dec 2012 06:32:15 -0600
+Subject: [PATCH 03/10] Beagle: expansion: add zippy2
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |   48 ++++++++++++++++++++++++++++++-
+ 1 file changed, 47 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index b3685ed..74da505 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -276,6 +276,46 @@ static void __init omap3beagle_enc28j60_init(void)
+ static inline void __init omap3beagle_enc28j60_init(void) { return; }
+ #endif
++#if IS_ENABLED(CONFIG_KS8851)
++#include <linux/platform_data/spi-omap2-mcspi.h>
++#include <linux/spi/spi.h>
++
++#define OMAP3BEAGLE_GPIO_KS8851_IRQ 157
++
++static struct omap2_mcspi_device_config ks8851_spi_chip_info = {
++      .turbo_mode     = 0,
++};
++
++static struct spi_board_info omap3beagle_zippy2_spi_board_info[] __initdata = {
++      {
++              .modalias               = "ks8851",
++              .bus_num                = 4,
++              .chip_select    = 0,
++              .max_speed_hz   = 36000000,
++              .controller_data        = &ks8851_spi_chip_info,
++      },
++};
++
++static void __init omap3beagle_ks8851_init(void)
++{
++      if ((gpio_request(OMAP3BEAGLE_GPIO_KS8851_IRQ, "KS8851_IRQ") == 0) &&
++          (gpio_direction_input(OMAP3BEAGLE_GPIO_KS8851_IRQ) == 0)) {
++              gpio_export(OMAP3BEAGLE_GPIO_KS8851_IRQ, 0);
++              omap3beagle_zippy2_spi_board_info[0].irq = gpio_to_irq(OMAP3BEAGLE_GPIO_KS8851_IRQ);
++              irq_set_irq_type(omap3beagle_zippy2_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING);
++      } else {
++              pr_err("Beagle expansionboard: could not obtain gpio for KS8851_IRQ\n");
++              return;
++      }
++
++      spi_register_board_info(omap3beagle_zippy2_spi_board_info,
++                      ARRAY_SIZE(omap3beagle_zippy2_spi_board_info));
++}
++
++#else
++static inline void __init omap3beagle_ks8851_init(void) { return; }
++#endif
++
+ static struct mtd_partition omap3beagle_nand_partitions[] = {
+       /* All the partition sizes are listed in terms of NAND block size */
+       {
+@@ -674,7 +714,7 @@ static void __init omap3_beagle_init(void)
+       omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
+       omap3_beagle_init_rev();
+-      if (!strcmp(expansionboard_name, "zippy"))
++      if ((!strcmp(expansionboard_name, "zippy")) || (!strcmp(expansionboard_name, "zippy2")))
+       {
+               pr_info("Beagle expansionboard: initializing zippy mmc\n");
+               platform_device_register(&omap_zippy_device);
+@@ -718,6 +758,12 @@ static void __init omap3_beagle_init(void)
+               omap3beagle_enc28j60_init();
+       }
++      if (!strcmp(expansionboard_name, "zippy2"))
++      {
++              pr_info("Beagle expansionboard: initializing ks_8851\n");
++              omap3beagle_ks8851_init();
++      }
++
+       usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
+       usb_musb_init(NULL);
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0004-Beagle-expansion-add-trainer.patch b/src/patches/kernel/omap/beagle/expansion/0004-Beagle-expansion-add-trainer.patch
new file mode 100644 (file)
index 0000000..08ace67
--- /dev/null
@@ -0,0 +1,55 @@
+From 4d9b4e5795e322ed3efed9b8402f604e2e53cc6f Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Tue, 11 Dec 2012 06:33:24 -0600
+Subject: [PATCH 04/10] Beagle: expansion: add trainer
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |   31 +++++++++++++++++++++++++++++++
+ 1 file changed, 31 insertions(+)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 74da505..b5ed547 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -764,6 +764,37 @@ static void __init omap3_beagle_init(void)
+               omap3beagle_ks8851_init();
+       }
++      if (!strcmp(expansionboard_name, "trainer"))
++      {
++              pr_info("Beagle expansionboard: exporting GPIOs 130-141,162 to userspace\n");
++              gpio_request(130, "sysfs");
++              gpio_export(130, 1);
++              gpio_request(131, "sysfs");
++              gpio_export(131, 1);
++              gpio_request(132, "sysfs");
++              gpio_export(132, 1);
++              gpio_request(133, "sysfs");
++              gpio_export(133, 1);
++              gpio_request(134, "sysfs");
++              gpio_export(134, 1);
++              gpio_request(135, "sysfs");
++              gpio_export(135, 1);
++              gpio_request(136, "sysfs");
++              gpio_export(136, 1);
++              gpio_request(137, "sysfs");
++              gpio_export(137, 1);
++              gpio_request(138, "sysfs");
++              gpio_export(138, 1);
++              gpio_request(139, "sysfs");
++              gpio_export(139, 1);
++              gpio_request(140, "sysfs");
++              gpio_export(140, 1);
++              gpio_request(141, "sysfs");
++              gpio_export(141, 1);
++              gpio_request(162, "sysfs");
++              gpio_export(162, 1);
++      }
++
+       usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
+       usb_musb_init(NULL);
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0005-Beagle-expansion-add-CircuitCo-ulcd-Support.patch b/src/patches/kernel/omap/beagle/expansion/0005-Beagle-expansion-add-CircuitCo-ulcd-Support.patch
new file mode 100644 (file)
index 0000000..8b716ee
--- /dev/null
@@ -0,0 +1,285 @@
+From a53e7913a95faefde1ee87a7ea048c04b0850066 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Tue, 11 Dec 2012 06:42:03 -0600
+Subject: [PATCH 05/10] Beagle: expansion: add CircuitCo ulcd Support
+
+This of a cleanup, squashed both ulcd commits into one:
+
+======================================================================
+
+expansion: add ulcd
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+
+======================================================================
+
+beagleboard: fix uLCD7 support
+Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
+
+======================================================================
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c          |  136 ++++++++++++++++++++++
+ drivers/video/omap2/displays/panel-generic-dpi.c |   27 +++++
+ 2 files changed, 163 insertions(+)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 0f9b253..b2807c2 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -118,12 +118,16 @@ static struct {
+       int dvi_pd_gpio;
+       int usr_button_gpio;
+       int mmc_caps;
++      char *lcd_driver_name;
++      int lcd_pwren;
+ } beagle_config = {
+       .mmc1_gpio_wp = -EINVAL,
+       .usb_pwr_level = 0,
+       .dvi_pd_gpio = -EINVAL,
+       .usr_button_gpio = 4,
+       .mmc_caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
++      .lcd_driver_name = "",
++      .lcd_pwren = 156,
+ };
+ static struct gpio omap3_beagle_rev_gpios[] __initdata = {
+@@ -195,6 +199,7 @@ static void __init omap3_beagle_init_rev(void)
+ }
+ char expansionboard_name[16];
++char expansionboard2_name[16];
+ enum {
+       EXPANSION_MMC_NONE = 0,
+@@ -205,6 +210,7 @@ enum {
+ enum {
+       EXPANSION_I2C_NONE = 0,
+       EXPANSION_I2C_ZIPPY,
++      EXPANSION_I2C_7ULCD,
+ };
+ static struct {
+@@ -369,9 +375,53 @@ static struct omap_dss_device beagle_tv_device = {
+       .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
+ };
++static int beagle_enable_lcd(struct omap_dss_device *dssdev)
++{
++      if (gpio_is_valid(beagle_config.lcd_pwren)) {
++              pr_info("%s: Enabling LCD\n", __FUNCTION__);
++              gpio_set_value(beagle_config.lcd_pwren, 0);
++      } else {
++              pr_info("%s: Invalid LCD enable GPIO: %d\n",
++                      __FUNCTION__, beagle_config.lcd_pwren);
++      }
++
++      return 0;
++}
++
++static void beagle_disable_lcd(struct omap_dss_device *dssdev)
++{
++      if (gpio_is_valid(beagle_config.lcd_pwren)) {
++              pr_info("%s: Disabling LCD\n", __FUNCTION__);
++              gpio_set_value(beagle_config.lcd_pwren, 1);
++      } else {
++              pr_info("%s: Invalid LCD enable GPIO: %d\n",
++                      __FUNCTION__, beagle_config.lcd_pwren);
++      }
++
++      return;
++}
++
++static struct panel_generic_dpi_data lcd_panel = {
++      .name = "tfc_s9700rtwv35tr-01b",
++      .platform_enable = beagle_enable_lcd,
++      .platform_disable = beagle_disable_lcd,
++};
++
++static struct omap_dss_device beagle_lcd_device = {
++      .type                   = OMAP_DISPLAY_TYPE_DPI,
++      .name                   = "lcd",
++      .driver_name            = "generic_dpi_panel",
++      .phy.dpi.data_lines     = 24,
++      .platform_enable        = beagle_enable_lcd,
++      .platform_disable       = beagle_disable_lcd,
++      .reset_gpio             = -EINVAL,
++      .data                   = &lcd_panel,
++};
++
+ static struct omap_dss_device *beagle_dss_devices[] = {
+       &beagle_dvi_device,
+       &beagle_tv_device,
++      &beagle_lcd_device,
+ };
+ static struct omap_dss_board_info beagle_dss_data = {
+@@ -553,6 +603,53 @@ static struct i2c_board_info __initdata zippy_i2c2_rtc[] = {
+ #endif
+ };
++#if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2007)
++/* Touchscreen */
++#include <linux/i2c/tsc2007.h>
++
++#define OMAP3BEAGLE_TSC2007_GPIO 157
++
++static int omap3beagle_tsc2007_get_pendown_state(void)
++{
++      return !gpio_get_value(OMAP3BEAGLE_TSC2007_GPIO);
++}
++
++static struct tsc2007_platform_data tsc2007_info = {
++      .model = 2007,
++      .x_plate_ohms = 180,
++      .get_pendown_state = omap3beagle_tsc2007_get_pendown_state,
++};
++
++static struct i2c_board_info __initdata beagle_i2c2_bbtoys_ulcd[] = {
++      {
++              I2C_BOARD_INFO("tlc59108", 0x40),
++      },
++      {
++              I2C_BOARD_INFO("tsc2007", 0x48),
++              .platform_data = &tsc2007_info,
++      },
++};
++
++static void __init omap3beagle_tsc2007_init(void)
++{
++      int r;
++
++      omap_mux_init_gpio(OMAP3BEAGLE_TSC2007_GPIO, OMAP_PIN_INPUT_PULLUP);
++
++      r = gpio_request_one(OMAP3BEAGLE_TSC2007_GPIO, GPIOF_IN, "tsc2007_pen_down");
++      if (r < 0) {
++              pr_err("Beagle expansionboard: failed to request GPIO#%d for "
++              "tsc2007 pen down IRQ\n", OMAP3BEAGLE_TSC2007_GPIO);
++              return;
++      }
++
++      beagle_i2c2_bbtoys_ulcd[0].irq = gpio_to_irq(OMAP3BEAGLE_TSC2007_GPIO);
++      irq_set_irq_type(gpio_to_irq(OMAP3BEAGLE_TSC2007_GPIO), IRQ_TYPE_EDGE_FALLING);
++}
++#else
++static struct i2c_board_info __initdata beagle_i2c2_bbtoys_ulcd[] = {};
++#endif
++
+ static int __init omap3_beagle_i2c_init(void)
+ {
+       omap3_pmic_get_config(&beagle_twldata,
+@@ -565,6 +662,10 @@ static int __init omap3_beagle_i2c_init(void)
+       omap3_pmic_init("twl4030", &beagle_twldata);
+       switch (expansion_config.i2c_settings) {
++      case EXPANSION_I2C_7ULCD:
++              omap_register_i2c_bus(2, 400,  beagle_i2c2_bbtoys_ulcd,
++                                                      ARRAY_SIZE(beagle_i2c2_bbtoys_ulcd));
++              break;
+       case EXPANSION_I2C_ZIPPY:
+               omap_register_i2c_bus(2, 400, zippy_i2c2_rtc, ARRAY_SIZE(zippy_i2c2_rtc));
+               break;
+@@ -661,6 +762,18 @@ static int __init expansionboard_setup(char *str)
+       return 0;
+ }
++static int __init expansionboard2_setup(char *str)
++{
++      if (!machine_is_omap3_beagle())
++              return 0;
++
++      if (!str)
++              return -EINVAL;
++      strncpy(expansionboard2_name, str, 16);
++      pr_info("Beagle expansionboard2: %s\n", expansionboard2_name);
++      return 0;
++}
++
+ static int __init beagle_opp_init(void)
+ {
+       int r = 0;
+@@ -726,6 +839,20 @@ static void __init omap3_beagle_init(void)
+               omap_mux_init_gpio(OMAP3BEAGLE_GPIO_ZIPPY_MMC_CD, OMAP_PIN_INPUT);
+       }
++      if (!strcmp(expansionboard2_name, "bbtoys-ulcd"))
++      {
++              int r;
++              expansion_config.i2c_settings = EXPANSION_I2C_7ULCD;
++
++              /* TODO: set lcd_driver_name by command line or device tree */
++              beagle_config.lcd_driver_name = "tfc_s9700rtwv35tr-01b",
++              lcd_panel.name = beagle_config.lcd_driver_name;
++
++              r = gpio_request_one(beagle_config.lcd_pwren, GPIOF_OUT_INIT_LOW, "LCD power");
++              if (r < 0)
++                      pr_err("Beagle expansionboard: Unable to get LCD power enable GPIO\n");
++      }
++
+       if (gpio_is_valid(beagle_config.mmc1_gpio_wp))
+               omap_mux_init_gpio(beagle_config.mmc1_gpio_wp, OMAP_PIN_INPUT);
+@@ -795,6 +922,14 @@ static void __init omap3_beagle_init(void)
+               gpio_export(162, 1);
+       }
++      if (!strcmp(expansionboard2_name, "bbtoys-ulcd"))
++      {
++      #if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2007)
++              pr_info("Beagle expansionboard: initializing touchscreen: tsc2007\n");
++              omap3beagle_tsc2007_init();
++      #endif
++      }
++
+       usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
+       usb_musb_init(NULL);
+@@ -816,6 +951,7 @@ static void __init omap3_beagle_init(void)
+ }
+ early_param("buddy", expansionboard_setup);
++early_param("buddy2", expansionboard2_setup);
+ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
+       /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
+diff --git a/drivers/video/omap2/displays/panel-generic-dpi.c b/drivers/video/omap2/displays/panel-generic-dpi.c
+index 97363f7..614031f 100644
+--- a/drivers/video/omap2/displays/panel-generic-dpi.c
++++ b/drivers/video/omap2/displays/panel-generic-dpi.c
+@@ -515,6 +515,33 @@ static struct panel_config generic_dpi_panels[] = {
+               },
+               .name                   = "primeview_pd104slf",
+       },
++
++      /* ThreeFiveCorp S9700RTWV35TR-01B */
++      {
++              {
++                      .x_res          = 800,
++                      .y_res          = 480,
++
++                      .pixel_clock    = 30000,
++
++                      .hsw            = 49,
++                      .hfp            = 41,
++                      .hbp            = 40,
++
++                      .vsw            = 4,
++                      .vfp            = 14,
++                      .vbp            = 29,
++
++                      .vsync_level    = OMAPDSS_SIG_ACTIVE_LOW,
++                      .hsync_level    = OMAPDSS_SIG_ACTIVE_LOW,
++                      .data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE,
++                      .de_level       = OMAPDSS_SIG_ACTIVE_HIGH,
++                      .sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES,
++              },
++              .power_on_delay         = 50,
++              .power_off_delay        = 100,
++              .name                   = "tfc_s9700rtwv35tr-01b",
++      },
+ };
+ struct panel_drv_data {
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0006-Beagle-expansion-add-wifi.patch b/src/patches/kernel/omap/beagle/expansion/0006-Beagle-expansion-add-wifi.patch
new file mode 100644 (file)
index 0000000..88d48af
--- /dev/null
@@ -0,0 +1,180 @@
+From f78cd93d767cd75969c4661723cfce46071e5b1b Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Tue, 11 Dec 2012 06:48:52 -0600
+Subject: [PATCH 06/10] Beagle: expansion: add wifi
+
+build fixes from Pantelis Antoniou <panto@antoniou-consulting.com>
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |  119 +++++++++++++++++++++++++++++++
+ 1 file changed, 119 insertions(+)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index a8de97e..2322d6c 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -221,6 +221,73 @@ static struct {
+       .i2c_settings = EXPANSION_I2C_NONE,
+ };
++#if IS_ENABLED(CONFIG_WL12XX)
++#include <linux/regulator/fixed.h>
++#include <linux/ti_wilink_st.h>
++#include <linux/wl12xx.h>
++
++#define OMAP_BEAGLE_WLAN_EN_GPIO    (139)
++#define OMAP_BEAGLE_BT_EN_GPIO      (138)
++#define OMAP_BEAGLE_WLAN_IRQ_GPIO   (137)
++#define OMAP_BEAGLE_FM_EN_BT_WU     (136)
++
++struct wl12xx_platform_data omap_beagle_wlan_data __initdata = {
++      .board_ref_clock = WL12XX_REFCLOCK_38, /* 38.4 MHz */
++};
++
++static struct ti_st_plat_data wilink_platform_data = {
++      .nshutdown_gpio = OMAP_BEAGLE_BT_EN_GPIO,
++      .dev_name               = "/dev/ttyO1",
++      .flow_cntrl             = 1,
++      .baud_rate              = 3000000,
++      .chip_enable    = NULL,
++      .suspend                = NULL,
++      .resume                 = NULL,
++};
++
++static struct platform_device wl12xx_device = {
++              .name           = "kim",
++              .id                     = -1,
++              .dev.platform_data = &wilink_platform_data,
++};
++
++static struct platform_device btwilink_device = {
++      .name   = "btwilink",
++      .id     = -1,
++};
++#endif
++
++static struct regulator_consumer_supply beagle_vmmc2_supply =
++      REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1");
++
++static struct regulator_init_data beagle_vmmc2 = {
++      .constraints = {
++              .valid_ops_mask = REGULATOR_CHANGE_STATUS,
++      },
++      .num_consumer_supplies = 1,
++      .consumer_supplies = &beagle_vmmc2_supply,
++};
++
++#if IS_ENABLED(CONFIG_WL12XX)
++static struct fixed_voltage_config beagle_vwlan = {
++      .supply_name = "vwl1271",
++      .microvolts = 1800000,  /* 1.8V */
++      .gpio = OMAP_BEAGLE_WLAN_EN_GPIO,
++      .startup_delay = 70000, /* 70ms */
++      .enable_high = 1,
++      .enabled_at_boot = 0,
++      .init_data = &beagle_vmmc2,
++};
++
++static struct platform_device omap_vwlan_device = {
++      .name           = "reg-fixed-voltage",
++      .id             = 1,
++      .dev = {
++              .platform_data = &beagle_vwlan,
++      },
++};
++#endif
++
+ //rcn-ee: this is just a fake regulator, the zippy hardware provides 3.3/1.8 with jumper..
+ static struct fixed_voltage_config beagle_vzippy = {
+       .supply_name = "vzippy",
+@@ -459,6 +526,26 @@ static struct omap2_hsmmc_info mmc_zippy[] = {
+       },
+       {}      /* Terminator */
+ };
++
++static struct omap2_hsmmc_info mmcbbt[] = {
++      {
++              .mmc            = 1,
++              .caps           = MMC_CAP_4_BIT_DATA,
++              .gpio_wp        = -EINVAL,
++              .deferred       = true,
++      },
++      {
++              .name           = "wl1271",
++              .mmc            = 2,
++              .caps           = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
++              .gpio_wp        = -EINVAL,
++              .gpio_cd        = -EINVAL,
++              .ocr_mask       = MMC_VDD_165_195,
++              .nonremovable   = true,
++      },
++      {}      /* Terminator */
++};
++
+ static struct regulator_consumer_supply beagle_vmmc1_supply[] = {
+       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
+ };
+@@ -490,6 +577,13 @@ static int beagle_twl_gpio_setup(struct device *dev,
+       int r;
+       switch (expansion_config.mmc_settings) {
++      case EXPANSION_MMC_WIFI:
++              mmcbbt[0].gpio_wp = beagle_config.mmc1_gpio_wp;
++              /* gpio + 0 is "mmc0_cd" (input/IRQ) */
++              mmcbbt[0].gpio_cd = gpio + 0;
++
++              omap_hsmmc_late_init(mmcbbt);
++              break;
+       case EXPANSION_MMC_ZIPPY:
+               mmc_zippy[0].gpio_wp = beagle_config.mmc1_gpio_wp;
+               /* gpio + 0 is "mmc0_cd" (input/IRQ) */
+@@ -839,6 +933,13 @@ static void __init omap3_beagle_init(void)
+               omap_mux_init_gpio(OMAP3BEAGLE_GPIO_ZIPPY_MMC_CD, OMAP_PIN_INPUT);
+       }
++      if (!strcmp(expansionboard_name, "bbtoys-wifi"))
++      {
++      #if IS_ENABLED(CONFIG_WL12XX)
++              expansion_config.mmc_settings = EXPANSION_MMC_WIFI;
++      #endif
++      }
++
+       if (!strcmp(expansionboard2_name, "bbtoys-ulcd"))
+       {
+               int r;
+@@ -857,6 +958,10 @@ static void __init omap3_beagle_init(void)
+               omap_mux_init_gpio(beagle_config.mmc1_gpio_wp, OMAP_PIN_INPUT);
+       switch (expansion_config.mmc_settings) {
++      case EXPANSION_MMC_WIFI:
++              mmcbbt[0].caps = beagle_config.mmc_caps;
++              omap_hsmmc_init(mmcbbt);
++              break;
+       case EXPANSION_MMC_ZIPPY:
+               mmc_zippy[0].caps = beagle_config.mmc_caps;
+               omap_hsmmc_init(mmc_zippy);
+@@ -922,6 +1027,20 @@ static void __init omap3_beagle_init(void)
+               gpio_export(162, 1);
+       }
++      if (!strcmp(expansionboard_name, "bbtoys-wifi"))
++      {
++      #if IS_ENABLED(CONFIG_WL12XX)
++              omap_beagle_wlan_data.irq = gpio_to_irq(OMAP_BEAGLE_WLAN_IRQ_GPIO);
++              if (wl12xx_set_platform_data(&omap_beagle_wlan_data))
++                      pr_err("error setting wl12xx data\n");
++              pr_info("Beagle expansionboard: registering wl12xx bt platform device\n");
++              platform_device_register(&wl12xx_device);
++              platform_device_register(&btwilink_device);
++              pr_info("Beagle expansionboard: registering wl12xx wifi platform device\n");
++              platform_device_register(&omap_vwlan_device);
++      #endif
++      }
++
+       if (!strcmp(expansionboard2_name, "bbtoys-ulcd"))
+       {
+       #if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2007)
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0007-Beagle-expansion-add-beaglefpga.patch b/src/patches/kernel/omap/beagle/expansion/0007-Beagle-expansion-add-beaglefpga.patch
new file mode 100644 (file)
index 0000000..a006c7b
--- /dev/null
@@ -0,0 +1,117 @@
+From 0c361e9db10f9ec3598bf062a605a451857ee06e Mon Sep 17 00:00:00 2001
+From: Bas van der Doorn <bas@doornvd.com>
+Date: Tue, 11 Dec 2012 06:52:22 -0600
+Subject: [PATCH 07/10] Beagle: expansion: add beaglefpga
+
+Added SPI dev and McBSP 3 mux when FPGA is detected
+
+Signed-off-by: Bas van der Doorn <bas@doornvd.com>
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |   76 +++++++++++++++++++++++++++++++
+ 1 file changed, 76 insertions(+)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 2322d6c..c257f3c 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -44,6 +44,7 @@
+ #include <asm/mach/arch.h>
+ #include <asm/mach/map.h>
+ #include <asm/mach/flash.h>
++#include <linux/spi/spi.h>
+ #include <video/omapdss.h>
+ #include <video/omap-panel-data.h>
+@@ -916,6 +917,68 @@ static int __init beagle_opp_init(void)
+ }
+ omap_device_initcall(beagle_opp_init);
++static void __init omap3_beagle_config_mcspi3_mux(void)
++{
++      /* NOTE: Clock pins need to be in input mode */
++      omap_mux_init_signal("sdmmc2_clk.mcspi3_clk", OMAP_PIN_INPUT);
++      omap_mux_init_signal("sdmmc2_cmd.mcspi3_simo", OMAP_PIN_OUTPUT);
++      omap_mux_init_signal("sdmmc2_dat0.mcspi3_somi", OMAP_PIN_INPUT_PULLUP);
++      omap_mux_init_signal("sdmmc2_dat2.mcspi3_cs1", OMAP_PIN_OUTPUT);
++      omap_mux_init_signal("sdmmc2_dat3.mcspi3_cs0", OMAP_PIN_OUTPUT);
++}
++
++static void __init omap3_beagle_config_mcspi4_mux(void)
++{
++      /* NOTE: Clock pins need to be in input mode */
++      omap_mux_init_signal("mcbsp1_clkr.mcspi4_clk", OMAP_PIN_INPUT);
++      omap_mux_init_signal("mcbsp1_dx.mcspi4_simo", OMAP_PIN_OUTPUT);
++      omap_mux_init_signal("mcbsp1_dr.mcspi4_somi", OMAP_PIN_INPUT_PULLUP);
++      omap_mux_init_signal("mcbsp1_fsx.mcspi4_cs0", OMAP_PIN_OUTPUT);
++}
++
++static void __init omap3_beagle_config_mcbsp3_mux(void)
++{
++      omap_mux_init_signal("mcbsp3_fsx.uart2_rx", OMAP_PIN_INPUT);
++      omap_mux_init_signal("uart2_cts.mcbsp3_dx", OMAP_PIN_OUTPUT);
++      omap_mux_init_signal("uart2_rts.mcbsp3_dr", OMAP_PIN_INPUT);
++      /* NOTE: Clock pins need to be in input mode */
++      omap_mux_init_signal("uart2_tx.mcbsp3_clkx", OMAP_PIN_INPUT);
++}
++
++static void __init omap3_beagle_config_fpga_mux(void)
++{
++      omap3_beagle_config_mcbsp3_mux();
++      omap3_beagle_config_mcspi3_mux();
++      omap3_beagle_config_mcspi4_mux();
++}
++
++static struct spi_board_info beagle_mcspi_board_info[] = {
++      /* spi 3.0 */
++      {
++              .modalias       = "spidev",
++              .max_speed_hz   = 48000000, //48 Mbps
++              .bus_num        = 3,
++              .chip_select    = 0,
++              .mode = SPI_MODE_1,
++      },
++      /* spi 3.1 */
++      {
++              .modalias       = "spidev",
++              .max_speed_hz   = 48000000, //48 Mbps
++              .bus_num        = 3,
++              .chip_select    = 1,
++              .mode = SPI_MODE_1,
++      },
++      /* spi 4.0 */
++      {
++              .modalias       = "spidev",
++              .max_speed_hz   = 48000000, //48 Mbps
++              .bus_num        = 4,
++              .chip_select    = 0,
++              .mode = SPI_MODE_1,
++      },
++};
++
+ static void __init omap3_beagle_init(void)
+ {
+       omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
+@@ -1041,6 +1104,19 @@ static void __init omap3_beagle_init(void)
+       #endif
+       }
++      if (!strcmp(expansionboard_name, "beaglefpga"))
++      {
++      #if IS_ENABLED(CONFIG_SPI_SPIDEV)
++              pr_info("Beagle expansionboard: enabling SPIdev for McSPI3/4 and pin muxing for McBSP3 slave mode\n");
++
++              /* FPGA pin settings configure McSPI 3, McSPI 4 and McBSP 3 */
++              omap3_beagle_config_fpga_mux();
++
++              /* register McSPI 3 and McSPI 4 for FPGA programming and control */
++              spi_register_board_info(beagle_mcspi_board_info, ARRAY_SIZE(beagle_mcspi_board_info));
++      #endif
++      }
++
+       if (!strcmp(expansionboard2_name, "bbtoys-ulcd"))
+       {
+       #if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2007)
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0008-Beagle-expansion-add-spidev.patch b/src/patches/kernel/omap/beagle/expansion/0008-Beagle-expansion-add-spidev.patch
new file mode 100644 (file)
index 0000000..23cc525
--- /dev/null
@@ -0,0 +1,35 @@
+From 5258354e6e4d0b55334099868668a166d967c1d2 Mon Sep 17 00:00:00 2001
+From: Russell Hay <russell.hay@gmail.com>
+Date: Tue, 11 Dec 2012 06:53:58 -0600
+Subject: [PATCH 08/10] Beagle: expansion: add spidev
+
+Signed-off-by: Russell Hay <russell.hay@gmail.com>
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index c257f3c..3e0313ee 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -1117,6 +1117,16 @@ static void __init omap3_beagle_init(void)
+       #endif
+       }
++      if (!strcmp(expansionboard_name, "spidev"))
++      {
++      #if IS_ENABLED(CONFIG_SPI_SPIDEV)
++              pr_info("Beagle expansionboard: registering spidev\n");
++              omap3_beagle_config_mcspi3_mux();
++              omap3_beagle_config_mcspi4_mux();
++              spi_register_board_info(beagle_mcspi_board_info, ARRAY_SIZE(beagle_mcspi_board_info));
++      #endif
++      }
++
+       if (!strcmp(expansionboard2_name, "bbtoys-ulcd"))
+       {
+       #if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2007)
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0009-Beagle-expansion-add-Aptina-li5m03-camera.patch b/src/patches/kernel/omap/beagle/expansion/0009-Beagle-expansion-add-Aptina-li5m03-camera.patch
new file mode 100644 (file)
index 0000000..28d2d4a
--- /dev/null
@@ -0,0 +1,217 @@
+From cc6ced0a1cbaea65a507ec3fe543a5b98d760d23 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Tue, 11 Dec 2012 06:58:15 -0600
+Subject: [PATCH 09/10] Beagle: expansion: add Aptina li5m03 camera
+
+Based on:
+https://github.com/Aptina/BeagleBoard-xM/blob/master/tools/0266-Adding-MT9P031-Support-files.patch
+
+And on Max Galemin's patch
+https://github.com/MaxGalemin/buildroot/blob/master/board/beagleboard/xm/kernel-patches/linux-0003-Add-support-for-MT9P031-Aptina-image-sensor-driver.patch
+
+And Koen Kooi Previous work's
+https://github.com/beagleboard/kernel/blob/beagleboard-3.2/patches/camera/0003-beagleboard-fix-i2c2-init.patch
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |  142 +++++++++++++++++++++++++++++++
+ 1 file changed, 142 insertions(+)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 3e0313ee..4fb5eae 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -201,6 +201,7 @@ static void __init omap3_beagle_init_rev(void)
+ char expansionboard_name[16];
+ char expansionboard2_name[16];
++char camera_name[16];
+ enum {
+       EXPANSION_MMC_NONE = 0,
+@@ -555,6 +556,14 @@ static struct regulator_consumer_supply beagle_vsim_supply[] = {
+       REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.0"),
+ };
++static struct regulator_consumer_supply beagle_vaux3_supply = {
++      .supply         = "cam_1v8",
++};
++
++static struct regulator_consumer_supply beagle_vaux4_supply = {
++      .supply         = "cam_2v8",
++};
++
+ static struct gpio_led gpio_leds[];
+ /* PHY's VCC regulator might be added later, so flag that we need it */
+@@ -677,11 +686,43 @@ static struct regulator_init_data beagle_vsim = {
+       .consumer_supplies      = beagle_vsim_supply,
+ };
++/* VAUX3 for CAM_1V8 */
++static struct regulator_init_data beagle_vaux3 = {
++      .constraints = {
++              .min_uV                 = 1800000,
++              .max_uV                 = 1800000,
++              .apply_uV               = true,
++              .valid_modes_mask       = REGULATOR_MODE_NORMAL
++                                      | REGULATOR_MODE_STANDBY,
++              .valid_ops_mask         = REGULATOR_CHANGE_MODE
++                                      | REGULATOR_CHANGE_STATUS,
++      },
++      .num_consumer_supplies  = 1,
++      .consumer_supplies      = &beagle_vaux3_supply,
++};
++
++/* VAUX4 for CAM_2V8 */
++static struct regulator_init_data beagle_vaux4 = {
++      .constraints = {
++              .min_uV                 = 1800000,
++              .max_uV                 = 1800000,
++              .apply_uV               = true,
++              .valid_modes_mask       = REGULATOR_MODE_NORMAL
++                                      | REGULATOR_MODE_STANDBY,
++              .valid_ops_mask         = REGULATOR_CHANGE_MODE
++                                      | REGULATOR_CHANGE_STATUS,
++      },
++      .num_consumer_supplies  = 1,
++      .consumer_supplies      = &beagle_vaux4_supply,
++};
++
+ static struct twl4030_platform_data beagle_twldata = {
+       /* platform_data for children goes here */
+       .gpio           = &beagle_gpio_data,
+       .vmmc1          = &beagle_vmmc1,
+       .vsim           = &beagle_vsim,
++      .vaux3          = &beagle_vaux3,
++      .vaux4          = &beagle_vaux4,
+ };
+ static struct i2c_board_info __initdata beagle_i2c_eeprom[] = {
+@@ -745,6 +786,61 @@ static void __init omap3beagle_tsc2007_init(void)
+ static struct i2c_board_info __initdata beagle_i2c2_bbtoys_ulcd[] = {};
+ #endif
++#if IS_ENABLED(CONFIG_VIDEO_MT9P031)
++/* needed for: omap3_beagle_late_initcall */
++#include "devices.h"
++#include <media/omap3isp.h>
++#include <media/mt9p031.h>
++/* needed for: v4l2_dev_to_isp_device */
++#include "../../../drivers/media/platform/omap3isp/isp.h"
++
++#define MT9P031_RESET_GPIO    98
++#define MT9P031_EXT_FREQ      21000000
++#define MT9P031_TARGET_FREQ   48000000
++
++#define MT9P031_I2C_ADDR      0x48
++#define MT9P031_I2C_BUS               2
++
++static struct regulator *reg_1v8, *reg_2v8;
++
++static struct mt9p031_platform_data beagle_mt9p031_platform_data = {
++      .reset          = MT9P031_RESET_GPIO,
++      .ext_freq       = MT9P031_EXT_FREQ,
++      .target_freq    = MT9P031_TARGET_FREQ,
++};
++
++static struct i2c_board_info mt9p031_camera_i2c_device = {
++      I2C_BOARD_INFO("mt9p031", MT9P031_I2C_ADDR),
++      .platform_data = &beagle_mt9p031_platform_data,
++};
++
++static struct isp_subdev_i2c_board_info mt9p031_camera_subdevs[] = {
++      {
++              .board_info = &mt9p031_camera_i2c_device,
++              .i2c_adapter_id = MT9P031_I2C_BUS,
++      },
++      { NULL, 0, },
++};
++
++static struct isp_v4l2_subdevs_group beagle_camera_subdevs[] = {
++      {
++              .subdevs = mt9p031_camera_subdevs,
++              .interface = ISP_INTERFACE_PARALLEL,
++              .bus = {
++                      .parallel = {
++                              .data_lane_shift = 0,
++                              .clk_pol = 1,
++                      }
++              },
++      },
++      { },
++};
++
++static struct isp_platform_data beagle_isp_platform_data = {
++      .subdevs = beagle_camera_subdevs,
++};
++#endif
++
+ static int __init omap3_beagle_i2c_init(void)
+ {
+       omap3_pmic_get_config(&beagle_twldata,
+@@ -869,6 +965,18 @@ static int __init expansionboard2_setup(char *str)
+       return 0;
+ }
++static int __init camera_setup(char *str)
++{
++      if (!machine_is_omap3_beagle())
++              return 0;
++
++      if (!str)
++              return -EINVAL;
++      strncpy(camera_name, str, 16);
++      pr_info("Beagle camera: %s\n", camera_name);
++      return 0;
++}
++
+ static int __init beagle_opp_init(void)
+ {
+       int r = 0;
+@@ -1155,8 +1263,42 @@ static void __init omap3_beagle_init(void)
+       pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
+ }
++static int __init omap3_beagle_late_initcall(void)
++{
++      if (!machine_is_omap3_beagle())
++              return 0;
++
++      if (!cpu_is_omap3630())
++              return 0;
++
++#if IS_ENABLED(CONFIG_VIDEO_MT9P031)
++      if ((!strcmp(camera_name, "lbcm5m1")) || (!strcmp(camera_name, "li5m03")))
++      {
++              pr_info("Beagle camera: MT9P031 init\n");
++
++              reg_1v8 = regulator_get(NULL, "cam_1v8");
++              if (IS_ERR(reg_1v8))
++                      pr_err("%s: cannot get cam_1v8 regulator\n", __func__);
++              else
++                      regulator_enable(reg_1v8);
++
++              reg_2v8 = regulator_get(NULL, "cam_2v8");
++              if (IS_ERR(reg_2v8))
++                      pr_err("%s: cannot get cam_2v8 regulator\n", __func__);
++              else
++                      regulator_enable(reg_2v8);
++
++              omap3_init_camera(&beagle_isp_platform_data);
++      }
++#endif
++      return 0;
++}
++
+ early_param("buddy", expansionboard_setup);
+ early_param("buddy2", expansionboard2_setup);
++early_param("camera", camera_setup);
++
++late_initcall(omap3_beagle_late_initcall);
+ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
+       /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0010-Beagle-expansion-add-LSR-COM6L-Adapter-Board.patch b/src/patches/kernel/omap/beagle/expansion/0010-Beagle-expansion-add-LSR-COM6L-Adapter-Board.patch
new file mode 100644 (file)
index 0000000..04a3656
--- /dev/null
@@ -0,0 +1,123 @@
+From f2e2294733d926e627dcda6425f58611b185c7fc Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Tue, 11 Dec 2012 07:02:40 -0600
+Subject: [PATCH 10/10] Beagle: expansion: add LSR COM6L Adapter Board
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |   60 ++++++++++++++++++++++++++++---
+ 1 file changed, 55 insertions(+), 5 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 0ac1b49..5a7e7b5 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -202,6 +202,7 @@ static void __init omap3_beagle_init_rev(void)
+ char expansionboard_name[16];
+ char expansionboard2_name[16];
+ char camera_name[16];
++char wl12xx_name[16];
+ enum {
+       EXPANSION_MMC_NONE = 0,
+@@ -237,6 +238,10 @@ struct wl12xx_platform_data omap_beagle_wlan_data __initdata = {
+       .board_ref_clock = WL12XX_REFCLOCK_38, /* 38.4 MHz */
+ };
++struct wl12xx_platform_data omap_beagle_wlan_data_26mhz __initdata = {
++      .board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */
++};
++
+ static struct ti_st_plat_data wilink_platform_data = {
+       .nshutdown_gpio = OMAP_BEAGLE_BT_EN_GPIO,
+       .dev_name               = "/dev/ttyO1",
+@@ -987,6 +992,18 @@ static int __init camera_setup(char *str)
+       return 0;
+ }
++static int __init wl12xx_setup(char *str)
++{
++      if (!machine_is_omap3_beagle())
++              return 0;
++
++      if (!str)
++              return -EINVAL;
++      strncpy(wl12xx_name, str, 16);
++      pr_info("Beagle wl12xx clk: %s\n", wl12xx_name);
++      return 0;
++}
++
+ static int __init beagle_opp_init(void)
+ {
+       int r = 0;
+@@ -1114,9 +1131,29 @@ static void __init omap3_beagle_init(void)
+               omap_mux_init_gpio(OMAP3BEAGLE_GPIO_ZIPPY_MMC_CD, OMAP_PIN_INPUT);
+       }
+-      if (!strcmp(expansionboard_name, "bbtoys-wifi"))
++      if ((!strcmp(expansionboard_name, "bbtoys-wifi")) || (!strcmp(expansionboard_name, "lsr-com6l-adpt")))
+       {
+       #if IS_ENABLED(CONFIG_WL12XX)
++              pr_info("Beagle expansion: wl12xx: setting up gpio pinmux\n");
++
++              omap_mux_init_gpio(OMAP_BEAGLE_FM_EN_BT_WU, OMAP_PIN_OUTPUT);
++              omap_mux_init_gpio(OMAP_BEAGLE_BT_EN_GPIO, OMAP_PIN_OUTPUT);
++              omap_mux_init_gpio(OMAP_BEAGLE_WLAN_EN_GPIO, OMAP_PIN_OUTPUT);
++
++              omap_mux_init_gpio(OMAP_BEAGLE_WLAN_IRQ_GPIO, OMAP_PIN_INPUT_PULLUP);
++
++              /* WLAN SDIO: MMC2 CLK */
++              omap_mux_init_signal("sdmmc2_clk.sdmmc2_clk", OMAP_PIN_INPUT_PULLUP);
++
++              /* WLAN SDIO: MMC2 CMD */
++              omap_mux_init_signal("sdmmc2_cmd.sdmmc2_cmd", OMAP_PIN_INPUT_PULLUP);
++
++              /* WLAN SDIO: MMC2 DAT[0-3] */
++              omap_mux_init_signal("sdmmc2_dat0.sdmmc2_dat0", OMAP_PIN_INPUT_PULLUP);
++              omap_mux_init_signal("sdmmc2_dat1.sdmmc2_dat1", OMAP_PIN_INPUT_PULLUP);
++              omap_mux_init_signal("sdmmc2_dat2.sdmmc2_dat2", OMAP_PIN_INPUT_PULLUP);
++              omap_mux_init_signal("sdmmc2_dat3.sdmmc2_dat3", OMAP_PIN_INPUT_PULLUP);
++
+               expansion_config.mmc_settings = EXPANSION_MMC_WIFI;
+       #endif
+       }
+@@ -1208,12 +1245,24 @@ static void __init omap3_beagle_init(void)
+               gpio_export(162, 1);
+       }
+-      if (!strcmp(expansionboard_name, "bbtoys-wifi"))
++      if ((!strcmp(expansionboard_name, "bbtoys-wifi")) || (!strcmp(expansionboard_name, "lsr-com6l-adpt")))
+       {
+       #if IS_ENABLED(CONFIG_WL12XX)
+-              omap_beagle_wlan_data.irq = gpio_to_irq(OMAP_BEAGLE_WLAN_IRQ_GPIO);
+-              if (wl12xx_set_platform_data(&omap_beagle_wlan_data))
+-                      pr_err("error setting wl12xx data\n");
++              pr_info("Beagle expansionboard: initializing wl12xx platform\n");
++
++              if (!strcmp(wl12xx_name, "wl12xx_26mhz")) {
++                      pr_info("wl12xx: 26Mhz reference clock (TiWi5)\n");
++                      omap_beagle_wlan_data_26mhz.irq = gpio_to_irq(OMAP_BEAGLE_WLAN_IRQ_GPIO);
++                      if (wl12xx_set_platform_data(&omap_beagle_wlan_data_26mhz))
++                              pr_err("error setting wl12xx data\n");
++              } else {
++                      pr_info("wl12xx: 38.4Mhz reference clock (TiWi2/TiWi-BLE)\n");
++                      pr_info("wl12xx: for (TiWi5) support pass kernel [wl12xx_clk=wl12xx_26mhz]\n");
++                      omap_beagle_wlan_data.irq = gpio_to_irq(OMAP_BEAGLE_WLAN_IRQ_GPIO);
++                      if (wl12xx_set_platform_data(&omap_beagle_wlan_data))
++                              pr_err("error setting wl12xx data\n");
++              }
++
+               pr_info("Beagle expansionboard: registering wl12xx bt platform device\n");
+               platform_device_register(&wl12xx_device);
+               platform_device_register(&btwilink_device);
+@@ -1307,6 +1356,7 @@ static int __init omap3_beagle_late_initcall(void)
+ early_param("buddy", expansionboard_setup);
+ early_param("buddy2", expansionboard2_setup);
+ early_param("camera", camera_setup);
++early_param("wl12xx_clk", wl12xx_setup);
+ late_initcall(omap3_beagle_late_initcall);
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0011-Beagle-expansion-LSR-COM6L-Adapter-Board-also-initia.patch b/src/patches/kernel/omap/beagle/expansion/0011-Beagle-expansion-LSR-COM6L-Adapter-Board-also-initia.patch
new file mode 100644 (file)
index 0000000..a8edc77
--- /dev/null
@@ -0,0 +1,73 @@
+From 89eb49ac0268518799984fa035ac3fea0ae758ec Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Mon, 21 Jan 2013 11:52:20 -0600
+Subject: [PATCH 11/11] Beagle: expansion: LSR COM6L Adapter Board also
+ initialize the 24c256 eeprom
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |   20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 5a7e7b5..6797488 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -39,6 +39,7 @@
+ #include <linux/regulator/machine.h>
+ #include <linux/regulator/fixed.h>
+ #include <linux/i2c/twl.h>
++#include <linux/i2c/at24.h>
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -214,6 +215,7 @@ enum {
+       EXPANSION_I2C_NONE = 0,
+       EXPANSION_I2C_ZIPPY,
+       EXPANSION_I2C_7ULCD,
++      EXPANSION_I2C_COM6L,
+ };
+ static struct {
+@@ -856,6 +858,20 @@ static struct isp_platform_data beagle_isp_platform_data = {
+ };
+ #endif
++static struct at24_platform_data beagle_at24_eeprom_info = {
++      .byte_len       = (256*1024) / 8,
++      .page_size      = 64,
++      .flags          = AT24_FLAG_ADDR16,
++      .context        = (void *)NULL,
++};
++
++static struct i2c_board_info __initdata com6l_adpt_eeprom[] = {
++      {
++              I2C_BOARD_INFO("24c256", 0x50),
++              .platform_data  = &beagle_at24_eeprom_info,
++      },
++};
++
+ static int __init omap3_beagle_i2c_init(void)
+ {
+       omap3_pmic_get_config(&beagle_twldata,
+@@ -875,6 +891,9 @@ static int __init omap3_beagle_i2c_init(void)
+       case EXPANSION_I2C_ZIPPY:
+               omap_register_i2c_bus(2, 400, zippy_i2c2_rtc, ARRAY_SIZE(zippy_i2c2_rtc));
+               break;
++      case EXPANSION_I2C_COM6L:
++              omap_register_i2c_bus(2, 400, com6l_adpt_eeprom, ARRAY_SIZE(com6l_adpt_eeprom));
++              break;
+       default:
+               omap_register_i2c_bus(2, 400, NULL, 0);
+       }
+@@ -1155,6 +1174,7 @@ static void __init omap3_beagle_init(void)
+               omap_mux_init_signal("sdmmc2_dat3.sdmmc2_dat3", OMAP_PIN_INPUT_PULLUP);
+               expansion_config.mmc_settings = EXPANSION_MMC_WIFI;
++              expansion_config.i2c_settings = EXPANSION_I2C_COM6L;
+       #endif
+       }
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/beagle/expansion/0011-WIP-Beagle-expansion-extend-spidev-to-uart2.patch b/src/patches/kernel/omap/beagle/expansion/0011-WIP-Beagle-expansion-extend-spidev-to-uart2.patch
new file mode 100644 (file)
index 0000000..2039e4a
--- /dev/null
@@ -0,0 +1,43 @@
+From d78f1a01cc52ebad5d59edad772f2b403bfe67bd Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Wed, 12 Dec 2012 11:34:29 -0600
+Subject: [PATCH 11/11] WIP: Beagle: expansion: extend spidev to uart2
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |   12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 4fa880a..e4cfd5f 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -1162,6 +1162,16 @@ static void __init omap3_beagle_init(void)
+       if (gpio_is_valid(beagle_config.dvi_pd_gpio))
+               omap_mux_init_gpio(beagle_config.dvi_pd_gpio, OMAP_PIN_OUTPUT);
+       omap_display_init(&beagle_dss_data);
++
++      if (!strcmp(expansionboard_name, "spidev"))
++      {
++              pr_info("Beagle expansion: spidev: enable uart2/ttyO1\n");
++              omap_mux_init_signal("uart2_tx.uart2_tx", OMAP_PIN_OUTPUT);
++              omap_mux_init_signal("uart2_rts.uart2_rts", OMAP_PIN_OUTPUT);
++              omap_mux_init_signal("uart2_cts.uart2_cts", OMAP_PIN_INPUT);
++              omap_mux_init_signal("mcbsp3_fsx.uart2_rx", OMAP_PIN_INPUT);
++      }
++
+       omap_serial_init();
+       omap_sdrc_init(mt46h32m32lf6_sdrc_params,
+                                 mt46h32m32lf6_sdrc_params);
+@@ -1248,7 +1258,7 @@ static void __init omap3_beagle_init(void)
+       if (!strcmp(expansionboard_name, "spidev"))
+       {
+-              pr_info("Beagle expansionboard: registering spidev\n");
++              pr_info("Beagle expansionboard: spidev: enabling spi3/spi4\n");
+               omap3_beagle_config_mcspi3_mux();
+               omap3_beagle_config_mcspi4_mux();
+               spi_register_board_info(beagle_mcspi_board_info, ARRAY_SIZE(beagle_mcspi_board_info));
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/panda/0001-panda-fix-wl12xx-regulator.patch b/src/patches/kernel/omap/panda/0001-panda-fix-wl12xx-regulator.patch
new file mode 100644 (file)
index 0000000..de0e84b
--- /dev/null
@@ -0,0 +1,27 @@
+From a3abd1593e381deb4b1f358a55069988996eeae4 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Tue, 2 Aug 2011 21:55:34 -0500
+Subject: [PATCH 1/2] panda: fix wl12xx regulator
+
+pulled from: http://elinux.org/Panda_How_to_kernel_3_0_rel
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/twl-common.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c
+index e49b40b..0fd1a70 100644
+--- a/arch/arm/mach-omap2/twl-common.c
++++ b/arch/arm/mach-omap2/twl-common.c
+@@ -360,6 +360,7 @@ static struct regulator_init_data omap4_vusb_idata = {
+ static struct regulator_init_data omap4_clk32kg_idata = {
+       .constraints = {
+               .valid_ops_mask         = REGULATOR_CHANGE_STATUS,
++              .always_on              = true,
+       },
+ };
+-- 
+1.7.7.6
+
diff --git a/src/patches/kernel/omap/panda/0002-ti-st-st-kim-fixing-firmware-path.patch b/src/patches/kernel/omap/panda/0002-ti-st-st-kim-fixing-firmware-path.patch
new file mode 100644 (file)
index 0000000..694bc36
--- /dev/null
@@ -0,0 +1,36 @@
+From 8de5d11f076ee25182df805ab78e0823ce4dd2be Mon Sep 17 00:00:00 2001
+From: Ricardo Salveti de Araujo <ricardo.salveti@linaro.org>
+Date: Tue, 25 Oct 2011 10:06:39 +0200
+Subject: [PATCH 2/2] ti-st/st-kim: fixing firmware path
+
+Signed-off-by: Ricardo Salveti de Araujo <ricardo.salveti@linaro.org>
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ drivers/misc/ti-st/st_kim.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/misc/ti-st/st_kim.c b/drivers/misc/ti-st/st_kim.c
+index 9ff942a..f673464 100644
+--- a/drivers/misc/ti-st/st_kim.c
++++ b/drivers/misc/ti-st/st_kim.c
+@@ -244,7 +244,7 @@ static long read_local_version(struct kim_data_s *kim_gdata, char *bts_scr_name)
+       if (version & 0x8000)
+               maj_ver |= 0x0008;
+-      sprintf(bts_scr_name, "TIInit_%d.%d.%d.bts", chip, maj_ver, min_ver);
++      sprintf(bts_scr_name, "ti-connectivity/TIInit_%d.%d.%d.bts", chip, maj_ver, min_ver);
+       /* to be accessed later via sysfs entry */
+       kim_gdata->version.full = version;
+@@ -287,7 +287,7 @@ static long download_firmware(struct kim_data_s *kim_gdata)
+       long len = 0;
+       unsigned char *ptr = NULL;
+       unsigned char *action_ptr = NULL;
+-      unsigned char bts_scr_name[30] = { 0 }; /* 30 char long bts scr name? */
++      unsigned char bts_scr_name[50] = { 0 }; /* 50 char long bts scr name? */
+       int wr_room_space;
+       int cmd_size;
+       unsigned long timeout;
+-- 
+1.7.7.6
+
diff --git a/src/patches/kernel/omap/panda/0003-Panda-expansion-add-spidev.patch b/src/patches/kernel/omap/panda/0003-Panda-expansion-add-spidev.patch
new file mode 100644 (file)
index 0000000..9369852
--- /dev/null
@@ -0,0 +1,112 @@
+From 3304f2feba4999fc1013911f0cf0d9acc33a0117 Mon Sep 17 00:00:00 2001
+From: Adrien Ferre <ferre.adrien@gmail.com>
+Date: Mon, 25 Mar 2013 12:00:38 -0500
+Subject: [PATCH 3/3] Panda: expansion: add spidev
+
+I've made a patch to enable spidev on pandaboards using buddy=spidev just like for beagle.
+
+https://github.com/RobertCNelson/stable-kernel/issues/22
+
+Signed-off-by: Adrien Ferre <ferre.adrien@gmail.com>
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap4panda.c |   43 ++++++++++++++++++++++++++++++++
+ 1 file changed, 43 insertions(+)
+
+diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
+index 1e2c75e..3563f86 100644
+--- a/arch/arm/mach-omap2/board-omap4panda.c
++++ b/arch/arm/mach-omap2/board-omap4panda.c
+@@ -22,6 +22,7 @@
+ #include <linux/clk.h>
+ #include <linux/io.h>
+ #include <linux/leds.h>
++#include <linux/irq.h>
+ #include <linux/gpio.h>
+ #include <linux/usb/otg.h>
+ #include <linux/i2c/twl.h>
+@@ -35,6 +36,7 @@
+ #include <linux/wl12xx.h>
+ #include <linux/irqchip/arm-gic.h>
+ #include <linux/platform_data/omap-abe-twl6040.h>
++#include <linux/spi/spi.h>
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -54,6 +56,8 @@
+ #define GPIO_WIFI_PMENA               43
+ #define GPIO_WIFI_IRQ         53
++char expboard_name[16];
++
+ /* wl127x BT, FM, GPS connectivity chip */
+ static struct ti_st_plat_data wilink_platform_data = {
+       .nshutdown_gpio = 46,
+@@ -99,6 +103,25 @@ static struct platform_device leds_gpio = {
+       },
+ };
++static struct spi_board_info panda_mcspi_board_info[] = {
++      /* spi 1.0 */
++      {
++              .modalias       = "spidev",
++              .max_speed_hz   = 48000000, //48 Mbps
++              .bus_num        = 1,
++              .chip_select    = 0,
++              .mode = SPI_MODE_1,
++      },
++      /* spi 1.1 */
++      {
++              .modalias       = "spidev",
++              .max_speed_hz   = 48000000, //48 Mbps
++              .bus_num        = 1,
++              .chip_select    = 1,
++              .mode = SPI_MODE_1,
++      },
++};
++
+ static struct omap_abe_twl6040_data panda_abe_audio_data = {
+       /* Audio out */
+       .has_hs         = ABE_TWL6040_LEFT | ABE_TWL6040_RIGHT,
+@@ -161,6 +184,18 @@ static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
+       .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
+ };
++static int __init expansionboard_setup(char *str)
++{
++      if (!machine_is_omap4_panda())
++              return 0;
++
++      if (!str)
++              return -EINVAL;
++      strncpy(expboard_name, str, 16);
++      pr_info("Panda expansionboard: %s\n", expboard_name);
++      return 0;
++}
++
+ static void __init omap4_ehci_init(void)
+ {
+       int ret;
+@@ -435,11 +470,19 @@ static void __init omap4_panda_init(void)
+       omap_sdrc_init(NULL, NULL);
+       omap4_twl6030_hsmmc_init(mmc);
+       omap4_ehci_init();
++      if (!strcmp(expboard_name, "spidev")) {
++      #if IS_ENABLED(CONFIG_SPI_SPIDEV)
++              pr_info("Panda expansionboard: spidev: enabling spi3/spi4\n");
++              spi_register_board_info(panda_mcspi_board_info, ARRAY_SIZE(panda_mcspi_board_info));
++      #endif
++      }
+       usb_bind_phy("musb-hdrc.2.auto", 0, "omap-usb2.3.auto");
+       usb_musb_init(&musb_board_data);
+       omap4_panda_display_init();
+ }
++early_param("buddy", expansionboard_setup);
++
+ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
+       /* Maintainer: David Anders - Texas Instruments Inc */
+       .atag_offset    = 0x100,
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/panda/0004-HACK-PandaES-disable-cpufreq-so-board-will-boot.patch b/src/patches/kernel/omap/panda/0004-HACK-PandaES-disable-cpufreq-so-board-will-boot.patch
new file mode 100644 (file)
index 0000000..12194e4
--- /dev/null
@@ -0,0 +1,38 @@
+From 359104632fa556e3c5c78e4016c2585896225716 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Mon, 1 Apr 2013 12:17:50 -0500
+Subject: [PATCH 4/4] HACK: PandaES: disable cpufreq so board will boot
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ drivers/cpufreq/omap-cpufreq.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
+index 0279d18..0a8ac09 100644
+--- a/drivers/cpufreq/omap-cpufreq.c
++++ b/drivers/cpufreq/omap-cpufreq.c
+@@ -31,6 +31,8 @@
+ #include <asm/smp_plat.h>
+ #include <asm/cpu.h>
++#include "../../arch/arm/mach-omap2/soc.h"
++
+ /* OPP tolerance in percentage */
+ #define       OPP_TOLERANCE   4
+@@ -246,6 +248,11 @@ static struct cpufreq_driver omap_driver = {
+ static int omap_cpufreq_probe(struct platform_device *pdev)
+ {
++      if (cpu_is_omap446x()) {
++              pr_err("%s: unsupported Silicon?\n", __func__);
++              return -EINVAL;
++      }
++
+       mpu_dev = get_cpu_device(0);
+       if (!mpu_dev) {
+               pr_warning("%s: unable to get the mpu device\n", __func__);
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/panda/0006-ARM-hw_breakpoint-Enable-debug-powerdown-only-if-sys.patch b/src/patches/kernel/omap/panda/0006-ARM-hw_breakpoint-Enable-debug-powerdown-only-if-sys.patch
new file mode 100644 (file)
index 0000000..fa64934
--- /dev/null
@@ -0,0 +1,122 @@
+From 76c1d8cdfa0967b04ca8168a77bb101d4ea71150 Mon Sep 17 00:00:00 2001
+From: Santosh Shilimkar <santosh.shilimkar@ti.com>
+Date: Mon, 18 Mar 2013 06:51:30 +0000
+Subject: [PATCH 6/6] ARM: hw_breakpoint: Enable debug powerdown only if
+ system supports 'has_ossr'
+
+On Friday 15 March 2013 10:30 AM, Will Deacon wrote:
+> On Thu, Mar 14, 2013 at 01:08:00PM +0530, Santosh Shilimkar wrote:
+>> Will,
+>
+> Hi guys,
+>
+> I'm out of the office at the moment and have really terrible connectivity,
+> so I can't do too much until next week. However, I don't think adding the
+> has_ossr check is the right fix for this problem.
+>
+>> On Wednesday 13 March 2013 05:59 PM, Lokesh Vutla wrote:
+>>> Hi Dietmar,
+>>> On Wednesday 13 March 2013 05:35 PM, Dietmar Eggemann wrote:
+>>>> On 13/03/13 06:52, Lokesh Vutla wrote:
+>>>>> Commit {9a6eb31 ARM: hw_breakpoint: Debug powerdown support for
+>>>>> self-hosted
+>>>>> debug} introduces debug powerdown support for self-hosted debug.
+>>>>> While merging the patch 'has_ossr' check was removed which
+>>>>> was needed for hardwares which doesn't support self-hosted debug.
+>>>>> Pandaboard (A9) is one such hardware and Dietmar's orginial
+>>>>> patch did mention this issue.
+>>>>> Without that check on Panda with CPUIDLE enabled, a flood of
+>>>>> below messages thrown.
+>>>>>
+>>>>> [ 3.597930] hw-breakpoint: CPU 0 failed to disable vector catch
+>>>>> [ 3.597991] hw-breakpoint: CPU 1 failed to disable vector catch
+>
+> Ok, so this means that we've taken an undefined instruction exception while
+> trying to reset the debug registers on the PM_EXIT path. Now, the code there
+> deals with CPUs that don't have the save/restore registers just fine, so
+> that shouldn't have anything to do with this problem, particularly if the
+> bit that is tripping us up is related to clearing vector catch.
+>
+Agree.
+
+> Furthermore, I was under the impression that hw_breakpoint did actually
+> work on panda, which implies that a cold boot *does* manage to reset the
+> registers (can you please confirm this by looking in your dmesg during
+> boot?). In that case, it seems as though a PM cycle is powering down a
+> bunch of debug logic that was powered up during boot, and then we trip over
+> because we can't access the register bank.
+>
+Actually it seems to be without PM. Thanks to analysis from Lokesh, the issue
+can be seen even with just suspend or cpu hotplug. So cold boot as such is
+fine.
+
+> The proper solution to this problem requires us to establish exactly what is
+> turning off the debug registers, and then having an OMAP PM notifier to
+> enable it again. Assuming this has always been the case, I expect hardware
+> debug across PM fails silently with older kernels.
+>
+This has been always the case it seems with CPU power cycle.
+After the CPU is power cycled, 'DBGAUTHSTATUS' reads '0xaa' rather
+than '0xaf' which means 'DBGEN = 0' and hence code fails to enable
+monitor mode. This happens on both secure and GP devices and it can not
+be patched since the secure code is ROM'ed. We didn't notice so far
+because hw_breakpoint support was not default enabled on OMAP till the
+multi-platform build.
+
+>> I was also wondering whether we should just warn once rather
+>> than continuous warnings in the notifier. Patch is end of the
+>> email.
+>
+> Could do, but I'd like to see a fix for the real issue before we simply hide
+> the warnings :)
+>
+Agree here too. As evident above, the feature won't work on OMAP4
+devices with PM and hence some solution is needed.
+
+What you think of below ?
+
+>From d74b4264f6a5967b0f7ada96aad77ab0ac30dbed Mon Sep 17 00:00:00 2001
+From: Santosh Shilimkar <santosh.shilimkar@ti.com>
+Date: Mon, 18 Mar 2013 11:59:04 +0530
+Subject: [PATCH] ARM: hw_breakpoints: Check for CPU debug availability before
+ enabling it
+
+CPU debug features like hardware break, watchpoints can be used only when
+the debug mode is enabled and available for non-secure mode.
+
+Hence check 'DBGAUTHSTATUS.DBGEN' before proceeding to enable the
+features.
+
+Thanks to Will for pointers and Lokesh for the analysis of the issue on
+OMAP4 where after a CPU power cycle, debug mode gets disabled.
+
+Cc: Will Deacon <Will.Deacon@arm.com>
+
+Tested-by: Lokesh Vutla <lokeshvutla@ti.com>
+Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
+---
+ arch/arm/kernel/hw_breakpoint.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c
+index 96093b7..683a7cf 100644
+--- a/arch/arm/kernel/hw_breakpoint.c
++++ b/arch/arm/kernel/hw_breakpoint.c
+@@ -930,6 +930,14 @@ static void reset_ctrl_regs(void *unused)
+       int i, raw_num_brps, err = 0, cpu = smp_processor_id();
+       u32 val;
++      /* Check if we have access to CPU debug features */
++      ARM_DBG_READ(c7, c14, 6, val);
++      if ((val & 0x1) == 0) {
++              pr_warn_once("CPU %d debug is unavailable\n", cpu);
++              cpumask_or(&debug_err_mask, &debug_err_mask, cpumask_of(cpu));
++              return;
++      }
++
+       /*
+        * v7 debug contains save and restore registers so that debug state
+        * can be maintained across low-power modes without leaving the debug
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/panda/0007-Revert-regulator-twl-Remove-TWL6030_FIXED_RESOURCE.patch b/src/patches/kernel/omap/panda/0007-Revert-regulator-twl-Remove-TWL6030_FIXED_RESOURCE.patch
new file mode 100644 (file)
index 0000000..0799d83
--- /dev/null
@@ -0,0 +1,39 @@
+From 42d8b74383b670412107c943efd2fec46aa04158 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Sat, 1 Jun 2013 16:32:46 -0500
+Subject: [PATCH 07/10] Revert "regulator: twl: Remove TWL6030_FIXED_RESOURCE"
+
+This reverts commit d1924519fe1dada0cfd9a228bf2ff1ea15840c84.
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ drivers/regulator/twl-regulator.c |   13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c
+index fb6e67d..7ce7edf 100644
+--- a/drivers/regulator/twl-regulator.c
++++ b/drivers/regulator/twl-regulator.c
+@@ -933,6 +933,19 @@ static const struct twlreg_info TWLFIXED_INFO_##label = { \
+               }, \
+       }
++#define TWL6030_FIXED_RESOURCE(label, offset, turnon_delay) \
++static struct twlreg_info TWLRES_INFO_##label = { \
++      .base = offset, \
++      .desc = { \
++              .name = #label, \
++              .id = TWL6030_REG_##label, \
++              .ops = &twl6030_fixed_resource, \
++              .type = REGULATOR_VOLTAGE, \
++              .owner = THIS_MODULE, \
++              .enable_time = turnon_delay, \
++              }, \
++      }
++
+ #define TWL6025_ADJUSTABLE_SMPS(label, offset) \
+ static const struct twlreg_info TWLSMPS_INFO_##label = { \
+       .base = offset, \
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/panda/0008-Revert-regulator-twl-Remove-another-unused-variable-.patch b/src/patches/kernel/omap/panda/0008-Revert-regulator-twl-Remove-another-unused-variable-.patch
new file mode 100644 (file)
index 0000000..4abbd05
--- /dev/null
@@ -0,0 +1,34 @@
+From 48e4598f1b8e9dd486d551b76c5f5021d0dc946d Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Sat, 1 Jun 2013 16:32:48 -0500
+Subject: [PATCH 08/10] Revert "regulator: twl: Remove another unused variable
+ warning"
+
+This reverts commit 029dd3cefa46ecdd879f9b4e2df3bdf4371cc22c.
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ drivers/regulator/twl-regulator.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c
+index 7ce7edf..124a2f2 100644
+--- a/drivers/regulator/twl-regulator.c
++++ b/drivers/regulator/twl-regulator.c
+@@ -633,6 +633,13 @@ static struct regulator_ops twl6030fixed_ops = {
+       .get_status     = twl6030reg_get_status,
+ };
++static struct regulator_ops twl6030_fixed_resource = {
++      .enable         = twl6030reg_enable,
++      .disable        = twl6030reg_disable,
++      .is_enabled     = twl6030reg_is_enabled,
++      .get_status     = twl6030reg_get_status,
++};
++
+ /*
+  * SMPS status and control
+  */
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/panda/0009-Revert-regulator-twl-Remove-references-to-the-twl403.patch b/src/patches/kernel/omap/panda/0009-Revert-regulator-twl-Remove-references-to-the-twl403.patch
new file mode 100644 (file)
index 0000000..27bc6ea
--- /dev/null
@@ -0,0 +1,28 @@
+From 76cc643690032d9789bbd17c9a3542cae4b0603e Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Sat, 1 Jun 2013 16:32:51 -0500
+Subject: [PATCH 09/10] Revert "regulator: twl: Remove references to the
+ twl4030 regulator"
+
+This reverts commit e76ab829cc2d8b6350a3f01fffb208df4d7d8c1b.
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ drivers/regulator/twl-regulator.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c
+index 124a2f2..5a18317 100644
+--- a/drivers/regulator/twl-regulator.c
++++ b/drivers/regulator/twl-regulator.c
+@@ -1021,6 +1021,7 @@ TWL6030_FIXED_LDO(VDAC, 0x64, 1800, 0);
+ TWL6030_FIXED_LDO(VUSB, 0x70, 3300, 0);
+ TWL6030_FIXED_LDO(V1V8, 0x16, 1800, 0);
+ TWL6030_FIXED_LDO(V2V1, 0x1c, 2100, 0);
++TWL6030_FIXED_RESOURCE(CLK32KG, 0x8C, 0);
+ TWL6025_ADJUSTABLE_SMPS(SMPS3, 0x34);
+ TWL6025_ADJUSTABLE_SMPS(SMPS4, 0x10);
+ TWL6025_ADJUSTABLE_SMPS(VIO, 0x16);
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/panda/0010-Revert-regulator-twl-Remove-references-to-32kHz-cloc.patch b/src/patches/kernel/omap/panda/0010-Revert-regulator-twl-Remove-references-to-32kHz-cloc.patch
new file mode 100644 (file)
index 0000000..ad18b29
--- /dev/null
@@ -0,0 +1,49 @@
+From ffdb3fad79cf70dcc943764f075215d6525435be Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Sat, 1 Jun 2013 16:32:54 -0500
+Subject: [PATCH 10/10] Revert "regulator: twl: Remove references to 32kHz
+ clock from DT bindings"
+
+This reverts commit 0e8e5c34cf1a8beaaf0a6a05c053592693bf8cb4.
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ Documentation/devicetree/bindings/regulator/twl-regulator.txt |    1 +
+ drivers/regulator/twl-regulator.c                             |    2 ++
+ 2 files changed, 3 insertions(+)
+
+diff --git a/Documentation/devicetree/bindings/regulator/twl-regulator.txt b/Documentation/devicetree/bindings/regulator/twl-regulator.txt
+index 658749b..0c3395d 100644
+--- a/Documentation/devicetree/bindings/regulator/twl-regulator.txt
++++ b/Documentation/devicetree/bindings/regulator/twl-regulator.txt
+@@ -15,6 +15,7 @@ For twl6030 regulators/LDOs
+   - "ti,twl6030-vusb" for VUSB LDO
+   - "ti,twl6030-v1v8" for V1V8 LDO
+   - "ti,twl6030-v2v1" for V2V1 LDO
++  - "ti,twl6030-clk32kg" for CLK32KG RESOURCE
+   - "ti,twl6030-vdd1" for VDD1 SMPS
+   - "ti,twl6030-vdd2" for VDD2 SMPS
+   - "ti,twl6030-vdd3" for VDD3 SMPS
+diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c
+index 5a18317..40f27bb 100644
+--- a/drivers/regulator/twl-regulator.c
++++ b/drivers/regulator/twl-regulator.c
+@@ -1054,6 +1054,7 @@ static u8 twl_get_smps_mult(void)
+ #define TWL6030_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6030, label)
+ #define TWL6025_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6025, label)
+ #define TWLFIXED_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLFIXED, label)
++#define TWLRES_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLRES, label)
+ #define TWLSMPS_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLSMPS, label)
+ static const struct of_device_id twl_of_match[] = {
+@@ -1101,6 +1102,7 @@ static const struct of_device_id twl_of_match[] = {
+       TWLFIXED_OF_MATCH("ti,twl6030-vusb", VUSB),
+       TWLFIXED_OF_MATCH("ti,twl6030-v1v8", V1V8),
+       TWLFIXED_OF_MATCH("ti,twl6030-v2v1", V2V1),
++      TWLRES_OF_MATCH("ti,twl6030-clk32kg", CLK32KG),
+       TWLSMPS_OF_MATCH("ti,twl6025-smps3", SMPS3),
+       TWLSMPS_OF_MATCH("ti,twl6025-smps4", SMPS4),
+       TWLSMPS_OF_MATCH("ti,twl6025-vio", VIO),
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/panda/0011-panda-spidev-setup-pinmux.patch b/src/patches/kernel/omap/panda/0011-panda-spidev-setup-pinmux.patch
new file mode 100644 (file)
index 0000000..da9fcda
--- /dev/null
@@ -0,0 +1,50 @@
+From 9f5066a898b77f2fe2b1f0946bb6afebe3d08f6d Mon Sep 17 00:00:00 2001
+From: Yann <yann.wanwanscappel@free.fr>
+Date: Sat, 8 Jun 2013 13:06:37 -0500
+Subject: [PATCH 7/7] panda: spidev: setup pinmux
+
+It works fine on my board, I've been able to perform data transfers using the spidev_test program provided in kernel documentation
+(shortcut between SIMO and SOMI to perform an hardware loopback). I also checked that CS0 and CS1 and CLK are properly driven using my scope.
+
+The clock is strangely configured as input, but it is also the case for omap3 beagle board, so I guess this is fine.
+
+Signed-off-by: Yann <yann.wanwanscappel@free.fr>
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/mach-omap2/board-omap4panda.c |   13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
+index 3563f86..10bb576 100644
+--- a/arch/arm/mach-omap2/board-omap4panda.c
++++ b/arch/arm/mach-omap2/board-omap4panda.c
+@@ -103,6 +103,16 @@ static struct platform_device leds_gpio = {
+       },
+ };
++static void __init omap4_panda_config_mcspi1_mux(void)
++{
++      /* NOTE: Clock pins need to be in input mode */
++      omap_mux_init_signal("mcspi1_clk", OMAP_PIN_INPUT);
++      omap_mux_init_signal("mcspi1_simo", OMAP_PIN_OUTPUT);
++      omap_mux_init_signal("mcspi1_somi", OMAP_PIN_INPUT_PULLUP);
++      omap_mux_init_signal("mcspi1_cs0", OMAP_PIN_OUTPUT);
++      omap_mux_init_signal("mcspi1_cs1", OMAP_PIN_OUTPUT);
++}
++
+ static struct spi_board_info panda_mcspi_board_info[] = {
+       /* spi 1.0 */
+       {
+@@ -472,7 +482,8 @@ static void __init omap4_panda_init(void)
+       omap4_ehci_init();
+       if (!strcmp(expboard_name, "spidev")) {
+       #if IS_ENABLED(CONFIG_SPI_SPIDEV)
+-              pr_info("Panda expansionboard: spidev: enabling spi3/spi4\n");
++              pr_info("Panda expansionboard: spidev: enabling spi1.0 and spi1.1\n");
++              omap4_panda_config_mcspi1_mux();
+               spi_register_board_info(panda_mcspi_board_info, ARRAY_SIZE(panda_mcspi_board_info));
+       #endif
+       }
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/omap/sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch b/src/patches/kernel/omap/sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch
new file mode 100644 (file)
index 0000000..8e8a08e
--- /dev/null
@@ -0,0 +1,78 @@
+From 6bce72b21600d9f52ae60d5bf80d00152eb75b50 Mon Sep 17 00:00:00 2001
+From: Steve Sakoman <steve@sakoman.com>
+Date: Tue, 19 Jan 2010 21:19:15 -0800
+Subject: [PATCH 1/2] OMAP: DSS2: add bootarg for selecting svideo
+
+ OMAP: DSS2: add bootarg for selecting svideo or composite for tv output
+ also add pal-16 and ntsc-16 omapfb.mode settings for 16bpp
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ drivers/video/omap2/dss/venc.c           |   22 ++++++++++++++++++++++
+ drivers/video/omap2/omapfb/omapfb-main.c |   10 +++++++++-
+ 2 files changed, 31 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c
+index 56efa3b..d46f7f8 100644
+--- a/drivers/video/omap2/dss/venc.c
++++ b/drivers/video/omap2/dss/venc.c
+@@ -86,6 +86,11 @@
+ #define VENC_OUTPUT_TEST                      0xC8
+ #define VENC_DAC_B__DAC_C                     0xC8
++static char *tv_connection;
++
++module_param_named(tvcable, tv_connection, charp, 0);
++MODULE_PARM_DESC(tvcable, "TV connection type (svideo, composite)");
++
+ struct venc_config {
+       u32 f_control;
+       u32 vidout_ctrl;
+@@ -465,6 +470,23 @@ static int venc_power_on(struct omap_dss_device *dssdev)
+       if (r)
+               goto err2;
++      /* Allow the TV output to be overriden */
++      if (tv_connection) {
++              if (strcmp(tv_connection, "svideo") == 0) {
++                      printk(KERN_INFO
++                              "omapdss: tv output is svideo.\n");
++                      dssdev->phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO;
++              } else if (strcmp(tv_connection, "composite") == 0) {
++                      printk(KERN_INFO
++                              "omapdss: tv output is composite.\n");
++                      dssdev->phy.venc.type = OMAP_DSS_VENC_TYPE_COMPOSITE;
++              } else {
++                      printk(KERN_INFO
++                              "omapdss: unsupported output type'%s'.\n",
++                              tv_connection);
++              }
++      }
++
+       return 0;
+ err2:
+diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
+index bc225e4..34d6679 100644
+--- a/drivers/video/omap2/omapfb/omapfb-main.c
++++ b/drivers/video/omap2/omapfb/omapfb-main.c
+@@ -2032,7 +2032,15 @@ static int omapfb_mode_to_timings(const char *mode_str,
+       int r;
+ #ifdef CONFIG_OMAP2_DSS_VENC
+-      if (strcmp(mode_str, "pal") == 0) {
++      if (strcmp(mode_str, "pal-16") == 0) {
++              *timings = omap_dss_pal_timings;
++              *bpp = 16;
++              return 0;
++      } else if (strcmp(mode_str, "ntsc-16") == 0) {
++              *timings = omap_dss_ntsc_timings;
++              *bpp = 16;
++              return 0;
++      } else if (strcmp(mode_str, "pal") == 0) {
+               *timings = omap_dss_pal_timings;
+               *bpp = 24;
+               return 0;
+-- 
+1.7.7.6
+
diff --git a/src/patches/kernel/omap/sakoman/0002-video-add-timings-for-hd720.patch b/src/patches/kernel/omap/sakoman/0002-video-add-timings-for-hd720.patch
new file mode 100644 (file)
index 0000000..1b936f5
--- /dev/null
@@ -0,0 +1,28 @@
+From 747de06d5cc69b2407684ba0455fff5c1d6af797 Mon Sep 17 00:00:00 2001
+From: Steve Sakoman <steve@sakoman.com>
+Date: Sat, 19 Dec 2009 06:52:43 -0800
+Subject: [PATCH 2/2] video: add timings for hd720
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ drivers/video/modedb.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
+index a9a907c..5b686de 100644
+--- a/drivers/video/modedb.c
++++ b/drivers/video/modedb.c
+@@ -103,6 +103,10 @@ static const struct fb_videomode modedb[] = {
+       { NULL, 70, 1024, 768, 13333, 144, 24, 29, 3, 136, 6, 0,
+               FB_VMODE_NONINTERLACED },
++      /* 1280x720 @ 60 Hz, 45 kHz hsync, CEA 681-E Format 4 */
++      { "hd720", 60, 1280, 720, 13468, 220, 110, 20, 5, 40, 5, 0,
++              FB_VMODE_NONINTERLACED },
++
+       /* 1280x1024 @ 87 Hz interlaced, 51 kHz hsync */
+       { NULL, 87, 1280, 1024, 12500, 56, 16, 128, 1, 216, 12, 0,
+               FB_VMODE_INTERLACED },
+-- 
+1.7.7.6
+
diff --git a/src/patches/kernel/omap/sgx/0001-arm-Export-cache-flush-management-symbols-when-MULTI.patch b/src/patches/kernel/omap/sgx/0001-arm-Export-cache-flush-management-symbols-when-MULTI.patch
new file mode 100644 (file)
index 0000000..1ca1e70
--- /dev/null
@@ -0,0 +1,34 @@
+From 29885f2f3d700341d322274db6ad085e601c0994 Mon Sep 17 00:00:00 2001
+From: Pantelis Antoniou <panto@antoniou-consulting.com>
+Date: Fri, 4 Jan 2013 00:32:33 +0200
+Subject: [PATCH 3/3] arm: Export cache flush management symbols when
+ !MULTI_CACHE
+
+When compiling a kernel without CONFIG_MULTI_CACHE enabled the
+dma access functions end up not being exported. Fix it.
+
+Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com>
+---
+ arch/arm/kernel/setup.c |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
+index da1d1aa..dcb678c 100644
+--- a/arch/arm/kernel/setup.c
++++ b/arch/arm/kernel/setup.c
+@@ -923,3 +923,12 @@ const struct seq_operations cpuinfo_op = {
+       .stop   = c_stop,
+       .show   = c_show
+ };
++
++/* export the cache management functions */
++#ifndef MULTI_CACHE
++
++EXPORT_SYMBOL(__glue(_CACHE,_dma_map_area));
++EXPORT_SYMBOL(__glue(_CACHE,_dma_unmap_area));
++EXPORT_SYMBOL(__glue(_CACHE,_dma_flush_range));
++
++#endif
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/utilite/linux-3.10-compulab-utilite-support.patch b/src/patches/kernel/utilite/linux-3.10-compulab-utilite-support.patch
new file mode 100644 (file)
index 0000000..3d7f676
--- /dev/null
@@ -0,0 +1,96 @@
+Add initial support for cm-fx6 module.
+
+cm-fx6 is a module based on mx6q SoC with the following features:
+- Up to 4GB of DDR3
+- 1 LCD/DVI output port
+- 1 HDMI output port
+- 2 LVDS LCD ports
+- Gigabit Ethernet
+- Analog Audio
+- CAN
+- SATA
+- NAND
+- PCIE
+
+This patch allows to boot up the module, configures the serial console,
+the Ethernet adapter and the heartbeat led.
+
+cm-fx6 is embedded inside the Utilite computer.
+
+Signed-off-by: Valentin Raevsky <valentin@compulab.co.il>
+Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
+---
+
+Shawn, can this still be applied for 3.13 ?
+
+diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
+index f0895c5..7521a34 100644
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -117,6 +117,7 @@ dtb-$(CONFIG_ARCH_MXC) += \
+       imx6dl-sabresd.dtb \
+       imx6dl-wandboard.dtb \
+       imx6q-arm2.dtb \
++      imx6q-cm-fx6.dtb \
+       imx6q-sabreauto.dtb \
+       imx6q-sabrelite.dtb \
+       imx6q-sabresd.dtb \
+diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts
+new file mode 100644
+index 0000000..2419751
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts
+@@ -0,0 +1,53 @@
++/*
++ * Copyright 2013 CompuLab Ltd.
++ *
++ * Author: Valentin Raevsky <valentin@compulab.co.il>
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++/dts-v1/;
++#include "imx6q.dtsi"
++
++/ {
++      model = "CompuLab CM-FX6";
++      compatible = "compulab,cm-fx6", "fsl,imx6q";
++
++      memory {
++              reg = <0x10000000 0x80000000>;
++      };
++
++      leds {
++              compatible = "gpio-leds";
++
++              heartbeat-led {
++                      label = "Heartbeat";
++                      gpios = <&gpio2 31 0>;
++                      linux,default-trigger = "heartbeat";
++              };
++      };
++};
++
++&fec {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_enet_1>;
++      phy-mode = "rgmii";
++      status = "okay";
++};
++
++&gpmi {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_gpmi_nand_1>;
++      status = "okay";
++};
++
++&uart4 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_uart4_1>;
++      status = "okay";
++};
diff --git a/src/patches/kernel/wandboard/dts/0001-imx6qdl-wandboard-dts-backport.patch b/src/patches/kernel/wandboard/dts/0001-imx6qdl-wandboard-dts-backport.patch
new file mode 100644 (file)
index 0000000..e1c6bea
--- /dev/null
@@ -0,0 +1,6354 @@
+commit a97d4c27dd2eef64af9e5d778d05a8915cba6822
+Author: Stefan Schantl <stefan.schantl@ipfire.org>
+Date:   Mon Nov 18 21:34:31 2013 +0100
+
+    Backport dts for imx6qdl.
+
+diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
+index f0895c5..a3d2869 100644
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -120,7 +120,8 @@ dtb-$(CONFIG_ARCH_MXC) += \
+       imx6q-sabreauto.dtb \
+       imx6q-sabrelite.dtb \
+       imx6q-sabresd.dtb \
+-      imx6q-sbc6x.dtb
++      imx6q-sbc6x.dtb \
++      imx6q-wandboard.dtb
+ dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
+       imx23-olinuxino.dtb \
+       imx23-stmp378x_devb.dtb \
+diff --git a/arch/arm/boot/dts/imx6dl-pinfunc.h b/arch/arm/boot/dts/imx6dl-pinfunc.h
+index 9aab950..b81a7a4 100644
+--- a/arch/arm/boot/dts/imx6dl-pinfunc.h
++++ b/arch/arm/boot/dts/imx6dl-pinfunc.h
+@@ -14,1072 +14,1076 @@
+  * The pin function ID is a tuple of
+  * <mux_reg conf_reg input_reg mux_mode input_val>
+  */
+-#define MX6DL_PAD_CSI0_DAT10__IPU1_CSI0_DATA10     0x04c 0x360 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT10__AUD3_RXC             0x04c 0x360 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT10__ECSPI2_MISO          0x04c 0x360 0x7f8 0x2 0x0
+-#define MX6DL_PAD_CSI0_DAT10__UART1_TX_DATA        0x04c 0x360 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT10__UART1_RX_DATA        0x04c 0x360 0x8fc 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT10__GPIO5_IO28           0x04c 0x360 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT10__ARM_TRACE07          0x04c 0x360 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT11__IPU1_CSI0_DATA11     0x050 0x364 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT11__AUD3_RXFS            0x050 0x364 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT11__ECSPI2_SS0           0x050 0x364 0x800 0x2 0x0
+-#define MX6DL_PAD_CSI0_DAT11__UART1_RX_DATA        0x050 0x364 0x8fc 0x3 0x1
+-#define MX6DL_PAD_CSI0_DAT11__UART1_TX_DATA        0x050 0x364 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT11__GPIO5_IO29           0x050 0x364 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT11__ARM_TRACE08          0x050 0x364 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12     0x054 0x368 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT12__EIM_DATA08           0x054 0x368 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT12__UART4_TX_DATA        0x054 0x368 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT12__UART4_RX_DATA        0x054 0x368 0x914 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT12__GPIO5_IO30           0x054 0x368 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT12__ARM_TRACE09          0x054 0x368 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13     0x058 0x36c 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT13__EIM_DATA09           0x058 0x36c 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT13__UART4_RX_DATA        0x058 0x36c 0x914 0x3 0x1
+-#define MX6DL_PAD_CSI0_DAT13__UART4_TX_DATA        0x058 0x36c 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT13__GPIO5_IO31           0x058 0x36c 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT13__ARM_TRACE10          0x058 0x36c 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14     0x05c 0x370 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT14__EIM_DATA10           0x05c 0x370 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT14__UART5_TX_DATA        0x05c 0x370 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT14__UART5_RX_DATA        0x05c 0x370 0x91c 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT14__GPIO6_IO00           0x05c 0x370 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT14__ARM_TRACE11          0x05c 0x370 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15     0x060 0x374 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT15__EIM_DATA11           0x060 0x374 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT15__UART5_RX_DATA        0x060 0x374 0x91c 0x3 0x1
+-#define MX6DL_PAD_CSI0_DAT15__UART5_TX_DATA        0x060 0x374 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT15__GPIO6_IO01           0x060 0x374 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT15__ARM_TRACE12          0x060 0x374 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16     0x064 0x378 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT16__EIM_DATA12           0x064 0x378 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT16__UART4_RTS_B          0x064 0x378 0x910 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT16__UART4_CTS_B          0x064 0x378 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT16__GPIO6_IO02           0x064 0x378 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT16__ARM_TRACE13          0x064 0x378 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17     0x068 0x37c 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT17__EIM_DATA13           0x068 0x37c 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT17__UART4_CTS_B          0x068 0x37c 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT17__UART4_RTS_B          0x068 0x37c 0x910 0x3 0x1
+-#define MX6DL_PAD_CSI0_DAT17__GPIO6_IO03           0x068 0x37c 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT17__ARM_TRACE14          0x068 0x37c 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18     0x06c 0x380 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT18__EIM_DATA14           0x06c 0x380 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT18__UART5_RTS_B          0x06c 0x380 0x918 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT18__UART5_CTS_B          0x06c 0x380 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT18__GPIO6_IO04           0x06c 0x380 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT18__ARM_TRACE15          0x06c 0x380 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19     0x070 0x384 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT19__EIM_DATA15           0x070 0x384 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT19__UART5_CTS_B          0x070 0x384 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT19__UART5_RTS_B          0x070 0x384 0x918 0x3 0x1
+-#define MX6DL_PAD_CSI0_DAT19__GPIO6_IO05           0x070 0x384 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT4__IPU1_CSI0_DATA04      0x074 0x388 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT4__EIM_DATA02            0x074 0x388 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT4__ECSPI1_SCLK           0x074 0x388 0x7d8 0x2 0x0
+-#define MX6DL_PAD_CSI0_DAT4__KEY_COL5              0x074 0x388 0x8c0 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT4__AUD3_TXC              0x074 0x388 0x000 0x4 0x0
+-#define MX6DL_PAD_CSI0_DAT4__GPIO5_IO22            0x074 0x388 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT4__ARM_TRACE01           0x074 0x388 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT5__IPU1_CSI0_DATA05      0x078 0x38c 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT5__EIM_DATA03            0x078 0x38c 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT5__ECSPI1_MOSI           0x078 0x38c 0x7e0 0x2 0x0
+-#define MX6DL_PAD_CSI0_DAT5__KEY_ROW5              0x078 0x38c 0x8cc 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT5__AUD3_TXD              0x078 0x38c 0x000 0x4 0x0
+-#define MX6DL_PAD_CSI0_DAT5__GPIO5_IO23            0x078 0x38c 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT5__ARM_TRACE02           0x078 0x38c 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT6__IPU1_CSI0_DATA06      0x07c 0x390 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT6__EIM_DATA04            0x07c 0x390 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT6__ECSPI1_MISO           0x07c 0x390 0x7dc 0x2 0x0
+-#define MX6DL_PAD_CSI0_DAT6__KEY_COL6              0x07c 0x390 0x8c4 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT6__AUD3_TXFS             0x07c 0x390 0x000 0x4 0x0
+-#define MX6DL_PAD_CSI0_DAT6__GPIO5_IO24            0x07c 0x390 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT6__ARM_TRACE03           0x07c 0x390 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT7__IPU1_CSI0_DATA07      0x080 0x394 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT7__EIM_DATA05            0x080 0x394 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT7__ECSPI1_SS0            0x080 0x394 0x7e4 0x2 0x0
+-#define MX6DL_PAD_CSI0_DAT7__KEY_ROW6              0x080 0x394 0x8d0 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT7__AUD3_RXD              0x080 0x394 0x000 0x4 0x0
+-#define MX6DL_PAD_CSI0_DAT7__GPIO5_IO25            0x080 0x394 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT7__ARM_TRACE04           0x080 0x394 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT8__IPU1_CSI0_DATA08      0x084 0x398 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT8__EIM_DATA06            0x084 0x398 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT8__ECSPI2_SCLK           0x084 0x398 0x7f4 0x2 0x0
+-#define MX6DL_PAD_CSI0_DAT8__KEY_COL7              0x084 0x398 0x8c8 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT8__I2C1_SDA              0x084 0x398 0x86c 0x4 0x0
+-#define MX6DL_PAD_CSI0_DAT8__GPIO5_IO26            0x084 0x398 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT8__ARM_TRACE05           0x084 0x398 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DAT9__IPU1_CSI0_DATA09      0x088 0x39c 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DAT9__EIM_DATA07            0x088 0x39c 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DAT9__ECSPI2_MOSI           0x088 0x39c 0x7fc 0x2 0x0
+-#define MX6DL_PAD_CSI0_DAT9__KEY_ROW7              0x088 0x39c 0x8d4 0x3 0x0
+-#define MX6DL_PAD_CSI0_DAT9__I2C1_SCL              0x088 0x39c 0x868 0x4 0x0
+-#define MX6DL_PAD_CSI0_DAT9__GPIO5_IO27            0x088 0x39c 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DAT9__ARM_TRACE06           0x088 0x39c 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_DATA_EN__IPU1_CSI0_DATA_EN  0x08c 0x3a0 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_DATA_EN__EIM_DATA00         0x08c 0x3a0 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_DATA_EN__GPIO5_IO20         0x08c 0x3a0 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_DATA_EN__ARM_TRACE_CLK      0x08c 0x3a0 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC       0x090 0x3a4 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_MCLK__CCM_CLKO1             0x090 0x3a4 0x000 0x3 0x0
+-#define MX6DL_PAD_CSI0_MCLK__GPIO5_IO19            0x090 0x3a4 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_MCLK__ARM_TRACE_CTL         0x090 0x3a4 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK    0x094 0x3a8 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_PIXCLK__GPIO5_IO18          0x094 0x3a8 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_PIXCLK__ARM_EVENTO          0x094 0x3a8 0x000 0x7 0x0
+-#define MX6DL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC      0x098 0x3ac 0x000 0x0 0x0
+-#define MX6DL_PAD_CSI0_VSYNC__EIM_DATA01           0x098 0x3ac 0x000 0x1 0x0
+-#define MX6DL_PAD_CSI0_VSYNC__GPIO5_IO21           0x098 0x3ac 0x000 0x5 0x0
+-#define MX6DL_PAD_CSI0_VSYNC__ARM_TRACE00          0x098 0x3ac 0x000 0x7 0x0
+-#define MX6DL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK  0x09c 0x3b0 0x000 0x0 0x0
+-#define MX6DL_PAD_DI0_DISP_CLK__LCD_CLK            0x09c 0x3b0 0x000 0x1 0x0
+-#define MX6DL_PAD_DI0_DISP_CLK__GPIO4_IO16         0x09c 0x3b0 0x000 0x5 0x0
+-#define MX6DL_PAD_DI0_DISP_CLK__LCD_WR_RWN         0x09c 0x3b0 0x000 0x8 0x0
+-#define MX6DL_PAD_DI0_PIN15__IPU1_DI0_PIN15        0x0a0 0x3b4 0x000 0x0 0x0
+-#define MX6DL_PAD_DI0_PIN15__LCD_ENABLE            0x0a0 0x3b4 0x000 0x1 0x0
+-#define MX6DL_PAD_DI0_PIN15__AUD6_TXC              0x0a0 0x3b4 0x000 0x2 0x0
+-#define MX6DL_PAD_DI0_PIN15__GPIO4_IO17            0x0a0 0x3b4 0x000 0x5 0x0
+-#define MX6DL_PAD_DI0_PIN15__LCD_RD_E              0x0a0 0x3b4 0x000 0x8 0x0
+-#define MX6DL_PAD_DI0_PIN2__IPU1_DI0_PIN02         0x0a4 0x3b8 0x000 0x0 0x0
+-#define MX6DL_PAD_DI0_PIN2__LCD_HSYNC              0x0a4 0x3b8 0x8d8 0x1 0x0
+-#define MX6DL_PAD_DI0_PIN2__AUD6_TXD               0x0a4 0x3b8 0x000 0x2 0x0
+-#define MX6DL_PAD_DI0_PIN2__GPIO4_IO18             0x0a4 0x3b8 0x000 0x5 0x0
+-#define MX6DL_PAD_DI0_PIN2__LCD_RS                 0x0a4 0x3b8 0x000 0x8 0x0
+-#define MX6DL_PAD_DI0_PIN3__IPU1_DI0_PIN03         0x0a8 0x3bc 0x000 0x0 0x0
+-#define MX6DL_PAD_DI0_PIN3__LCD_VSYNC              0x0a8 0x3bc 0x000 0x1 0x0
+-#define MX6DL_PAD_DI0_PIN3__AUD6_TXFS              0x0a8 0x3bc 0x000 0x2 0x0
+-#define MX6DL_PAD_DI0_PIN3__GPIO4_IO19             0x0a8 0x3bc 0x000 0x5 0x0
+-#define MX6DL_PAD_DI0_PIN3__LCD_CS                 0x0a8 0x3bc 0x000 0x8 0x0
+-#define MX6DL_PAD_DI0_PIN4__IPU1_DI0_PIN04         0x0ac 0x3c0 0x000 0x0 0x0
+-#define MX6DL_PAD_DI0_PIN4__LCD_BUSY               0x0ac 0x3c0 0x8d8 0x1 0x1
+-#define MX6DL_PAD_DI0_PIN4__AUD6_RXD               0x0ac 0x3c0 0x000 0x2 0x0
+-#define MX6DL_PAD_DI0_PIN4__SD1_WP                 0x0ac 0x3c0 0x92c 0x3 0x0
+-#define MX6DL_PAD_DI0_PIN4__GPIO4_IO20             0x0ac 0x3c0 0x000 0x5 0x0
+-#define MX6DL_PAD_DI0_PIN4__LCD_RESET              0x0ac 0x3c0 0x000 0x8 0x0
+-#define MX6DL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00    0x0b0 0x3c4 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT0__LCD_DATA00           0x0b0 0x3c4 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT0__ECSPI3_SCLK          0x0b0 0x3c4 0x000 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT0__GPIO4_IO21           0x0b0 0x3c4 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01    0x0b4 0x3c8 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT1__LCD_DATA01           0x0b4 0x3c8 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT1__ECSPI3_MOSI          0x0b4 0x3c8 0x000 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT1__GPIO4_IO22           0x0b4 0x3c8 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10   0x0b8 0x3cc 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT10__LCD_DATA10          0x0b8 0x3cc 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT10__GPIO4_IO31          0x0b8 0x3cc 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11   0x0bc 0x3d0 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT11__LCD_DATA11          0x0bc 0x3d0 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT11__GPIO5_IO05          0x0bc 0x3d0 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12   0x0c0 0x3d4 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT12__LCD_DATA12          0x0c0 0x3d4 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT12__GPIO5_IO06          0x0c0 0x3d4 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13   0x0c4 0x3d8 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT13__LCD_DATA13          0x0c4 0x3d8 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT13__AUD5_RXFS           0x0c4 0x3d8 0x7bc 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT13__GPIO5_IO07          0x0c4 0x3d8 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14   0x0c8 0x3dc 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT14__LCD_DATA14          0x0c8 0x3dc 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT14__AUD5_RXC            0x0c8 0x3dc 0x7b8 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT14__GPIO5_IO08          0x0c8 0x3dc 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15   0x0cc 0x3e0 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT15__LCD_DATA15          0x0cc 0x3e0 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT15__ECSPI1_SS1          0x0cc 0x3e0 0x7e8 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT15__ECSPI2_SS1          0x0cc 0x3e0 0x804 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT15__GPIO5_IO09          0x0cc 0x3e0 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16   0x0d0 0x3e4 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT16__LCD_DATA16          0x0d0 0x3e4 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT16__ECSPI2_MOSI         0x0d0 0x3e4 0x7fc 0x2 0x1
+-#define MX6DL_PAD_DISP0_DAT16__AUD5_TXC            0x0d0 0x3e4 0x7c0 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT16__SDMA_EXT_EVENT0     0x0d0 0x3e4 0x8e8 0x4 0x0
+-#define MX6DL_PAD_DISP0_DAT16__GPIO5_IO10          0x0d0 0x3e4 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17   0x0d4 0x3e8 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT17__LCD_DATA17          0x0d4 0x3e8 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT17__ECSPI2_MISO         0x0d4 0x3e8 0x7f8 0x2 0x1
+-#define MX6DL_PAD_DISP0_DAT17__AUD5_TXD            0x0d4 0x3e8 0x7b4 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT17__SDMA_EXT_EVENT1     0x0d4 0x3e8 0x8ec 0x4 0x0
+-#define MX6DL_PAD_DISP0_DAT17__GPIO5_IO11          0x0d4 0x3e8 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18   0x0d8 0x3ec 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT18__LCD_DATA18          0x0d8 0x3ec 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT18__ECSPI2_SS0          0x0d8 0x3ec 0x800 0x2 0x1
+-#define MX6DL_PAD_DISP0_DAT18__AUD5_TXFS           0x0d8 0x3ec 0x7c4 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT18__AUD4_RXFS           0x0d8 0x3ec 0x7a4 0x4 0x0
+-#define MX6DL_PAD_DISP0_DAT18__GPIO5_IO12          0x0d8 0x3ec 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT18__EIM_CS2_B           0x0d8 0x3ec 0x000 0x7 0x0
+-#define MX6DL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19   0x0dc 0x3f0 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT19__LCD_DATA19          0x0dc 0x3f0 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT19__ECSPI2_SCLK         0x0dc 0x3f0 0x7f4 0x2 0x1
+-#define MX6DL_PAD_DISP0_DAT19__AUD5_RXD            0x0dc 0x3f0 0x7b0 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT19__AUD4_RXC            0x0dc 0x3f0 0x7a0 0x4 0x0
+-#define MX6DL_PAD_DISP0_DAT19__GPIO5_IO13          0x0dc 0x3f0 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT19__EIM_CS3_B           0x0dc 0x3f0 0x000 0x7 0x0
+-#define MX6DL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02    0x0e0 0x3f4 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT2__LCD_DATA02           0x0e0 0x3f4 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT2__ECSPI3_MISO          0x0e0 0x3f4 0x000 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT2__GPIO4_IO23           0x0e0 0x3f4 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20   0x0e4 0x3f8 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT20__LCD_DATA20          0x0e4 0x3f8 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT20__ECSPI1_SCLK         0x0e4 0x3f8 0x7d8 0x2 0x1
+-#define MX6DL_PAD_DISP0_DAT20__AUD4_TXC            0x0e4 0x3f8 0x7a8 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT20__GPIO5_IO14          0x0e4 0x3f8 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21   0x0e8 0x3fc 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT21__LCD_DATA21          0x0e8 0x3fc 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT21__ECSPI1_MOSI         0x0e8 0x3fc 0x7e0 0x2 0x1
+-#define MX6DL_PAD_DISP0_DAT21__AUD4_TXD            0x0e8 0x3fc 0x79c 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT21__GPIO5_IO15          0x0e8 0x3fc 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22   0x0ec 0x400 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT22__LCD_DATA22          0x0ec 0x400 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT22__ECSPI1_MISO         0x0ec 0x400 0x7dc 0x2 0x1
+-#define MX6DL_PAD_DISP0_DAT22__AUD4_TXFS           0x0ec 0x400 0x7ac 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT22__GPIO5_IO16          0x0ec 0x400 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23   0x0f0 0x404 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT23__LCD_DATA23          0x0f0 0x404 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT23__ECSPI1_SS0          0x0f0 0x404 0x7e4 0x2 0x1
+-#define MX6DL_PAD_DISP0_DAT23__AUD4_RXD            0x0f0 0x404 0x798 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT23__GPIO5_IO17          0x0f0 0x404 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03    0x0f4 0x408 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT3__LCD_DATA03           0x0f4 0x408 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT3__ECSPI3_SS0           0x0f4 0x408 0x000 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT3__GPIO4_IO24           0x0f4 0x408 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04    0x0f8 0x40c 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT4__LCD_DATA04           0x0f8 0x40c 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT4__ECSPI3_SS1           0x0f8 0x40c 0x000 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT4__GPIO4_IO25           0x0f8 0x40c 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05    0x0fc 0x410 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT5__LCD_DATA05           0x0fc 0x410 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT5__ECSPI3_SS2           0x0fc 0x410 0x000 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT5__AUD6_RXFS            0x0fc 0x410 0x000 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT5__GPIO4_IO26           0x0fc 0x410 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06    0x100 0x414 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT6__LCD_DATA06           0x100 0x414 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT6__ECSPI3_SS3           0x100 0x414 0x000 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT6__AUD6_RXC             0x100 0x414 0x000 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT6__GPIO4_IO27           0x100 0x414 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07    0x104 0x418 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT7__LCD_DATA07           0x104 0x418 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT7__ECSPI3_RDY           0x104 0x418 0x000 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT7__GPIO4_IO28           0x104 0x418 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08    0x108 0x41c 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT8__LCD_DATA08           0x108 0x41c 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT8__PWM1_OUT             0x108 0x41c 0x000 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT8__WDOG1_B              0x108 0x41c 0x000 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT8__GPIO4_IO29           0x108 0x41c 0x000 0x5 0x0
+-#define MX6DL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09    0x10c 0x420 0x000 0x0 0x0
+-#define MX6DL_PAD_DISP0_DAT9__LCD_DATA09           0x10c 0x420 0x000 0x1 0x0
+-#define MX6DL_PAD_DISP0_DAT9__PWM2_OUT             0x10c 0x420 0x000 0x2 0x0
+-#define MX6DL_PAD_DISP0_DAT9__WDOG2_B              0x10c 0x420 0x000 0x3 0x0
+-#define MX6DL_PAD_DISP0_DAT9__GPIO4_IO30           0x10c 0x420 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A16__EIM_ADDR16              0x110 0x4e0 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_A16__IPU1_DI1_DISP_CLK       0x110 0x4e0 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_A16__IPU1_CSI1_PIXCLK        0x110 0x4e0 0x8b8 0x2 0x0
+-#define MX6DL_PAD_EIM_A16__GPIO2_IO22              0x110 0x4e0 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A16__SRC_BOOT_CFG16          0x110 0x4e0 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_A16__EPDC_DATA00             0x110 0x4e0 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_A17__EIM_ADDR17              0x114 0x4e4 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_A17__IPU1_DISP1_DATA12       0x114 0x4e4 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_A17__IPU1_CSI1_DATA12        0x114 0x4e4 0x890 0x2 0x0
+-#define MX6DL_PAD_EIM_A17__GPIO2_IO21              0x114 0x4e4 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A17__SRC_BOOT_CFG17          0x114 0x4e4 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_A17__EPDC_PWR_STAT           0x114 0x4e4 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_A18__EIM_ADDR18              0x118 0x4e8 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_A18__IPU1_DISP1_DATA13       0x118 0x4e8 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_A18__IPU1_CSI1_DATA13        0x118 0x4e8 0x894 0x2 0x0
+-#define MX6DL_PAD_EIM_A18__GPIO2_IO20              0x118 0x4e8 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A18__SRC_BOOT_CFG18          0x118 0x4e8 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_A18__EPDC_PWR_CTRL0          0x118 0x4e8 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_A19__EIM_ADDR19              0x11c 0x4ec 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_A19__IPU1_DISP1_DATA14       0x11c 0x4ec 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_A19__IPU1_CSI1_DATA14        0x11c 0x4ec 0x898 0x2 0x0
+-#define MX6DL_PAD_EIM_A19__GPIO2_IO19              0x11c 0x4ec 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A19__SRC_BOOT_CFG19          0x11c 0x4ec 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_A19__EPDC_PWR_CTRL1          0x11c 0x4ec 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_A20__EIM_ADDR20              0x120 0x4f0 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_A20__IPU1_DISP1_DATA15       0x120 0x4f0 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_A20__IPU1_CSI1_DATA15        0x120 0x4f0 0x89c 0x2 0x0
+-#define MX6DL_PAD_EIM_A20__GPIO2_IO18              0x120 0x4f0 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A20__SRC_BOOT_CFG20          0x120 0x4f0 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_A20__EPDC_PWR_CTRL2          0x120 0x4f0 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_A21__EIM_ADDR21              0x124 0x4f4 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_A21__IPU1_DISP1_DATA16       0x124 0x4f4 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_A21__IPU1_CSI1_DATA16        0x124 0x4f4 0x8a0 0x2 0x0
+-#define MX6DL_PAD_EIM_A21__GPIO2_IO17              0x124 0x4f4 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A21__SRC_BOOT_CFG21          0x124 0x4f4 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_A21__EPDC_GDCLK              0x124 0x4f4 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_A22__EIM_ADDR22              0x128 0x4f8 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_A22__IPU1_DISP1_DATA17       0x128 0x4f8 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_A22__IPU1_CSI1_DATA17        0x128 0x4f8 0x8a4 0x2 0x0
+-#define MX6DL_PAD_EIM_A22__GPIO2_IO16              0x128 0x4f8 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A22__SRC_BOOT_CFG22          0x128 0x4f8 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_A22__EPDC_GDSP               0x128 0x4f8 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_A23__EIM_ADDR23              0x12c 0x4fc 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_A23__IPU1_DISP1_DATA18       0x12c 0x4fc 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_A23__IPU1_CSI1_DATA18        0x12c 0x4fc 0x8a8 0x2 0x0
+-#define MX6DL_PAD_EIM_A23__IPU1_SISG3              0x12c 0x4fc 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_A23__GPIO6_IO06              0x12c 0x4fc 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A23__SRC_BOOT_CFG23          0x12c 0x4fc 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_A23__EPDC_GDOE               0x12c 0x4fc 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_A24__EIM_ADDR24              0x130 0x500 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_A24__IPU1_DISP1_DATA19       0x130 0x500 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_A24__IPU1_CSI1_DATA19        0x130 0x500 0x8ac 0x2 0x0
+-#define MX6DL_PAD_EIM_A24__IPU1_SISG2              0x130 0x500 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_A24__GPIO5_IO04              0x130 0x500 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A24__SRC_BOOT_CFG24          0x130 0x500 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_A24__EPDC_GDRL               0x130 0x500 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_A25__EIM_ADDR25              0x134 0x504 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_A25__ECSPI4_SS1              0x134 0x504 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_A25__ECSPI2_RDY              0x134 0x504 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_A25__IPU1_DI1_PIN12          0x134 0x504 0x000 0x3 0x0
+-#define MX6DL_PAD_EIM_A25__IPU1_DI0_D1_CS          0x134 0x504 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_A25__GPIO5_IO02              0x134 0x504 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_A25__HDMI_TX_CEC_LINE        0x134 0x504 0x85c 0x6 0x0
+-#define MX6DL_PAD_EIM_A25__EPDC_DATA15             0x134 0x504 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_A25__EIM_ACLK_FREERUN        0x134 0x504 0x000 0x9 0x0
+-#define MX6DL_PAD_EIM_BCLK__EIM_BCLK               0x138 0x508 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_BCLK__IPU1_DI1_PIN16         0x138 0x508 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_BCLK__GPIO6_IO31             0x138 0x508 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_BCLK__EPDC_SDCE9             0x138 0x508 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_CS0__EIM_CS0_B               0x13c 0x50c 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_CS0__IPU1_DI1_PIN05          0x13c 0x50c 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_CS0__ECSPI2_SCLK             0x13c 0x50c 0x7f4 0x2 0x2
+-#define MX6DL_PAD_EIM_CS0__GPIO2_IO23              0x13c 0x50c 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_CS0__EPDC_DATA06             0x13c 0x50c 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_CS1__EIM_CS1_B               0x140 0x510 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_CS1__IPU1_DI1_PIN06          0x140 0x510 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_CS1__ECSPI2_MOSI             0x140 0x510 0x7fc 0x2 0x2
+-#define MX6DL_PAD_EIM_CS1__GPIO2_IO24              0x140 0x510 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_CS1__EPDC_DATA08             0x140 0x510 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D16__EIM_DATA16              0x144 0x514 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D16__ECSPI1_SCLK             0x144 0x514 0x7d8 0x1 0x2
+-#define MX6DL_PAD_EIM_D16__IPU1_DI0_PIN05          0x144 0x514 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D16__IPU1_CSI1_DATA18        0x144 0x514 0x8a8 0x3 0x1
+-#define MX6DL_PAD_EIM_D16__HDMI_TX_DDC_SDA         0x144 0x514 0x864 0x4 0x0
+-#define MX6DL_PAD_EIM_D16__GPIO3_IO16              0x144 0x514 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D16__I2C2_SDA                0x144 0x514 0x874 0x6 0x0
+-#define MX6DL_PAD_EIM_D16__EPDC_DATA10             0x144 0x514 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D17__EIM_DATA17              0x148 0x518 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D17__ECSPI1_MISO             0x148 0x518 0x7dc 0x1 0x2
+-#define MX6DL_PAD_EIM_D17__IPU1_DI0_PIN06          0x148 0x518 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D17__IPU1_CSI1_PIXCLK        0x148 0x518 0x8b8 0x3 0x1
+-#define MX6DL_PAD_EIM_D17__DCIC1_OUT               0x148 0x518 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D17__GPIO3_IO17              0x148 0x518 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D17__I2C3_SCL                0x148 0x518 0x878 0x6 0x0
+-#define MX6DL_PAD_EIM_D17__EPDC_VCOM0              0x148 0x518 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D18__EIM_DATA18              0x14c 0x51c 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D18__ECSPI1_MOSI             0x14c 0x51c 0x7e0 0x1 0x2
+-#define MX6DL_PAD_EIM_D18__IPU1_DI0_PIN07          0x14c 0x51c 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D18__IPU1_CSI1_DATA17        0x14c 0x51c 0x8a4 0x3 0x1
+-#define MX6DL_PAD_EIM_D18__IPU1_DI1_D0_CS          0x14c 0x51c 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D18__GPIO3_IO18              0x14c 0x51c 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D18__I2C3_SDA                0x14c 0x51c 0x87c 0x6 0x0
+-#define MX6DL_PAD_EIM_D18__EPDC_VCOM1              0x14c 0x51c 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D19__EIM_DATA19              0x150 0x520 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D19__ECSPI1_SS1              0x150 0x520 0x7e8 0x1 0x1
+-#define MX6DL_PAD_EIM_D19__IPU1_DI0_PIN08          0x150 0x520 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D19__IPU1_CSI1_DATA16        0x150 0x520 0x8a0 0x3 0x1
+-#define MX6DL_PAD_EIM_D19__UART1_CTS_B             0x150 0x520 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D19__UART1_RTS_B             0x150 0x520 0x8f8 0x4 0x0
+-#define MX6DL_PAD_EIM_D19__GPIO3_IO19              0x150 0x520 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D19__EPIT1_OUT               0x150 0x520 0x000 0x6 0x0
+-#define MX6DL_PAD_EIM_D19__EPDC_DATA12             0x150 0x520 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D20__EIM_DATA20              0x154 0x524 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D20__ECSPI4_SS0              0x154 0x524 0x808 0x1 0x0
+-#define MX6DL_PAD_EIM_D20__IPU1_DI0_PIN16          0x154 0x524 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D20__IPU1_CSI1_DATA15        0x154 0x524 0x89c 0x3 0x1
+-#define MX6DL_PAD_EIM_D20__UART1_RTS_B             0x154 0x524 0x8f8 0x4 0x1
+-#define MX6DL_PAD_EIM_D20__UART1_CTS_B             0x154 0x524 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D20__GPIO3_IO20              0x154 0x524 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D20__EPIT2_OUT               0x154 0x524 0x000 0x6 0x0
+-#define MX6DL_PAD_EIM_D21__EIM_DATA21              0x158 0x528 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D21__ECSPI4_SCLK             0x158 0x528 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_D21__IPU1_DI0_PIN17          0x158 0x528 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D21__IPU1_CSI1_DATA11        0x158 0x528 0x88c 0x3 0x0
+-#define MX6DL_PAD_EIM_D21__USB_OTG_OC              0x158 0x528 0x920 0x4 0x0
+-#define MX6DL_PAD_EIM_D21__GPIO3_IO21              0x158 0x528 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D21__I2C1_SCL                0x158 0x528 0x868 0x6 0x1
+-#define MX6DL_PAD_EIM_D21__SPDIF_IN                0x158 0x528 0x8f0 0x7 0x0
+-#define MX6DL_PAD_EIM_D22__EIM_DATA22              0x15c 0x52c 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D22__ECSPI4_MISO             0x15c 0x52c 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_D22__IPU1_DI0_PIN01          0x15c 0x52c 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D22__IPU1_CSI1_DATA10        0x15c 0x52c 0x888 0x3 0x0
+-#define MX6DL_PAD_EIM_D22__USB_OTG_PWR             0x15c 0x52c 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D22__GPIO3_IO22              0x15c 0x52c 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D22__SPDIF_OUT               0x15c 0x52c 0x000 0x6 0x0
+-#define MX6DL_PAD_EIM_D22__EPDC_SDCE6              0x15c 0x52c 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D23__EIM_DATA23              0x160 0x530 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D23__IPU1_DI0_D0_CS          0x160 0x530 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_D23__UART3_CTS_B             0x160 0x530 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D23__UART3_RTS_B             0x160 0x530 0x908 0x2 0x0
+-#define MX6DL_PAD_EIM_D23__UART1_DCD_B             0x160 0x530 0x000 0x3 0x0
+-#define MX6DL_PAD_EIM_D23__IPU1_CSI1_DATA_EN       0x160 0x530 0x8b0 0x4 0x0
+-#define MX6DL_PAD_EIM_D23__GPIO3_IO23              0x160 0x530 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D23__IPU1_DI1_PIN02          0x160 0x530 0x000 0x6 0x0
+-#define MX6DL_PAD_EIM_D23__IPU1_DI1_PIN14          0x160 0x530 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_D23__EPDC_DATA11             0x160 0x530 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D24__EIM_DATA24              0x164 0x534 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D24__ECSPI4_SS2              0x164 0x534 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_D24__UART3_TX_DATA           0x164 0x534 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D24__UART3_RX_DATA           0x164 0x534 0x90c 0x2 0x0
+-#define MX6DL_PAD_EIM_D24__ECSPI1_SS2              0x164 0x534 0x7ec 0x3 0x0
+-#define MX6DL_PAD_EIM_D24__ECSPI2_SS2              0x164 0x534 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D24__GPIO3_IO24              0x164 0x534 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D24__AUD5_RXFS               0x164 0x534 0x7bc 0x6 0x1
+-#define MX6DL_PAD_EIM_D24__UART1_DTR_B             0x164 0x534 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_D24__EPDC_SDCE7              0x164 0x534 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D25__EIM_DATA25              0x168 0x538 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D25__ECSPI4_SS3              0x168 0x538 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_D25__UART3_RX_DATA           0x168 0x538 0x90c 0x2 0x1
+-#define MX6DL_PAD_EIM_D25__UART3_TX_DATA           0x168 0x538 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D25__ECSPI1_SS3              0x168 0x538 0x7f0 0x3 0x0
+-#define MX6DL_PAD_EIM_D25__ECSPI2_SS3              0x168 0x538 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D25__GPIO3_IO25              0x168 0x538 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D25__AUD5_RXC                0x168 0x538 0x7b8 0x6 0x1
+-#define MX6DL_PAD_EIM_D25__UART1_DSR_B             0x168 0x538 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_D25__EPDC_SDCE8              0x168 0x538 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D26__EIM_DATA26              0x16c 0x53c 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D26__IPU1_DI1_PIN11          0x16c 0x53c 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_D26__IPU1_CSI0_DATA01        0x16c 0x53c 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D26__IPU1_CSI1_DATA14        0x16c 0x53c 0x898 0x3 0x1
+-#define MX6DL_PAD_EIM_D26__UART2_TX_DATA           0x16c 0x53c 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D26__UART2_RX_DATA           0x16c 0x53c 0x904 0x4 0x0
+-#define MX6DL_PAD_EIM_D26__GPIO3_IO26              0x16c 0x53c 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D26__IPU1_SISG2              0x16c 0x53c 0x000 0x6 0x0
+-#define MX6DL_PAD_EIM_D26__IPU1_DISP1_DATA22       0x16c 0x53c 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_D26__EPDC_SDOED              0x16c 0x53c 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D27__EIM_DATA27              0x170 0x540 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D27__IPU1_DI1_PIN13          0x170 0x540 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_D27__IPU1_CSI0_DATA00        0x170 0x540 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D27__IPU1_CSI1_DATA13        0x170 0x540 0x894 0x3 0x1
+-#define MX6DL_PAD_EIM_D27__UART2_RX_DATA           0x170 0x540 0x904 0x4 0x1
+-#define MX6DL_PAD_EIM_D27__UART2_TX_DATA           0x170 0x540 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D27__GPIO3_IO27              0x170 0x540 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D27__IPU1_SISG3              0x170 0x540 0x000 0x6 0x0
+-#define MX6DL_PAD_EIM_D27__IPU1_DISP1_DATA23       0x170 0x540 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_D27__EPDC_SDOE               0x170 0x540 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D28__EIM_DATA28              0x174 0x544 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D28__I2C1_SDA                0x174 0x544 0x86c 0x1 0x1
+-#define MX6DL_PAD_EIM_D28__ECSPI4_MOSI             0x174 0x544 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D28__IPU1_CSI1_DATA12        0x174 0x544 0x890 0x3 0x1
+-#define MX6DL_PAD_EIM_D28__UART2_CTS_B             0x174 0x544 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D28__UART2_RTS_B             0x174 0x544 0x900 0x4 0x0
+-#define MX6DL_PAD_EIM_D28__GPIO3_IO28              0x174 0x544 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D28__IPU1_EXT_TRIG           0x174 0x544 0x000 0x6 0x0
+-#define MX6DL_PAD_EIM_D28__IPU1_DI0_PIN13          0x174 0x544 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_D28__EPDC_PWR_CTRL3          0x174 0x544 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D29__EIM_DATA29              0x178 0x548 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D29__IPU1_DI1_PIN15          0x178 0x548 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_D29__ECSPI4_SS0              0x178 0x548 0x808 0x2 0x1
+-#define MX6DL_PAD_EIM_D29__UART2_RTS_B             0x178 0x548 0x900 0x4 0x1
+-#define MX6DL_PAD_EIM_D29__UART2_CTS_B             0x178 0x548 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D29__GPIO3_IO29              0x178 0x548 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D29__IPU1_CSI1_VSYNC         0x178 0x548 0x8bc 0x6 0x0
+-#define MX6DL_PAD_EIM_D29__IPU1_DI0_PIN14          0x178 0x548 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_D29__EPDC_PWR_WAKE           0x178 0x548 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D30__EIM_DATA30              0x17c 0x54c 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D30__IPU1_DISP1_DATA21       0x17c 0x54c 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_D30__IPU1_DI0_PIN11          0x17c 0x54c 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D30__IPU1_CSI0_DATA03        0x17c 0x54c 0x000 0x3 0x0
+-#define MX6DL_PAD_EIM_D30__UART3_CTS_B             0x17c 0x54c 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D30__UART3_RTS_B             0x17c 0x54c 0x908 0x4 0x1
+-#define MX6DL_PAD_EIM_D30__GPIO3_IO30              0x17c 0x54c 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D30__USB_H1_OC               0x17c 0x54c 0x924 0x6 0x0
+-#define MX6DL_PAD_EIM_D30__EPDC_SDOEZ              0x17c 0x54c 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D31__EIM_DATA31              0x180 0x550 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_D31__IPU1_DISP1_DATA20       0x180 0x550 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_D31__IPU1_DI0_PIN12          0x180 0x550 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_D31__IPU1_CSI0_DATA02        0x180 0x550 0x000 0x3 0x0
+-#define MX6DL_PAD_EIM_D31__UART3_RTS_B             0x180 0x550 0x908 0x4 0x2
+-#define MX6DL_PAD_EIM_D31__UART3_CTS_B             0x180 0x550 0x000 0x4 0x0
+-#define MX6DL_PAD_EIM_D31__GPIO3_IO31              0x180 0x550 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_D31__USB_H1_PWR              0x180 0x550 0x000 0x6 0x0
+-#define MX6DL_PAD_EIM_D31__EPDC_SDCLK_P            0x180 0x550 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_D31__EIM_ACLK_FREERUN        0x180 0x550 0x000 0x9 0x0
+-#define MX6DL_PAD_EIM_DA0__EIM_AD00                0x184 0x554 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA0__IPU1_DISP1_DATA09       0x184 0x554 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA0__IPU1_CSI1_DATA09        0x184 0x554 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA0__GPIO3_IO00              0x184 0x554 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA0__SRC_BOOT_CFG00          0x184 0x554 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA0__EPDC_SDCLK_N            0x184 0x554 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA1__EIM_AD01                0x188 0x558 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA1__IPU1_DISP1_DATA08       0x188 0x558 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA1__IPU1_CSI1_DATA08        0x188 0x558 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA1__GPIO3_IO01              0x188 0x558 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA1__SRC_BOOT_CFG01          0x188 0x558 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA1__EPDC_SDLE               0x188 0x558 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA10__EIM_AD10               0x18c 0x55c 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA10__IPU1_DI1_PIN15         0x18c 0x55c 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA10__IPU1_CSI1_DATA_EN      0x18c 0x55c 0x8b0 0x2 0x1
+-#define MX6DL_PAD_EIM_DA10__GPIO3_IO10             0x18c 0x55c 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA10__SRC_BOOT_CFG10         0x18c 0x55c 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA10__EPDC_DATA01            0x18c 0x55c 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA11__EIM_AD11               0x190 0x560 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA11__IPU1_DI1_PIN02         0x190 0x560 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA11__IPU1_CSI1_HSYNC        0x190 0x560 0x8b4 0x2 0x0
+-#define MX6DL_PAD_EIM_DA11__GPIO3_IO11             0x190 0x560 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA11__SRC_BOOT_CFG11         0x190 0x560 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA11__EPDC_DATA03            0x190 0x560 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA12__EIM_AD12               0x194 0x564 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA12__IPU1_DI1_PIN03         0x194 0x564 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA12__IPU1_CSI1_VSYNC        0x194 0x564 0x8bc 0x2 0x1
+-#define MX6DL_PAD_EIM_DA12__GPIO3_IO12             0x194 0x564 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA12__SRC_BOOT_CFG12         0x194 0x564 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA12__EPDC_DATA02            0x194 0x564 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA13__EIM_AD13               0x198 0x568 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA13__IPU1_DI1_D0_CS         0x198 0x568 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA13__GPIO3_IO13             0x198 0x568 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA13__SRC_BOOT_CFG13         0x198 0x568 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA13__EPDC_DATA13            0x198 0x568 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA14__EIM_AD14               0x19c 0x56c 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA14__IPU1_DI1_D1_CS         0x19c 0x56c 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA14__GPIO3_IO14             0x19c 0x56c 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA14__SRC_BOOT_CFG14         0x19c 0x56c 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA14__EPDC_DATA14            0x19c 0x56c 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA15__EIM_AD15               0x1a0 0x570 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA15__IPU1_DI1_PIN01         0x1a0 0x570 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA15__IPU1_DI1_PIN04         0x1a0 0x570 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA15__GPIO3_IO15             0x1a0 0x570 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA15__SRC_BOOT_CFG15         0x1a0 0x570 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA15__EPDC_DATA09            0x1a0 0x570 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA2__EIM_AD02                0x1a4 0x574 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA2__IPU1_DISP1_DATA07       0x1a4 0x574 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA2__IPU1_CSI1_DATA07        0x1a4 0x574 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA2__GPIO3_IO02              0x1a4 0x574 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA2__SRC_BOOT_CFG02          0x1a4 0x574 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA2__EPDC_BDR0               0x1a4 0x574 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA3__EIM_AD03                0x1a8 0x578 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA3__IPU1_DISP1_DATA06       0x1a8 0x578 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA3__IPU1_CSI1_DATA06        0x1a8 0x578 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA3__GPIO3_IO03              0x1a8 0x578 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA3__SRC_BOOT_CFG03          0x1a8 0x578 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA3__EPDC_BDR1               0x1a8 0x578 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA4__EIM_AD04                0x1ac 0x57c 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA4__IPU1_DISP1_DATA05       0x1ac 0x57c 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA4__IPU1_CSI1_DATA05        0x1ac 0x57c 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA4__GPIO3_IO04              0x1ac 0x57c 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA4__SRC_BOOT_CFG04          0x1ac 0x57c 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA4__EPDC_SDCE0              0x1ac 0x57c 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA5__EIM_AD05                0x1b0 0x580 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA5__IPU1_DISP1_DATA04       0x1b0 0x580 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA5__IPU1_CSI1_DATA04        0x1b0 0x580 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA5__GPIO3_IO05              0x1b0 0x580 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA5__SRC_BOOT_CFG05          0x1b0 0x580 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA5__EPDC_SDCE1              0x1b0 0x580 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA6__EIM_AD06                0x1b4 0x584 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA6__IPU1_DISP1_DATA03       0x1b4 0x584 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA6__IPU1_CSI1_DATA03        0x1b4 0x584 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA6__GPIO3_IO06              0x1b4 0x584 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA6__SRC_BOOT_CFG06          0x1b4 0x584 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA6__EPDC_SDCE2              0x1b4 0x584 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA7__EIM_AD07                0x1b8 0x588 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA7__IPU1_DISP1_DATA02       0x1b8 0x588 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA7__IPU1_CSI1_DATA02        0x1b8 0x588 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA7__GPIO3_IO07              0x1b8 0x588 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA7__SRC_BOOT_CFG07          0x1b8 0x588 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA7__EPDC_SDCE3              0x1b8 0x588 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA8__EIM_AD08                0x1bc 0x58c 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA8__IPU1_DISP1_DATA01       0x1bc 0x58c 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA8__IPU1_CSI1_DATA01        0x1bc 0x58c 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA8__GPIO3_IO08              0x1bc 0x58c 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA8__SRC_BOOT_CFG08          0x1bc 0x58c 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA8__EPDC_SDCE4              0x1bc 0x58c 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_DA9__EIM_AD09                0x1c0 0x590 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_DA9__IPU1_DISP1_DATA00       0x1c0 0x590 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_DA9__IPU1_CSI1_DATA00        0x1c0 0x590 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_DA9__GPIO3_IO09              0x1c0 0x590 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_DA9__SRC_BOOT_CFG09          0x1c0 0x590 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_DA9__EPDC_SDCE5              0x1c0 0x590 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_EB0__EIM_EB0_B               0x1c4 0x594 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_EB0__IPU1_DISP1_DATA11       0x1c4 0x594 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_EB0__IPU1_CSI1_DATA11        0x1c4 0x594 0x88c 0x2 0x1
+-#define MX6DL_PAD_EIM_EB0__CCM_PMIC_READY          0x1c4 0x594 0x7d4 0x4 0x0
+-#define MX6DL_PAD_EIM_EB0__GPIO2_IO28              0x1c4 0x594 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_EB0__SRC_BOOT_CFG27          0x1c4 0x594 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_EB0__EPDC_PWR_COM            0x1c4 0x594 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_EB1__EIM_EB1_B               0x1c8 0x598 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_EB1__IPU1_DISP1_DATA10       0x1c8 0x598 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_EB1__IPU1_CSI1_DATA10        0x1c8 0x598 0x888 0x2 0x1
+-#define MX6DL_PAD_EIM_EB1__GPIO2_IO29              0x1c8 0x598 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_EB1__SRC_BOOT_CFG28          0x1c8 0x598 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_EB1__EPDC_SDSHR              0x1c8 0x598 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_EB2__EIM_EB2_B               0x1cc 0x59c 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_EB2__ECSPI1_SS0              0x1cc 0x59c 0x7e4 0x1 0x2
+-#define MX6DL_PAD_EIM_EB2__IPU1_CSI1_DATA19        0x1cc 0x59c 0x8ac 0x3 0x1
+-#define MX6DL_PAD_EIM_EB2__HDMI_TX_DDC_SCL         0x1cc 0x59c 0x860 0x4 0x0
+-#define MX6DL_PAD_EIM_EB2__GPIO2_IO30              0x1cc 0x59c 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_EB2__I2C2_SCL                0x1cc 0x59c 0x870 0x6 0x0
+-#define MX6DL_PAD_EIM_EB2__SRC_BOOT_CFG30          0x1cc 0x59c 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_EB2__EPDC_DATA05             0x1cc 0x59c 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_EB3__EIM_EB3_B               0x1d0 0x5a0 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_EB3__ECSPI4_RDY              0x1d0 0x5a0 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_EB3__UART3_RTS_B             0x1d0 0x5a0 0x908 0x2 0x3
+-#define MX6DL_PAD_EIM_EB3__UART3_CTS_B             0x1d0 0x5a0 0x000 0x2 0x0
+-#define MX6DL_PAD_EIM_EB3__UART1_RI_B              0x1d0 0x5a0 0x000 0x3 0x0
+-#define MX6DL_PAD_EIM_EB3__IPU1_CSI1_HSYNC         0x1d0 0x5a0 0x8b4 0x4 0x1
+-#define MX6DL_PAD_EIM_EB3__GPIO2_IO31              0x1d0 0x5a0 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_EB3__IPU1_DI1_PIN03          0x1d0 0x5a0 0x000 0x6 0x0
+-#define MX6DL_PAD_EIM_EB3__SRC_BOOT_CFG31          0x1d0 0x5a0 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_EB3__EPDC_SDCE0              0x1d0 0x5a0 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_EB3__EIM_ACLK_FREERUN        0x1d0 0x5a0 0x000 0x9 0x0
+-#define MX6DL_PAD_EIM_LBA__EIM_LBA_B               0x1d4 0x5a4 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_LBA__IPU1_DI1_PIN17          0x1d4 0x5a4 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_LBA__ECSPI2_SS1              0x1d4 0x5a4 0x804 0x2 0x1
+-#define MX6DL_PAD_EIM_LBA__GPIO2_IO27              0x1d4 0x5a4 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_LBA__SRC_BOOT_CFG26          0x1d4 0x5a4 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_LBA__EPDC_DATA04             0x1d4 0x5a4 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_OE__EIM_OE_B                 0x1d8 0x5a8 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_OE__IPU1_DI1_PIN07           0x1d8 0x5a8 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_OE__ECSPI2_MISO              0x1d8 0x5a8 0x7f8 0x2 0x2
+-#define MX6DL_PAD_EIM_OE__GPIO2_IO25               0x1d8 0x5a8 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_OE__EPDC_PWR_IRQ             0x1d8 0x5a8 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_RW__EIM_RW                   0x1dc 0x5ac 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_RW__IPU1_DI1_PIN08           0x1dc 0x5ac 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_RW__ECSPI2_SS0               0x1dc 0x5ac 0x800 0x2 0x2
+-#define MX6DL_PAD_EIM_RW__GPIO2_IO26               0x1dc 0x5ac 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_RW__SRC_BOOT_CFG29           0x1dc 0x5ac 0x000 0x7 0x0
+-#define MX6DL_PAD_EIM_RW__EPDC_DATA07              0x1dc 0x5ac 0x000 0x8 0x0
+-#define MX6DL_PAD_EIM_WAIT__EIM_WAIT_B             0x1e0 0x5b0 0x000 0x0 0x0
+-#define MX6DL_PAD_EIM_WAIT__EIM_DTACK_B            0x1e0 0x5b0 0x000 0x1 0x0
+-#define MX6DL_PAD_EIM_WAIT__GPIO5_IO00             0x1e0 0x5b0 0x000 0x5 0x0
+-#define MX6DL_PAD_EIM_WAIT__SRC_BOOT_CFG25         0x1e0 0x5b0 0x000 0x7 0x0
+-#define MX6DL_PAD_ENET_CRS_DV__ENET_RX_EN          0x1e4 0x5b4 0x828 0x1 0x0
+-#define MX6DL_PAD_ENET_CRS_DV__ESAI_TX_CLK         0x1e4 0x5b4 0x840 0x2 0x0
+-#define MX6DL_PAD_ENET_CRS_DV__SPDIF_EXT_CLK       0x1e4 0x5b4 0x8f4 0x3 0x0
+-#define MX6DL_PAD_ENET_CRS_DV__GPIO1_IO25          0x1e4 0x5b4 0x000 0x5 0x0
+-#define MX6DL_PAD_ENET_MDC__MLB_DATA               0x1e8 0x5b8 0x8e0 0x0 0x0
+-#define MX6DL_PAD_ENET_MDC__ENET_MDC               0x1e8 0x5b8 0x000 0x1 0x0
+-#define MX6DL_PAD_ENET_MDC__ESAI_TX5_RX0           0x1e8 0x5b8 0x858 0x2 0x0
+-#define MX6DL_PAD_ENET_MDC__ENET_1588_EVENT1_IN    0x1e8 0x5b8 0x000 0x4 0x0
+-#define MX6DL_PAD_ENET_MDC__GPIO1_IO31             0x1e8 0x5b8 0x000 0x5 0x0
+-#define MX6DL_PAD_ENET_MDIO__ENET_MDIO             0x1ec 0x5bc 0x810 0x1 0x0
+-#define MX6DL_PAD_ENET_MDIO__ESAI_RX_CLK           0x1ec 0x5bc 0x83c 0x2 0x0
+-#define MX6DL_PAD_ENET_MDIO__ENET_1588_EVENT1_OUT  0x1ec 0x5bc 0x000 0x4 0x0
+-#define MX6DL_PAD_ENET_MDIO__GPIO1_IO22            0x1ec 0x5bc 0x000 0x5 0x0
+-#define MX6DL_PAD_ENET_MDIO__SPDIF_LOCK            0x1ec 0x5bc 0x000 0x6 0x0
+-#define MX6DL_PAD_ENET_REF_CLK__ENET_TX_CLK        0x1f0 0x5c0 0x000 0x1 0x0
+-#define MX6DL_PAD_ENET_REF_CLK__ESAI_RX_FS         0x1f0 0x5c0 0x82c 0x2 0x0
+-#define MX6DL_PAD_ENET_REF_CLK__GPIO1_IO23         0x1f0 0x5c0 0x000 0x5 0x0
+-#define MX6DL_PAD_ENET_REF_CLK__SPDIF_SR_CLK       0x1f0 0x5c0 0x000 0x6 0x0
+-#define MX6DL_PAD_ENET_RX_ER__USB_OTG_ID           0x1f4 0x5c4 0x790 0x0 0x0
+-#define MX6DL_PAD_ENET_RX_ER__ENET_RX_ER           0x1f4 0x5c4 0x000 0x1 0x0
+-#define MX6DL_PAD_ENET_RX_ER__ESAI_RX_HF_CLK       0x1f4 0x5c4 0x834 0x2 0x0
+-#define MX6DL_PAD_ENET_RX_ER__SPDIF_IN             0x1f4 0x5c4 0x8f0 0x3 0x1
+-#define MX6DL_PAD_ENET_RX_ER__ENET_1588_EVENT2_OUT 0x1f4 0x5c4 0x000 0x4 0x0
+-#define MX6DL_PAD_ENET_RX_ER__GPIO1_IO24           0x1f4 0x5c4 0x000 0x5 0x0
+-#define MX6DL_PAD_ENET_RXD0__ENET_RX_DATA0         0x1f8 0x5c8 0x818 0x1 0x0
+-#define MX6DL_PAD_ENET_RXD0__ESAI_TX_HF_CLK        0x1f8 0x5c8 0x838 0x2 0x0
+-#define MX6DL_PAD_ENET_RXD0__SPDIF_OUT             0x1f8 0x5c8 0x000 0x3 0x0
+-#define MX6DL_PAD_ENET_RXD0__GPIO1_IO27            0x1f8 0x5c8 0x000 0x5 0x0
+-#define MX6DL_PAD_ENET_RXD1__MLB_SIG               0x1fc 0x5cc 0x8e4 0x0 0x0
+-#define MX6DL_PAD_ENET_RXD1__ENET_RX_DATA1         0x1fc 0x5cc 0x81c 0x1 0x0
+-#define MX6DL_PAD_ENET_RXD1__ESAI_TX_FS            0x1fc 0x5cc 0x830 0x2 0x0
+-#define MX6DL_PAD_ENET_RXD1__ENET_1588_EVENT3_OUT  0x1fc 0x5cc 0x000 0x4 0x0
+-#define MX6DL_PAD_ENET_RXD1__GPIO1_IO26            0x1fc 0x5cc 0x000 0x5 0x0
+-#define MX6DL_PAD_ENET_TX_EN__ENET_TX_EN           0x200 0x5d0 0x000 0x1 0x0
+-#define MX6DL_PAD_ENET_TX_EN__ESAI_TX3_RX2         0x200 0x5d0 0x850 0x2 0x0
+-#define MX6DL_PAD_ENET_TX_EN__GPIO1_IO28           0x200 0x5d0 0x000 0x5 0x0
+-#define MX6DL_PAD_ENET_TX_EN__I2C4_SCL             0x200 0x5d0 0x880 0x9 0x0
+-#define MX6DL_PAD_ENET_TXD0__ENET_TX_DATA0         0x204 0x5d4 0x000 0x1 0x0
+-#define MX6DL_PAD_ENET_TXD0__ESAI_TX4_RX1          0x204 0x5d4 0x854 0x2 0x0
+-#define MX6DL_PAD_ENET_TXD0__GPIO1_IO30            0x204 0x5d4 0x000 0x5 0x0
+-#define MX6DL_PAD_ENET_TXD1__MLB_CLK               0x208 0x5d8 0x8dc 0x0 0x0
+-#define MX6DL_PAD_ENET_TXD1__ENET_TX_DATA1         0x208 0x5d8 0x000 0x1 0x0
+-#define MX6DL_PAD_ENET_TXD1__ESAI_TX2_RX3          0x208 0x5d8 0x84c 0x2 0x0
+-#define MX6DL_PAD_ENET_TXD1__ENET_1588_EVENT0_IN   0x208 0x5d8 0x000 0x4 0x0
+-#define MX6DL_PAD_ENET_TXD1__GPIO1_IO29            0x208 0x5d8 0x000 0x5 0x0
+-#define MX6DL_PAD_ENET_TXD1__I2C4_SDA              0x208 0x5d8 0x884 0x9 0x0
+-#define MX6DL_PAD_GPIO_0__CCM_CLKO1                0x20c 0x5dc 0x000 0x0 0x0
+-#define MX6DL_PAD_GPIO_0__KEY_COL5                 0x20c 0x5dc 0x8c0 0x2 0x1
+-#define MX6DL_PAD_GPIO_0__ASRC_EXT_CLK             0x20c 0x5dc 0x794 0x3 0x0
+-#define MX6DL_PAD_GPIO_0__EPIT1_OUT                0x20c 0x5dc 0x000 0x4 0x0
+-#define MX6DL_PAD_GPIO_0__GPIO1_IO00               0x20c 0x5dc 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_0__USB_H1_PWR               0x20c 0x5dc 0x000 0x6 0x0
+-#define MX6DL_PAD_GPIO_0__SNVS_VIO_5               0x20c 0x5dc 0x000 0x7 0x0
+-#define MX6DL_PAD_GPIO_1__ESAI_RX_CLK              0x210 0x5e0 0x83c 0x0 0x1
+-#define MX6DL_PAD_GPIO_1__WDOG2_B                  0x210 0x5e0 0x000 0x1 0x0
+-#define MX6DL_PAD_GPIO_1__KEY_ROW5                 0x210 0x5e0 0x8cc 0x2 0x1
+-#define MX6DL_PAD_GPIO_1__USB_OTG_ID               0x210 0x5e0 0x790 0x3 0x1
+-#define MX6DL_PAD_GPIO_1__PWM2_OUT                 0x210 0x5e0 0x000 0x4 0x0
+-#define MX6DL_PAD_GPIO_1__GPIO1_IO01               0x210 0x5e0 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_1__SD1_CD_B                 0x210 0x5e0 0x000 0x6 0x0
+-#define MX6DL_PAD_GPIO_16__ESAI_TX3_RX2            0x214 0x5e4 0x850 0x0 0x1
+-#define MX6DL_PAD_GPIO_16__ENET_1588_EVENT2_IN     0x214 0x5e4 0x000 0x1 0x0
+-#define MX6DL_PAD_GPIO_16__ENET_REF_CLK            0x214 0x5e4 0x80c 0x2 0x0
+-#define MX6DL_PAD_GPIO_16__SD1_LCTL                0x214 0x5e4 0x000 0x3 0x0
+-#define MX6DL_PAD_GPIO_16__SPDIF_IN                0x214 0x5e4 0x8f0 0x4 0x2
+-#define MX6DL_PAD_GPIO_16__GPIO7_IO11              0x214 0x5e4 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_16__I2C3_SDA                0x214 0x5e4 0x87c 0x6 0x1
+-#define MX6DL_PAD_GPIO_16__JTAG_DE_B               0x214 0x5e4 0x000 0x7 0x0
+-#define MX6DL_PAD_GPIO_17__ESAI_TX0                0x218 0x5e8 0x844 0x0 0x0
+-#define MX6DL_PAD_GPIO_17__ENET_1588_EVENT3_IN     0x218 0x5e8 0x000 0x1 0x0
+-#define MX6DL_PAD_GPIO_17__CCM_PMIC_READY          0x218 0x5e8 0x7d4 0x2 0x1
+-#define MX6DL_PAD_GPIO_17__SDMA_EXT_EVENT0         0x218 0x5e8 0x8e8 0x3 0x1
+-#define MX6DL_PAD_GPIO_17__SPDIF_OUT               0x218 0x5e8 0x000 0x4 0x0
+-#define MX6DL_PAD_GPIO_17__GPIO7_IO12              0x218 0x5e8 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_18__ESAI_TX1                0x21c 0x5ec 0x848 0x0 0x0
+-#define MX6DL_PAD_GPIO_18__ENET_RX_CLK             0x21c 0x5ec 0x814 0x1 0x0
+-#define MX6DL_PAD_GPIO_18__SD3_VSELECT             0x21c 0x5ec 0x000 0x2 0x0
+-#define MX6DL_PAD_GPIO_18__SDMA_EXT_EVENT1         0x21c 0x5ec 0x8ec 0x3 0x1
+-#define MX6DL_PAD_GPIO_18__ASRC_EXT_CLK            0x21c 0x5ec 0x794 0x4 0x1
+-#define MX6DL_PAD_GPIO_18__GPIO7_IO13              0x21c 0x5ec 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_18__SNVS_VIO_5_CTL          0x21c 0x5ec 0x000 0x6 0x0
+-#define MX6DL_PAD_GPIO_19__KEY_COL5                0x220 0x5f0 0x8c0 0x0 0x2
+-#define MX6DL_PAD_GPIO_19__ENET_1588_EVENT0_OUT    0x220 0x5f0 0x000 0x1 0x0
+-#define MX6DL_PAD_GPIO_19__SPDIF_OUT               0x220 0x5f0 0x000 0x2 0x0
+-#define MX6DL_PAD_GPIO_19__CCM_CLKO1               0x220 0x5f0 0x000 0x3 0x0
+-#define MX6DL_PAD_GPIO_19__ECSPI1_RDY              0x220 0x5f0 0x000 0x4 0x0
+-#define MX6DL_PAD_GPIO_19__GPIO4_IO05              0x220 0x5f0 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_19__ENET_TX_ER              0x220 0x5f0 0x000 0x6 0x0
+-#define MX6DL_PAD_GPIO_2__ESAI_TX_FS               0x224 0x5f4 0x830 0x0 0x1
+-#define MX6DL_PAD_GPIO_2__KEY_ROW6                 0x224 0x5f4 0x8d0 0x2 0x1
+-#define MX6DL_PAD_GPIO_2__GPIO1_IO02               0x224 0x5f4 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_2__SD2_WP                   0x224 0x5f4 0x000 0x6 0x0
+-#define MX6DL_PAD_GPIO_2__MLB_DATA                 0x224 0x5f4 0x8e0 0x7 0x1
+-#define MX6DL_PAD_GPIO_3__ESAI_RX_HF_CLK           0x228 0x5f8 0x834 0x0 0x1
+-#define MX6DL_PAD_GPIO_3__I2C3_SCL                 0x228 0x5f8 0x878 0x2 0x1
+-#define MX6DL_PAD_GPIO_3__XTALOSC_REF_CLK_24M      0x228 0x5f8 0x000 0x3 0x0
+-#define MX6DL_PAD_GPIO_3__CCM_CLKO2                0x228 0x5f8 0x000 0x4 0x0
+-#define MX6DL_PAD_GPIO_3__GPIO1_IO03               0x228 0x5f8 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_3__USB_H1_OC                0x228 0x5f8 0x924 0x6 0x1
+-#define MX6DL_PAD_GPIO_3__MLB_CLK                  0x228 0x5f8 0x8dc 0x7 0x1
+-#define MX6DL_PAD_GPIO_4__ESAI_TX_HF_CLK           0x22c 0x5fc 0x838 0x0 0x1
+-#define MX6DL_PAD_GPIO_4__KEY_COL7                 0x22c 0x5fc 0x8c8 0x2 0x1
+-#define MX6DL_PAD_GPIO_4__GPIO1_IO04               0x22c 0x5fc 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_4__SD2_CD_B                 0x22c 0x5fc 0x000 0x6 0x0
+-#define MX6DL_PAD_GPIO_5__ESAI_TX2_RX3             0x230 0x600 0x84c 0x0 0x1
+-#define MX6DL_PAD_GPIO_5__KEY_ROW7                 0x230 0x600 0x8d4 0x2 0x1
+-#define MX6DL_PAD_GPIO_5__CCM_CLKO1                0x230 0x600 0x000 0x3 0x0
+-#define MX6DL_PAD_GPIO_5__GPIO1_IO05               0x230 0x600 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_5__I2C3_SCL                 0x230 0x600 0x878 0x6 0x2
+-#define MX6DL_PAD_GPIO_5__ARM_EVENTI               0x230 0x600 0x000 0x7 0x0
+-#define MX6DL_PAD_GPIO_6__ESAI_TX_CLK              0x234 0x604 0x840 0x0 0x1
+-#define MX6DL_PAD_GPIO_6__I2C3_SDA                 0x234 0x604 0x87c 0x2 0x2
+-#define MX6DL_PAD_GPIO_6__GPIO1_IO06               0x234 0x604 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_6__SD2_LCTL                 0x234 0x604 0x000 0x6 0x0
+-#define MX6DL_PAD_GPIO_6__MLB_SIG                  0x234 0x604 0x8e4 0x7 0x1
+-#define MX6DL_PAD_GPIO_7__ESAI_TX4_RX1             0x238 0x608 0x854 0x0 0x1
+-#define MX6DL_PAD_GPIO_7__EPIT1_OUT                0x238 0x608 0x000 0x2 0x0
+-#define MX6DL_PAD_GPIO_7__FLEXCAN1_TX              0x238 0x608 0x000 0x3 0x0
+-#define MX6DL_PAD_GPIO_7__UART2_TX_DATA            0x238 0x608 0x000 0x4 0x0
+-#define MX6DL_PAD_GPIO_7__UART2_RX_DATA            0x238 0x608 0x904 0x4 0x2
+-#define MX6DL_PAD_GPIO_7__GPIO1_IO07               0x238 0x608 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_7__SPDIF_LOCK               0x238 0x608 0x000 0x6 0x0
+-#define MX6DL_PAD_GPIO_7__USB_OTG_HOST_MODE        0x238 0x608 0x000 0x7 0x0
+-#define MX6DL_PAD_GPIO_7__I2C4_SCL                 0x238 0x608 0x880 0x8 0x1
+-#define MX6DL_PAD_GPIO_8__ESAI_TX5_RX0             0x23c 0x60c 0x858 0x0 0x1
+-#define MX6DL_PAD_GPIO_8__XTALOSC_REF_CLK_32K      0x23c 0x60c 0x000 0x1 0x0
+-#define MX6DL_PAD_GPIO_8__EPIT2_OUT                0x23c 0x60c 0x000 0x2 0x0
+-#define MX6DL_PAD_GPIO_8__FLEXCAN1_RX              0x23c 0x60c 0x7c8 0x3 0x0
+-#define MX6DL_PAD_GPIO_8__UART2_RX_DATA            0x23c 0x60c 0x904 0x4 0x3
+-#define MX6DL_PAD_GPIO_8__UART2_TX_DATA            0x23c 0x60c 0x000 0x4 0x0
+-#define MX6DL_PAD_GPIO_8__GPIO1_IO08               0x23c 0x60c 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_8__SPDIF_SR_CLK             0x23c 0x60c 0x000 0x6 0x0
+-#define MX6DL_PAD_GPIO_8__USB_OTG_PWR_CTL_WAKE     0x23c 0x60c 0x000 0x7 0x0
+-#define MX6DL_PAD_GPIO_8__I2C4_SDA                 0x23c 0x60c 0x884 0x8 0x1
+-#define MX6DL_PAD_GPIO_9__ESAI_RX_FS               0x240 0x610 0x82c 0x0 0x1
+-#define MX6DL_PAD_GPIO_9__WDOG1_B                  0x240 0x610 0x000 0x1 0x0
+-#define MX6DL_PAD_GPIO_9__KEY_COL6                 0x240 0x610 0x8c4 0x2 0x1
+-#define MX6DL_PAD_GPIO_9__CCM_REF_EN_B             0x240 0x610 0x000 0x3 0x0
+-#define MX6DL_PAD_GPIO_9__PWM1_OUT                 0x240 0x610 0x000 0x4 0x0
+-#define MX6DL_PAD_GPIO_9__GPIO1_IO09               0x240 0x610 0x000 0x5 0x0
+-#define MX6DL_PAD_GPIO_9__SD1_WP                   0x240 0x610 0x92c 0x6 0x1
+-#define MX6DL_PAD_KEY_COL0__ECSPI1_SCLK            0x244 0x62c 0x7d8 0x0 0x3
+-#define MX6DL_PAD_KEY_COL0__ENET_RX_DATA3          0x244 0x62c 0x824 0x1 0x0
+-#define MX6DL_PAD_KEY_COL0__AUD5_TXC               0x244 0x62c 0x7c0 0x2 0x1
+-#define MX6DL_PAD_KEY_COL0__KEY_COL0               0x244 0x62c 0x000 0x3 0x0
+-#define MX6DL_PAD_KEY_COL0__UART4_TX_DATA          0x244 0x62c 0x000 0x4 0x0
+-#define MX6DL_PAD_KEY_COL0__UART4_RX_DATA          0x244 0x62c 0x914 0x4 0x2
+-#define MX6DL_PAD_KEY_COL0__GPIO4_IO06             0x244 0x62c 0x000 0x5 0x0
+-#define MX6DL_PAD_KEY_COL0__DCIC1_OUT              0x244 0x62c 0x000 0x6 0x0
+-#define MX6DL_PAD_KEY_COL1__ECSPI1_MISO            0x248 0x630 0x7dc 0x0 0x3
+-#define MX6DL_PAD_KEY_COL1__ENET_MDIO              0x248 0x630 0x810 0x1 0x1
+-#define MX6DL_PAD_KEY_COL1__AUD5_TXFS              0x248 0x630 0x7c4 0x2 0x1
+-#define MX6DL_PAD_KEY_COL1__KEY_COL1               0x248 0x630 0x000 0x3 0x0
+-#define MX6DL_PAD_KEY_COL1__UART5_TX_DATA          0x248 0x630 0x000 0x4 0x0
+-#define MX6DL_PAD_KEY_COL1__UART5_RX_DATA          0x248 0x630 0x91c 0x4 0x2
+-#define MX6DL_PAD_KEY_COL1__GPIO4_IO08             0x248 0x630 0x000 0x5 0x0
+-#define MX6DL_PAD_KEY_COL1__SD1_VSELECT            0x248 0x630 0x000 0x6 0x0
+-#define MX6DL_PAD_KEY_COL2__ECSPI1_SS1             0x24c 0x634 0x7e8 0x0 0x2
+-#define MX6DL_PAD_KEY_COL2__ENET_RX_DATA2          0x24c 0x634 0x820 0x1 0x0
+-#define MX6DL_PAD_KEY_COL2__FLEXCAN1_TX            0x24c 0x634 0x000 0x2 0x0
+-#define MX6DL_PAD_KEY_COL2__KEY_COL2               0x24c 0x634 0x000 0x3 0x0
+-#define MX6DL_PAD_KEY_COL2__ENET_MDC               0x24c 0x634 0x000 0x4 0x0
+-#define MX6DL_PAD_KEY_COL2__GPIO4_IO10             0x24c 0x634 0x000 0x5 0x0
+-#define MX6DL_PAD_KEY_COL2__USB_H1_PWR_CTL_WAKE    0x24c 0x634 0x000 0x6 0x0
+-#define MX6DL_PAD_KEY_COL3__ECSPI1_SS3             0x250 0x638 0x7f0 0x0 0x1
+-#define MX6DL_PAD_KEY_COL3__ENET_CRS               0x250 0x638 0x000 0x1 0x0
+-#define MX6DL_PAD_KEY_COL3__HDMI_TX_DDC_SCL        0x250 0x638 0x860 0x2 0x1
+-#define MX6DL_PAD_KEY_COL3__KEY_COL3               0x250 0x638 0x000 0x3 0x0
+-#define MX6DL_PAD_KEY_COL3__I2C2_SCL               0x250 0x638 0x870 0x4 0x1
+-#define MX6DL_PAD_KEY_COL3__GPIO4_IO12             0x250 0x638 0x000 0x5 0x0
+-#define MX6DL_PAD_KEY_COL3__SPDIF_IN               0x250 0x638 0x8f0 0x6 0x3
+-#define MX6DL_PAD_KEY_COL4__FLEXCAN2_TX            0x254 0x63c 0x000 0x0 0x0
+-#define MX6DL_PAD_KEY_COL4__IPU1_SISG4             0x254 0x63c 0x000 0x1 0x0
+-#define MX6DL_PAD_KEY_COL4__USB_OTG_OC             0x254 0x63c 0x920 0x2 0x1
+-#define MX6DL_PAD_KEY_COL4__KEY_COL4               0x254 0x63c 0x000 0x3 0x0
+-#define MX6DL_PAD_KEY_COL4__UART5_RTS_B            0x254 0x63c 0x918 0x4 0x2
+-#define MX6DL_PAD_KEY_COL4__UART5_CTS_B            0x254 0x63c 0x000 0x4 0x0
+-#define MX6DL_PAD_KEY_COL4__GPIO4_IO14             0x254 0x63c 0x000 0x5 0x0
+-#define MX6DL_PAD_KEY_ROW0__ECSPI1_MOSI            0x258 0x640 0x7e0 0x0 0x3
+-#define MX6DL_PAD_KEY_ROW0__ENET_TX_DATA3          0x258 0x640 0x000 0x1 0x0
+-#define MX6DL_PAD_KEY_ROW0__AUD5_TXD               0x258 0x640 0x7b4 0x2 0x1
+-#define MX6DL_PAD_KEY_ROW0__KEY_ROW0               0x258 0x640 0x000 0x3 0x0
+-#define MX6DL_PAD_KEY_ROW0__UART4_RX_DATA          0x258 0x640 0x914 0x4 0x3
+-#define MX6DL_PAD_KEY_ROW0__UART4_TX_DATA          0x258 0x640 0x000 0x4 0x0
+-#define MX6DL_PAD_KEY_ROW0__GPIO4_IO07             0x258 0x640 0x000 0x5 0x0
+-#define MX6DL_PAD_KEY_ROW0__DCIC2_OUT              0x258 0x640 0x000 0x6 0x0
+-#define MX6DL_PAD_KEY_ROW1__ECSPI1_SS0             0x25c 0x644 0x7e4 0x0 0x3
+-#define MX6DL_PAD_KEY_ROW1__ENET_COL               0x25c 0x644 0x000 0x1 0x0
+-#define MX6DL_PAD_KEY_ROW1__AUD5_RXD               0x25c 0x644 0x7b0 0x2 0x1
+-#define MX6DL_PAD_KEY_ROW1__KEY_ROW1               0x25c 0x644 0x000 0x3 0x0
+-#define MX6DL_PAD_KEY_ROW1__UART5_RX_DATA          0x25c 0x644 0x91c 0x4 0x3
+-#define MX6DL_PAD_KEY_ROW1__UART5_TX_DATA          0x25c 0x644 0x000 0x4 0x0
+-#define MX6DL_PAD_KEY_ROW1__GPIO4_IO09             0x25c 0x644 0x000 0x5 0x0
+-#define MX6DL_PAD_KEY_ROW1__SD2_VSELECT            0x25c 0x644 0x000 0x6 0x0
+-#define MX6DL_PAD_KEY_ROW2__ECSPI1_SS2             0x260 0x648 0x7ec 0x0 0x1
+-#define MX6DL_PAD_KEY_ROW2__ENET_TX_DATA2          0x260 0x648 0x000 0x1 0x0
+-#define MX6DL_PAD_KEY_ROW2__FLEXCAN1_RX            0x260 0x648 0x7c8 0x2 0x1
+-#define MX6DL_PAD_KEY_ROW2__KEY_ROW2               0x260 0x648 0x000 0x3 0x0
+-#define MX6DL_PAD_KEY_ROW2__SD2_VSELECT            0x260 0x648 0x000 0x4 0x0
+-#define MX6DL_PAD_KEY_ROW2__GPIO4_IO11             0x260 0x648 0x000 0x5 0x0
+-#define MX6DL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE       0x260 0x648 0x85c 0x6 0x1
+-#define MX6DL_PAD_KEY_ROW3__ASRC_EXT_CLK           0x264 0x64c 0x794 0x1 0x2
+-#define MX6DL_PAD_KEY_ROW3__HDMI_TX_DDC_SDA        0x264 0x64c 0x864 0x2 0x1
+-#define MX6DL_PAD_KEY_ROW3__KEY_ROW3               0x264 0x64c 0x000 0x3 0x0
+-#define MX6DL_PAD_KEY_ROW3__I2C2_SDA               0x264 0x64c 0x874 0x4 0x1
+-#define MX6DL_PAD_KEY_ROW3__GPIO4_IO13             0x264 0x64c 0x000 0x5 0x0
+-#define MX6DL_PAD_KEY_ROW3__SD1_VSELECT            0x264 0x64c 0x000 0x6 0x0
+-#define MX6DL_PAD_KEY_ROW4__FLEXCAN2_RX            0x268 0x650 0x7cc 0x0 0x0
+-#define MX6DL_PAD_KEY_ROW4__IPU1_SISG5             0x268 0x650 0x000 0x1 0x0
+-#define MX6DL_PAD_KEY_ROW4__USB_OTG_PWR            0x268 0x650 0x000 0x2 0x0
+-#define MX6DL_PAD_KEY_ROW4__KEY_ROW4               0x268 0x650 0x000 0x3 0x0
+-#define MX6DL_PAD_KEY_ROW4__UART5_CTS_B            0x268 0x650 0x000 0x4 0x0
+-#define MX6DL_PAD_KEY_ROW4__UART5_RTS_B            0x268 0x650 0x918 0x4 0x3
+-#define MX6DL_PAD_KEY_ROW4__GPIO4_IO15             0x268 0x650 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_ALE__NAND_ALE              0x26c 0x654 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_ALE__SD4_RESET             0x26c 0x654 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_ALE__GPIO6_IO08            0x26c 0x654 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_CLE__NAND_CLE              0x270 0x658 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_CLE__GPIO6_IO07            0x270 0x658 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_CS0__NAND_CE0_B            0x274 0x65c 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_CS0__GPIO6_IO11            0x274 0x65c 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_CS1__NAND_CE1_B            0x278 0x660 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_CS1__SD4_VSELECT           0x278 0x660 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_CS1__SD3_VSELECT           0x278 0x660 0x000 0x2 0x0
+-#define MX6DL_PAD_NANDF_CS1__GPIO6_IO14            0x278 0x660 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_CS2__NAND_CE2_B            0x27c 0x664 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_CS2__IPU1_SISG0            0x27c 0x664 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_CS2__ESAI_TX0              0x27c 0x664 0x844 0x2 0x1
+-#define MX6DL_PAD_NANDF_CS2__EIM_CRE               0x27c 0x664 0x000 0x3 0x0
+-#define MX6DL_PAD_NANDF_CS2__CCM_CLKO2             0x27c 0x664 0x000 0x4 0x0
+-#define MX6DL_PAD_NANDF_CS2__GPIO6_IO15            0x27c 0x664 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_CS3__NAND_CE3_B            0x280 0x668 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_CS3__IPU1_SISG1            0x280 0x668 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_CS3__ESAI_TX1              0x280 0x668 0x848 0x2 0x1
+-#define MX6DL_PAD_NANDF_CS3__EIM_ADDR26            0x280 0x668 0x000 0x3 0x0
+-#define MX6DL_PAD_NANDF_CS3__GPIO6_IO16            0x280 0x668 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_CS3__I2C4_SDA              0x280 0x668 0x884 0x9 0x2
+-#define MX6DL_PAD_NANDF_D0__NAND_DATA00            0x284 0x66c 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_D0__SD1_DATA4              0x284 0x66c 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_D0__GPIO2_IO00             0x284 0x66c 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_D1__NAND_DATA01            0x288 0x670 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_D1__SD1_DATA5              0x288 0x670 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_D1__GPIO2_IO01             0x288 0x670 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_D2__NAND_DATA02            0x28c 0x674 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_D2__SD1_DATA6              0x28c 0x674 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_D2__GPIO2_IO02             0x28c 0x674 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_D3__NAND_DATA03            0x290 0x678 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_D3__SD1_DATA7              0x290 0x678 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_D3__GPIO2_IO03             0x290 0x678 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_D4__NAND_DATA04            0x294 0x67c 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_D4__SD2_DATA4              0x294 0x67c 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_D4__GPIO2_IO04             0x294 0x67c 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_D5__NAND_DATA05            0x298 0x680 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_D5__SD2_DATA5              0x298 0x680 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_D5__GPIO2_IO05             0x298 0x680 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_D6__NAND_DATA06            0x29c 0x684 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_D6__SD2_DATA6              0x29c 0x684 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_D6__GPIO2_IO06             0x29c 0x684 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_D7__NAND_DATA07            0x2a0 0x688 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_D7__SD2_DATA7              0x2a0 0x688 0x000 0x1 0x0
+-#define MX6DL_PAD_NANDF_D7__GPIO2_IO07             0x2a0 0x688 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_RB0__NAND_READY_B          0x2a4 0x68c 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_RB0__GPIO6_IO10            0x2a4 0x68c 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_WP_B__NAND_WP_B            0x2a8 0x690 0x000 0x0 0x0
+-#define MX6DL_PAD_NANDF_WP_B__GPIO6_IO09           0x2a8 0x690 0x000 0x5 0x0
+-#define MX6DL_PAD_NANDF_WP_B__I2C4_SCL             0x2a8 0x690 0x880 0x9 0x2
+-#define MX6DL_PAD_RGMII_RD0__HSI_RX_READY          0x2ac 0x694 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_RD0__RGMII_RD0             0x2ac 0x694 0x818 0x1 0x1
+-#define MX6DL_PAD_RGMII_RD0__GPIO6_IO25            0x2ac 0x694 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_RD1__HSI_TX_FLAG           0x2b0 0x698 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_RD1__RGMII_RD1             0x2b0 0x698 0x81c 0x1 0x1
+-#define MX6DL_PAD_RGMII_RD1__GPIO6_IO27            0x2b0 0x698 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_RD2__HSI_TX_DATA           0x2b4 0x69c 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_RD2__RGMII_RD2             0x2b4 0x69c 0x820 0x1 0x1
+-#define MX6DL_PAD_RGMII_RD2__GPIO6_IO28            0x2b4 0x69c 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_RD3__HSI_TX_WAKE           0x2b8 0x6a0 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_RD3__RGMII_RD3             0x2b8 0x6a0 0x824 0x1 0x1
+-#define MX6DL_PAD_RGMII_RD3__GPIO6_IO29            0x2b8 0x6a0 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_RX_CTL__USB_H3_DATA        0x2bc 0x6a4 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_RX_CTL__RGMII_RX_CTL       0x2bc 0x6a4 0x828 0x1 0x1
+-#define MX6DL_PAD_RGMII_RX_CTL__GPIO6_IO24         0x2bc 0x6a4 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_RXC__USB_H3_STROBE         0x2c0 0x6a8 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_RXC__RGMII_RXC             0x2c0 0x6a8 0x814 0x1 0x1
+-#define MX6DL_PAD_RGMII_RXC__GPIO6_IO30            0x2c0 0x6a8 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_TD0__HSI_TX_READY          0x2c4 0x6ac 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_TD0__RGMII_TD0             0x2c4 0x6ac 0x000 0x1 0x0
+-#define MX6DL_PAD_RGMII_TD0__GPIO6_IO20            0x2c4 0x6ac 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_TD1__HSI_RX_FLAG           0x2c8 0x6b0 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_TD1__RGMII_TD1             0x2c8 0x6b0 0x000 0x1 0x0
+-#define MX6DL_PAD_RGMII_TD1__GPIO6_IO21            0x2c8 0x6b0 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_TD2__HSI_RX_DATA           0x2cc 0x6b4 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_TD2__RGMII_TD2             0x2cc 0x6b4 0x000 0x1 0x0
+-#define MX6DL_PAD_RGMII_TD2__GPIO6_IO22            0x2cc 0x6b4 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_TD3__HSI_RX_WAKE           0x2d0 0x6b8 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_TD3__RGMII_TD3             0x2d0 0x6b8 0x000 0x1 0x0
+-#define MX6DL_PAD_RGMII_TD3__GPIO6_IO23            0x2d0 0x6b8 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_TX_CTL__USB_H2_STROBE      0x2d4 0x6bc 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_TX_CTL__RGMII_TX_CTL       0x2d4 0x6bc 0x000 0x1 0x0
+-#define MX6DL_PAD_RGMII_TX_CTL__GPIO6_IO26         0x2d4 0x6bc 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_TX_CTL__ENET_REF_CLK       0x2d4 0x6bc 0x80c 0x7 0x1
+-#define MX6DL_PAD_RGMII_TXC__USB_H2_DATA           0x2d8 0x6c0 0x000 0x0 0x0
+-#define MX6DL_PAD_RGMII_TXC__RGMII_TXC             0x2d8 0x6c0 0x000 0x1 0x0
+-#define MX6DL_PAD_RGMII_TXC__SPDIF_EXT_CLK         0x2d8 0x6c0 0x8f4 0x2 0x1
+-#define MX6DL_PAD_RGMII_TXC__GPIO6_IO19            0x2d8 0x6c0 0x000 0x5 0x0
+-#define MX6DL_PAD_RGMII_TXC__XTALOSC_REF_CLK_24M   0x2d8 0x6c0 0x000 0x7 0x0
+-#define MX6DL_PAD_SD1_CLK__SD1_CLK                 0x2dc 0x6c4 0x928 0x0 0x1
+-#define MX6DL_PAD_SD1_CLK__GPT_CLKIN               0x2dc 0x6c4 0x000 0x3 0x0
+-#define MX6DL_PAD_SD1_CLK__GPIO1_IO20              0x2dc 0x6c4 0x000 0x5 0x0
+-#define MX6DL_PAD_SD1_CMD__SD1_CMD                 0x2e0 0x6c8 0x000 0x0 0x0
+-#define MX6DL_PAD_SD1_CMD__PWM4_OUT                0x2e0 0x6c8 0x000 0x2 0x0
+-#define MX6DL_PAD_SD1_CMD__GPT_COMPARE1            0x2e0 0x6c8 0x000 0x3 0x0
+-#define MX6DL_PAD_SD1_CMD__GPIO1_IO18              0x2e0 0x6c8 0x000 0x5 0x0
+-#define MX6DL_PAD_SD1_DAT0__SD1_DATA0              0x2e4 0x6cc 0x000 0x0 0x0
+-#define MX6DL_PAD_SD1_DAT0__GPT_CAPTURE1           0x2e4 0x6cc 0x000 0x3 0x0
+-#define MX6DL_PAD_SD1_DAT0__GPIO1_IO16             0x2e4 0x6cc 0x000 0x5 0x0
+-#define MX6DL_PAD_SD1_DAT1__SD1_DATA1              0x2e8 0x6d0 0x000 0x0 0x0
+-#define MX6DL_PAD_SD1_DAT1__PWM3_OUT               0x2e8 0x6d0 0x000 0x2 0x0
+-#define MX6DL_PAD_SD1_DAT1__GPT_CAPTURE2           0x2e8 0x6d0 0x000 0x3 0x0
+-#define MX6DL_PAD_SD1_DAT1__GPIO1_IO17             0x2e8 0x6d0 0x000 0x5 0x0
+-#define MX6DL_PAD_SD1_DAT2__SD1_DATA2              0x2ec 0x6d4 0x000 0x0 0x0
+-#define MX6DL_PAD_SD1_DAT2__GPT_COMPARE2           0x2ec 0x6d4 0x000 0x2 0x0
+-#define MX6DL_PAD_SD1_DAT2__PWM2_OUT               0x2ec 0x6d4 0x000 0x3 0x0
+-#define MX6DL_PAD_SD1_DAT2__WDOG1_B                0x2ec 0x6d4 0x000 0x4 0x0
+-#define MX6DL_PAD_SD1_DAT2__GPIO1_IO19             0x2ec 0x6d4 0x000 0x5 0x0
+-#define MX6DL_PAD_SD1_DAT2__WDOG1_RESET_B_DEB      0x2ec 0x6d4 0x000 0x6 0x0
+-#define MX6DL_PAD_SD1_DAT3__SD1_DATA3              0x2f0 0x6d8 0x000 0x0 0x0
+-#define MX6DL_PAD_SD1_DAT3__GPT_COMPARE3           0x2f0 0x6d8 0x000 0x2 0x0
+-#define MX6DL_PAD_SD1_DAT3__PWM1_OUT               0x2f0 0x6d8 0x000 0x3 0x0
+-#define MX6DL_PAD_SD1_DAT3__WDOG2_B                0x2f0 0x6d8 0x000 0x4 0x0
+-#define MX6DL_PAD_SD1_DAT3__GPIO1_IO21             0x2f0 0x6d8 0x000 0x5 0x0
+-#define MX6DL_PAD_SD1_DAT3__WDOG2_RESET_B_DEB      0x2f0 0x6d8 0x000 0x6 0x0
+-#define MX6DL_PAD_SD2_CLK__SD2_CLK                 0x2f4 0x6dc 0x930 0x0 0x1
+-#define MX6DL_PAD_SD2_CLK__KEY_COL5                0x2f4 0x6dc 0x8c0 0x2 0x3
+-#define MX6DL_PAD_SD2_CLK__AUD4_RXFS               0x2f4 0x6dc 0x7a4 0x3 0x1
+-#define MX6DL_PAD_SD2_CLK__GPIO1_IO10              0x2f4 0x6dc 0x000 0x5 0x0
+-#define MX6DL_PAD_SD2_CMD__SD2_CMD                 0x2f8 0x6e0 0x000 0x0 0x0
+-#define MX6DL_PAD_SD2_CMD__KEY_ROW5                0x2f8 0x6e0 0x8cc 0x2 0x2
+-#define MX6DL_PAD_SD2_CMD__AUD4_RXC                0x2f8 0x6e0 0x7a0 0x3 0x1
+-#define MX6DL_PAD_SD2_CMD__GPIO1_IO11              0x2f8 0x6e0 0x000 0x5 0x0
+-#define MX6DL_PAD_SD2_DAT0__SD2_DATA0              0x2fc 0x6e4 0x000 0x0 0x0
+-#define MX6DL_PAD_SD2_DAT0__AUD4_RXD               0x2fc 0x6e4 0x798 0x3 0x1
+-#define MX6DL_PAD_SD2_DAT0__KEY_ROW7               0x2fc 0x6e4 0x8d4 0x4 0x2
+-#define MX6DL_PAD_SD2_DAT0__GPIO1_IO15             0x2fc 0x6e4 0x000 0x5 0x0
+-#define MX6DL_PAD_SD2_DAT0__DCIC2_OUT              0x2fc 0x6e4 0x000 0x6 0x0
+-#define MX6DL_PAD_SD2_DAT1__SD2_DATA1              0x300 0x6e8 0x000 0x0 0x0
+-#define MX6DL_PAD_SD2_DAT1__EIM_CS2_B              0x300 0x6e8 0x000 0x2 0x0
+-#define MX6DL_PAD_SD2_DAT1__AUD4_TXFS              0x300 0x6e8 0x7ac 0x3 0x1
+-#define MX6DL_PAD_SD2_DAT1__KEY_COL7               0x300 0x6e8 0x8c8 0x4 0x2
+-#define MX6DL_PAD_SD2_DAT1__GPIO1_IO14             0x300 0x6e8 0x000 0x5 0x0
+-#define MX6DL_PAD_SD2_DAT2__SD2_DATA2              0x304 0x6ec 0x000 0x0 0x0
+-#define MX6DL_PAD_SD2_DAT2__EIM_CS3_B              0x304 0x6ec 0x000 0x2 0x0
+-#define MX6DL_PAD_SD2_DAT2__AUD4_TXD               0x304 0x6ec 0x79c 0x3 0x1
+-#define MX6DL_PAD_SD2_DAT2__KEY_ROW6               0x304 0x6ec 0x8d0 0x4 0x2
+-#define MX6DL_PAD_SD2_DAT2__GPIO1_IO13             0x304 0x6ec 0x000 0x5 0x0
+-#define MX6DL_PAD_SD2_DAT3__SD2_DATA3              0x308 0x6f0 0x000 0x0 0x0
+-#define MX6DL_PAD_SD2_DAT3__KEY_COL6               0x308 0x6f0 0x8c4 0x2 0x2
+-#define MX6DL_PAD_SD2_DAT3__AUD4_TXC               0x308 0x6f0 0x7a8 0x3 0x1
+-#define MX6DL_PAD_SD2_DAT3__GPIO1_IO12             0x308 0x6f0 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_CLK__SD3_CLK                 0x30c 0x6f4 0x934 0x0 0x1
+-#define MX6DL_PAD_SD3_CLK__UART2_RTS_B             0x30c 0x6f4 0x900 0x1 0x2
+-#define MX6DL_PAD_SD3_CLK__UART2_CTS_B             0x30c 0x6f4 0x000 0x1 0x0
+-#define MX6DL_PAD_SD3_CLK__FLEXCAN1_RX             0x30c 0x6f4 0x7c8 0x2 0x2
+-#define MX6DL_PAD_SD3_CLK__GPIO7_IO03              0x30c 0x6f4 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_CMD__SD3_CMD                 0x310 0x6f8 0x000 0x0 0x0
+-#define MX6DL_PAD_SD3_CMD__UART2_CTS_B             0x310 0x6f8 0x000 0x1 0x0
+-#define MX6DL_PAD_SD3_CMD__UART2_RTS_B             0x310 0x6f8 0x900 0x1 0x3
+-#define MX6DL_PAD_SD3_CMD__FLEXCAN1_TX             0x310 0x6f8 0x000 0x2 0x0
+-#define MX6DL_PAD_SD3_CMD__GPIO7_IO02              0x310 0x6f8 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_DAT0__SD3_DATA0              0x314 0x6fc 0x000 0x0 0x0
+-#define MX6DL_PAD_SD3_DAT0__UART1_CTS_B            0x314 0x6fc 0x000 0x1 0x0
+-#define MX6DL_PAD_SD3_DAT0__UART1_RTS_B            0x314 0x6fc 0x8f8 0x1 0x2
+-#define MX6DL_PAD_SD3_DAT0__FLEXCAN2_TX            0x314 0x6fc 0x000 0x2 0x0
+-#define MX6DL_PAD_SD3_DAT0__GPIO7_IO04             0x314 0x6fc 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_DAT1__SD3_DATA1              0x318 0x700 0x000 0x0 0x0
+-#define MX6DL_PAD_SD3_DAT1__UART1_RTS_B            0x318 0x700 0x8f8 0x1 0x3
+-#define MX6DL_PAD_SD3_DAT1__UART1_CTS_B            0x318 0x700 0x000 0x1 0x0
+-#define MX6DL_PAD_SD3_DAT1__FLEXCAN2_RX            0x318 0x700 0x7cc 0x2 0x1
+-#define MX6DL_PAD_SD3_DAT1__GPIO7_IO05             0x318 0x700 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_DAT2__SD3_DATA2              0x31c 0x704 0x000 0x0 0x0
+-#define MX6DL_PAD_SD3_DAT2__GPIO7_IO06             0x31c 0x704 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_DAT3__SD3_DATA3              0x320 0x708 0x000 0x0 0x0
+-#define MX6DL_PAD_SD3_DAT3__UART3_CTS_B            0x320 0x708 0x000 0x1 0x0
+-#define MX6DL_PAD_SD3_DAT3__UART3_RTS_B            0x320 0x708 0x908 0x1 0x4
+-#define MX6DL_PAD_SD3_DAT3__GPIO7_IO07             0x320 0x708 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_DAT4__SD3_DATA4              0x324 0x70c 0x000 0x0 0x0
+-#define MX6DL_PAD_SD3_DAT4__UART2_RX_DATA          0x324 0x70c 0x904 0x1 0x4
+-#define MX6DL_PAD_SD3_DAT4__UART2_TX_DATA          0x324 0x70c 0x000 0x1 0x0
+-#define MX6DL_PAD_SD3_DAT4__GPIO7_IO01             0x324 0x70c 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_DAT5__SD3_DATA5              0x328 0x710 0x000 0x0 0x0
+-#define MX6DL_PAD_SD3_DAT5__UART2_TX_DATA          0x328 0x710 0x000 0x1 0x0
+-#define MX6DL_PAD_SD3_DAT5__UART2_RX_DATA          0x328 0x710 0x904 0x1 0x5
+-#define MX6DL_PAD_SD3_DAT5__GPIO7_IO00             0x328 0x710 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_DAT6__SD3_DATA6              0x32c 0x714 0x000 0x0 0x0
+-#define MX6DL_PAD_SD3_DAT6__UART1_RX_DATA          0x32c 0x714 0x8fc 0x1 0x2
+-#define MX6DL_PAD_SD3_DAT6__UART1_TX_DATA          0x32c 0x714 0x000 0x1 0x0
+-#define MX6DL_PAD_SD3_DAT6__GPIO6_IO18             0x32c 0x714 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_DAT7__SD3_DATA7              0x330 0x718 0x000 0x0 0x0
+-#define MX6DL_PAD_SD3_DAT7__UART1_TX_DATA          0x330 0x718 0x000 0x1 0x0
+-#define MX6DL_PAD_SD3_DAT7__UART1_RX_DATA          0x330 0x718 0x8fc 0x1 0x3
+-#define MX6DL_PAD_SD3_DAT7__GPIO6_IO17             0x330 0x718 0x000 0x5 0x0
+-#define MX6DL_PAD_SD3_RST__SD3_RESET               0x334 0x71c 0x000 0x0 0x0
+-#define MX6DL_PAD_SD3_RST__UART3_RTS_B             0x334 0x71c 0x908 0x1 0x5
+-#define MX6DL_PAD_SD3_RST__UART3_CTS_B             0x334 0x71c 0x000 0x1 0x0
+-#define MX6DL_PAD_SD3_RST__GPIO7_IO08              0x334 0x71c 0x000 0x5 0x0
+-#define MX6DL_PAD_SD4_CLK__SD4_CLK                 0x338 0x720 0x938 0x0 0x1
+-#define MX6DL_PAD_SD4_CLK__NAND_WE_B               0x338 0x720 0x000 0x1 0x0
+-#define MX6DL_PAD_SD4_CLK__UART3_RX_DATA           0x338 0x720 0x90c 0x2 0x2
+-#define MX6DL_PAD_SD4_CLK__UART3_TX_DATA           0x338 0x720 0x000 0x2 0x0
+-#define MX6DL_PAD_SD4_CLK__GPIO7_IO10              0x338 0x720 0x000 0x5 0x0
+-#define MX6DL_PAD_SD4_CMD__SD4_CMD                 0x33c 0x724 0x000 0x0 0x0
+-#define MX6DL_PAD_SD4_CMD__NAND_RE_B               0x33c 0x724 0x000 0x1 0x0
+-#define MX6DL_PAD_SD4_CMD__UART3_TX_DATA           0x33c 0x724 0x000 0x2 0x0
+-#define MX6DL_PAD_SD4_CMD__UART3_RX_DATA           0x33c 0x724 0x90c 0x2 0x3
+-#define MX6DL_PAD_SD4_CMD__GPIO7_IO09              0x33c 0x724 0x000 0x5 0x0
+-#define MX6DL_PAD_SD4_DAT0__SD4_DATA0              0x340 0x728 0x000 0x1 0x0
+-#define MX6DL_PAD_SD4_DAT0__NAND_DQS               0x340 0x728 0x000 0x2 0x0
+-#define MX6DL_PAD_SD4_DAT0__GPIO2_IO08             0x340 0x728 0x000 0x5 0x0
+-#define MX6DL_PAD_SD4_DAT1__SD4_DATA1              0x344 0x72c 0x000 0x1 0x0
+-#define MX6DL_PAD_SD4_DAT1__PWM3_OUT               0x344 0x72c 0x000 0x2 0x0
+-#define MX6DL_PAD_SD4_DAT1__GPIO2_IO09             0x344 0x72c 0x000 0x5 0x0
+-#define MX6DL_PAD_SD4_DAT2__SD4_DATA2              0x348 0x730 0x000 0x1 0x0
+-#define MX6DL_PAD_SD4_DAT2__PWM4_OUT               0x348 0x730 0x000 0x2 0x0
+-#define MX6DL_PAD_SD4_DAT2__GPIO2_IO10             0x348 0x730 0x000 0x5 0x0
+-#define MX6DL_PAD_SD4_DAT3__SD4_DATA3              0x34c 0x734 0x000 0x1 0x0
+-#define MX6DL_PAD_SD4_DAT3__GPIO2_IO11             0x34c 0x734 0x000 0x5 0x0
+-#define MX6DL_PAD_SD4_DAT4__SD4_DATA4              0x350 0x738 0x000 0x1 0x0
+-#define MX6DL_PAD_SD4_DAT4__UART2_RX_DATA          0x350 0x738 0x904 0x2 0x6
+-#define MX6DL_PAD_SD4_DAT4__UART2_TX_DATA          0x350 0x738 0x000 0x2 0x0
+-#define MX6DL_PAD_SD4_DAT4__GPIO2_IO12             0x350 0x738 0x000 0x5 0x0
+-#define MX6DL_PAD_SD4_DAT5__SD4_DATA5              0x354 0x73c 0x000 0x1 0x0
+-#define MX6DL_PAD_SD4_DAT5__UART2_RTS_B            0x354 0x73c 0x900 0x2 0x4
+-#define MX6DL_PAD_SD4_DAT5__UART2_CTS_B            0x354 0x73c 0x000 0x2 0x0
+-#define MX6DL_PAD_SD4_DAT5__GPIO2_IO13             0x354 0x73c 0x000 0x5 0x0
+-#define MX6DL_PAD_SD4_DAT6__SD4_DATA6              0x358 0x740 0x000 0x1 0x0
+-#define MX6DL_PAD_SD4_DAT6__UART2_CTS_B            0x358 0x740 0x000 0x2 0x0
+-#define MX6DL_PAD_SD4_DAT6__UART2_RTS_B            0x358 0x740 0x900 0x2 0x5
+-#define MX6DL_PAD_SD4_DAT6__GPIO2_IO14             0x358 0x740 0x000 0x5 0x0
+-#define MX6DL_PAD_SD4_DAT7__SD4_DATA7              0x35c 0x744 0x000 0x1 0x0
+-#define MX6DL_PAD_SD4_DAT7__UART2_TX_DATA          0x35c 0x744 0x000 0x2 0x0
+-#define MX6DL_PAD_SD4_DAT7__UART2_RX_DATA          0x35c 0x744 0x904 0x2 0x7
+-#define MX6DL_PAD_SD4_DAT7__GPIO2_IO15             0x35c 0x744 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT10__IPU1_CSI0_DATA10     0x04c 0x360 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT10__AUD3_RXC             0x04c 0x360 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT10__ECSPI2_MISO          0x04c 0x360 0x7f8 0x2 0x0
++#define MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA        0x04c 0x360 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT10__UART1_RX_DATA        0x04c 0x360 0x8fc 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT10__GPIO5_IO28           0x04c 0x360 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT10__ARM_TRACE07          0x04c 0x360 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT11__IPU1_CSI0_DATA11     0x050 0x364 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT11__AUD3_RXFS            0x050 0x364 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT11__ECSPI2_SS0           0x050 0x364 0x800 0x2 0x0
++#define MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA        0x050 0x364 0x8fc 0x3 0x1
++#define MX6QDL_PAD_CSI0_DAT11__UART1_TX_DATA        0x050 0x364 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT11__GPIO5_IO29           0x050 0x364 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT11__ARM_TRACE08          0x050 0x364 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12     0x054 0x368 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT12__EIM_DATA08           0x054 0x368 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA        0x054 0x368 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT12__UART4_RX_DATA        0x054 0x368 0x914 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT12__GPIO5_IO30           0x054 0x368 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT12__ARM_TRACE09          0x054 0x368 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13     0x058 0x36c 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT13__EIM_DATA09           0x058 0x36c 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA        0x058 0x36c 0x914 0x3 0x1
++#define MX6QDL_PAD_CSI0_DAT13__UART4_TX_DATA        0x058 0x36c 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT13__GPIO5_IO31           0x058 0x36c 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT13__ARM_TRACE10          0x058 0x36c 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14     0x05c 0x370 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT14__EIM_DATA10           0x05c 0x370 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT14__UART5_TX_DATA        0x05c 0x370 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT14__UART5_RX_DATA        0x05c 0x370 0x91c 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT14__GPIO6_IO00           0x05c 0x370 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT14__ARM_TRACE11          0x05c 0x370 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15     0x060 0x374 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT15__EIM_DATA11           0x060 0x374 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT15__UART5_RX_DATA        0x060 0x374 0x91c 0x3 0x1
++#define MX6QDL_PAD_CSI0_DAT15__UART5_TX_DATA        0x060 0x374 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT15__GPIO6_IO01           0x060 0x374 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT15__ARM_TRACE12          0x060 0x374 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16     0x064 0x378 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT16__EIM_DATA12           0x064 0x378 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B          0x064 0x378 0x910 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT16__UART4_CTS_B          0x064 0x378 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT16__GPIO6_IO02           0x064 0x378 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT16__ARM_TRACE13          0x064 0x378 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17     0x068 0x37c 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT17__EIM_DATA13           0x068 0x37c 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT17__UART4_CTS_B          0x068 0x37c 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT17__UART4_RTS_B          0x068 0x37c 0x910 0x3 0x1
++#define MX6QDL_PAD_CSI0_DAT17__GPIO6_IO03           0x068 0x37c 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT17__ARM_TRACE14          0x068 0x37c 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18     0x06c 0x380 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT18__EIM_DATA14           0x06c 0x380 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT18__UART5_RTS_B          0x06c 0x380 0x918 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT18__UART5_CTS_B          0x06c 0x380 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT18__GPIO6_IO04           0x06c 0x380 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT18__ARM_TRACE15          0x06c 0x380 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19     0x070 0x384 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT19__EIM_DATA15           0x070 0x384 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT19__UART5_CTS_B          0x070 0x384 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT19__UART5_RTS_B          0x070 0x384 0x918 0x3 0x1
++#define MX6QDL_PAD_CSI0_DAT19__GPIO6_IO05           0x070 0x384 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT4__IPU1_CSI0_DATA04      0x074 0x388 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT4__EIM_DATA02            0x074 0x388 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT4__ECSPI1_SCLK           0x074 0x388 0x7d8 0x2 0x0
++#define MX6QDL_PAD_CSI0_DAT4__KEY_COL5              0x074 0x388 0x8c0 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT4__AUD3_TXC              0x074 0x388 0x000 0x4 0x0
++#define MX6QDL_PAD_CSI0_DAT4__GPIO5_IO22            0x074 0x388 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT4__ARM_TRACE01           0x074 0x388 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT5__IPU1_CSI0_DATA05      0x078 0x38c 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT5__EIM_DATA03            0x078 0x38c 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT5__ECSPI1_MOSI           0x078 0x38c 0x7e0 0x2 0x0
++#define MX6QDL_PAD_CSI0_DAT5__KEY_ROW5              0x078 0x38c 0x8cc 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT5__AUD3_TXD              0x078 0x38c 0x000 0x4 0x0
++#define MX6QDL_PAD_CSI0_DAT5__GPIO5_IO23            0x078 0x38c 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT5__ARM_TRACE02           0x078 0x38c 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT6__IPU1_CSI0_DATA06      0x07c 0x390 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT6__EIM_DATA04            0x07c 0x390 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT6__ECSPI1_MISO           0x07c 0x390 0x7dc 0x2 0x0
++#define MX6QDL_PAD_CSI0_DAT6__KEY_COL6              0x07c 0x390 0x8c4 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS             0x07c 0x390 0x000 0x4 0x0
++#define MX6QDL_PAD_CSI0_DAT6__GPIO5_IO24            0x07c 0x390 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT6__ARM_TRACE03           0x07c 0x390 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT7__IPU1_CSI0_DATA07      0x080 0x394 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT7__EIM_DATA05            0x080 0x394 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT7__ECSPI1_SS0            0x080 0x394 0x7e4 0x2 0x0
++#define MX6QDL_PAD_CSI0_DAT7__KEY_ROW6              0x080 0x394 0x8d0 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT7__AUD3_RXD              0x080 0x394 0x000 0x4 0x0
++#define MX6QDL_PAD_CSI0_DAT7__GPIO5_IO25            0x080 0x394 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT7__ARM_TRACE04           0x080 0x394 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT8__IPU1_CSI0_DATA08      0x084 0x398 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT8__EIM_DATA06            0x084 0x398 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT8__ECSPI2_SCLK           0x084 0x398 0x7f4 0x2 0x0
++#define MX6QDL_PAD_CSI0_DAT8__KEY_COL7              0x084 0x398 0x8c8 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT8__I2C1_SDA              0x084 0x398 0x86c 0x4 0x0
++#define MX6QDL_PAD_CSI0_DAT8__GPIO5_IO26            0x084 0x398 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT8__ARM_TRACE05           0x084 0x398 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT9__IPU1_CSI0_DATA09      0x088 0x39c 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT9__EIM_DATA07            0x088 0x39c 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT9__ECSPI2_MOSI           0x088 0x39c 0x7fc 0x2 0x0
++#define MX6QDL_PAD_CSI0_DAT9__KEY_ROW7              0x088 0x39c 0x8d4 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT9__I2C1_SCL              0x088 0x39c 0x868 0x4 0x0
++#define MX6QDL_PAD_CSI0_DAT9__GPIO5_IO27            0x088 0x39c 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT9__ARM_TRACE06           0x088 0x39c 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DATA_EN__IPU1_CSI0_DATA_EN  0x08c 0x3a0 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DATA_EN__EIM_DATA00         0x08c 0x3a0 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20         0x08c 0x3a0 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DATA_EN__ARM_TRACE_CLK      0x08c 0x3a0 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC       0x090 0x3a4 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_MCLK__CCM_CLKO1             0x090 0x3a4 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_MCLK__GPIO5_IO19            0x090 0x3a4 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_MCLK__ARM_TRACE_CTL         0x090 0x3a4 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK    0x094 0x3a8 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_PIXCLK__GPIO5_IO18          0x094 0x3a8 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_PIXCLK__ARM_EVENTO          0x094 0x3a8 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC      0x098 0x3ac 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_VSYNC__EIM_DATA01           0x098 0x3ac 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_VSYNC__GPIO5_IO21           0x098 0x3ac 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_VSYNC__ARM_TRACE00          0x098 0x3ac 0x000 0x7 0x0
++#define MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK  0x09c 0x3b0 0x000 0x0 0x0
++#define MX6QDL_PAD_DI0_DISP_CLK__LCD_CLK            0x09c 0x3b0 0x000 0x1 0x0
++#define MX6QDL_PAD_DI0_DISP_CLK__GPIO4_IO16         0x09c 0x3b0 0x000 0x5 0x0
++#define MX6QDL_PAD_DI0_DISP_CLK__LCD_WR_RWN         0x09c 0x3b0 0x000 0x8 0x0
++#define MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15        0x0a0 0x3b4 0x000 0x0 0x0
++#define MX6QDL_PAD_DI0_PIN15__LCD_ENABLE            0x0a0 0x3b4 0x000 0x1 0x0
++#define MX6QDL_PAD_DI0_PIN15__AUD6_TXC              0x0a0 0x3b4 0x000 0x2 0x0
++#define MX6QDL_PAD_DI0_PIN15__GPIO4_IO17            0x0a0 0x3b4 0x000 0x5 0x0
++#define MX6QDL_PAD_DI0_PIN15__LCD_RD_E              0x0a0 0x3b4 0x000 0x8 0x0
++#define MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02         0x0a4 0x3b8 0x000 0x0 0x0
++#define MX6QDL_PAD_DI0_PIN2__LCD_HSYNC              0x0a4 0x3b8 0x8d8 0x1 0x0
++#define MX6QDL_PAD_DI0_PIN2__AUD6_TXD               0x0a4 0x3b8 0x000 0x2 0x0
++#define MX6QDL_PAD_DI0_PIN2__GPIO4_IO18             0x0a4 0x3b8 0x000 0x5 0x0
++#define MX6QDL_PAD_DI0_PIN2__LCD_RS                 0x0a4 0x3b8 0x000 0x8 0x0
++#define MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03         0x0a8 0x3bc 0x000 0x0 0x0
++#define MX6QDL_PAD_DI0_PIN3__LCD_VSYNC              0x0a8 0x3bc 0x000 0x1 0x0
++#define MX6QDL_PAD_DI0_PIN3__AUD6_TXFS              0x0a8 0x3bc 0x000 0x2 0x0
++#define MX6QDL_PAD_DI0_PIN3__GPIO4_IO19             0x0a8 0x3bc 0x000 0x5 0x0
++#define MX6QDL_PAD_DI0_PIN3__LCD_CS                 0x0a8 0x3bc 0x000 0x8 0x0
++#define MX6QDL_PAD_DI0_PIN4__IPU1_DI0_PIN04         0x0ac 0x3c0 0x000 0x0 0x0
++#define MX6QDL_PAD_DI0_PIN4__LCD_BUSY               0x0ac 0x3c0 0x8d8 0x1 0x1
++#define MX6QDL_PAD_DI0_PIN4__AUD6_RXD               0x0ac 0x3c0 0x000 0x2 0x0
++#define MX6QDL_PAD_DI0_PIN4__SD1_WP                 0x0ac 0x3c0 0x92c 0x3 0x0
++#define MX6QDL_PAD_DI0_PIN4__GPIO4_IO20             0x0ac 0x3c0 0x000 0x5 0x0
++#define MX6QDL_PAD_DI0_PIN4__LCD_RESET              0x0ac 0x3c0 0x000 0x8 0x0
++#define MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00    0x0b0 0x3c4 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT0__LCD_DATA00           0x0b0 0x3c4 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT0__ECSPI3_SCLK          0x0b0 0x3c4 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT0__GPIO4_IO21           0x0b0 0x3c4 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01    0x0b4 0x3c8 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT1__LCD_DATA01           0x0b4 0x3c8 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT1__ECSPI3_MOSI          0x0b4 0x3c8 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT1__GPIO4_IO22           0x0b4 0x3c8 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10   0x0b8 0x3cc 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT10__LCD_DATA10          0x0b8 0x3cc 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT10__GPIO4_IO31          0x0b8 0x3cc 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11   0x0bc 0x3d0 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT11__LCD_DATA11          0x0bc 0x3d0 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT11__GPIO5_IO05          0x0bc 0x3d0 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12   0x0c0 0x3d4 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT12__LCD_DATA12          0x0c0 0x3d4 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT12__GPIO5_IO06          0x0c0 0x3d4 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13   0x0c4 0x3d8 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT13__LCD_DATA13          0x0c4 0x3d8 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT13__AUD5_RXFS           0x0c4 0x3d8 0x7bc 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT13__GPIO5_IO07          0x0c4 0x3d8 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14   0x0c8 0x3dc 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT14__LCD_DATA14          0x0c8 0x3dc 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT14__AUD5_RXC            0x0c8 0x3dc 0x7b8 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT14__GPIO5_IO08          0x0c8 0x3dc 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15   0x0cc 0x3e0 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT15__LCD_DATA15          0x0cc 0x3e0 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT15__ECSPI1_SS1          0x0cc 0x3e0 0x7e8 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT15__ECSPI2_SS1          0x0cc 0x3e0 0x804 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT15__GPIO5_IO09          0x0cc 0x3e0 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16   0x0d0 0x3e4 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT16__LCD_DATA16          0x0d0 0x3e4 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT16__ECSPI2_MOSI         0x0d0 0x3e4 0x7fc 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT16__AUD5_TXC            0x0d0 0x3e4 0x7c0 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT16__SDMA_EXT_EVENT0     0x0d0 0x3e4 0x8e8 0x4 0x0
++#define MX6QDL_PAD_DISP0_DAT16__GPIO5_IO10          0x0d0 0x3e4 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17   0x0d4 0x3e8 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT17__LCD_DATA17          0x0d4 0x3e8 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT17__ECSPI2_MISO         0x0d4 0x3e8 0x7f8 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT17__AUD5_TXD            0x0d4 0x3e8 0x7b4 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT17__SDMA_EXT_EVENT1     0x0d4 0x3e8 0x8ec 0x4 0x0
++#define MX6QDL_PAD_DISP0_DAT17__GPIO5_IO11          0x0d4 0x3e8 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18   0x0d8 0x3ec 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT18__LCD_DATA18          0x0d8 0x3ec 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT18__ECSPI2_SS0          0x0d8 0x3ec 0x800 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS           0x0d8 0x3ec 0x7c4 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT18__AUD4_RXFS           0x0d8 0x3ec 0x7a4 0x4 0x0
++#define MX6QDL_PAD_DISP0_DAT18__GPIO5_IO12          0x0d8 0x3ec 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT18__EIM_CS2_B           0x0d8 0x3ec 0x000 0x7 0x0
++#define MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19   0x0dc 0x3f0 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT19__LCD_DATA19          0x0dc 0x3f0 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT19__ECSPI2_SCLK         0x0dc 0x3f0 0x7f4 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT19__AUD5_RXD            0x0dc 0x3f0 0x7b0 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT19__AUD4_RXC            0x0dc 0x3f0 0x7a0 0x4 0x0
++#define MX6QDL_PAD_DISP0_DAT19__GPIO5_IO13          0x0dc 0x3f0 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT19__EIM_CS3_B           0x0dc 0x3f0 0x000 0x7 0x0
++#define MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02    0x0e0 0x3f4 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT2__LCD_DATA02           0x0e0 0x3f4 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT2__ECSPI3_MISO          0x0e0 0x3f4 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT2__GPIO4_IO23           0x0e0 0x3f4 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20   0x0e4 0x3f8 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT20__LCD_DATA20          0x0e4 0x3f8 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT20__ECSPI1_SCLK         0x0e4 0x3f8 0x7d8 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT20__AUD4_TXC            0x0e4 0x3f8 0x7a8 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT20__GPIO5_IO14          0x0e4 0x3f8 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21   0x0e8 0x3fc 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT21__LCD_DATA21          0x0e8 0x3fc 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT21__ECSPI1_MOSI         0x0e8 0x3fc 0x7e0 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT21__AUD4_TXD            0x0e8 0x3fc 0x79c 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT21__GPIO5_IO15          0x0e8 0x3fc 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22   0x0ec 0x400 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT22__LCD_DATA22          0x0ec 0x400 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT22__ECSPI1_MISO         0x0ec 0x400 0x7dc 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS           0x0ec 0x400 0x7ac 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT22__GPIO5_IO16          0x0ec 0x400 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23   0x0f0 0x404 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT23__LCD_DATA23          0x0f0 0x404 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT23__ECSPI1_SS0          0x0f0 0x404 0x7e4 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT23__AUD4_RXD            0x0f0 0x404 0x798 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17          0x0f0 0x404 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03    0x0f4 0x408 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT3__LCD_DATA03           0x0f4 0x408 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT3__ECSPI3_SS0           0x0f4 0x408 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT3__GPIO4_IO24           0x0f4 0x408 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04    0x0f8 0x40c 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT4__LCD_DATA04           0x0f8 0x40c 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT4__ECSPI3_SS1           0x0f8 0x40c 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT4__GPIO4_IO25           0x0f8 0x40c 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05    0x0fc 0x410 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT5__LCD_DATA05           0x0fc 0x410 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT5__ECSPI3_SS2           0x0fc 0x410 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT5__AUD6_RXFS            0x0fc 0x410 0x000 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT5__GPIO4_IO26           0x0fc 0x410 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06    0x100 0x414 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT6__LCD_DATA06           0x100 0x414 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT6__ECSPI3_SS3           0x100 0x414 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT6__AUD6_RXC             0x100 0x414 0x000 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT6__GPIO4_IO27           0x100 0x414 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07    0x104 0x418 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT7__LCD_DATA07           0x104 0x418 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT7__ECSPI3_RDY           0x104 0x418 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT7__GPIO4_IO28           0x104 0x418 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08    0x108 0x41c 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT8__LCD_DATA08           0x108 0x41c 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT8__PWM1_OUT             0x108 0x41c 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT8__WDOG1_B              0x108 0x41c 0x000 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT8__GPIO4_IO29           0x108 0x41c 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09    0x10c 0x420 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT9__LCD_DATA09           0x10c 0x420 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT9__PWM2_OUT             0x10c 0x420 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT9__WDOG2_B              0x10c 0x420 0x000 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30           0x10c 0x420 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A16__EIM_ADDR16              0x110 0x4e0 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A16__IPU1_DI1_DISP_CLK       0x110 0x4e0 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A16__IPU1_CSI1_PIXCLK        0x110 0x4e0 0x8b8 0x2 0x0
++#define MX6QDL_PAD_EIM_A16__GPIO2_IO22              0x110 0x4e0 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A16__SRC_BOOT_CFG16          0x110 0x4e0 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A16__EPDC_DATA00             0x110 0x4e0 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_A17__EIM_ADDR17              0x114 0x4e4 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A17__IPU1_DISP1_DATA12       0x114 0x4e4 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A17__IPU1_CSI1_DATA12        0x114 0x4e4 0x890 0x2 0x0
++#define MX6QDL_PAD_EIM_A17__GPIO2_IO21              0x114 0x4e4 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A17__SRC_BOOT_CFG17          0x114 0x4e4 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A17__EPDC_PWR_STAT           0x114 0x4e4 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_A18__EIM_ADDR18              0x118 0x4e8 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A18__IPU1_DISP1_DATA13       0x118 0x4e8 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A18__IPU1_CSI1_DATA13        0x118 0x4e8 0x894 0x2 0x0
++#define MX6QDL_PAD_EIM_A18__GPIO2_IO20              0x118 0x4e8 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A18__SRC_BOOT_CFG18          0x118 0x4e8 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A18__EPDC_PWR_CTRL0          0x118 0x4e8 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_A19__EIM_ADDR19              0x11c 0x4ec 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A19__IPU1_DISP1_DATA14       0x11c 0x4ec 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A19__IPU1_CSI1_DATA14        0x11c 0x4ec 0x898 0x2 0x0
++#define MX6QDL_PAD_EIM_A19__GPIO2_IO19              0x11c 0x4ec 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A19__SRC_BOOT_CFG19          0x11c 0x4ec 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A19__EPDC_PWR_CTRL1          0x11c 0x4ec 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_A20__EIM_ADDR20              0x120 0x4f0 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A20__IPU1_DISP1_DATA15       0x120 0x4f0 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A20__IPU1_CSI1_DATA15        0x120 0x4f0 0x89c 0x2 0x0
++#define MX6QDL_PAD_EIM_A20__GPIO2_IO18              0x120 0x4f0 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A20__SRC_BOOT_CFG20          0x120 0x4f0 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A20__EPDC_PWR_CTRL2          0x120 0x4f0 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_A21__EIM_ADDR21              0x124 0x4f4 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A21__IPU1_DISP1_DATA16       0x124 0x4f4 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A21__IPU1_CSI1_DATA16        0x124 0x4f4 0x8a0 0x2 0x0
++#define MX6QDL_PAD_EIM_A21__GPIO2_IO17              0x124 0x4f4 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A21__SRC_BOOT_CFG21          0x124 0x4f4 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A21__EPDC_GDCLK              0x124 0x4f4 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_A22__EIM_ADDR22              0x128 0x4f8 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A22__IPU1_DISP1_DATA17       0x128 0x4f8 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A22__IPU1_CSI1_DATA17        0x128 0x4f8 0x8a4 0x2 0x0
++#define MX6QDL_PAD_EIM_A22__GPIO2_IO16              0x128 0x4f8 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A22__SRC_BOOT_CFG22          0x128 0x4f8 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A22__EPDC_GDSP               0x128 0x4f8 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_A23__EIM_ADDR23              0x12c 0x4fc 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A23__IPU1_DISP1_DATA18       0x12c 0x4fc 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A23__IPU1_CSI1_DATA18        0x12c 0x4fc 0x8a8 0x2 0x0
++#define MX6QDL_PAD_EIM_A23__IPU1_SISG3              0x12c 0x4fc 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_A23__GPIO6_IO06              0x12c 0x4fc 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A23__SRC_BOOT_CFG23          0x12c 0x4fc 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A23__EPDC_GDOE               0x12c 0x4fc 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_A24__EIM_ADDR24              0x130 0x500 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A24__IPU1_DISP1_DATA19       0x130 0x500 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A24__IPU1_CSI1_DATA19        0x130 0x500 0x8ac 0x2 0x0
++#define MX6QDL_PAD_EIM_A24__IPU1_SISG2              0x130 0x500 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_A24__GPIO5_IO04              0x130 0x500 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A24__SRC_BOOT_CFG24          0x130 0x500 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A24__EPDC_GDRL               0x130 0x500 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_A25__EIM_ADDR25              0x134 0x504 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A25__ECSPI4_SS1              0x134 0x504 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A25__ECSPI2_RDY              0x134 0x504 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_A25__IPU1_DI1_PIN12          0x134 0x504 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_A25__IPU1_DI0_D1_CS          0x134 0x504 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_A25__GPIO5_IO02              0x134 0x504 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A25__HDMI_TX_CEC_LINE        0x134 0x504 0x85c 0x6 0x0
++#define MX6QDL_PAD_EIM_A25__EPDC_DATA15             0x134 0x504 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_A25__EIM_ACLK_FREERUN        0x134 0x504 0x000 0x9 0x0
++#define MX6QDL_PAD_EIM_BCLK__EIM_BCLK               0x138 0x508 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_BCLK__IPU1_DI1_PIN16         0x138 0x508 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_BCLK__GPIO6_IO31             0x138 0x508 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_BCLK__EPDC_SDCE9             0x138 0x508 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_CS0__EIM_CS0_B               0x13c 0x50c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_CS0__IPU1_DI1_PIN05          0x13c 0x50c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK             0x13c 0x50c 0x7f4 0x2 0x2
++#define MX6QDL_PAD_EIM_CS0__GPIO2_IO23              0x13c 0x50c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_CS0__EPDC_DATA06             0x13c 0x50c 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_CS1__EIM_CS1_B               0x140 0x510 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_CS1__IPU1_DI1_PIN06          0x140 0x510 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI             0x140 0x510 0x7fc 0x2 0x2
++#define MX6QDL_PAD_EIM_CS1__GPIO2_IO24              0x140 0x510 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_CS1__EPDC_DATA08             0x140 0x510 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D16__EIM_DATA16              0x144 0x514 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D16__ECSPI1_SCLK             0x144 0x514 0x7d8 0x1 0x2
++#define MX6QDL_PAD_EIM_D16__IPU1_DI0_PIN05          0x144 0x514 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D16__IPU1_CSI1_DATA18        0x144 0x514 0x8a8 0x3 0x1
++#define MX6QDL_PAD_EIM_D16__HDMI_TX_DDC_SDA         0x144 0x514 0x864 0x4 0x0
++#define MX6QDL_PAD_EIM_D16__GPIO3_IO16              0x144 0x514 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D16__I2C2_SDA                0x144 0x514 0x874 0x6 0x0
++#define MX6QDL_PAD_EIM_D16__EPDC_DATA10             0x144 0x514 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D17__EIM_DATA17              0x148 0x518 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D17__ECSPI1_MISO             0x148 0x518 0x7dc 0x1 0x2
++#define MX6QDL_PAD_EIM_D17__IPU1_DI0_PIN06          0x148 0x518 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D17__IPU1_CSI1_PIXCLK        0x148 0x518 0x8b8 0x3 0x1
++#define MX6QDL_PAD_EIM_D17__DCIC1_OUT               0x148 0x518 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D17__GPIO3_IO17              0x148 0x518 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D17__I2C3_SCL                0x148 0x518 0x878 0x6 0x0
++#define MX6QDL_PAD_EIM_D17__EPDC_VCOM0              0x148 0x518 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D18__EIM_DATA18              0x14c 0x51c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D18__ECSPI1_MOSI             0x14c 0x51c 0x7e0 0x1 0x2
++#define MX6QDL_PAD_EIM_D18__IPU1_DI0_PIN07          0x14c 0x51c 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D18__IPU1_CSI1_DATA17        0x14c 0x51c 0x8a4 0x3 0x1
++#define MX6QDL_PAD_EIM_D18__IPU1_DI1_D0_CS          0x14c 0x51c 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D18__GPIO3_IO18              0x14c 0x51c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D18__I2C3_SDA                0x14c 0x51c 0x87c 0x6 0x0
++#define MX6QDL_PAD_EIM_D18__EPDC_VCOM1              0x14c 0x51c 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D19__EIM_DATA19              0x150 0x520 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D19__ECSPI1_SS1              0x150 0x520 0x7e8 0x1 0x1
++#define MX6QDL_PAD_EIM_D19__IPU1_DI0_PIN08          0x150 0x520 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D19__IPU1_CSI1_DATA16        0x150 0x520 0x8a0 0x3 0x1
++#define MX6QDL_PAD_EIM_D19__UART1_CTS_B             0x150 0x520 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D19__UART1_RTS_B             0x150 0x520 0x8f8 0x4 0x0
++#define MX6QDL_PAD_EIM_D19__GPIO3_IO19              0x150 0x520 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D19__EPIT1_OUT               0x150 0x520 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D19__EPDC_DATA12             0x150 0x520 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D20__EIM_DATA20              0x154 0x524 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D20__ECSPI4_SS0              0x154 0x524 0x808 0x1 0x0
++#define MX6QDL_PAD_EIM_D20__IPU1_DI0_PIN16          0x154 0x524 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D20__IPU1_CSI1_DATA15        0x154 0x524 0x89c 0x3 0x1
++#define MX6QDL_PAD_EIM_D20__UART1_RTS_B             0x154 0x524 0x8f8 0x4 0x1
++#define MX6QDL_PAD_EIM_D20__UART1_CTS_B             0x154 0x524 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D20__GPIO3_IO20              0x154 0x524 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D20__EPIT2_OUT               0x154 0x524 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D21__EIM_DATA21              0x158 0x528 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D21__ECSPI4_SCLK             0x158 0x528 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D21__IPU1_DI0_PIN17          0x158 0x528 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D21__IPU1_CSI1_DATA11        0x158 0x528 0x88c 0x3 0x0
++#define MX6QDL_PAD_EIM_D21__USB_OTG_OC              0x158 0x528 0x920 0x4 0x0
++#define MX6QDL_PAD_EIM_D21__GPIO3_IO21              0x158 0x528 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D21__I2C1_SCL                0x158 0x528 0x868 0x6 0x1
++#define MX6QDL_PAD_EIM_D21__SPDIF_IN                0x158 0x528 0x8f0 0x7 0x0
++#define MX6QDL_PAD_EIM_D22__EIM_DATA22              0x15c 0x52c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D22__ECSPI4_MISO             0x15c 0x52c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D22__IPU1_DI0_PIN01          0x15c 0x52c 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D22__IPU1_CSI1_DATA10        0x15c 0x52c 0x888 0x3 0x0
++#define MX6QDL_PAD_EIM_D22__USB_OTG_PWR             0x15c 0x52c 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D22__GPIO3_IO22              0x15c 0x52c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D22__SPDIF_OUT               0x15c 0x52c 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D22__EPDC_SDCE6              0x15c 0x52c 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D23__EIM_DATA23              0x160 0x530 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D23__IPU1_DI0_D0_CS          0x160 0x530 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D23__UART3_CTS_B             0x160 0x530 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D23__UART3_RTS_B             0x160 0x530 0x908 0x2 0x0
++#define MX6QDL_PAD_EIM_D23__UART1_DCD_B             0x160 0x530 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_D23__IPU1_CSI1_DATA_EN       0x160 0x530 0x8b0 0x4 0x0
++#define MX6QDL_PAD_EIM_D23__GPIO3_IO23              0x160 0x530 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D23__IPU1_DI1_PIN02          0x160 0x530 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D23__IPU1_DI1_PIN14          0x160 0x530 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D23__EPDC_DATA11             0x160 0x530 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D24__EIM_DATA24              0x164 0x534 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D24__ECSPI4_SS2              0x164 0x534 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D24__UART3_TX_DATA           0x164 0x534 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D24__UART3_RX_DATA           0x164 0x534 0x90c 0x2 0x0
++#define MX6QDL_PAD_EIM_D24__ECSPI1_SS2              0x164 0x534 0x7ec 0x3 0x0
++#define MX6QDL_PAD_EIM_D24__ECSPI2_SS2              0x164 0x534 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D24__GPIO3_IO24              0x164 0x534 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D24__AUD5_RXFS               0x164 0x534 0x7bc 0x6 0x1
++#define MX6QDL_PAD_EIM_D24__UART1_DTR_B             0x164 0x534 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D24__EPDC_SDCE7              0x164 0x534 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D25__EIM_DATA25              0x168 0x538 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D25__ECSPI4_SS3              0x168 0x538 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D25__UART3_RX_DATA           0x168 0x538 0x90c 0x2 0x1
++#define MX6QDL_PAD_EIM_D25__UART3_TX_DATA           0x168 0x538 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D25__ECSPI1_SS3              0x168 0x538 0x7f0 0x3 0x0
++#define MX6QDL_PAD_EIM_D25__ECSPI2_SS3              0x168 0x538 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D25__GPIO3_IO25              0x168 0x538 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D25__AUD5_RXC                0x168 0x538 0x7b8 0x6 0x1
++#define MX6QDL_PAD_EIM_D25__UART1_DSR_B             0x168 0x538 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D25__EPDC_SDCE8              0x168 0x538 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D26__EIM_DATA26              0x16c 0x53c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D26__IPU1_DI1_PIN11          0x16c 0x53c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D26__IPU1_CSI0_DATA01        0x16c 0x53c 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D26__IPU1_CSI1_DATA14        0x16c 0x53c 0x898 0x3 0x1
++#define MX6QDL_PAD_EIM_D26__UART2_TX_DATA           0x16c 0x53c 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D26__UART2_RX_DATA           0x16c 0x53c 0x904 0x4 0x0
++#define MX6QDL_PAD_EIM_D26__GPIO3_IO26              0x16c 0x53c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D26__IPU1_SISG2              0x16c 0x53c 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D26__IPU1_DISP1_DATA22       0x16c 0x53c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D26__EPDC_SDOED              0x16c 0x53c 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D27__EIM_DATA27              0x170 0x540 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D27__IPU1_DI1_PIN13          0x170 0x540 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D27__IPU1_CSI0_DATA00        0x170 0x540 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D27__IPU1_CSI1_DATA13        0x170 0x540 0x894 0x3 0x1
++#define MX6QDL_PAD_EIM_D27__UART2_RX_DATA           0x170 0x540 0x904 0x4 0x1
++#define MX6QDL_PAD_EIM_D27__UART2_TX_DATA           0x170 0x540 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D27__GPIO3_IO27              0x170 0x540 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D27__IPU1_SISG3              0x170 0x540 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D27__IPU1_DISP1_DATA23       0x170 0x540 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D27__EPDC_SDOE               0x170 0x540 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D28__EIM_DATA28              0x174 0x544 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D28__I2C1_SDA                0x174 0x544 0x86c 0x1 0x1
++#define MX6QDL_PAD_EIM_D28__ECSPI4_MOSI             0x174 0x544 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D28__IPU1_CSI1_DATA12        0x174 0x544 0x890 0x3 0x1
++#define MX6QDL_PAD_EIM_D28__UART2_CTS_B             0x174 0x544 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D28__UART2_RTS_B             0x174 0x544 0x900 0x4 0x0
++#define MX6QDL_PAD_EIM_D28__UART2_DTE_CTS_B         0x174 0x544 0x900 0x4 0x0
++#define MX6QDL_PAD_EIM_D28__UART2_DTE_RTS_B         0x174 0x544 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D28__GPIO3_IO28              0x174 0x544 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D28__IPU1_EXT_TRIG           0x174 0x544 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D28__IPU1_DI0_PIN13          0x174 0x544 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D28__EPDC_PWR_CTRL3          0x174 0x544 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D29__EIM_DATA29              0x178 0x548 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D29__IPU1_DI1_PIN15          0x178 0x548 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D29__ECSPI4_SS0              0x178 0x548 0x808 0x2 0x1
++#define MX6QDL_PAD_EIM_D29__UART2_RTS_B             0x178 0x548 0x900 0x4 0x1
++#define MX6QDL_PAD_EIM_D29__UART2_CTS_B             0x178 0x548 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D29__UART2_DTE_RTS_B         0x178 0x548 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D29__UART2_DTE_CTS_B         0x178 0x548 0x900 0x4 0x1
++#define MX6QDL_PAD_EIM_D29__GPIO3_IO29              0x178 0x548 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D29__IPU1_CSI1_VSYNC         0x178 0x548 0x8bc 0x6 0x0
++#define MX6QDL_PAD_EIM_D29__IPU1_DI0_PIN14          0x178 0x548 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D29__EPDC_PWR_WAKE           0x178 0x548 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D30__EIM_DATA30              0x17c 0x54c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D30__IPU1_DISP1_DATA21       0x17c 0x54c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D30__IPU1_DI0_PIN11          0x17c 0x54c 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D30__IPU1_CSI0_DATA03        0x17c 0x54c 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_D30__UART3_CTS_B             0x17c 0x54c 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D30__UART3_RTS_B             0x17c 0x54c 0x908 0x4 0x1
++#define MX6QDL_PAD_EIM_D30__GPIO3_IO30              0x17c 0x54c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D30__USB_H1_OC               0x17c 0x54c 0x924 0x6 0x0
++#define MX6QDL_PAD_EIM_D30__EPDC_SDOEZ              0x17c 0x54c 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D31__EIM_DATA31              0x180 0x550 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D31__IPU1_DISP1_DATA20       0x180 0x550 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D31__IPU1_DI0_PIN12          0x180 0x550 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D31__IPU1_CSI0_DATA02        0x180 0x550 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_D31__UART3_RTS_B             0x180 0x550 0x908 0x4 0x2
++#define MX6QDL_PAD_EIM_D31__UART3_CTS_B             0x180 0x550 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D31__GPIO3_IO31              0x180 0x550 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D31__USB_H1_PWR              0x180 0x550 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D31__EPDC_SDCLK_P            0x180 0x550 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_D31__EIM_ACLK_FREERUN        0x180 0x550 0x000 0x9 0x0
++#define MX6QDL_PAD_EIM_DA0__EIM_AD00                0x184 0x554 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA0__IPU1_DISP1_DATA09       0x184 0x554 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA0__IPU1_CSI1_DATA09        0x184 0x554 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA0__GPIO3_IO00              0x184 0x554 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA0__SRC_BOOT_CFG00          0x184 0x554 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA0__EPDC_SDCLK_N            0x184 0x554 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA1__EIM_AD01                0x188 0x558 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA1__IPU1_DISP1_DATA08       0x188 0x558 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA1__IPU1_CSI1_DATA08        0x188 0x558 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA1__GPIO3_IO01              0x188 0x558 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA1__SRC_BOOT_CFG01          0x188 0x558 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA1__EPDC_SDLE               0x188 0x558 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA10__EIM_AD10               0x18c 0x55c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA10__IPU1_DI1_PIN15         0x18c 0x55c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA10__IPU1_CSI1_DATA_EN      0x18c 0x55c 0x8b0 0x2 0x1
++#define MX6QDL_PAD_EIM_DA10__GPIO3_IO10             0x18c 0x55c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA10__SRC_BOOT_CFG10         0x18c 0x55c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA10__EPDC_DATA01            0x18c 0x55c 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA11__EIM_AD11               0x190 0x560 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA11__IPU1_DI1_PIN02         0x190 0x560 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA11__IPU1_CSI1_HSYNC        0x190 0x560 0x8b4 0x2 0x0
++#define MX6QDL_PAD_EIM_DA11__GPIO3_IO11             0x190 0x560 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA11__SRC_BOOT_CFG11         0x190 0x560 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA11__EPDC_DATA03            0x190 0x560 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA12__EIM_AD12               0x194 0x564 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA12__IPU1_DI1_PIN03         0x194 0x564 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA12__IPU1_CSI1_VSYNC        0x194 0x564 0x8bc 0x2 0x1
++#define MX6QDL_PAD_EIM_DA12__GPIO3_IO12             0x194 0x564 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA12__SRC_BOOT_CFG12         0x194 0x564 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA12__EPDC_DATA02            0x194 0x564 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA13__EIM_AD13               0x198 0x568 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA13__IPU1_DI1_D0_CS         0x198 0x568 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA13__GPIO3_IO13             0x198 0x568 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA13__SRC_BOOT_CFG13         0x198 0x568 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA13__EPDC_DATA13            0x198 0x568 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA14__EIM_AD14               0x19c 0x56c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA14__IPU1_DI1_D1_CS         0x19c 0x56c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA14__GPIO3_IO14             0x19c 0x56c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA14__SRC_BOOT_CFG14         0x19c 0x56c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA14__EPDC_DATA14            0x19c 0x56c 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA15__EIM_AD15               0x1a0 0x570 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA15__IPU1_DI1_PIN01         0x1a0 0x570 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA15__IPU1_DI1_PIN04         0x1a0 0x570 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA15__GPIO3_IO15             0x1a0 0x570 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA15__SRC_BOOT_CFG15         0x1a0 0x570 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA15__EPDC_DATA09            0x1a0 0x570 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA2__EIM_AD02                0x1a4 0x574 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA2__IPU1_DISP1_DATA07       0x1a4 0x574 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA2__IPU1_CSI1_DATA07        0x1a4 0x574 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA2__GPIO3_IO02              0x1a4 0x574 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA2__SRC_BOOT_CFG02          0x1a4 0x574 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA2__EPDC_BDR0               0x1a4 0x574 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA3__EIM_AD03                0x1a8 0x578 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA3__IPU1_DISP1_DATA06       0x1a8 0x578 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA3__IPU1_CSI1_DATA06        0x1a8 0x578 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA3__GPIO3_IO03              0x1a8 0x578 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA3__SRC_BOOT_CFG03          0x1a8 0x578 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA3__EPDC_BDR1               0x1a8 0x578 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA4__EIM_AD04                0x1ac 0x57c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA4__IPU1_DISP1_DATA05       0x1ac 0x57c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA4__IPU1_CSI1_DATA05        0x1ac 0x57c 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA4__GPIO3_IO04              0x1ac 0x57c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA4__SRC_BOOT_CFG04          0x1ac 0x57c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA4__EPDC_SDCE0              0x1ac 0x57c 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA5__EIM_AD05                0x1b0 0x580 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA5__IPU1_DISP1_DATA04       0x1b0 0x580 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA5__IPU1_CSI1_DATA04        0x1b0 0x580 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA5__GPIO3_IO05              0x1b0 0x580 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA5__SRC_BOOT_CFG05          0x1b0 0x580 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA5__EPDC_SDCE1              0x1b0 0x580 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA6__EIM_AD06                0x1b4 0x584 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA6__IPU1_DISP1_DATA03       0x1b4 0x584 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA6__IPU1_CSI1_DATA03        0x1b4 0x584 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA6__GPIO3_IO06              0x1b4 0x584 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA6__SRC_BOOT_CFG06          0x1b4 0x584 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA6__EPDC_SDCE2              0x1b4 0x584 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA7__EIM_AD07                0x1b8 0x588 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA7__IPU1_DISP1_DATA02       0x1b8 0x588 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA7__IPU1_CSI1_DATA02        0x1b8 0x588 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA7__GPIO3_IO07              0x1b8 0x588 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA7__SRC_BOOT_CFG07          0x1b8 0x588 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA7__EPDC_SDCE3              0x1b8 0x588 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA8__EIM_AD08                0x1bc 0x58c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA8__IPU1_DISP1_DATA01       0x1bc 0x58c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA8__IPU1_CSI1_DATA01        0x1bc 0x58c 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA8__GPIO3_IO08              0x1bc 0x58c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA8__SRC_BOOT_CFG08          0x1bc 0x58c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA8__EPDC_SDCE4              0x1bc 0x58c 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_DA9__EIM_AD09                0x1c0 0x590 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA9__IPU1_DISP1_DATA00       0x1c0 0x590 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA9__IPU1_CSI1_DATA00        0x1c0 0x590 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA9__GPIO3_IO09              0x1c0 0x590 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA9__SRC_BOOT_CFG09          0x1c0 0x590 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA9__EPDC_SDCE5              0x1c0 0x590 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_EB0__EIM_EB0_B               0x1c4 0x594 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_EB0__IPU1_DISP1_DATA11       0x1c4 0x594 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_EB0__IPU1_CSI1_DATA11        0x1c4 0x594 0x88c 0x2 0x1
++#define MX6QDL_PAD_EIM_EB0__CCM_PMIC_READY          0x1c4 0x594 0x7d4 0x4 0x0
++#define MX6QDL_PAD_EIM_EB0__GPIO2_IO28              0x1c4 0x594 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_EB0__SRC_BOOT_CFG27          0x1c4 0x594 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_EB0__EPDC_PWR_COM            0x1c4 0x594 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_EB1__EIM_EB1_B               0x1c8 0x598 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_EB1__IPU1_DISP1_DATA10       0x1c8 0x598 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_EB1__IPU1_CSI1_DATA10        0x1c8 0x598 0x888 0x2 0x1
++#define MX6QDL_PAD_EIM_EB1__GPIO2_IO29              0x1c8 0x598 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_EB1__SRC_BOOT_CFG28          0x1c8 0x598 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_EB1__EPDC_SDSHR              0x1c8 0x598 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_EB2__EIM_EB2_B               0x1cc 0x59c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_EB2__ECSPI1_SS0              0x1cc 0x59c 0x7e4 0x1 0x2
++#define MX6QDL_PAD_EIM_EB2__IPU1_CSI1_DATA19        0x1cc 0x59c 0x8ac 0x3 0x1
++#define MX6QDL_PAD_EIM_EB2__HDMI_TX_DDC_SCL         0x1cc 0x59c 0x860 0x4 0x0
++#define MX6QDL_PAD_EIM_EB2__GPIO2_IO30              0x1cc 0x59c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_EB2__I2C2_SCL                0x1cc 0x59c 0x870 0x6 0x0
++#define MX6QDL_PAD_EIM_EB2__SRC_BOOT_CFG30          0x1cc 0x59c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_EB2__EPDC_DATA05             0x1cc 0x59c 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_EB3__EIM_EB3_B               0x1d0 0x5a0 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_EB3__ECSPI4_RDY              0x1d0 0x5a0 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_EB3__UART3_RTS_B             0x1d0 0x5a0 0x908 0x2 0x3
++#define MX6QDL_PAD_EIM_EB3__UART3_CTS_B             0x1d0 0x5a0 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_EB3__UART1_RI_B              0x1d0 0x5a0 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_EB3__IPU1_CSI1_HSYNC         0x1d0 0x5a0 0x8b4 0x4 0x1
++#define MX6QDL_PAD_EIM_EB3__GPIO2_IO31              0x1d0 0x5a0 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_EB3__IPU1_DI1_PIN03          0x1d0 0x5a0 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_EB3__SRC_BOOT_CFG31          0x1d0 0x5a0 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_EB3__EPDC_SDCE0              0x1d0 0x5a0 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_EB3__EIM_ACLK_FREERUN        0x1d0 0x5a0 0x000 0x9 0x0
++#define MX6QDL_PAD_EIM_LBA__EIM_LBA_B               0x1d4 0x5a4 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_LBA__IPU1_DI1_PIN17          0x1d4 0x5a4 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_LBA__ECSPI2_SS1              0x1d4 0x5a4 0x804 0x2 0x1
++#define MX6QDL_PAD_EIM_LBA__GPIO2_IO27              0x1d4 0x5a4 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_LBA__SRC_BOOT_CFG26          0x1d4 0x5a4 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_LBA__EPDC_DATA04             0x1d4 0x5a4 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_OE__EIM_OE_B                 0x1d8 0x5a8 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_OE__IPU1_DI1_PIN07           0x1d8 0x5a8 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_OE__ECSPI2_MISO              0x1d8 0x5a8 0x7f8 0x2 0x2
++#define MX6QDL_PAD_EIM_OE__GPIO2_IO25               0x1d8 0x5a8 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_OE__EPDC_PWR_IRQ             0x1d8 0x5a8 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_RW__EIM_RW                   0x1dc 0x5ac 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_RW__IPU1_DI1_PIN08           0x1dc 0x5ac 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_RW__ECSPI2_SS0               0x1dc 0x5ac 0x800 0x2 0x2
++#define MX6QDL_PAD_EIM_RW__GPIO2_IO26               0x1dc 0x5ac 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_RW__SRC_BOOT_CFG29           0x1dc 0x5ac 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_RW__EPDC_DATA07              0x1dc 0x5ac 0x000 0x8 0x0
++#define MX6QDL_PAD_EIM_WAIT__EIM_WAIT_B             0x1e0 0x5b0 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_WAIT__EIM_DTACK_B            0x1e0 0x5b0 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_WAIT__GPIO5_IO00             0x1e0 0x5b0 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_WAIT__SRC_BOOT_CFG25         0x1e0 0x5b0 0x000 0x7 0x0
++#define MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN          0x1e4 0x5b4 0x828 0x1 0x0
++#define MX6QDL_PAD_ENET_CRS_DV__ESAI_TX_CLK         0x1e4 0x5b4 0x840 0x2 0x0
++#define MX6QDL_PAD_ENET_CRS_DV__SPDIF_EXT_CLK       0x1e4 0x5b4 0x8f4 0x3 0x0
++#define MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25          0x1e4 0x5b4 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_MDC__MLB_DATA               0x1e8 0x5b8 0x8e0 0x0 0x0
++#define MX6QDL_PAD_ENET_MDC__ENET_MDC               0x1e8 0x5b8 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_MDC__ESAI_TX5_RX0           0x1e8 0x5b8 0x858 0x2 0x0
++#define MX6QDL_PAD_ENET_MDC__ENET_1588_EVENT1_IN    0x1e8 0x5b8 0x000 0x4 0x0
++#define MX6QDL_PAD_ENET_MDC__GPIO1_IO31             0x1e8 0x5b8 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_MDIO__ENET_MDIO             0x1ec 0x5bc 0x810 0x1 0x0
++#define MX6QDL_PAD_ENET_MDIO__ESAI_RX_CLK           0x1ec 0x5bc 0x83c 0x2 0x0
++#define MX6QDL_PAD_ENET_MDIO__ENET_1588_EVENT1_OUT  0x1ec 0x5bc 0x000 0x4 0x0
++#define MX6QDL_PAD_ENET_MDIO__GPIO1_IO22            0x1ec 0x5bc 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_MDIO__SPDIF_LOCK            0x1ec 0x5bc 0x000 0x6 0x0
++#define MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK        0x1f0 0x5c0 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_REF_CLK__ESAI_RX_FS         0x1f0 0x5c0 0x82c 0x2 0x0
++#define MX6QDL_PAD_ENET_REF_CLK__GPIO1_IO23         0x1f0 0x5c0 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_REF_CLK__SPDIF_SR_CLK       0x1f0 0x5c0 0x000 0x6 0x0
++#define MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID           0x1f4 0x5c4 0x790 0x0 0x0
++#define MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER           0x1f4 0x5c4 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_RX_ER__ESAI_RX_HF_CLK       0x1f4 0x5c4 0x834 0x2 0x0
++#define MX6QDL_PAD_ENET_RX_ER__SPDIF_IN             0x1f4 0x5c4 0x8f0 0x3 0x1
++#define MX6QDL_PAD_ENET_RX_ER__ENET_1588_EVENT2_OUT 0x1f4 0x5c4 0x000 0x4 0x0
++#define MX6QDL_PAD_ENET_RX_ER__GPIO1_IO24           0x1f4 0x5c4 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0         0x1f8 0x5c8 0x818 0x1 0x0
++#define MX6QDL_PAD_ENET_RXD0__ESAI_TX_HF_CLK        0x1f8 0x5c8 0x838 0x2 0x0
++#define MX6QDL_PAD_ENET_RXD0__SPDIF_OUT             0x1f8 0x5c8 0x000 0x3 0x0
++#define MX6QDL_PAD_ENET_RXD0__GPIO1_IO27            0x1f8 0x5c8 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_RXD1__MLB_SIG               0x1fc 0x5cc 0x8e4 0x0 0x0
++#define MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1         0x1fc 0x5cc 0x81c 0x1 0x0
++#define MX6QDL_PAD_ENET_RXD1__ESAI_TX_FS            0x1fc 0x5cc 0x830 0x2 0x0
++#define MX6QDL_PAD_ENET_RXD1__ENET_1588_EVENT3_OUT  0x1fc 0x5cc 0x000 0x4 0x0
++#define MX6QDL_PAD_ENET_RXD1__GPIO1_IO26            0x1fc 0x5cc 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN           0x200 0x5d0 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_TX_EN__ESAI_TX3_RX2         0x200 0x5d0 0x850 0x2 0x0
++#define MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28           0x200 0x5d0 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_TX_EN__I2C4_SCL             0x200 0x5d0 0x880 0x9 0x0
++#define MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0         0x204 0x5d4 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_TXD0__ESAI_TX4_RX1          0x204 0x5d4 0x854 0x2 0x0
++#define MX6QDL_PAD_ENET_TXD0__GPIO1_IO30            0x204 0x5d4 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_TXD1__MLB_CLK               0x208 0x5d8 0x8dc 0x0 0x0
++#define MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1         0x208 0x5d8 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_TXD1__ESAI_TX2_RX3          0x208 0x5d8 0x84c 0x2 0x0
++#define MX6QDL_PAD_ENET_TXD1__ENET_1588_EVENT0_IN   0x208 0x5d8 0x000 0x4 0x0
++#define MX6QDL_PAD_ENET_TXD1__GPIO1_IO29            0x208 0x5d8 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_TXD1__I2C4_SDA              0x208 0x5d8 0x884 0x9 0x0
++#define MX6QDL_PAD_GPIO_0__CCM_CLKO1                0x20c 0x5dc 0x000 0x0 0x0
++#define MX6QDL_PAD_GPIO_0__KEY_COL5                 0x20c 0x5dc 0x8c0 0x2 0x1
++#define MX6QDL_PAD_GPIO_0__ASRC_EXT_CLK             0x20c 0x5dc 0x794 0x3 0x0
++#define MX6QDL_PAD_GPIO_0__EPIT1_OUT                0x20c 0x5dc 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_0__GPIO1_IO00               0x20c 0x5dc 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_0__USB_H1_PWR               0x20c 0x5dc 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_0__SNVS_VIO_5               0x20c 0x5dc 0x000 0x7 0x0
++#define MX6QDL_PAD_GPIO_1__ESAI_RX_CLK              0x210 0x5e0 0x83c 0x0 0x1
++#define MX6QDL_PAD_GPIO_1__WDOG2_B                  0x210 0x5e0 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_1__KEY_ROW5                 0x210 0x5e0 0x8cc 0x2 0x1
++#define MX6QDL_PAD_GPIO_1__USB_OTG_ID               0x210 0x5e0 0x790 0x3 0x1
++#define MX6QDL_PAD_GPIO_1__PWM2_OUT                 0x210 0x5e0 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_1__GPIO1_IO01               0x210 0x5e0 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_1__SD1_CD_B                 0x210 0x5e0 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_16__ESAI_TX3_RX2            0x214 0x5e4 0x850 0x0 0x1
++#define MX6QDL_PAD_GPIO_16__ENET_1588_EVENT2_IN     0x214 0x5e4 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_16__ENET_REF_CLK            0x214 0x5e4 0x80c 0x2 0x0
++#define MX6QDL_PAD_GPIO_16__SD1_LCTL                0x214 0x5e4 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_16__SPDIF_IN                0x214 0x5e4 0x8f0 0x4 0x2
++#define MX6QDL_PAD_GPIO_16__GPIO7_IO11              0x214 0x5e4 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_16__I2C3_SDA                0x214 0x5e4 0x87c 0x6 0x1
++#define MX6QDL_PAD_GPIO_16__JTAG_DE_B               0x214 0x5e4 0x000 0x7 0x0
++#define MX6QDL_PAD_GPIO_17__ESAI_TX0                0x218 0x5e8 0x844 0x0 0x0
++#define MX6QDL_PAD_GPIO_17__ENET_1588_EVENT3_IN     0x218 0x5e8 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_17__CCM_PMIC_READY          0x218 0x5e8 0x7d4 0x2 0x1
++#define MX6QDL_PAD_GPIO_17__SDMA_EXT_EVENT0         0x218 0x5e8 0x8e8 0x3 0x1
++#define MX6QDL_PAD_GPIO_17__SPDIF_OUT               0x218 0x5e8 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_17__GPIO7_IO12              0x218 0x5e8 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_18__ESAI_TX1                0x21c 0x5ec 0x848 0x0 0x0
++#define MX6QDL_PAD_GPIO_18__ENET_RX_CLK             0x21c 0x5ec 0x814 0x1 0x0
++#define MX6QDL_PAD_GPIO_18__SD3_VSELECT             0x21c 0x5ec 0x000 0x2 0x0
++#define MX6QDL_PAD_GPIO_18__SDMA_EXT_EVENT1         0x21c 0x5ec 0x8ec 0x3 0x1
++#define MX6QDL_PAD_GPIO_18__ASRC_EXT_CLK            0x21c 0x5ec 0x794 0x4 0x1
++#define MX6QDL_PAD_GPIO_18__GPIO7_IO13              0x21c 0x5ec 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_18__SNVS_VIO_5_CTL          0x21c 0x5ec 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_19__KEY_COL5                0x220 0x5f0 0x8c0 0x0 0x2
++#define MX6QDL_PAD_GPIO_19__ENET_1588_EVENT0_OUT    0x220 0x5f0 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_19__SPDIF_OUT               0x220 0x5f0 0x000 0x2 0x0
++#define MX6QDL_PAD_GPIO_19__CCM_CLKO1               0x220 0x5f0 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_19__ECSPI1_RDY              0x220 0x5f0 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_19__GPIO4_IO05              0x220 0x5f0 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_19__ENET_TX_ER              0x220 0x5f0 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_2__ESAI_TX_FS               0x224 0x5f4 0x830 0x0 0x1
++#define MX6QDL_PAD_GPIO_2__KEY_ROW6                 0x224 0x5f4 0x8d0 0x2 0x1
++#define MX6QDL_PAD_GPIO_2__GPIO1_IO02               0x224 0x5f4 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_2__SD2_WP                   0x224 0x5f4 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_2__MLB_DATA                 0x224 0x5f4 0x8e0 0x7 0x1
++#define MX6QDL_PAD_GPIO_3__ESAI_RX_HF_CLK           0x228 0x5f8 0x834 0x0 0x1
++#define MX6QDL_PAD_GPIO_3__I2C3_SCL                 0x228 0x5f8 0x878 0x2 0x1
++#define MX6QDL_PAD_GPIO_3__XTALOSC_REF_CLK_24M      0x228 0x5f8 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_3__CCM_CLKO2                0x228 0x5f8 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_3__GPIO1_IO03               0x228 0x5f8 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_3__USB_H1_OC                0x228 0x5f8 0x924 0x6 0x1
++#define MX6QDL_PAD_GPIO_3__MLB_CLK                  0x228 0x5f8 0x8dc 0x7 0x1
++#define MX6QDL_PAD_GPIO_4__ESAI_TX_HF_CLK           0x22c 0x5fc 0x838 0x0 0x1
++#define MX6QDL_PAD_GPIO_4__KEY_COL7                 0x22c 0x5fc 0x8c8 0x2 0x1
++#define MX6QDL_PAD_GPIO_4__GPIO1_IO04               0x22c 0x5fc 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_4__SD2_CD_B                 0x22c 0x5fc 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_5__ESAI_TX2_RX3             0x230 0x600 0x84c 0x0 0x1
++#define MX6QDL_PAD_GPIO_5__KEY_ROW7                 0x230 0x600 0x8d4 0x2 0x1
++#define MX6QDL_PAD_GPIO_5__CCM_CLKO1                0x230 0x600 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_5__GPIO1_IO05               0x230 0x600 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_5__I2C3_SCL                 0x230 0x600 0x878 0x6 0x2
++#define MX6QDL_PAD_GPIO_5__ARM_EVENTI               0x230 0x600 0x000 0x7 0x0
++#define MX6QDL_PAD_GPIO_6__ESAI_TX_CLK              0x234 0x604 0x840 0x0 0x1
++#define MX6QDL_PAD_GPIO_6__I2C3_SDA                 0x234 0x604 0x87c 0x2 0x2
++#define MX6QDL_PAD_GPIO_6__GPIO1_IO06               0x234 0x604 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_6__SD2_LCTL                 0x234 0x604 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_6__MLB_SIG                  0x234 0x604 0x8e4 0x7 0x1
++#define MX6QDL_PAD_GPIO_7__ESAI_TX4_RX1             0x238 0x608 0x854 0x0 0x1
++#define MX6QDL_PAD_GPIO_7__EPIT1_OUT                0x238 0x608 0x000 0x2 0x0
++#define MX6QDL_PAD_GPIO_7__FLEXCAN1_TX              0x238 0x608 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_7__UART2_TX_DATA            0x238 0x608 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_7__UART2_RX_DATA            0x238 0x608 0x904 0x4 0x2
++#define MX6QDL_PAD_GPIO_7__GPIO1_IO07               0x238 0x608 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_7__SPDIF_LOCK               0x238 0x608 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_7__USB_OTG_HOST_MODE        0x238 0x608 0x000 0x7 0x0
++#define MX6QDL_PAD_GPIO_7__I2C4_SCL                 0x238 0x608 0x880 0x8 0x1
++#define MX6QDL_PAD_GPIO_8__ESAI_TX5_RX0             0x23c 0x60c 0x858 0x0 0x1
++#define MX6QDL_PAD_GPIO_8__XTALOSC_REF_CLK_32K      0x23c 0x60c 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_8__EPIT2_OUT                0x23c 0x60c 0x000 0x2 0x0
++#define MX6QDL_PAD_GPIO_8__FLEXCAN1_RX              0x23c 0x60c 0x7c8 0x3 0x0
++#define MX6QDL_PAD_GPIO_8__UART2_RX_DATA            0x23c 0x60c 0x904 0x4 0x3
++#define MX6QDL_PAD_GPIO_8__UART2_TX_DATA            0x23c 0x60c 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_8__GPIO1_IO08               0x23c 0x60c 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_8__SPDIF_SR_CLK             0x23c 0x60c 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_8__USB_OTG_PWR_CTL_WAKE     0x23c 0x60c 0x000 0x7 0x0
++#define MX6QDL_PAD_GPIO_8__I2C4_SDA                 0x23c 0x60c 0x884 0x8 0x1
++#define MX6QDL_PAD_GPIO_9__ESAI_RX_FS               0x240 0x610 0x82c 0x0 0x1
++#define MX6QDL_PAD_GPIO_9__WDOG1_B                  0x240 0x610 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_9__KEY_COL6                 0x240 0x610 0x8c4 0x2 0x1
++#define MX6QDL_PAD_GPIO_9__CCM_REF_EN_B             0x240 0x610 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_9__PWM1_OUT                 0x240 0x610 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_9__GPIO1_IO09               0x240 0x610 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_9__SD1_WP                   0x240 0x610 0x92c 0x6 0x1
++#define MX6QDL_PAD_KEY_COL0__ECSPI1_SCLK            0x244 0x62c 0x7d8 0x0 0x3
++#define MX6QDL_PAD_KEY_COL0__ENET_RX_DATA3          0x244 0x62c 0x824 0x1 0x0
++#define MX6QDL_PAD_KEY_COL0__AUD5_TXC               0x244 0x62c 0x7c0 0x2 0x1
++#define MX6QDL_PAD_KEY_COL0__KEY_COL0               0x244 0x62c 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_COL0__UART4_TX_DATA          0x244 0x62c 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_COL0__UART4_RX_DATA          0x244 0x62c 0x914 0x4 0x2
++#define MX6QDL_PAD_KEY_COL0__GPIO4_IO06             0x244 0x62c 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_COL0__DCIC1_OUT              0x244 0x62c 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_COL1__ECSPI1_MISO            0x248 0x630 0x7dc 0x0 0x3
++#define MX6QDL_PAD_KEY_COL1__ENET_MDIO              0x248 0x630 0x810 0x1 0x1
++#define MX6QDL_PAD_KEY_COL1__AUD5_TXFS              0x248 0x630 0x7c4 0x2 0x1
++#define MX6QDL_PAD_KEY_COL1__KEY_COL1               0x248 0x630 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_COL1__UART5_TX_DATA          0x248 0x630 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_COL1__UART5_RX_DATA          0x248 0x630 0x91c 0x4 0x2
++#define MX6QDL_PAD_KEY_COL1__GPIO4_IO08             0x248 0x630 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_COL1__SD1_VSELECT            0x248 0x630 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_COL2__ECSPI1_SS1             0x24c 0x634 0x7e8 0x0 0x2
++#define MX6QDL_PAD_KEY_COL2__ENET_RX_DATA2          0x24c 0x634 0x820 0x1 0x0
++#define MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX            0x24c 0x634 0x000 0x2 0x0
++#define MX6QDL_PAD_KEY_COL2__KEY_COL2               0x24c 0x634 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_COL2__ENET_MDC               0x24c 0x634 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_COL2__GPIO4_IO10             0x24c 0x634 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_COL2__USB_H1_PWR_CTL_WAKE    0x24c 0x634 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_COL3__ECSPI1_SS3             0x250 0x638 0x7f0 0x0 0x1
++#define MX6QDL_PAD_KEY_COL3__ENET_CRS               0x250 0x638 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_COL3__HDMI_TX_DDC_SCL        0x250 0x638 0x860 0x2 0x1
++#define MX6QDL_PAD_KEY_COL3__KEY_COL3               0x250 0x638 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_COL3__I2C2_SCL               0x250 0x638 0x870 0x4 0x1
++#define MX6QDL_PAD_KEY_COL3__GPIO4_IO12             0x250 0x638 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_COL3__SPDIF_IN               0x250 0x638 0x8f0 0x6 0x3
++#define MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX            0x254 0x63c 0x000 0x0 0x0
++#define MX6QDL_PAD_KEY_COL4__IPU1_SISG4             0x254 0x63c 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_COL4__USB_OTG_OC             0x254 0x63c 0x920 0x2 0x1
++#define MX6QDL_PAD_KEY_COL4__KEY_COL4               0x254 0x63c 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_COL4__UART5_RTS_B            0x254 0x63c 0x918 0x4 0x2
++#define MX6QDL_PAD_KEY_COL4__UART5_CTS_B            0x254 0x63c 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_COL4__GPIO4_IO14             0x254 0x63c 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_ROW0__ECSPI1_MOSI            0x258 0x640 0x7e0 0x0 0x3
++#define MX6QDL_PAD_KEY_ROW0__ENET_TX_DATA3          0x258 0x640 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_ROW0__AUD5_TXD               0x258 0x640 0x7b4 0x2 0x1
++#define MX6QDL_PAD_KEY_ROW0__KEY_ROW0               0x258 0x640 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA          0x258 0x640 0x914 0x4 0x3
++#define MX6QDL_PAD_KEY_ROW0__UART4_TX_DATA          0x258 0x640 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_ROW0__GPIO4_IO07             0x258 0x640 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_ROW0__DCIC2_OUT              0x258 0x640 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_ROW1__ECSPI1_SS0             0x25c 0x644 0x7e4 0x0 0x3
++#define MX6QDL_PAD_KEY_ROW1__ENET_COL               0x25c 0x644 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_ROW1__AUD5_RXD               0x25c 0x644 0x7b0 0x2 0x1
++#define MX6QDL_PAD_KEY_ROW1__KEY_ROW1               0x25c 0x644 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_ROW1__UART5_RX_DATA          0x25c 0x644 0x91c 0x4 0x3
++#define MX6QDL_PAD_KEY_ROW1__UART5_TX_DATA          0x25c 0x644 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_ROW1__GPIO4_IO09             0x25c 0x644 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_ROW1__SD2_VSELECT            0x25c 0x644 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_ROW2__ECSPI1_SS2             0x260 0x648 0x7ec 0x0 0x1
++#define MX6QDL_PAD_KEY_ROW2__ENET_TX_DATA2          0x260 0x648 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX            0x260 0x648 0x7c8 0x2 0x1
++#define MX6QDL_PAD_KEY_ROW2__KEY_ROW2               0x260 0x648 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_ROW2__SD2_VSELECT            0x260 0x648 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_ROW2__GPIO4_IO11             0x260 0x648 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE       0x260 0x648 0x85c 0x6 0x1
++#define MX6QDL_PAD_KEY_ROW3__ASRC_EXT_CLK           0x264 0x64c 0x794 0x1 0x2
++#define MX6QDL_PAD_KEY_ROW3__HDMI_TX_DDC_SDA        0x264 0x64c 0x864 0x2 0x1
++#define MX6QDL_PAD_KEY_ROW3__KEY_ROW3               0x264 0x64c 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_ROW3__I2C2_SDA               0x264 0x64c 0x874 0x4 0x1
++#define MX6QDL_PAD_KEY_ROW3__GPIO4_IO13             0x264 0x64c 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_ROW3__SD1_VSELECT            0x264 0x64c 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX            0x268 0x650 0x7cc 0x0 0x0
++#define MX6QDL_PAD_KEY_ROW4__IPU1_SISG5             0x268 0x650 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_ROW4__USB_OTG_PWR            0x268 0x650 0x000 0x2 0x0
++#define MX6QDL_PAD_KEY_ROW4__KEY_ROW4               0x268 0x650 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_ROW4__UART5_CTS_B            0x268 0x650 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_ROW4__UART5_RTS_B            0x268 0x650 0x918 0x4 0x3
++#define MX6QDL_PAD_KEY_ROW4__GPIO4_IO15             0x268 0x650 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_ALE__NAND_ALE              0x26c 0x654 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_ALE__SD4_RESET             0x26c 0x654 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_ALE__GPIO6_IO08            0x26c 0x654 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CLE__NAND_CLE              0x270 0x658 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_CLE__GPIO6_IO07            0x270 0x658 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CS0__NAND_CE0_B            0x274 0x65c 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_CS0__GPIO6_IO11            0x274 0x65c 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CS1__NAND_CE1_B            0x278 0x660 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_CS1__SD4_VSELECT           0x278 0x660 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_CS1__SD3_VSELECT           0x278 0x660 0x000 0x2 0x0
++#define MX6QDL_PAD_NANDF_CS1__GPIO6_IO14            0x278 0x660 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CS2__NAND_CE2_B            0x27c 0x664 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_CS2__IPU1_SISG0            0x27c 0x664 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_CS2__ESAI_TX0              0x27c 0x664 0x844 0x2 0x1
++#define MX6QDL_PAD_NANDF_CS2__EIM_CRE               0x27c 0x664 0x000 0x3 0x0
++#define MX6QDL_PAD_NANDF_CS2__CCM_CLKO2             0x27c 0x664 0x000 0x4 0x0
++#define MX6QDL_PAD_NANDF_CS2__GPIO6_IO15            0x27c 0x664 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CS3__NAND_CE3_B            0x280 0x668 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_CS3__IPU1_SISG1            0x280 0x668 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_CS3__ESAI_TX1              0x280 0x668 0x848 0x2 0x1
++#define MX6QDL_PAD_NANDF_CS3__EIM_ADDR26            0x280 0x668 0x000 0x3 0x0
++#define MX6QDL_PAD_NANDF_CS3__GPIO6_IO16            0x280 0x668 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CS3__I2C4_SDA              0x280 0x668 0x884 0x9 0x2
++#define MX6QDL_PAD_NANDF_D0__NAND_DATA00            0x284 0x66c 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D0__SD1_DATA4              0x284 0x66c 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D0__GPIO2_IO00             0x284 0x66c 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D1__NAND_DATA01            0x288 0x670 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D1__SD1_DATA5              0x288 0x670 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D1__GPIO2_IO01             0x288 0x670 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D2__NAND_DATA02            0x28c 0x674 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D2__SD1_DATA6              0x28c 0x674 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D2__GPIO2_IO02             0x28c 0x674 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D3__NAND_DATA03            0x290 0x678 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D3__SD1_DATA7              0x290 0x678 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D3__GPIO2_IO03             0x290 0x678 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D4__NAND_DATA04            0x294 0x67c 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D4__SD2_DATA4              0x294 0x67c 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D4__GPIO2_IO04             0x294 0x67c 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D5__NAND_DATA05            0x298 0x680 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D5__SD2_DATA5              0x298 0x680 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D5__GPIO2_IO05             0x298 0x680 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D6__NAND_DATA06            0x29c 0x684 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D6__SD2_DATA6              0x29c 0x684 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D6__GPIO2_IO06             0x29c 0x684 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D7__NAND_DATA07            0x2a0 0x688 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D7__SD2_DATA7              0x2a0 0x688 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D7__GPIO2_IO07             0x2a0 0x688 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_RB0__NAND_READY_B          0x2a4 0x68c 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_RB0__GPIO6_IO10            0x2a4 0x68c 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_WP_B__NAND_WP_B            0x2a8 0x690 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_WP_B__GPIO6_IO09           0x2a8 0x690 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_WP_B__I2C4_SCL             0x2a8 0x690 0x880 0x9 0x2
++#define MX6QDL_PAD_RGMII_RD0__HSI_RX_READY          0x2ac 0x694 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RD0__RGMII_RD0             0x2ac 0x694 0x818 0x1 0x1
++#define MX6QDL_PAD_RGMII_RD0__GPIO6_IO25            0x2ac 0x694 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_RD1__HSI_TX_FLAG           0x2b0 0x698 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RD1__RGMII_RD1             0x2b0 0x698 0x81c 0x1 0x1
++#define MX6QDL_PAD_RGMII_RD1__GPIO6_IO27            0x2b0 0x698 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_RD2__HSI_TX_DATA           0x2b4 0x69c 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RD2__RGMII_RD2             0x2b4 0x69c 0x820 0x1 0x1
++#define MX6QDL_PAD_RGMII_RD2__GPIO6_IO28            0x2b4 0x69c 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_RD3__HSI_TX_WAKE           0x2b8 0x6a0 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RD3__RGMII_RD3             0x2b8 0x6a0 0x824 0x1 0x1
++#define MX6QDL_PAD_RGMII_RD3__GPIO6_IO29            0x2b8 0x6a0 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_RX_CTL__USB_H3_DATA        0x2bc 0x6a4 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL       0x2bc 0x6a4 0x828 0x1 0x1
++#define MX6QDL_PAD_RGMII_RX_CTL__GPIO6_IO24         0x2bc 0x6a4 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_RXC__USB_H3_STROBE         0x2c0 0x6a8 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RXC__RGMII_RXC             0x2c0 0x6a8 0x814 0x1 0x1
++#define MX6QDL_PAD_RGMII_RXC__GPIO6_IO30            0x2c0 0x6a8 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TD0__HSI_TX_READY          0x2c4 0x6ac 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TD0__RGMII_TD0             0x2c4 0x6ac 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TD0__GPIO6_IO20            0x2c4 0x6ac 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TD1__HSI_RX_FLAG           0x2c8 0x6b0 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TD1__RGMII_TD1             0x2c8 0x6b0 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TD1__GPIO6_IO21            0x2c8 0x6b0 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TD2__HSI_RX_DATA           0x2cc 0x6b4 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TD2__RGMII_TD2             0x2cc 0x6b4 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TD2__GPIO6_IO22            0x2cc 0x6b4 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TD3__HSI_RX_WAKE           0x2d0 0x6b8 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TD3__RGMII_TD3             0x2d0 0x6b8 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TD3__GPIO6_IO23            0x2d0 0x6b8 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TX_CTL__USB_H2_STROBE      0x2d4 0x6bc 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL       0x2d4 0x6bc 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TX_CTL__GPIO6_IO26         0x2d4 0x6bc 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TX_CTL__ENET_REF_CLK       0x2d4 0x6bc 0x80c 0x7 0x1
++#define MX6QDL_PAD_RGMII_TXC__USB_H2_DATA           0x2d8 0x6c0 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TXC__RGMII_TXC             0x2d8 0x6c0 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TXC__SPDIF_EXT_CLK         0x2d8 0x6c0 0x8f4 0x2 0x1
++#define MX6QDL_PAD_RGMII_TXC__GPIO6_IO19            0x2d8 0x6c0 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TXC__XTALOSC_REF_CLK_24M   0x2d8 0x6c0 0x000 0x7 0x0
++#define MX6QDL_PAD_SD1_CLK__SD1_CLK                 0x2dc 0x6c4 0x928 0x0 0x1
++#define MX6QDL_PAD_SD1_CLK__GPT_CLKIN               0x2dc 0x6c4 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_CLK__GPIO1_IO20              0x2dc 0x6c4 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_CMD__SD1_CMD                 0x2e0 0x6c8 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_CMD__PWM4_OUT                0x2e0 0x6c8 0x000 0x2 0x0
++#define MX6QDL_PAD_SD1_CMD__GPT_COMPARE1            0x2e0 0x6c8 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_CMD__GPIO1_IO18              0x2e0 0x6c8 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT0__SD1_DATA0              0x2e4 0x6cc 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_DAT0__GPT_CAPTURE1           0x2e4 0x6cc 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_DAT0__GPIO1_IO16             0x2e4 0x6cc 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT1__SD1_DATA1              0x2e8 0x6d0 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_DAT1__PWM3_OUT               0x2e8 0x6d0 0x000 0x2 0x0
++#define MX6QDL_PAD_SD1_DAT1__GPT_CAPTURE2           0x2e8 0x6d0 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_DAT1__GPIO1_IO17             0x2e8 0x6d0 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT2__SD1_DATA2              0x2ec 0x6d4 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_DAT2__GPT_COMPARE2           0x2ec 0x6d4 0x000 0x2 0x0
++#define MX6QDL_PAD_SD1_DAT2__PWM2_OUT               0x2ec 0x6d4 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_DAT2__WDOG1_B                0x2ec 0x6d4 0x000 0x4 0x0
++#define MX6QDL_PAD_SD1_DAT2__GPIO1_IO19             0x2ec 0x6d4 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT2__WDOG1_RESET_B_DEB      0x2ec 0x6d4 0x000 0x6 0x0
++#define MX6QDL_PAD_SD1_DAT3__SD1_DATA3              0x2f0 0x6d8 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_DAT3__GPT_COMPARE3           0x2f0 0x6d8 0x000 0x2 0x0
++#define MX6QDL_PAD_SD1_DAT3__PWM1_OUT               0x2f0 0x6d8 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_DAT3__WDOG2_B                0x2f0 0x6d8 0x000 0x4 0x0
++#define MX6QDL_PAD_SD1_DAT3__GPIO1_IO21             0x2f0 0x6d8 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT3__WDOG2_RESET_B_DEB      0x2f0 0x6d8 0x000 0x6 0x0
++#define MX6QDL_PAD_SD2_CLK__SD2_CLK                 0x2f4 0x6dc 0x930 0x0 0x1
++#define MX6QDL_PAD_SD2_CLK__KEY_COL5                0x2f4 0x6dc 0x8c0 0x2 0x3
++#define MX6QDL_PAD_SD2_CLK__AUD4_RXFS               0x2f4 0x6dc 0x7a4 0x3 0x1
++#define MX6QDL_PAD_SD2_CLK__GPIO1_IO10              0x2f4 0x6dc 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_CMD__SD2_CMD                 0x2f8 0x6e0 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_CMD__KEY_ROW5                0x2f8 0x6e0 0x8cc 0x2 0x2
++#define MX6QDL_PAD_SD2_CMD__AUD4_RXC                0x2f8 0x6e0 0x7a0 0x3 0x1
++#define MX6QDL_PAD_SD2_CMD__GPIO1_IO11              0x2f8 0x6e0 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_DAT0__SD2_DATA0              0x2fc 0x6e4 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_DAT0__AUD4_RXD               0x2fc 0x6e4 0x798 0x3 0x1
++#define MX6QDL_PAD_SD2_DAT0__KEY_ROW7               0x2fc 0x6e4 0x8d4 0x4 0x2
++#define MX6QDL_PAD_SD2_DAT0__GPIO1_IO15             0x2fc 0x6e4 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_DAT0__DCIC2_OUT              0x2fc 0x6e4 0x000 0x6 0x0
++#define MX6QDL_PAD_SD2_DAT1__SD2_DATA1              0x300 0x6e8 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_DAT1__EIM_CS2_B              0x300 0x6e8 0x000 0x2 0x0
++#define MX6QDL_PAD_SD2_DAT1__AUD4_TXFS              0x300 0x6e8 0x7ac 0x3 0x1
++#define MX6QDL_PAD_SD2_DAT1__KEY_COL7               0x300 0x6e8 0x8c8 0x4 0x2
++#define MX6QDL_PAD_SD2_DAT1__GPIO1_IO14             0x300 0x6e8 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_DAT2__SD2_DATA2              0x304 0x6ec 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_DAT2__EIM_CS3_B              0x304 0x6ec 0x000 0x2 0x0
++#define MX6QDL_PAD_SD2_DAT2__AUD4_TXD               0x304 0x6ec 0x79c 0x3 0x1
++#define MX6QDL_PAD_SD2_DAT2__KEY_ROW6               0x304 0x6ec 0x8d0 0x4 0x2
++#define MX6QDL_PAD_SD2_DAT2__GPIO1_IO13             0x304 0x6ec 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_DAT3__SD2_DATA3              0x308 0x6f0 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_DAT3__KEY_COL6               0x308 0x6f0 0x8c4 0x2 0x2
++#define MX6QDL_PAD_SD2_DAT3__AUD4_TXC               0x308 0x6f0 0x7a8 0x3 0x1
++#define MX6QDL_PAD_SD2_DAT3__GPIO1_IO12             0x308 0x6f0 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_CLK__SD3_CLK                 0x30c 0x6f4 0x934 0x0 0x1
++#define MX6QDL_PAD_SD3_CLK__UART2_RTS_B             0x30c 0x6f4 0x900 0x1 0x2
++#define MX6QDL_PAD_SD3_CLK__UART2_CTS_B             0x30c 0x6f4 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX             0x30c 0x6f4 0x7c8 0x2 0x2
++#define MX6QDL_PAD_SD3_CLK__GPIO7_IO03              0x30c 0x6f4 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_CMD__SD3_CMD                 0x310 0x6f8 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_CMD__UART2_CTS_B             0x310 0x6f8 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_CMD__UART2_RTS_B             0x310 0x6f8 0x900 0x1 0x3
++#define MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX             0x310 0x6f8 0x000 0x2 0x0
++#define MX6QDL_PAD_SD3_CMD__GPIO7_IO02              0x310 0x6f8 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT0__SD3_DATA0              0x314 0x6fc 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT0__UART1_CTS_B            0x314 0x6fc 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT0__UART1_RTS_B            0x314 0x6fc 0x8f8 0x1 0x2
++#define MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX            0x314 0x6fc 0x000 0x2 0x0
++#define MX6QDL_PAD_SD3_DAT0__GPIO7_IO04             0x314 0x6fc 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT1__SD3_DATA1              0x318 0x700 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT1__UART1_RTS_B            0x318 0x700 0x8f8 0x1 0x3
++#define MX6QDL_PAD_SD3_DAT1__UART1_CTS_B            0x318 0x700 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX            0x318 0x700 0x7cc 0x2 0x1
++#define MX6QDL_PAD_SD3_DAT1__GPIO7_IO05             0x318 0x700 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT2__SD3_DATA2              0x31c 0x704 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT2__GPIO7_IO06             0x31c 0x704 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT3__SD3_DATA3              0x320 0x708 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT3__UART3_CTS_B            0x320 0x708 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT3__UART3_RTS_B            0x320 0x708 0x908 0x1 0x4
++#define MX6QDL_PAD_SD3_DAT3__GPIO7_IO07             0x320 0x708 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT4__SD3_DATA4              0x324 0x70c 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT4__UART2_RX_DATA          0x324 0x70c 0x904 0x1 0x4
++#define MX6QDL_PAD_SD3_DAT4__UART2_TX_DATA          0x324 0x70c 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT4__GPIO7_IO01             0x324 0x70c 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT5__SD3_DATA5              0x328 0x710 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT5__UART2_TX_DATA          0x328 0x710 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT5__UART2_RX_DATA          0x328 0x710 0x904 0x1 0x5
++#define MX6QDL_PAD_SD3_DAT5__GPIO7_IO00             0x328 0x710 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT6__SD3_DATA6              0x32c 0x714 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA          0x32c 0x714 0x8fc 0x1 0x2
++#define MX6QDL_PAD_SD3_DAT6__UART1_TX_DATA          0x32c 0x714 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT6__GPIO6_IO18             0x32c 0x714 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT7__SD3_DATA7              0x330 0x718 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA          0x330 0x718 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT7__UART1_RX_DATA          0x330 0x718 0x8fc 0x1 0x3
++#define MX6QDL_PAD_SD3_DAT7__GPIO6_IO17             0x330 0x718 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_RST__SD3_RESET               0x334 0x71c 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_RST__UART3_RTS_B             0x334 0x71c 0x908 0x1 0x5
++#define MX6QDL_PAD_SD3_RST__UART3_CTS_B             0x334 0x71c 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_RST__GPIO7_IO08              0x334 0x71c 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_CLK__SD4_CLK                 0x338 0x720 0x938 0x0 0x1
++#define MX6QDL_PAD_SD4_CLK__NAND_WE_B               0x338 0x720 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_CLK__UART3_RX_DATA           0x338 0x720 0x90c 0x2 0x2
++#define MX6QDL_PAD_SD4_CLK__UART3_TX_DATA           0x338 0x720 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_CLK__GPIO7_IO10              0x338 0x720 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_CMD__SD4_CMD                 0x33c 0x724 0x000 0x0 0x0
++#define MX6QDL_PAD_SD4_CMD__NAND_RE_B               0x33c 0x724 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_CMD__UART3_TX_DATA           0x33c 0x724 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_CMD__UART3_RX_DATA           0x33c 0x724 0x90c 0x2 0x3
++#define MX6QDL_PAD_SD4_CMD__GPIO7_IO09              0x33c 0x724 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT0__SD4_DATA0              0x340 0x728 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT0__NAND_DQS               0x340 0x728 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT0__GPIO2_IO08             0x340 0x728 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT1__SD4_DATA1              0x344 0x72c 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT1__PWM3_OUT               0x344 0x72c 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT1__GPIO2_IO09             0x344 0x72c 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT2__SD4_DATA2              0x348 0x730 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT2__PWM4_OUT               0x348 0x730 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT2__GPIO2_IO10             0x348 0x730 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT3__SD4_DATA3              0x34c 0x734 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT3__GPIO2_IO11             0x34c 0x734 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT4__SD4_DATA4              0x350 0x738 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA          0x350 0x738 0x904 0x2 0x6
++#define MX6QDL_PAD_SD4_DAT4__UART2_TX_DATA          0x350 0x738 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT4__GPIO2_IO12             0x350 0x738 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT5__SD4_DATA5              0x354 0x73c 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT5__UART2_RTS_B            0x354 0x73c 0x900 0x2 0x4
++#define MX6QDL_PAD_SD4_DAT5__UART2_CTS_B            0x354 0x73c 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT5__GPIO2_IO13             0x354 0x73c 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT6__SD4_DATA6              0x358 0x740 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT6__UART2_CTS_B            0x358 0x740 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT6__UART2_RTS_B            0x358 0x740 0x900 0x2 0x5
++#define MX6QDL_PAD_SD4_DAT6__GPIO2_IO14             0x358 0x740 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT7__SD4_DATA7              0x35c 0x744 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA          0x35c 0x744 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT7__UART2_RX_DATA          0x35c 0x744 0x904 0x2 0x7
++#define MX6QDL_PAD_SD4_DAT7__GPIO2_IO15             0x35c 0x744 0x000 0x5 0x0
+ #endif /* __DTS_IMX6DL_PINFUNC_H */
+diff --git a/arch/arm/boot/dts/imx6dl-sabreauto.dts b/arch/arm/boot/dts/imx6dl-sabreauto.dts
+index 7adcec3..a6ce7b4 100644
+--- a/arch/arm/boot/dts/imx6dl-sabreauto.dts
++++ b/arch/arm/boot/dts/imx6dl-sabreauto.dts
+@@ -15,17 +15,3 @@
+       model = "Freescale i.MX6 DualLite/Solo SABRE Automotive Board";
+       compatible = "fsl,imx6dl-sabreauto", "fsl,imx6dl";
+ };
+-
+-&iomuxc {
+-      pinctrl-names = "default";
+-      pinctrl-0 = <&pinctrl_hog>;
+-
+-      hog {
+-              pinctrl_hog: hoggrp {
+-                      fsl,pins = <
+-                              MX6DL_PAD_NANDF_CS2__GPIO6_IO15 0x80000000
+-                              MX6DL_PAD_SD2_DAT2__GPIO1_IO13  0x80000000
+-                      >;
+-              };
+-      };
+-};
+diff --git a/arch/arm/boot/dts/imx6dl-sabresd.dts b/arch/arm/boot/dts/imx6dl-sabresd.dts
+index 7efb05d..1e45f2f 100644
+--- a/arch/arm/boot/dts/imx6dl-sabresd.dts
++++ b/arch/arm/boot/dts/imx6dl-sabresd.dts
+@@ -15,21 +15,3 @@
+       model = "Freescale i.MX6 DualLite SABRE Smart Device Board";
+       compatible = "fsl,imx6dl-sabresd", "fsl,imx6dl";
+ };
+-
+-&iomuxc {
+-      pinctrl-names = "default";
+-      pinctrl-0 = <&pinctrl_hog>;
+-
+-      hog {
+-              pinctrl_hog: hoggrp {
+-                      fsl,pins = <
+-                              MX6DL_PAD_GPIO_4__GPIO1_IO04   0x80000000
+-                              MX6DL_PAD_GPIO_5__GPIO1_IO05   0x80000000
+-                              MX6DL_PAD_NANDF_D0__GPIO2_IO00 0x80000000
+-                              MX6DL_PAD_NANDF_D1__GPIO2_IO01 0x80000000
+-                              MX6DL_PAD_NANDF_D2__GPIO2_IO02 0x80000000
+-                              MX6DL_PAD_NANDF_D3__GPIO2_IO03 0x80000000
+-                      >;
+-              };
+-      };
+-};
+diff --git a/arch/arm/boot/dts/imx6dl-wandboard.dts b/arch/arm/boot/dts/imx6dl-wandboard.dts
+index bfc59c3..e672891 100644
+--- a/arch/arm/boot/dts/imx6dl-wandboard.dts
++++ b/arch/arm/boot/dts/imx6dl-wandboard.dts
+@@ -10,6 +10,7 @@
+  */
+ /dts-v1/;
+ #include "imx6dl.dtsi"
++#include "imx6qdl-wandboard.dtsi"
+ / {
+       model = "Wandboard i.MX6 Dual Lite Board";
+@@ -19,26 +20,3 @@
+               reg = <0x10000000 0x40000000>;
+       };
+ };
+-
+-&fec {
+-      pinctrl-names = "default";
+-      pinctrl-0 = <&pinctrl_enet_1>;
+-      phy-mode = "rgmii";
+-      status = "okay";
+-};
+-
+-&uart1 {
+-      pinctrl-names = "default";
+-      pinctrl-0 = <&pinctrl_uart1_1>;
+-      status = "okay";
+-};
+-
+-&usbh1 {
+-      status = "okay";
+-};
+-
+-&usdhc3 {
+-      pinctrl-names = "default";
+-      pinctrl-0 = <&pinctrl_usdhc3_2>;
+-      status = "okay";
+-};
+diff --git a/arch/arm/boot/dts/imx6dl.dtsi b/arch/arm/boot/dts/imx6dl.dtsi
+index 62dc781..9e8ae11 100644
+--- a/arch/arm/boot/dts/imx6dl.dtsi
++++ b/arch/arm/boot/dts/imx6dl.dtsi
+@@ -8,8 +8,8 @@
+  *
+  */
+-#include "imx6qdl.dtsi"
+ #include "imx6dl-pinfunc.h"
++#include "imx6qdl.dtsi"
+ / {
+       cpus {
+@@ -32,126 +32,15 @@
+       };
+       soc {
++              ocram: sram@00900000 {
++                      compatible = "mmio-sram";
++                      reg = <0x00900000 0x20000>;
++                      clocks = <&clks 142>;
++              };
++
+               aips1: aips-bus@02000000 {
+                       iomuxc: iomuxc@020e0000 {
+                               compatible = "fsl,imx6dl-iomuxc";
+-                              reg = <0x020e0000 0x4000>;
+-
+-                              enet {
+-                                      pinctrl_enet_1: enetgrp-1 {
+-                                              fsl,pins = <
+-                                                      MX6DL_PAD_ENET_MDIO__ENET_MDIO       0x1b0b0
+-                                                      MX6DL_PAD_ENET_MDC__ENET_MDC         0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
+-                                                      MX6DL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
+-                                                      MX6DL_PAD_GPIO_16__ENET_REF_CLK      0x4001b0a8
+-                                              >;
+-                                      };
+-
+-                                      pinctrl_enet_2: enetgrp-2 {
+-                                              fsl,pins = <
+-                                                      MX6DL_PAD_KEY_COL1__ENET_MDIO        0x1b0b0
+-                                                      MX6DL_PAD_KEY_COL2__ENET_MDC         0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
+-                                                      MX6DL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
+-                                                      MX6DL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
+-                                              >;
+-                                      };
+-                              };
+-
+-                              uart1 {
+-                                      pinctrl_uart1_1: uart1grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6DL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0b1
+-                                                      MX6DL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              uart4 {
+-                                      pinctrl_uart4_1: uart4grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6DL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+-                                                      MX6DL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              usbotg {
+-                                      pinctrl_usbotg_2: usbotggrp-2 {
+-                                              fsl,pins = <
+-                                                      MX6DL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+-                                              >;
+-                                      };
+-                              };
+-
+-                              usdhc2 {
+-                                      pinctrl_usdhc2_1: usdhc2grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6DL_PAD_SD2_CMD__SD2_CMD    0x17059
+-                                                      MX6DL_PAD_SD2_CLK__SD2_CLK    0x10059
+-                                                      MX6DL_PAD_SD2_DAT0__SD2_DATA0 0x17059
+-                                                      MX6DL_PAD_SD2_DAT1__SD2_DATA1 0x17059
+-                                                      MX6DL_PAD_SD2_DAT2__SD2_DATA2 0x17059
+-                                                      MX6DL_PAD_SD2_DAT3__SD2_DATA3 0x17059
+-                                                      MX6DL_PAD_NANDF_D4__SD2_DATA4 0x17059
+-                                                      MX6DL_PAD_NANDF_D5__SD2_DATA5 0x17059
+-                                                      MX6DL_PAD_NANDF_D6__SD2_DATA6 0x17059
+-                                                      MX6DL_PAD_NANDF_D7__SD2_DATA7 0x17059
+-                                              >;
+-                                      };
+-                              };
+-
+-                              usdhc3 {
+-                                      pinctrl_usdhc3_1: usdhc3grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6DL_PAD_SD3_CMD__SD3_CMD    0x17059
+-                                                      MX6DL_PAD_SD3_CLK__SD3_CLK    0x10059
+-                                                      MX6DL_PAD_SD3_DAT0__SD3_DATA0 0x17059
+-                                                      MX6DL_PAD_SD3_DAT1__SD3_DATA1 0x17059
+-                                                      MX6DL_PAD_SD3_DAT2__SD3_DATA2 0x17059
+-                                                      MX6DL_PAD_SD3_DAT3__SD3_DATA3 0x17059
+-                                                      MX6DL_PAD_SD3_DAT4__SD3_DATA4 0x17059
+-                                                      MX6DL_PAD_SD3_DAT5__SD3_DATA5 0x17059
+-                                                      MX6DL_PAD_SD3_DAT6__SD3_DATA6 0x17059
+-                                                      MX6DL_PAD_SD3_DAT7__SD3_DATA7 0x17059
+-                                              >;
+-                                      };
+-
+-                                      pinctrl_usdhc3_2: usdhc3grp_2 {
+-                                              fsl,pins = <
+-                                                      MX6DL_PAD_SD3_CMD__SD3_CMD    0x17059
+-                                                      MX6DL_PAD_SD3_CLK__SD3_CLK    0x10059
+-                                                      MX6DL_PAD_SD3_DAT0__SD3_DATA0 0x17059
+-                                                      MX6DL_PAD_SD3_DAT1__SD3_DATA1 0x17059
+-                                                      MX6DL_PAD_SD3_DAT2__SD3_DATA2 0x17059
+-                                                      MX6DL_PAD_SD3_DAT3__SD3_DATA3 0x17059
+-                                              >;
+-                                      };
+-                              };
+-
+-
+                       };
+                       pxp: pxp@020f0000 {
+@@ -182,3 +71,20 @@
+               };
+       };
+ };
++
++&ldb {
++      clocks = <&clks 33>, <&clks 34>,
++               <&clks 39>, <&clks 40>,
++               <&clks 135>, <&clks 136>;
++      clock-names = "di0_pll", "di1_pll",
++                    "di0_sel", "di1_sel",
++                    "di0", "di1";
++
++      lvds-channel@0 {
++              crtcs = <&ipu1 0>, <&ipu1 1>;
++      };
++
++      lvds-channel@1 {
++              crtcs = <&ipu1 0>, <&ipu1 1>;
++      };
++};
+diff --git a/arch/arm/boot/dts/imx6q-arm2.dts b/arch/arm/boot/dts/imx6q-arm2.dts
+index 4e54fde..edf1bd9 100644
+--- a/arch/arm/boot/dts/imx6q-arm2.dts
++++ b/arch/arm/boot/dts/imx6q-arm2.dts
+@@ -57,7 +57,7 @@
+       hog {
+               pinctrl_hog: hoggrp {
+                       fsl,pins = <
+-                              MX6Q_PAD_EIM_D25__GPIO3_IO25 0x80000000
++                              MX6QDL_PAD_EIM_D25__GPIO3_IO25 0x80000000
+                       >;
+               };
+       };
+@@ -65,8 +65,8 @@
+       arm2 {
+               pinctrl_usdhc3_arm2: usdhc3grp-arm2 {
+                       fsl,pins = <
+-                              MX6Q_PAD_NANDF_CS0__GPIO6_IO11 0x80000000
+-                              MX6Q_PAD_NANDF_CS1__GPIO6_IO14 0x80000000
++                              MX6QDL_PAD_NANDF_CS0__GPIO6_IO11 0x80000000
++                              MX6QDL_PAD_NANDF_CS1__GPIO6_IO14 0x80000000
+                       >;
+               };
+       };
+@@ -97,6 +97,14 @@
+       status = "okay";
+ };
++&uart2 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_uart2_2>;
++      fsl,dte-mode;
++      fsl,uart-has-rtscts;
++      status = "okay";
++};
++
+ &uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4_1>;
+diff --git a/arch/arm/boot/dts/imx6q-pinfunc.h b/arch/arm/boot/dts/imx6q-pinfunc.h
+index faea6e1..9bbe82b 100644
+--- a/arch/arm/boot/dts/imx6q-pinfunc.h
++++ b/arch/arm/boot/dts/imx6q-pinfunc.h
+@@ -14,1028 +14,1032 @@
+  * The pin function ID is a tuple of
+  * <mux_reg conf_reg input_reg mux_mode input_val>
+  */
+-#define MX6Q_PAD_SD2_DAT1__SD2_DATA1              0x04c 0x360 0x000 0x0 0x0
+-#define MX6Q_PAD_SD2_DAT1__ECSPI5_SS0             0x04c 0x360 0x834 0x1 0x0
+-#define MX6Q_PAD_SD2_DAT1__EIM_CS2_B              0x04c 0x360 0x000 0x2 0x0
+-#define MX6Q_PAD_SD2_DAT1__AUD4_TXFS              0x04c 0x360 0x7c8 0x3 0x0
+-#define MX6Q_PAD_SD2_DAT1__KEY_COL7               0x04c 0x360 0x8f0 0x4 0x0
+-#define MX6Q_PAD_SD2_DAT1__GPIO1_IO14             0x04c 0x360 0x000 0x5 0x0
+-#define MX6Q_PAD_SD2_DAT2__SD2_DATA2              0x050 0x364 0x000 0x0 0x0
+-#define MX6Q_PAD_SD2_DAT2__ECSPI5_SS1             0x050 0x364 0x838 0x1 0x0
+-#define MX6Q_PAD_SD2_DAT2__EIM_CS3_B              0x050 0x364 0x000 0x2 0x0
+-#define MX6Q_PAD_SD2_DAT2__AUD4_TXD               0x050 0x364 0x7b8 0x3 0x0
+-#define MX6Q_PAD_SD2_DAT2__KEY_ROW6               0x050 0x364 0x8f8 0x4 0x0
+-#define MX6Q_PAD_SD2_DAT2__GPIO1_IO13             0x050 0x364 0x000 0x5 0x0
+-#define MX6Q_PAD_SD2_DAT0__SD2_DATA0              0x054 0x368 0x000 0x0 0x0
+-#define MX6Q_PAD_SD2_DAT0__ECSPI5_MISO            0x054 0x368 0x82c 0x1 0x0
+-#define MX6Q_PAD_SD2_DAT0__AUD4_RXD               0x054 0x368 0x7b4 0x3 0x0
+-#define MX6Q_PAD_SD2_DAT0__KEY_ROW7               0x054 0x368 0x8fc 0x4 0x0
+-#define MX6Q_PAD_SD2_DAT0__GPIO1_IO15             0x054 0x368 0x000 0x5 0x0
+-#define MX6Q_PAD_SD2_DAT0__DCIC2_OUT              0x054 0x368 0x000 0x6 0x0
+-#define MX6Q_PAD_RGMII_TXC__USB_H2_DATA           0x058 0x36c 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_TXC__RGMII_TXC             0x058 0x36c 0x000 0x1 0x0
+-#define MX6Q_PAD_RGMII_TXC__SPDIF_EXT_CLK         0x058 0x36c 0x918 0x2 0x0
+-#define MX6Q_PAD_RGMII_TXC__GPIO6_IO19            0x058 0x36c 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_TXC__XTALOSC_REF_CLK_24M   0x058 0x36c 0x000 0x7 0x0
+-#define MX6Q_PAD_RGMII_TD0__HSI_TX_READY          0x05c 0x370 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_TD0__RGMII_TD0             0x05c 0x370 0x000 0x1 0x0
+-#define MX6Q_PAD_RGMII_TD0__GPIO6_IO20            0x05c 0x370 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_TD1__HSI_RX_FLAG           0x060 0x374 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_TD1__RGMII_TD1             0x060 0x374 0x000 0x1 0x0
+-#define MX6Q_PAD_RGMII_TD1__GPIO6_IO21            0x060 0x374 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_TD2__HSI_RX_DATA           0x064 0x378 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_TD2__RGMII_TD2             0x064 0x378 0x000 0x1 0x0
+-#define MX6Q_PAD_RGMII_TD2__GPIO6_IO22            0x064 0x378 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_TD3__HSI_RX_WAKE           0x068 0x37c 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_TD3__RGMII_TD3             0x068 0x37c 0x000 0x1 0x0
+-#define MX6Q_PAD_RGMII_TD3__GPIO6_IO23            0x068 0x37c 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_RX_CTL__USB_H3_DATA        0x06c 0x380 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_RX_CTL__RGMII_RX_CTL       0x06c 0x380 0x858 0x1 0x0
+-#define MX6Q_PAD_RGMII_RX_CTL__GPIO6_IO24         0x06c 0x380 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_RD0__HSI_RX_READY          0x070 0x384 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_RD0__RGMII_RD0             0x070 0x384 0x848 0x1 0x0
+-#define MX6Q_PAD_RGMII_RD0__GPIO6_IO25            0x070 0x384 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_TX_CTL__USB_H2_STROBE      0x074 0x388 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_TX_CTL__RGMII_TX_CTL       0x074 0x388 0x000 0x1 0x0
+-#define MX6Q_PAD_RGMII_TX_CTL__GPIO6_IO26         0x074 0x388 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_TX_CTL__ENET_REF_CLK       0x074 0x388 0x83c 0x7 0x0
+-#define MX6Q_PAD_RGMII_RD1__HSI_TX_FLAG           0x078 0x38c 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_RD1__RGMII_RD1             0x078 0x38c 0x84c 0x1 0x0
+-#define MX6Q_PAD_RGMII_RD1__GPIO6_IO27            0x078 0x38c 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_RD2__HSI_TX_DATA           0x07c 0x390 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_RD2__RGMII_RD2             0x07c 0x390 0x850 0x1 0x0
+-#define MX6Q_PAD_RGMII_RD2__GPIO6_IO28            0x07c 0x390 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_RD3__HSI_TX_WAKE           0x080 0x394 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_RD3__RGMII_RD3             0x080 0x394 0x854 0x1 0x0
+-#define MX6Q_PAD_RGMII_RD3__GPIO6_IO29            0x080 0x394 0x000 0x5 0x0
+-#define MX6Q_PAD_RGMII_RXC__USB_H3_STROBE         0x084 0x398 0x000 0x0 0x0
+-#define MX6Q_PAD_RGMII_RXC__RGMII_RXC             0x084 0x398 0x844 0x1 0x0
+-#define MX6Q_PAD_RGMII_RXC__GPIO6_IO30            0x084 0x398 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A25__EIM_ADDR25              0x088 0x39c 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_A25__ECSPI4_SS1              0x088 0x39c 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_A25__ECSPI2_RDY              0x088 0x39c 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_A25__IPU1_DI1_PIN12          0x088 0x39c 0x000 0x3 0x0
+-#define MX6Q_PAD_EIM_A25__IPU1_DI0_D1_CS          0x088 0x39c 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_A25__GPIO5_IO02              0x088 0x39c 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A25__HDMI_TX_CEC_LINE        0x088 0x39c 0x88c 0x6 0x0
+-#define MX6Q_PAD_EIM_EB2__EIM_EB2_B               0x08c 0x3a0 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_EB2__ECSPI1_SS0              0x08c 0x3a0 0x800 0x1 0x0
+-#define MX6Q_PAD_EIM_EB2__IPU2_CSI1_DATA19        0x08c 0x3a0 0x8d4 0x3 0x0
+-#define MX6Q_PAD_EIM_EB2__HDMI_TX_DDC_SCL         0x08c 0x3a0 0x890 0x4 0x0
+-#define MX6Q_PAD_EIM_EB2__GPIO2_IO30              0x08c 0x3a0 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_EB2__I2C2_SCL                0x08c 0x3a0 0x8a0 0x6 0x0
+-#define MX6Q_PAD_EIM_EB2__SRC_BOOT_CFG30          0x08c 0x3a0 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_D16__EIM_DATA16              0x090 0x3a4 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D16__ECSPI1_SCLK             0x090 0x3a4 0x7f4 0x1 0x0
+-#define MX6Q_PAD_EIM_D16__IPU1_DI0_PIN05          0x090 0x3a4 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D16__IPU2_CSI1_DATA18        0x090 0x3a4 0x8d0 0x3 0x0
+-#define MX6Q_PAD_EIM_D16__HDMI_TX_DDC_SDA         0x090 0x3a4 0x894 0x4 0x0
+-#define MX6Q_PAD_EIM_D16__GPIO3_IO16              0x090 0x3a4 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D16__I2C2_SDA                0x090 0x3a4 0x8a4 0x6 0x0
+-#define MX6Q_PAD_EIM_D17__EIM_DATA17              0x094 0x3a8 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D17__ECSPI1_MISO             0x094 0x3a8 0x7f8 0x1 0x0
+-#define MX6Q_PAD_EIM_D17__IPU1_DI0_PIN06          0x094 0x3a8 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D17__IPU2_CSI1_PIXCLK        0x094 0x3a8 0x8e0 0x3 0x0
+-#define MX6Q_PAD_EIM_D17__DCIC1_OUT               0x094 0x3a8 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D17__GPIO3_IO17              0x094 0x3a8 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D17__I2C3_SCL                0x094 0x3a8 0x8a8 0x6 0x0
+-#define MX6Q_PAD_EIM_D18__EIM_DATA18              0x098 0x3ac 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D18__ECSPI1_MOSI             0x098 0x3ac 0x7fc 0x1 0x0
+-#define MX6Q_PAD_EIM_D18__IPU1_DI0_PIN07          0x098 0x3ac 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D18__IPU2_CSI1_DATA17        0x098 0x3ac 0x8cc 0x3 0x0
+-#define MX6Q_PAD_EIM_D18__IPU1_DI1_D0_CS          0x098 0x3ac 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D18__GPIO3_IO18              0x098 0x3ac 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D18__I2C3_SDA                0x098 0x3ac 0x8ac 0x6 0x0
+-#define MX6Q_PAD_EIM_D19__EIM_DATA19              0x09c 0x3b0 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D19__ECSPI1_SS1              0x09c 0x3b0 0x804 0x1 0x0
+-#define MX6Q_PAD_EIM_D19__IPU1_DI0_PIN08          0x09c 0x3b0 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D19__IPU2_CSI1_DATA16        0x09c 0x3b0 0x8c8 0x3 0x0
+-#define MX6Q_PAD_EIM_D19__UART1_CTS_B             0x09c 0x3b0 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D19__UART1_RTS_B             0x09c 0x3b0 0x91c 0x4 0x0
+-#define MX6Q_PAD_EIM_D19__GPIO3_IO19              0x09c 0x3b0 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D19__EPIT1_OUT               0x09c 0x3b0 0x000 0x6 0x0
+-#define MX6Q_PAD_EIM_D20__EIM_DATA20              0x0a0 0x3b4 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D20__ECSPI4_SS0              0x0a0 0x3b4 0x824 0x1 0x0
+-#define MX6Q_PAD_EIM_D20__IPU1_DI0_PIN16          0x0a0 0x3b4 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D20__IPU2_CSI1_DATA15        0x0a0 0x3b4 0x8c4 0x3 0x0
+-#define MX6Q_PAD_EIM_D20__UART1_RTS_B             0x0a0 0x3b4 0x91c 0x4 0x1
+-#define MX6Q_PAD_EIM_D20__UART1_CTS_B             0x0a0 0x3b4 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D20__GPIO3_IO20              0x0a0 0x3b4 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D20__EPIT2_OUT               0x0a0 0x3b4 0x000 0x6 0x0
+-#define MX6Q_PAD_EIM_D21__EIM_DATA21              0x0a4 0x3b8 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D21__ECSPI4_SCLK             0x0a4 0x3b8 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_D21__IPU1_DI0_PIN17          0x0a4 0x3b8 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D21__IPU2_CSI1_DATA11        0x0a4 0x3b8 0x8b4 0x3 0x0
+-#define MX6Q_PAD_EIM_D21__USB_OTG_OC              0x0a4 0x3b8 0x944 0x4 0x0
+-#define MX6Q_PAD_EIM_D21__GPIO3_IO21              0x0a4 0x3b8 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D21__I2C1_SCL                0x0a4 0x3b8 0x898 0x6 0x0
+-#define MX6Q_PAD_EIM_D21__SPDIF_IN                0x0a4 0x3b8 0x914 0x7 0x0
+-#define MX6Q_PAD_EIM_D22__EIM_DATA22              0x0a8 0x3bc 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D22__ECSPI4_MISO             0x0a8 0x3bc 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_D22__IPU1_DI0_PIN01          0x0a8 0x3bc 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D22__IPU2_CSI1_DATA10        0x0a8 0x3bc 0x8b0 0x3 0x0
+-#define MX6Q_PAD_EIM_D22__USB_OTG_PWR             0x0a8 0x3bc 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D22__GPIO3_IO22              0x0a8 0x3bc 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D22__SPDIF_OUT               0x0a8 0x3bc 0x000 0x6 0x0
+-#define MX6Q_PAD_EIM_D23__EIM_DATA23              0x0ac 0x3c0 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D23__IPU1_DI0_D0_CS          0x0ac 0x3c0 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_D23__UART3_CTS_B             0x0ac 0x3c0 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D23__UART3_RTS_B             0x0ac 0x3c0 0x92c 0x2 0x0
+-#define MX6Q_PAD_EIM_D23__UART1_DCD_B             0x0ac 0x3c0 0x000 0x3 0x0
+-#define MX6Q_PAD_EIM_D23__IPU2_CSI1_DATA_EN       0x0ac 0x3c0 0x8d8 0x4 0x0
+-#define MX6Q_PAD_EIM_D23__GPIO3_IO23              0x0ac 0x3c0 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D23__IPU1_DI1_PIN02          0x0ac 0x3c0 0x000 0x6 0x0
+-#define MX6Q_PAD_EIM_D23__IPU1_DI1_PIN14          0x0ac 0x3c0 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_EB3__EIM_EB3_B               0x0b0 0x3c4 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_EB3__ECSPI4_RDY              0x0b0 0x3c4 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_EB3__UART3_RTS_B             0x0b0 0x3c4 0x92c 0x2 0x1
+-#define MX6Q_PAD_EIM_EB3__UART3_CTS_B             0x0b0 0x3c4 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_EB3__UART1_RI_B              0x0b0 0x3c4 0x000 0x3 0x0
+-#define MX6Q_PAD_EIM_EB3__IPU2_CSI1_HSYNC         0x0b0 0x3c4 0x8dc 0x4 0x0
+-#define MX6Q_PAD_EIM_EB3__GPIO2_IO31              0x0b0 0x3c4 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_EB3__IPU1_DI1_PIN03          0x0b0 0x3c4 0x000 0x6 0x0
+-#define MX6Q_PAD_EIM_EB3__SRC_BOOT_CFG31          0x0b0 0x3c4 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_D24__EIM_DATA24              0x0b4 0x3c8 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D24__ECSPI4_SS2              0x0b4 0x3c8 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_D24__UART3_TX_DATA           0x0b4 0x3c8 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D24__UART3_RX_DATA           0x0b4 0x3c8 0x930 0x2 0x0
+-#define MX6Q_PAD_EIM_D24__ECSPI1_SS2              0x0b4 0x3c8 0x808 0x3 0x0
+-#define MX6Q_PAD_EIM_D24__ECSPI2_SS2              0x0b4 0x3c8 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D24__GPIO3_IO24              0x0b4 0x3c8 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D24__AUD5_RXFS               0x0b4 0x3c8 0x7d8 0x6 0x0
+-#define MX6Q_PAD_EIM_D24__UART1_DTR_B             0x0b4 0x3c8 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_D25__EIM_DATA25              0x0b8 0x3cc 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D25__ECSPI4_SS3              0x0b8 0x3cc 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_D25__UART3_RX_DATA           0x0b8 0x3cc 0x930 0x2 0x1
+-#define MX6Q_PAD_EIM_D25__UART3_TX_DATA           0x0b8 0x3cc 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D25__ECSPI1_SS3              0x0b8 0x3cc 0x80c 0x3 0x0
+-#define MX6Q_PAD_EIM_D25__ECSPI2_SS3              0x0b8 0x3cc 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D25__GPIO3_IO25              0x0b8 0x3cc 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D25__AUD5_RXC                0x0b8 0x3cc 0x7d4 0x6 0x0
+-#define MX6Q_PAD_EIM_D25__UART1_DSR_B             0x0b8 0x3cc 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_D26__EIM_DATA26              0x0bc 0x3d0 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D26__IPU1_DI1_PIN11          0x0bc 0x3d0 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_D26__IPU1_CSI0_DATA01        0x0bc 0x3d0 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D26__IPU2_CSI1_DATA14        0x0bc 0x3d0 0x8c0 0x3 0x0
+-#define MX6Q_PAD_EIM_D26__UART2_TX_DATA           0x0bc 0x3d0 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D26__UART2_RX_DATA           0x0bc 0x3d0 0x928 0x4 0x0
+-#define MX6Q_PAD_EIM_D26__GPIO3_IO26              0x0bc 0x3d0 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D26__IPU1_SISG2              0x0bc 0x3d0 0x000 0x6 0x0
+-#define MX6Q_PAD_EIM_D26__IPU1_DISP1_DATA22       0x0bc 0x3d0 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_D27__EIM_DATA27              0x0c0 0x3d4 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D27__IPU1_DI1_PIN13          0x0c0 0x3d4 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_D27__IPU1_CSI0_DATA00        0x0c0 0x3d4 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D27__IPU2_CSI1_DATA13        0x0c0 0x3d4 0x8bc 0x3 0x0
+-#define MX6Q_PAD_EIM_D27__UART2_RX_DATA           0x0c0 0x3d4 0x928 0x4 0x1
+-#define MX6Q_PAD_EIM_D27__UART2_TX_DATA           0x0c0 0x3d4 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D27__GPIO3_IO27              0x0c0 0x3d4 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D27__IPU1_SISG3              0x0c0 0x3d4 0x000 0x6 0x0
+-#define MX6Q_PAD_EIM_D27__IPU1_DISP1_DATA23       0x0c0 0x3d4 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_D28__EIM_DATA28              0x0c4 0x3d8 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D28__I2C1_SDA                0x0c4 0x3d8 0x89c 0x1 0x0
+-#define MX6Q_PAD_EIM_D28__ECSPI4_MOSI             0x0c4 0x3d8 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D28__IPU2_CSI1_DATA12        0x0c4 0x3d8 0x8b8 0x3 0x0
+-#define MX6Q_PAD_EIM_D28__UART2_CTS_B             0x0c4 0x3d8 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D28__UART2_RTS_B             0x0c4 0x3d8 0x924 0x4 0x0
+-#define MX6Q_PAD_EIM_D28__GPIO3_IO28              0x0c4 0x3d8 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D28__IPU1_EXT_TRIG           0x0c4 0x3d8 0x000 0x6 0x0
+-#define MX6Q_PAD_EIM_D28__IPU1_DI0_PIN13          0x0c4 0x3d8 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_D29__EIM_DATA29              0x0c8 0x3dc 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D29__IPU1_DI1_PIN15          0x0c8 0x3dc 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_D29__ECSPI4_SS0              0x0c8 0x3dc 0x824 0x2 0x1
+-#define MX6Q_PAD_EIM_D29__UART2_RTS_B             0x0c8 0x3dc 0x924 0x4 0x1
+-#define MX6Q_PAD_EIM_D29__UART2_CTS_B             0x0c8 0x3dc 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D29__GPIO3_IO29              0x0c8 0x3dc 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D29__IPU2_CSI1_VSYNC         0x0c8 0x3dc 0x8e4 0x6 0x0
+-#define MX6Q_PAD_EIM_D29__IPU1_DI0_PIN14          0x0c8 0x3dc 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_D30__EIM_DATA30              0x0cc 0x3e0 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D30__IPU1_DISP1_DATA21       0x0cc 0x3e0 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_D30__IPU1_DI0_PIN11          0x0cc 0x3e0 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D30__IPU1_CSI0_DATA03        0x0cc 0x3e0 0x000 0x3 0x0
+-#define MX6Q_PAD_EIM_D30__UART3_CTS_B             0x0cc 0x3e0 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D30__UART3_RTS_B             0x0cc 0x3e0 0x92c 0x4 0x2
+-#define MX6Q_PAD_EIM_D30__GPIO3_IO30              0x0cc 0x3e0 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D30__USB_H1_OC               0x0cc 0x3e0 0x948 0x6 0x0
+-#define MX6Q_PAD_EIM_D31__EIM_DATA31              0x0d0 0x3e4 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_D31__IPU1_DISP1_DATA20       0x0d0 0x3e4 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_D31__IPU1_DI0_PIN12          0x0d0 0x3e4 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_D31__IPU1_CSI0_DATA02        0x0d0 0x3e4 0x000 0x3 0x0
+-#define MX6Q_PAD_EIM_D31__UART3_RTS_B             0x0d0 0x3e4 0x92c 0x4 0x3
+-#define MX6Q_PAD_EIM_D31__UART3_CTS_B             0x0d0 0x3e4 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_D31__GPIO3_IO31              0x0d0 0x3e4 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_D31__USB_H1_PWR              0x0d0 0x3e4 0x000 0x6 0x0
+-#define MX6Q_PAD_EIM_A24__EIM_ADDR24              0x0d4 0x3e8 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_A24__IPU1_DISP1_DATA19       0x0d4 0x3e8 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_A24__IPU2_CSI1_DATA19        0x0d4 0x3e8 0x8d4 0x2 0x1
+-#define MX6Q_PAD_EIM_A24__IPU2_SISG2              0x0d4 0x3e8 0x000 0x3 0x0
+-#define MX6Q_PAD_EIM_A24__IPU1_SISG2              0x0d4 0x3e8 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_A24__GPIO5_IO04              0x0d4 0x3e8 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A24__SRC_BOOT_CFG24          0x0d4 0x3e8 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_A23__EIM_ADDR23              0x0d8 0x3ec 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_A23__IPU1_DISP1_DATA18       0x0d8 0x3ec 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_A23__IPU2_CSI1_DATA18        0x0d8 0x3ec 0x8d0 0x2 0x1
+-#define MX6Q_PAD_EIM_A23__IPU2_SISG3              0x0d8 0x3ec 0x000 0x3 0x0
+-#define MX6Q_PAD_EIM_A23__IPU1_SISG3              0x0d8 0x3ec 0x000 0x4 0x0
+-#define MX6Q_PAD_EIM_A23__GPIO6_IO06              0x0d8 0x3ec 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A23__SRC_BOOT_CFG23          0x0d8 0x3ec 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_A22__EIM_ADDR22              0x0dc 0x3f0 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_A22__IPU1_DISP1_DATA17       0x0dc 0x3f0 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_A22__IPU2_CSI1_DATA17        0x0dc 0x3f0 0x8cc 0x2 0x1
+-#define MX6Q_PAD_EIM_A22__GPIO2_IO16              0x0dc 0x3f0 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A22__SRC_BOOT_CFG22          0x0dc 0x3f0 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_A21__EIM_ADDR21              0x0e0 0x3f4 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_A21__IPU1_DISP1_DATA16       0x0e0 0x3f4 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_A21__IPU2_CSI1_DATA16        0x0e0 0x3f4 0x8c8 0x2 0x1
+-#define MX6Q_PAD_EIM_A21__GPIO2_IO17              0x0e0 0x3f4 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A21__SRC_BOOT_CFG21          0x0e0 0x3f4 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_A20__EIM_ADDR20              0x0e4 0x3f8 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_A20__IPU1_DISP1_DATA15       0x0e4 0x3f8 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_A20__IPU2_CSI1_DATA15        0x0e4 0x3f8 0x8c4 0x2 0x1
+-#define MX6Q_PAD_EIM_A20__GPIO2_IO18              0x0e4 0x3f8 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A20__SRC_BOOT_CFG20          0x0e4 0x3f8 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_A19__EIM_ADDR19              0x0e8 0x3fc 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_A19__IPU1_DISP1_DATA14       0x0e8 0x3fc 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_A19__IPU2_CSI1_DATA14        0x0e8 0x3fc 0x8c0 0x2 0x1
+-#define MX6Q_PAD_EIM_A19__GPIO2_IO19              0x0e8 0x3fc 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A19__SRC_BOOT_CFG19          0x0e8 0x3fc 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_A18__EIM_ADDR18              0x0ec 0x400 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_A18__IPU1_DISP1_DATA13       0x0ec 0x400 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_A18__IPU2_CSI1_DATA13        0x0ec 0x400 0x8bc 0x2 0x1
+-#define MX6Q_PAD_EIM_A18__GPIO2_IO20              0x0ec 0x400 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A18__SRC_BOOT_CFG18          0x0ec 0x400 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_A17__EIM_ADDR17              0x0f0 0x404 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_A17__IPU1_DISP1_DATA12       0x0f0 0x404 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_A17__IPU2_CSI1_DATA12        0x0f0 0x404 0x8b8 0x2 0x1
+-#define MX6Q_PAD_EIM_A17__GPIO2_IO21              0x0f0 0x404 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A17__SRC_BOOT_CFG17          0x0f0 0x404 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_A16__EIM_ADDR16              0x0f4 0x408 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_A16__IPU1_DI1_DISP_CLK       0x0f4 0x408 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_A16__IPU2_CSI1_PIXCLK        0x0f4 0x408 0x8e0 0x2 0x1
+-#define MX6Q_PAD_EIM_A16__GPIO2_IO22              0x0f4 0x408 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_A16__SRC_BOOT_CFG16          0x0f4 0x408 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_CS0__EIM_CS0_B               0x0f8 0x40c 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_CS0__IPU1_DI1_PIN05          0x0f8 0x40c 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_CS0__ECSPI2_SCLK             0x0f8 0x40c 0x810 0x2 0x0
+-#define MX6Q_PAD_EIM_CS0__GPIO2_IO23              0x0f8 0x40c 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_CS1__EIM_CS1_B               0x0fc 0x410 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_CS1__IPU1_DI1_PIN06          0x0fc 0x410 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_CS1__ECSPI2_MOSI             0x0fc 0x410 0x818 0x2 0x0
+-#define MX6Q_PAD_EIM_CS1__GPIO2_IO24              0x0fc 0x410 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_OE__EIM_OE_B                 0x100 0x414 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_OE__IPU1_DI1_PIN07           0x100 0x414 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_OE__ECSPI2_MISO              0x100 0x414 0x814 0x2 0x0
+-#define MX6Q_PAD_EIM_OE__GPIO2_IO25               0x100 0x414 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_RW__EIM_RW                   0x104 0x418 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_RW__IPU1_DI1_PIN08           0x104 0x418 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_RW__ECSPI2_SS0               0x104 0x418 0x81c 0x2 0x0
+-#define MX6Q_PAD_EIM_RW__GPIO2_IO26               0x104 0x418 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_RW__SRC_BOOT_CFG29           0x104 0x418 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_LBA__EIM_LBA_B               0x108 0x41c 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_LBA__IPU1_DI1_PIN17          0x108 0x41c 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_LBA__ECSPI2_SS1              0x108 0x41c 0x820 0x2 0x0
+-#define MX6Q_PAD_EIM_LBA__GPIO2_IO27              0x108 0x41c 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_LBA__SRC_BOOT_CFG26          0x108 0x41c 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_EB0__EIM_EB0_B               0x10c 0x420 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_EB0__IPU1_DISP1_DATA11       0x10c 0x420 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_EB0__IPU2_CSI1_DATA11        0x10c 0x420 0x8b4 0x2 0x1
+-#define MX6Q_PAD_EIM_EB0__CCM_PMIC_READY          0x10c 0x420 0x7f0 0x4 0x0
+-#define MX6Q_PAD_EIM_EB0__GPIO2_IO28              0x10c 0x420 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_EB0__SRC_BOOT_CFG27          0x10c 0x420 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_EB1__EIM_EB1_B               0x110 0x424 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_EB1__IPU1_DISP1_DATA10       0x110 0x424 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_EB1__IPU2_CSI1_DATA10        0x110 0x424 0x8b0 0x2 0x1
+-#define MX6Q_PAD_EIM_EB1__GPIO2_IO29              0x110 0x424 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_EB1__SRC_BOOT_CFG28          0x110 0x424 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA0__EIM_AD00                0x114 0x428 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA0__IPU1_DISP1_DATA09       0x114 0x428 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA0__IPU2_CSI1_DATA09        0x114 0x428 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA0__GPIO3_IO00              0x114 0x428 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA0__SRC_BOOT_CFG00          0x114 0x428 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA1__EIM_AD01                0x118 0x42c 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA1__IPU1_DISP1_DATA08       0x118 0x42c 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA1__IPU2_CSI1_DATA08        0x118 0x42c 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA1__GPIO3_IO01              0x118 0x42c 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA1__SRC_BOOT_CFG01          0x118 0x42c 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA2__EIM_AD02                0x11c 0x430 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA2__IPU1_DISP1_DATA07       0x11c 0x430 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA2__IPU2_CSI1_DATA07        0x11c 0x430 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA2__GPIO3_IO02              0x11c 0x430 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA2__SRC_BOOT_CFG02          0x11c 0x430 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA3__EIM_AD03                0x120 0x434 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA3__IPU1_DISP1_DATA06       0x120 0x434 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA3__IPU2_CSI1_DATA06        0x120 0x434 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA3__GPIO3_IO03              0x120 0x434 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA3__SRC_BOOT_CFG03          0x120 0x434 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA4__EIM_AD04                0x124 0x438 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA4__IPU1_DISP1_DATA05       0x124 0x438 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA4__IPU2_CSI1_DATA05        0x124 0x438 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA4__GPIO3_IO04              0x124 0x438 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA4__SRC_BOOT_CFG04          0x124 0x438 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA5__EIM_AD05                0x128 0x43c 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA5__IPU1_DISP1_DATA04       0x128 0x43c 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA5__IPU2_CSI1_DATA04        0x128 0x43c 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA5__GPIO3_IO05              0x128 0x43c 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA5__SRC_BOOT_CFG05          0x128 0x43c 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA6__EIM_AD06                0x12c 0x440 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA6__IPU1_DISP1_DATA03       0x12c 0x440 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA6__IPU2_CSI1_DATA03        0x12c 0x440 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA6__GPIO3_IO06              0x12c 0x440 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA6__SRC_BOOT_CFG06          0x12c 0x440 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA7__EIM_AD07                0x130 0x444 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA7__IPU1_DISP1_DATA02       0x130 0x444 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA7__IPU2_CSI1_DATA02        0x130 0x444 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA7__GPIO3_IO07              0x130 0x444 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA7__SRC_BOOT_CFG07          0x130 0x444 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA8__EIM_AD08                0x134 0x448 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA8__IPU1_DISP1_DATA01       0x134 0x448 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA8__IPU2_CSI1_DATA01        0x134 0x448 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA8__GPIO3_IO08              0x134 0x448 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA8__SRC_BOOT_CFG08          0x134 0x448 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA9__EIM_AD09                0x138 0x44c 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA9__IPU1_DISP1_DATA00       0x138 0x44c 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA9__IPU2_CSI1_DATA00        0x138 0x44c 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA9__GPIO3_IO09              0x138 0x44c 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA9__SRC_BOOT_CFG09          0x138 0x44c 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA10__EIM_AD10               0x13c 0x450 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA10__IPU1_DI1_PIN15         0x13c 0x450 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA10__IPU2_CSI1_DATA_EN      0x13c 0x450 0x8d8 0x2 0x1
+-#define MX6Q_PAD_EIM_DA10__GPIO3_IO10             0x13c 0x450 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA10__SRC_BOOT_CFG10         0x13c 0x450 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA11__EIM_AD11               0x140 0x454 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA11__IPU1_DI1_PIN02         0x140 0x454 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA11__IPU2_CSI1_HSYNC        0x140 0x454 0x8dc 0x2 0x1
+-#define MX6Q_PAD_EIM_DA11__GPIO3_IO11             0x140 0x454 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA11__SRC_BOOT_CFG11         0x140 0x454 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA12__EIM_AD12               0x144 0x458 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA12__IPU1_DI1_PIN03         0x144 0x458 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA12__IPU2_CSI1_VSYNC        0x144 0x458 0x8e4 0x2 0x1
+-#define MX6Q_PAD_EIM_DA12__GPIO3_IO12             0x144 0x458 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA12__SRC_BOOT_CFG12         0x144 0x458 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA13__EIM_AD13               0x148 0x45c 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA13__IPU1_DI1_D0_CS         0x148 0x45c 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA13__GPIO3_IO13             0x148 0x45c 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA13__SRC_BOOT_CFG13         0x148 0x45c 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA14__EIM_AD14               0x14c 0x460 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA14__IPU1_DI1_D1_CS         0x14c 0x460 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA14__GPIO3_IO14             0x14c 0x460 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA14__SRC_BOOT_CFG14         0x14c 0x460 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_DA15__EIM_AD15               0x150 0x464 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_DA15__IPU1_DI1_PIN01         0x150 0x464 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_DA15__IPU1_DI1_PIN04         0x150 0x464 0x000 0x2 0x0
+-#define MX6Q_PAD_EIM_DA15__GPIO3_IO15             0x150 0x464 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_DA15__SRC_BOOT_CFG15         0x150 0x464 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_WAIT__EIM_WAIT_B             0x154 0x468 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_WAIT__EIM_DTACK_B            0x154 0x468 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_WAIT__GPIO5_IO00             0x154 0x468 0x000 0x5 0x0
+-#define MX6Q_PAD_EIM_WAIT__SRC_BOOT_CFG25         0x154 0x468 0x000 0x7 0x0
+-#define MX6Q_PAD_EIM_BCLK__EIM_BCLK               0x158 0x46c 0x000 0x0 0x0
+-#define MX6Q_PAD_EIM_BCLK__IPU1_DI1_PIN16         0x158 0x46c 0x000 0x1 0x0
+-#define MX6Q_PAD_EIM_BCLK__GPIO6_IO31             0x158 0x46c 0x000 0x5 0x0
+-#define MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK  0x15c 0x470 0x000 0x0 0x0
+-#define MX6Q_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK  0x15c 0x470 0x000 0x1 0x0
+-#define MX6Q_PAD_DI0_DISP_CLK__GPIO4_IO16         0x15c 0x470 0x000 0x5 0x0
+-#define MX6Q_PAD_DI0_PIN15__IPU1_DI0_PIN15        0x160 0x474 0x000 0x0 0x0
+-#define MX6Q_PAD_DI0_PIN15__IPU2_DI0_PIN15        0x160 0x474 0x000 0x1 0x0
+-#define MX6Q_PAD_DI0_PIN15__AUD6_TXC              0x160 0x474 0x000 0x2 0x0
+-#define MX6Q_PAD_DI0_PIN15__GPIO4_IO17            0x160 0x474 0x000 0x5 0x0
+-#define MX6Q_PAD_DI0_PIN2__IPU1_DI0_PIN02         0x164 0x478 0x000 0x0 0x0
+-#define MX6Q_PAD_DI0_PIN2__IPU2_DI0_PIN02         0x164 0x478 0x000 0x1 0x0
+-#define MX6Q_PAD_DI0_PIN2__AUD6_TXD               0x164 0x478 0x000 0x2 0x0
+-#define MX6Q_PAD_DI0_PIN2__GPIO4_IO18             0x164 0x478 0x000 0x5 0x0
+-#define MX6Q_PAD_DI0_PIN3__IPU1_DI0_PIN03         0x168 0x47c 0x000 0x0 0x0
+-#define MX6Q_PAD_DI0_PIN3__IPU2_DI0_PIN03         0x168 0x47c 0x000 0x1 0x0
+-#define MX6Q_PAD_DI0_PIN3__AUD6_TXFS              0x168 0x47c 0x000 0x2 0x0
+-#define MX6Q_PAD_DI0_PIN3__GPIO4_IO19             0x168 0x47c 0x000 0x5 0x0
+-#define MX6Q_PAD_DI0_PIN4__IPU1_DI0_PIN04         0x16c 0x480 0x000 0x0 0x0
+-#define MX6Q_PAD_DI0_PIN4__IPU2_DI0_PIN04         0x16c 0x480 0x000 0x1 0x0
+-#define MX6Q_PAD_DI0_PIN4__AUD6_RXD               0x16c 0x480 0x000 0x2 0x0
+-#define MX6Q_PAD_DI0_PIN4__SD1_WP                 0x16c 0x480 0x94c 0x3 0x0
+-#define MX6Q_PAD_DI0_PIN4__GPIO4_IO20             0x16c 0x480 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT0__IPU1_DISP0_DATA00    0x170 0x484 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT0__IPU2_DISP0_DATA00    0x170 0x484 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT0__ECSPI3_SCLK          0x170 0x484 0x000 0x2 0x0
+-#define MX6Q_PAD_DISP0_DAT0__GPIO4_IO21           0x170 0x484 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT1__IPU1_DISP0_DATA01    0x174 0x488 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT1__IPU2_DISP0_DATA01    0x174 0x488 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT1__ECSPI3_MOSI          0x174 0x488 0x000 0x2 0x0
+-#define MX6Q_PAD_DISP0_DAT1__GPIO4_IO22           0x174 0x488 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT2__IPU1_DISP0_DATA02    0x178 0x48c 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT2__IPU2_DISP0_DATA02    0x178 0x48c 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT2__ECSPI3_MISO          0x178 0x48c 0x000 0x2 0x0
+-#define MX6Q_PAD_DISP0_DAT2__GPIO4_IO23           0x178 0x48c 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT3__IPU1_DISP0_DATA03    0x17c 0x490 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT3__IPU2_DISP0_DATA03    0x17c 0x490 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT3__ECSPI3_SS0           0x17c 0x490 0x000 0x2 0x0
+-#define MX6Q_PAD_DISP0_DAT3__GPIO4_IO24           0x17c 0x490 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT4__IPU1_DISP0_DATA04    0x180 0x494 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT4__IPU2_DISP0_DATA04    0x180 0x494 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT4__ECSPI3_SS1           0x180 0x494 0x000 0x2 0x0
+-#define MX6Q_PAD_DISP0_DAT4__GPIO4_IO25           0x180 0x494 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT5__IPU1_DISP0_DATA05    0x184 0x498 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT5__IPU2_DISP0_DATA05    0x184 0x498 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT5__ECSPI3_SS2           0x184 0x498 0x000 0x2 0x0
+-#define MX6Q_PAD_DISP0_DAT5__AUD6_RXFS            0x184 0x498 0x000 0x3 0x0
+-#define MX6Q_PAD_DISP0_DAT5__GPIO4_IO26           0x184 0x498 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT6__IPU1_DISP0_DATA06    0x188 0x49c 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT6__IPU2_DISP0_DATA06    0x188 0x49c 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT6__ECSPI3_SS3           0x188 0x49c 0x000 0x2 0x0
+-#define MX6Q_PAD_DISP0_DAT6__AUD6_RXC             0x188 0x49c 0x000 0x3 0x0
+-#define MX6Q_PAD_DISP0_DAT6__GPIO4_IO27           0x188 0x49c 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT7__IPU1_DISP0_DATA07    0x18c 0x4a0 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT7__IPU2_DISP0_DATA07    0x18c 0x4a0 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT7__ECSPI3_RDY           0x18c 0x4a0 0x000 0x2 0x0
+-#define MX6Q_PAD_DISP0_DAT7__GPIO4_IO28           0x18c 0x4a0 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT8__IPU1_DISP0_DATA08    0x190 0x4a4 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT8__IPU2_DISP0_DATA08    0x190 0x4a4 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT8__PWM1_OUT             0x190 0x4a4 0x000 0x2 0x0
+-#define MX6Q_PAD_DISP0_DAT8__WDOG1_B              0x190 0x4a4 0x000 0x3 0x0
+-#define MX6Q_PAD_DISP0_DAT8__GPIO4_IO29           0x190 0x4a4 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT9__IPU1_DISP0_DATA09    0x194 0x4a8 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT9__IPU2_DISP0_DATA09    0x194 0x4a8 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT9__PWM2_OUT             0x194 0x4a8 0x000 0x2 0x0
+-#define MX6Q_PAD_DISP0_DAT9__WDOG2_B              0x194 0x4a8 0x000 0x3 0x0
+-#define MX6Q_PAD_DISP0_DAT9__GPIO4_IO30           0x194 0x4a8 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT10__IPU1_DISP0_DATA10   0x198 0x4ac 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT10__IPU2_DISP0_DATA10   0x198 0x4ac 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT10__GPIO4_IO31          0x198 0x4ac 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT11__IPU1_DISP0_DATA11   0x19c 0x4b0 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT11__IPU2_DISP0_DATA11   0x19c 0x4b0 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT11__GPIO5_IO05          0x19c 0x4b0 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT12__IPU1_DISP0_DATA12   0x1a0 0x4b4 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT12__IPU2_DISP0_DATA12   0x1a0 0x4b4 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT12__GPIO5_IO06          0x1a0 0x4b4 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT13__IPU1_DISP0_DATA13   0x1a4 0x4b8 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT13__IPU2_DISP0_DATA13   0x1a4 0x4b8 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT13__AUD5_RXFS           0x1a4 0x4b8 0x7d8 0x3 0x1
+-#define MX6Q_PAD_DISP0_DAT13__GPIO5_IO07          0x1a4 0x4b8 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT14__IPU1_DISP0_DATA14   0x1a8 0x4bc 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT14__IPU2_DISP0_DATA14   0x1a8 0x4bc 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT14__AUD5_RXC            0x1a8 0x4bc 0x7d4 0x3 0x1
+-#define MX6Q_PAD_DISP0_DAT14__GPIO5_IO08          0x1a8 0x4bc 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT15__IPU1_DISP0_DATA15   0x1ac 0x4c0 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT15__IPU2_DISP0_DATA15   0x1ac 0x4c0 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT15__ECSPI1_SS1          0x1ac 0x4c0 0x804 0x2 0x1
+-#define MX6Q_PAD_DISP0_DAT15__ECSPI2_SS1          0x1ac 0x4c0 0x820 0x3 0x1
+-#define MX6Q_PAD_DISP0_DAT15__GPIO5_IO09          0x1ac 0x4c0 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT16__IPU1_DISP0_DATA16   0x1b0 0x4c4 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT16__IPU2_DISP0_DATA16   0x1b0 0x4c4 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT16__ECSPI2_MOSI         0x1b0 0x4c4 0x818 0x2 0x1
+-#define MX6Q_PAD_DISP0_DAT16__AUD5_TXC            0x1b0 0x4c4 0x7dc 0x3 0x0
+-#define MX6Q_PAD_DISP0_DAT16__SDMA_EXT_EVENT0     0x1b0 0x4c4 0x90c 0x4 0x0
+-#define MX6Q_PAD_DISP0_DAT16__GPIO5_IO10          0x1b0 0x4c4 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT17__IPU1_DISP0_DATA17   0x1b4 0x4c8 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT17__IPU2_DISP0_DATA17   0x1b4 0x4c8 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT17__ECSPI2_MISO         0x1b4 0x4c8 0x814 0x2 0x1
+-#define MX6Q_PAD_DISP0_DAT17__AUD5_TXD            0x1b4 0x4c8 0x7d0 0x3 0x0
+-#define MX6Q_PAD_DISP0_DAT17__SDMA_EXT_EVENT1     0x1b4 0x4c8 0x910 0x4 0x0
+-#define MX6Q_PAD_DISP0_DAT17__GPIO5_IO11          0x1b4 0x4c8 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT18__IPU1_DISP0_DATA18   0x1b8 0x4cc 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT18__IPU2_DISP0_DATA18   0x1b8 0x4cc 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT18__ECSPI2_SS0          0x1b8 0x4cc 0x81c 0x2 0x1
+-#define MX6Q_PAD_DISP0_DAT18__AUD5_TXFS           0x1b8 0x4cc 0x7e0 0x3 0x0
+-#define MX6Q_PAD_DISP0_DAT18__AUD4_RXFS           0x1b8 0x4cc 0x7c0 0x4 0x0
+-#define MX6Q_PAD_DISP0_DAT18__GPIO5_IO12          0x1b8 0x4cc 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT18__EIM_CS2_B           0x1b8 0x4cc 0x000 0x7 0x0
+-#define MX6Q_PAD_DISP0_DAT19__IPU1_DISP0_DATA19   0x1bc 0x4d0 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT19__IPU2_DISP0_DATA19   0x1bc 0x4d0 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT19__ECSPI2_SCLK         0x1bc 0x4d0 0x810 0x2 0x1
+-#define MX6Q_PAD_DISP0_DAT19__AUD5_RXD            0x1bc 0x4d0 0x7cc 0x3 0x0
+-#define MX6Q_PAD_DISP0_DAT19__AUD4_RXC            0x1bc 0x4d0 0x7bc 0x4 0x0
+-#define MX6Q_PAD_DISP0_DAT19__GPIO5_IO13          0x1bc 0x4d0 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT19__EIM_CS3_B           0x1bc 0x4d0 0x000 0x7 0x0
+-#define MX6Q_PAD_DISP0_DAT20__IPU1_DISP0_DATA20   0x1c0 0x4d4 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT20__IPU2_DISP0_DATA20   0x1c0 0x4d4 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT20__ECSPI1_SCLK         0x1c0 0x4d4 0x7f4 0x2 0x1
+-#define MX6Q_PAD_DISP0_DAT20__AUD4_TXC            0x1c0 0x4d4 0x7c4 0x3 0x0
+-#define MX6Q_PAD_DISP0_DAT20__GPIO5_IO14          0x1c0 0x4d4 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT21__IPU1_DISP0_DATA21   0x1c4 0x4d8 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT21__IPU2_DISP0_DATA21   0x1c4 0x4d8 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT21__ECSPI1_MOSI         0x1c4 0x4d8 0x7fc 0x2 0x1
+-#define MX6Q_PAD_DISP0_DAT21__AUD4_TXD            0x1c4 0x4d8 0x7b8 0x3 0x1
+-#define MX6Q_PAD_DISP0_DAT21__GPIO5_IO15          0x1c4 0x4d8 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT22__IPU1_DISP0_DATA22   0x1c8 0x4dc 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT22__IPU2_DISP0_DATA22   0x1c8 0x4dc 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT22__ECSPI1_MISO         0x1c8 0x4dc 0x7f8 0x2 0x1
+-#define MX6Q_PAD_DISP0_DAT22__AUD4_TXFS           0x1c8 0x4dc 0x7c8 0x3 0x1
+-#define MX6Q_PAD_DISP0_DAT22__GPIO5_IO16          0x1c8 0x4dc 0x000 0x5 0x0
+-#define MX6Q_PAD_DISP0_DAT23__IPU1_DISP0_DATA23   0x1cc 0x4e0 0x000 0x0 0x0
+-#define MX6Q_PAD_DISP0_DAT23__IPU2_DISP0_DATA23   0x1cc 0x4e0 0x000 0x1 0x0
+-#define MX6Q_PAD_DISP0_DAT23__ECSPI1_SS0          0x1cc 0x4e0 0x800 0x2 0x1
+-#define MX6Q_PAD_DISP0_DAT23__AUD4_RXD            0x1cc 0x4e0 0x7b4 0x3 0x1
+-#define MX6Q_PAD_DISP0_DAT23__GPIO5_IO17          0x1cc 0x4e0 0x000 0x5 0x0
+-#define MX6Q_PAD_ENET_MDIO__ENET_MDIO             0x1d0 0x4e4 0x840 0x1 0x0
+-#define MX6Q_PAD_ENET_MDIO__ESAI_RX_CLK           0x1d0 0x4e4 0x86c 0x2 0x0
+-#define MX6Q_PAD_ENET_MDIO__ENET_1588_EVENT1_OUT  0x1d0 0x4e4 0x000 0x4 0x0
+-#define MX6Q_PAD_ENET_MDIO__GPIO1_IO22            0x1d0 0x4e4 0x000 0x5 0x0
+-#define MX6Q_PAD_ENET_MDIO__SPDIF_LOCK            0x1d0 0x4e4 0x000 0x6 0x0
+-#define MX6Q_PAD_ENET_REF_CLK__ENET_TX_CLK        0x1d4 0x4e8 0x000 0x1 0x0
+-#define MX6Q_PAD_ENET_REF_CLK__ESAI_RX_FS         0x1d4 0x4e8 0x85c 0x2 0x0
+-#define MX6Q_PAD_ENET_REF_CLK__GPIO1_IO23         0x1d4 0x4e8 0x000 0x5 0x0
+-#define MX6Q_PAD_ENET_REF_CLK__SPDIF_SR_CLK       0x1d4 0x4e8 0x000 0x6 0x0
+-#define MX6Q_PAD_ENET_RX_ER__USB_OTG_ID           0x1d8 0x4ec 0x000 0x0 0x0
+-#define MX6Q_PAD_ENET_RX_ER__ENET_RX_ER           0x1d8 0x4ec 0x000 0x1 0x0
+-#define MX6Q_PAD_ENET_RX_ER__ESAI_RX_HF_CLK       0x1d8 0x4ec 0x864 0x2 0x0
+-#define MX6Q_PAD_ENET_RX_ER__SPDIF_IN             0x1d8 0x4ec 0x914 0x3 0x1
+-#define MX6Q_PAD_ENET_RX_ER__ENET_1588_EVENT2_OUT 0x1d8 0x4ec 0x000 0x4 0x0
+-#define MX6Q_PAD_ENET_RX_ER__GPIO1_IO24           0x1d8 0x4ec 0x000 0x5 0x0
+-#define MX6Q_PAD_ENET_CRS_DV__ENET_RX_EN          0x1dc 0x4f0 0x858 0x1 0x1
+-#define MX6Q_PAD_ENET_CRS_DV__ESAI_TX_CLK         0x1dc 0x4f0 0x870 0x2 0x0
+-#define MX6Q_PAD_ENET_CRS_DV__SPDIF_EXT_CLK       0x1dc 0x4f0 0x918 0x3 0x1
+-#define MX6Q_PAD_ENET_CRS_DV__GPIO1_IO25          0x1dc 0x4f0 0x000 0x5 0x0
+-#define MX6Q_PAD_ENET_RXD1__MLB_SIG               0x1e0 0x4f4 0x908 0x0 0x0
+-#define MX6Q_PAD_ENET_RXD1__ENET_RX_DATA1         0x1e0 0x4f4 0x84c 0x1 0x1
+-#define MX6Q_PAD_ENET_RXD1__ESAI_TX_FS            0x1e0 0x4f4 0x860 0x2 0x0
+-#define MX6Q_PAD_ENET_RXD1__ENET_1588_EVENT3_OUT  0x1e0 0x4f4 0x000 0x4 0x0
+-#define MX6Q_PAD_ENET_RXD1__GPIO1_IO26            0x1e0 0x4f4 0x000 0x5 0x0
+-#define MX6Q_PAD_ENET_RXD0__ENET_RX_DATA0         0x1e4 0x4f8 0x848 0x1 0x1
+-#define MX6Q_PAD_ENET_RXD0__ESAI_TX_HF_CLK        0x1e4 0x4f8 0x868 0x2 0x0
+-#define MX6Q_PAD_ENET_RXD0__SPDIF_OUT             0x1e4 0x4f8 0x000 0x3 0x0
+-#define MX6Q_PAD_ENET_RXD0__GPIO1_IO27            0x1e4 0x4f8 0x000 0x5 0x0
+-#define MX6Q_PAD_ENET_TX_EN__ENET_TX_EN           0x1e8 0x4fc 0x000 0x1 0x0
+-#define MX6Q_PAD_ENET_TX_EN__ESAI_TX3_RX2         0x1e8 0x4fc 0x880 0x2 0x0
+-#define MX6Q_PAD_ENET_TX_EN__GPIO1_IO28           0x1e8 0x4fc 0x000 0x5 0x0
+-#define MX6Q_PAD_ENET_TXD1__MLB_CLK               0x1ec 0x500 0x900 0x0 0x0
+-#define MX6Q_PAD_ENET_TXD1__ENET_TX_DATA1         0x1ec 0x500 0x000 0x1 0x0
+-#define MX6Q_PAD_ENET_TXD1__ESAI_TX2_RX3          0x1ec 0x500 0x87c 0x2 0x0
+-#define MX6Q_PAD_ENET_TXD1__ENET_1588_EVENT0_IN   0x1ec 0x500 0x000 0x4 0x0
+-#define MX6Q_PAD_ENET_TXD1__GPIO1_IO29            0x1ec 0x500 0x000 0x5 0x0
+-#define MX6Q_PAD_ENET_TXD0__ENET_TX_DATA0         0x1f0 0x504 0x000 0x1 0x0
+-#define MX6Q_PAD_ENET_TXD0__ESAI_TX4_RX1          0x1f0 0x504 0x884 0x2 0x0
+-#define MX6Q_PAD_ENET_TXD0__GPIO1_IO30            0x1f0 0x504 0x000 0x5 0x0
+-#define MX6Q_PAD_ENET_MDC__MLB_DATA               0x1f4 0x508 0x904 0x0 0x0
+-#define MX6Q_PAD_ENET_MDC__ENET_MDC               0x1f4 0x508 0x000 0x1 0x0
+-#define MX6Q_PAD_ENET_MDC__ESAI_TX5_RX0           0x1f4 0x508 0x888 0x2 0x0
+-#define MX6Q_PAD_ENET_MDC__ENET_1588_EVENT1_IN    0x1f4 0x508 0x000 0x4 0x0
+-#define MX6Q_PAD_ENET_MDC__GPIO1_IO31             0x1f4 0x508 0x000 0x5 0x0
+-#define MX6Q_PAD_KEY_COL0__ECSPI1_SCLK            0x1f8 0x5c8 0x7f4 0x0 0x2
+-#define MX6Q_PAD_KEY_COL0__ENET_RX_DATA3          0x1f8 0x5c8 0x854 0x1 0x1
+-#define MX6Q_PAD_KEY_COL0__AUD5_TXC               0x1f8 0x5c8 0x7dc 0x2 0x1
+-#define MX6Q_PAD_KEY_COL0__KEY_COL0               0x1f8 0x5c8 0x000 0x3 0x0
+-#define MX6Q_PAD_KEY_COL0__UART4_TX_DATA          0x1f8 0x5c8 0x000 0x4 0x0
+-#define MX6Q_PAD_KEY_COL0__UART4_RX_DATA          0x1f8 0x5c8 0x938 0x4 0x0
+-#define MX6Q_PAD_KEY_COL0__GPIO4_IO06             0x1f8 0x5c8 0x000 0x5 0x0
+-#define MX6Q_PAD_KEY_COL0__DCIC1_OUT              0x1f8 0x5c8 0x000 0x6 0x0
+-#define MX6Q_PAD_KEY_ROW0__ECSPI1_MOSI            0x1fc 0x5cc 0x7fc 0x0 0x2
+-#define MX6Q_PAD_KEY_ROW0__ENET_TX_DATA3          0x1fc 0x5cc 0x000 0x1 0x0
+-#define MX6Q_PAD_KEY_ROW0__AUD5_TXD               0x1fc 0x5cc 0x7d0 0x2 0x1
+-#define MX6Q_PAD_KEY_ROW0__KEY_ROW0               0x1fc 0x5cc 0x000 0x3 0x0
+-#define MX6Q_PAD_KEY_ROW0__UART4_RX_DATA          0x1fc 0x5cc 0x938 0x4 0x1
+-#define MX6Q_PAD_KEY_ROW0__UART4_TX_DATA          0x1fc 0x5cc 0x000 0x4 0x0
+-#define MX6Q_PAD_KEY_ROW0__GPIO4_IO07             0x1fc 0x5cc 0x000 0x5 0x0
+-#define MX6Q_PAD_KEY_ROW0__DCIC2_OUT              0x1fc 0x5cc 0x000 0x6 0x0
+-#define MX6Q_PAD_KEY_COL1__ECSPI1_MISO            0x200 0x5d0 0x7f8 0x0 0x2
+-#define MX6Q_PAD_KEY_COL1__ENET_MDIO              0x200 0x5d0 0x840 0x1 0x1
+-#define MX6Q_PAD_KEY_COL1__AUD5_TXFS              0x200 0x5d0 0x7e0 0x2 0x1
+-#define MX6Q_PAD_KEY_COL1__KEY_COL1               0x200 0x5d0 0x000 0x3 0x0
+-#define MX6Q_PAD_KEY_COL1__UART5_TX_DATA          0x200 0x5d0 0x000 0x4 0x0
+-#define MX6Q_PAD_KEY_COL1__UART5_RX_DATA          0x200 0x5d0 0x940 0x4 0x0
+-#define MX6Q_PAD_KEY_COL1__GPIO4_IO08             0x200 0x5d0 0x000 0x5 0x0
+-#define MX6Q_PAD_KEY_COL1__SD1_VSELECT            0x200 0x5d0 0x000 0x6 0x0
+-#define MX6Q_PAD_KEY_ROW1__ECSPI1_SS0             0x204 0x5d4 0x800 0x0 0x2
+-#define MX6Q_PAD_KEY_ROW1__ENET_COL               0x204 0x5d4 0x000 0x1 0x0
+-#define MX6Q_PAD_KEY_ROW1__AUD5_RXD               0x204 0x5d4 0x7cc 0x2 0x1
+-#define MX6Q_PAD_KEY_ROW1__KEY_ROW1               0x204 0x5d4 0x000 0x3 0x0
+-#define MX6Q_PAD_KEY_ROW1__UART5_RX_DATA          0x204 0x5d4 0x940 0x4 0x1
+-#define MX6Q_PAD_KEY_ROW1__UART5_TX_DATA          0x204 0x5d4 0x000 0x4 0x0
+-#define MX6Q_PAD_KEY_ROW1__GPIO4_IO09             0x204 0x5d4 0x000 0x5 0x0
+-#define MX6Q_PAD_KEY_ROW1__SD2_VSELECT            0x204 0x5d4 0x000 0x6 0x0
+-#define MX6Q_PAD_KEY_COL2__ECSPI1_SS1             0x208 0x5d8 0x804 0x0 0x2
+-#define MX6Q_PAD_KEY_COL2__ENET_RX_DATA2          0x208 0x5d8 0x850 0x1 0x1
+-#define MX6Q_PAD_KEY_COL2__FLEXCAN1_TX            0x208 0x5d8 0x000 0x2 0x0
+-#define MX6Q_PAD_KEY_COL2__KEY_COL2               0x208 0x5d8 0x000 0x3 0x0
+-#define MX6Q_PAD_KEY_COL2__ENET_MDC               0x208 0x5d8 0x000 0x4 0x0
+-#define MX6Q_PAD_KEY_COL2__GPIO4_IO10             0x208 0x5d8 0x000 0x5 0x0
+-#define MX6Q_PAD_KEY_COL2__USB_H1_PWR_CTL_WAKE    0x208 0x5d8 0x000 0x6 0x0
+-#define MX6Q_PAD_KEY_ROW2__ECSPI1_SS2             0x20c 0x5dc 0x808 0x0 0x1
+-#define MX6Q_PAD_KEY_ROW2__ENET_TX_DATA2          0x20c 0x5dc 0x000 0x1 0x0
+-#define MX6Q_PAD_KEY_ROW2__FLEXCAN1_RX            0x20c 0x5dc 0x7e4 0x2 0x0
+-#define MX6Q_PAD_KEY_ROW2__KEY_ROW2               0x20c 0x5dc 0x000 0x3 0x0
+-#define MX6Q_PAD_KEY_ROW2__SD2_VSELECT            0x20c 0x5dc 0x000 0x4 0x0
+-#define MX6Q_PAD_KEY_ROW2__GPIO4_IO11             0x20c 0x5dc 0x000 0x5 0x0
+-#define MX6Q_PAD_KEY_ROW2__HDMI_TX_CEC_LINE       0x20c 0x5dc 0x88c 0x6 0x1
+-#define MX6Q_PAD_KEY_COL3__ECSPI1_SS3             0x210 0x5e0 0x80c 0x0 0x1
+-#define MX6Q_PAD_KEY_COL3__ENET_CRS               0x210 0x5e0 0x000 0x1 0x0
+-#define MX6Q_PAD_KEY_COL3__HDMI_TX_DDC_SCL        0x210 0x5e0 0x890 0x2 0x1
+-#define MX6Q_PAD_KEY_COL3__KEY_COL3               0x210 0x5e0 0x000 0x3 0x0
+-#define MX6Q_PAD_KEY_COL3__I2C2_SCL               0x210 0x5e0 0x8a0 0x4 0x1
+-#define MX6Q_PAD_KEY_COL3__GPIO4_IO12             0x210 0x5e0 0x000 0x5 0x0
+-#define MX6Q_PAD_KEY_COL3__SPDIF_IN               0x210 0x5e0 0x914 0x6 0x2
+-#define MX6Q_PAD_KEY_ROW3__ASRC_EXT_CLK           0x214 0x5e4 0x7b0 0x1 0x0
+-#define MX6Q_PAD_KEY_ROW3__HDMI_TX_DDC_SDA        0x214 0x5e4 0x894 0x2 0x1
+-#define MX6Q_PAD_KEY_ROW3__KEY_ROW3               0x214 0x5e4 0x000 0x3 0x0
+-#define MX6Q_PAD_KEY_ROW3__I2C2_SDA               0x214 0x5e4 0x8a4 0x4 0x1
+-#define MX6Q_PAD_KEY_ROW3__GPIO4_IO13             0x214 0x5e4 0x000 0x5 0x0
+-#define MX6Q_PAD_KEY_ROW3__SD1_VSELECT            0x214 0x5e4 0x000 0x6 0x0
+-#define MX6Q_PAD_KEY_COL4__FLEXCAN2_TX            0x218 0x5e8 0x000 0x0 0x0
+-#define MX6Q_PAD_KEY_COL4__IPU1_SISG4             0x218 0x5e8 0x000 0x1 0x0
+-#define MX6Q_PAD_KEY_COL4__USB_OTG_OC             0x218 0x5e8 0x944 0x2 0x1
+-#define MX6Q_PAD_KEY_COL4__KEY_COL4               0x218 0x5e8 0x000 0x3 0x0
+-#define MX6Q_PAD_KEY_COL4__UART5_RTS_B            0x218 0x5e8 0x93c 0x4 0x0
+-#define MX6Q_PAD_KEY_COL4__UART5_CTS_B            0x218 0x5e8 0x000 0x4 0x0
+-#define MX6Q_PAD_KEY_COL4__GPIO4_IO14             0x218 0x5e8 0x000 0x5 0x0
+-#define MX6Q_PAD_KEY_ROW4__FLEXCAN2_RX            0x21c 0x5ec 0x7e8 0x0 0x0
+-#define MX6Q_PAD_KEY_ROW4__IPU1_SISG5             0x21c 0x5ec 0x000 0x1 0x0
+-#define MX6Q_PAD_KEY_ROW4__USB_OTG_PWR            0x21c 0x5ec 0x000 0x2 0x0
+-#define MX6Q_PAD_KEY_ROW4__KEY_ROW4               0x21c 0x5ec 0x000 0x3 0x0
+-#define MX6Q_PAD_KEY_ROW4__UART5_CTS_B            0x21c 0x5ec 0x000 0x4 0x0
+-#define MX6Q_PAD_KEY_ROW4__UART5_RTS_B            0x21c 0x5ec 0x93c 0x4 0x1
+-#define MX6Q_PAD_KEY_ROW4__GPIO4_IO15             0x21c 0x5ec 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_0__CCM_CLKO1                0x220 0x5f0 0x000 0x0 0x0
+-#define MX6Q_PAD_GPIO_0__KEY_COL5                 0x220 0x5f0 0x8e8 0x2 0x0
+-#define MX6Q_PAD_GPIO_0__ASRC_EXT_CLK             0x220 0x5f0 0x7b0 0x3 0x1
+-#define MX6Q_PAD_GPIO_0__EPIT1_OUT                0x220 0x5f0 0x000 0x4 0x0
+-#define MX6Q_PAD_GPIO_0__GPIO1_IO00               0x220 0x5f0 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_0__USB_H1_PWR               0x220 0x5f0 0x000 0x6 0x0
+-#define MX6Q_PAD_GPIO_0__SNVS_VIO_5               0x220 0x5f0 0x000 0x7 0x0
+-#define MX6Q_PAD_GPIO_1__ESAI_RX_CLK              0x224 0x5f4 0x86c 0x0 0x1
+-#define MX6Q_PAD_GPIO_1__WDOG2_B                  0x224 0x5f4 0x000 0x1 0x0
+-#define MX6Q_PAD_GPIO_1__KEY_ROW5                 0x224 0x5f4 0x8f4 0x2 0x0
+-#define MX6Q_PAD_GPIO_1__USB_OTG_ID               0x224 0x5f4 0x000 0x3 0x0
+-#define MX6Q_PAD_GPIO_1__PWM2_OUT                 0x224 0x5f4 0x000 0x4 0x0
+-#define MX6Q_PAD_GPIO_1__GPIO1_IO01               0x224 0x5f4 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_1__SD1_CD_B                 0x224 0x5f4 0x000 0x6 0x0
+-#define MX6Q_PAD_GPIO_9__ESAI_RX_FS               0x228 0x5f8 0x85c 0x0 0x1
+-#define MX6Q_PAD_GPIO_9__WDOG1_B                  0x228 0x5f8 0x000 0x1 0x0
+-#define MX6Q_PAD_GPIO_9__KEY_COL6                 0x228 0x5f8 0x8ec 0x2 0x0
+-#define MX6Q_PAD_GPIO_9__CCM_REF_EN_B             0x228 0x5f8 0x000 0x3 0x0
+-#define MX6Q_PAD_GPIO_9__PWM1_OUT                 0x228 0x5f8 0x000 0x4 0x0
+-#define MX6Q_PAD_GPIO_9__GPIO1_IO09               0x228 0x5f8 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_9__SD1_WP                   0x228 0x5f8 0x94c 0x6 0x1
+-#define MX6Q_PAD_GPIO_3__ESAI_RX_HF_CLK           0x22c 0x5fc 0x864 0x0 0x1
+-#define MX6Q_PAD_GPIO_3__I2C3_SCL                 0x22c 0x5fc 0x8a8 0x2 0x1
+-#define MX6Q_PAD_GPIO_3__XTALOSC_REF_CLK_24M      0x22c 0x5fc 0x000 0x3 0x0
+-#define MX6Q_PAD_GPIO_3__CCM_CLKO2                0x22c 0x5fc 0x000 0x4 0x0
+-#define MX6Q_PAD_GPIO_3__GPIO1_IO03               0x22c 0x5fc 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_3__USB_H1_OC                0x22c 0x5fc 0x948 0x6 0x1
+-#define MX6Q_PAD_GPIO_3__MLB_CLK                  0x22c 0x5fc 0x900 0x7 0x1
+-#define MX6Q_PAD_GPIO_6__ESAI_TX_CLK              0x230 0x600 0x870 0x0 0x1
+-#define MX6Q_PAD_GPIO_6__I2C3_SDA                 0x230 0x600 0x8ac 0x2 0x1
+-#define MX6Q_PAD_GPIO_6__GPIO1_IO06               0x230 0x600 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_6__SD2_LCTL                 0x230 0x600 0x000 0x6 0x0
+-#define MX6Q_PAD_GPIO_6__MLB_SIG                  0x230 0x600 0x908 0x7 0x1
+-#define MX6Q_PAD_GPIO_2__ESAI_TX_FS               0x234 0x604 0x860 0x0 0x1
+-#define MX6Q_PAD_GPIO_2__KEY_ROW6                 0x234 0x604 0x8f8 0x2 0x1
+-#define MX6Q_PAD_GPIO_2__GPIO1_IO02               0x234 0x604 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_2__SD2_WP                   0x234 0x604 0x000 0x6 0x0
+-#define MX6Q_PAD_GPIO_2__MLB_DATA                 0x234 0x604 0x904 0x7 0x1
+-#define MX6Q_PAD_GPIO_4__ESAI_TX_HF_CLK           0x238 0x608 0x868 0x0 0x1
+-#define MX6Q_PAD_GPIO_4__KEY_COL7                 0x238 0x608 0x8f0 0x2 0x1
+-#define MX6Q_PAD_GPIO_4__GPIO1_IO04               0x238 0x608 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_4__SD2_CD_B                 0x238 0x608 0x000 0x6 0x0
+-#define MX6Q_PAD_GPIO_5__ESAI_TX2_RX3             0x23c 0x60c 0x87c 0x0 0x1
+-#define MX6Q_PAD_GPIO_5__KEY_ROW7                 0x23c 0x60c 0x8fc 0x2 0x1
+-#define MX6Q_PAD_GPIO_5__CCM_CLKO1                0x23c 0x60c 0x000 0x3 0x0
+-#define MX6Q_PAD_GPIO_5__GPIO1_IO05               0x23c 0x60c 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_5__I2C3_SCL                 0x23c 0x60c 0x8a8 0x6 0x2
+-#define MX6Q_PAD_GPIO_5__ARM_EVENTI               0x23c 0x60c 0x000 0x7 0x0
+-#define MX6Q_PAD_GPIO_7__ESAI_TX4_RX1             0x240 0x610 0x884 0x0 0x1
+-#define MX6Q_PAD_GPIO_7__ECSPI5_RDY               0x240 0x610 0x000 0x1 0x0
+-#define MX6Q_PAD_GPIO_7__EPIT1_OUT                0x240 0x610 0x000 0x2 0x0
+-#define MX6Q_PAD_GPIO_7__FLEXCAN1_TX              0x240 0x610 0x000 0x3 0x0
+-#define MX6Q_PAD_GPIO_7__UART2_TX_DATA            0x240 0x610 0x000 0x4 0x0
+-#define MX6Q_PAD_GPIO_7__UART2_RX_DATA            0x240 0x610 0x928 0x4 0x2
+-#define MX6Q_PAD_GPIO_7__GPIO1_IO07               0x240 0x610 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_7__SPDIF_LOCK               0x240 0x610 0x000 0x6 0x0
+-#define MX6Q_PAD_GPIO_7__USB_OTG_HOST_MODE        0x240 0x610 0x000 0x7 0x0
+-#define MX6Q_PAD_GPIO_8__ESAI_TX5_RX0             0x244 0x614 0x888 0x0 0x1
+-#define MX6Q_PAD_GPIO_8__XTALOSC_REF_CLK_32K      0x244 0x614 0x000 0x1 0x0
+-#define MX6Q_PAD_GPIO_8__EPIT2_OUT                0x244 0x614 0x000 0x2 0x0
+-#define MX6Q_PAD_GPIO_8__FLEXCAN1_RX              0x244 0x614 0x7e4 0x3 0x1
+-#define MX6Q_PAD_GPIO_8__UART2_RX_DATA            0x244 0x614 0x928 0x4 0x3
+-#define MX6Q_PAD_GPIO_8__UART2_TX_DATA            0x244 0x614 0x000 0x4 0x0
+-#define MX6Q_PAD_GPIO_8__GPIO1_IO08               0x244 0x614 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_8__SPDIF_SR_CLK             0x244 0x614 0x000 0x6 0x0
+-#define MX6Q_PAD_GPIO_8__USB_OTG_PWR_CTL_WAKE     0x244 0x614 0x000 0x7 0x0
+-#define MX6Q_PAD_GPIO_16__ESAI_TX3_RX2            0x248 0x618 0x880 0x0 0x1
+-#define MX6Q_PAD_GPIO_16__ENET_1588_EVENT2_IN     0x248 0x618 0x000 0x1 0x0
+-#define MX6Q_PAD_GPIO_16__ENET_REF_CLK            0x248 0x618 0x83c 0x2 0x1
+-#define MX6Q_PAD_GPIO_16__SD1_LCTL                0x248 0x618 0x000 0x3 0x0
+-#define MX6Q_PAD_GPIO_16__SPDIF_IN                0x248 0x618 0x914 0x4 0x3
+-#define MX6Q_PAD_GPIO_16__GPIO7_IO11              0x248 0x618 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_16__I2C3_SDA                0x248 0x618 0x8ac 0x6 0x2
+-#define MX6Q_PAD_GPIO_16__JTAG_DE_B               0x248 0x618 0x000 0x7 0x0
+-#define MX6Q_PAD_GPIO_17__ESAI_TX0                0x24c 0x61c 0x874 0x0 0x0
+-#define MX6Q_PAD_GPIO_17__ENET_1588_EVENT3_IN     0x24c 0x61c 0x000 0x1 0x0
+-#define MX6Q_PAD_GPIO_17__CCM_PMIC_READY          0x24c 0x61c 0x7f0 0x2 0x1
+-#define MX6Q_PAD_GPIO_17__SDMA_EXT_EVENT0         0x24c 0x61c 0x90c 0x3 0x1
+-#define MX6Q_PAD_GPIO_17__SPDIF_OUT               0x24c 0x61c 0x000 0x4 0x0
+-#define MX6Q_PAD_GPIO_17__GPIO7_IO12              0x24c 0x61c 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_18__ESAI_TX1                0x250 0x620 0x878 0x0 0x0
+-#define MX6Q_PAD_GPIO_18__ENET_RX_CLK             0x250 0x620 0x844 0x1 0x1
+-#define MX6Q_PAD_GPIO_18__SD3_VSELECT             0x250 0x620 0x000 0x2 0x0
+-#define MX6Q_PAD_GPIO_18__SDMA_EXT_EVENT1         0x250 0x620 0x910 0x3 0x1
+-#define MX6Q_PAD_GPIO_18__ASRC_EXT_CLK            0x250 0x620 0x7b0 0x4 0x2
+-#define MX6Q_PAD_GPIO_18__GPIO7_IO13              0x250 0x620 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_18__SNVS_VIO_5_CTL          0x250 0x620 0x000 0x6 0x0
+-#define MX6Q_PAD_GPIO_19__KEY_COL5                0x254 0x624 0x8e8 0x0 0x1
+-#define MX6Q_PAD_GPIO_19__ENET_1588_EVENT0_OUT    0x254 0x624 0x000 0x1 0x0
+-#define MX6Q_PAD_GPIO_19__SPDIF_OUT               0x254 0x624 0x000 0x2 0x0
+-#define MX6Q_PAD_GPIO_19__CCM_CLKO1               0x254 0x624 0x000 0x3 0x0
+-#define MX6Q_PAD_GPIO_19__ECSPI1_RDY              0x254 0x624 0x000 0x4 0x0
+-#define MX6Q_PAD_GPIO_19__GPIO4_IO05              0x254 0x624 0x000 0x5 0x0
+-#define MX6Q_PAD_GPIO_19__ENET_TX_ER              0x254 0x624 0x000 0x6 0x0
+-#define MX6Q_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK    0x258 0x628 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_PIXCLK__GPIO5_IO18          0x258 0x628 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_PIXCLK__ARM_EVENTO          0x258 0x628 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC       0x25c 0x62c 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_MCLK__CCM_CLKO1             0x25c 0x62c 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_MCLK__GPIO5_IO19            0x25c 0x62c 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_MCLK__ARM_TRACE_CTL         0x25c 0x62c 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DATA_EN__IPU1_CSI0_DATA_EN  0x260 0x630 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DATA_EN__EIM_DATA00         0x260 0x630 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DATA_EN__GPIO5_IO20         0x260 0x630 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DATA_EN__ARM_TRACE_CLK      0x260 0x630 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC      0x264 0x634 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_VSYNC__EIM_DATA01           0x264 0x634 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_VSYNC__GPIO5_IO21           0x264 0x634 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_VSYNC__ARM_TRACE00          0x264 0x634 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT4__IPU1_CSI0_DATA04      0x268 0x638 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT4__EIM_DATA02            0x268 0x638 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT4__ECSPI1_SCLK           0x268 0x638 0x7f4 0x2 0x3
+-#define MX6Q_PAD_CSI0_DAT4__KEY_COL5              0x268 0x638 0x8e8 0x3 0x2
+-#define MX6Q_PAD_CSI0_DAT4__AUD3_TXC              0x268 0x638 0x000 0x4 0x0
+-#define MX6Q_PAD_CSI0_DAT4__GPIO5_IO22            0x268 0x638 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT4__ARM_TRACE01           0x268 0x638 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT5__IPU1_CSI0_DATA05      0x26c 0x63c 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT5__EIM_DATA03            0x26c 0x63c 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT5__ECSPI1_MOSI           0x26c 0x63c 0x7fc 0x2 0x3
+-#define MX6Q_PAD_CSI0_DAT5__KEY_ROW5              0x26c 0x63c 0x8f4 0x3 0x1
+-#define MX6Q_PAD_CSI0_DAT5__AUD3_TXD              0x26c 0x63c 0x000 0x4 0x0
+-#define MX6Q_PAD_CSI0_DAT5__GPIO5_IO23            0x26c 0x63c 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT5__ARM_TRACE02           0x26c 0x63c 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT6__IPU1_CSI0_DATA06      0x270 0x640 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT6__EIM_DATA04            0x270 0x640 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT6__ECSPI1_MISO           0x270 0x640 0x7f8 0x2 0x3
+-#define MX6Q_PAD_CSI0_DAT6__KEY_COL6              0x270 0x640 0x8ec 0x3 0x1
+-#define MX6Q_PAD_CSI0_DAT6__AUD3_TXFS             0x270 0x640 0x000 0x4 0x0
+-#define MX6Q_PAD_CSI0_DAT6__GPIO5_IO24            0x270 0x640 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT6__ARM_TRACE03           0x270 0x640 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT7__IPU1_CSI0_DATA07      0x274 0x644 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT7__EIM_DATA05            0x274 0x644 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT7__ECSPI1_SS0            0x274 0x644 0x800 0x2 0x3
+-#define MX6Q_PAD_CSI0_DAT7__KEY_ROW6              0x274 0x644 0x8f8 0x3 0x2
+-#define MX6Q_PAD_CSI0_DAT7__AUD3_RXD              0x274 0x644 0x000 0x4 0x0
+-#define MX6Q_PAD_CSI0_DAT7__GPIO5_IO25            0x274 0x644 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT7__ARM_TRACE04           0x274 0x644 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT8__IPU1_CSI0_DATA08      0x278 0x648 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT8__EIM_DATA06            0x278 0x648 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT8__ECSPI2_SCLK           0x278 0x648 0x810 0x2 0x2
+-#define MX6Q_PAD_CSI0_DAT8__KEY_COL7              0x278 0x648 0x8f0 0x3 0x2
+-#define MX6Q_PAD_CSI0_DAT8__I2C1_SDA              0x278 0x648 0x89c 0x4 0x1
+-#define MX6Q_PAD_CSI0_DAT8__GPIO5_IO26            0x278 0x648 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT8__ARM_TRACE05           0x278 0x648 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT9__IPU1_CSI0_DATA09      0x27c 0x64c 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT9__EIM_DATA07            0x27c 0x64c 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT9__ECSPI2_MOSI           0x27c 0x64c 0x818 0x2 0x2
+-#define MX6Q_PAD_CSI0_DAT9__KEY_ROW7              0x27c 0x64c 0x8fc 0x3 0x2
+-#define MX6Q_PAD_CSI0_DAT9__I2C1_SCL              0x27c 0x64c 0x898 0x4 0x1
+-#define MX6Q_PAD_CSI0_DAT9__GPIO5_IO27            0x27c 0x64c 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT9__ARM_TRACE06           0x27c 0x64c 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT10__IPU1_CSI0_DATA10     0x280 0x650 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT10__AUD3_RXC             0x280 0x650 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT10__ECSPI2_MISO          0x280 0x650 0x814 0x2 0x2
+-#define MX6Q_PAD_CSI0_DAT10__UART1_TX_DATA        0x280 0x650 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT10__UART1_RX_DATA        0x280 0x650 0x920 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT10__GPIO5_IO28           0x280 0x650 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT10__ARM_TRACE07          0x280 0x650 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT11__IPU1_CSI0_DATA11     0x284 0x654 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT11__AUD3_RXFS            0x284 0x654 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT11__ECSPI2_SS0           0x284 0x654 0x81c 0x2 0x2
+-#define MX6Q_PAD_CSI0_DAT11__UART1_RX_DATA        0x284 0x654 0x920 0x3 0x1
+-#define MX6Q_PAD_CSI0_DAT11__UART1_TX_DATA        0x284 0x654 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT11__GPIO5_IO29           0x284 0x654 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT11__ARM_TRACE08          0x284 0x654 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT12__IPU1_CSI0_DATA12     0x288 0x658 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT12__EIM_DATA08           0x288 0x658 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT12__UART4_TX_DATA        0x288 0x658 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT12__UART4_RX_DATA        0x288 0x658 0x938 0x3 0x2
+-#define MX6Q_PAD_CSI0_DAT12__GPIO5_IO30           0x288 0x658 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT12__ARM_TRACE09          0x288 0x658 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT13__IPU1_CSI0_DATA13     0x28c 0x65c 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT13__EIM_DATA09           0x28c 0x65c 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT13__UART4_RX_DATA        0x28c 0x65c 0x938 0x3 0x3
+-#define MX6Q_PAD_CSI0_DAT13__UART4_TX_DATA        0x28c 0x65c 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT13__GPIO5_IO31           0x28c 0x65c 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT13__ARM_TRACE10          0x28c 0x65c 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT14__IPU1_CSI0_DATA14     0x290 0x660 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT14__EIM_DATA10           0x290 0x660 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT14__UART5_TX_DATA        0x290 0x660 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT14__UART5_RX_DATA        0x290 0x660 0x940 0x3 0x2
+-#define MX6Q_PAD_CSI0_DAT14__GPIO6_IO00           0x290 0x660 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT14__ARM_TRACE11          0x290 0x660 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT15__IPU1_CSI0_DATA15     0x294 0x664 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT15__EIM_DATA11           0x294 0x664 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT15__UART5_RX_DATA        0x294 0x664 0x940 0x3 0x3
+-#define MX6Q_PAD_CSI0_DAT15__UART5_TX_DATA        0x294 0x664 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT15__GPIO6_IO01           0x294 0x664 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT15__ARM_TRACE12          0x294 0x664 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT16__IPU1_CSI0_DATA16     0x298 0x668 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT16__EIM_DATA12           0x298 0x668 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT16__UART4_RTS_B          0x298 0x668 0x934 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT16__UART4_CTS_B          0x298 0x668 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT16__GPIO6_IO02           0x298 0x668 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT16__ARM_TRACE13          0x298 0x668 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT17__IPU1_CSI0_DATA17     0x29c 0x66c 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT17__EIM_DATA13           0x29c 0x66c 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT17__UART4_CTS_B          0x29c 0x66c 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT17__UART4_RTS_B          0x29c 0x66c 0x934 0x3 0x1
+-#define MX6Q_PAD_CSI0_DAT17__GPIO6_IO03           0x29c 0x66c 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT17__ARM_TRACE14          0x29c 0x66c 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT18__IPU1_CSI0_DATA18     0x2a0 0x670 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT18__EIM_DATA14           0x2a0 0x670 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT18__UART5_RTS_B          0x2a0 0x670 0x93c 0x3 0x2
+-#define MX6Q_PAD_CSI0_DAT18__UART5_CTS_B          0x2a0 0x670 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT18__GPIO6_IO04           0x2a0 0x670 0x000 0x5 0x0
+-#define MX6Q_PAD_CSI0_DAT18__ARM_TRACE15          0x2a0 0x670 0x000 0x7 0x0
+-#define MX6Q_PAD_CSI0_DAT19__IPU1_CSI0_DATA19     0x2a4 0x674 0x000 0x0 0x0
+-#define MX6Q_PAD_CSI0_DAT19__EIM_DATA15           0x2a4 0x674 0x000 0x1 0x0
+-#define MX6Q_PAD_CSI0_DAT19__UART5_CTS_B          0x2a4 0x674 0x000 0x3 0x0
+-#define MX6Q_PAD_CSI0_DAT19__UART5_RTS_B          0x2a4 0x674 0x93c 0x3 0x3
+-#define MX6Q_PAD_CSI0_DAT19__GPIO6_IO05           0x2a4 0x674 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_DAT7__SD3_DATA7              0x2a8 0x690 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_DAT7__UART1_TX_DATA          0x2a8 0x690 0x000 0x1 0x0
+-#define MX6Q_PAD_SD3_DAT7__UART1_RX_DATA          0x2a8 0x690 0x920 0x1 0x2
+-#define MX6Q_PAD_SD3_DAT7__GPIO6_IO17             0x2a8 0x690 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_DAT6__SD3_DATA6              0x2ac 0x694 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_DAT6__UART1_RX_DATA          0x2ac 0x694 0x920 0x1 0x3
+-#define MX6Q_PAD_SD3_DAT6__UART1_TX_DATA          0x2ac 0x694 0x000 0x1 0x0
+-#define MX6Q_PAD_SD3_DAT6__GPIO6_IO18             0x2ac 0x694 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_DAT5__SD3_DATA5              0x2b0 0x698 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_DAT5__UART2_TX_DATA          0x2b0 0x698 0x000 0x1 0x0
+-#define MX6Q_PAD_SD3_DAT5__UART2_RX_DATA          0x2b0 0x698 0x928 0x1 0x4
+-#define MX6Q_PAD_SD3_DAT5__GPIO7_IO00             0x2b0 0x698 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_DAT4__SD3_DATA4              0x2b4 0x69c 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_DAT4__UART2_RX_DATA          0x2b4 0x69c 0x928 0x1 0x5
+-#define MX6Q_PAD_SD3_DAT4__UART2_TX_DATA          0x2b4 0x69c 0x000 0x1 0x0
+-#define MX6Q_PAD_SD3_DAT4__GPIO7_IO01             0x2b4 0x69c 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_CMD__SD3_CMD                 0x2b8 0x6a0 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_CMD__UART2_CTS_B             0x2b8 0x6a0 0x000 0x1 0x0
+-#define MX6Q_PAD_SD3_CMD__UART2_RTS_B             0x2b8 0x6a0 0x924 0x1 0x2
+-#define MX6Q_PAD_SD3_CMD__FLEXCAN1_TX             0x2b8 0x6a0 0x000 0x2 0x0
+-#define MX6Q_PAD_SD3_CMD__GPIO7_IO02              0x2b8 0x6a0 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_CLK__SD3_CLK                 0x2bc 0x6a4 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_CLK__UART2_RTS_B             0x2bc 0x6a4 0x924 0x1 0x3
+-#define MX6Q_PAD_SD3_CLK__UART2_CTS_B             0x2bc 0x6a4 0x000 0x1 0x0
+-#define MX6Q_PAD_SD3_CLK__FLEXCAN1_RX             0x2bc 0x6a4 0x7e4 0x2 0x2
+-#define MX6Q_PAD_SD3_CLK__GPIO7_IO03              0x2bc 0x6a4 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_DAT0__SD3_DATA0              0x2c0 0x6a8 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_DAT0__UART1_CTS_B            0x2c0 0x6a8 0x000 0x1 0x0
+-#define MX6Q_PAD_SD3_DAT0__UART1_RTS_B            0x2c0 0x6a8 0x91c 0x1 0x2
+-#define MX6Q_PAD_SD3_DAT0__FLEXCAN2_TX            0x2c0 0x6a8 0x000 0x2 0x0
+-#define MX6Q_PAD_SD3_DAT0__GPIO7_IO04             0x2c0 0x6a8 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_DAT1__SD3_DATA1              0x2c4 0x6ac 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_DAT1__UART1_RTS_B            0x2c4 0x6ac 0x91c 0x1 0x3
+-#define MX6Q_PAD_SD3_DAT1__UART1_CTS_B            0x2c4 0x6ac 0x000 0x1 0x0
+-#define MX6Q_PAD_SD3_DAT1__FLEXCAN2_RX            0x2c4 0x6ac 0x7e8 0x2 0x1
+-#define MX6Q_PAD_SD3_DAT1__GPIO7_IO05             0x2c4 0x6ac 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_DAT2__SD3_DATA2              0x2c8 0x6b0 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_DAT2__GPIO7_IO06             0x2c8 0x6b0 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_DAT3__SD3_DATA3              0x2cc 0x6b4 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_DAT3__UART3_CTS_B            0x2cc 0x6b4 0x000 0x1 0x0
+-#define MX6Q_PAD_SD3_DAT3__UART3_RTS_B            0x2cc 0x6b4 0x92c 0x1 0x4
+-#define MX6Q_PAD_SD3_DAT3__GPIO7_IO07             0x2cc 0x6b4 0x000 0x5 0x0
+-#define MX6Q_PAD_SD3_RST__SD3_RESET               0x2d0 0x6b8 0x000 0x0 0x0
+-#define MX6Q_PAD_SD3_RST__UART3_RTS_B             0x2d0 0x6b8 0x92c 0x1 0x5
+-#define MX6Q_PAD_SD3_RST__UART3_CTS_B             0x2d0 0x6b8 0x000 0x1 0x0
+-#define MX6Q_PAD_SD3_RST__GPIO7_IO08              0x2d0 0x6b8 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_CLE__NAND_CLE              0x2d4 0x6bc 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_CLE__IPU2_SISG4            0x2d4 0x6bc 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_CLE__GPIO6_IO07            0x2d4 0x6bc 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_ALE__NAND_ALE              0x2d8 0x6c0 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_ALE__SD4_RESET             0x2d8 0x6c0 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_ALE__GPIO6_IO08            0x2d8 0x6c0 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_WP_B__NAND_WP_B            0x2dc 0x6c4 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_WP_B__IPU2_SISG5           0x2dc 0x6c4 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_WP_B__GPIO6_IO09           0x2dc 0x6c4 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_RB0__NAND_READY_B          0x2e0 0x6c8 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_RB0__IPU2_DI0_PIN01        0x2e0 0x6c8 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_RB0__GPIO6_IO10            0x2e0 0x6c8 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_CS0__NAND_CE0_B            0x2e4 0x6cc 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_CS0__GPIO6_IO11            0x2e4 0x6cc 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_CS1__NAND_CE1_B            0x2e8 0x6d0 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_CS1__SD4_VSELECT           0x2e8 0x6d0 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_CS1__SD3_VSELECT           0x2e8 0x6d0 0x000 0x2 0x0
+-#define MX6Q_PAD_NANDF_CS1__GPIO6_IO14            0x2e8 0x6d0 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_CS2__NAND_CE2_B            0x2ec 0x6d4 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_CS2__IPU1_SISG0            0x2ec 0x6d4 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_CS2__ESAI_TX0              0x2ec 0x6d4 0x874 0x2 0x1
+-#define MX6Q_PAD_NANDF_CS2__EIM_CRE               0x2ec 0x6d4 0x000 0x3 0x0
+-#define MX6Q_PAD_NANDF_CS2__CCM_CLKO2             0x2ec 0x6d4 0x000 0x4 0x0
+-#define MX6Q_PAD_NANDF_CS2__GPIO6_IO15            0x2ec 0x6d4 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_CS2__IPU2_SISG0            0x2ec 0x6d4 0x000 0x6 0x0
+-#define MX6Q_PAD_NANDF_CS3__NAND_CE3_B            0x2f0 0x6d8 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_CS3__IPU1_SISG1            0x2f0 0x6d8 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_CS3__ESAI_TX1              0x2f0 0x6d8 0x878 0x2 0x1
+-#define MX6Q_PAD_NANDF_CS3__EIM_ADDR26            0x2f0 0x6d8 0x000 0x3 0x0
+-#define MX6Q_PAD_NANDF_CS3__GPIO6_IO16            0x2f0 0x6d8 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_CS3__IPU2_SISG1            0x2f0 0x6d8 0x000 0x6 0x0
+-#define MX6Q_PAD_SD4_CMD__SD4_CMD                 0x2f4 0x6dc 0x000 0x0 0x0
+-#define MX6Q_PAD_SD4_CMD__NAND_RE_B               0x2f4 0x6dc 0x000 0x1 0x0
+-#define MX6Q_PAD_SD4_CMD__UART3_TX_DATA           0x2f4 0x6dc 0x000 0x2 0x0
+-#define MX6Q_PAD_SD4_CMD__UART3_RX_DATA           0x2f4 0x6dc 0x930 0x2 0x2
+-#define MX6Q_PAD_SD4_CMD__GPIO7_IO09              0x2f4 0x6dc 0x000 0x5 0x0
+-#define MX6Q_PAD_SD4_CLK__SD4_CLK                 0x2f8 0x6e0 0x000 0x0 0x0
+-#define MX6Q_PAD_SD4_CLK__NAND_WE_B               0x2f8 0x6e0 0x000 0x1 0x0
+-#define MX6Q_PAD_SD4_CLK__UART3_RX_DATA           0x2f8 0x6e0 0x930 0x2 0x3
+-#define MX6Q_PAD_SD4_CLK__UART3_TX_DATA           0x2f8 0x6e0 0x000 0x2 0x0
+-#define MX6Q_PAD_SD4_CLK__GPIO7_IO10              0x2f8 0x6e0 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_D0__NAND_DATA00            0x2fc 0x6e4 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_D0__SD1_DATA4              0x2fc 0x6e4 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_D0__GPIO2_IO00             0x2fc 0x6e4 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_D1__NAND_DATA01            0x300 0x6e8 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_D1__SD1_DATA5              0x300 0x6e8 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_D1__GPIO2_IO01             0x300 0x6e8 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_D2__NAND_DATA02            0x304 0x6ec 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_D2__SD1_DATA6              0x304 0x6ec 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_D2__GPIO2_IO02             0x304 0x6ec 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_D3__NAND_DATA03            0x308 0x6f0 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_D3__SD1_DATA7              0x308 0x6f0 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_D3__GPIO2_IO03             0x308 0x6f0 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_D4__NAND_DATA04            0x30c 0x6f4 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_D4__SD2_DATA4              0x30c 0x6f4 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_D4__GPIO2_IO04             0x30c 0x6f4 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_D5__NAND_DATA05            0x310 0x6f8 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_D5__SD2_DATA5              0x310 0x6f8 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_D5__GPIO2_IO05             0x310 0x6f8 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_D6__NAND_DATA06            0x314 0x6fc 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_D6__SD2_DATA6              0x314 0x6fc 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_D6__GPIO2_IO06             0x314 0x6fc 0x000 0x5 0x0
+-#define MX6Q_PAD_NANDF_D7__NAND_DATA07            0x318 0x700 0x000 0x0 0x0
+-#define MX6Q_PAD_NANDF_D7__SD2_DATA7              0x318 0x700 0x000 0x1 0x0
+-#define MX6Q_PAD_NANDF_D7__GPIO2_IO07             0x318 0x700 0x000 0x5 0x0
+-#define MX6Q_PAD_SD4_DAT0__SD4_DATA0              0x31c 0x704 0x000 0x1 0x0
+-#define MX6Q_PAD_SD4_DAT0__NAND_DQS               0x31c 0x704 0x000 0x2 0x0
+-#define MX6Q_PAD_SD4_DAT0__GPIO2_IO08             0x31c 0x704 0x000 0x5 0x0
+-#define MX6Q_PAD_SD4_DAT1__SD4_DATA1              0x320 0x708 0x000 0x1 0x0
+-#define MX6Q_PAD_SD4_DAT1__PWM3_OUT               0x320 0x708 0x000 0x2 0x0
+-#define MX6Q_PAD_SD4_DAT1__GPIO2_IO09             0x320 0x708 0x000 0x5 0x0
+-#define MX6Q_PAD_SD4_DAT2__SD4_DATA2              0x324 0x70c 0x000 0x1 0x0
+-#define MX6Q_PAD_SD4_DAT2__PWM4_OUT               0x324 0x70c 0x000 0x2 0x0
+-#define MX6Q_PAD_SD4_DAT2__GPIO2_IO10             0x324 0x70c 0x000 0x5 0x0
+-#define MX6Q_PAD_SD4_DAT3__SD4_DATA3              0x328 0x710 0x000 0x1 0x0
+-#define MX6Q_PAD_SD4_DAT3__GPIO2_IO11             0x328 0x710 0x000 0x5 0x0
+-#define MX6Q_PAD_SD4_DAT4__SD4_DATA4              0x32c 0x714 0x000 0x1 0x0
+-#define MX6Q_PAD_SD4_DAT4__UART2_RX_DATA          0x32c 0x714 0x928 0x2 0x6
+-#define MX6Q_PAD_SD4_DAT4__UART2_TX_DATA          0x32c 0x714 0x000 0x2 0x0
+-#define MX6Q_PAD_SD4_DAT4__GPIO2_IO12             0x32c 0x714 0x000 0x5 0x0
+-#define MX6Q_PAD_SD4_DAT5__SD4_DATA5              0x330 0x718 0x000 0x1 0x0
+-#define MX6Q_PAD_SD4_DAT5__UART2_RTS_B            0x330 0x718 0x924 0x2 0x4
+-#define MX6Q_PAD_SD4_DAT5__UART2_CTS_B            0x330 0x718 0x000 0x2 0x0
+-#define MX6Q_PAD_SD4_DAT5__GPIO2_IO13             0x330 0x718 0x000 0x5 0x0
+-#define MX6Q_PAD_SD4_DAT6__SD4_DATA6              0x334 0x71c 0x000 0x1 0x0
+-#define MX6Q_PAD_SD4_DAT6__UART2_CTS_B            0x334 0x71c 0x000 0x2 0x0
+-#define MX6Q_PAD_SD4_DAT6__UART2_RTS_B            0x334 0x71c 0x924 0x2 0x5
+-#define MX6Q_PAD_SD4_DAT6__GPIO2_IO14             0x334 0x71c 0x000 0x5 0x0
+-#define MX6Q_PAD_SD4_DAT7__SD4_DATA7              0x338 0x720 0x000 0x1 0x0
+-#define MX6Q_PAD_SD4_DAT7__UART2_TX_DATA          0x338 0x720 0x000 0x2 0x0
+-#define MX6Q_PAD_SD4_DAT7__UART2_RX_DATA          0x338 0x720 0x928 0x2 0x7
+-#define MX6Q_PAD_SD4_DAT7__GPIO2_IO15             0x338 0x720 0x000 0x5 0x0
+-#define MX6Q_PAD_SD1_DAT1__SD1_DATA1              0x33c 0x724 0x000 0x0 0x0
+-#define MX6Q_PAD_SD1_DAT1__ECSPI5_SS0             0x33c 0x724 0x834 0x1 0x1
+-#define MX6Q_PAD_SD1_DAT1__PWM3_OUT               0x33c 0x724 0x000 0x2 0x0
+-#define MX6Q_PAD_SD1_DAT1__GPT_CAPTURE2           0x33c 0x724 0x000 0x3 0x0
+-#define MX6Q_PAD_SD1_DAT1__GPIO1_IO17             0x33c 0x724 0x000 0x5 0x0
+-#define MX6Q_PAD_SD1_DAT0__SD1_DATA0              0x340 0x728 0x000 0x0 0x0
+-#define MX6Q_PAD_SD1_DAT0__ECSPI5_MISO            0x340 0x728 0x82c 0x1 0x1
+-#define MX6Q_PAD_SD1_DAT0__GPT_CAPTURE1           0x340 0x728 0x000 0x3 0x0
+-#define MX6Q_PAD_SD1_DAT0__GPIO1_IO16             0x340 0x728 0x000 0x5 0x0
+-#define MX6Q_PAD_SD1_DAT3__SD1_DATA3              0x344 0x72c 0x000 0x0 0x0
+-#define MX6Q_PAD_SD1_DAT3__ECSPI5_SS2             0x344 0x72c 0x000 0x1 0x0
+-#define MX6Q_PAD_SD1_DAT3__GPT_COMPARE3           0x344 0x72c 0x000 0x2 0x0
+-#define MX6Q_PAD_SD1_DAT3__PWM1_OUT               0x344 0x72c 0x000 0x3 0x0
+-#define MX6Q_PAD_SD1_DAT3__WDOG2_B                0x344 0x72c 0x000 0x4 0x0
+-#define MX6Q_PAD_SD1_DAT3__GPIO1_IO21             0x344 0x72c 0x000 0x5 0x0
+-#define MX6Q_PAD_SD1_DAT3__WDOG2_RESET_B_DEB      0x344 0x72c 0x000 0x6 0x0
+-#define MX6Q_PAD_SD1_CMD__SD1_CMD                 0x348 0x730 0x000 0x0 0x0
+-#define MX6Q_PAD_SD1_CMD__ECSPI5_MOSI             0x348 0x730 0x830 0x1 0x0
+-#define MX6Q_PAD_SD1_CMD__PWM4_OUT                0x348 0x730 0x000 0x2 0x0
+-#define MX6Q_PAD_SD1_CMD__GPT_COMPARE1            0x348 0x730 0x000 0x3 0x0
+-#define MX6Q_PAD_SD1_CMD__GPIO1_IO18              0x348 0x730 0x000 0x5 0x0
+-#define MX6Q_PAD_SD1_DAT2__SD1_DATA2              0x34c 0x734 0x000 0x0 0x0
+-#define MX6Q_PAD_SD1_DAT2__ECSPI5_SS1             0x34c 0x734 0x838 0x1 0x1
+-#define MX6Q_PAD_SD1_DAT2__GPT_COMPARE2           0x34c 0x734 0x000 0x2 0x0
+-#define MX6Q_PAD_SD1_DAT2__PWM2_OUT               0x34c 0x734 0x000 0x3 0x0
+-#define MX6Q_PAD_SD1_DAT2__WDOG1_B                0x34c 0x734 0x000 0x4 0x0
+-#define MX6Q_PAD_SD1_DAT2__GPIO1_IO19             0x34c 0x734 0x000 0x5 0x0
+-#define MX6Q_PAD_SD1_DAT2__WDOG1_RESET_B_DEB      0x34c 0x734 0x000 0x6 0x0
+-#define MX6Q_PAD_SD1_CLK__SD1_CLK                 0x350 0x738 0x000 0x0 0x0
+-#define MX6Q_PAD_SD1_CLK__ECSPI5_SCLK             0x350 0x738 0x828 0x1 0x0
+-#define MX6Q_PAD_SD1_CLK__GPT_CLKIN               0x350 0x738 0x000 0x3 0x0
+-#define MX6Q_PAD_SD1_CLK__GPIO1_IO20              0x350 0x738 0x000 0x5 0x0
+-#define MX6Q_PAD_SD2_CLK__SD2_CLK                 0x354 0x73c 0x000 0x0 0x0
+-#define MX6Q_PAD_SD2_CLK__ECSPI5_SCLK             0x354 0x73c 0x828 0x1 0x1
+-#define MX6Q_PAD_SD2_CLK__KEY_COL5                0x354 0x73c 0x8e8 0x2 0x3
+-#define MX6Q_PAD_SD2_CLK__AUD4_RXFS               0x354 0x73c 0x7c0 0x3 0x1
+-#define MX6Q_PAD_SD2_CLK__GPIO1_IO10              0x354 0x73c 0x000 0x5 0x0
+-#define MX6Q_PAD_SD2_CMD__SD2_CMD                 0x358 0x740 0x000 0x0 0x0
+-#define MX6Q_PAD_SD2_CMD__ECSPI5_MOSI             0x358 0x740 0x830 0x1 0x1
+-#define MX6Q_PAD_SD2_CMD__KEY_ROW5                0x358 0x740 0x8f4 0x2 0x2
+-#define MX6Q_PAD_SD2_CMD__AUD4_RXC                0x358 0x740 0x7bc 0x3 0x1
+-#define MX6Q_PAD_SD2_CMD__GPIO1_IO11              0x358 0x740 0x000 0x5 0x0
+-#define MX6Q_PAD_SD2_DAT3__SD2_DATA3              0x35c 0x744 0x000 0x0 0x0
+-#define MX6Q_PAD_SD2_DAT3__ECSPI5_SS3             0x35c 0x744 0x000 0x1 0x0
+-#define MX6Q_PAD_SD2_DAT3__KEY_COL6               0x35c 0x744 0x8ec 0x2 0x2
+-#define MX6Q_PAD_SD2_DAT3__AUD4_TXC               0x35c 0x744 0x7c4 0x3 0x1
+-#define MX6Q_PAD_SD2_DAT3__GPIO1_IO12             0x35c 0x744 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_DAT1__SD2_DATA1              0x04c 0x360 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_DAT1__ECSPI5_SS0             0x04c 0x360 0x834 0x1 0x0
++#define MX6QDL_PAD_SD2_DAT1__EIM_CS2_B              0x04c 0x360 0x000 0x2 0x0
++#define MX6QDL_PAD_SD2_DAT1__AUD4_TXFS              0x04c 0x360 0x7c8 0x3 0x0
++#define MX6QDL_PAD_SD2_DAT1__KEY_COL7               0x04c 0x360 0x8f0 0x4 0x0
++#define MX6QDL_PAD_SD2_DAT1__GPIO1_IO14             0x04c 0x360 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_DAT2__SD2_DATA2              0x050 0x364 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_DAT2__ECSPI5_SS1             0x050 0x364 0x838 0x1 0x0
++#define MX6QDL_PAD_SD2_DAT2__EIM_CS3_B              0x050 0x364 0x000 0x2 0x0
++#define MX6QDL_PAD_SD2_DAT2__AUD4_TXD               0x050 0x364 0x7b8 0x3 0x0
++#define MX6QDL_PAD_SD2_DAT2__KEY_ROW6               0x050 0x364 0x8f8 0x4 0x0
++#define MX6QDL_PAD_SD2_DAT2__GPIO1_IO13             0x050 0x364 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_DAT0__SD2_DATA0              0x054 0x368 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_DAT0__ECSPI5_MISO            0x054 0x368 0x82c 0x1 0x0
++#define MX6QDL_PAD_SD2_DAT0__AUD4_RXD               0x054 0x368 0x7b4 0x3 0x0
++#define MX6QDL_PAD_SD2_DAT0__KEY_ROW7               0x054 0x368 0x8fc 0x4 0x0
++#define MX6QDL_PAD_SD2_DAT0__GPIO1_IO15             0x054 0x368 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_DAT0__DCIC2_OUT              0x054 0x368 0x000 0x6 0x0
++#define MX6QDL_PAD_RGMII_TXC__USB_H2_DATA           0x058 0x36c 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TXC__RGMII_TXC             0x058 0x36c 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TXC__SPDIF_EXT_CLK         0x058 0x36c 0x918 0x2 0x0
++#define MX6QDL_PAD_RGMII_TXC__GPIO6_IO19            0x058 0x36c 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TXC__XTALOSC_REF_CLK_24M   0x058 0x36c 0x000 0x7 0x0
++#define MX6QDL_PAD_RGMII_TD0__HSI_TX_READY          0x05c 0x370 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TD0__RGMII_TD0             0x05c 0x370 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TD0__GPIO6_IO20            0x05c 0x370 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TD1__HSI_RX_FLAG           0x060 0x374 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TD1__RGMII_TD1             0x060 0x374 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TD1__GPIO6_IO21            0x060 0x374 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TD2__HSI_RX_DATA           0x064 0x378 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TD2__RGMII_TD2             0x064 0x378 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TD2__GPIO6_IO22            0x064 0x378 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TD3__HSI_RX_WAKE           0x068 0x37c 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TD3__RGMII_TD3             0x068 0x37c 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TD3__GPIO6_IO23            0x068 0x37c 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_RX_CTL__USB_H3_DATA        0x06c 0x380 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL       0x06c 0x380 0x858 0x1 0x0
++#define MX6QDL_PAD_RGMII_RX_CTL__GPIO6_IO24         0x06c 0x380 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_RD0__HSI_RX_READY          0x070 0x384 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RD0__RGMII_RD0             0x070 0x384 0x848 0x1 0x0
++#define MX6QDL_PAD_RGMII_RD0__GPIO6_IO25            0x070 0x384 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TX_CTL__USB_H2_STROBE      0x074 0x388 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL       0x074 0x388 0x000 0x1 0x0
++#define MX6QDL_PAD_RGMII_TX_CTL__GPIO6_IO26         0x074 0x388 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_TX_CTL__ENET_REF_CLK       0x074 0x388 0x83c 0x7 0x0
++#define MX6QDL_PAD_RGMII_RD1__HSI_TX_FLAG           0x078 0x38c 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RD1__RGMII_RD1             0x078 0x38c 0x84c 0x1 0x0
++#define MX6QDL_PAD_RGMII_RD1__GPIO6_IO27            0x078 0x38c 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_RD2__HSI_TX_DATA           0x07c 0x390 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RD2__RGMII_RD2             0x07c 0x390 0x850 0x1 0x0
++#define MX6QDL_PAD_RGMII_RD2__GPIO6_IO28            0x07c 0x390 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_RD3__HSI_TX_WAKE           0x080 0x394 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RD3__RGMII_RD3             0x080 0x394 0x854 0x1 0x0
++#define MX6QDL_PAD_RGMII_RD3__GPIO6_IO29            0x080 0x394 0x000 0x5 0x0
++#define MX6QDL_PAD_RGMII_RXC__USB_H3_STROBE         0x084 0x398 0x000 0x0 0x0
++#define MX6QDL_PAD_RGMII_RXC__RGMII_RXC             0x084 0x398 0x844 0x1 0x0
++#define MX6QDL_PAD_RGMII_RXC__GPIO6_IO30            0x084 0x398 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A25__EIM_ADDR25              0x088 0x39c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A25__ECSPI4_SS1              0x088 0x39c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A25__ECSPI2_RDY              0x088 0x39c 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_A25__IPU1_DI1_PIN12          0x088 0x39c 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_A25__IPU1_DI0_D1_CS          0x088 0x39c 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_A25__GPIO5_IO02              0x088 0x39c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A25__HDMI_TX_CEC_LINE        0x088 0x39c 0x88c 0x6 0x0
++#define MX6QDL_PAD_EIM_EB2__EIM_EB2_B               0x08c 0x3a0 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_EB2__ECSPI1_SS0              0x08c 0x3a0 0x800 0x1 0x0
++#define MX6QDL_PAD_EIM_EB2__IPU2_CSI1_DATA19        0x08c 0x3a0 0x8d4 0x3 0x0
++#define MX6QDL_PAD_EIM_EB2__HDMI_TX_DDC_SCL         0x08c 0x3a0 0x890 0x4 0x0
++#define MX6QDL_PAD_EIM_EB2__GPIO2_IO30              0x08c 0x3a0 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_EB2__I2C2_SCL                0x08c 0x3a0 0x8a0 0x6 0x0
++#define MX6QDL_PAD_EIM_EB2__SRC_BOOT_CFG30          0x08c 0x3a0 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D16__EIM_DATA16              0x090 0x3a4 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D16__ECSPI1_SCLK             0x090 0x3a4 0x7f4 0x1 0x0
++#define MX6QDL_PAD_EIM_D16__IPU1_DI0_PIN05          0x090 0x3a4 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D16__IPU2_CSI1_DATA18        0x090 0x3a4 0x8d0 0x3 0x0
++#define MX6QDL_PAD_EIM_D16__HDMI_TX_DDC_SDA         0x090 0x3a4 0x894 0x4 0x0
++#define MX6QDL_PAD_EIM_D16__GPIO3_IO16              0x090 0x3a4 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D16__I2C2_SDA                0x090 0x3a4 0x8a4 0x6 0x0
++#define MX6QDL_PAD_EIM_D17__EIM_DATA17              0x094 0x3a8 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D17__ECSPI1_MISO             0x094 0x3a8 0x7f8 0x1 0x0
++#define MX6QDL_PAD_EIM_D17__IPU1_DI0_PIN06          0x094 0x3a8 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D17__IPU2_CSI1_PIXCLK        0x094 0x3a8 0x8e0 0x3 0x0
++#define MX6QDL_PAD_EIM_D17__DCIC1_OUT               0x094 0x3a8 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D17__GPIO3_IO17              0x094 0x3a8 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D17__I2C3_SCL                0x094 0x3a8 0x8a8 0x6 0x0
++#define MX6QDL_PAD_EIM_D18__EIM_DATA18              0x098 0x3ac 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D18__ECSPI1_MOSI             0x098 0x3ac 0x7fc 0x1 0x0
++#define MX6QDL_PAD_EIM_D18__IPU1_DI0_PIN07          0x098 0x3ac 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D18__IPU2_CSI1_DATA17        0x098 0x3ac 0x8cc 0x3 0x0
++#define MX6QDL_PAD_EIM_D18__IPU1_DI1_D0_CS          0x098 0x3ac 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D18__GPIO3_IO18              0x098 0x3ac 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D18__I2C3_SDA                0x098 0x3ac 0x8ac 0x6 0x0
++#define MX6QDL_PAD_EIM_D19__EIM_DATA19              0x09c 0x3b0 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D19__ECSPI1_SS1              0x09c 0x3b0 0x804 0x1 0x0
++#define MX6QDL_PAD_EIM_D19__IPU1_DI0_PIN08          0x09c 0x3b0 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D19__IPU2_CSI1_DATA16        0x09c 0x3b0 0x8c8 0x3 0x0
++#define MX6QDL_PAD_EIM_D19__UART1_CTS_B             0x09c 0x3b0 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D19__UART1_RTS_B             0x09c 0x3b0 0x91c 0x4 0x0
++#define MX6QDL_PAD_EIM_D19__GPIO3_IO19              0x09c 0x3b0 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D19__EPIT1_OUT               0x09c 0x3b0 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D20__EIM_DATA20              0x0a0 0x3b4 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D20__ECSPI4_SS0              0x0a0 0x3b4 0x824 0x1 0x0
++#define MX6QDL_PAD_EIM_D20__IPU1_DI0_PIN16          0x0a0 0x3b4 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D20__IPU2_CSI1_DATA15        0x0a0 0x3b4 0x8c4 0x3 0x0
++#define MX6QDL_PAD_EIM_D20__UART1_RTS_B             0x0a0 0x3b4 0x91c 0x4 0x1
++#define MX6QDL_PAD_EIM_D20__UART1_CTS_B             0x0a0 0x3b4 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D20__GPIO3_IO20              0x0a0 0x3b4 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D20__EPIT2_OUT               0x0a0 0x3b4 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D21__EIM_DATA21              0x0a4 0x3b8 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D21__ECSPI4_SCLK             0x0a4 0x3b8 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D21__IPU1_DI0_PIN17          0x0a4 0x3b8 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D21__IPU2_CSI1_DATA11        0x0a4 0x3b8 0x8b4 0x3 0x0
++#define MX6QDL_PAD_EIM_D21__USB_OTG_OC              0x0a4 0x3b8 0x944 0x4 0x0
++#define MX6QDL_PAD_EIM_D21__GPIO3_IO21              0x0a4 0x3b8 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D21__I2C1_SCL                0x0a4 0x3b8 0x898 0x6 0x0
++#define MX6QDL_PAD_EIM_D21__SPDIF_IN                0x0a4 0x3b8 0x914 0x7 0x0
++#define MX6QDL_PAD_EIM_D22__EIM_DATA22              0x0a8 0x3bc 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D22__ECSPI4_MISO             0x0a8 0x3bc 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D22__IPU1_DI0_PIN01          0x0a8 0x3bc 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D22__IPU2_CSI1_DATA10        0x0a8 0x3bc 0x8b0 0x3 0x0
++#define MX6QDL_PAD_EIM_D22__USB_OTG_PWR             0x0a8 0x3bc 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D22__GPIO3_IO22              0x0a8 0x3bc 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D22__SPDIF_OUT               0x0a8 0x3bc 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D23__EIM_DATA23              0x0ac 0x3c0 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D23__IPU1_DI0_D0_CS          0x0ac 0x3c0 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D23__UART3_CTS_B             0x0ac 0x3c0 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D23__UART3_RTS_B             0x0ac 0x3c0 0x92c 0x2 0x0
++#define MX6QDL_PAD_EIM_D23__UART1_DCD_B             0x0ac 0x3c0 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_D23__IPU2_CSI1_DATA_EN       0x0ac 0x3c0 0x8d8 0x4 0x0
++#define MX6QDL_PAD_EIM_D23__GPIO3_IO23              0x0ac 0x3c0 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D23__IPU1_DI1_PIN02          0x0ac 0x3c0 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D23__IPU1_DI1_PIN14          0x0ac 0x3c0 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_EB3__EIM_EB3_B               0x0b0 0x3c4 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_EB3__ECSPI4_RDY              0x0b0 0x3c4 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_EB3__UART3_RTS_B             0x0b0 0x3c4 0x92c 0x2 0x1
++#define MX6QDL_PAD_EIM_EB3__UART3_CTS_B             0x0b0 0x3c4 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_EB3__UART1_RI_B              0x0b0 0x3c4 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_EB3__IPU2_CSI1_HSYNC         0x0b0 0x3c4 0x8dc 0x4 0x0
++#define MX6QDL_PAD_EIM_EB3__GPIO2_IO31              0x0b0 0x3c4 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_EB3__IPU1_DI1_PIN03          0x0b0 0x3c4 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_EB3__SRC_BOOT_CFG31          0x0b0 0x3c4 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D24__EIM_DATA24              0x0b4 0x3c8 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D24__ECSPI4_SS2              0x0b4 0x3c8 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D24__UART3_TX_DATA           0x0b4 0x3c8 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D24__UART3_RX_DATA           0x0b4 0x3c8 0x930 0x2 0x0
++#define MX6QDL_PAD_EIM_D24__ECSPI1_SS2              0x0b4 0x3c8 0x808 0x3 0x0
++#define MX6QDL_PAD_EIM_D24__ECSPI2_SS2              0x0b4 0x3c8 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D24__GPIO3_IO24              0x0b4 0x3c8 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D24__AUD5_RXFS               0x0b4 0x3c8 0x7d8 0x6 0x0
++#define MX6QDL_PAD_EIM_D24__UART1_DTR_B             0x0b4 0x3c8 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D25__EIM_DATA25              0x0b8 0x3cc 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D25__ECSPI4_SS3              0x0b8 0x3cc 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D25__UART3_RX_DATA           0x0b8 0x3cc 0x930 0x2 0x1
++#define MX6QDL_PAD_EIM_D25__UART3_TX_DATA           0x0b8 0x3cc 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D25__ECSPI1_SS3              0x0b8 0x3cc 0x80c 0x3 0x0
++#define MX6QDL_PAD_EIM_D25__ECSPI2_SS3              0x0b8 0x3cc 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D25__GPIO3_IO25              0x0b8 0x3cc 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D25__AUD5_RXC                0x0b8 0x3cc 0x7d4 0x6 0x0
++#define MX6QDL_PAD_EIM_D25__UART1_DSR_B             0x0b8 0x3cc 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D26__EIM_DATA26              0x0bc 0x3d0 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D26__IPU1_DI1_PIN11          0x0bc 0x3d0 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D26__IPU1_CSI0_DATA01        0x0bc 0x3d0 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D26__IPU2_CSI1_DATA14        0x0bc 0x3d0 0x8c0 0x3 0x0
++#define MX6QDL_PAD_EIM_D26__UART2_TX_DATA           0x0bc 0x3d0 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D26__UART2_RX_DATA           0x0bc 0x3d0 0x928 0x4 0x0
++#define MX6QDL_PAD_EIM_D26__GPIO3_IO26              0x0bc 0x3d0 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D26__IPU1_SISG2              0x0bc 0x3d0 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D26__IPU1_DISP1_DATA22       0x0bc 0x3d0 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D27__EIM_DATA27              0x0c0 0x3d4 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D27__IPU1_DI1_PIN13          0x0c0 0x3d4 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D27__IPU1_CSI0_DATA00        0x0c0 0x3d4 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D27__IPU2_CSI1_DATA13        0x0c0 0x3d4 0x8bc 0x3 0x0
++#define MX6QDL_PAD_EIM_D27__UART2_RX_DATA           0x0c0 0x3d4 0x928 0x4 0x1
++#define MX6QDL_PAD_EIM_D27__UART2_TX_DATA           0x0c0 0x3d4 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D27__GPIO3_IO27              0x0c0 0x3d4 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D27__IPU1_SISG3              0x0c0 0x3d4 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D27__IPU1_DISP1_DATA23       0x0c0 0x3d4 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D28__EIM_DATA28              0x0c4 0x3d8 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D28__I2C1_SDA                0x0c4 0x3d8 0x89c 0x1 0x0
++#define MX6QDL_PAD_EIM_D28__ECSPI4_MOSI             0x0c4 0x3d8 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D28__IPU2_CSI1_DATA12        0x0c4 0x3d8 0x8b8 0x3 0x0
++#define MX6QDL_PAD_EIM_D28__UART2_CTS_B             0x0c4 0x3d8 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D28__UART2_RTS_B             0x0c4 0x3d8 0x924 0x4 0x0
++#define MX6QDL_PAD_EIM_D28__UART2_DTE_CTS_B         0x0c4 0x3d8 0x924 0x4 0x0
++#define MX6QDL_PAD_EIM_D28__UART2_DTE_RTS_B         0x0c4 0x3d8 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D28__GPIO3_IO28              0x0c4 0x3d8 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D28__IPU1_EXT_TRIG           0x0c4 0x3d8 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_D28__IPU1_DI0_PIN13          0x0c4 0x3d8 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D29__EIM_DATA29              0x0c8 0x3dc 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D29__IPU1_DI1_PIN15          0x0c8 0x3dc 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D29__ECSPI4_SS0              0x0c8 0x3dc 0x824 0x2 0x1
++#define MX6QDL_PAD_EIM_D29__UART2_RTS_B             0x0c8 0x3dc 0x924 0x4 0x1
++#define MX6QDL_PAD_EIM_D29__UART2_CTS_B             0x0c8 0x3dc 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D29__UART2_DTE_RTS_B         0x0c8 0x3dc 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D29__UART2_DTE_CTS_B         0x0c8 0x3dc 0x924 0x4 0x1
++#define MX6QDL_PAD_EIM_D29__GPIO3_IO29              0x0c8 0x3dc 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D29__IPU2_CSI1_VSYNC         0x0c8 0x3dc 0x8e4 0x6 0x0
++#define MX6QDL_PAD_EIM_D29__IPU1_DI0_PIN14          0x0c8 0x3dc 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_D30__EIM_DATA30              0x0cc 0x3e0 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D30__IPU1_DISP1_DATA21       0x0cc 0x3e0 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D30__IPU1_DI0_PIN11          0x0cc 0x3e0 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D30__IPU1_CSI0_DATA03        0x0cc 0x3e0 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_D30__UART3_CTS_B             0x0cc 0x3e0 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D30__UART3_RTS_B             0x0cc 0x3e0 0x92c 0x4 0x2
++#define MX6QDL_PAD_EIM_D30__GPIO3_IO30              0x0cc 0x3e0 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D30__USB_H1_OC               0x0cc 0x3e0 0x948 0x6 0x0
++#define MX6QDL_PAD_EIM_D31__EIM_DATA31              0x0d0 0x3e4 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_D31__IPU1_DISP1_DATA20       0x0d0 0x3e4 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_D31__IPU1_DI0_PIN12          0x0d0 0x3e4 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_D31__IPU1_CSI0_DATA02        0x0d0 0x3e4 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_D31__UART3_RTS_B             0x0d0 0x3e4 0x92c 0x4 0x3
++#define MX6QDL_PAD_EIM_D31__UART3_CTS_B             0x0d0 0x3e4 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_D31__GPIO3_IO31              0x0d0 0x3e4 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_D31__USB_H1_PWR              0x0d0 0x3e4 0x000 0x6 0x0
++#define MX6QDL_PAD_EIM_A24__EIM_ADDR24              0x0d4 0x3e8 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A24__IPU1_DISP1_DATA19       0x0d4 0x3e8 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A24__IPU2_CSI1_DATA19        0x0d4 0x3e8 0x8d4 0x2 0x1
++#define MX6QDL_PAD_EIM_A24__IPU2_SISG2              0x0d4 0x3e8 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_A24__IPU1_SISG2              0x0d4 0x3e8 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_A24__GPIO5_IO04              0x0d4 0x3e8 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A24__SRC_BOOT_CFG24          0x0d4 0x3e8 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A23__EIM_ADDR23              0x0d8 0x3ec 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A23__IPU1_DISP1_DATA18       0x0d8 0x3ec 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A23__IPU2_CSI1_DATA18        0x0d8 0x3ec 0x8d0 0x2 0x1
++#define MX6QDL_PAD_EIM_A23__IPU2_SISG3              0x0d8 0x3ec 0x000 0x3 0x0
++#define MX6QDL_PAD_EIM_A23__IPU1_SISG3              0x0d8 0x3ec 0x000 0x4 0x0
++#define MX6QDL_PAD_EIM_A23__GPIO6_IO06              0x0d8 0x3ec 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A23__SRC_BOOT_CFG23          0x0d8 0x3ec 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A22__EIM_ADDR22              0x0dc 0x3f0 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A22__IPU1_DISP1_DATA17       0x0dc 0x3f0 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A22__IPU2_CSI1_DATA17        0x0dc 0x3f0 0x8cc 0x2 0x1
++#define MX6QDL_PAD_EIM_A22__GPIO2_IO16              0x0dc 0x3f0 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A22__SRC_BOOT_CFG22          0x0dc 0x3f0 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A21__EIM_ADDR21              0x0e0 0x3f4 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A21__IPU1_DISP1_DATA16       0x0e0 0x3f4 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A21__IPU2_CSI1_DATA16        0x0e0 0x3f4 0x8c8 0x2 0x1
++#define MX6QDL_PAD_EIM_A21__GPIO2_IO17              0x0e0 0x3f4 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A21__SRC_BOOT_CFG21          0x0e0 0x3f4 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A20__EIM_ADDR20              0x0e4 0x3f8 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A20__IPU1_DISP1_DATA15       0x0e4 0x3f8 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A20__IPU2_CSI1_DATA15        0x0e4 0x3f8 0x8c4 0x2 0x1
++#define MX6QDL_PAD_EIM_A20__GPIO2_IO18              0x0e4 0x3f8 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A20__SRC_BOOT_CFG20          0x0e4 0x3f8 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A19__EIM_ADDR19              0x0e8 0x3fc 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A19__IPU1_DISP1_DATA14       0x0e8 0x3fc 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A19__IPU2_CSI1_DATA14        0x0e8 0x3fc 0x8c0 0x2 0x1
++#define MX6QDL_PAD_EIM_A19__GPIO2_IO19              0x0e8 0x3fc 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A19__SRC_BOOT_CFG19          0x0e8 0x3fc 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A18__EIM_ADDR18              0x0ec 0x400 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A18__IPU1_DISP1_DATA13       0x0ec 0x400 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A18__IPU2_CSI1_DATA13        0x0ec 0x400 0x8bc 0x2 0x1
++#define MX6QDL_PAD_EIM_A18__GPIO2_IO20              0x0ec 0x400 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A18__SRC_BOOT_CFG18          0x0ec 0x400 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A17__EIM_ADDR17              0x0f0 0x404 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A17__IPU1_DISP1_DATA12       0x0f0 0x404 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A17__IPU2_CSI1_DATA12        0x0f0 0x404 0x8b8 0x2 0x1
++#define MX6QDL_PAD_EIM_A17__GPIO2_IO21              0x0f0 0x404 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A17__SRC_BOOT_CFG17          0x0f0 0x404 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_A16__EIM_ADDR16              0x0f4 0x408 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_A16__IPU1_DI1_DISP_CLK       0x0f4 0x408 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_A16__IPU2_CSI1_PIXCLK        0x0f4 0x408 0x8e0 0x2 0x1
++#define MX6QDL_PAD_EIM_A16__GPIO2_IO22              0x0f4 0x408 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_A16__SRC_BOOT_CFG16          0x0f4 0x408 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_CS0__EIM_CS0_B               0x0f8 0x40c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_CS0__IPU1_DI1_PIN05          0x0f8 0x40c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK             0x0f8 0x40c 0x810 0x2 0x0
++#define MX6QDL_PAD_EIM_CS0__GPIO2_IO23              0x0f8 0x40c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_CS1__EIM_CS1_B               0x0fc 0x410 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_CS1__IPU1_DI1_PIN06          0x0fc 0x410 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI             0x0fc 0x410 0x818 0x2 0x0
++#define MX6QDL_PAD_EIM_CS1__GPIO2_IO24              0x0fc 0x410 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_OE__EIM_OE_B                 0x100 0x414 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_OE__IPU1_DI1_PIN07           0x100 0x414 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_OE__ECSPI2_MISO              0x100 0x414 0x814 0x2 0x0
++#define MX6QDL_PAD_EIM_OE__GPIO2_IO25               0x100 0x414 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_RW__EIM_RW                   0x104 0x418 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_RW__IPU1_DI1_PIN08           0x104 0x418 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_RW__ECSPI2_SS0               0x104 0x418 0x81c 0x2 0x0
++#define MX6QDL_PAD_EIM_RW__GPIO2_IO26               0x104 0x418 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_RW__SRC_BOOT_CFG29           0x104 0x418 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_LBA__EIM_LBA_B               0x108 0x41c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_LBA__IPU1_DI1_PIN17          0x108 0x41c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_LBA__ECSPI2_SS1              0x108 0x41c 0x820 0x2 0x0
++#define MX6QDL_PAD_EIM_LBA__GPIO2_IO27              0x108 0x41c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_LBA__SRC_BOOT_CFG26          0x108 0x41c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_EB0__EIM_EB0_B               0x10c 0x420 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_EB0__IPU1_DISP1_DATA11       0x10c 0x420 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_EB0__IPU2_CSI1_DATA11        0x10c 0x420 0x8b4 0x2 0x1
++#define MX6QDL_PAD_EIM_EB0__CCM_PMIC_READY          0x10c 0x420 0x7f0 0x4 0x0
++#define MX6QDL_PAD_EIM_EB0__GPIO2_IO28              0x10c 0x420 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_EB0__SRC_BOOT_CFG27          0x10c 0x420 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_EB1__EIM_EB1_B               0x110 0x424 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_EB1__IPU1_DISP1_DATA10       0x110 0x424 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_EB1__IPU2_CSI1_DATA10        0x110 0x424 0x8b0 0x2 0x1
++#define MX6QDL_PAD_EIM_EB1__GPIO2_IO29              0x110 0x424 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_EB1__SRC_BOOT_CFG28          0x110 0x424 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA0__EIM_AD00                0x114 0x428 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA0__IPU1_DISP1_DATA09       0x114 0x428 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA0__IPU2_CSI1_DATA09        0x114 0x428 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA0__GPIO3_IO00              0x114 0x428 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA0__SRC_BOOT_CFG00          0x114 0x428 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA1__EIM_AD01                0x118 0x42c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA1__IPU1_DISP1_DATA08       0x118 0x42c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA1__IPU2_CSI1_DATA08        0x118 0x42c 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA1__GPIO3_IO01              0x118 0x42c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA1__SRC_BOOT_CFG01          0x118 0x42c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA2__EIM_AD02                0x11c 0x430 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA2__IPU1_DISP1_DATA07       0x11c 0x430 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA2__IPU2_CSI1_DATA07        0x11c 0x430 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA2__GPIO3_IO02              0x11c 0x430 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA2__SRC_BOOT_CFG02          0x11c 0x430 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA3__EIM_AD03                0x120 0x434 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA3__IPU1_DISP1_DATA06       0x120 0x434 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA3__IPU2_CSI1_DATA06        0x120 0x434 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA3__GPIO3_IO03              0x120 0x434 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA3__SRC_BOOT_CFG03          0x120 0x434 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA4__EIM_AD04                0x124 0x438 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA4__IPU1_DISP1_DATA05       0x124 0x438 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA4__IPU2_CSI1_DATA05        0x124 0x438 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA4__GPIO3_IO04              0x124 0x438 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA4__SRC_BOOT_CFG04          0x124 0x438 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA5__EIM_AD05                0x128 0x43c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA5__IPU1_DISP1_DATA04       0x128 0x43c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA5__IPU2_CSI1_DATA04        0x128 0x43c 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA5__GPIO3_IO05              0x128 0x43c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA5__SRC_BOOT_CFG05          0x128 0x43c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA6__EIM_AD06                0x12c 0x440 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA6__IPU1_DISP1_DATA03       0x12c 0x440 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA6__IPU2_CSI1_DATA03        0x12c 0x440 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA6__GPIO3_IO06              0x12c 0x440 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA6__SRC_BOOT_CFG06          0x12c 0x440 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA7__EIM_AD07                0x130 0x444 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA7__IPU1_DISP1_DATA02       0x130 0x444 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA7__IPU2_CSI1_DATA02        0x130 0x444 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA7__GPIO3_IO07              0x130 0x444 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA7__SRC_BOOT_CFG07          0x130 0x444 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA8__EIM_AD08                0x134 0x448 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA8__IPU1_DISP1_DATA01       0x134 0x448 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA8__IPU2_CSI1_DATA01        0x134 0x448 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA8__GPIO3_IO08              0x134 0x448 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA8__SRC_BOOT_CFG08          0x134 0x448 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA9__EIM_AD09                0x138 0x44c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA9__IPU1_DISP1_DATA00       0x138 0x44c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA9__IPU2_CSI1_DATA00        0x138 0x44c 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA9__GPIO3_IO09              0x138 0x44c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA9__SRC_BOOT_CFG09          0x138 0x44c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA10__EIM_AD10               0x13c 0x450 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA10__IPU1_DI1_PIN15         0x13c 0x450 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA10__IPU2_CSI1_DATA_EN      0x13c 0x450 0x8d8 0x2 0x1
++#define MX6QDL_PAD_EIM_DA10__GPIO3_IO10             0x13c 0x450 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA10__SRC_BOOT_CFG10         0x13c 0x450 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA11__EIM_AD11               0x140 0x454 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA11__IPU1_DI1_PIN02         0x140 0x454 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA11__IPU2_CSI1_HSYNC        0x140 0x454 0x8dc 0x2 0x1
++#define MX6QDL_PAD_EIM_DA11__GPIO3_IO11             0x140 0x454 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA11__SRC_BOOT_CFG11         0x140 0x454 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA12__EIM_AD12               0x144 0x458 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA12__IPU1_DI1_PIN03         0x144 0x458 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA12__IPU2_CSI1_VSYNC        0x144 0x458 0x8e4 0x2 0x1
++#define MX6QDL_PAD_EIM_DA12__GPIO3_IO12             0x144 0x458 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA12__SRC_BOOT_CFG12         0x144 0x458 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA13__EIM_AD13               0x148 0x45c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA13__IPU1_DI1_D0_CS         0x148 0x45c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA13__GPIO3_IO13             0x148 0x45c 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA13__SRC_BOOT_CFG13         0x148 0x45c 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA14__EIM_AD14               0x14c 0x460 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA14__IPU1_DI1_D1_CS         0x14c 0x460 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA14__GPIO3_IO14             0x14c 0x460 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA14__SRC_BOOT_CFG14         0x14c 0x460 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_DA15__EIM_AD15               0x150 0x464 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_DA15__IPU1_DI1_PIN01         0x150 0x464 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_DA15__IPU1_DI1_PIN04         0x150 0x464 0x000 0x2 0x0
++#define MX6QDL_PAD_EIM_DA15__GPIO3_IO15             0x150 0x464 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_DA15__SRC_BOOT_CFG15         0x150 0x464 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_WAIT__EIM_WAIT_B             0x154 0x468 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_WAIT__EIM_DTACK_B            0x154 0x468 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_WAIT__GPIO5_IO00             0x154 0x468 0x000 0x5 0x0
++#define MX6QDL_PAD_EIM_WAIT__SRC_BOOT_CFG25         0x154 0x468 0x000 0x7 0x0
++#define MX6QDL_PAD_EIM_BCLK__EIM_BCLK               0x158 0x46c 0x000 0x0 0x0
++#define MX6QDL_PAD_EIM_BCLK__IPU1_DI1_PIN16         0x158 0x46c 0x000 0x1 0x0
++#define MX6QDL_PAD_EIM_BCLK__GPIO6_IO31             0x158 0x46c 0x000 0x5 0x0
++#define MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK  0x15c 0x470 0x000 0x0 0x0
++#define MX6QDL_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK  0x15c 0x470 0x000 0x1 0x0
++#define MX6QDL_PAD_DI0_DISP_CLK__GPIO4_IO16         0x15c 0x470 0x000 0x5 0x0
++#define MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15        0x160 0x474 0x000 0x0 0x0
++#define MX6QDL_PAD_DI0_PIN15__IPU2_DI0_PIN15        0x160 0x474 0x000 0x1 0x0
++#define MX6QDL_PAD_DI0_PIN15__AUD6_TXC              0x160 0x474 0x000 0x2 0x0
++#define MX6QDL_PAD_DI0_PIN15__GPIO4_IO17            0x160 0x474 0x000 0x5 0x0
++#define MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02         0x164 0x478 0x000 0x0 0x0
++#define MX6QDL_PAD_DI0_PIN2__IPU2_DI0_PIN02         0x164 0x478 0x000 0x1 0x0
++#define MX6QDL_PAD_DI0_PIN2__AUD6_TXD               0x164 0x478 0x000 0x2 0x0
++#define MX6QDL_PAD_DI0_PIN2__GPIO4_IO18             0x164 0x478 0x000 0x5 0x0
++#define MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03         0x168 0x47c 0x000 0x0 0x0
++#define MX6QDL_PAD_DI0_PIN3__IPU2_DI0_PIN03         0x168 0x47c 0x000 0x1 0x0
++#define MX6QDL_PAD_DI0_PIN3__AUD6_TXFS              0x168 0x47c 0x000 0x2 0x0
++#define MX6QDL_PAD_DI0_PIN3__GPIO4_IO19             0x168 0x47c 0x000 0x5 0x0
++#define MX6QDL_PAD_DI0_PIN4__IPU1_DI0_PIN04         0x16c 0x480 0x000 0x0 0x0
++#define MX6QDL_PAD_DI0_PIN4__IPU2_DI0_PIN04         0x16c 0x480 0x000 0x1 0x0
++#define MX6QDL_PAD_DI0_PIN4__AUD6_RXD               0x16c 0x480 0x000 0x2 0x0
++#define MX6QDL_PAD_DI0_PIN4__SD1_WP                 0x16c 0x480 0x94c 0x3 0x0
++#define MX6QDL_PAD_DI0_PIN4__GPIO4_IO20             0x16c 0x480 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00    0x170 0x484 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT0__IPU2_DISP0_DATA00    0x170 0x484 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT0__ECSPI3_SCLK          0x170 0x484 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT0__GPIO4_IO21           0x170 0x484 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01    0x174 0x488 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT1__IPU2_DISP0_DATA01    0x174 0x488 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT1__ECSPI3_MOSI          0x174 0x488 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT1__GPIO4_IO22           0x174 0x488 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02    0x178 0x48c 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT2__IPU2_DISP0_DATA02    0x178 0x48c 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT2__ECSPI3_MISO          0x178 0x48c 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT2__GPIO4_IO23           0x178 0x48c 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03    0x17c 0x490 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT3__IPU2_DISP0_DATA03    0x17c 0x490 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT3__ECSPI3_SS0           0x17c 0x490 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT3__GPIO4_IO24           0x17c 0x490 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04    0x180 0x494 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT4__IPU2_DISP0_DATA04    0x180 0x494 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT4__ECSPI3_SS1           0x180 0x494 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT4__GPIO4_IO25           0x180 0x494 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05    0x184 0x498 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT5__IPU2_DISP0_DATA05    0x184 0x498 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT5__ECSPI3_SS2           0x184 0x498 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT5__AUD6_RXFS            0x184 0x498 0x000 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT5__GPIO4_IO26           0x184 0x498 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06    0x188 0x49c 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT6__IPU2_DISP0_DATA06    0x188 0x49c 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT6__ECSPI3_SS3           0x188 0x49c 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT6__AUD6_RXC             0x188 0x49c 0x000 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT6__GPIO4_IO27           0x188 0x49c 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07    0x18c 0x4a0 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT7__IPU2_DISP0_DATA07    0x18c 0x4a0 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT7__ECSPI3_RDY           0x18c 0x4a0 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT7__GPIO4_IO28           0x18c 0x4a0 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08    0x190 0x4a4 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT8__IPU2_DISP0_DATA08    0x190 0x4a4 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT8__PWM1_OUT             0x190 0x4a4 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT8__WDOG1_B              0x190 0x4a4 0x000 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT8__GPIO4_IO29           0x190 0x4a4 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09    0x194 0x4a8 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT9__IPU2_DISP0_DATA09    0x194 0x4a8 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT9__PWM2_OUT             0x194 0x4a8 0x000 0x2 0x0
++#define MX6QDL_PAD_DISP0_DAT9__WDOG2_B              0x194 0x4a8 0x000 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30           0x194 0x4a8 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10   0x198 0x4ac 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT10__IPU2_DISP0_DATA10   0x198 0x4ac 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT10__GPIO4_IO31          0x198 0x4ac 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11   0x19c 0x4b0 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT11__IPU2_DISP0_DATA11   0x19c 0x4b0 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT11__GPIO5_IO05          0x19c 0x4b0 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12   0x1a0 0x4b4 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT12__IPU2_DISP0_DATA12   0x1a0 0x4b4 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT12__GPIO5_IO06          0x1a0 0x4b4 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13   0x1a4 0x4b8 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT13__IPU2_DISP0_DATA13   0x1a4 0x4b8 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT13__AUD5_RXFS           0x1a4 0x4b8 0x7d8 0x3 0x1
++#define MX6QDL_PAD_DISP0_DAT13__GPIO5_IO07          0x1a4 0x4b8 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14   0x1a8 0x4bc 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT14__IPU2_DISP0_DATA14   0x1a8 0x4bc 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT14__AUD5_RXC            0x1a8 0x4bc 0x7d4 0x3 0x1
++#define MX6QDL_PAD_DISP0_DAT14__GPIO5_IO08          0x1a8 0x4bc 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15   0x1ac 0x4c0 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT15__IPU2_DISP0_DATA15   0x1ac 0x4c0 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT15__ECSPI1_SS1          0x1ac 0x4c0 0x804 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT15__ECSPI2_SS1          0x1ac 0x4c0 0x820 0x3 0x1
++#define MX6QDL_PAD_DISP0_DAT15__GPIO5_IO09          0x1ac 0x4c0 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16   0x1b0 0x4c4 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT16__IPU2_DISP0_DATA16   0x1b0 0x4c4 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT16__ECSPI2_MOSI         0x1b0 0x4c4 0x818 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT16__AUD5_TXC            0x1b0 0x4c4 0x7dc 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT16__SDMA_EXT_EVENT0     0x1b0 0x4c4 0x90c 0x4 0x0
++#define MX6QDL_PAD_DISP0_DAT16__GPIO5_IO10          0x1b0 0x4c4 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17   0x1b4 0x4c8 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT17__IPU2_DISP0_DATA17   0x1b4 0x4c8 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT17__ECSPI2_MISO         0x1b4 0x4c8 0x814 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT17__AUD5_TXD            0x1b4 0x4c8 0x7d0 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT17__SDMA_EXT_EVENT1     0x1b4 0x4c8 0x910 0x4 0x0
++#define MX6QDL_PAD_DISP0_DAT17__GPIO5_IO11          0x1b4 0x4c8 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18   0x1b8 0x4cc 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT18__IPU2_DISP0_DATA18   0x1b8 0x4cc 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT18__ECSPI2_SS0          0x1b8 0x4cc 0x81c 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS           0x1b8 0x4cc 0x7e0 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT18__AUD4_RXFS           0x1b8 0x4cc 0x7c0 0x4 0x0
++#define MX6QDL_PAD_DISP0_DAT18__GPIO5_IO12          0x1b8 0x4cc 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT18__EIM_CS2_B           0x1b8 0x4cc 0x000 0x7 0x0
++#define MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19   0x1bc 0x4d0 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT19__IPU2_DISP0_DATA19   0x1bc 0x4d0 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT19__ECSPI2_SCLK         0x1bc 0x4d0 0x810 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT19__AUD5_RXD            0x1bc 0x4d0 0x7cc 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT19__AUD4_RXC            0x1bc 0x4d0 0x7bc 0x4 0x0
++#define MX6QDL_PAD_DISP0_DAT19__GPIO5_IO13          0x1bc 0x4d0 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT19__EIM_CS3_B           0x1bc 0x4d0 0x000 0x7 0x0
++#define MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20   0x1c0 0x4d4 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT20__IPU2_DISP0_DATA20   0x1c0 0x4d4 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT20__ECSPI1_SCLK         0x1c0 0x4d4 0x7f4 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT20__AUD4_TXC            0x1c0 0x4d4 0x7c4 0x3 0x0
++#define MX6QDL_PAD_DISP0_DAT20__GPIO5_IO14          0x1c0 0x4d4 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21   0x1c4 0x4d8 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT21__IPU2_DISP0_DATA21   0x1c4 0x4d8 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT21__ECSPI1_MOSI         0x1c4 0x4d8 0x7fc 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT21__AUD4_TXD            0x1c4 0x4d8 0x7b8 0x3 0x1
++#define MX6QDL_PAD_DISP0_DAT21__GPIO5_IO15          0x1c4 0x4d8 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22   0x1c8 0x4dc 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT22__IPU2_DISP0_DATA22   0x1c8 0x4dc 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT22__ECSPI1_MISO         0x1c8 0x4dc 0x7f8 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS           0x1c8 0x4dc 0x7c8 0x3 0x1
++#define MX6QDL_PAD_DISP0_DAT22__GPIO5_IO16          0x1c8 0x4dc 0x000 0x5 0x0
++#define MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23   0x1cc 0x4e0 0x000 0x0 0x0
++#define MX6QDL_PAD_DISP0_DAT23__IPU2_DISP0_DATA23   0x1cc 0x4e0 0x000 0x1 0x0
++#define MX6QDL_PAD_DISP0_DAT23__ECSPI1_SS0          0x1cc 0x4e0 0x800 0x2 0x1
++#define MX6QDL_PAD_DISP0_DAT23__AUD4_RXD            0x1cc 0x4e0 0x7b4 0x3 0x1
++#define MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17          0x1cc 0x4e0 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_MDIO__ENET_MDIO             0x1d0 0x4e4 0x840 0x1 0x0
++#define MX6QDL_PAD_ENET_MDIO__ESAI_RX_CLK           0x1d0 0x4e4 0x86c 0x2 0x0
++#define MX6QDL_PAD_ENET_MDIO__ENET_1588_EVENT1_OUT  0x1d0 0x4e4 0x000 0x4 0x0
++#define MX6QDL_PAD_ENET_MDIO__GPIO1_IO22            0x1d0 0x4e4 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_MDIO__SPDIF_LOCK            0x1d0 0x4e4 0x000 0x6 0x0
++#define MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK        0x1d4 0x4e8 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_REF_CLK__ESAI_RX_FS         0x1d4 0x4e8 0x85c 0x2 0x0
++#define MX6QDL_PAD_ENET_REF_CLK__GPIO1_IO23         0x1d4 0x4e8 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_REF_CLK__SPDIF_SR_CLK       0x1d4 0x4e8 0x000 0x6 0x0
++#define MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID           0x1d8 0x4ec 0x000 0x0 0x0
++#define MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER           0x1d8 0x4ec 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_RX_ER__ESAI_RX_HF_CLK       0x1d8 0x4ec 0x864 0x2 0x0
++#define MX6QDL_PAD_ENET_RX_ER__SPDIF_IN             0x1d8 0x4ec 0x914 0x3 0x1
++#define MX6QDL_PAD_ENET_RX_ER__ENET_1588_EVENT2_OUT 0x1d8 0x4ec 0x000 0x4 0x0
++#define MX6QDL_PAD_ENET_RX_ER__GPIO1_IO24           0x1d8 0x4ec 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN          0x1dc 0x4f0 0x858 0x1 0x1
++#define MX6QDL_PAD_ENET_CRS_DV__ESAI_TX_CLK         0x1dc 0x4f0 0x870 0x2 0x0
++#define MX6QDL_PAD_ENET_CRS_DV__SPDIF_EXT_CLK       0x1dc 0x4f0 0x918 0x3 0x1
++#define MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25          0x1dc 0x4f0 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_RXD1__MLB_SIG               0x1e0 0x4f4 0x908 0x0 0x0
++#define MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1         0x1e0 0x4f4 0x84c 0x1 0x1
++#define MX6QDL_PAD_ENET_RXD1__ESAI_TX_FS            0x1e0 0x4f4 0x860 0x2 0x0
++#define MX6QDL_PAD_ENET_RXD1__ENET_1588_EVENT3_OUT  0x1e0 0x4f4 0x000 0x4 0x0
++#define MX6QDL_PAD_ENET_RXD1__GPIO1_IO26            0x1e0 0x4f4 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0         0x1e4 0x4f8 0x848 0x1 0x1
++#define MX6QDL_PAD_ENET_RXD0__ESAI_TX_HF_CLK        0x1e4 0x4f8 0x868 0x2 0x0
++#define MX6QDL_PAD_ENET_RXD0__SPDIF_OUT             0x1e4 0x4f8 0x000 0x3 0x0
++#define MX6QDL_PAD_ENET_RXD0__GPIO1_IO27            0x1e4 0x4f8 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN           0x1e8 0x4fc 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_TX_EN__ESAI_TX3_RX2         0x1e8 0x4fc 0x880 0x2 0x0
++#define MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28           0x1e8 0x4fc 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_TXD1__MLB_CLK               0x1ec 0x500 0x900 0x0 0x0
++#define MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1         0x1ec 0x500 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_TXD1__ESAI_TX2_RX3          0x1ec 0x500 0x87c 0x2 0x0
++#define MX6QDL_PAD_ENET_TXD1__ENET_1588_EVENT0_IN   0x1ec 0x500 0x000 0x4 0x0
++#define MX6QDL_PAD_ENET_TXD1__GPIO1_IO29            0x1ec 0x500 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0         0x1f0 0x504 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_TXD0__ESAI_TX4_RX1          0x1f0 0x504 0x884 0x2 0x0
++#define MX6QDL_PAD_ENET_TXD0__GPIO1_IO30            0x1f0 0x504 0x000 0x5 0x0
++#define MX6QDL_PAD_ENET_MDC__MLB_DATA               0x1f4 0x508 0x904 0x0 0x0
++#define MX6QDL_PAD_ENET_MDC__ENET_MDC               0x1f4 0x508 0x000 0x1 0x0
++#define MX6QDL_PAD_ENET_MDC__ESAI_TX5_RX0           0x1f4 0x508 0x888 0x2 0x0
++#define MX6QDL_PAD_ENET_MDC__ENET_1588_EVENT1_IN    0x1f4 0x508 0x000 0x4 0x0
++#define MX6QDL_PAD_ENET_MDC__GPIO1_IO31             0x1f4 0x508 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_COL0__ECSPI1_SCLK            0x1f8 0x5c8 0x7f4 0x0 0x2
++#define MX6QDL_PAD_KEY_COL0__ENET_RX_DATA3          0x1f8 0x5c8 0x854 0x1 0x1
++#define MX6QDL_PAD_KEY_COL0__AUD5_TXC               0x1f8 0x5c8 0x7dc 0x2 0x1
++#define MX6QDL_PAD_KEY_COL0__KEY_COL0               0x1f8 0x5c8 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_COL0__UART4_TX_DATA          0x1f8 0x5c8 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_COL0__UART4_RX_DATA          0x1f8 0x5c8 0x938 0x4 0x0
++#define MX6QDL_PAD_KEY_COL0__GPIO4_IO06             0x1f8 0x5c8 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_COL0__DCIC1_OUT              0x1f8 0x5c8 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_ROW0__ECSPI1_MOSI            0x1fc 0x5cc 0x7fc 0x0 0x2
++#define MX6QDL_PAD_KEY_ROW0__ENET_TX_DATA3          0x1fc 0x5cc 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_ROW0__AUD5_TXD               0x1fc 0x5cc 0x7d0 0x2 0x1
++#define MX6QDL_PAD_KEY_ROW0__KEY_ROW0               0x1fc 0x5cc 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA          0x1fc 0x5cc 0x938 0x4 0x1
++#define MX6QDL_PAD_KEY_ROW0__UART4_TX_DATA          0x1fc 0x5cc 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_ROW0__GPIO4_IO07             0x1fc 0x5cc 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_ROW0__DCIC2_OUT              0x1fc 0x5cc 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_COL1__ECSPI1_MISO            0x200 0x5d0 0x7f8 0x0 0x2
++#define MX6QDL_PAD_KEY_COL1__ENET_MDIO              0x200 0x5d0 0x840 0x1 0x1
++#define MX6QDL_PAD_KEY_COL1__AUD5_TXFS              0x200 0x5d0 0x7e0 0x2 0x1
++#define MX6QDL_PAD_KEY_COL1__KEY_COL1               0x200 0x5d0 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_COL1__UART5_TX_DATA          0x200 0x5d0 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_COL1__UART5_RX_DATA          0x200 0x5d0 0x940 0x4 0x0
++#define MX6QDL_PAD_KEY_COL1__GPIO4_IO08             0x200 0x5d0 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_COL1__SD1_VSELECT            0x200 0x5d0 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_ROW1__ECSPI1_SS0             0x204 0x5d4 0x800 0x0 0x2
++#define MX6QDL_PAD_KEY_ROW1__ENET_COL               0x204 0x5d4 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_ROW1__AUD5_RXD               0x204 0x5d4 0x7cc 0x2 0x1
++#define MX6QDL_PAD_KEY_ROW1__KEY_ROW1               0x204 0x5d4 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_ROW1__UART5_RX_DATA          0x204 0x5d4 0x940 0x4 0x1
++#define MX6QDL_PAD_KEY_ROW1__UART5_TX_DATA          0x204 0x5d4 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_ROW1__GPIO4_IO09             0x204 0x5d4 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_ROW1__SD2_VSELECT            0x204 0x5d4 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_COL2__ECSPI1_SS1             0x208 0x5d8 0x804 0x0 0x2
++#define MX6QDL_PAD_KEY_COL2__ENET_RX_DATA2          0x208 0x5d8 0x850 0x1 0x1
++#define MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX            0x208 0x5d8 0x000 0x2 0x0
++#define MX6QDL_PAD_KEY_COL2__KEY_COL2               0x208 0x5d8 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_COL2__ENET_MDC               0x208 0x5d8 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_COL2__GPIO4_IO10             0x208 0x5d8 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_COL2__USB_H1_PWR_CTL_WAKE    0x208 0x5d8 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_ROW2__ECSPI1_SS2             0x20c 0x5dc 0x808 0x0 0x1
++#define MX6QDL_PAD_KEY_ROW2__ENET_TX_DATA2          0x20c 0x5dc 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX            0x20c 0x5dc 0x7e4 0x2 0x0
++#define MX6QDL_PAD_KEY_ROW2__KEY_ROW2               0x20c 0x5dc 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_ROW2__SD2_VSELECT            0x20c 0x5dc 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_ROW2__GPIO4_IO11             0x20c 0x5dc 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE       0x20c 0x5dc 0x88c 0x6 0x1
++#define MX6QDL_PAD_KEY_COL3__ECSPI1_SS3             0x210 0x5e0 0x80c 0x0 0x1
++#define MX6QDL_PAD_KEY_COL3__ENET_CRS               0x210 0x5e0 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_COL3__HDMI_TX_DDC_SCL        0x210 0x5e0 0x890 0x2 0x1
++#define MX6QDL_PAD_KEY_COL3__KEY_COL3               0x210 0x5e0 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_COL3__I2C2_SCL               0x210 0x5e0 0x8a0 0x4 0x1
++#define MX6QDL_PAD_KEY_COL3__GPIO4_IO12             0x210 0x5e0 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_COL3__SPDIF_IN               0x210 0x5e0 0x914 0x6 0x2
++#define MX6QDL_PAD_KEY_ROW3__ASRC_EXT_CLK           0x214 0x5e4 0x7b0 0x1 0x0
++#define MX6QDL_PAD_KEY_ROW3__HDMI_TX_DDC_SDA        0x214 0x5e4 0x894 0x2 0x1
++#define MX6QDL_PAD_KEY_ROW3__KEY_ROW3               0x214 0x5e4 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_ROW3__I2C2_SDA               0x214 0x5e4 0x8a4 0x4 0x1
++#define MX6QDL_PAD_KEY_ROW3__GPIO4_IO13             0x214 0x5e4 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_ROW3__SD1_VSELECT            0x214 0x5e4 0x000 0x6 0x0
++#define MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX            0x218 0x5e8 0x000 0x0 0x0
++#define MX6QDL_PAD_KEY_COL4__IPU1_SISG4             0x218 0x5e8 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_COL4__USB_OTG_OC             0x218 0x5e8 0x944 0x2 0x1
++#define MX6QDL_PAD_KEY_COL4__KEY_COL4               0x218 0x5e8 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_COL4__UART5_RTS_B            0x218 0x5e8 0x93c 0x4 0x0
++#define MX6QDL_PAD_KEY_COL4__UART5_CTS_B            0x218 0x5e8 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_COL4__GPIO4_IO14             0x218 0x5e8 0x000 0x5 0x0
++#define MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX            0x21c 0x5ec 0x7e8 0x0 0x0
++#define MX6QDL_PAD_KEY_ROW4__IPU1_SISG5             0x21c 0x5ec 0x000 0x1 0x0
++#define MX6QDL_PAD_KEY_ROW4__USB_OTG_PWR            0x21c 0x5ec 0x000 0x2 0x0
++#define MX6QDL_PAD_KEY_ROW4__KEY_ROW4               0x21c 0x5ec 0x000 0x3 0x0
++#define MX6QDL_PAD_KEY_ROW4__UART5_CTS_B            0x21c 0x5ec 0x000 0x4 0x0
++#define MX6QDL_PAD_KEY_ROW4__UART5_RTS_B            0x21c 0x5ec 0x93c 0x4 0x1
++#define MX6QDL_PAD_KEY_ROW4__GPIO4_IO15             0x21c 0x5ec 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_0__CCM_CLKO1                0x220 0x5f0 0x000 0x0 0x0
++#define MX6QDL_PAD_GPIO_0__KEY_COL5                 0x220 0x5f0 0x8e8 0x2 0x0
++#define MX6QDL_PAD_GPIO_0__ASRC_EXT_CLK             0x220 0x5f0 0x7b0 0x3 0x1
++#define MX6QDL_PAD_GPIO_0__EPIT1_OUT                0x220 0x5f0 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_0__GPIO1_IO00               0x220 0x5f0 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_0__USB_H1_PWR               0x220 0x5f0 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_0__SNVS_VIO_5               0x220 0x5f0 0x000 0x7 0x0
++#define MX6QDL_PAD_GPIO_1__ESAI_RX_CLK              0x224 0x5f4 0x86c 0x0 0x1
++#define MX6QDL_PAD_GPIO_1__WDOG2_B                  0x224 0x5f4 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_1__KEY_ROW5                 0x224 0x5f4 0x8f4 0x2 0x0
++#define MX6QDL_PAD_GPIO_1__USB_OTG_ID               0x224 0x5f4 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_1__PWM2_OUT                 0x224 0x5f4 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_1__GPIO1_IO01               0x224 0x5f4 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_1__SD1_CD_B                 0x224 0x5f4 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_9__ESAI_RX_FS               0x228 0x5f8 0x85c 0x0 0x1
++#define MX6QDL_PAD_GPIO_9__WDOG1_B                  0x228 0x5f8 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_9__KEY_COL6                 0x228 0x5f8 0x8ec 0x2 0x0
++#define MX6QDL_PAD_GPIO_9__CCM_REF_EN_B             0x228 0x5f8 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_9__PWM1_OUT                 0x228 0x5f8 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_9__GPIO1_IO09               0x228 0x5f8 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_9__SD1_WP                   0x228 0x5f8 0x94c 0x6 0x1
++#define MX6QDL_PAD_GPIO_3__ESAI_RX_HF_CLK           0x22c 0x5fc 0x864 0x0 0x1
++#define MX6QDL_PAD_GPIO_3__I2C3_SCL                 0x22c 0x5fc 0x8a8 0x2 0x1
++#define MX6QDL_PAD_GPIO_3__XTALOSC_REF_CLK_24M      0x22c 0x5fc 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_3__CCM_CLKO2                0x22c 0x5fc 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_3__GPIO1_IO03               0x22c 0x5fc 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_3__USB_H1_OC                0x22c 0x5fc 0x948 0x6 0x1
++#define MX6QDL_PAD_GPIO_3__MLB_CLK                  0x22c 0x5fc 0x900 0x7 0x1
++#define MX6QDL_PAD_GPIO_6__ESAI_TX_CLK              0x230 0x600 0x870 0x0 0x1
++#define MX6QDL_PAD_GPIO_6__I2C3_SDA                 0x230 0x600 0x8ac 0x2 0x1
++#define MX6QDL_PAD_GPIO_6__GPIO1_IO06               0x230 0x600 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_6__SD2_LCTL                 0x230 0x600 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_6__MLB_SIG                  0x230 0x600 0x908 0x7 0x1
++#define MX6QDL_PAD_GPIO_2__ESAI_TX_FS               0x234 0x604 0x860 0x0 0x1
++#define MX6QDL_PAD_GPIO_2__KEY_ROW6                 0x234 0x604 0x8f8 0x2 0x1
++#define MX6QDL_PAD_GPIO_2__GPIO1_IO02               0x234 0x604 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_2__SD2_WP                   0x234 0x604 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_2__MLB_DATA                 0x234 0x604 0x904 0x7 0x1
++#define MX6QDL_PAD_GPIO_4__ESAI_TX_HF_CLK           0x238 0x608 0x868 0x0 0x1
++#define MX6QDL_PAD_GPIO_4__KEY_COL7                 0x238 0x608 0x8f0 0x2 0x1
++#define MX6QDL_PAD_GPIO_4__GPIO1_IO04               0x238 0x608 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_4__SD2_CD_B                 0x238 0x608 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_5__ESAI_TX2_RX3             0x23c 0x60c 0x87c 0x0 0x1
++#define MX6QDL_PAD_GPIO_5__KEY_ROW7                 0x23c 0x60c 0x8fc 0x2 0x1
++#define MX6QDL_PAD_GPIO_5__CCM_CLKO1                0x23c 0x60c 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_5__GPIO1_IO05               0x23c 0x60c 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_5__I2C3_SCL                 0x23c 0x60c 0x8a8 0x6 0x2
++#define MX6QDL_PAD_GPIO_5__ARM_EVENTI               0x23c 0x60c 0x000 0x7 0x0
++#define MX6QDL_PAD_GPIO_7__ESAI_TX4_RX1             0x240 0x610 0x884 0x0 0x1
++#define MX6QDL_PAD_GPIO_7__ECSPI5_RDY               0x240 0x610 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_7__EPIT1_OUT                0x240 0x610 0x000 0x2 0x0
++#define MX6QDL_PAD_GPIO_7__FLEXCAN1_TX              0x240 0x610 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_7__UART2_TX_DATA            0x240 0x610 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_7__UART2_RX_DATA            0x240 0x610 0x928 0x4 0x2
++#define MX6QDL_PAD_GPIO_7__GPIO1_IO07               0x240 0x610 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_7__SPDIF_LOCK               0x240 0x610 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_7__USB_OTG_HOST_MODE        0x240 0x610 0x000 0x7 0x0
++#define MX6QDL_PAD_GPIO_8__ESAI_TX5_RX0             0x244 0x614 0x888 0x0 0x1
++#define MX6QDL_PAD_GPIO_8__XTALOSC_REF_CLK_32K      0x244 0x614 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_8__EPIT2_OUT                0x244 0x614 0x000 0x2 0x0
++#define MX6QDL_PAD_GPIO_8__FLEXCAN1_RX              0x244 0x614 0x7e4 0x3 0x1
++#define MX6QDL_PAD_GPIO_8__UART2_RX_DATA            0x244 0x614 0x928 0x4 0x3
++#define MX6QDL_PAD_GPIO_8__UART2_TX_DATA            0x244 0x614 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_8__GPIO1_IO08               0x244 0x614 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_8__SPDIF_SR_CLK             0x244 0x614 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_8__USB_OTG_PWR_CTL_WAKE     0x244 0x614 0x000 0x7 0x0
++#define MX6QDL_PAD_GPIO_16__ESAI_TX3_RX2            0x248 0x618 0x880 0x0 0x1
++#define MX6QDL_PAD_GPIO_16__ENET_1588_EVENT2_IN     0x248 0x618 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_16__ENET_REF_CLK            0x248 0x618 0x83c 0x2 0x1
++#define MX6QDL_PAD_GPIO_16__SD1_LCTL                0x248 0x618 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_16__SPDIF_IN                0x248 0x618 0x914 0x4 0x3
++#define MX6QDL_PAD_GPIO_16__GPIO7_IO11              0x248 0x618 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_16__I2C3_SDA                0x248 0x618 0x8ac 0x6 0x2
++#define MX6QDL_PAD_GPIO_16__JTAG_DE_B               0x248 0x618 0x000 0x7 0x0
++#define MX6QDL_PAD_GPIO_17__ESAI_TX0                0x24c 0x61c 0x874 0x0 0x0
++#define MX6QDL_PAD_GPIO_17__ENET_1588_EVENT3_IN     0x24c 0x61c 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_17__CCM_PMIC_READY          0x24c 0x61c 0x7f0 0x2 0x1
++#define MX6QDL_PAD_GPIO_17__SDMA_EXT_EVENT0         0x24c 0x61c 0x90c 0x3 0x1
++#define MX6QDL_PAD_GPIO_17__SPDIF_OUT               0x24c 0x61c 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_17__GPIO7_IO12              0x24c 0x61c 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_18__ESAI_TX1                0x250 0x620 0x878 0x0 0x0
++#define MX6QDL_PAD_GPIO_18__ENET_RX_CLK             0x250 0x620 0x844 0x1 0x1
++#define MX6QDL_PAD_GPIO_18__SD3_VSELECT             0x250 0x620 0x000 0x2 0x0
++#define MX6QDL_PAD_GPIO_18__SDMA_EXT_EVENT1         0x250 0x620 0x910 0x3 0x1
++#define MX6QDL_PAD_GPIO_18__ASRC_EXT_CLK            0x250 0x620 0x7b0 0x4 0x2
++#define MX6QDL_PAD_GPIO_18__GPIO7_IO13              0x250 0x620 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_18__SNVS_VIO_5_CTL          0x250 0x620 0x000 0x6 0x0
++#define MX6QDL_PAD_GPIO_19__KEY_COL5                0x254 0x624 0x8e8 0x0 0x1
++#define MX6QDL_PAD_GPIO_19__ENET_1588_EVENT0_OUT    0x254 0x624 0x000 0x1 0x0
++#define MX6QDL_PAD_GPIO_19__SPDIF_OUT               0x254 0x624 0x000 0x2 0x0
++#define MX6QDL_PAD_GPIO_19__CCM_CLKO1               0x254 0x624 0x000 0x3 0x0
++#define MX6QDL_PAD_GPIO_19__ECSPI1_RDY              0x254 0x624 0x000 0x4 0x0
++#define MX6QDL_PAD_GPIO_19__GPIO4_IO05              0x254 0x624 0x000 0x5 0x0
++#define MX6QDL_PAD_GPIO_19__ENET_TX_ER              0x254 0x624 0x000 0x6 0x0
++#define MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK    0x258 0x628 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_PIXCLK__GPIO5_IO18          0x258 0x628 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_PIXCLK__ARM_EVENTO          0x258 0x628 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC       0x25c 0x62c 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_MCLK__CCM_CLKO1             0x25c 0x62c 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_MCLK__GPIO5_IO19            0x25c 0x62c 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_MCLK__ARM_TRACE_CTL         0x25c 0x62c 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DATA_EN__IPU1_CSI0_DATA_EN  0x260 0x630 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DATA_EN__EIM_DATA00         0x260 0x630 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20         0x260 0x630 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DATA_EN__ARM_TRACE_CLK      0x260 0x630 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC      0x264 0x634 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_VSYNC__EIM_DATA01           0x264 0x634 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_VSYNC__GPIO5_IO21           0x264 0x634 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_VSYNC__ARM_TRACE00          0x264 0x634 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT4__IPU1_CSI0_DATA04      0x268 0x638 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT4__EIM_DATA02            0x268 0x638 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT4__ECSPI1_SCLK           0x268 0x638 0x7f4 0x2 0x3
++#define MX6QDL_PAD_CSI0_DAT4__KEY_COL5              0x268 0x638 0x8e8 0x3 0x2
++#define MX6QDL_PAD_CSI0_DAT4__AUD3_TXC              0x268 0x638 0x000 0x4 0x0
++#define MX6QDL_PAD_CSI0_DAT4__GPIO5_IO22            0x268 0x638 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT4__ARM_TRACE01           0x268 0x638 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT5__IPU1_CSI0_DATA05      0x26c 0x63c 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT5__EIM_DATA03            0x26c 0x63c 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT5__ECSPI1_MOSI           0x26c 0x63c 0x7fc 0x2 0x3
++#define MX6QDL_PAD_CSI0_DAT5__KEY_ROW5              0x26c 0x63c 0x8f4 0x3 0x1
++#define MX6QDL_PAD_CSI0_DAT5__AUD3_TXD              0x26c 0x63c 0x000 0x4 0x0
++#define MX6QDL_PAD_CSI0_DAT5__GPIO5_IO23            0x26c 0x63c 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT5__ARM_TRACE02           0x26c 0x63c 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT6__IPU1_CSI0_DATA06      0x270 0x640 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT6__EIM_DATA04            0x270 0x640 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT6__ECSPI1_MISO           0x270 0x640 0x7f8 0x2 0x3
++#define MX6QDL_PAD_CSI0_DAT6__KEY_COL6              0x270 0x640 0x8ec 0x3 0x1
++#define MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS             0x270 0x640 0x000 0x4 0x0
++#define MX6QDL_PAD_CSI0_DAT6__GPIO5_IO24            0x270 0x640 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT6__ARM_TRACE03           0x270 0x640 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT7__IPU1_CSI0_DATA07      0x274 0x644 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT7__EIM_DATA05            0x274 0x644 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT7__ECSPI1_SS0            0x274 0x644 0x800 0x2 0x3
++#define MX6QDL_PAD_CSI0_DAT7__KEY_ROW6              0x274 0x644 0x8f8 0x3 0x2
++#define MX6QDL_PAD_CSI0_DAT7__AUD3_RXD              0x274 0x644 0x000 0x4 0x0
++#define MX6QDL_PAD_CSI0_DAT7__GPIO5_IO25            0x274 0x644 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT7__ARM_TRACE04           0x274 0x644 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT8__IPU1_CSI0_DATA08      0x278 0x648 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT8__EIM_DATA06            0x278 0x648 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT8__ECSPI2_SCLK           0x278 0x648 0x810 0x2 0x2
++#define MX6QDL_PAD_CSI0_DAT8__KEY_COL7              0x278 0x648 0x8f0 0x3 0x2
++#define MX6QDL_PAD_CSI0_DAT8__I2C1_SDA              0x278 0x648 0x89c 0x4 0x1
++#define MX6QDL_PAD_CSI0_DAT8__GPIO5_IO26            0x278 0x648 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT8__ARM_TRACE05           0x278 0x648 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT9__IPU1_CSI0_DATA09      0x27c 0x64c 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT9__EIM_DATA07            0x27c 0x64c 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT9__ECSPI2_MOSI           0x27c 0x64c 0x818 0x2 0x2
++#define MX6QDL_PAD_CSI0_DAT9__KEY_ROW7              0x27c 0x64c 0x8fc 0x3 0x2
++#define MX6QDL_PAD_CSI0_DAT9__I2C1_SCL              0x27c 0x64c 0x898 0x4 0x1
++#define MX6QDL_PAD_CSI0_DAT9__GPIO5_IO27            0x27c 0x64c 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT9__ARM_TRACE06           0x27c 0x64c 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT10__IPU1_CSI0_DATA10     0x280 0x650 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT10__AUD3_RXC             0x280 0x650 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT10__ECSPI2_MISO          0x280 0x650 0x814 0x2 0x2
++#define MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA        0x280 0x650 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT10__UART1_RX_DATA        0x280 0x650 0x920 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT10__GPIO5_IO28           0x280 0x650 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT10__ARM_TRACE07          0x280 0x650 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT11__IPU1_CSI0_DATA11     0x284 0x654 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT11__AUD3_RXFS            0x284 0x654 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT11__ECSPI2_SS0           0x284 0x654 0x81c 0x2 0x2
++#define MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA        0x284 0x654 0x920 0x3 0x1
++#define MX6QDL_PAD_CSI0_DAT11__UART1_TX_DATA        0x284 0x654 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT11__GPIO5_IO29           0x284 0x654 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT11__ARM_TRACE08          0x284 0x654 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12     0x288 0x658 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT12__EIM_DATA08           0x288 0x658 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA        0x288 0x658 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT12__UART4_RX_DATA        0x288 0x658 0x938 0x3 0x2
++#define MX6QDL_PAD_CSI0_DAT12__GPIO5_IO30           0x288 0x658 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT12__ARM_TRACE09          0x288 0x658 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13     0x28c 0x65c 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT13__EIM_DATA09           0x28c 0x65c 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA        0x28c 0x65c 0x938 0x3 0x3
++#define MX6QDL_PAD_CSI0_DAT13__UART4_TX_DATA        0x28c 0x65c 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT13__GPIO5_IO31           0x28c 0x65c 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT13__ARM_TRACE10          0x28c 0x65c 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14     0x290 0x660 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT14__EIM_DATA10           0x290 0x660 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT14__UART5_TX_DATA        0x290 0x660 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT14__UART5_RX_DATA        0x290 0x660 0x940 0x3 0x2
++#define MX6QDL_PAD_CSI0_DAT14__GPIO6_IO00           0x290 0x660 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT14__ARM_TRACE11          0x290 0x660 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15     0x294 0x664 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT15__EIM_DATA11           0x294 0x664 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT15__UART5_RX_DATA        0x294 0x664 0x940 0x3 0x3
++#define MX6QDL_PAD_CSI0_DAT15__UART5_TX_DATA        0x294 0x664 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT15__GPIO6_IO01           0x294 0x664 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT15__ARM_TRACE12          0x294 0x664 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16     0x298 0x668 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT16__EIM_DATA12           0x298 0x668 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B          0x298 0x668 0x934 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT16__UART4_CTS_B          0x298 0x668 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT16__GPIO6_IO02           0x298 0x668 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT16__ARM_TRACE13          0x298 0x668 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17     0x29c 0x66c 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT17__EIM_DATA13           0x29c 0x66c 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT17__UART4_CTS_B          0x29c 0x66c 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT17__UART4_RTS_B          0x29c 0x66c 0x934 0x3 0x1
++#define MX6QDL_PAD_CSI0_DAT17__GPIO6_IO03           0x29c 0x66c 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT17__ARM_TRACE14          0x29c 0x66c 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18     0x2a0 0x670 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT18__EIM_DATA14           0x2a0 0x670 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT18__UART5_RTS_B          0x2a0 0x670 0x93c 0x3 0x2
++#define MX6QDL_PAD_CSI0_DAT18__UART5_CTS_B          0x2a0 0x670 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT18__GPIO6_IO04           0x2a0 0x670 0x000 0x5 0x0
++#define MX6QDL_PAD_CSI0_DAT18__ARM_TRACE15          0x2a0 0x670 0x000 0x7 0x0
++#define MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19     0x2a4 0x674 0x000 0x0 0x0
++#define MX6QDL_PAD_CSI0_DAT19__EIM_DATA15           0x2a4 0x674 0x000 0x1 0x0
++#define MX6QDL_PAD_CSI0_DAT19__UART5_CTS_B          0x2a4 0x674 0x000 0x3 0x0
++#define MX6QDL_PAD_CSI0_DAT19__UART5_RTS_B          0x2a4 0x674 0x93c 0x3 0x3
++#define MX6QDL_PAD_CSI0_DAT19__GPIO6_IO05           0x2a4 0x674 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT7__SD3_DATA7              0x2a8 0x690 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA          0x2a8 0x690 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT7__UART1_RX_DATA          0x2a8 0x690 0x920 0x1 0x2
++#define MX6QDL_PAD_SD3_DAT7__GPIO6_IO17             0x2a8 0x690 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT6__SD3_DATA6              0x2ac 0x694 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA          0x2ac 0x694 0x920 0x1 0x3
++#define MX6QDL_PAD_SD3_DAT6__UART1_TX_DATA          0x2ac 0x694 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT6__GPIO6_IO18             0x2ac 0x694 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT5__SD3_DATA5              0x2b0 0x698 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT5__UART2_TX_DATA          0x2b0 0x698 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT5__UART2_RX_DATA          0x2b0 0x698 0x928 0x1 0x4
++#define MX6QDL_PAD_SD3_DAT5__GPIO7_IO00             0x2b0 0x698 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT4__SD3_DATA4              0x2b4 0x69c 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT4__UART2_RX_DATA          0x2b4 0x69c 0x928 0x1 0x5
++#define MX6QDL_PAD_SD3_DAT4__UART2_TX_DATA          0x2b4 0x69c 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT4__GPIO7_IO01             0x2b4 0x69c 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_CMD__SD3_CMD                 0x2b8 0x6a0 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_CMD__UART2_CTS_B             0x2b8 0x6a0 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_CMD__UART2_RTS_B             0x2b8 0x6a0 0x924 0x1 0x2
++#define MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX             0x2b8 0x6a0 0x000 0x2 0x0
++#define MX6QDL_PAD_SD3_CMD__GPIO7_IO02              0x2b8 0x6a0 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_CLK__SD3_CLK                 0x2bc 0x6a4 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_CLK__UART2_RTS_B             0x2bc 0x6a4 0x924 0x1 0x3
++#define MX6QDL_PAD_SD3_CLK__UART2_CTS_B             0x2bc 0x6a4 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX             0x2bc 0x6a4 0x7e4 0x2 0x2
++#define MX6QDL_PAD_SD3_CLK__GPIO7_IO03              0x2bc 0x6a4 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT0__SD3_DATA0              0x2c0 0x6a8 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT0__UART1_CTS_B            0x2c0 0x6a8 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT0__UART1_RTS_B            0x2c0 0x6a8 0x91c 0x1 0x2
++#define MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX            0x2c0 0x6a8 0x000 0x2 0x0
++#define MX6QDL_PAD_SD3_DAT0__GPIO7_IO04             0x2c0 0x6a8 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT1__SD3_DATA1              0x2c4 0x6ac 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT1__UART1_RTS_B            0x2c4 0x6ac 0x91c 0x1 0x3
++#define MX6QDL_PAD_SD3_DAT1__UART1_CTS_B            0x2c4 0x6ac 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX            0x2c4 0x6ac 0x7e8 0x2 0x1
++#define MX6QDL_PAD_SD3_DAT1__GPIO7_IO05             0x2c4 0x6ac 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT2__SD3_DATA2              0x2c8 0x6b0 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT2__GPIO7_IO06             0x2c8 0x6b0 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_DAT3__SD3_DATA3              0x2cc 0x6b4 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_DAT3__UART3_CTS_B            0x2cc 0x6b4 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_DAT3__UART3_RTS_B            0x2cc 0x6b4 0x92c 0x1 0x4
++#define MX6QDL_PAD_SD3_DAT3__GPIO7_IO07             0x2cc 0x6b4 0x000 0x5 0x0
++#define MX6QDL_PAD_SD3_RST__SD3_RESET               0x2d0 0x6b8 0x000 0x0 0x0
++#define MX6QDL_PAD_SD3_RST__UART3_RTS_B             0x2d0 0x6b8 0x92c 0x1 0x5
++#define MX6QDL_PAD_SD3_RST__UART3_CTS_B             0x2d0 0x6b8 0x000 0x1 0x0
++#define MX6QDL_PAD_SD3_RST__GPIO7_IO08              0x2d0 0x6b8 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CLE__NAND_CLE              0x2d4 0x6bc 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_CLE__IPU2_SISG4            0x2d4 0x6bc 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_CLE__GPIO6_IO07            0x2d4 0x6bc 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_ALE__NAND_ALE              0x2d8 0x6c0 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_ALE__SD4_RESET             0x2d8 0x6c0 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_ALE__GPIO6_IO08            0x2d8 0x6c0 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_WP_B__NAND_WP_B            0x2dc 0x6c4 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_WP_B__IPU2_SISG5           0x2dc 0x6c4 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_WP_B__GPIO6_IO09           0x2dc 0x6c4 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_RB0__NAND_READY_B          0x2e0 0x6c8 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_RB0__IPU2_DI0_PIN01        0x2e0 0x6c8 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_RB0__GPIO6_IO10            0x2e0 0x6c8 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CS0__NAND_CE0_B            0x2e4 0x6cc 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_CS0__GPIO6_IO11            0x2e4 0x6cc 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CS1__NAND_CE1_B            0x2e8 0x6d0 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_CS1__SD4_VSELECT           0x2e8 0x6d0 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_CS1__SD3_VSELECT           0x2e8 0x6d0 0x000 0x2 0x0
++#define MX6QDL_PAD_NANDF_CS1__GPIO6_IO14            0x2e8 0x6d0 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CS2__NAND_CE2_B            0x2ec 0x6d4 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_CS2__IPU1_SISG0            0x2ec 0x6d4 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_CS2__ESAI_TX0              0x2ec 0x6d4 0x874 0x2 0x1
++#define MX6QDL_PAD_NANDF_CS2__EIM_CRE               0x2ec 0x6d4 0x000 0x3 0x0
++#define MX6QDL_PAD_NANDF_CS2__CCM_CLKO2             0x2ec 0x6d4 0x000 0x4 0x0
++#define MX6QDL_PAD_NANDF_CS2__GPIO6_IO15            0x2ec 0x6d4 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CS2__IPU2_SISG0            0x2ec 0x6d4 0x000 0x6 0x0
++#define MX6QDL_PAD_NANDF_CS3__NAND_CE3_B            0x2f0 0x6d8 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_CS3__IPU1_SISG1            0x2f0 0x6d8 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_CS3__ESAI_TX1              0x2f0 0x6d8 0x878 0x2 0x1
++#define MX6QDL_PAD_NANDF_CS3__EIM_ADDR26            0x2f0 0x6d8 0x000 0x3 0x0
++#define MX6QDL_PAD_NANDF_CS3__GPIO6_IO16            0x2f0 0x6d8 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_CS3__IPU2_SISG1            0x2f0 0x6d8 0x000 0x6 0x0
++#define MX6QDL_PAD_SD4_CMD__SD4_CMD                 0x2f4 0x6dc 0x000 0x0 0x0
++#define MX6QDL_PAD_SD4_CMD__NAND_RE_B               0x2f4 0x6dc 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_CMD__UART3_TX_DATA           0x2f4 0x6dc 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_CMD__UART3_RX_DATA           0x2f4 0x6dc 0x930 0x2 0x2
++#define MX6QDL_PAD_SD4_CMD__GPIO7_IO09              0x2f4 0x6dc 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_CLK__SD4_CLK                 0x2f8 0x6e0 0x000 0x0 0x0
++#define MX6QDL_PAD_SD4_CLK__NAND_WE_B               0x2f8 0x6e0 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_CLK__UART3_RX_DATA           0x2f8 0x6e0 0x930 0x2 0x3
++#define MX6QDL_PAD_SD4_CLK__UART3_TX_DATA           0x2f8 0x6e0 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_CLK__GPIO7_IO10              0x2f8 0x6e0 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D0__NAND_DATA00            0x2fc 0x6e4 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D0__SD1_DATA4              0x2fc 0x6e4 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D0__GPIO2_IO00             0x2fc 0x6e4 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D1__NAND_DATA01            0x300 0x6e8 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D1__SD1_DATA5              0x300 0x6e8 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D1__GPIO2_IO01             0x300 0x6e8 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D2__NAND_DATA02            0x304 0x6ec 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D2__SD1_DATA6              0x304 0x6ec 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D2__GPIO2_IO02             0x304 0x6ec 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D3__NAND_DATA03            0x308 0x6f0 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D3__SD1_DATA7              0x308 0x6f0 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D3__GPIO2_IO03             0x308 0x6f0 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D4__NAND_DATA04            0x30c 0x6f4 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D4__SD2_DATA4              0x30c 0x6f4 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D4__GPIO2_IO04             0x30c 0x6f4 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D5__NAND_DATA05            0x310 0x6f8 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D5__SD2_DATA5              0x310 0x6f8 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D5__GPIO2_IO05             0x310 0x6f8 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D6__NAND_DATA06            0x314 0x6fc 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D6__SD2_DATA6              0x314 0x6fc 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D6__GPIO2_IO06             0x314 0x6fc 0x000 0x5 0x0
++#define MX6QDL_PAD_NANDF_D7__NAND_DATA07            0x318 0x700 0x000 0x0 0x0
++#define MX6QDL_PAD_NANDF_D7__SD2_DATA7              0x318 0x700 0x000 0x1 0x0
++#define MX6QDL_PAD_NANDF_D7__GPIO2_IO07             0x318 0x700 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT0__SD4_DATA0              0x31c 0x704 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT0__NAND_DQS               0x31c 0x704 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT0__GPIO2_IO08             0x31c 0x704 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT1__SD4_DATA1              0x320 0x708 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT1__PWM3_OUT               0x320 0x708 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT1__GPIO2_IO09             0x320 0x708 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT2__SD4_DATA2              0x324 0x70c 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT2__PWM4_OUT               0x324 0x70c 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT2__GPIO2_IO10             0x324 0x70c 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT3__SD4_DATA3              0x328 0x710 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT3__GPIO2_IO11             0x328 0x710 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT4__SD4_DATA4              0x32c 0x714 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA          0x32c 0x714 0x928 0x2 0x6
++#define MX6QDL_PAD_SD4_DAT4__UART2_TX_DATA          0x32c 0x714 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT4__GPIO2_IO12             0x32c 0x714 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT5__SD4_DATA5              0x330 0x718 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT5__UART2_RTS_B            0x330 0x718 0x924 0x2 0x4
++#define MX6QDL_PAD_SD4_DAT5__UART2_CTS_B            0x330 0x718 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT5__GPIO2_IO13             0x330 0x718 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT6__SD4_DATA6              0x334 0x71c 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT6__UART2_CTS_B            0x334 0x71c 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT6__UART2_RTS_B            0x334 0x71c 0x924 0x2 0x5
++#define MX6QDL_PAD_SD4_DAT6__GPIO2_IO14             0x334 0x71c 0x000 0x5 0x0
++#define MX6QDL_PAD_SD4_DAT7__SD4_DATA7              0x338 0x720 0x000 0x1 0x0
++#define MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA          0x338 0x720 0x000 0x2 0x0
++#define MX6QDL_PAD_SD4_DAT7__UART2_RX_DATA          0x338 0x720 0x928 0x2 0x7
++#define MX6QDL_PAD_SD4_DAT7__GPIO2_IO15             0x338 0x720 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT1__SD1_DATA1              0x33c 0x724 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_DAT1__ECSPI5_SS0             0x33c 0x724 0x834 0x1 0x1
++#define MX6QDL_PAD_SD1_DAT1__PWM3_OUT               0x33c 0x724 0x000 0x2 0x0
++#define MX6QDL_PAD_SD1_DAT1__GPT_CAPTURE2           0x33c 0x724 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_DAT1__GPIO1_IO17             0x33c 0x724 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT0__SD1_DATA0              0x340 0x728 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_DAT0__ECSPI5_MISO            0x340 0x728 0x82c 0x1 0x1
++#define MX6QDL_PAD_SD1_DAT0__GPT_CAPTURE1           0x340 0x728 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_DAT0__GPIO1_IO16             0x340 0x728 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT3__SD1_DATA3              0x344 0x72c 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_DAT3__ECSPI5_SS2             0x344 0x72c 0x000 0x1 0x0
++#define MX6QDL_PAD_SD1_DAT3__GPT_COMPARE3           0x344 0x72c 0x000 0x2 0x0
++#define MX6QDL_PAD_SD1_DAT3__PWM1_OUT               0x344 0x72c 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_DAT3__WDOG2_B                0x344 0x72c 0x000 0x4 0x0
++#define MX6QDL_PAD_SD1_DAT3__GPIO1_IO21             0x344 0x72c 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT3__WDOG2_RESET_B_DEB      0x344 0x72c 0x000 0x6 0x0
++#define MX6QDL_PAD_SD1_CMD__SD1_CMD                 0x348 0x730 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_CMD__ECSPI5_MOSI             0x348 0x730 0x830 0x1 0x0
++#define MX6QDL_PAD_SD1_CMD__PWM4_OUT                0x348 0x730 0x000 0x2 0x0
++#define MX6QDL_PAD_SD1_CMD__GPT_COMPARE1            0x348 0x730 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_CMD__GPIO1_IO18              0x348 0x730 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT2__SD1_DATA2              0x34c 0x734 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_DAT2__ECSPI5_SS1             0x34c 0x734 0x838 0x1 0x1
++#define MX6QDL_PAD_SD1_DAT2__GPT_COMPARE2           0x34c 0x734 0x000 0x2 0x0
++#define MX6QDL_PAD_SD1_DAT2__PWM2_OUT               0x34c 0x734 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_DAT2__WDOG1_B                0x34c 0x734 0x000 0x4 0x0
++#define MX6QDL_PAD_SD1_DAT2__GPIO1_IO19             0x34c 0x734 0x000 0x5 0x0
++#define MX6QDL_PAD_SD1_DAT2__WDOG1_RESET_B_DEB      0x34c 0x734 0x000 0x6 0x0
++#define MX6QDL_PAD_SD1_CLK__SD1_CLK                 0x350 0x738 0x000 0x0 0x0
++#define MX6QDL_PAD_SD1_CLK__ECSPI5_SCLK             0x350 0x738 0x828 0x1 0x0
++#define MX6QDL_PAD_SD1_CLK__GPT_CLKIN               0x350 0x738 0x000 0x3 0x0
++#define MX6QDL_PAD_SD1_CLK__GPIO1_IO20              0x350 0x738 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_CLK__SD2_CLK                 0x354 0x73c 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_CLK__ECSPI5_SCLK             0x354 0x73c 0x828 0x1 0x1
++#define MX6QDL_PAD_SD2_CLK__KEY_COL5                0x354 0x73c 0x8e8 0x2 0x3
++#define MX6QDL_PAD_SD2_CLK__AUD4_RXFS               0x354 0x73c 0x7c0 0x3 0x1
++#define MX6QDL_PAD_SD2_CLK__GPIO1_IO10              0x354 0x73c 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_CMD__SD2_CMD                 0x358 0x740 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_CMD__ECSPI5_MOSI             0x358 0x740 0x830 0x1 0x1
++#define MX6QDL_PAD_SD2_CMD__KEY_ROW5                0x358 0x740 0x8f4 0x2 0x2
++#define MX6QDL_PAD_SD2_CMD__AUD4_RXC                0x358 0x740 0x7bc 0x3 0x1
++#define MX6QDL_PAD_SD2_CMD__GPIO1_IO11              0x358 0x740 0x000 0x5 0x0
++#define MX6QDL_PAD_SD2_DAT3__SD2_DATA3              0x35c 0x744 0x000 0x0 0x0
++#define MX6QDL_PAD_SD2_DAT3__ECSPI5_SS3             0x35c 0x744 0x000 0x1 0x0
++#define MX6QDL_PAD_SD2_DAT3__KEY_COL6               0x35c 0x744 0x8ec 0x2 0x2
++#define MX6QDL_PAD_SD2_DAT3__AUD4_TXC               0x35c 0x744 0x7c4 0x3 0x1
++#define MX6QDL_PAD_SD2_DAT3__GPIO1_IO12             0x35c 0x744 0x000 0x5 0x0
+ #endif /* __DTS_IMX6Q_PINFUNC_H */
+diff --git a/arch/arm/boot/dts/imx6q-sabreauto.dts b/arch/arm/boot/dts/imx6q-sabreauto.dts
+index 49d6f28..334b924 100644
+--- a/arch/arm/boot/dts/imx6q-sabreauto.dts
++++ b/arch/arm/boot/dts/imx6q-sabreauto.dts
+@@ -20,16 +20,6 @@
+       compatible = "fsl,imx6q-sabreauto", "fsl,imx6q";
+ };
+-&iomuxc {
+-      pinctrl-names = "default";
+-      pinctrl-0 = <&pinctrl_hog>;
+-
+-      hog {
+-              pinctrl_hog: hoggrp {
+-                      fsl,pins = <
+-                              MX6Q_PAD_NANDF_CS2__GPIO6_IO15 0x80000000
+-                              MX6Q_PAD_SD2_DAT2__GPIO1_IO13  0x80000000
+-                      >;
+-              };
+-      };
++&sata {
++      status = "okay";
+ };
+diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts b/arch/arm/boot/dts/imx6q-sabrelite.dts
+index 6a00066..3530280 100644
+--- a/arch/arm/boot/dts/imx6q-sabrelite.dts
++++ b/arch/arm/boot/dts/imx6q-sabrelite.dts
+@@ -65,6 +65,10 @@
+       };
+ };
++&sata {
++      status = "okay";
++};
++
+ &ecspi1 {
+       fsl,spi-num-chipselects = <1>;
+       cs-gpios = <&gpio3 19 0>;
+@@ -91,14 +95,14 @@
+       hog {
+               pinctrl_hog: hoggrp {
+                       fsl,pins = <
+-                              MX6Q_PAD_NANDF_D6__GPIO2_IO06 0x80000000
+-                              MX6Q_PAD_NANDF_D7__GPIO2_IO07 0x80000000
+-                              MX6Q_PAD_EIM_D19__GPIO3_IO19  0x80000000
+-                              MX6Q_PAD_EIM_D22__GPIO3_IO22  0x80000000
+-                              MX6Q_PAD_EIM_D23__GPIO3_IO23  0x80000000
+-                              MX6Q_PAD_SD3_DAT5__GPIO7_IO00 0x80000000
+-                              MX6Q_PAD_SD3_DAT4__GPIO7_IO01 0x1f0b0
+-                              MX6Q_PAD_GPIO_0__CCM_CLKO1    0x80000000
++                              MX6QDL_PAD_NANDF_D6__GPIO2_IO06 0x80000000
++                              MX6QDL_PAD_NANDF_D7__GPIO2_IO07 0x80000000
++                              MX6QDL_PAD_EIM_D19__GPIO3_IO19  0x80000000
++                              MX6QDL_PAD_EIM_D22__GPIO3_IO22  0x80000000
++                              MX6QDL_PAD_EIM_D23__GPIO3_IO23  0x80000000
++                              MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x80000000
++                              MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x1f0b0
++                              MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x80000000
+                       >;
+               };
+       };
+@@ -163,7 +167,7 @@
+       codec: sgtl5000@0a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+-              clocks = <&clks 169>;
++              clocks = <&clks 201>;
+               VDDA-supply = <&reg_2p5v>;
+               VDDIO-supply = <&reg_3p3v>;
+       };
+diff --git a/arch/arm/boot/dts/imx6q-sabresd.dts b/arch/arm/boot/dts/imx6q-sabresd.dts
+index 4420513..9cbdfe7 100644
+--- a/arch/arm/boot/dts/imx6q-sabresd.dts
++++ b/arch/arm/boot/dts/imx6q-sabresd.dts
+@@ -20,20 +20,6 @@
+       compatible = "fsl,imx6q-sabresd", "fsl,imx6q";
+ };
+-&iomuxc {
+-      pinctrl-names = "default";
+-      pinctrl-0 = <&pinctrl_hog>;
+-
+-      hog {
+-              pinctrl_hog: hoggrp {
+-                      fsl,pins = <
+-                              MX6Q_PAD_GPIO_4__GPIO1_IO04   0x80000000
+-                              MX6Q_PAD_GPIO_5__GPIO1_IO05   0x80000000
+-                              MX6Q_PAD_NANDF_D0__GPIO2_IO00 0x80000000
+-                              MX6Q_PAD_NANDF_D1__GPIO2_IO01 0x80000000
+-                              MX6Q_PAD_NANDF_D2__GPIO2_IO02 0x80000000
+-                              MX6Q_PAD_NANDF_D3__GPIO2_IO03 0x80000000
+-                      >;
+-              };
+-      };
++&sata {
++      status = "okay";
+ };
+diff --git a/arch/arm/boot/dts/imx6q-wandboard.dts b/arch/arm/boot/dts/imx6q-wandboard.dts
+new file mode 100644
+index 0000000..36be17f
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6q-wandboard.dts
+@@ -0,0 +1,26 @@
++/*
++ * Copyright 2013 Freescale Semiconductor, Inc.
++ *
++ * Author: Fabio Estevam <fabio.estevam@freescale.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.
++ *
++ */
++/dts-v1/;
++#include "imx6q.dtsi"
++#include "imx6qdl-wandboard.dtsi"
++
++/ {
++      model = "Wandboard i.MX6 Quad Board";
++      compatible = "wand,imx6q-wandboard", "fsl,imx6q";
++
++      memory {
++              reg = <0x10000000 0x80000000>;
++      };
++};
++
++&sata {
++      status = "okay";
++};
+diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi
+index dc54a72..f024ef2 100644
+--- a/arch/arm/boot/dts/imx6q.dtsi
++++ b/arch/arm/boot/dts/imx6q.dtsi
+@@ -8,8 +8,8 @@
+  *
+  */
+-#include "imx6qdl.dtsi"
+ #include "imx6q-pinfunc.h"
++#include "imx6qdl.dtsi"
+ / {
+       cpus {
+@@ -61,6 +61,12 @@
+       };
+       soc {
++              ocram: sram@00900000 {
++                      compatible = "mmio-sram";
++                      reg = <0x00900000 0x40000>;
++                      clocks = <&clks 142>;
++              };
++
+               aips-bus@02000000 { /* AIPS1 */
+                       spba-bus@02000000 {
+                               ecspi5: ecspi@02018000 {
+@@ -77,261 +83,54 @@
+                       iomuxc: iomuxc@020e0000 {
+                               compatible = "fsl,imx6q-iomuxc";
+-                              reg = <0x020e0000 0x4000>;
+-                              /* shared pinctrl settings */
+-                              audmux {
+-                                      pinctrl_audmux_1: audmux-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_SD2_DAT0__AUD4_RXD  0x80000000
+-                                                      MX6Q_PAD_SD2_DAT3__AUD4_TXC  0x80000000
+-                                                      MX6Q_PAD_SD2_DAT2__AUD4_TXD  0x80000000
+-                                                      MX6Q_PAD_SD2_DAT1__AUD4_TXFS 0x80000000
+-                                              >;
+-                                      };
+-
+-                                      pinctrl_audmux_2: audmux-2 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_CSI0_DAT7__AUD3_RXD  0x80000000
+-                                                      MX6Q_PAD_CSI0_DAT4__AUD3_TXC  0x80000000
+-                                                      MX6Q_PAD_CSI0_DAT5__AUD3_TXD  0x80000000
+-                                                      MX6Q_PAD_CSI0_DAT6__AUD3_TXFS 0x80000000
+-                                              >;
+-                                      };
+-                              };
+-
+-                              ecspi1 {
+-                                      pinctrl_ecspi1_1: ecspi1grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_EIM_D17__ECSPI1_MISO 0x100b1
+-                                                      MX6Q_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
+-                                                      MX6Q_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              ecspi3 {
+-                                      pinctrl_ecspi3_1: ecspi3grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_DISP0_DAT2__ECSPI3_MISO 0x100b1
+-                                                      MX6Q_PAD_DISP0_DAT1__ECSPI3_MOSI 0x100b1
+-                                                      MX6Q_PAD_DISP0_DAT0__ECSPI3_SCLK 0x100b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              enet {
+-                                      pinctrl_enet_1: enetgrp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_ENET_MDIO__ENET_MDIO       0x1b0b0
+-                                                      MX6Q_PAD_ENET_MDC__ENET_MDC         0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
+-                                                      MX6Q_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
+-                                                      MX6Q_PAD_GPIO_16__ENET_REF_CLK      0x4001b0a8
+-                                              >;
+-                                      };
+-
+-                                      pinctrl_enet_2: enetgrp-2 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_KEY_COL1__ENET_MDIO        0x1b0b0
+-                                                      MX6Q_PAD_KEY_COL2__ENET_MDC         0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
+-                                                      MX6Q_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
+-                                                      MX6Q_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
+-                                              >;
+-                                      };
+-                              };
+-
+-                              gpmi-nand {
+-                                      pinctrl_gpmi_nand_1: gpmi-nand-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_NANDF_CLE__NAND_CLE     0xb0b1
+-                                                      MX6Q_PAD_NANDF_ALE__NAND_ALE     0xb0b1
+-                                                      MX6Q_PAD_NANDF_WP_B__NAND_WP_B   0xb0b1
+-                                                      MX6Q_PAD_NANDF_RB0__NAND_READY_B 0xb000
+-                                                      MX6Q_PAD_NANDF_CS0__NAND_CE0_B   0xb0b1
+-                                                      MX6Q_PAD_NANDF_CS1__NAND_CE1_B   0xb0b1
+-                                                      MX6Q_PAD_NANDF_CS2__NAND_CE2_B   0xb0b1
+-                                                      MX6Q_PAD_NANDF_CS3__NAND_CE3_B   0xb0b1
+-                                                      MX6Q_PAD_SD4_CMD__NAND_RE_B      0xb0b1
+-                                                      MX6Q_PAD_SD4_CLK__NAND_WE_B      0xb0b1
+-                                                      MX6Q_PAD_NANDF_D0__NAND_DATA00   0xb0b1
+-                                                      MX6Q_PAD_NANDF_D1__NAND_DATA01   0xb0b1
+-                                                      MX6Q_PAD_NANDF_D2__NAND_DATA02   0xb0b1
+-                                                      MX6Q_PAD_NANDF_D3__NAND_DATA03   0xb0b1
+-                                                      MX6Q_PAD_NANDF_D4__NAND_DATA04   0xb0b1
+-                                                      MX6Q_PAD_NANDF_D5__NAND_DATA05   0xb0b1
+-                                                      MX6Q_PAD_NANDF_D6__NAND_DATA06   0xb0b1
+-                                                      MX6Q_PAD_NANDF_D7__NAND_DATA07   0xb0b1
+-                                                      MX6Q_PAD_SD4_DAT0__NAND_DQS      0x00b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              i2c1 {
+-                                      pinctrl_i2c1_1: i2c1grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+-                                                      MX6Q_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              i2c2 {
+-                                      pinctrl_i2c2_1: i2c2grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_EIM_EB2__I2C2_SCL 0x4001b8b1
+-                                                      MX6Q_PAD_EIM_D16__I2C2_SDA 0x4001b8b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              i2c3 {
+-                                      pinctrl_i2c3_1: i2c3grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
+-                                                      MX6Q_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              uart1 {
+-                                      pinctrl_uart1_1: uart1grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0b1
+-                                                      MX6Q_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              uart2 {
+-                                      pinctrl_uart2_1: uart2grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
+-                                                      MX6Q_PAD_EIM_D27__UART2_RX_DATA 0x1b0b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              uart4 {
+-                                      pinctrl_uart4_1: uart4grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+-                                                      MX6Q_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+-                                              >;
+-                                      };
+-                              };
+-
+-                              usbotg {
+-                                      pinctrl_usbotg_1: usbotggrp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_GPIO_1__USB_OTG_ID 0x17059
+-                                              >;
+-                                      };
+-
+-                                      pinctrl_usbotg_2: usbotggrp-2 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+-                                              >;
+-                                      };
+-                              };
+-
+-                              usdhc2 {
+-                                      pinctrl_usdhc2_1: usdhc2grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_SD2_CMD__SD2_CMD    0x17059
+-                                                      MX6Q_PAD_SD2_CLK__SD2_CLK    0x10059
+-                                                      MX6Q_PAD_SD2_DAT0__SD2_DATA0 0x17059
+-                                                      MX6Q_PAD_SD2_DAT1__SD2_DATA1 0x17059
+-                                                      MX6Q_PAD_SD2_DAT2__SD2_DATA2 0x17059
+-                                                      MX6Q_PAD_SD2_DAT3__SD2_DATA3 0x17059
+-                                                      MX6Q_PAD_NANDF_D4__SD2_DATA4 0x17059
+-                                                      MX6Q_PAD_NANDF_D5__SD2_DATA5 0x17059
+-                                                      MX6Q_PAD_NANDF_D6__SD2_DATA6 0x17059
+-                                                      MX6Q_PAD_NANDF_D7__SD2_DATA7 0x17059
+-                                              >;
+-                                      };
+-                              };
+-
+-                              usdhc3 {
+-                                      pinctrl_usdhc3_1: usdhc3grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_SD3_CMD__SD3_CMD    0x17059
+-                                                      MX6Q_PAD_SD3_CLK__SD3_CLK    0x10059
+-                                                      MX6Q_PAD_SD3_DAT0__SD3_DATA0 0x17059
+-                                                      MX6Q_PAD_SD3_DAT1__SD3_DATA1 0x17059
+-                                                      MX6Q_PAD_SD3_DAT2__SD3_DATA2 0x17059
+-                                                      MX6Q_PAD_SD3_DAT3__SD3_DATA3 0x17059
+-                                                      MX6Q_PAD_SD3_DAT4__SD3_DATA4 0x17059
+-                                                      MX6Q_PAD_SD3_DAT5__SD3_DATA5 0x17059
+-                                                      MX6Q_PAD_SD3_DAT6__SD3_DATA6 0x17059
+-                                                      MX6Q_PAD_SD3_DAT7__SD3_DATA7 0x17059
+-                                              >;
+-                                      };
+-
+-                                      pinctrl_usdhc3_2: usdhc3grp-2 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_SD3_CMD__SD3_CMD    0x17059
+-                                                      MX6Q_PAD_SD3_CLK__SD3_CLK    0x10059
+-                                                      MX6Q_PAD_SD3_DAT0__SD3_DATA0 0x17059
+-                                                      MX6Q_PAD_SD3_DAT1__SD3_DATA1 0x17059
+-                                                      MX6Q_PAD_SD3_DAT2__SD3_DATA2 0x17059
+-                                                      MX6Q_PAD_SD3_DAT3__SD3_DATA3 0x17059
+-                                              >;
+-                                      };
+-                              };
+-
+-                              usdhc4 {
+-                                      pinctrl_usdhc4_1: usdhc4grp-1 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_SD4_CMD__SD4_CMD    0x17059
+-                                                      MX6Q_PAD_SD4_CLK__SD4_CLK    0x10059
+-                                                      MX6Q_PAD_SD4_DAT0__SD4_DATA0 0x17059
+-                                                      MX6Q_PAD_SD4_DAT1__SD4_DATA1 0x17059
+-                                                      MX6Q_PAD_SD4_DAT2__SD4_DATA2 0x17059
+-                                                      MX6Q_PAD_SD4_DAT3__SD4_DATA3 0x17059
+-                                                      MX6Q_PAD_SD4_DAT4__SD4_DATA4 0x17059
+-                                                      MX6Q_PAD_SD4_DAT5__SD4_DATA5 0x17059
+-                                                      MX6Q_PAD_SD4_DAT6__SD4_DATA6 0x17059
+-                                                      MX6Q_PAD_SD4_DAT7__SD4_DATA7 0x17059
+-                                              >;
+-                                      };
+-
+-                                      pinctrl_usdhc4_2: usdhc4grp-2 {
+-                                              fsl,pins = <
+-                                                      MX6Q_PAD_SD4_CMD__SD4_CMD    0x17059
+-                                                      MX6Q_PAD_SD4_CLK__SD4_CLK    0x10059
+-                                                      MX6Q_PAD_SD4_DAT0__SD4_DATA0 0x17059
+-                                                      MX6Q_PAD_SD4_DAT1__SD4_DATA1 0x17059
+-                                                      MX6Q_PAD_SD4_DAT2__SD4_DATA2 0x17059
+-                                                      MX6Q_PAD_SD4_DAT3__SD4_DATA3 0x17059
++                              ipu2 {
++                                      pinctrl_ipu2_1: ipu2grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK 0x10
++                                                      MX6QDL_PAD_DI0_PIN15__IPU2_DI0_PIN15       0x10
++                                                      MX6QDL_PAD_DI0_PIN2__IPU2_DI0_PIN02        0x10
++                                                      MX6QDL_PAD_DI0_PIN3__IPU2_DI0_PIN03        0x10
++                                                      MX6QDL_PAD_DI0_PIN4__IPU2_DI0_PIN04        0x80000000
++                                                      MX6QDL_PAD_DISP0_DAT0__IPU2_DISP0_DATA00   0x10
++                                                      MX6QDL_PAD_DISP0_DAT1__IPU2_DISP0_DATA01   0x10
++                                                      MX6QDL_PAD_DISP0_DAT2__IPU2_DISP0_DATA02   0x10
++                                                      MX6QDL_PAD_DISP0_DAT3__IPU2_DISP0_DATA03   0x10
++                                                      MX6QDL_PAD_DISP0_DAT4__IPU2_DISP0_DATA04   0x10
++                                                      MX6QDL_PAD_DISP0_DAT5__IPU2_DISP0_DATA05   0x10
++                                                      MX6QDL_PAD_DISP0_DAT6__IPU2_DISP0_DATA06   0x10
++                                                      MX6QDL_PAD_DISP0_DAT7__IPU2_DISP0_DATA07   0x10
++                                                      MX6QDL_PAD_DISP0_DAT8__IPU2_DISP0_DATA08   0x10
++                                                      MX6QDL_PAD_DISP0_DAT9__IPU2_DISP0_DATA09   0x10
++                                                      MX6QDL_PAD_DISP0_DAT10__IPU2_DISP0_DATA10  0x10
++                                                      MX6QDL_PAD_DISP0_DAT11__IPU2_DISP0_DATA11  0x10
++                                                      MX6QDL_PAD_DISP0_DAT12__IPU2_DISP0_DATA12  0x10
++                                                      MX6QDL_PAD_DISP0_DAT13__IPU2_DISP0_DATA13  0x10
++                                                      MX6QDL_PAD_DISP0_DAT14__IPU2_DISP0_DATA14  0x10
++                                                      MX6QDL_PAD_DISP0_DAT15__IPU2_DISP0_DATA15  0x10
++                                                      MX6QDL_PAD_DISP0_DAT16__IPU2_DISP0_DATA16  0x10
++                                                      MX6QDL_PAD_DISP0_DAT17__IPU2_DISP0_DATA17  0x10
++                                                      MX6QDL_PAD_DISP0_DAT18__IPU2_DISP0_DATA18  0x10
++                                                      MX6QDL_PAD_DISP0_DAT19__IPU2_DISP0_DATA19  0x10
++                                                      MX6QDL_PAD_DISP0_DAT20__IPU2_DISP0_DATA20  0x10
++                                                      MX6QDL_PAD_DISP0_DAT21__IPU2_DISP0_DATA21  0x10
++                                                      MX6QDL_PAD_DISP0_DAT22__IPU2_DISP0_DATA22  0x10
++                                                      MX6QDL_PAD_DISP0_DAT23__IPU2_DISP0_DATA23  0x10
+                                               >;
+                                       };
+                               };
+                       };
+               };
++              sata: sata@02200000 {
++                      compatible = "fsl,imx6q-ahci";
++                      reg = <0x02200000 0x4000>;
++                      interrupts = <0 39 0x04>;
++                      clocks =  <&clks 154>, <&clks 187>, <&clks 105>;
++                      clock-names = "sata", "sata_ref", "ahb";
++                      status = "disabled";
++              };
++
+               ipu2: ipu@02800000 {
+                       #crtc-cells = <1>;
+                       compatible = "fsl,imx6q-ipu";
+diff --git a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
+index 4d237cf..1cbbc51 100644
+--- a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
+@@ -16,6 +16,22 @@
+       };
+ };
++&ecspi1 {
++      fsl,spi-num-chipselects = <1>;
++      cs-gpios = <&gpio3 19 0>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_ecspi1_1 &pinctrl_ecspi1_sabreauto>;
++      status = "disabled"; /* pin conflict with WEIM NOR */
++
++      flash: m25p80@0 {
++              #address-cells = <1>;
++              #size-cells = <1>;
++              compatible = "st,m25p32";
++              spi-max-frequency = <20000000>;
++              reg = <0>;
++      };
++};
++
+ &fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet_2>;
+@@ -23,6 +39,34 @@
+       status = "okay";
+ };
++&gpmi {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_gpmi_nand_1>;
++      status = "okay";
++};
++
++&iomuxc {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_hog>;
++
++      hog {
++              pinctrl_hog: hoggrp {
++                      fsl,pins = <
++                              MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x80000000
++                              MX6QDL_PAD_SD2_DAT2__GPIO1_IO13  0x80000000
++                      >;
++              };
++      };
++
++      ecspi1 {
++              pinctrl_ecspi1_sabreauto: ecspi1-sabreauto {
++                      fsl,pins = <
++                              MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x80000000
++                      >;
++              };
++      };
++};
++
+ &uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4_1>;
+@@ -36,3 +80,22 @@
+       wp-gpios = <&gpio1 13 0>;
+       status = "okay";
+ };
++
++&weim {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_weim_nor_1 &pinctrl_weim_cs0_1>;
++      #address-cells = <2>;
++      #size-cells = <1>;
++      ranges = <0 0 0x08000000 0x08000000>;
++      status = "disabled"; /* pin conflict with SPI NOR */
++
++      nor@0,0 {
++              compatible = "cfi-flash";
++              reg = <0 0 0x02000000>;
++              #address-cells = <1>;
++              #size-cells = <1>;
++              bank-width = <2>;
++              fsl,weim-cs-timing = <0x00620081 0x00000001 0x1c022000
++                              0x0000c000 0x1404a38e 0x00000000>;
++      };
++};
+diff --git a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
+index e21f6a8..39eafc2 100644
+--- a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
+@@ -26,6 +26,22 @@
+                       gpio = <&gpio3 22 0>;
+                       enable-active-high;
+               };
++
++              reg_usb_h1_vbus: usb_h1_vbus {
++                      compatible = "regulator-fixed";
++                      regulator-name = "usb_h1_vbus";
++                      regulator-min-microvolt = <5000000>;
++                      regulator-max-microvolt = <5000000>;
++                      gpio = <&gpio1 29 0>;
++                      enable-active-high;
++              };
++
++              reg_audio: wm8962_supply {
++                      compatible = "regulator-fixed";
++                      regulator-name = "wm8962-supply";
++                      gpio = <&gpio4 10 0>;
++                      enable-active-high;
++              };
+       };
+       gpio-keys {
+@@ -34,15 +50,58 @@
+               volume-up {
+                       label = "Volume Up";
+                       gpios = <&gpio1 4 0>;
++                      gpio-key,wakeup;
+                       linux,code = <115>; /* KEY_VOLUMEUP */
+               };
+               volume-down {
+                       label = "Volume Down";
+                       gpios = <&gpio1 5 0>;
++                      gpio-key,wakeup;
+                       linux,code = <114>; /* KEY_VOLUMEDOWN */
+               };
+       };
++
++      sound {
++              compatible = "fsl,imx6q-sabresd-wm8962",
++                         "fsl,imx-audio-wm8962";
++              model = "wm8962-audio";
++              ssi-controller = <&ssi2>;
++              audio-codec = <&codec>;
++              audio-routing =
++                      "Headphone Jack", "HPOUTL",
++                      "Headphone Jack", "HPOUTR",
++                      "Ext Spk", "SPKOUTL",
++                      "Ext Spk", "SPKOUTR",
++                      "MICBIAS", "AMIC",
++                      "IN3R", "MICBIAS",
++                      "DMIC", "MICBIAS",
++                      "DMICDAT", "DMIC";
++              mux-int-port = <2>;
++              mux-ext-port = <3>;
++      };
++};
++
++&audmux {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_audmux_2>;
++      status = "okay";
++};
++
++&ecspi1 {
++      fsl,spi-num-chipselects = <1>;
++      cs-gpios = <&gpio4 9 0>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_ecspi1_2>;
++      status = "okay";
++
++      flash: m25p80@0 {
++              #address-cells = <1>;
++              #size-cells = <1>;
++              compatible = "st,m25p32";
++              spi-max-frequency = <20000000>;
++              reg = <0>;
++      };
+ };
+ &fec {
+@@ -52,6 +111,102 @@
+       status = "okay";
+ };
++&i2c1 {
++      clock-frequency = <100000>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_i2c1_2>;
++      status = "okay";
++
++      codec: wm8962@1a {
++              compatible = "wlf,wm8962";
++              reg = <0x1a>;
++              clocks = <&clks 201>;
++              DCVDD-supply = <&reg_audio>;
++              DBVDD-supply = <&reg_audio>;
++              AVDD-supply = <&reg_audio>;
++              CPVDD-supply = <&reg_audio>;
++              MICVDD-supply = <&reg_audio>;
++              PLLVDD-supply = <&reg_audio>;
++              SPKVDD1-supply = <&reg_audio>;
++              SPKVDD2-supply = <&reg_audio>;
++              gpio-cfg = <
++                      0x0000 /* 0:Default */
++                      0x0000 /* 1:Default */
++                      0x0013 /* 2:FN_DMICCLK */
++                      0x0000 /* 3:Default */
++                      0x8014 /* 4:FN_DMICCDAT */
++                      0x0000 /* 5:Default */
++              >;
++       };
++};
++
++&i2c3 {
++      clock-frequency = <100000>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_i2c3_2>;
++      status = "okay";
++
++      egalax_ts@04 {
++              compatible = "eeti,egalax_ts";
++              reg = <0x04>;
++              interrupt-parent = <&gpio6>;
++              interrupts = <7 2>;
++              wakeup-gpios = <&gpio6 7 0>;
++      };
++};
++
++&iomuxc {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_hog>;
++
++      hog {
++              pinctrl_hog: hoggrp {
++                      fsl,pins = <
++                              MX6QDL_PAD_GPIO_4__GPIO1_IO04   0x80000000
++                              MX6QDL_PAD_GPIO_5__GPIO1_IO05   0x80000000
++                              MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x80000000
++                              MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x80000000
++                              MX6QDL_PAD_NANDF_D2__GPIO2_IO02 0x80000000
++                              MX6QDL_PAD_NANDF_D3__GPIO2_IO03 0x80000000
++                              MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
++                              MX6QDL_PAD_NANDF_CLE__GPIO6_IO07 0x80000000
++                              MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000
++                              MX6QDL_PAD_EIM_D22__GPIO3_IO22  0x80000000
++                      >;
++              };
++      };
++};
++
++&ldb {
++      status = "okay";
++
++      lvds-channel@1 {
++              fsl,data-mapping = "spwg";
++              fsl,data-width = <18>;
++              status = "okay";
++
++              display-timings {
++                      native-mode = <&timing0>;
++                      timing0: hsd100pxn1 {
++                              clock-frequency = <65000000>;
++                              hactive = <1024>;
++                              vactive = <768>;
++                              hback-porch = <220>;
++                              hfront-porch = <40>;
++                              vback-porch = <21>;
++                              vfront-porch = <7>;
++                              hsync-len = <60>;
++                              vsync-len = <10>;
++                      };
++              };
++      };
++};
++
++&ssi2 {
++      fsl,mode = "i2s-slave";
++      status = "okay";
++};
++
+ &uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_1>;
+@@ -59,6 +214,7 @@
+ };
+ &usbh1 {
++      vbus-supply = <&reg_usb_h1_vbus>;
+       status = "okay";
+ };
+diff --git a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+new file mode 100644
+index 0000000..a55113e
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+@@ -0,0 +1,137 @@
++/*
++ * Copyright 2013 Freescale Semiconductor, Inc.
++ *
++ * Author: Fabio Estevam <fabio.estevam@freescale.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.
++ *
++ */
++
++/ {
++      regulators {
++              compatible = "simple-bus";
++
++              reg_2p5v: 2p5v {
++                      compatible = "regulator-fixed";
++                      regulator-name = "2P5V";
++                      regulator-min-microvolt = <2500000>;
++                      regulator-max-microvolt = <2500000>;
++                      regulator-always-on;
++              };
++
++              reg_3p3v: 3p3v {
++                      compatible = "regulator-fixed";
++                      regulator-name = "3P3V";
++                      regulator-min-microvolt = <3300000>;
++                      regulator-max-microvolt = <3300000>;
++                      regulator-always-on;
++              };
++      };
++
++      sound {
++              compatible = "fsl,imx6-wandboard-sgtl5000",
++                           "fsl,imx-audio-sgtl5000";
++              model = "imx6-wandboard-sgtl5000";
++              ssi-controller = <&ssi1>;
++              audio-codec = <&codec>;
++              audio-routing =
++                      "MIC_IN", "Mic Jack",
++                      "Mic Jack", "Mic Bias",
++                      "Headphone Jack", "HP_OUT";
++              mux-int-port = <1>;
++              mux-ext-port = <3>;
++      };
++};
++
++&audmux {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_audmux_2>;
++      status = "okay";
++};
++
++&i2c2 {
++      clock-frequency = <100000>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_i2c2_2>;
++      status = "okay";
++
++      codec: sgtl5000@0a {
++              compatible = "fsl,sgtl5000";
++              reg = <0x0a>;
++              clocks = <&clks 201>;
++              VDDA-supply = <&reg_2p5v>;
++              VDDIO-supply = <&reg_3p3v>;
++      };
++};
++
++&iomuxc {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_hog>;
++
++      hog {
++              pinctrl_hog: hoggrp {
++                      fsl,pins = <
++                              MX6QDL_PAD_GPIO_0__CCM_CLKO1     0x130b0
++                              MX6QDL_PAD_GPIO_2__GPIO1_IO02    0x80000000
++                              MX6QDL_PAD_EIM_DA9__GPIO3_IO09   0x80000000
++                              MX6QDL_PAD_EIM_EB1__GPIO2_IO29   0x80000000 /* WL_REF_ON */
++                              MX6QDL_PAD_EIM_A25__GPIO5_IO02   0x80000000 /* WL_RST_N */
++                              MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 /* WL_REG_ON */
++                              MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 /* WL_HOST_WAKE */
++                              MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 /* WL_WAKE */
++                      >;
++              };
++      };
++};
++
++&fec {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_enet_1>;
++      phy-mode = "rgmii";
++      status = "okay";
++};
++
++&ssi1 {
++      fsl,mode = "i2s-slave";
++      status = "okay";
++};
++
++&uart1 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_uart1_1>;
++      status = "okay";
++};
++
++&uart3 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_uart3_2>;
++      fsl,uart-has-rtscts;
++      status = "okay";
++};
++
++&usbh1 {
++      status = "okay";
++};
++
++&usdhc1 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_usdhc1_2>;
++      cd-gpios = <&gpio1 2 0>;
++      status = "okay";
++};
++
++&usdhc2 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_usdhc2_2>;
++      non-removable;
++      status = "okay";
++};
++
++&usdhc3 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_usdhc3_2>;
++      cd-gpios = <&gpio3 9 0>;
++      status = "okay";
++};
+diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
+index 9e8296e..ccd55c2 100644
+--- a/arch/arm/boot/dts/imx6qdl.dtsi
++++ b/arch/arm/boot/dts/imx6qdl.dtsi
+@@ -14,11 +14,6 @@
+ / {
+       aliases {
+-              serial0 = &uart1;
+-              serial1 = &uart2;
+-              serial2 = &uart3;
+-              serial3 = &uart4;
+-              serial4 = &uart5;
+               gpio0 = &gpio1;
+               gpio1 = &gpio2;
+               gpio2 = &gpio3;
+@@ -26,6 +21,18 @@
+               gpio4 = &gpio5;
+               gpio5 = &gpio6;
+               gpio6 = &gpio7;
++              i2c0 = &i2c1;
++              i2c1 = &i2c2;
++              i2c2 = &i2c3;
++              serial0 = &uart1;
++              serial1 = &uart2;
++              serial2 = &uart3;
++              serial3 = &uart4;
++              serial4 = &uart5;
++              spi0 = &ecspi1;
++              spi1 = &ecspi2;
++              spi2 = &ecspi3;
++              spi3 = &ecspi4;
+       };
+       intc: interrupt-controller@00a01000 {
+@@ -81,15 +88,14 @@
+                       #size-cells = <1>;
+                       reg = <0x00112000 0x2000>, <0x00114000 0x2000>;
+                       reg-names = "gpmi-nand", "bch";
+-                      interrupts = <0 13 0x04>, <0 15 0x04>;
+-                      interrupt-names = "gpmi-dma", "bch";
++                      interrupts = <0 15 0x04>;
++                      interrupt-names = "bch";
+                       clocks = <&clks 152>, <&clks 153>, <&clks 151>,
+                                <&clks 150>, <&clks 149>;
+                       clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch",
+                                     "gpmi_bch_apb", "per1_bch";
+                       dmas = <&dma_apbh 0>;
+                       dma-names = "rx-tx";
+-                      fsl,gpmi-dma-channel = <0>;
+                       status = "disabled";
+               };
+@@ -106,6 +112,8 @@
+                       interrupts = <0 92 0x04>;
+                       cache-unified;
+                       cache-level = <2>;
++                      arm,tag-latency = <4 2 3>;
++                      arm,data-latency = <4 2 3>;
+               };
+               pmu {
+@@ -182,6 +190,8 @@
+                                       interrupts = <0 26 0x04>;
+                                       clocks = <&clks 160>, <&clks 161>;
+                                       clock-names = "ipg", "per";
++                                      dmas = <&sdma 25 4 0>, <&sdma 26 4 0>;
++                                      dma-names = "rx", "tx";
+                                       status = "disabled";
+                               };
+@@ -195,6 +205,9 @@
+                                       reg = <0x02028000 0x4000>;
+                                       interrupts = <0 46 0x04>;
+                                       clocks = <&clks 178>;
++                                      dmas = <&sdma 37 1 0>,
++                                             <&sdma 38 1 0>;
++                                      dma-names = "rx", "tx";
+                                       fsl,fifo-depth = <15>;
+                                       fsl,ssi-dma-events = <38 37>;
+                                       status = "disabled";
+@@ -205,6 +218,9 @@
+                                       reg = <0x0202c000 0x4000>;
+                                       interrupts = <0 47 0x04>;
+                                       clocks = <&clks 179>;
++                                      dmas = <&sdma 41 1 0>,
++                                             <&sdma 42 1 0>;
++                                      dma-names = "rx", "tx";
+                                       fsl,fifo-depth = <15>;
+                                       fsl,ssi-dma-events = <42 41>;
+                                       status = "disabled";
+@@ -215,6 +231,9 @@
+                                       reg = <0x02030000 0x4000>;
+                                       interrupts = <0 48 0x04>;
+                                       clocks = <&clks 180>;
++                                      dmas = <&sdma 45 1 0>,
++                                             <&sdma 46 1 0>;
++                                      dma-names = "rx", "tx";
+                                       fsl,fifo-depth = <15>;
+                                       fsl,ssi-dma-events = <46 45>;
+                                       status = "disabled";
+@@ -276,17 +295,23 @@
+                       };
+                       can1: flexcan@02090000 {
++                              compatible = "fsl,imx6q-flexcan";
+                               reg = <0x02090000 0x4000>;
+                               interrupts = <0 110 0x04>;
++                              clocks = <&clks 108>, <&clks 109>;
++                              clock-names = "ipg", "per";
+                       };
+                       can2: flexcan@02094000 {
++                              compatible = "fsl,imx6q-flexcan";
+                               reg = <0x02094000 0x4000>;
+                               interrupts = <0 111 0x04>;
++                              clocks = <&clks 110>, <&clks 111>;
++                              clock-names = "ipg", "per";
+                       };
+                       gpt: gpt@02098000 {
+-                              compatible = "fsl,imx6q-gpt";
++                              compatible = "fsl,imx6q-gpt", "fsl,imx31-gpt";
+                               reg = <0x02098000 0x4000>;
+                               interrupts = <0 55 0x04>;
+                               clocks = <&clks 119>, <&clks 120>;
+@@ -489,6 +514,13 @@
+                               };
+                       };
++                      tempmon: tempmon {
++                              compatible = "fsl,imx6q-tempmon";
++                              interrupts = <0 49 0x04>;
++                              fsl,tempmon = <&anatop>;
++                              fsl,tempmon-data = <&ocotp>;
++                      };
++
+                       usbphy1: usbphy@020c9000 {
+                               compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy";
+                               reg = <0x020c9000 0x1000>;
+@@ -544,6 +576,713 @@
+                               reg = <0x020e0000 0x38>;
+                       };
++                      iomuxc: iomuxc@020e0000 {
++                              compatible = "fsl,imx6dl-iomuxc", "fsl,imx6q-iomuxc";
++                              reg = <0x020e0000 0x4000>;
++
++                              audmux {
++                                      pinctrl_audmux_1: audmux-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD2_DAT0__AUD4_RXD  0x80000000
++                                                      MX6QDL_PAD_SD2_DAT3__AUD4_TXC  0x80000000
++                                                      MX6QDL_PAD_SD2_DAT2__AUD4_TXD  0x80000000
++                                                      MX6QDL_PAD_SD2_DAT1__AUD4_TXFS 0x80000000
++                                              >;
++                                      };
++
++                                      pinctrl_audmux_2: audmux-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_CSI0_DAT7__AUD3_RXD  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT4__AUD3_TXC  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT5__AUD3_TXD  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x80000000
++                                              >;
++                                      };
++
++                                      pinctrl_audmux_3: audmux-3 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_DISP0_DAT16__AUD5_TXC  0x80000000
++                                                      MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS 0x80000000
++                                                      MX6QDL_PAD_DISP0_DAT19__AUD5_RXD  0x80000000
++                                              >;
++                                      };
++                              };
++
++                              ecspi1 {
++                                      pinctrl_ecspi1_1: ecspi1grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
++                                                      MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
++                                                      MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
++                                              >;
++                                      };
++
++                                      pinctrl_ecspi1_2: ecspi1grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_KEY_COL1__ECSPI1_MISO 0x100b1
++                                                      MX6QDL_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1
++                                                      MX6QDL_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1
++                                              >;
++                                      };
++                              };
++
++                              ecspi3 {
++                                      pinctrl_ecspi3_1: ecspi3grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_DISP0_DAT2__ECSPI3_MISO 0x100b1
++                                                      MX6QDL_PAD_DISP0_DAT1__ECSPI3_MOSI 0x100b1
++                                                      MX6QDL_PAD_DISP0_DAT0__ECSPI3_SCLK 0x100b1
++                                              >;
++                                      };
++                              };
++
++                              enet {
++                                      pinctrl_enet_1: enetgrp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_ENET_MDIO__ENET_MDIO       0x1b0b0
++                                                      MX6QDL_PAD_ENET_MDC__ENET_MDC         0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
++                                                      MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
++                                                      MX6QDL_PAD_GPIO_16__ENET_REF_CLK      0x4001b0a8
++                                              >;
++                                      };
++
++                                      pinctrl_enet_2: enetgrp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_KEY_COL1__ENET_MDIO        0x1b0b0
++                                                      MX6QDL_PAD_KEY_COL2__ENET_MDC         0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
++                                                      MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
++                                              >;
++                                      };
++
++                                      pinctrl_enet_3: enetgrp-3 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_ENET_MDIO__ENET_MDIO       0x1b0b0
++                                                      MX6QDL_PAD_ENET_MDC__ENET_MDC         0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TXC__RGMII_TXC       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD0__RGMII_TD0       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD1__RGMII_TD1       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD2__RGMII_TD2       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TD3__RGMII_TD3       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
++                                                      MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RXC__RGMII_RXC       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD0__RGMII_RD0       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD1__RGMII_RD1       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD2__RGMII_RD2       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RD3__RGMII_RD3       0x1b0b0
++                                                      MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
++                                                      MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN     0x1b0b0
++                                              >;
++                                      };
++                              };
++
++                              esai {
++                                      pinctrl_esai_1: esaigrp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_ENET_RXD0__ESAI_TX_HF_CLK 0x1b030
++                                                      MX6QDL_PAD_ENET_CRS_DV__ESAI_TX_CLK  0x1b030
++                                                      MX6QDL_PAD_ENET_RXD1__ESAI_TX_FS     0x1b030
++                                                      MX6QDL_PAD_ENET_TX_EN__ESAI_TX3_RX2  0x1b030
++                                                      MX6QDL_PAD_ENET_TXD1__ESAI_TX2_RX3   0x1b030
++                                                      MX6QDL_PAD_ENET_TXD0__ESAI_TX4_RX1   0x1b030
++                                                      MX6QDL_PAD_ENET_MDC__ESAI_TX5_RX0    0x1b030
++                                                      MX6QDL_PAD_NANDF_CS2__ESAI_TX0       0x1b030
++                                                      MX6QDL_PAD_NANDF_CS3__ESAI_TX1       0x1b030
++                                              >;
++                                      };
++
++                                      pinctrl_esai_2: esaigrp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_ENET_CRS_DV__ESAI_TX_CLK 0x1b030
++                                                      MX6QDL_PAD_ENET_RXD1__ESAI_TX_FS    0x1b030
++                                                      MX6QDL_PAD_ENET_TX_EN__ESAI_TX3_RX2 0x1b030
++                                                      MX6QDL_PAD_GPIO_5__ESAI_TX2_RX3     0x1b030
++                                                      MX6QDL_PAD_ENET_TXD0__ESAI_TX4_RX1  0x1b030
++                                                      MX6QDL_PAD_ENET_MDC__ESAI_TX5_RX0   0x1b030
++                                                      MX6QDL_PAD_GPIO_17__ESAI_TX0        0x1b030
++                                                      MX6QDL_PAD_NANDF_CS3__ESAI_TX1      0x1b030
++                                                      MX6QDL_PAD_ENET_MDIO__ESAI_RX_CLK   0x1b030
++                                                      MX6QDL_PAD_GPIO_9__ESAI_RX_FS       0x1b030
++                                              >;
++                                      };
++                              };
++
++                              flexcan1 {
++                                      pinctrl_flexcan1_1: flexcan1grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX 0x80000000
++                                                      MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX 0x80000000
++                                              >;
++                                      };
++
++                                      pinctrl_flexcan1_2: flexcan1grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_GPIO_7__FLEXCAN1_TX   0x80000000
++                                                      MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX 0x80000000
++                                              >;
++                                      };
++                              };
++
++                              flexcan2 {
++                                      pinctrl_flexcan2_1: flexcan2grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX 0x80000000
++                                                      MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX 0x80000000
++                                              >;
++                                      };
++                              };
++
++                              gpmi-nand {
++                                      pinctrl_gpmi_nand_1: gpmi-nand-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_NANDF_CLE__NAND_CLE     0xb0b1
++                                                      MX6QDL_PAD_NANDF_ALE__NAND_ALE     0xb0b1
++                                                      MX6QDL_PAD_NANDF_WP_B__NAND_WP_B   0xb0b1
++                                                      MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
++                                                      MX6QDL_PAD_NANDF_CS0__NAND_CE0_B   0xb0b1
++                                                      MX6QDL_PAD_NANDF_CS1__NAND_CE1_B   0xb0b1
++                                                      MX6QDL_PAD_SD4_CMD__NAND_RE_B      0xb0b1
++                                                      MX6QDL_PAD_SD4_CLK__NAND_WE_B      0xb0b1
++                                                      MX6QDL_PAD_NANDF_D0__NAND_DATA00   0xb0b1
++                                                      MX6QDL_PAD_NANDF_D1__NAND_DATA01   0xb0b1
++                                                      MX6QDL_PAD_NANDF_D2__NAND_DATA02   0xb0b1
++                                                      MX6QDL_PAD_NANDF_D3__NAND_DATA03   0xb0b1
++                                                      MX6QDL_PAD_NANDF_D4__NAND_DATA04   0xb0b1
++                                                      MX6QDL_PAD_NANDF_D5__NAND_DATA05   0xb0b1
++                                                      MX6QDL_PAD_NANDF_D6__NAND_DATA06   0xb0b1
++                                                      MX6QDL_PAD_NANDF_D7__NAND_DATA07   0xb0b1
++                                                      MX6QDL_PAD_SD4_DAT0__NAND_DQS      0x00b1
++                                              >;
++                                      };
++                              };
++
++                              hdmi_hdcp {
++                                      pinctrl_hdmi_hdcp_1: hdmihdcpgrp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_KEY_COL3__HDMI_TX_DDC_SCL 0x4001b8b1
++                                                      MX6QDL_PAD_KEY_ROW3__HDMI_TX_DDC_SDA 0x4001b8b1
++                                              >;
++                                      };
++
++                                      pinctrl_hdmi_hdcp_2: hdmihdcpgrp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_EB2__HDMI_TX_DDC_SCL 0x4001b8b1
++                                                      MX6QDL_PAD_EIM_D16__HDMI_TX_DDC_SDA 0x4001b8b1
++                                              >;
++                                      };
++
++                                      pinctrl_hdmi_hdcp_3: hdmihdcpgrp-3 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_EB2__HDMI_TX_DDC_SCL  0x4001b8b1
++                                                      MX6QDL_PAD_KEY_ROW3__HDMI_TX_DDC_SDA 0x4001b8b1
++                                              >;
++                                      };
++                              };
++
++                              hdmi_cec {
++                                      pinctrl_hdmi_cec_1: hdmicecgrp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_A25__HDMI_TX_CEC_LINE 0x1f8b0
++                                              >;
++                                      };
++
++                                      pinctrl_hdmi_cec_2: hdmicecgrp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE 0x1f8b0
++                                              >;
++                                      };
++                              };
++
++                              i2c1 {
++                                      pinctrl_i2c1_1: i2c1grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
++                                                      MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
++                                              >;
++                                      };
++
++                                      pinctrl_i2c1_2: i2c1grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
++                                                      MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
++                                              >;
++                                      };
++                              };
++
++                              i2c2 {
++                                      pinctrl_i2c2_1: i2c2grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_EB2__I2C2_SCL 0x4001b8b1
++                                                      MX6QDL_PAD_EIM_D16__I2C2_SDA 0x4001b8b1
++                                              >;
++                                      };
++
++                                      pinctrl_i2c2_2: i2c2grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
++                                                      MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
++                                              >;
++                                      };
++
++                                      pinctrl_i2c2_3: i2c2grp-3 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_EB2__I2C2_SCL  0x4001b8b1
++                                                      MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
++                                              >;
++                                      };
++                              };
++
++                              i2c3 {
++                                      pinctrl_i2c3_1: i2c3grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
++                                                      MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
++                                              >;
++                                      };
++
++                                      pinctrl_i2c3_2: i2c3grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1
++                                                      MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
++                                              >;
++                                      };
++
++                                      pinctrl_i2c3_3: i2c3grp-3 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
++                                                      MX6QDL_PAD_GPIO_16__I2C3_SDA 0x4001b8b1
++                                              >;
++                                      };
++
++                                      pinctrl_i2c3_4: i2c3grp-4 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_GPIO_3__I2C3_SCL  0x4001b8b1
++                                                      MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
++                                              >;
++                                      };
++                              };
++
++                              ipu1 {
++                                      pinctrl_ipu1_1: ipu1grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10
++                                                      MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15       0x10
++                                                      MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02        0x10
++                                                      MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03        0x10
++                                                      MX6QDL_PAD_DI0_PIN4__IPU1_DI0_PIN04        0x80000000
++                                                      MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00   0x10
++                                                      MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01   0x10
++                                                      MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02   0x10
++                                                      MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03   0x10
++                                                      MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04   0x10
++                                                      MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05   0x10
++                                                      MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06   0x10
++                                                      MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07   0x10
++                                                      MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08   0x10
++                                                      MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09   0x10
++                                                      MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10  0x10
++                                                      MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11  0x10
++                                                      MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12  0x10
++                                                      MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13  0x10
++                                                      MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14  0x10
++                                                      MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15  0x10
++                                                      MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16  0x10
++                                                      MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17  0x10
++                                                      MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18  0x10
++                                                      MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19  0x10
++                                                      MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20  0x10
++                                                      MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21  0x10
++                                                      MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22  0x10
++                                                      MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23  0x10
++                                              >;
++                                      };
++
++                                      pinctrl_ipu1_2: ipu1grp-2 { /* parallel camera */
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12    0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13    0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14    0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15    0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16    0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17    0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18    0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19    0x80000000
++                                                      MX6QDL_PAD_CSI0_DATA_EN__IPU1_CSI0_DATA_EN 0x80000000
++                                                      MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK   0x80000000
++                                                      MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC      0x80000000
++                                                      MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC     0x80000000
++                                              >;
++                                      };
++
++                                      pinctrl_ipu1_3: ipu1grp-3 { /* parallel port 16-bit */
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_CSI0_DAT4__IPU1_CSI0_DATA04   0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT5__IPU1_CSI0_DATA05   0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT6__IPU1_CSI0_DATA06   0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT7__IPU1_CSI0_DATA07   0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT8__IPU1_CSI0_DATA08   0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT9__IPU1_CSI0_DATA09   0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT10__IPU1_CSI0_DATA10  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT11__IPU1_CSI0_DATA11  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18  0x80000000
++                                                      MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19  0x80000000
++                                                      MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK 0x80000000
++                                                      MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC    0x80000000
++                                                      MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC   0x80000000
++                                              >;
++                                      };
++                              };
++
++                              mlb {
++                                      pinctrl_mlb_1: mlbgrp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_GPIO_3__MLB_CLK  0x71
++                                                      MX6QDL_PAD_GPIO_6__MLB_SIG  0x71
++                                                      MX6QDL_PAD_GPIO_2__MLB_DATA 0x71
++                                              >;
++                                      };
++
++                                      pinctrl_mlb_2: mlbgrp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_ENET_TXD1__MLB_CLK 0x71
++                                                      MX6QDL_PAD_GPIO_6__MLB_SIG    0x71
++                                                      MX6QDL_PAD_GPIO_2__MLB_DATA   0x71
++                                              >;
++                                      };
++                              };
++
++                              pwm0 {
++                                      pinctrl_pwm0_1: pwm0grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD1_DAT3__PWM1_OUT 0x1b0b1
++                                              >;
++                                      };
++                              };
++
++                              pwm3 {
++                                      pinctrl_pwm3_1: pwm3grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1
++                                              >;
++                                      };
++                              };
++
++                              spdif {
++                                      pinctrl_spdif_1: spdifgrp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_KEY_COL3__SPDIF_IN 0x1b0b0
++                                              >;
++                                      };
++
++                                      pinctrl_spdif_2: spdifgrp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_GPIO_16__SPDIF_IN  0x1b0b0
++                                                      MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x1b0b0
++                                              >;
++                                      };
++                              };
++
++                              uart1 {
++                                      pinctrl_uart1_1: uart1grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0b1
++                                                      MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0b1
++                                              >;
++                                      };
++                              };
++
++                              uart2 {
++                                      pinctrl_uart2_1: uart2grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
++                                                      MX6QDL_PAD_EIM_D27__UART2_RX_DATA 0x1b0b1
++                                              >;
++                                      };
++
++                                      pinctrl_uart2_2: uart2grp-2 { /* DTE mode */
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_D26__UART2_RX_DATA   0x1b0b1
++                                                      MX6QDL_PAD_EIM_D27__UART2_TX_DATA   0x1b0b1
++                                                      MX6QDL_PAD_EIM_D28__UART2_DTE_CTS_B 0x1b0b1
++                                                      MX6QDL_PAD_EIM_D29__UART2_DTE_RTS_B 0x1b0b1
++                                              >;
++                                      };
++                              };
++
++                              uart3 {
++                                      pinctrl_uart3_1: uart3grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD4_CLK__UART3_RX_DATA 0x1b0b1
++                                                      MX6QDL_PAD_SD4_CMD__UART3_TX_DATA 0x1b0b1
++                                                      MX6QDL_PAD_EIM_D30__UART3_CTS_B   0x1b0b1
++                                                      MX6QDL_PAD_EIM_EB3__UART3_RTS_B   0x1b0b1
++                                              >;
++                                      };
++
++                                      pinctrl_uart3_2: uart3grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
++                                                      MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
++                                                      MX6QDL_PAD_EIM_D23__UART3_CTS_B   0x1b0b1
++                                                      MX6QDL_PAD_EIM_EB3__UART3_RTS_B   0x1b0b1
++                                              >;
++                                      };
++                              };
++
++                              uart4 {
++                                      pinctrl_uart4_1: uart4grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
++                                                      MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
++                                              >;
++                                      };
++                              };
++
++                              usbotg {
++                                      pinctrl_usbotg_1: usbotggrp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
++                                              >;
++                                      };
++
++                                      pinctrl_usbotg_2: usbotggrp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
++                                              >;
++                                      };
++                              };
++
++                              usbh2 {
++                                      pinctrl_usbh2_1: usbh2grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_RGMII_TXC__USB_H2_DATA      0x40013030
++                                                      MX6QDL_PAD_RGMII_TX_CTL__USB_H2_STROBE 0x40013030
++                                              >;
++                                      };
++
++                                      pinctrl_usbh2_2: usbh2grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_RGMII_TX_CTL__USB_H2_STROBE 0x40017030
++                                              >;
++                                      };
++                              };
++
++                              usbh3 {
++                                      pinctrl_usbh3_1: usbh3grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_RGMII_RX_CTL__USB_H3_DATA 0x40013030
++                                                      MX6QDL_PAD_RGMII_RXC__USB_H3_STROBE  0x40013030
++                                              >;
++                                      };
++
++                                      pinctrl_usbh3_2: usbh3grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_RGMII_RXC__USB_H3_STROBE 0x40017030
++                                              >;
++                                      };
++                              };
++
++                              usdhc1 {
++                                      pinctrl_usdhc1_1: usdhc1grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
++                                                      MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
++                                                      MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
++                                                      MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
++                                                      MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
++                                                      MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
++                                                      MX6QDL_PAD_NANDF_D0__SD1_DATA4 0x17059
++                                                      MX6QDL_PAD_NANDF_D1__SD1_DATA5 0x17059
++                                                      MX6QDL_PAD_NANDF_D2__SD1_DATA6 0x17059
++                                                      MX6QDL_PAD_NANDF_D3__SD1_DATA7 0x17059
++                                              >;
++                                      };
++
++                                      pinctrl_usdhc1_2: usdhc1grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
++                                                      MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
++                                                      MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
++                                                      MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
++                                                      MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
++                                                      MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
++                                              >;
++                                      };
++                              };
++
++                              usdhc2 {
++                                      pinctrl_usdhc2_1: usdhc2grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD2_CMD__SD2_CMD    0x17059
++                                                      MX6QDL_PAD_SD2_CLK__SD2_CLK    0x10059
++                                                      MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
++                                                      MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
++                                                      MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
++                                                      MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059
++                                                      MX6QDL_PAD_NANDF_D4__SD2_DATA4 0x17059
++                                                      MX6QDL_PAD_NANDF_D5__SD2_DATA5 0x17059
++                                                      MX6QDL_PAD_NANDF_D6__SD2_DATA6 0x17059
++                                                      MX6QDL_PAD_NANDF_D7__SD2_DATA7 0x17059
++                                              >;
++                                      };
++
++                                      pinctrl_usdhc2_2: usdhc2grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD2_CMD__SD2_CMD    0x17059
++                                                      MX6QDL_PAD_SD2_CLK__SD2_CLK    0x10059
++                                                      MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
++                                                      MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
++                                                      MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
++                                                      MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059
++                                              >;
++                                      };
++                              };
++
++                              usdhc3 {
++                                      pinctrl_usdhc3_1: usdhc3grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17059
++                                                      MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10059
++                                                      MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
++                                                      MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
++                                                      MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
++                                                      MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
++                                                      MX6QDL_PAD_SD3_DAT4__SD3_DATA4 0x17059
++                                                      MX6QDL_PAD_SD3_DAT5__SD3_DATA5 0x17059
++                                                      MX6QDL_PAD_SD3_DAT6__SD3_DATA6 0x17059
++                                                      MX6QDL_PAD_SD3_DAT7__SD3_DATA7 0x17059
++                                              >;
++                                      };
++
++                                      pinctrl_usdhc3_2: usdhc3grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17059
++                                                      MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10059
++                                                      MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
++                                                      MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
++                                                      MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
++                                                      MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
++                                              >;
++                                      };
++                              };
++
++                              usdhc4 {
++                                      pinctrl_usdhc4_1: usdhc4grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17059
++                                                      MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10059
++                                                      MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17059
++                                                      MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17059
++                                                      MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17059
++                                                      MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17059
++                                                      MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17059
++                                                      MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17059
++                                                      MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17059
++                                                      MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17059
++                                              >;
++                                      };
++
++                                      pinctrl_usdhc4_2: usdhc4grp-2 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17059
++                                                      MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10059
++                                                      MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17059
++                                                      MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17059
++                                                      MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17059
++                                                      MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17059
++                                              >;
++                                      };
++                              };
++
++                              weim {
++                                      pinctrl_weim_cs0_1: weim_cs0grp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_CS0__EIM_CS0_B   0xb0b1
++                                              >;
++                                      };
++
++                                      pinctrl_weim_nor_1: weim_norgrp-1 {
++                                              fsl,pins = <
++                                                      MX6QDL_PAD_EIM_OE__EIM_OE_B     0xb0b1
++                                                      MX6QDL_PAD_EIM_RW__EIM_RW       0xb0b1
++                                                      MX6QDL_PAD_EIM_WAIT__EIM_WAIT_B 0xb060
++                                                      /* data */
++                                                      MX6QDL_PAD_EIM_D16__EIM_DATA16 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D17__EIM_DATA17 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D18__EIM_DATA18 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D19__EIM_DATA19 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D20__EIM_DATA20 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D21__EIM_DATA21 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D22__EIM_DATA22 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D23__EIM_DATA23 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D24__EIM_DATA24 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D25__EIM_DATA25 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D26__EIM_DATA26 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D27__EIM_DATA27 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D28__EIM_DATA28 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D29__EIM_DATA29 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D30__EIM_DATA30 0x1b0b0
++                                                      MX6QDL_PAD_EIM_D31__EIM_DATA31 0x1b0b0
++                                                      /* address */
++                                                      MX6QDL_PAD_EIM_A23__EIM_ADDR23 0xb0b1
++                                                      MX6QDL_PAD_EIM_A22__EIM_ADDR22 0xb0b1
++                                                      MX6QDL_PAD_EIM_A21__EIM_ADDR21 0xb0b1
++                                                      MX6QDL_PAD_EIM_A20__EIM_ADDR20 0xb0b1
++                                                      MX6QDL_PAD_EIM_A19__EIM_ADDR19 0xb0b1
++                                                      MX6QDL_PAD_EIM_A18__EIM_ADDR18 0xb0b1
++                                                      MX6QDL_PAD_EIM_A17__EIM_ADDR17 0xb0b1
++                                                      MX6QDL_PAD_EIM_A16__EIM_ADDR16 0xb0b1
++                                                      MX6QDL_PAD_EIM_DA15__EIM_AD15  0xb0b1
++                                                      MX6QDL_PAD_EIM_DA14__EIM_AD14  0xb0b1
++                                                      MX6QDL_PAD_EIM_DA13__EIM_AD13  0xb0b1
++                                                      MX6QDL_PAD_EIM_DA12__EIM_AD12  0xb0b1
++                                                      MX6QDL_PAD_EIM_DA11__EIM_AD11  0xb0b1
++                                                      MX6QDL_PAD_EIM_DA10__EIM_AD10  0xb0b1
++                                                      MX6QDL_PAD_EIM_DA9__EIM_AD09   0xb0b1
++                                                      MX6QDL_PAD_EIM_DA8__EIM_AD08   0xb0b1
++                                                      MX6QDL_PAD_EIM_DA7__EIM_AD07   0xb0b1
++                                                      MX6QDL_PAD_EIM_DA6__EIM_AD06   0xb0b1
++                                                      MX6QDL_PAD_EIM_DA5__EIM_AD05   0xb0b1
++                                                      MX6QDL_PAD_EIM_DA4__EIM_AD04   0xb0b1
++                                                      MX6QDL_PAD_EIM_DA3__EIM_AD03   0xb0b1
++                                                      MX6QDL_PAD_EIM_DA2__EIM_AD02   0xb0b1
++                                                      MX6QDL_PAD_EIM_DA1__EIM_AD01   0xb0b1
++                                                      MX6QDL_PAD_EIM_DA0__EIM_AD00   0xb0b1
++                                              >;
++                                      };
++                              };
++                      };
++
+                       ldb: ldb@020e0008 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+@@ -553,13 +1292,11 @@
+                               lvds-channel@0 {
+                                       reg = <0>;
+-                                      crtcs = <&ipu1 0>;
+                                       status = "disabled";
+                               };
+                               lvds-channel@1 {
+                                       reg = <1>;
+-                                      crtcs = <&ipu1 1>;
+                                       status = "disabled";
+                               };
+                       };
+@@ -580,6 +1317,7 @@
+                               interrupts = <0 2 0x04>;
+                               clocks = <&clks 155>, <&clks 155>;
+                               clock-names = "ipg", "ahb";
++                              #dma-cells = <3>;
+                               fsl,sdma-ram-script-name = "imx/sdma/sdma-imx6q.bin";
+                       };
+               };
+@@ -638,7 +1376,7 @@
+                               status = "disabled";
+                       };
+-                      usbmisc: usbmisc: usbmisc@02184800 {
++                      usbmisc: usbmisc@02184800 {
+                               #index-cells = <1>;
+                               compatible = "fsl,imx6q-usbmisc";
+                               reg = <0x02184800 0x200>;
+@@ -742,21 +1480,18 @@
+                               reg = <0x021b4000 0x4000>;
+                       };
+-                      weim@021b8000 {
++                      weim: weim@021b8000 {
++                              compatible = "fsl,imx6q-weim";
+                               reg = <0x021b8000 0x4000>;
+                               interrupts = <0 14 0x04>;
++                              clocks = <&clks 196>;
+                       };
+-                      ocotp@021bc000 {
+-                              compatible = "fsl,imx6q-ocotp";
++                      ocotp: ocotp@021bc000 {
++                              compatible = "fsl,imx6q-ocotp", "syscon";
+                               reg = <0x021bc000 0x4000>;
+                       };
+-                      ocotp@021c0000 {
+-                              reg = <0x021c0000 0x4000>;
+-                              interrupts = <0 21 0x04>;
+-                      };
+-
+                       tzasc@021d0000 { /* TZASC1 */
+                               reg = <0x021d0000 0x4000>;
+                               interrupts = <0 108 0x04>;
+@@ -792,6 +1527,8 @@
+                               interrupts = <0 27 0x04>;
+                               clocks = <&clks 160>, <&clks 161>;
+                               clock-names = "ipg", "per";
++                              dmas = <&sdma 27 4 0>, <&sdma 28 4 0>;
++                              dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+@@ -801,6 +1538,8 @@
+                               interrupts = <0 28 0x04>;
+                               clocks = <&clks 160>, <&clks 161>;
+                               clock-names = "ipg", "per";
++                              dmas = <&sdma 29 4 0>, <&sdma 30 4 0>;
++                              dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+@@ -810,6 +1549,8 @@
+                               interrupts = <0 29 0x04>;
+                               clocks = <&clks 160>, <&clks 161>;
+                               clock-names = "ipg", "per";
++                              dmas = <&sdma 31 4 0>, <&sdma 32 4 0>;
++                              dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+@@ -819,6 +1560,8 @@
+                               interrupts = <0 30 0x04>;
+                               clocks = <&clks 160>, <&clks 161>;
+                               clock-names = "ipg", "per";
++                              dmas = <&sdma 33 4 0>, <&sdma 34 4 0>;
++                              dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+               };
diff --git a/src/patches/kernel/wandboard/dts/0002-ARM-dts-imx6qdl-wandboard-add-gpio-lines-to-wandboar.patch b/src/patches/kernel/wandboard/dts/0002-ARM-dts-imx6qdl-wandboard-add-gpio-lines-to-wandboar.patch
new file mode 100644 (file)
index 0000000..009db26
--- /dev/null
@@ -0,0 +1,41 @@
+From df41a18b5ac1401c96dcbce99baa50e339494eba Mon Sep 17 00:00:00 2001
+From: Mike Panetta <panetta.mike@gmail.com>
+Date: Tue, 30 Jul 2013 20:33:26 -0400
+Subject: [PATCH 2/5] ARM: dts: imx6qdl-wandboard: add gpio lines to wandboard
+
+Signed-off-by: Mike Panetta <panetta.mike@gmail.com>
+---
+ arch/arm/boot/dts/imx6qdl-wandboard.dtsi | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+index 35f5479..a302e95 100644
+--- a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+@@ -92,6 +92,23 @@
+                       >;
+               };
+       };
++
++      gpio {
++              pinctrl_gpio: gpiogrp {
++                      fsl,pins = <
++                              MX6QDL_PAD_EIM_DA12__GPIO3_IO12   0x80000000 /* GPIO3_12 EDM pin 255 */
++                              MX6QDL_PAD_EIM_DA11__GPIO3_IO11   0x80000000 /* GPIO3_11 EDM pin 256 */
++                              MX6QDL_PAD_EIM_DA10__GPIO3_IO10   0x80000000 /* GPIO3_10 EDM pin 257 */
++                              MX6QDL_PAD_EIM_D27__GPIO3_IO27    0x80000000 /* GPIO3_27 EDM pin 258 */
++                              MX6QDL_PAD_EIM_D26__GPIO3_IO26    0x80000000 /* GPIO3_26 EDM pin 259 */
++                              MX6QDL_PAD_EIM_BCLK__GPIO6_IO31   0x80000000 /* GPIO6_31 EDM pin 260 */
++                              MX6QDL_PAD_EIM_DA8__GPIO3_IO08    0x80000000 /* GPIO3_8  EDM pin 261 */
++                              MX6QDL_PAD_ENET_RX_ER__GPIO1_IO24 0x80000000 /* GPIO1_24 EDM pin 262 */
++                              MX6QDL_PAD_GPIO_19__GPIO4_IO05    0x80000000 /* GPIO4_5  EDM pin 263 */
++                              MX6QDL_PAD_SD3_RST__GPIO7_IO08    0x80000000 /* GPIO7_8  EDM pin 264 */
++                      >;
++              };
++      };
+ };
+ &fec {
+-- 
+1.8.4.rc3
+
diff --git a/src/patches/kernel/wandboard/dts/0003-ARM-dts-imx6qdl-wandboard-Add-support-for-i2c1.patch b/src/patches/kernel/wandboard/dts/0003-ARM-dts-imx6qdl-wandboard-Add-support-for-i2c1.patch
new file mode 100644 (file)
index 0000000..7c4e5dd
--- /dev/null
@@ -0,0 +1,33 @@
+From aefbac1e9377311240656ae5061346acb8612e1b Mon Sep 17 00:00:00 2001
+From: Michael Panetta <panetta.mike@gmail.com>
+Date: Tue, 6 Aug 2013 21:32:50 -0400
+Subject: [PATCH 3/5] ARM: dts: imx6qdl-wandboard: Add support for i2c1.
+
+This patch adds support for i2c1 to the wandboard common dtsi file.
+
+Signed-off-by: Michael Panetta <panetta.mike@gmail.com>
+---
+ arch/arm/boot/dts/imx6qdl-wandboard.dtsi | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+index a302e95..d429c0b 100644
+--- a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+@@ -58,6 +58,13 @@
+       status = "okay";
+ };
++&i2c1 {
++      clock-frequency = <100000>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_i2c1_1>;
++      status = "okay";
++};
++
+ &i2c2 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+-- 
+1.8.4.rc3
+
diff --git a/src/patches/kernel/wandboard/dts/0004-ARM-dts-wandboard-add-binding-for-wand-rfkill-driver.patch b/src/patches/kernel/wandboard/dts/0004-ARM-dts-wandboard-add-binding-for-wand-rfkill-driver.patch
new file mode 100644 (file)
index 0000000..54bb388
--- /dev/null
@@ -0,0 +1,52 @@
+From 1305ac7e9308dcd59c3acc205bc95097cad87ed5 Mon Sep 17 00:00:00 2001
+From: Vladimir Ermakov <vooon341@gmail.com>
+Date: Fri, 16 Aug 2013 06:52:26 +0400
+Subject: [PATCH 5/5] ARM: dts: wandboard: add binding for wand-rfkill driver
+
+Required gpios pincontrol selected in hog. Add binding only.
+Disabled non-removable, because after unblocking need to redetect SDIO device.
+
+Signed-off-by: Vladimir Ermakov <vooon341@gmail.com>
+---
+ arch/arm/boot/dts/imx6qdl-wandboard.dtsi | 18 +++++++++++++++++-
+ 1 file changed, 17 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+index 737805b..c1ef3bd 100644
+--- a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
++++ b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+@@ -50,6 +50,22 @@
+               spdif-controller = <&spdif>;
+               spdif-out;
+       };
++
++      rfkill {
++              compatible = "wand,imx6qdl-wandboard-rfkill";
++              pinctrl-names = "default";
++              pinctrl-0 = <>;
++
++              bluetooth-on = <&gpio3 13 0>;
++              bluetooth-wake = <&gpio3 14 0>;
++              bluetooth-host-wake = <&gpio3 15 0>;
++
++              wifi-ref-on = <&gpio2 29 0>;
++              wifi-rst-n = <&gpio5 2 0>;
++              wifi-reg-on = <&gpio1 26 0>;
++              wifi-host-wake = <&gpio1 29 0>;
++              wifi-wake = <&gpio1 30 0>;
++      };
+ };
+ &audmux {
+@@ -175,7 +191,7 @@
+ &usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2_2>;
+-      non-removable;
++      //non-removable;
+       status = "okay";
+ };
+-- 
+1.8.4.rc3
+
diff --git a/src/patches/kernel/wandboard/dts/0005-ARM-dts-imx6qdl-add-pcie-device-node.patch b/src/patches/kernel/wandboard/dts/0005-ARM-dts-imx6qdl-add-pcie-device-node.patch
new file mode 100644 (file)
index 0000000..e78d9ba
--- /dev/null
@@ -0,0 +1,38 @@
+From 3a57291fa4ca7f7647d826f5b47082ef306d839f Mon Sep 17 00:00:00 2001
+From: Sean Cross <xobs@kosagi.com>
+Date: Thu, 26 Sep 2013 10:51:09 +0800
+Subject: [PATCH] ARM: dts: imx6qdl: add pcie device node
+
+Add pcie device node for imx6qdl.
+
+Signed-off-by: Sean Cross <xobs@kosagi.com>
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+---
+ arch/arm/boot/dts/imx6qdl.dtsi | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+--- a/arch/arm/boot/dts/imx6qdl.dtsi
++++ b/arch/arm/boot/dts/imx6qdl.dtsi
+@@ -108,6 +108,22 @@
+                       cache-level = <2>;
+               };
++              pcie: pcie@0x01000000 {
++                      compatible = "fsl,imx6q-pcie", "snps,dw-pcie";
++                      reg = <0x01ffc000 0x4000>; /* DBI */
++                      #address-cells = <3>;
++                      #size-cells = <2>;
++                      device_type = "pci";
++                      ranges = <0x00000800 0 0x01f00000 0x01f00000 0 0x00080000 /* configuration space */
++                                0x81000000 0 0          0x01f80000 0 0x00010000 /* downstream I/O */
++                                0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */
++                      num-lanes = <1>;
++                      interrupts = <0 123 0x04>;
++                      clocks = <&clks 189>, <&clks 187>, <&clks 206>, <&clks 144>;
++                      clock-names = "pcie_ref_125m", "sata_ref_100m", "lvds_gate", "pcie_axi";
++                      status = "disabled";
++              };
++
+               pmu {
+                       compatible = "arm,cortex-a9-pmu";
+                       interrupts = <0 94 0x04>;
diff --git a/src/patches/kernel/wandboard/imx/0001-i2c-imx-retry-on-NAK.patch b/src/patches/kernel/wandboard/imx/0001-i2c-imx-retry-on-NAK.patch
new file mode 100644 (file)
index 0000000..e876c6e
--- /dev/null
@@ -0,0 +1,38 @@
+From: Tim Harvey <tharvey@gateworks.com>
+Subject: [PATCH] i2c: imx: retry on NAK
+
+In case of busy i2c try again to get ACK.
+
+Signed-off-by: Tim Harvey <tharvey@gateworks.com>
+Tested-by: Luka Perkov <luka@openwrt.org>
+---
+ drivers/i2c/busses/i2c-imx.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/i2c/busses/i2c-imx.c
++++ b/drivers/i2c/busses/i2c-imx.c
+@@ -62,6 +62,7 @@
+ /* Default value */
+ #define IMX_I2C_BIT_RATE      100000  /* 100kHz */
++#define IMX_I2C_MAX_RETRIES   3       /* number of retries to attempt */
+ /* IMX I2C registers */
+ #define IMX_I2C_IADR  0x00    /* i2c slave address */
+@@ -198,7 +199,7 @@ static int i2c_imx_acked(struct imx_i2c_
+ {
+       if (readb(i2c_imx->base + IMX_I2C_I2SR) & I2SR_RXAK) {
+               dev_dbg(&i2c_imx->adapter.dev, "<%s> No ACK\n", __func__);
+-              return -EIO;  /* No ACK */
++              return -EAGAIN; /* try again */
+       }
+       dev_dbg(&i2c_imx->adapter.dev, "<%s> ACK received\n", __func__);
+@@ -533,6 +534,7 @@ static int __init i2c_imx_probe(struct p
+       i2c_imx->adapter.dev.parent     = &pdev->dev;
+       i2c_imx->adapter.nr             = pdev->id;
+       i2c_imx->adapter.dev.of_node    = pdev->dev.of_node;
++      i2c_imx->adapter.retries        = IMX_I2C_MAX_RETRIES;
+       i2c_imx->base                   = base;
+       pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
diff --git a/src/patches/kernel/wandboard/imx/0002-i.MX6-Wandboard-add-CKO1-clock-output.patch b/src/patches/kernel/wandboard/imx/0002-i.MX6-Wandboard-add-CKO1-clock-output.patch
new file mode 100644 (file)
index 0000000..b24c7ad
--- /dev/null
@@ -0,0 +1,29 @@
+From fc69065e84165aef5ba7a837d9d2e668bd03b146 Mon Sep 17 00:00:00 2001
+From: Vladimir Ermakov <vooon341@gmail.com>
+Date: Wed, 10 Jul 2013 03:03:51 +0400
+Subject: [PATCH 7/8] i.MX6 Wandboard add CKO1 clock output
+
+stgl5000 uses clock from imx CKO1 pad.
+
+Signed-off-by: Vladimir Ermakov <vooon341@gmail.com>
+---
+ arch/arm/mach-imx/mach-imx6q.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
+index 5536fd8..bf9a30b 100644
+--- a/arch/arm/mach-imx/mach-imx6q.c
++++ b/arch/arm/mach-imx/mach-imx6q.c
+@@ -166,6 +166,9 @@ static void __init imx6q_init_machine(void)
+       if (of_machine_is_compatible("fsl,imx6q-sabrelite"))
+               imx6q_sabrelite_init();
++      if (of_machine_is_compatible("wand,imx6q-wandboard"))
++              imx6q_sabrelite_cko1_setup();
++
+       of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+       imx_anatop_init();
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/wandboard/imx/0003-thermal-add-imx-thermal-driver-support.patch b/src/patches/kernel/wandboard/imx/0003-thermal-add-imx-thermal-driver-support.patch
new file mode 100644 (file)
index 0000000..a0a7cec
--- /dev/null
@@ -0,0 +1,489 @@
+From 744af645bfdb0bfe73fa28df06da48783f85e6a9 Mon Sep 17 00:00:00 2001
+From: Shawn Guo <shawn.guo@linaro.org>
+Date: Mon, 24 Jun 2013 14:30:44 +0800
+Subject: [PATCH 5/5] thermal: add imx thermal driver support
+
+This is based on the initial imx thermal work done by
+Rob Lee <rob.lee@linaro.org> (Not sure if the email address is still
+valid).  Since he is no longer interested in the work and I have
+rewritten a significant amount of the code, I just took the authorship
+over from him.
+
+It adds the imx thermal support using Temperature Monitor (TEMPMON)
+block found on some Freescale i.MX SoCs.  The driver uses syscon regmap
+interface to access TEMPMON control registers and calibration data, and
+supports cpufreq as the cooling device.
+
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+---
+ .../devicetree/bindings/thermal/imx-thermal.txt    |   17 +
+ drivers/thermal/Kconfig                            |   11 +
+ drivers/thermal/Makefile                           |    1 +
+ drivers/thermal/imx_thermal.c                      |  397 ++++++++++++++++++++
+ 4 files changed, 426 insertions(+)
+ create mode 100644 Documentation/devicetree/bindings/thermal/imx-thermal.txt
+ create mode 100644 drivers/thermal/imx_thermal.c
+
+diff --git a/Documentation/devicetree/bindings/thermal/imx-thermal.txt b/Documentation/devicetree/bindings/thermal/imx-thermal.txt
+new file mode 100644
+index 0000000..541c25e
+--- /dev/null
++++ b/Documentation/devicetree/bindings/thermal/imx-thermal.txt
+@@ -0,0 +1,17 @@
++* Temperature Monitor (TEMPMON) on Freescale i.MX SoCs
++
++Required properties:
++- compatible : "fsl,imx6q-thermal"
++- fsl,tempmon : phandle pointer to system controller that contains TEMPMON
++  control registers, e.g. ANATOP on imx6q.
++- fsl,tempmon-data : phandle pointer to fuse controller that contains TEMPMON
++  calibration data, e.g. OCOTP on imx6q.  The details about calibration data
++  can be found in SoC Reference Manual.
++
++Example:
++
++tempmon {
++      compatible = "fsl,imx6q-tempmon";
++      fsl,tempmon = <&anatop>;
++      fsl,tempmon-data = <&ocotp>;
++};
+diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
+index 5e3c025..e91d78f 100644
+--- a/drivers/thermal/Kconfig
++++ b/drivers/thermal/Kconfig
+@@ -91,6 +91,17 @@ config THERMAL_EMULATION
+         because userland can easily disable the thermal policy by simply
+         flooding this sysfs node with low temperature values.
++config IMX_THERMAL
++      tristate "Temperature sensor driver for Freescale i.MX SoCs"
++      depends on CPU_THERMAL
++      depends on MFD_SYSCON
++      depends on OF
++      help
++        Support for Temperature Monitor (TEMPMON) found on Freescale i.MX SoCs.
++        It supports one critical trip point and one passive trip point.  The
++        cpufreq is used as the cooling device to throttle CPUs when the
++        passive trip is crossed.
++
+ config SPEAR_THERMAL
+       bool "SPEAr thermal sensor driver"
+       depends on PLAT_SPEAR
+diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
+index c054d41..6910b2d 100644
+--- a/drivers/thermal/Makefile
++++ b/drivers/thermal/Makefile
+@@ -21,6 +21,7 @@ obj-$(CONFIG_EXYNOS_THERMAL) += exynos_thermal.o
+ obj-$(CONFIG_DOVE_THERMAL)    += dove_thermal.o
+ obj-$(CONFIG_DB8500_THERMAL)  += db8500_thermal.o
+ obj-$(CONFIG_ARMADA_THERMAL)  += armada_thermal.o
++obj-$(CONFIG_IMX_THERMAL)     += imx_thermal.o
+ obj-$(CONFIG_DB8500_CPUFREQ_COOLING)  += db8500_cpufreq_cooling.o
+ obj-$(CONFIG_INTEL_POWERCLAMP)        += intel_powerclamp.o
+diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c
+new file mode 100644
+index 0000000..d16c33c
+--- /dev/null
++++ b/drivers/thermal/imx_thermal.c
+@@ -0,0 +1,397 @@
++/*
++ * Copyright 2013 Freescale Semiconductor, Inc.
++ *
++ * 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/cpu_cooling.h>
++#include <linux/cpufreq.h>
++#include <linux/delay.h>
++#include <linux/device.h>
++#include <linux/init.h>
++#include <linux/io.h>
++#include <linux/kernel.h>
++#include <linux/mfd/syscon.h>
++#include <linux/module.h>
++#include <linux/of.h>
++#include <linux/platform_device.h>
++#include <linux/regmap.h>
++#include <linux/slab.h>
++#include <linux/thermal.h>
++#include <linux/types.h>
++
++#define REG_SET               0x4
++#define REG_CLR               0x8
++#define REG_TOG               0xc
++
++#define MISC0                         0x0150
++#define MISC0_REFTOP_SELBIASOFF               (1 << 3)
++
++#define TEMPSENSE0                    0x0180
++#define TEMPSENSE0_TEMP_CNT_SHIFT     8
++#define TEMPSENSE0_TEMP_CNT_MASK      (0xfff << TEMPSENSE0_TEMP_CNT_SHIFT)
++#define TEMPSENSE0_FINISHED           (1 << 2)
++#define TEMPSENSE0_MEASURE_TEMP               (1 << 1)
++#define TEMPSENSE0_POWER_DOWN         (1 << 0)
++
++#define TEMPSENSE1                    0x0190
++#define TEMPSENSE1_MEASURE_FREQ               0xffff
++
++#define OCOTP_ANA1                    0x04e0
++
++/* The driver supports 1 passive trip point and 1 critical trip point */
++enum imx_thermal_trip {
++      IMX_TRIP_PASSIVE,
++      IMX_TRIP_CRITICAL,
++      IMX_TRIP_NUM,
++};
++
++/*
++ * It defines the temperature in millicelsius for passive trip point
++ * that will trigger cooling action when crossed.
++ */
++#define IMX_TEMP_PASSIVE              85000
++
++/*
++ * The maximum die temperature on imx parts is 105C, let's give some cushion
++ * for noise and possible temperature rise between measurements.
++ */
++#define IMX_TEMP_CRITICAL             100000
++
++#define IMX_POLLING_DELAY             2000 /* millisecond */
++#define IMX_PASSIVE_DELAY             1000
++
++struct imx_thermal_data {
++      struct thermal_zone_device *tz;
++      struct thermal_cooling_device *cdev;
++      enum thermal_device_mode mode;
++      struct regmap *tempmon;
++      int c1, c2; /* See formula in imx_get_sensor_data() */
++};
++
++static int imx_get_temp(struct thermal_zone_device *tz, unsigned long *temp)
++{
++      struct imx_thermal_data *data = tz->devdata;
++      struct regmap *map = data->tempmon;
++      static unsigned long last_temp;
++      unsigned int n_meas;
++      u32 val;
++
++      /*
++       * Every time we measure the temperature, we will power on the
++       * temperature sensor, enable measurements, take a reading,
++       * disable measurements, power off the temperature sensor.
++       */
++      regmap_write(map, TEMPSENSE0 + REG_CLR, TEMPSENSE0_POWER_DOWN);
++      regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_MEASURE_TEMP);
++
++      /*
++       * According to the temp sensor designers, it may require up to ~17us
++       * to complete a measurement.
++       */
++      usleep_range(20, 50);
++
++      regmap_read(map, TEMPSENSE0, &val);
++      regmap_write(map, TEMPSENSE0 + REG_CLR, TEMPSENSE0_MEASURE_TEMP);
++      regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_POWER_DOWN);
++
++      if ((val & TEMPSENSE0_FINISHED) == 0) {
++              dev_dbg(&tz->device, "temp measurement never finished\n");
++              return -EAGAIN;
++      }
++
++      n_meas = (val & TEMPSENSE0_TEMP_CNT_MASK) >> TEMPSENSE0_TEMP_CNT_SHIFT;
++
++      /* See imx_get_sensor_data() for formula derivation */
++      *temp = data->c2 + data->c1 * n_meas;
++
++      if (*temp != last_temp) {
++              dev_dbg(&tz->device, "millicelsius: %ld\n", *temp);
++              last_temp = *temp;
++      }
++
++      return 0;
++}
++
++static int imx_get_mode(struct thermal_zone_device *tz,
++                      enum thermal_device_mode *mode)
++{
++      struct imx_thermal_data *data = tz->devdata;
++
++      *mode = data->mode;
++
++      return 0;
++}
++
++static int imx_set_mode(struct thermal_zone_device *tz,
++                      enum thermal_device_mode mode)
++{
++      struct imx_thermal_data *data = tz->devdata;
++
++      if (mode == THERMAL_DEVICE_ENABLED) {
++              tz->polling_delay = IMX_POLLING_DELAY;
++              tz->passive_delay = IMX_PASSIVE_DELAY;
++      } else {
++              tz->polling_delay = 0;
++              tz->passive_delay = 0;
++      }
++
++      data->mode = mode;
++      thermal_zone_device_update(tz);
++
++      return 0;
++}
++
++static int imx_get_trip_type(struct thermal_zone_device *tz, int trip,
++                           enum thermal_trip_type *type)
++{
++      *type = (trip == IMX_TRIP_PASSIVE) ? THERMAL_TRIP_PASSIVE :
++                                           THERMAL_TRIP_CRITICAL;
++      return 0;
++}
++
++static int imx_get_crit_temp(struct thermal_zone_device *tz,
++                           unsigned long *temp)
++{
++      *temp = IMX_TEMP_CRITICAL;
++      return 0;
++}
++
++static int imx_get_trip_temp(struct thermal_zone_device *tz, int trip,
++                           unsigned long *temp)
++{
++      *temp = (trip == IMX_TRIP_PASSIVE) ? IMX_TEMP_PASSIVE :
++                                           IMX_TEMP_CRITICAL;
++      return 0;
++}
++
++static int imx_bind(struct thermal_zone_device *tz,
++                  struct thermal_cooling_device *cdev)
++{
++      int ret;
++
++      ret = thermal_zone_bind_cooling_device(tz, IMX_TRIP_PASSIVE, cdev,
++                                             THERMAL_NO_LIMIT,
++                                             THERMAL_NO_LIMIT);
++      if (ret) {
++              dev_err(&tz->device,
++                      "binding zone %s with cdev %s failed:%d\n",
++                      tz->type, cdev->type, ret);
++              return ret;
++      }
++
++      return 0;
++}
++
++static int imx_unbind(struct thermal_zone_device *tz,
++                    struct thermal_cooling_device *cdev)
++{
++      int ret;
++
++      ret = thermal_zone_unbind_cooling_device(tz, IMX_TRIP_PASSIVE, cdev);
++      if (ret) {
++              dev_err(&tz->device,
++                      "unbinding zone %s with cdev %s failed:%d\n",
++                      tz->type, cdev->type, ret);
++              return ret;
++      }
++
++      return 0;
++}
++
++static const struct thermal_zone_device_ops imx_tz_ops = {
++      .bind = imx_bind,
++      .unbind = imx_unbind,
++      .get_temp = imx_get_temp,
++      .get_mode = imx_get_mode,
++      .set_mode = imx_set_mode,
++      .get_trip_type = imx_get_trip_type,
++      .get_trip_temp = imx_get_trip_temp,
++      .get_crit_temp = imx_get_crit_temp,
++};
++
++static int imx_get_sensor_data(struct platform_device *pdev)
++{
++      struct imx_thermal_data *data = platform_get_drvdata(pdev);
++      struct regmap *map;
++      int t1, t2, n1, n2;
++      int ret;
++      u32 val;
++
++      map = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
++                                            "fsl,tempmon-data");
++      if (IS_ERR(map)) {
++              ret = PTR_ERR(map);
++              dev_err(&pdev->dev, "failed to get sensor regmap: %d\n", ret);
++              return ret;
++      }
++
++      ret = regmap_read(map, OCOTP_ANA1, &val);
++      if (ret) {
++              dev_err(&pdev->dev, "failed to read sensor data: %d\n", ret);
++              return ret;
++      }
++
++      if (val == 0 || val == ~0) {
++              dev_err(&pdev->dev, "invalid sensor calibration data\n");
++              return -EINVAL;
++      }
++
++      /*
++       * Sensor data layout:
++       *   [31:20] - sensor value @ 25C
++       *    [19:8] - sensor value of hot
++       *     [7:0] - hot temperature value
++       */
++      n1 = val >> 20;
++      n2 = (val & 0xfff00) >> 8;
++      t2 = val & 0xff;
++      t1 = 25; /* t1 always 25C */
++
++      /*
++       * Derived from linear interpolation,
++       * Tmeas = T2 + (Nmeas - N2) * (T1 - T2) / (N1 - N2)
++       * We want to reduce this down to the minimum computation necessary
++       * for each temperature read.  Also, we want Tmeas in millicelsius
++       * and we don't want to lose precision from integer division. So...
++       * milli_Tmeas = 1000 * T2 + 1000 * (Nmeas - N2) * (T1 - T2) / (N1 - N2)
++       * Let constant c1 = 1000 * (T1 - T2) / (N1 - N2)
++       * milli_Tmeas = (1000 * T2) + c1 * (Nmeas - N2)
++       * milli_Tmeas = (1000 * T2) + (c1 * Nmeas) - (c1 * N2)
++       * Let constant c2 = (1000 * T2) - (c1 * N2)
++       * milli_Tmeas = c2 + (c1 * Nmeas)
++       */
++      data->c1 = 1000 * (t1 - t2) / (n1 - n2);
++      data->c2 = 1000 * t2 - data->c1 * n2;
++
++      return 0;
++}
++
++static int imx_thermal_probe(struct platform_device *pdev)
++{
++      struct imx_thermal_data *data;
++      struct cpumask clip_cpus;
++      struct regmap *map;
++      int ret;
++
++      data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
++      if (!data)
++              return -ENOMEM;
++
++      map = syscon_regmap_lookup_by_phandle(pdev->dev.of_node, "fsl,tempmon");
++      if (IS_ERR(map)) {
++              ret = PTR_ERR(map);
++              dev_err(&pdev->dev, "failed to get tempmon regmap: %d\n", ret);
++              return ret;
++      }
++      data->tempmon = map;
++
++      platform_set_drvdata(pdev, data);
++
++      ret = imx_get_sensor_data(pdev);
++      if (ret) {
++              dev_err(&pdev->dev, "failed to get sensor data\n");
++              return ret;
++      }
++
++      /* Make sure sensor is in known good state for measurements */
++      regmap_write(map, TEMPSENSE0 + REG_CLR, TEMPSENSE0_POWER_DOWN);
++      regmap_write(map, TEMPSENSE0 + REG_CLR, TEMPSENSE0_MEASURE_TEMP);
++      regmap_write(map, TEMPSENSE1 + REG_CLR, TEMPSENSE1_MEASURE_FREQ);
++      regmap_write(map, MISC0 + REG_SET, MISC0_REFTOP_SELBIASOFF);
++      regmap_write(map, TEMPSENSE0 + REG_SET, TEMPSENSE0_POWER_DOWN);
++
++      cpumask_set_cpu(0, &clip_cpus);
++      data->cdev = cpufreq_cooling_register(&clip_cpus);
++      if (IS_ERR(data->cdev)) {
++              ret = PTR_ERR(data->cdev);
++              dev_err(&pdev->dev,
++                      "failed to register cpufreq cooling device: %d\n", ret);
++              return ret;
++      }
++
++      data->tz = thermal_zone_device_register("imx_thermal_zone",
++                                              IMX_TRIP_NUM, 0, data,
++                                              &imx_tz_ops, NULL,
++                                              IMX_PASSIVE_DELAY,
++                                              IMX_POLLING_DELAY);
++      if (IS_ERR(data->tz)) {
++              ret = PTR_ERR(data->tz);
++              dev_err(&pdev->dev,
++                      "failed to register thermal zone device %d\n", ret);
++              cpufreq_cooling_unregister(data->cdev);
++              return ret;
++      }
++
++      data->mode = THERMAL_DEVICE_ENABLED;
++
++      return 0;
++}
++
++static int imx_thermal_remove(struct platform_device *pdev)
++{
++      struct imx_thermal_data *data = platform_get_drvdata(pdev);
++
++      thermal_zone_device_unregister(data->tz);
++      cpufreq_cooling_unregister(data->cdev);
++
++      return 0;
++}
++
++#ifdef CONFIG_PM_SLEEP
++static int imx_thermal_suspend(struct device *dev)
++{
++      struct imx_thermal_data *data = dev_get_drvdata(dev);
++      struct regmap *map = data->tempmon;
++      u32 val;
++
++      regmap_read(map, TEMPSENSE0, &val);
++      if ((val & TEMPSENSE0_POWER_DOWN) == 0) {
++              /*
++               * If a measurement is taking place, wait for a long enough
++               * time for it to finish, and then check again.  If it still
++               * does not finish, something must go wrong.
++               */
++              udelay(50);
++              regmap_read(map, TEMPSENSE0, &val);
++              if ((val & TEMPSENSE0_POWER_DOWN) == 0)
++                      return -ETIMEDOUT;
++      }
++
++      return 0;
++}
++
++static int imx_thermal_resume(struct device *dev)
++{
++      /* Nothing to do for now */
++      return 0;
++}
++#endif
++
++static SIMPLE_DEV_PM_OPS(imx_thermal_pm_ops,
++                       imx_thermal_suspend, imx_thermal_resume);
++
++static const struct of_device_id of_imx_thermal_match[] = {
++      { .compatible = "fsl,imx6q-tempmon", },
++      { /* end */ }
++};
++
++static struct platform_driver imx_thermal = {
++      .driver = {
++              .name   = "imx_thermal",
++              .owner  = THIS_MODULE,
++              .pm     = &imx_thermal_pm_ops,
++              .of_match_table = of_imx_thermal_match,
++      },
++      .probe          = imx_thermal_probe,
++      .remove         = imx_thermal_remove,
++};
++module_platform_driver(imx_thermal);
++
++MODULE_AUTHOR("Freescale Semiconductor, Inc.");
++MODULE_DESCRIPTION("Thermal driver for Freescale i.MX SoCs");
++MODULE_LICENSE("GPL v2");
++MODULE_ALIAS("platform:imx-thermal");
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/wandboard/imx/0004-ARM-i.MX6-Wandboard-add-wifi-bt-rfkill-driver.patch b/src/patches/kernel/wandboard/imx/0004-ARM-i.MX6-Wandboard-add-wifi-bt-rfkill-driver.patch
new file mode 100644 (file)
index 0000000..993b1d7
--- /dev/null
@@ -0,0 +1,341 @@
+From adf0f7b7d7c0083dd936fe46423b89e974f8df12 Mon Sep 17 00:00:00 2001
+From: Vladimir Ermakov <vooon341@gmail.com>
+Date: Wed, 10 Jul 2013 03:06:54 +0400
+Subject: [PATCH] ARM i.MX6 Wandboard add wifi+bt rfkill driver
+
+BRCM WiFi module requires initialization for control gpio;
+Additional provides rfkill funcs.
+
+v2: fix wrong probe func in driver struct
+v3: add imx6qdl compatible
+
+Signed-off-by: Vladimir Ermakov <vooon341@gmail.com>
+---
+ arch/arm/mach-imx/devices/Kconfig       |   6 +
+ arch/arm/mach-imx/devices/Makefile      |   1 +
+ arch/arm/mach-imx/devices/wand-rfkill.c | 290 ++++++++++++++++++++++++++++++++
+ 3 files changed, 297 insertions(+)
+ create mode 100644 arch/arm/mach-imx/devices/wand-rfkill.c
+
+diff --git a/arch/arm/mach-imx/devices/Kconfig b/arch/arm/mach-imx/devices/Kconfig
+index 68c74fb..a0adf75 100644
+--- a/arch/arm/mach-imx/devices/Kconfig
++++ b/arch/arm/mach-imx/devices/Kconfig
+@@ -85,3 +85,9 @@ config IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
+ config IMX_HAVE_PLATFORM_SPI_IMX
+       bool
++
++config WAND_RFKILL
++      tristate "Wandboard RF Kill support"
++      depends on SOC_IMX6Q
++      default m
++      select RFKILL
+diff --git a/arch/arm/mach-imx/devices/Makefile b/arch/arm/mach-imx/devices/Makefile
+index 67416fb..b2aded5 100644
+--- a/arch/arm/mach-imx/devices/Makefile
++++ b/arch/arm/mach-imx/devices/Makefile
+@@ -30,3 +30,4 @@ obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_W1) += platform-mxc_w1.o
+ obj-$(CONFIG_IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX) += platform-sdhci-esdhc-imx.o
+ obj-$(CONFIG_IMX_HAVE_PLATFORM_SPI_IMX) +=  platform-spi_imx.o
+ obj-$(CONFIG_IMX_HAVE_PLATFORM_MX2_EMMA) += platform-mx2-emma.o
++obj-$(CONFIG_WAND_RFKILL) += wand-rfkill.o
+diff --git a/arch/arm/mach-imx/devices/wand-rfkill.c b/arch/arm/mach-imx/devices/wand-rfkill.c
+new file mode 100644
+index 0000000..da7ef9f
+--- /dev/null
++++ b/arch/arm/mach-imx/devices/wand-rfkill.c
+@@ -0,0 +1,290 @@
++/*
++ * arch/arm/mach-imx/devices/wand-rfkill.c
++ *
++ * Copyright (C) 2013 Vladimir Ermakov <vooon341@gmail.com>
++ *
++ * based on net/rfkill/rfkill-gpio.c
++ *
++ * This software is licensed under the terms of the GNU General Public
++ * License version 2, as published by the Free Software Foundation, and
++ * may be copied, distributed, and modified under those terms.
++ *
++ * 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.
++ *
++ */
++
++#include <linux/of.h>
++#include <linux/of_gpio.h>
++#include <linux/of_device.h>
++#include <linux/pinctrl/consumer.h>
++#include <linux/platform_device.h>
++#include <linux/rfkill.h>
++#include <linux/delay.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++
++
++struct wand_rfkill_data {
++      struct rfkill *rfkill_dev;
++      int shutdown_gpio;
++      const char *shutdown_name;
++};
++
++static int wand_rfkill_set_block(void *data, bool blocked)
++{
++      struct wand_rfkill_data *rfkill = data;
++
++      pr_debug("wandboard-rfkill: set block %d\n", blocked);
++
++      if (blocked) {
++              if (gpio_is_valid(rfkill->shutdown_gpio))
++                      gpio_direction_output(rfkill->shutdown_gpio, 0);
++      } else {
++              if (gpio_is_valid(rfkill->shutdown_gpio))
++                      gpio_direction_output(rfkill->shutdown_gpio, 1);
++      }
++
++      return 0;
++}
++
++static const struct rfkill_ops wand_rfkill_ops = {
++      .set_block = wand_rfkill_set_block,
++};
++
++static int wand_rfkill_wifi_probe(struct device *dev,
++              struct device_node *np,
++              struct wand_rfkill_data *rfkill)
++{
++      int ret;
++      int wl_ref_on, wl_rst_n, wl_reg_on, wl_wake, wl_host_wake;
++
++      wl_ref_on = of_get_named_gpio(np, "wifi-ref-on", 0);
++      wl_rst_n = of_get_named_gpio(np, "wifi-rst-n", 0);
++      wl_reg_on = of_get_named_gpio(np, "wifi-reg-on", 0);
++      wl_wake = of_get_named_gpio(np, "wifi-wake", 0);
++      wl_host_wake = of_get_named_gpio(np, "wifi-host-wake", 0);
++
++      if (!gpio_is_valid(wl_rst_n) || !gpio_is_valid(wl_ref_on) ||
++                      !gpio_is_valid(wl_reg_on) || !gpio_is_valid(wl_wake) ||
++                      !gpio_is_valid(wl_host_wake)) {
++
++              dev_err(dev, "incorrect wifi gpios (%d %d %d %d %d)\n",
++                              wl_rst_n, wl_ref_on, wl_reg_on, wl_wake, wl_host_wake);
++              return -EINVAL;
++      }
++
++      dev_info(dev, "initialize wifi chip\n");
++
++      gpio_request(wl_rst_n, "wl_rst_n");
++      gpio_direction_output(wl_rst_n, 0);
++      msleep(11);
++      gpio_set_value(wl_rst_n, 1);
++
++      gpio_request(wl_ref_on, "wl_ref_on");
++      gpio_direction_output(wl_ref_on, 1);
++
++      gpio_request(wl_reg_on, "wl_reg_on");
++      gpio_direction_output(wl_reg_on, 1);
++
++      gpio_request(wl_wake, "wl_wake");
++      gpio_direction_output(wl_wake, 1);
++
++      gpio_request(wl_host_wake, "wl_host_wake");
++      gpio_direction_input(wl_host_wake);
++
++      rfkill->shutdown_name = "wifi_shutdown";
++      rfkill->shutdown_gpio = wl_wake;
++
++      rfkill->rfkill_dev = rfkill_alloc("wifi-rfkill", dev, RFKILL_TYPE_WLAN,
++                      &wand_rfkill_ops, rfkill);
++      if (!rfkill->rfkill_dev) {
++              ret = -ENOMEM;
++              goto wifi_fail_free_gpio;
++      }
++
++      ret = rfkill_register(rfkill->rfkill_dev);
++      if (ret < 0)
++              goto wifi_fail_unregister;
++
++      dev_info(dev, "wifi-rfkill registered.\n");
++
++      return 0;
++
++wifi_fail_unregister:
++      rfkill_destroy(rfkill->rfkill_dev);
++wifi_fail_free_gpio:
++      if (gpio_is_valid(wl_rst_n))     gpio_free(wl_rst_n);
++      if (gpio_is_valid(wl_ref_on))    gpio_free(wl_ref_on);
++      if (gpio_is_valid(wl_reg_on))    gpio_free(wl_reg_on);
++      if (gpio_is_valid(wl_wake))      gpio_free(wl_wake);
++      if (gpio_is_valid(wl_host_wake)) gpio_free(wl_host_wake);
++
++      return ret;
++}
++
++static int wand_rfkill_bt_probe(struct device *dev,
++              struct device_node *np,
++              struct wand_rfkill_data *rfkill)
++{
++      int ret;
++      int bt_on, bt_wake, bt_host_wake;
++
++      bt_on = of_get_named_gpio(np, "bluetooth-on", 0);
++      bt_wake = of_get_named_gpio(np, "bluetooth-wake", 0);
++      bt_host_wake = of_get_named_gpio(np, "bluetooth-host-wake", 0);
++
++      if (!gpio_is_valid(bt_on) || !gpio_is_valid(bt_wake) ||
++                      !gpio_is_valid(bt_host_wake)) {
++
++              dev_err(dev, "incorrect bt gpios (%d %d %d)\n",
++                              bt_on, bt_wake, bt_host_wake);
++              return -EINVAL;
++      }
++
++      dev_info(dev, "initialize bluetooth chip\n");
++
++      gpio_request(bt_on, "bt_on");
++      gpio_direction_output(bt_on, 0);
++      msleep(11);
++      gpio_set_value(bt_on, 1);
++
++      gpio_request(bt_wake, "bt_wake");
++      gpio_direction_output(bt_wake, 1);
++
++      gpio_request(bt_host_wake, "bt_host_wake");
++      gpio_direction_input(bt_host_wake);
++
++      rfkill->shutdown_name = "bluetooth_shutdown";
++      rfkill->shutdown_gpio = bt_wake;
++
++      rfkill->rfkill_dev = rfkill_alloc("bluetooth-rfkill", dev, RFKILL_TYPE_BLUETOOTH,
++                      &wand_rfkill_ops, rfkill);
++      if (!rfkill->rfkill_dev) {
++              ret = -ENOMEM;
++              goto bt_fail_free_gpio;
++      }
++
++      ret = rfkill_register(rfkill->rfkill_dev);
++      if (ret < 0)
++              goto bt_fail_unregister;
++
++      dev_info(dev, "bluetooth-rfkill registered.\n");
++
++      return 0;
++
++bt_fail_unregister:
++      rfkill_destroy(rfkill->rfkill_dev);
++bt_fail_free_gpio:
++      if (gpio_is_valid(bt_on))        gpio_free(bt_on);
++      if (gpio_is_valid(bt_wake))      gpio_free(bt_wake);
++      if (gpio_is_valid(bt_host_wake)) gpio_free(bt_host_wake);
++
++      return ret;
++}
++
++static int wand_rfkill_probe(struct platform_device *pdev)
++{
++      struct wand_rfkill_data *rfkill;
++      struct pinctrl *pinctrl;
++      int ret;
++
++      dev_info(&pdev->dev, "Wandboard rfkill initialization\n");
++
++      if (!pdev->dev.of_node) {
++              dev_err(&pdev->dev, "no device tree node\n");
++              return -ENODEV;
++      }
++
++      rfkill = kzalloc(sizeof(*rfkill) * 2, GFP_KERNEL);
++      if (!rfkill)
++              return -ENOMEM;
++
++      pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
++      if (IS_ERR(pinctrl)) {
++              int ret = PTR_ERR(pinctrl);
++              dev_err(&pdev->dev, "failed to get default pinctrl: %d\n", ret);
++              return ret;
++      }
++
++      /* setup WiFi */
++      ret = wand_rfkill_wifi_probe(&pdev->dev, pdev->dev.of_node, &rfkill[0]);
++      if (ret < 0)
++              goto fail_free_rfkill;
++
++      /* setup bluetooth */
++      ret = wand_rfkill_bt_probe(&pdev->dev, pdev->dev.of_node, &rfkill[1]);
++      if (ret < 0)
++              goto fail_unregister_wifi;
++
++      platform_set_drvdata(pdev, rfkill);
++
++      return 0;
++
++fail_unregister_wifi:
++      if (rfkill[1].rfkill_dev) {
++              rfkill_unregister(rfkill[1].rfkill_dev);
++              rfkill_destroy(rfkill[1].rfkill_dev);
++      }
++
++      /* TODO free gpio */
++
++fail_free_rfkill:
++      kfree(rfkill);
++
++      return ret;
++}
++
++static int wand_rfkill_remove(struct platform_device *pdev)
++{
++      struct wand_rfkill_data *rfkill = platform_get_drvdata(pdev);
++
++      dev_info(&pdev->dev, "Module unloading\n");
++
++      if (!rfkill)
++              return 0;
++
++      /* WiFi */
++      if (gpio_is_valid(rfkill[0].shutdown_gpio))
++              gpio_free(rfkill[0].shutdown_gpio);
++
++      rfkill_unregister(rfkill[0].rfkill_dev);
++      rfkill_destroy(rfkill[0].rfkill_dev);
++
++      /* Bt */
++      if (gpio_is_valid(rfkill[1].shutdown_gpio))
++              gpio_free(rfkill[1].shutdown_gpio);
++
++      rfkill_unregister(rfkill[1].rfkill_dev);
++      rfkill_destroy(rfkill[1].rfkill_dev);
++
++      kfree(rfkill);
++
++      return 0;
++}
++
++static struct of_device_id wand_rfkill_match[] = {
++      { .compatible = "wand,imx6q-wandboard-rfkill", },
++      { .compatible = "wand,imx6dl-wandboard-rfkill", },
++      { .compatible = "wand,imx6qdl-wandboard-rfkill", },
++      {}
++};
++
++static struct platform_driver wand_rfkill_driver = {
++      .driver = {
++              .name = "wandboard-rfkill",
++              .owner = THIS_MODULE,
++              .of_match_table = of_match_ptr(wand_rfkill_match),
++      },
++      .probe = wand_rfkill_probe,
++      .remove = wand_rfkill_remove
++};
++
++module_platform_driver(wand_rfkill_driver);
++
++MODULE_AUTHOR("Vladimir Ermakov <vooon341@gmail.com>");
++MODULE_DESCRIPTION("Wandboard rfkill driver");
++MODULE_LICENSE("GPL v2");
+-- 
+1.8.4.rc3
+
diff --git a/src/patches/kernel/wandboard/imx/0005-Add-IMX6Q-AHCI-support.patch b/src/patches/kernel/wandboard/imx/0005-Add-IMX6Q-AHCI-support.patch
new file mode 100644 (file)
index 0000000..912b3be
--- /dev/null
@@ -0,0 +1,85 @@
+From 8e890a259208dbe3aba6f46f7c3a213269d8f123 Mon Sep 17 00:00:00 2001
+From: Allen Ibara <allen@zee.aero>
+Date: Tue, 4 Dec 2012 20:44:26 -0800
+Subject: [PATCH 2/5] Add IMX6Q AHCI support
+
+Adds ahci_platform bits to make AHCI work on sabrelite IMX6Q board.
+
+Signed-off-by: Allen Ibara <allen@zee.aero>
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
+index 7a8a284..d324cdf 100644
+--- a/drivers/ata/ahci_platform.c
++++ b/drivers/ata/ahci_platform.c
+@@ -23,6 +23,9 @@
+ #include <linux/platform_device.h>
+ #include <linux/libata.h>
+ #include <linux/ahci_platform.h>
++#include <linux/of.h>
++#include <linux/of_device.h>
++#include <linux/of_gpio.h>
+ #include "ahci.h"
+ static void ahci_host_stop(struct ata_host *host);
+@@ -30,6 +33,7 @@ static void ahci_host_stop(struct ata_host *host);
+ enum ahci_type {
+       AHCI,           /* standard platform ahci */
+       IMX53_AHCI,     /* ahci on i.mx53 */
++      IMX6Q_AHCI,     /* ahci on i.mx6q */
+       STRICT_AHCI,    /* delayed DMA engine start */
+ };
+@@ -41,6 +45,9 @@ static struct platform_device_id ahci_devtype[] = {
+               .name = "imx53-ahci",
+               .driver_data = IMX53_AHCI,
+       }, {
++              .name = "imx6q-ahci",
++              .driver_data = IMX53_AHCI,
++      }, {
+               .name = "strict-ahci",
+               .driver_data = STRICT_AHCI,
+       }, {
+@@ -86,12 +93,24 @@ static struct scsi_host_template ahci_platform_sht = {
+       AHCI_SHT("ahci_platform"),
+ };
++static const struct of_device_id ahci_of_match[] = {
++      { .compatible = "calxeda,hb-ahci",  .data = &ahci_devtype[AHCI],},
++      { .compatible = "fsl,imx6q-ahci",   .data = &ahci_devtype[IMX6Q_AHCI],},
++      { .compatible = "snps,spear-ahci", },
++      {},
++};
++MODULE_DEVICE_TABLE(of, ahci_of_match);
++
+ static int ahci_probe(struct platform_device *pdev)
+ {
+       struct device *dev = &pdev->dev;
+       struct ahci_platform_data *pdata = dev_get_platdata(dev);
++      const struct of_device_id *of_id =
++                      of_match_device(ahci_of_match, &pdev->dev);
++      const struct platform_device_id *id_entry = of_id->data;
+       const struct platform_device_id *id = platform_get_device_id(pdev);
+-      struct ata_port_info pi = ahci_port_info[id ? id->driver_data : 0];
++      struct ata_port_info pi = ahci_port_info[id ? id->driver_data : \
++              id_entry->driver_data];
+       const struct ata_port_info *ppi[] = { &pi, NULL };
+       struct ahci_host_priv *hpriv;
+       struct ata_host *host;
+@@ -325,12 +344,6 @@ disable_unprepare_clk:
+ static SIMPLE_DEV_PM_OPS(ahci_pm_ops, ahci_suspend, ahci_resume);
+-static const struct of_device_id ahci_of_match[] = {
+-      { .compatible = "snps,spear-ahci", },
+-      {},
+-};
+-MODULE_DEVICE_TABLE(of, ahci_of_match);
+-
+ static struct platform_driver ahci_driver = {
+       .probe = ahci_probe,
+       .remove = ata_platform_remove_one,
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/wandboard/imx/0006-imx-Add-IMX53-AHCI-support.patch b/src/patches/kernel/wandboard/imx/0006-imx-Add-IMX53-AHCI-support.patch
new file mode 100644 (file)
index 0000000..1b96d8c
--- /dev/null
@@ -0,0 +1,25 @@
+From 41cc1967181a833c3c5af30682ea85dd01c28ff4 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Tue, 22 Jan 2013 22:21:03 -0600
+Subject: [PATCH 3/5] imx: Add IMX53 AHCI support
+
+Adds ahci_platform bits to make AHCI work on mx53 qsb board.
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+
+diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
+index d324cdf..b01eeca 100644
+--- a/drivers/ata/ahci_platform.c
++++ b/drivers/ata/ahci_platform.c
+@@ -95,6 +95,7 @@ static struct scsi_host_template ahci_platform_sht = {
+ static const struct of_device_id ahci_of_match[] = {
+       { .compatible = "calxeda,hb-ahci",  .data = &ahci_devtype[AHCI],},
++      { .compatible = "fsl,imx53-ahci",   .data = &ahci_devtype[IMX53_AHCI],},
+       { .compatible = "fsl,imx6q-ahci",   .data = &ahci_devtype[IMX6Q_AHCI],},
+       { .compatible = "snps,spear-ahci", },
+       {},
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/wandboard/imx/0007-imx6-enable-sata-clk-if-SATA_AHCI_PLATFORM.patch b/src/patches/kernel/wandboard/imx/0007-imx6-enable-sata-clk-if-SATA_AHCI_PLATFORM.patch
new file mode 100644 (file)
index 0000000..d85e3ff
--- /dev/null
@@ -0,0 +1,33 @@
+From 765561c8c72a46c2177b20d730e061ab2ff8f970 Mon Sep 17 00:00:00 2001
+From: Paolo Pisati <paolo.pisati@canonical.com>
+Date: Thu, 31 Jan 2013 18:33:46 +0100
+Subject: [PATCH 4/5] SAUCE: imx6: enable sata clk if SATA_AHCI_PLATFORM
+
+Clock modifications in 24d340ac "ARM i.MX6: Fix ethernet PLL clocks" broke the
+SATA clk, fix it.
+
+More info: http://www.spinics.net/lists/arm-kernel/msg221503.html
+
+Original-code-from: Shawn Guo <shawn.guo@linaro.org>
+Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
+---
+ arch/arm/mach-imx/clk-imx6q.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c
+index 4e3148c..38d707a 100644
+--- a/arch/arm/mach-imx/clk-imx6q.c
++++ b/arch/arm/mach-imx/clk-imx6q.c
+@@ -568,6 +568,9 @@ int __init mx6q_clocks_init(void)
+               clk_prepare_enable(clk[usbphy2_gate]);
+       }
++      if (IS_ENABLED(CONFIG_SATA_AHCI_PLATFORM))
++              clk_prepare_enable(clk[sata_ref_100m]);
++
+       /* Set initial power mode */
+       imx6q_set_lpm(WAIT_CLOCKED);
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/wandboard/imx/0008-ARM-imx6q-update-the-sata-bits-definitions-of-gpr13.patch b/src/patches/kernel/wandboard/imx/0008-ARM-imx6q-update-the-sata-bits-definitions-of-gpr13.patch
new file mode 100644 (file)
index 0000000..6f6ea69
--- /dev/null
@@ -0,0 +1,150 @@
+From 371863a788db77e6092d69df17d8884cb0d94270 Mon Sep 17 00:00:00 2001
+From: Richard Zhu <r65037@freescale.com>
+Date: Wed, 24 Jul 2013 06:15:28 +0000
+Subject: [PATCH 1/2] ARM: imx6q: update the sata bits definitions of gpr13
+
+Replace the SATA_PHY_# by the more readable definitons.
+
+tj: Being routed through libata branch to enable implementation of
+    ahci_imx.
+
+Signed-off-by: Richard Zhu <r65037@freescale.com>
+Acked-by: Shawn Guo <shawn.guo@linaro.org>
+Signed-off-by: Tejun Heo <tj@kernel.org>
+---
+ include/linux/mfd/syscon/imx6q-iomuxc-gpr.h |  121 +++++++++++++++++++--------
+ 1 file changed, 84 insertions(+), 37 deletions(-)
+
+diff --git a/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h b/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h
+index b1521e8..b6bdcd6 100644
+--- a/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h
++++ b/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h
+@@ -279,41 +279,88 @@
+ #define IMX6Q_GPR13_CAN2_STOP_REQ             BIT(29)
+ #define IMX6Q_GPR13_CAN1_STOP_REQ             BIT(28)
+ #define IMX6Q_GPR13_ENET_STOP_REQ             BIT(27)
+-#define IMX6Q_GPR13_SATA_PHY_8_MASK           (0x7 << 24)
+-#define IMX6Q_GPR13_SATA_PHY_8_0_5_DB         (0x0 << 24)
+-#define IMX6Q_GPR13_SATA_PHY_8_1_0_DB         (0x1 << 24)
+-#define IMX6Q_GPR13_SATA_PHY_8_1_5_DB         (0x2 << 24)
+-#define IMX6Q_GPR13_SATA_PHY_8_2_0_DB         (0x3 << 24)
+-#define IMX6Q_GPR13_SATA_PHY_8_2_5_DB         (0x4 << 24)
+-#define IMX6Q_GPR13_SATA_PHY_8_3_0_DB         (0x5 << 24)
+-#define IMX6Q_GPR13_SATA_PHY_8_3_5_DB         (0x6 << 24)
+-#define IMX6Q_GPR13_SATA_PHY_8_4_0_DB         (0x7 << 24)
+-#define IMX6Q_GPR13_SATA_PHY_7_MASK           (0x1f << 19)
+-#define IMX6Q_GPR13_SATA_PHY_7_SATA1I         (0x10 << 19)
+-#define IMX6Q_GPR13_SATA_PHY_7_SATA1M         (0x10 << 19)
+-#define IMX6Q_GPR13_SATA_PHY_7_SATA1X         (0x1a << 19)
+-#define IMX6Q_GPR13_SATA_PHY_7_SATA2I         (0x12 << 19)
+-#define IMX6Q_GPR13_SATA_PHY_7_SATA2M         (0x12 << 19)
+-#define IMX6Q_GPR13_SATA_PHY_7_SATA2X         (0x1a << 19)
+-#define IMX6Q_GPR13_SATA_PHY_6_MASK           (0x7 << 16)
+-#define IMX6Q_GPR13_SATA_SPEED_MASK           BIT(15)
+-#define IMX6Q_GPR13_SATA_SPEED_1P5G           0x0
+-#define IMX6Q_GPR13_SATA_SPEED_3P0G           BIT(15)
+-#define IMX6Q_GPR13_SATA_PHY_5                        BIT(14)
+-#define IMX6Q_GPR13_SATA_PHY_4_MASK           (0x7 << 11)
+-#define IMX6Q_GPR13_SATA_PHY_4_16_16          (0x0 << 11)
+-#define IMX6Q_GPR13_SATA_PHY_4_14_16          (0x1 << 11)
+-#define IMX6Q_GPR13_SATA_PHY_4_12_16          (0x2 << 11)
+-#define IMX6Q_GPR13_SATA_PHY_4_10_16          (0x3 << 11)
+-#define IMX6Q_GPR13_SATA_PHY_4_9_16           (0x4 << 11)
+-#define IMX6Q_GPR13_SATA_PHY_4_8_16           (0x5 << 11)
+-#define IMX6Q_GPR13_SATA_PHY_3_MASK           (0xf << 7)
+-#define IMX6Q_GPR13_SATA_PHY_3_OFF            0x7
+-#define IMX6Q_GPR13_SATA_PHY_2_MASK           (0x1f << 2)
+-#define IMX6Q_GPR13_SATA_PHY_2_OFF            0x2
+-#define IMX6Q_GPR13_SATA_PHY_1_MASK           (0x3 << 0)
+-#define IMX6Q_GPR13_SATA_PHY_1_FAST           (0x0 << 0)
+-#define IMX6Q_GPR13_SATA_PHY_1_MED            (0x1 << 0)
+-#define IMX6Q_GPR13_SATA_PHY_1_SLOW           (0x2 << 0)
+-
++#define IMX6Q_GPR13_SATA_RX_EQ_VAL_MASK               (0x7 << 24)
++#define IMX6Q_GPR13_SATA_RX_EQ_VAL_0_5_DB     (0x0 << 24)
++#define IMX6Q_GPR13_SATA_RX_EQ_VAL_1_0_DB     (0x1 << 24)
++#define IMX6Q_GPR13_SATA_RX_EQ_VAL_1_5_DB     (0x2 << 24)
++#define IMX6Q_GPR13_SATA_RX_EQ_VAL_2_0_DB     (0x3 << 24)
++#define IMX6Q_GPR13_SATA_RX_EQ_VAL_2_5_DB     (0x4 << 24)
++#define IMX6Q_GPR13_SATA_RX_EQ_VAL_3_0_DB     (0x5 << 24)
++#define IMX6Q_GPR13_SATA_RX_EQ_VAL_3_5_DB     (0x6 << 24)
++#define IMX6Q_GPR13_SATA_RX_EQ_VAL_4_0_DB     (0x7 << 24)
++#define IMX6Q_GPR13_SATA_RX_LOS_LVL_MASK      (0x1f << 19)
++#define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA1I    (0x10 << 19)
++#define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA1M    (0x10 << 19)
++#define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA1X    (0x1a << 19)
++#define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA2I    (0x12 << 19)
++#define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA2M    (0x12 << 19)
++#define IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA2X    (0x1a << 19)
++#define IMX6Q_GPR13_SATA_RX_DPLL_MODE_MASK    (0x7 << 16)
++#define IMX6Q_GPR13_SATA_RX_DPLL_MODE_1P_1F   (0x0 << 16)
++#define IMX6Q_GPR13_SATA_RX_DPLL_MODE_2P_2F   (0x1 << 16)
++#define IMX6Q_GPR13_SATA_RX_DPLL_MODE_1P_4F   (0x2 << 16)
++#define IMX6Q_GPR13_SATA_RX_DPLL_MODE_2P_4F   (0x3 << 16)
++#define IMX6Q_GPR13_SATA_SPD_MODE_MASK                BIT(15)
++#define IMX6Q_GPR13_SATA_SPD_MODE_1P5G                0x0
++#define IMX6Q_GPR13_SATA_SPD_MODE_3P0G                BIT(15)
++#define IMX6Q_GPR13_SATA_MPLL_SS_EN           BIT(14)
++#define IMX6Q_GPR13_SATA_TX_ATTEN_MASK                (0x7 << 11)
++#define IMX6Q_GPR13_SATA_TX_ATTEN_16_16               (0x0 << 11)
++#define IMX6Q_GPR13_SATA_TX_ATTEN_14_16               (0x1 << 11)
++#define IMX6Q_GPR13_SATA_TX_ATTEN_12_16               (0x2 << 11)
++#define IMX6Q_GPR13_SATA_TX_ATTEN_10_16               (0x3 << 11)
++#define IMX6Q_GPR13_SATA_TX_ATTEN_9_16                (0x4 << 11)
++#define IMX6Q_GPR13_SATA_TX_ATTEN_8_16                (0x5 << 11)
++#define IMX6Q_GPR13_SATA_TX_BOOST_MASK                (0xf << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_0_00_DB     (0x0 << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_0_37_DB     (0x1 << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_0_74_DB     (0x2 << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_1_11_DB     (0x3 << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_1_48_DB     (0x4 << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_1_85_DB     (0x5 << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_2_22_DB     (0x6 << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_2_59_DB     (0x7 << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_2_96_DB     (0x8 << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_3_33_DB     (0x9 << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_3_70_DB     (0xa << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_4_07_DB     (0xb << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_4_44_DB     (0xc << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_4_81_DB     (0xd << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_5_28_DB     (0xe << 7)
++#define IMX6Q_GPR13_SATA_TX_BOOST_5_75_DB     (0xf << 7)
++#define IMX6Q_GPR13_SATA_TX_LVL_MASK          (0x1f << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_0_937_V               (0x00 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_0_947_V               (0x01 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_0_957_V               (0x02 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_0_966_V               (0x03 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_0_976_V               (0x04 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_0_986_V               (0x05 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_0_996_V               (0x06 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_005_V               (0x07 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_015_V               (0x08 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_025_V               (0x09 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_035_V               (0x0a << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_045_V               (0x0b << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_054_V               (0x0c << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_064_V               (0x0d << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_074_V               (0x0e << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_084_V               (0x0f << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_094_V               (0x10 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_104_V               (0x11 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_113_V               (0x12 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_123_V               (0x13 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_133_V               (0x14 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_143_V               (0x15 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_152_V               (0x16 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_162_V               (0x17 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_172_V               (0x18 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_182_V               (0x19 << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_191_V               (0x1a << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_201_V               (0x1b << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_211_V               (0x1c << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_221_V               (0x1d << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_230_V               (0x1e << 2)
++#define IMX6Q_GPR13_SATA_TX_LVL_1_240_V               (0x1f << 2)
++#define IMX6Q_GPR13_SATA_MPLL_CLK_EN          BIT(1)
++#define IMX6Q_GPR13_SATA_TX_EDGE_RATE         BIT(0)
+ #endif /* __LINUX_IMX6Q_IOMUXC_GPR_H */
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/wandboard/imx/0009-ahci_imx-add-ahci-sata-support-on-imx-platforms.patch b/src/patches/kernel/wandboard/imx/0009-ahci_imx-add-ahci-sata-support-on-imx-platforms.patch
new file mode 100644 (file)
index 0000000..758476a
--- /dev/null
@@ -0,0 +1,316 @@
+From 093f4fdd74f29031d79be747c65b95fb16601a92 Mon Sep 17 00:00:00 2001
+From: Richard Zhu <r65037@freescale.com>
+Date: Wed, 24 Jul 2013 06:15:29 +0000
+Subject: [PATCH 2/2] ahci_imx: add ahci sata support on imx platforms
+
+imx6q contains one Synopsys AHCI SATA controller, But it can't share
+ahci_platform driver with other controllers because there are some
+misalignments of the generic AHCI controller - the bits definitions of
+the HBA registers, the Vendor Specific registers, the AHCI PHY clock
+and the AHCI signals adjustment window(GPR13 register).
+
+ - CAP_SSS(bit20) of the HOST_CAP is writable, default value is '0',
+   should be configured to be '1'
+
+ - bit0 (only one AHCI SATA port on imx6q) of the HOST_PORTS_IMPL
+   should be set to be '1'.(default 0)
+
+ - One Vendor Specific register HOST_TIMER1MS(offset:0xe0) should be
+   configured regarding to the frequency of AHB bus clock.
+
+ - Configurations of the AHCI PHY clock, and the signal parameters of
+   the GPR13
+
+Setup its own ahci sata driver, contained the imx6q specific
+initialized codes, re-use the generic ahci_platform driver, and keep
+the generic ahci_platform driver clean as much as possible.
+
+tj: patch description reformatted
+
+Signed-off-by: Richard Zhu <r65037@freescale.com>
+Reviewed-by: Shawn Guo <shawn.guo@linaro.org>
+Signed-off-by: Tejun Heo <tj@kernel.org>
+---
+ drivers/ata/Kconfig    |    9 ++
+ drivers/ata/Makefile   |    1 +
+ drivers/ata/ahci_imx.c |  236 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 246 insertions(+)
+ create mode 100644 drivers/ata/ahci_imx.c
+
+diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
+index 80dc988..cbf7a16 100644
+--- a/drivers/ata/Kconfig
++++ b/drivers/ata/Kconfig
+@@ -97,6 +97,15 @@ config SATA_AHCI_PLATFORM
+         If unsure, say N.
++config AHCI_IMX
++      tristate "Freescale i.MX AHCI SATA support"
++      depends on SATA_AHCI_PLATFORM
++      help
++        This option enables support for the Freescale i.MX SoC's
++        onboard AHCI SATA.
++
++        If unsure, say N.
++
+ config SATA_FSL
+       tristate "Freescale 3.0Gbps SATA support"
+       depends on FSL_SOC
+diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
+index c04d0fd..46518c6 100644
+--- a/drivers/ata/Makefile
++++ b/drivers/ata/Makefile
+@@ -10,6 +10,7 @@ obj-$(CONFIG_SATA_INIC162X)  += sata_inic162x.o
+ obj-$(CONFIG_SATA_SIL24)      += sata_sil24.o
+ obj-$(CONFIG_SATA_DWC)                += sata_dwc_460ex.o
+ obj-$(CONFIG_SATA_HIGHBANK)   += sata_highbank.o libahci.o
++obj-$(CONFIG_AHCI_IMX)                += ahci_imx.o
+ # SFF w/ custom DMA
+ obj-$(CONFIG_PDC_ADMA)                += pdc_adma.o
+diff --git a/drivers/ata/ahci_imx.c b/drivers/ata/ahci_imx.c
+new file mode 100644
+index 0000000..58debb0
+--- /dev/null
++++ b/drivers/ata/ahci_imx.c
+@@ -0,0 +1,236 @@
++/*
++ * Freescale IMX AHCI SATA platform driver
++ * Copyright 2013 Freescale Semiconductor, Inc.
++ *
++ * based on the AHCI SATA platform driver by Jeff Garzik and Anton Vorontsov
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms and conditions of the GNU General Public License,
++ * version 2, as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope 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 <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/platform_device.h>
++#include <linux/regmap.h>
++#include <linux/ahci_platform.h>
++#include <linux/of_device.h>
++#include <linux/mfd/syscon.h>
++#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
++#include "ahci.h"
++
++enum {
++      HOST_TIMER1MS = 0xe0, /* Timer 1-ms */
++};
++
++struct imx_ahci_priv {
++      struct platform_device *ahci_pdev;
++      struct clk *sata_ref_clk;
++      struct clk *ahb_clk;
++      struct regmap *gpr;
++};
++
++static int imx6q_sata_init(struct device *dev, void __iomem *mmio)
++{
++      int ret = 0;
++      unsigned int reg_val;
++      struct imx_ahci_priv *imxpriv = dev_get_drvdata(dev->parent);
++
++      imxpriv->gpr =
++              syscon_regmap_lookup_by_compatible("fsl,imx6q-iomuxc-gpr");
++      if (IS_ERR(imxpriv->gpr)) {
++              dev_err(dev, "failed to find fsl,imx6q-iomux-gpr regmap\n");
++              return PTR_ERR(imxpriv->gpr);
++      }
++
++      ret = clk_prepare_enable(imxpriv->sata_ref_clk);
++      if (ret < 0) {
++              dev_err(dev, "prepare-enable sata_ref clock err:%d\n", ret);
++              return ret;
++      }
++
++      /*
++       * set PHY Paremeters, two steps to configure the GPR13,
++       * one write for rest of parameters, mask of first write
++       * is 0x07fffffd, and the other one write for setting
++       * the mpll_clk_en.
++       */
++      regmap_update_bits(imxpriv->gpr, 0x34, IMX6Q_GPR13_SATA_RX_EQ_VAL_MASK
++                      | IMX6Q_GPR13_SATA_RX_LOS_LVL_MASK
++                      | IMX6Q_GPR13_SATA_RX_DPLL_MODE_MASK
++                      | IMX6Q_GPR13_SATA_SPD_MODE_MASK
++                      | IMX6Q_GPR13_SATA_MPLL_SS_EN
++                      | IMX6Q_GPR13_SATA_TX_ATTEN_MASK
++                      | IMX6Q_GPR13_SATA_TX_BOOST_MASK
++                      | IMX6Q_GPR13_SATA_TX_LVL_MASK
++                      | IMX6Q_GPR13_SATA_TX_EDGE_RATE
++                      , IMX6Q_GPR13_SATA_RX_EQ_VAL_3_0_DB
++                      | IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA2M
++                      | IMX6Q_GPR13_SATA_RX_DPLL_MODE_2P_4F
++                      | IMX6Q_GPR13_SATA_SPD_MODE_3P0G
++                      | IMX6Q_GPR13_SATA_MPLL_SS_EN
++                      | IMX6Q_GPR13_SATA_TX_ATTEN_9_16
++                      | IMX6Q_GPR13_SATA_TX_BOOST_3_33_DB
++                      | IMX6Q_GPR13_SATA_TX_LVL_1_025_V);
++      regmap_update_bits(imxpriv->gpr, 0x34, IMX6Q_GPR13_SATA_MPLL_CLK_EN,
++                      IMX6Q_GPR13_SATA_MPLL_CLK_EN);
++      usleep_range(100, 200);
++
++      /*
++       * Configure the HWINIT bits of the HOST_CAP and HOST_PORTS_IMPL,
++       * and IP vendor specific register HOST_TIMER1MS.
++       * Configure CAP_SSS (support stagered spin up).
++       * Implement the port0.
++       * Get the ahb clock rate, and configure the TIMER1MS register.
++       */
++      reg_val = readl(mmio + HOST_CAP);
++      if (!(reg_val & HOST_CAP_SSS)) {
++              reg_val |= HOST_CAP_SSS;
++              writel(reg_val, mmio + HOST_CAP);
++      }
++      reg_val = readl(mmio + HOST_PORTS_IMPL);
++      if (!(reg_val & 0x1)) {
++              reg_val |= 0x1;
++              writel(reg_val, mmio + HOST_PORTS_IMPL);
++      }
++
++      reg_val = clk_get_rate(imxpriv->ahb_clk) / 1000;
++      writel(reg_val, mmio + HOST_TIMER1MS);
++
++      return 0;
++}
++
++static void imx6q_sata_exit(struct device *dev)
++{
++      struct imx_ahci_priv *imxpriv =  dev_get_drvdata(dev->parent);
++
++      regmap_update_bits(imxpriv->gpr, 0x34, IMX6Q_GPR13_SATA_MPLL_CLK_EN,
++                      !IMX6Q_GPR13_SATA_MPLL_CLK_EN);
++      clk_disable_unprepare(imxpriv->sata_ref_clk);
++}
++
++static struct ahci_platform_data imx6q_sata_pdata = {
++      .init = imx6q_sata_init,
++      .exit = imx6q_sata_exit,
++};
++
++static const struct of_device_id imx_ahci_of_match[] = {
++      { .compatible = "fsl,imx6q-ahci", .data = &imx6q_sata_pdata},
++      {},
++};
++MODULE_DEVICE_TABLE(of, imx_ahci_of_match);
++
++static int imx_ahci_probe(struct platform_device *pdev)
++{
++      struct device *dev = &pdev->dev;
++      struct resource *mem, *irq, res[2];
++      const struct of_device_id *of_id;
++      const struct ahci_platform_data *pdata = NULL;
++      struct imx_ahci_priv *imxpriv;
++      struct device *ahci_dev;
++      struct platform_device *ahci_pdev;
++      int ret;
++
++      imxpriv = devm_kzalloc(dev, sizeof(*imxpriv), GFP_KERNEL);
++      if (!imxpriv) {
++              dev_err(dev, "can't alloc ahci_host_priv\n");
++              return -ENOMEM;
++      }
++
++      ahci_pdev = platform_device_alloc("ahci", -1);
++      if (!ahci_pdev)
++              return -ENODEV;
++
++      ahci_dev = &ahci_pdev->dev;
++      ahci_dev->parent = dev;
++
++      imxpriv->ahb_clk = devm_clk_get(dev, "ahb");
++      if (IS_ERR(imxpriv->ahb_clk)) {
++              dev_err(dev, "can't get ahb clock.\n");
++              ret = PTR_ERR(imxpriv->ahb_clk);
++              goto err_out;
++      }
++
++      imxpriv->sata_ref_clk = devm_clk_get(dev, "sata_ref");
++      if (IS_ERR(imxpriv->sata_ref_clk)) {
++              dev_err(dev, "can't get sata_ref clock.\n");
++              ret = PTR_ERR(imxpriv->sata_ref_clk);
++              goto err_out;
++      }
++
++      imxpriv->ahci_pdev = ahci_pdev;
++      platform_set_drvdata(pdev, imxpriv);
++
++      of_id = of_match_device(imx_ahci_of_match, dev);
++      if (of_id) {
++              pdata = of_id->data;
++      } else {
++              ret = -EINVAL;
++              goto err_out;
++      }
++
++      mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++      irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
++      if (!mem || !irq) {
++              dev_err(dev, "no mmio/irq resource\n");
++              ret = -ENOMEM;
++              goto err_out;
++      }
++
++      res[0] = *mem;
++      res[1] = *irq;
++
++      ahci_dev->coherent_dma_mask = DMA_BIT_MASK(32);
++      ahci_dev->dma_mask = &ahci_dev->coherent_dma_mask;
++      ahci_dev->of_node = dev->of_node;
++
++      ret = platform_device_add_resources(ahci_pdev, res, 2);
++      if (ret)
++              goto err_out;
++
++      ret = platform_device_add_data(ahci_pdev, pdata, sizeof(*pdata));
++      if (ret)
++              goto err_out;
++
++      ret = platform_device_add(ahci_pdev);
++      if (ret) {
++err_out:
++              platform_device_put(ahci_pdev);
++              return ret;
++      }
++
++      return 0;
++}
++
++static int imx_ahci_remove(struct platform_device *pdev)
++{
++      struct imx_ahci_priv *imxpriv = platform_get_drvdata(pdev);
++      struct platform_device *ahci_pdev = imxpriv->ahci_pdev;
++
++      platform_device_unregister(ahci_pdev);
++      return 0;
++}
++
++static struct platform_driver imx_ahci_driver = {
++      .probe = imx_ahci_probe,
++      .remove = imx_ahci_remove,
++      .driver = {
++              .name = "ahci-imx",
++              .owner = THIS_MODULE,
++              .of_match_table = imx_ahci_of_match,
++      },
++};
++module_platform_driver(imx_ahci_driver);
++
++MODULE_DESCRIPTION("Freescale i.MX AHCI SATA platform driver");
++MODULE_AUTHOR("Richard Zhu <Hong-Xing.Zhu@freescale.com>");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS("ahci:imx");
+-- 
+1.7.10.4
+
diff --git a/src/patches/kernel/wandboard/imx/0010-ahci_imx-depend-on-CONFIG_MFD_SYSCON.patch b/src/patches/kernel/wandboard/imx/0010-ahci_imx-depend-on-CONFIG_MFD_SYSCON.patch
new file mode 100644 (file)
index 0000000..86e7d8f
--- /dev/null
@@ -0,0 +1,24 @@
+From: Tejun Heo <tj@kernel.org>
+Subject: [PATCH] ahci_imx: depend on CONFIG_MFD_SYSCON
+
+ahci_imx makes use of regmap but the dependency wasn't specified in
+Kconfig leading build failures if CONFIG_AHCI_IMX is enabled but
+CONFIG_MFD_SYSCON is not.  Add the Kconfig dependency.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
+---
+ drivers/ata/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/ata/Kconfig
++++ b/drivers/ata/Kconfig
+@@ -99,7 +99,7 @@ config SATA_AHCI_PLATFORM
+ config AHCI_IMX
+       tristate "Freescale i.MX AHCI SATA support"
+-      depends on SATA_AHCI_PLATFORM
++      depends on SATA_AHCI_PLATFORM && MFD_SYSCON
+       help
+         This option enables support for the Freescale i.MX SoC's
+         onboard AHCI SATA.
diff --git a/src/patches/kernel/wandboard/imx/0011-add-pcie-designware.patch b/src/patches/kernel/wandboard/imx/0011-add-pcie-designware.patch
new file mode 100644 (file)
index 0000000..3d865d3
--- /dev/null
@@ -0,0 +1,636 @@
+--- /dev/null  2013-12-09 21:30:35.000000000 +0000
++++ drivers/pci/host/pcie-designware.h 2013-09-20 01:59:32.000000000 +0000
+@@ -0,0 +1,65 @@
++/*
++ * Synopsys Designware PCIe host controller driver
++ *
++ * Copyright (C) 2013 Samsung Electronics Co., Ltd.
++ *            http://www.samsung.com
++ *
++ * Author: Jingoo Han <jg1.han@samsung.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.
++ */
++
++struct pcie_port_info {
++      u32             cfg0_size;
++      u32             cfg1_size;
++      u32             io_size;
++      u32             mem_size;
++      phys_addr_t     io_bus_addr;
++      phys_addr_t     mem_bus_addr;
++};
++
++struct pcie_port {
++      struct device           *dev;
++      u8                      root_bus_nr;
++      void __iomem            *dbi_base;
++      u64                     cfg0_base;
++      void __iomem            *va_cfg0_base;
++      u64                     cfg1_base;
++      void __iomem            *va_cfg1_base;
++      u64                     io_base;
++      u64                     mem_base;
++      spinlock_t              conf_lock;
++      struct resource         cfg;
++      struct resource         io;
++      struct resource         mem;
++      struct pcie_port_info   config;
++      int                     irq;
++      u32                     lanes;
++      struct pcie_host_ops    *ops;
++};
++
++struct pcie_host_ops {
++      void (*readl_rc)(struct pcie_port *pp,
++                      void __iomem *dbi_base, u32 *val);
++      void (*writel_rc)(struct pcie_port *pp,
++                      u32 val, void __iomem *dbi_base);
++      int (*rd_own_conf)(struct pcie_port *pp, int where, int size, u32 *val);
++      int (*wr_own_conf)(struct pcie_port *pp, int where, int size, u32 val);
++      int (*link_up)(struct pcie_port *pp);
++      void (*host_init)(struct pcie_port *pp);
++};
++
++extern unsigned long global_io_offset;
++
++int cfg_read(void __iomem *addr, int where, int size, u32 *val);
++int cfg_write(void __iomem *addr, int where, int size, u32 val);
++int dw_pcie_wr_own_conf(struct pcie_port *pp, int where, int size, u32 val);
++int dw_pcie_rd_own_conf(struct pcie_port *pp, int where, int size, u32 *val);
++int dw_pcie_link_up(struct pcie_port *pp);
++void dw_pcie_setup_rc(struct pcie_port *pp);
++int dw_pcie_host_init(struct pcie_port *pp);
++int dw_pcie_setup(int nr, struct pci_sys_data *sys);
++struct pci_bus *dw_pcie_scan_bus(int nr, struct pci_sys_data *sys);
++int dw_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
+--- /dev/null  2013-12-09 21:30:35.000000000 +0000
++++ drivers/pci/host/pcie-designware.c 2013-09-20 01:59:32.000000000 +0000
+@@ -0,0 +1,565 @@
++/*
++ * Synopsys Designware PCIe host controller driver
++ *
++ * Copyright (C) 2013 Samsung Electronics Co., Ltd.
++ *            http://www.samsung.com
++ *
++ * Author: Jingoo Han <jg1.han@samsung.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/kernel.h>
++#include <linux/module.h>
++#include <linux/of_address.h>
++#include <linux/pci.h>
++#include <linux/pci_regs.h>
++#include <linux/types.h>
++
++#include "pcie-designware.h"
++
++/* Synopsis specific PCIE configuration registers */
++#define PCIE_PORT_LINK_CONTROL                0x710
++#define PORT_LINK_MODE_MASK           (0x3f << 16)
++#define PORT_LINK_MODE_1_LANES                (0x1 << 16)
++#define PORT_LINK_MODE_2_LANES                (0x3 << 16)
++#define PORT_LINK_MODE_4_LANES                (0x7 << 16)
++
++#define PCIE_LINK_WIDTH_SPEED_CONTROL 0x80C
++#define PORT_LOGIC_SPEED_CHANGE               (0x1 << 17)
++#define PORT_LOGIC_LINK_WIDTH_MASK    (0x1ff << 8)
++#define PORT_LOGIC_LINK_WIDTH_1_LANES (0x1 << 8)
++#define PORT_LOGIC_LINK_WIDTH_2_LANES (0x2 << 8)
++#define PORT_LOGIC_LINK_WIDTH_4_LANES (0x4 << 8)
++
++#define PCIE_MSI_ADDR_LO              0x820
++#define PCIE_MSI_ADDR_HI              0x824
++#define PCIE_MSI_INTR0_ENABLE         0x828
++#define PCIE_MSI_INTR0_MASK           0x82C
++#define PCIE_MSI_INTR0_STATUS         0x830
++
++#define PCIE_ATU_VIEWPORT             0x900
++#define PCIE_ATU_REGION_INBOUND               (0x1 << 31)
++#define PCIE_ATU_REGION_OUTBOUND      (0x0 << 31)
++#define PCIE_ATU_REGION_INDEX1                (0x1 << 0)
++#define PCIE_ATU_REGION_INDEX0                (0x0 << 0)
++#define PCIE_ATU_CR1                  0x904
++#define PCIE_ATU_TYPE_MEM             (0x0 << 0)
++#define PCIE_ATU_TYPE_IO              (0x2 << 0)
++#define PCIE_ATU_TYPE_CFG0            (0x4 << 0)
++#define PCIE_ATU_TYPE_CFG1            (0x5 << 0)
++#define PCIE_ATU_CR2                  0x908
++#define PCIE_ATU_ENABLE                       (0x1 << 31)
++#define PCIE_ATU_BAR_MODE_ENABLE      (0x1 << 30)
++#define PCIE_ATU_LOWER_BASE           0x90C
++#define PCIE_ATU_UPPER_BASE           0x910
++#define PCIE_ATU_LIMIT                        0x914
++#define PCIE_ATU_LOWER_TARGET         0x918
++#define PCIE_ATU_BUS(x)                       (((x) & 0xff) << 24)
++#define PCIE_ATU_DEV(x)                       (((x) & 0x1f) << 19)
++#define PCIE_ATU_FUNC(x)              (((x) & 0x7) << 16)
++#define PCIE_ATU_UPPER_TARGET         0x91C
++
++static struct hw_pci dw_pci;
++
++unsigned long global_io_offset;
++
++static inline struct pcie_port *sys_to_pcie(struct pci_sys_data *sys)
++{
++      return sys->private_data;
++}
++
++int cfg_read(void __iomem *addr, int where, int size, u32 *val)
++{
++      *val = readl(addr);
++
++      if (size == 1)
++              *val = (*val >> (8 * (where & 3))) & 0xff;
++      else if (size == 2)
++              *val = (*val >> (8 * (where & 3))) & 0xffff;
++      else if (size != 4)
++              return PCIBIOS_BAD_REGISTER_NUMBER;
++
++      return PCIBIOS_SUCCESSFUL;
++}
++
++int cfg_write(void __iomem *addr, int where, int size, u32 val)
++{
++      if (size == 4)
++              writel(val, addr);
++      else if (size == 2)
++              writew(val, addr + (where & 2));
++      else if (size == 1)
++              writeb(val, addr + (where & 3));
++      else
++              return PCIBIOS_BAD_REGISTER_NUMBER;
++
++      return PCIBIOS_SUCCESSFUL;
++}
++
++static inline void dw_pcie_readl_rc(struct pcie_port *pp, u32 reg, u32 *val)
++{
++      if (pp->ops->readl_rc)
++              pp->ops->readl_rc(pp, pp->dbi_base + reg, val);
++      else
++              *val = readl(pp->dbi_base + reg);
++}
++
++static inline void dw_pcie_writel_rc(struct pcie_port *pp, u32 val, u32 reg)
++{
++      if (pp->ops->writel_rc)
++              pp->ops->writel_rc(pp, val, pp->dbi_base + reg);
++      else
++              writel(val, pp->dbi_base + reg);
++}
++
++int dw_pcie_rd_own_conf(struct pcie_port *pp, int where, int size,
++                              u32 *val)
++{
++      int ret;
++
++      if (pp->ops->rd_own_conf)
++              ret = pp->ops->rd_own_conf(pp, where, size, val);
++      else
++              ret = cfg_read(pp->dbi_base + (where & ~0x3), where, size, val);
++
++      return ret;
++}
++
++int dw_pcie_wr_own_conf(struct pcie_port *pp, int where, int size,
++                              u32 val)
++{
++      int ret;
++
++      if (pp->ops->wr_own_conf)
++              ret = pp->ops->wr_own_conf(pp, where, size, val);
++      else
++              ret = cfg_write(pp->dbi_base + (where & ~0x3), where, size,
++                              val);
++
++      return ret;
++}
++
++int dw_pcie_link_up(struct pcie_port *pp)
++{
++      if (pp->ops->link_up)
++              return pp->ops->link_up(pp);
++      else
++              return 0;
++}
++
++int __init dw_pcie_host_init(struct pcie_port *pp)
++{
++      struct device_node *np = pp->dev->of_node;
++      struct of_pci_range range;
++      struct of_pci_range_parser parser;
++      u32 val;
++
++      if (of_pci_range_parser_init(&parser, np)) {
++              dev_err(pp->dev, "missing ranges property\n");
++              return -EINVAL;
++      }
++
++      /* Get the I/O and memory ranges from DT */
++      for_each_of_pci_range(&parser, &range) {
++              unsigned long restype = range.flags & IORESOURCE_TYPE_BITS;
++              if (restype == IORESOURCE_IO) {
++                      of_pci_range_to_resource(&range, np, &pp->io);
++                      pp->io.name = "I/O";
++                      pp->io.start = max_t(resource_size_t,
++                                           PCIBIOS_MIN_IO,
++                                           range.pci_addr + global_io_offset);
++                      pp->io.end = min_t(resource_size_t,
++                                         IO_SPACE_LIMIT,
++                                         range.pci_addr + range.size
++                                         + global_io_offset);
++                      pp->config.io_size = resource_size(&pp->io);
++                      pp->config.io_bus_addr = range.pci_addr;
++              }
++              if (restype == IORESOURCE_MEM) {
++                      of_pci_range_to_resource(&range, np, &pp->mem);
++                      pp->mem.name = "MEM";
++                      pp->config.mem_size = resource_size(&pp->mem);
++                      pp->config.mem_bus_addr = range.pci_addr;
++              }
++              if (restype == 0) {
++                      of_pci_range_to_resource(&range, np, &pp->cfg);
++                      pp->config.cfg0_size = resource_size(&pp->cfg)/2;
++                      pp->config.cfg1_size = resource_size(&pp->cfg)/2;
++              }
++      }
++
++      if (!pp->dbi_base) {
++              pp->dbi_base = devm_ioremap(pp->dev, pp->cfg.start,
++                                      resource_size(&pp->cfg));
++              if (!pp->dbi_base) {
++                      dev_err(pp->dev, "error with ioremap\n");
++                      return -ENOMEM;
++              }
++      }
++
++      pp->cfg0_base = pp->cfg.start;
++      pp->cfg1_base = pp->cfg.start + pp->config.cfg0_size;
++      pp->io_base = pp->io.start;
++      pp->mem_base = pp->mem.start;
++
++      pp->va_cfg0_base = devm_ioremap(pp->dev, pp->cfg0_base,
++                                      pp->config.cfg0_size);
++      if (!pp->va_cfg0_base) {
++              dev_err(pp->dev, "error with ioremap in function\n");
++              return -ENOMEM;
++      }
++      pp->va_cfg1_base = devm_ioremap(pp->dev, pp->cfg1_base,
++                                      pp->config.cfg1_size);
++      if (!pp->va_cfg1_base) {
++              dev_err(pp->dev, "error with ioremap\n");
++              return -ENOMEM;
++      }
++
++      if (of_property_read_u32(np, "num-lanes", &pp->lanes)) {
++              dev_err(pp->dev, "Failed to parse the number of lanes\n");
++              return -EINVAL;
++      }
++
++      if (pp->ops->host_init)
++              pp->ops->host_init(pp);
++
++      dw_pcie_wr_own_conf(pp, PCI_BASE_ADDRESS_0, 4, 0);
++
++      /* program correct class for RC */
++      dw_pcie_wr_own_conf(pp, PCI_CLASS_DEVICE, 2, PCI_CLASS_BRIDGE_PCI);
++
++      dw_pcie_rd_own_conf(pp, PCIE_LINK_WIDTH_SPEED_CONTROL, 4, &val);
++      val |= PORT_LOGIC_SPEED_CHANGE;
++      dw_pcie_wr_own_conf(pp, PCIE_LINK_WIDTH_SPEED_CONTROL, 4, val);
++
++      dw_pci.nr_controllers = 1;
++      dw_pci.private_data = (void **)&pp;
++
++      pci_common_init(&dw_pci);
++      pci_assign_unassigned_resources();
++#ifdef CONFIG_PCI_DOMAINS
++      dw_pci.domain++;
++#endif
++
++      return 0;
++}
++
++static void dw_pcie_prog_viewport_cfg0(struct pcie_port *pp, u32 busdev)
++{
++      /* Program viewport 0 : OUTBOUND : CFG0 */
++      dw_pcie_writel_rc(pp, PCIE_ATU_REGION_OUTBOUND | PCIE_ATU_REGION_INDEX0,
++                        PCIE_ATU_VIEWPORT);
++      dw_pcie_writel_rc(pp, pp->cfg0_base, PCIE_ATU_LOWER_BASE);
++      dw_pcie_writel_rc(pp, (pp->cfg0_base >> 32), PCIE_ATU_UPPER_BASE);
++      dw_pcie_writel_rc(pp, pp->cfg0_base + pp->config.cfg0_size - 1,
++                        PCIE_ATU_LIMIT);
++      dw_pcie_writel_rc(pp, busdev, PCIE_ATU_LOWER_TARGET);
++      dw_pcie_writel_rc(pp, 0, PCIE_ATU_UPPER_TARGET);
++      dw_pcie_writel_rc(pp, PCIE_ATU_TYPE_CFG0, PCIE_ATU_CR1);
++      dw_pcie_writel_rc(pp, PCIE_ATU_ENABLE, PCIE_ATU_CR2);
++}
++
++static void dw_pcie_prog_viewport_cfg1(struct pcie_port *pp, u32 busdev)
++{
++      /* Program viewport 1 : OUTBOUND : CFG1 */
++      dw_pcie_writel_rc(pp, PCIE_ATU_REGION_OUTBOUND | PCIE_ATU_REGION_INDEX1,
++                        PCIE_ATU_VIEWPORT);
++      dw_pcie_writel_rc(pp, PCIE_ATU_TYPE_CFG1, PCIE_ATU_CR1);
++      dw_pcie_writel_rc(pp, PCIE_ATU_ENABLE, PCIE_ATU_CR2);
++      dw_pcie_writel_rc(pp, pp->cfg1_base, PCIE_ATU_LOWER_BASE);
++      dw_pcie_writel_rc(pp, (pp->cfg1_base >> 32), PCIE_ATU_UPPER_BASE);
++      dw_pcie_writel_rc(pp, pp->cfg1_base + pp->config.cfg1_size - 1,
++                        PCIE_ATU_LIMIT);
++      dw_pcie_writel_rc(pp, busdev, PCIE_ATU_LOWER_TARGET);
++      dw_pcie_writel_rc(pp, 0, PCIE_ATU_UPPER_TARGET);
++}
++
++static void dw_pcie_prog_viewport_mem_outbound(struct pcie_port *pp)
++{
++      /* Program viewport 0 : OUTBOUND : MEM */
++      dw_pcie_writel_rc(pp, PCIE_ATU_REGION_OUTBOUND | PCIE_ATU_REGION_INDEX0,
++                        PCIE_ATU_VIEWPORT);
++      dw_pcie_writel_rc(pp, PCIE_ATU_TYPE_MEM, PCIE_ATU_CR1);
++      dw_pcie_writel_rc(pp, PCIE_ATU_ENABLE, PCIE_ATU_CR2);
++      dw_pcie_writel_rc(pp, pp->mem_base, PCIE_ATU_LOWER_BASE);
++      dw_pcie_writel_rc(pp, (pp->mem_base >> 32), PCIE_ATU_UPPER_BASE);
++      dw_pcie_writel_rc(pp, pp->mem_base + pp->config.mem_size - 1,
++                        PCIE_ATU_LIMIT);
++      dw_pcie_writel_rc(pp, pp->config.mem_bus_addr, PCIE_ATU_LOWER_TARGET);
++      dw_pcie_writel_rc(pp, upper_32_bits(pp->config.mem_bus_addr),
++                        PCIE_ATU_UPPER_TARGET);
++}
++
++static void dw_pcie_prog_viewport_io_outbound(struct pcie_port *pp)
++{
++      /* Program viewport 1 : OUTBOUND : IO */
++      dw_pcie_writel_rc(pp, PCIE_ATU_REGION_OUTBOUND | PCIE_ATU_REGION_INDEX1,
++                        PCIE_ATU_VIEWPORT);
++      dw_pcie_writel_rc(pp, PCIE_ATU_TYPE_IO, PCIE_ATU_CR1);
++      dw_pcie_writel_rc(pp, PCIE_ATU_ENABLE, PCIE_ATU_CR2);
++      dw_pcie_writel_rc(pp, pp->io_base, PCIE_ATU_LOWER_BASE);
++      dw_pcie_writel_rc(pp, (pp->io_base >> 32), PCIE_ATU_UPPER_BASE);
++      dw_pcie_writel_rc(pp, pp->io_base + pp->config.io_size - 1,
++                        PCIE_ATU_LIMIT);
++      dw_pcie_writel_rc(pp, pp->config.io_bus_addr, PCIE_ATU_LOWER_TARGET);
++      dw_pcie_writel_rc(pp, upper_32_bits(pp->config.io_bus_addr),
++                        PCIE_ATU_UPPER_TARGET);
++}
++
++static int dw_pcie_rd_other_conf(struct pcie_port *pp, struct pci_bus *bus,
++              u32 devfn, int where, int size, u32 *val)
++{
++      int ret = PCIBIOS_SUCCESSFUL;
++      u32 address, busdev;
++
++      busdev = PCIE_ATU_BUS(bus->number) | PCIE_ATU_DEV(PCI_SLOT(devfn)) |
++               PCIE_ATU_FUNC(PCI_FUNC(devfn));
++      address = where & ~0x3;
++
++      if (bus->parent->number == pp->root_bus_nr) {
++              dw_pcie_prog_viewport_cfg0(pp, busdev);
++              ret = cfg_read(pp->va_cfg0_base + address, where, size, val);
++              dw_pcie_prog_viewport_mem_outbound(pp);
++      } else {
++              dw_pcie_prog_viewport_cfg1(pp, busdev);
++              ret = cfg_read(pp->va_cfg1_base + address, where, size, val);
++              dw_pcie_prog_viewport_io_outbound(pp);
++      }
++
++      return ret;
++}
++
++static int dw_pcie_wr_other_conf(struct pcie_port *pp, struct pci_bus *bus,
++              u32 devfn, int where, int size, u32 val)
++{
++      int ret = PCIBIOS_SUCCESSFUL;
++      u32 address, busdev;
++
++      busdev = PCIE_ATU_BUS(bus->number) | PCIE_ATU_DEV(PCI_SLOT(devfn)) |
++               PCIE_ATU_FUNC(PCI_FUNC(devfn));
++      address = where & ~0x3;
++
++      if (bus->parent->number == pp->root_bus_nr) {
++              dw_pcie_prog_viewport_cfg0(pp, busdev);
++              ret = cfg_write(pp->va_cfg0_base + address, where, size, val);
++              dw_pcie_prog_viewport_mem_outbound(pp);
++      } else {
++              dw_pcie_prog_viewport_cfg1(pp, busdev);
++              ret = cfg_write(pp->va_cfg1_base + address, where, size, val);
++              dw_pcie_prog_viewport_io_outbound(pp);
++      }
++
++      return ret;
++}
++
++
++static int dw_pcie_valid_config(struct pcie_port *pp,
++                              struct pci_bus *bus, int dev)
++{
++      /* If there is no link, then there is no device */
++      if (bus->number != pp->root_bus_nr) {
++              if (!dw_pcie_link_up(pp))
++                      return 0;
++      }
++
++      /* access only one slot on each root port */
++      if (bus->number == pp->root_bus_nr && dev > 0)
++              return 0;
++
++      /*
++       * do not read more than one device on the bus directly attached
++       * to RC's (Virtual Bridge's) DS side.
++       */
++      if (bus->primary == pp->root_bus_nr && dev > 0)
++              return 0;
++
++      return 1;
++}
++
++static int dw_pcie_rd_conf(struct pci_bus *bus, u32 devfn, int where,
++                      int size, u32 *val)
++{
++      struct pcie_port *pp = sys_to_pcie(bus->sysdata);
++      unsigned long flags;
++      int ret;
++
++      if (!pp) {
++              BUG();
++              return -EINVAL;
++      }
++
++      if (dw_pcie_valid_config(pp, bus, PCI_SLOT(devfn)) == 0) {
++              *val = 0xffffffff;
++              return PCIBIOS_DEVICE_NOT_FOUND;
++      }
++
++      spin_lock_irqsave(&pp->conf_lock, flags);
++      if (bus->number != pp->root_bus_nr)
++              ret = dw_pcie_rd_other_conf(pp, bus, devfn,
++                                              where, size, val);
++      else
++              ret = dw_pcie_rd_own_conf(pp, where, size, val);
++      spin_unlock_irqrestore(&pp->conf_lock, flags);
++
++      return ret;
++}
++
++static int dw_pcie_wr_conf(struct pci_bus *bus, u32 devfn,
++                      int where, int size, u32 val)
++{
++      struct pcie_port *pp = sys_to_pcie(bus->sysdata);
++      unsigned long flags;
++      int ret;
++
++      if (!pp) {
++              BUG();
++              return -EINVAL;
++      }
++
++      if (dw_pcie_valid_config(pp, bus, PCI_SLOT(devfn)) == 0)
++              return PCIBIOS_DEVICE_NOT_FOUND;
++
++      spin_lock_irqsave(&pp->conf_lock, flags);
++      if (bus->number != pp->root_bus_nr)
++              ret = dw_pcie_wr_other_conf(pp, bus, devfn,
++                                              where, size, val);
++      else
++              ret = dw_pcie_wr_own_conf(pp, where, size, val);
++      spin_unlock_irqrestore(&pp->conf_lock, flags);
++
++      return ret;
++}
++
++static struct pci_ops dw_pcie_ops = {
++      .read = dw_pcie_rd_conf,
++      .write = dw_pcie_wr_conf,
++};
++
++int dw_pcie_setup(int nr, struct pci_sys_data *sys)
++{
++      struct pcie_port *pp;
++
++      pp = sys_to_pcie(sys);
++
++      if (!pp)
++              return 0;
++
++      if (global_io_offset < SZ_1M && pp->config.io_size > 0) {
++              sys->io_offset = global_io_offset - pp->config.io_bus_addr;
++              pci_ioremap_io(sys->io_offset, pp->io.start);
++              global_io_offset += SZ_64K;
++              pci_add_resource_offset(&sys->resources, &pp->io,
++                                      sys->io_offset);
++      }
++
++      sys->mem_offset = pp->mem.start - pp->config.mem_bus_addr;
++      pci_add_resource_offset(&sys->resources, &pp->mem, sys->mem_offset);
++
++      return 1;
++}
++
++struct pci_bus *dw_pcie_scan_bus(int nr, struct pci_sys_data *sys)
++{
++      struct pci_bus *bus;
++      struct pcie_port *pp = sys_to_pcie(sys);
++
++      if (pp) {
++              pp->root_bus_nr = sys->busnr;
++              bus = pci_scan_root_bus(NULL, sys->busnr, &dw_pcie_ops,
++                                      sys, &sys->resources);
++      } else {
++              bus = NULL;
++              BUG();
++      }
++
++      return bus;
++}
++
++int dw_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
++{
++      struct pcie_port *pp = sys_to_pcie(dev->bus->sysdata);
++
++      return pp->irq;
++}
++
++static struct hw_pci dw_pci = {
++      .setup          = dw_pcie_setup,
++      .scan           = dw_pcie_scan_bus,
++      .map_irq        = dw_pcie_map_irq,
++};
++
++void dw_pcie_setup_rc(struct pcie_port *pp)
++{
++      struct pcie_port_info *config = &pp->config;
++      u32 val;
++      u32 membase;
++      u32 memlimit;
++
++      /* set the number of lines as 4 */
++      dw_pcie_readl_rc(pp, PCIE_PORT_LINK_CONTROL, &val);
++      val &= ~PORT_LINK_MODE_MASK;
++      switch (pp->lanes) {
++      case 1:
++              val |= PORT_LINK_MODE_1_LANES;
++              break;
++      case 2:
++              val |= PORT_LINK_MODE_2_LANES;
++              break;
++      case 4:
++              val |= PORT_LINK_MODE_4_LANES;
++              break;
++      }
++      dw_pcie_writel_rc(pp, val, PCIE_PORT_LINK_CONTROL);
++
++      /* set link width speed control register */
++      dw_pcie_readl_rc(pp, PCIE_LINK_WIDTH_SPEED_CONTROL, &val);
++      val &= ~PORT_LOGIC_LINK_WIDTH_MASK;
++      switch (pp->lanes) {
++      case 1:
++              val |= PORT_LOGIC_LINK_WIDTH_1_LANES;
++              break;
++      case 2:
++              val |= PORT_LOGIC_LINK_WIDTH_2_LANES;
++              break;
++      case 4:
++              val |= PORT_LOGIC_LINK_WIDTH_4_LANES;
++              break;
++      }
++      dw_pcie_writel_rc(pp, val, PCIE_LINK_WIDTH_SPEED_CONTROL);
++
++      /* setup RC BARs */
++      dw_pcie_writel_rc(pp, 0x00000004, PCI_BASE_ADDRESS_0);
++      dw_pcie_writel_rc(pp, 0x00000004, PCI_BASE_ADDRESS_1);
++
++      /* setup interrupt pins */
++      dw_pcie_readl_rc(pp, PCI_INTERRUPT_LINE, &val);
++      val &= 0xffff00ff;
++      val |= 0x00000100;
++      dw_pcie_writel_rc(pp, val, PCI_INTERRUPT_LINE);
++
++      /* setup bus numbers */
++      dw_pcie_readl_rc(pp, PCI_PRIMARY_BUS, &val);
++      val &= 0xff000000;
++      val |= 0x00010100;
++      dw_pcie_writel_rc(pp, val, PCI_PRIMARY_BUS);
++
++      /* setup memory base, memory limit */
++      membase = ((u32)pp->mem_base & 0xfff00000) >> 16;
++      memlimit = (config->mem_size + (u32)pp->mem_base) & 0xfff00000;
++      val = memlimit | membase;
++      dw_pcie_writel_rc(pp, val, PCI_MEMORY_BASE);
++
++      /* setup command register */
++      dw_pcie_readl_rc(pp, PCI_COMMAND, &val);
++      val &= 0xffff0000;
++      val |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY |
++              PCI_COMMAND_MASTER | PCI_COMMAND_SERR;
++      dw_pcie_writel_rc(pp, val, PCI_COMMAND);
++}
++
++MODULE_AUTHOR("Jingoo Han <jg1.han@samsung.com>");
++MODULE_DESCRIPTION("Designware PCIe host controller driver");
++MODULE_LICENSE("GPL v2");
diff --git a/src/patches/kernel/wandboard/imx/0012-pcie-backport-fixes.patch b/src/patches/kernel/wandboard/imx/0012-pcie-backport-fixes.patch
new file mode 100644 (file)
index 0000000..aef6b05
--- /dev/null
@@ -0,0 +1,17 @@
+--- a/drivers/pci/Kconfig
++++ b/drivers/pci/Kconfig
+@@ -125,3 +125,5 @@ config PCI_IOAPIC
+ config PCI_LABEL
+       def_bool y if (DMI || ACPI)
+       select NLS
++
++source "drivers/pci/host/Kconfig"
+--- a/drivers/pci/Makefile
++++ b/drivers/pci/Makefile
+@@ -67,3 +67,6 @@ obj-$(CONFIG_XEN_PCIDEV_FRONTEND) += xen
+ obj-$(CONFIG_OF) += of.o
+ ccflags-$(CONFIG_PCI_DEBUG) := -DDEBUG
++
++# PCI host controller drivers
++obj-y += host/
diff --git a/src/patches/kernel/wandboard/imx/0013-of-pci-Provide-support-for-parsing-PCI-DT-ranges-pro.patch b/src/patches/kernel/wandboard/imx/0013-of-pci-Provide-support-for-parsing-PCI-DT-ranges-pro.patch
new file mode 100644 (file)
index 0000000..ab20f7f
--- /dev/null
@@ -0,0 +1,194 @@
+From: Andrew Murray <Andrew.Murray@arm.com>
+Subject: [PATCH] of/pci: Provide support for parsing PCI DT ranges property
+
+This patch factors out common implementation patterns to reduce overall kernel
+code and provide a means for host bridge drivers to directly obtain struct
+resources from the DT's ranges property without relying on architecture specific
+DT handling. This will make it easier to write archiecture independent host bridge
+drivers and mitigate against further duplication of DT parsing code.
+
+This patch can be used in the following way:
+
+       struct of_pci_range_parser parser;
+       struct of_pci_range range;
+
+       if (of_pci_range_parser_init(&parser, np))
+               ; //no ranges property
+
+       for_each_of_pci_range(&parser, &range) {
+
+               /*
+                       directly access properties of the address range, e.g.:
+                       range.pci_space, range.pci_addr, range.cpu_addr,
+                       range.size, range.flags
+
+                       alternatively obtain a struct resource, e.g.:
+                       struct resource res;
+                       of_pci_range_to_resource(&range, np, &res);
+               */
+       }
+
+Additionally the implementation takes care of adjacent ranges and merges them
+into a single range (as was the case with powerpc and microblaze).
+
+Signed-off-by: Andrew Murray <Andrew.Murray@arm.com>
+Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Reviewed-by: Rob Herring <rob.herring@calxeda.com>
+Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Tested-by: Linus Walleij <linus.walleij@linaro.org>
+Tested-by: Jingoo Han <jg1.han@samsung.com>
+Acked-by: Grant Likely <grant.likely@secretlab.ca>
+Signed-off-by: Jason Cooper <jason@lakedaemon.net>
+---
+ drivers/of/address.c       | 67 ++++++++++++++++++++++++++++++++++++++++++++++
+ include/linux/of_address.h | 48 +++++++++++++++++++++++++++++++++
+ 2 files changed, 115 insertions(+)
+
+--- a/drivers/of/address.c
++++ b/drivers/of/address.c
+@@ -231,6 +231,73 @@ int of_pci_address_to_resource(struct de
+       return __of_address_to_resource(dev, addrp, size, flags, NULL, r);
+ }
+ EXPORT_SYMBOL_GPL(of_pci_address_to_resource);
++
++int of_pci_range_parser_init(struct of_pci_range_parser *parser,
++                              struct device_node *node)
++{
++      const int na = 3, ns = 2;
++      int rlen;
++
++      parser->node = node;
++      parser->pna = of_n_addr_cells(node);
++      parser->np = parser->pna + na + ns;
++
++      parser->range = of_get_property(node, "ranges", &rlen);
++      if (parser->range == NULL)
++              return -ENOENT;
++
++      parser->end = parser->range + rlen / sizeof(__be32);
++
++      return 0;
++}
++EXPORT_SYMBOL_GPL(of_pci_range_parser_init);
++
++struct of_pci_range *of_pci_range_parser_one(struct of_pci_range_parser *parser,
++                                              struct of_pci_range *range)
++{
++      const int na = 3, ns = 2;
++
++      if (!range)
++              return NULL;
++
++      if (!parser->range || parser->range + parser->np > parser->end)
++              return NULL;
++
++      range->pci_space = parser->range[0];
++      range->flags = of_bus_pci_get_flags(parser->range);
++      range->pci_addr = of_read_number(parser->range + 1, ns);
++      range->cpu_addr = of_translate_address(parser->node,
++                              parser->range + na);
++      range->size = of_read_number(parser->range + parser->pna + na, ns);
++
++      parser->range += parser->np;
++
++      /* Now consume following elements while they are contiguous */
++      while (parser->range + parser->np <= parser->end) {
++              u32 flags, pci_space;
++              u64 pci_addr, cpu_addr, size;
++
++              pci_space = be32_to_cpup(parser->range);
++              flags = of_bus_pci_get_flags(parser->range);
++              pci_addr = of_read_number(parser->range + 1, ns);
++              cpu_addr = of_translate_address(parser->node,
++                              parser->range + na);
++              size = of_read_number(parser->range + parser->pna + na, ns);
++
++              if (flags != range->flags)
++                      break;
++              if (pci_addr != range->pci_addr + range->size ||
++                  cpu_addr != range->cpu_addr + range->size)
++                      break;
++
++              range->size += size;
++              parser->range += parser->np;
++      }
++
++      return range;
++}
++EXPORT_SYMBOL_GPL(of_pci_range_parser_one);
++
+ #endif /* CONFIG_PCI */
+ /*
+--- a/include/linux/of_address.h
++++ b/include/linux/of_address.h
+@@ -4,6 +4,36 @@
+ #include <linux/errno.h>
+ #include <linux/of.h>
++struct of_pci_range_parser {
++      struct device_node *node;
++      const __be32 *range;
++      const __be32 *end;
++      int np;
++      int pna;
++};
++
++struct of_pci_range {
++      u32 pci_space;
++      u64 pci_addr;
++      u64 cpu_addr;
++      u64 size;
++      u32 flags;
++};
++
++#define for_each_of_pci_range(parser, range) \
++      for (; of_pci_range_parser_one(parser, range);)
++
++static inline void of_pci_range_to_resource(struct of_pci_range *range,
++                                          struct device_node *np,
++                                          struct resource *res)
++{
++      res->flags = range->flags;
++      res->start = range->cpu_addr;
++      res->end = range->cpu_addr + range->size - 1;
++      res->parent = res->child = res->sibling = NULL;
++      res->name = np->full_name;
++}
++
+ #ifdef CONFIG_OF_ADDRESS
+ extern u64 of_translate_address(struct device_node *np, const __be32 *addr);
+ extern bool of_can_translate_address(struct device_node *dev);
+@@ -27,6 +57,11 @@ static inline unsigned long pci_address_
+ #define pci_address_to_pio pci_address_to_pio
+ #endif
++extern int of_pci_range_parser_init(struct of_pci_range_parser *parser,
++                      struct device_node *node);
++extern struct of_pci_range *of_pci_range_parser_one(
++                                      struct of_pci_range_parser *parser,
++                                      struct of_pci_range *range);
+ #else /* CONFIG_OF_ADDRESS */
+ #ifndef of_address_to_resource
+ static inline int of_address_to_resource(struct device_node *dev, int index,
+@@ -53,6 +88,19 @@ static inline const __be32 *of_get_addre
+ {
+       return NULL;
+ }
++
++static inline int of_pci_range_parser_init(struct of_pci_range_parser *parser,
++                      struct device_node *node)
++{
++      return -1;
++}
++
++static inline struct of_pci_range *of_pci_range_parser_one(
++                                      struct of_pci_range_parser *parser,
++                                      struct of_pci_range *range)
++{
++      return NULL;
++}
+ #endif /* CONFIG_OF_ADDRESS */
diff --git a/src/patches/kernel/wandboard/imx/0014-ARM-imx6q-Add-PCIe-bits-to-GPR-syscon-definition.patch b/src/patches/kernel/wandboard/imx/0014-ARM-imx6q-Add-PCIe-bits-to-GPR-syscon-definition.patch
new file mode 100644 (file)
index 0000000..19ca079
--- /dev/null
@@ -0,0 +1,37 @@
+From: Sean Cross <xobs@kosagi.com>
+Subject: [PATCH 1/2] ARM: imx6q: Add PCIe bits to GPR syscon definition
+
+PCIe requires additional bits be defined for GPR8 and GPR12.
+
+Signed-off-by: Sean Cross <xobs@kosagi.com>
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+---
+ include/linux/mfd/syscon/imx6q-iomuxc-gpr.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h
++++ b/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h
+@@ -241,6 +241,12 @@
+ #define IMX6Q_GPR5_L2_CLK_STOP                        BIT(8)
++#define IMX6Q_GPR8_TX_SWING_LOW                       (0x7f << 25)
++#define IMX6Q_GPR8_TX_SWING_FULL              (0x7f << 18)
++#define IMX6Q_GPR8_TX_DEEMPH_GEN2_6DB         (0x3f << 12)
++#define IMX6Q_GPR8_TX_DEEMPH_GEN2_3P5DB               (0x3f << 6)
++#define IMX6Q_GPR8_TX_DEEMPH_GEN1             (0x3f << 0)
++
+ #define IMX6Q_GPR9_TZASC2_BYP                 BIT(1)
+ #define IMX6Q_GPR9_TZASC1_BYP                 BIT(0)
+@@ -273,7 +279,9 @@
+ #define IMX6Q_GPR12_ARMP_AHB_CLK_EN           BIT(26)
+ #define IMX6Q_GPR12_ARMP_ATB_CLK_EN           BIT(25)
+ #define IMX6Q_GPR12_ARMP_APB_CLK_EN           BIT(24)
++#define IMX6Q_GPR12_DEVICE_TYPE                       (0xf << 12)
+ #define IMX6Q_GPR12_PCIE_CTL_2                        BIT(10)
++#define IMX6Q_GPR12_LOS_LEVEL                 (0x1f << 4)
+ #define IMX6Q_GPR13_SDMA_STOP_REQ             BIT(30)
+ #define IMX6Q_GPR13_CAN2_STOP_REQ             BIT(29)
diff --git a/src/patches/kernel/wandboard/imx/0015-PCI-imx6-Add-support-for-i.MX6-PCIe-controller.patch b/src/patches/kernel/wandboard/imx/0015-PCI-imx6-Add-support-for-i.MX6-PCIe-controller.patch
new file mode 100644 (file)
index 0000000..599cd0e
--- /dev/null
@@ -0,0 +1,616 @@
+Subject: [PATCH 2/2] PCI: imx6: Add support for i.MX6 PCIe controller
+From: Sean Cross <xobs@kosagi.com>
+
+Add support for the PCIe port present on the i.MX6 family of controllers.
+These use the Synopsis Designware core tied to their own PHY.
+
+Signed-off-by: Sean Cross <xobs@kosagi.com>
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
+---
+ drivers/pci/host/Kconfig                           |   6 +
+ drivers/pci/host/Makefile                          |   1 +
+ drivers/pci/host/pci-imx6.c                        | 575 +++++++++++++++++++++
+ 4 files changed, 588 insertions(+), 1 deletion(-)
+ create mode 100644 drivers/pci/host/pci-imx6.c
+
+--- /dev/null
++++ b/drivers/pci/host/Kconfig
+@@ -0,0 +1,13 @@
++menu "PCI host controller drivers"
++      depends on PCI
++
++config PCIE_DW
++      bool
++
++config PCI_IMX6
++      bool "Freescale i.MX6 PCIe controller"
++      depends on SOC_IMX6Q
++      select PCIEPORTBUS
++      select PCIE_DW
++
++endmenu
+--- /dev/null
++++ b/drivers/pci/host/Makefile
+@@ -0,0 +1,2 @@
++obj-$(CONFIG_PCIE_DW) += pcie-designware.o
++obj-$(CONFIG_PCI_IMX6) += pci-imx6.o
+--- /dev/null
++++ b/drivers/pci/host/pci-imx6.c
+@@ -0,0 +1,575 @@
++/*
++ * PCIe host controller driver for Freescale i.MX6 SoCs
++ *
++ * Copyright (C) 2013 Kosagi
++ *            http://www.kosagi.com
++ *
++ * Author: Sean Cross <xobs@kosagi.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/clk.h>
++#include <linux/delay.h>
++#include <linux/gpio.h>
++#include <linux/kernel.h>
++#include <linux/mfd/syscon.h>
++#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
++#include <linux/module.h>
++#include <linux/of_gpio.h>
++#include <linux/pci.h>
++#include <linux/platform_device.h>
++#include <linux/regmap.h>
++#include <linux/resource.h>
++#include <linux/signal.h>
++#include <linux/types.h>
++
++#include "pcie-designware.h"
++
++#define to_imx6_pcie(x)       container_of(x, struct imx6_pcie, pp)
++
++struct imx6_pcie {
++      int                     reset_gpio;
++      int                     power_on_gpio;
++      int                     wake_up_gpio;
++      int                     disable_gpio;
++      struct clk              *lvds_gate;
++      struct clk              *sata_ref_100m;
++      struct clk              *pcie_ref_125m;
++      struct clk              *pcie_axi;
++      struct pcie_port        pp;
++      struct regmap           *iomuxc_gpr;
++      void __iomem            *mem_base;
++};
++
++/* PCIe Port Logic registers (memory-mapped) */
++#define PL_OFFSET 0x700
++#define PCIE_PHY_DEBUG_R0 (PL_OFFSET + 0x28)
++#define PCIE_PHY_DEBUG_R1 (PL_OFFSET + 0x2c)
++
++#define PCIE_PHY_CTRL (PL_OFFSET + 0x114)
++#define PCIE_PHY_CTRL_DATA_LOC 0
++#define PCIE_PHY_CTRL_CAP_ADR_LOC 16
++#define PCIE_PHY_CTRL_CAP_DAT_LOC 17
++#define PCIE_PHY_CTRL_WR_LOC 18
++#define PCIE_PHY_CTRL_RD_LOC 19
++
++#define PCIE_PHY_STAT (PL_OFFSET + 0x110)
++#define PCIE_PHY_STAT_ACK_LOC 16
++
++/* PHY registers (not memory-mapped) */
++#define PCIE_PHY_RX_ASIC_OUT 0x100D
++
++#define PHY_RX_OVRD_IN_LO 0x1005
++#define PHY_RX_OVRD_IN_LO_RX_DATA_EN (1 << 5)
++#define PHY_RX_OVRD_IN_LO_RX_PLL_EN (1 << 3)
++
++static int pcie_phy_poll_ack(void __iomem *dbi_base, int exp_val)
++{
++      u32 val;
++      u32 max_iterations = 10;
++      u32 wait_counter = 0;
++
++      do {
++              val = readl(dbi_base + PCIE_PHY_STAT);
++              val = (val >> PCIE_PHY_STAT_ACK_LOC) & 0x1;
++              wait_counter++;
++
++              if (val == exp_val)
++                      return 0;
++
++              udelay(1);
++      } while (wait_counter < max_iterations);
++
++      return -ETIMEDOUT;
++}
++
++static int pcie_phy_wait_ack(void __iomem *dbi_base, int addr)
++{
++      u32 val;
++      int ret;
++
++      val = addr << PCIE_PHY_CTRL_DATA_LOC;
++      writel(val, dbi_base + PCIE_PHY_CTRL);
++
++      val |= (0x1 << PCIE_PHY_CTRL_CAP_ADR_LOC);
++      writel(val, dbi_base + PCIE_PHY_CTRL);
++
++      ret = pcie_phy_poll_ack(dbi_base, 1);
++      if (ret)
++              return ret;
++
++      val = addr << PCIE_PHY_CTRL_DATA_LOC;
++      writel(val, dbi_base + PCIE_PHY_CTRL);
++
++      ret = pcie_phy_poll_ack(dbi_base, 0);
++      if (ret)
++              return ret;
++
++      return 0;
++}
++
++/* Read from the 16-bit PCIe PHY control registers (not memory-mapped) */
++static int pcie_phy_read(void __iomem *dbi_base, int addr , int *data)
++{
++      u32 val, phy_ctl;
++      int ret;
++
++      ret = pcie_phy_wait_ack(dbi_base, addr);
++      if (ret)
++              return ret;
++
++      /* assert Read signal */
++      phy_ctl = 0x1 << PCIE_PHY_CTRL_RD_LOC;
++      writel(phy_ctl, dbi_base + PCIE_PHY_CTRL);
++
++      ret = pcie_phy_poll_ack(dbi_base, 1);
++      if (ret)
++              return ret;
++
++      val = readl(dbi_base + PCIE_PHY_STAT);
++      *data = val & 0xffff;
++
++      /* deassert Read signal */
++      writel(0x00, dbi_base + PCIE_PHY_CTRL);
++
++      ret = pcie_phy_poll_ack(dbi_base, 0);
++      if (ret)
++              return ret;
++
++      return 0;
++}
++
++static int pcie_phy_write(void __iomem *dbi_base, int addr, int data)
++{
++      u32 var;
++      int ret;
++
++      /* write addr */
++      /* cap addr */
++      ret = pcie_phy_wait_ack(dbi_base, addr);
++      if (ret)
++              return ret;
++
++      var = data << PCIE_PHY_CTRL_DATA_LOC;
++      writel(var, dbi_base + PCIE_PHY_CTRL);
++
++      /* capture data */
++      var |= (0x1 << PCIE_PHY_CTRL_CAP_DAT_LOC);
++      writel(var, dbi_base + PCIE_PHY_CTRL);
++
++      ret = pcie_phy_poll_ack(dbi_base, 1);
++      if (ret)
++              return ret;
++
++      /* deassert cap data */
++      var = data << PCIE_PHY_CTRL_DATA_LOC;
++      writel(var, dbi_base + PCIE_PHY_CTRL);
++
++      /* wait for ack de-assertion */
++      ret = pcie_phy_poll_ack(dbi_base, 0);
++      if (ret)
++              return ret;
++
++      /* assert wr signal */
++      var = 0x1 << PCIE_PHY_CTRL_WR_LOC;
++      writel(var, dbi_base + PCIE_PHY_CTRL);
++
++      /* wait for ack */
++      ret = pcie_phy_poll_ack(dbi_base, 1);
++      if (ret)
++              return ret;
++
++      /* deassert wr signal */
++      var = data << PCIE_PHY_CTRL_DATA_LOC;
++      writel(var, dbi_base + PCIE_PHY_CTRL);
++
++      /* wait for ack de-assertion */
++      ret = pcie_phy_poll_ack(dbi_base, 0);
++      if (ret)
++              return ret;
++
++      writel(0x0, dbi_base + PCIE_PHY_CTRL);
++
++      return 0;
++}
++
++/*  Added for PCI abort handling */
++static int imx6q_pcie_abort_handler(unsigned long addr,
++              unsigned int fsr, struct pt_regs *regs)
++{
++      /*
++       * If it was an imprecise abort, then we need to correct the
++       * return address to be _after_ the instruction.
++       */
++      if (fsr & (1 << 10))
++              regs->ARM_pc += 4;
++      return 0;
++}
++
++static int imx6_pcie_assert_core_reset(struct pcie_port *pp)
++{
++      struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp);
++
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1,
++                      IMX6Q_GPR1_PCIE_TEST_PD, 1 << 18);
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
++                      IMX6Q_GPR12_PCIE_CTL_2, 1 << 10);
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1,
++                      IMX6Q_GPR1_PCIE_REF_CLK_EN, 0 << 16);
++
++      gpio_set_value(imx6_pcie->reset_gpio, 0);
++      msleep(100);
++      gpio_set_value(imx6_pcie->reset_gpio, 1);
++
++      return 0;
++}
++
++static int imx6_pcie_deassert_core_reset(struct pcie_port *pp)
++{
++      struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp);
++      int ret;
++
++      if (gpio_is_valid(imx6_pcie->power_on_gpio))
++              gpio_set_value(imx6_pcie->power_on_gpio, 1);
++
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1,
++                      IMX6Q_GPR1_PCIE_TEST_PD, 0 << 18);
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1,
++                      IMX6Q_GPR1_PCIE_REF_CLK_EN, 1 << 16);
++
++      ret = clk_prepare_enable(imx6_pcie->sata_ref_100m);
++      if (ret) {
++              dev_err(pp->dev, "unable to enable sata_ref_100m\n");
++              goto err_sata_ref;
++      }
++
++      ret = clk_prepare_enable(imx6_pcie->pcie_ref_125m);
++      if (ret) {
++              dev_err(pp->dev, "unable to enable pcie_ref_125m\n");
++              goto err_pcie_ref;
++      }
++
++      ret = clk_prepare_enable(imx6_pcie->lvds_gate);
++      if (ret) {
++              dev_err(pp->dev, "unable to enable lvds_gate\n");
++              goto err_lvds_gate;
++      }
++
++      ret = clk_prepare_enable(imx6_pcie->pcie_axi);
++      if (ret) {
++              dev_err(pp->dev, "unable to enable pcie_axi\n");
++              goto err_pcie_axi;
++      }
++
++      /* allow the clocks to stabilize */
++      usleep_range(200, 500);
++
++      return 0;
++
++err_pcie_axi:
++      clk_disable_unprepare(imx6_pcie->lvds_gate);
++err_lvds_gate:
++      clk_disable_unprepare(imx6_pcie->pcie_ref_125m);
++err_pcie_ref:
++      clk_disable_unprepare(imx6_pcie->sata_ref_100m);
++err_sata_ref:
++      return ret;
++
++}
++
++static void imx6_pcie_init_phy(struct pcie_port *pp)
++{
++      struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp);
++
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
++                      IMX6Q_GPR12_PCIE_CTL_2, 0 << 10);
++
++      /* configure constant input signal to the pcie ctrl and phy */
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
++                      IMX6Q_GPR12_DEVICE_TYPE, PCI_EXP_TYPE_ROOT_PORT << 12);
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
++                      IMX6Q_GPR12_LOS_LEVEL, 9 << 4);
++
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR8,
++                      IMX6Q_GPR8_TX_DEEMPH_GEN1, 0 << 0);
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR8,
++                      IMX6Q_GPR8_TX_DEEMPH_GEN2_3P5DB, 0 << 6);
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR8,
++                      IMX6Q_GPR8_TX_DEEMPH_GEN2_6DB, 20 << 12);
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR8,
++                      IMX6Q_GPR8_TX_SWING_FULL, 127 << 18);
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR8,
++                      IMX6Q_GPR8_TX_SWING_LOW, 127 << 25);
++}
++
++static void imx6_pcie_host_init(struct pcie_port *pp)
++{
++      int count = 0;
++      struct imx6_pcie *imx6_pcie = to_imx6_pcie(pp);
++
++      imx6_pcie_assert_core_reset(pp);
++
++      imx6_pcie_init_phy(pp);
++
++      imx6_pcie_deassert_core_reset(pp);
++
++      dw_pcie_setup_rc(pp);
++
++      regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12,
++                      IMX6Q_GPR12_PCIE_CTL_2, 1 << 10);
++
++      while (!dw_pcie_link_up(pp)) {
++              usleep_range(100, 1000);
++              count++;
++              if (count >= 10) {
++                      dev_err(pp->dev, "phy link never came up\n");
++                      dev_dbg(pp->dev,
++                              "DEBUG_R0: 0x%08x, DEBUG_R1: 0x%08x\n",
++                              readl(pp->dbi_base + PCIE_PHY_DEBUG_R0),
++                              readl(pp->dbi_base + PCIE_PHY_DEBUG_R1));
++                      break;
++              }
++      }
++
++      return;
++}
++
++static int imx6_pcie_link_up(struct pcie_port *pp)
++{
++      u32 rc, ltssm, rx_valid, temp;
++
++      /* link is debug bit 36, debug register 1 starts at bit 32 */
++      rc = readl(pp->dbi_base + PCIE_PHY_DEBUG_R1) & (0x1 << (36 - 32));
++      if (rc)
++              return -EAGAIN;
++
++      /*
++       * From L0, initiate MAC entry to gen2 if EP/RC supports gen2.
++       * Wait 2ms (LTSSM timeout is 24ms, PHY lock is ~5us in gen2).
++       * If (MAC/LTSSM.state == Recovery.RcvrLock)
++       * && (PHY/rx_valid==0) then pulse PHY/rx_reset. Transition
++       * to gen2 is stuck
++       */
++      pcie_phy_read(pp->dbi_base, PCIE_PHY_RX_ASIC_OUT, &rx_valid);
++      ltssm = readl(pp->dbi_base + PCIE_PHY_DEBUG_R0) & 0x3F;
++
++      if (rx_valid & 0x01)
++              return 0;
++
++      if (ltssm != 0x0d)
++              return 0;
++
++      dev_err(pp->dev, "transition to gen2 is stuck, reset PHY!\n");
++
++      pcie_phy_read(pp->dbi_base,
++              PHY_RX_OVRD_IN_LO, &temp);
++      temp |= (PHY_RX_OVRD_IN_LO_RX_DATA_EN
++              | PHY_RX_OVRD_IN_LO_RX_PLL_EN);
++      pcie_phy_write(pp->dbi_base,
++              PHY_RX_OVRD_IN_LO, temp);
++
++      usleep_range(2000, 3000);
++
++      pcie_phy_read(pp->dbi_base,
++              PHY_RX_OVRD_IN_LO, &temp);
++      temp &= ~(PHY_RX_OVRD_IN_LO_RX_DATA_EN
++              | PHY_RX_OVRD_IN_LO_RX_PLL_EN);
++      pcie_phy_write(pp->dbi_base,
++              PHY_RX_OVRD_IN_LO, temp);
++
++      return 0;
++}
++
++static struct pcie_host_ops imx6_pcie_host_ops = {
++      .link_up = imx6_pcie_link_up,
++      .host_init = imx6_pcie_host_init,
++};
++
++static int imx6_add_pcie_port(struct pcie_port *pp,
++                      struct platform_device *pdev)
++{
++      int ret;
++
++      pp->irq = platform_get_irq(pdev, 0);
++      if (!pp->irq) {
++              dev_err(&pdev->dev, "failed to get irq\n");
++              return -ENODEV;
++      }
++
++      pp->root_bus_nr = -1;
++      pp->ops = &imx6_pcie_host_ops;
++
++      spin_lock_init(&pp->conf_lock);
++      ret = dw_pcie_host_init(pp);
++      if (ret) {
++              dev_err(&pdev->dev, "failed to initialize host\n");
++              return ret;
++      }
++
++      return 0;
++}
++
++static int __init imx6_pcie_probe(struct platform_device *pdev)
++{
++      struct imx6_pcie *imx6_pcie;
++      struct pcie_port *pp;
++      struct device_node *np = pdev->dev.of_node;
++      struct resource *dbi_base;
++      int ret;
++
++      imx6_pcie = devm_kzalloc(&pdev->dev, sizeof(*imx6_pcie), GFP_KERNEL);
++      if (!imx6_pcie)
++              return -ENOMEM;
++
++      pp = &imx6_pcie->pp;
++      pp->dev = &pdev->dev;
++
++      /* Added for PCI abort handling */
++      hook_fault_code(16 + 6, imx6q_pcie_abort_handler, SIGBUS, 0,
++              "imprecise external abort");
++
++      dbi_base = platform_get_resource(pdev, IORESOURCE_MEM, 0);
++      if (!dbi_base) {
++              dev_err(&pdev->dev, "dbi_base memory resource not found\n");
++              return -ENODEV;
++      }
++
++      pp->dbi_base = devm_ioremap_resource(&pdev->dev, dbi_base);
++      if (IS_ERR(pp->dbi_base)) {
++              dev_err(&pdev->dev, "unable to remap dbi_base\n");
++              ret = PTR_ERR(pp->dbi_base);
++              goto err;
++      }
++
++      /* Fetch GPIOs */
++      imx6_pcie->reset_gpio = of_get_named_gpio(np, "reset-gpio", 0);
++      if (!gpio_is_valid(imx6_pcie->reset_gpio)) {
++              dev_err(&pdev->dev, "no reset-gpio defined\n");
++              ret = -ENODEV;
++      }
++      ret = devm_gpio_request_one(&pdev->dev,
++                              imx6_pcie->reset_gpio,
++                              GPIOF_OUT_INIT_LOW,
++                              "PCIe reset");
++      if (ret) {
++              dev_err(&pdev->dev, "unable to get reset gpio\n");
++              goto err;
++      }
++
++      imx6_pcie->power_on_gpio = of_get_named_gpio(np, "power-on-gpio", 0);
++      if (gpio_is_valid(imx6_pcie->power_on_gpio)) {
++              ret = devm_gpio_request_one(&pdev->dev,
++                                      imx6_pcie->power_on_gpio,
++                                      GPIOF_OUT_INIT_LOW,
++                                      "PCIe power enable");
++              if (ret) {
++                      dev_err(&pdev->dev, "unable to get power-on gpio\n");
++                      goto err;
++              }
++      }
++
++      imx6_pcie->wake_up_gpio = of_get_named_gpio(np, "wake-up-gpio", 0);
++      if (gpio_is_valid(imx6_pcie->wake_up_gpio)) {
++              ret = devm_gpio_request_one(&pdev->dev,
++                                      imx6_pcie->wake_up_gpio,
++                                      GPIOF_IN,
++                                      "PCIe wake up");
++              if (ret) {
++                      dev_err(&pdev->dev, "unable to get wake-up gpio\n");
++                      goto err;
++              }
++      }
++
++      imx6_pcie->disable_gpio = of_get_named_gpio(np, "disable-gpio", 0);
++      if (gpio_is_valid(imx6_pcie->disable_gpio)) {
++              ret = devm_gpio_request_one(&pdev->dev,
++                                      imx6_pcie->disable_gpio,
++                                      GPIOF_OUT_INIT_HIGH,
++                                      "PCIe disable endpoint");
++              if (ret) {
++                      dev_err(&pdev->dev, "unable to get disable-ep gpio\n");
++                      goto err;
++              }
++      }
++
++      /* Fetch clocks */
++      imx6_pcie->lvds_gate = devm_clk_get(&pdev->dev, "lvds_gate");
++      if (IS_ERR(imx6_pcie->lvds_gate)) {
++              dev_err(&pdev->dev,
++                      "lvds_gate clock select missing or invalid\n");
++              ret = PTR_ERR(imx6_pcie->lvds_gate);
++              goto err;
++      }
++
++      imx6_pcie->sata_ref_100m = devm_clk_get(&pdev->dev, "sata_ref_100m");
++      if (IS_ERR(imx6_pcie->sata_ref_100m)) {
++              dev_err(&pdev->dev,
++                      "sata_ref_100m clock source missing or invalid\n");
++              ret = PTR_ERR(imx6_pcie->sata_ref_100m);
++              goto err;
++      }
++
++      imx6_pcie->pcie_ref_125m = devm_clk_get(&pdev->dev, "pcie_ref_125m");
++      if (IS_ERR(imx6_pcie->pcie_ref_125m)) {
++              dev_err(&pdev->dev,
++                      "pcie_ref_125m clock source missing or invalid\n");
++              ret = PTR_ERR(imx6_pcie->pcie_ref_125m);
++              goto err;
++      }
++
++      imx6_pcie->pcie_axi = devm_clk_get(&pdev->dev, "pcie_axi");
++      if (IS_ERR(imx6_pcie->pcie_axi)) {
++              dev_err(&pdev->dev,
++                      "pcie_axi clock source missing or invalid\n");
++              ret = PTR_ERR(imx6_pcie->pcie_axi);
++              goto err;
++      }
++
++      /* Grab GPR config register range */
++      imx6_pcie->iomuxc_gpr =
++               syscon_regmap_lookup_by_compatible("fsl,imx6q-iomuxc-gpr");
++      if (IS_ERR(imx6_pcie->iomuxc_gpr)) {
++              dev_err(&pdev->dev, "unable to find iomuxc registers\n");
++              ret = PTR_ERR(imx6_pcie->iomuxc_gpr);
++              goto err;
++      }
++
++      ret = imx6_add_pcie_port(pp, pdev);
++      if (ret < 0)
++              goto err;
++
++      platform_set_drvdata(pdev, imx6_pcie);
++      return 0;
++
++err:
++      return ret;
++}
++
++static const struct of_device_id imx6_pcie_of_match[] = {
++      { .compatible = "fsl,imx6q-pcie", },
++      {},
++};
++MODULE_DEVICE_TABLE(of, imx6_pcie_of_match);
++
++static struct platform_driver imx6_pcie_driver = {
++      .driver = {
++              .name   = "imx6q-pcie",
++              .owner  = THIS_MODULE,
++              .of_match_table = of_match_ptr(imx6_pcie_of_match),
++      },
++};
++
++/* Freescale PCIe driver does not allow module unload */
++
++static int __init imx6_pcie_init(void)
++{
++      return platform_driver_probe(&imx6_pcie_driver, imx6_pcie_probe);
++}
++module_init(imx6_pcie_init);
++
++MODULE_AUTHOR("Sean Cross <xobs@kosagi.com>");
++MODULE_DESCRIPTION("Freescale i.MX6 PCIe host controller driver");
++MODULE_LICENSE("GPL v2");
diff --git a/src/patches/kernel/wandboard/imx/0016-imx6-pci-tweaks.patch b/src/patches/kernel/wandboard/imx/0016-imx6-pci-tweaks.patch
new file mode 100644 (file)
index 0000000..eda007e
--- /dev/null
@@ -0,0 +1,24 @@
+--- a/drivers/pci/host/pci-imx6.c
++++ b/drivers/pci/host/pci-imx6.c
+@@ -200,12 +200,6 @@ static int pcie_phy_write(void __iomem *
+ static int imx6q_pcie_abort_handler(unsigned long addr,
+               unsigned int fsr, struct pt_regs *regs)
+ {
+-      /*
+-       * If it was an imprecise abort, then we need to correct the
+-       * return address to be _after_ the instruction.
+-       */
+-      if (fsr & (1 << 10))
+-              regs->ARM_pc += 4;
+       return 0;
+ }
+@@ -322,7 +316,7 @@ static void imx6_pcie_host_init(struct p
+                       IMX6Q_GPR12_PCIE_CTL_2, 1 << 10);
+       while (!dw_pcie_link_up(pp)) {
+-              usleep_range(100, 1000);
++              usleep_range(2000, 3000);
+               count++;
+               if (count >= 10) {
+                       dev_err(pp->dev, "phy link never came up\n");
diff --git a/src/patches/kernel/wandboard/imx/0017-ARM-imx-Add-LVDS-general-purpose-clocks-to-i.MX6Q.patch b/src/patches/kernel/wandboard/imx/0017-ARM-imx-Add-LVDS-general-purpose-clocks-to-i.MX6Q.patch
new file mode 100644 (file)
index 0000000..3f1b6eb
--- /dev/null
@@ -0,0 +1,70 @@
+From: Sean Cross <xobs@kosagi.com>
+Subject: [PATCH 1/3] ARM: imx: Add LVDS general-purpose clocks to i.MX6Q
+
+The i.MX6 has two general-purpose LVDS clocks that can be driven
+from a variety of sources.  This patch adds a mux and a gate for
+both of these clocks.
+
+Signed-off-by: Sean Cross <xobs@kosagi.com>
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+---
+ .../devicetree/bindings/clock/imx6q-clock.txt        |  4 ++++
+ arch/arm/mach-imx/clk-imx6q.c                        | 20 +++++++++++++++++++-
+ 2 files changed, 23 insertions(+), 1 deletion(-)
+
+--- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt
++++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt
+@@ -208,6 +208,10 @@ clocks and IDs.
+       pll4_post_div           193
+       pll5_post_div           194
+       pll5_video_div          195
++      lvds1_sel               204
++      lvds2_sel               205
++      lvds1_gate              206
++      lvds2_gate              207
+ Examples:
+--- a/arch/arm/mach-imx/clk-imx6q.c
++++ b/arch/arm/mach-imx/clk-imx6q.c
+@@ -205,6 +205,11 @@ static const char *vpu_axi_sels[] = { "a
+ static const char *cko1_sels[]        = { "pll3_usb_otg", "pll2_bus", "pll1_sys", "pll5_video_div",
+                                   "dummy", "axi", "enfc", "ipu1_di0", "ipu1_di1", "ipu2_di0",
+                                   "ipu2_di1", "ahb", "ipg", "ipg_per", "ckil", "pll4_post_div", };
++static const char *lvds_sels[] = {
++      "dummy", "dummy", "dummy", "dummy", "dummy", "dummy",
++      "pll4_audio", "pll5_video", "pll8_mlb", "enet_ref",
++      "pcie_ref", "sata_ref",
++};
+ enum mx6q_clks {
+       dummy, ckil, ckih, osc, pll2_pfd0_352m, pll2_pfd1_594m, pll2_pfd2_396m,
+@@ -238,7 +243,8 @@ enum mx6q_clks {
+       pll4_audio, pll5_video, pll8_mlb, pll7_usb_host, pll6_enet, ssi1_ipg,
+       ssi2_ipg, ssi3_ipg, rom, usbphy1, usbphy2, ldb_di0_div_3_5, ldb_di1_div_3_5,
+       sata_ref, sata_ref_100m, pcie_ref, pcie_ref_125m, enet_ref, usbphy1_gate,
+-      usbphy2_gate, pll4_post_div, pll5_post_div, pll5_video_div, clk_max
++      usbphy2_gate, pll4_post_div, pll5_post_div, pll5_video_div,
++      lvds1_sel, lvds2_sel, lvds1_gate, lvds2_gate, clk_max
+ };
+ static struct clk *clk[clk_max];
+@@ -340,6 +346,18 @@ int __init mx6q_clocks_init(void)
+                       base + 0xe0, 0, 2, 0, clk_enet_ref_table,
+                       &imx_ccm_lock);
++      clk[lvds1_sel] = imx_clk_mux("lvds1_sel", base + 0x160, 0, 5, lvds_sels, ARRAY_SIZE(lvds_sels));
++      clk[lvds2_sel] = imx_clk_mux("lvds2_sel", base + 0x160, 5, 5, lvds_sels, ARRAY_SIZE(lvds_sels));
++
++      /*
++       * lvds1_gate and lvds2_gate are pseudo-gates.  Both can be
++       * independently configured as clock inputs or outputs.  We treat
++       * the "output_enable" bit as a gate, even though it's really just
++       * enabling clock output.
++       */
++      clk[lvds1_gate] = imx_clk_gate("lvds1_gate", "dummy", base + 0x160, 10);
++      clk[lvds2_gate] = imx_clk_gate("lvds2_gate", "dummy", base + 0x160, 11);
++
+       /*                                name              parent_name        reg       idx */
+       clk[pll2_pfd0_352m] = imx_clk_pfd("pll2_pfd0_352m", "pll2_bus",     base + 0x100, 0);
+       clk[pll2_pfd1_594m] = imx_clk_pfd("pll2_pfd1_594m", "pll2_bus",     base + 0x100, 1);
diff --git a/src/patches/kernel/wandboard/imx/0018-ARM-imx6q-clock-and-Kconfig-update-for-PCIe-support.patch b/src/patches/kernel/wandboard/imx/0018-ARM-imx6q-clock-and-Kconfig-update-for-PCIe-support.patch
new file mode 100644 (file)
index 0000000..25f207a
--- /dev/null
@@ -0,0 +1,38 @@
+From 4f6723e8ff497e35c8f2fb20886fccc533c58cdb Mon Sep 17 00:00:00 2001
+From: Sean Cross <xobs@kosagi.com>
+Date: Thu, 26 Sep 2013 10:45:35 +0800
+Subject: [PATCH] ARM: imx6q: clock and Kconfig update for PCIe support
+
+Update imx6q clock initialization and Kconfig for PCIe support.
+
+Signed-off-by: Sean Cross <xobs@kosagi.com>
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+---
+ arch/arm/mach-imx/Kconfig     | 2 ++
+ arch/arm/mach-imx/clk-imx6q.c | 4 ++++
+ 2 files changed, 6 insertions(+)
+
+--- a/arch/arm/mach-imx/Kconfig
++++ b/arch/arm/mach-imx/Kconfig
+@@ -806,6 +806,8 @@ config SOC_IMX6Q
+       select HAVE_IMX_SRC
+       select HAVE_SMP
+       select MFD_SYSCON
++      select MIGHT_HAVE_PCI
++      select PCI_DOMAINS if PCI
+       select PINCTRL
+       select PINCTRL_IMX6Q
+       select PL310_ERRATA_588369 if CACHE_PL310
+--- a/arch/arm/mach-imx/clk-imx6q.c
++++ b/arch/arm/mach-imx/clk-imx6q.c
+@@ -586,6 +586,10 @@ int __init mx6q_clocks_init(void)
+               clk_prepare_enable(clk[usbphy2_gate]);
+       }
++      /* All existing boards with PCIe use LVDS1 */
++      if (IS_ENABLED(CONFIG_PCI_IMX6))
++              clk_set_parent(clk[lvds1_sel], clk[sata_ref]);
++
+       /* Set initial power mode */
+       imx6q_set_lpm(WAIT_CLOCKED);
diff --git a/src/patches/lcdproc-0.5.6-menuitem.patch b/src/patches/lcdproc-0.5.6-menuitem.patch
new file mode 100644 (file)
index 0000000..b9e933d
--- /dev/null
@@ -0,0 +1,11 @@
+--- server/menuitem.c  2012/04/25 19:53:15     1.37
++++ server/menuitem.c  2013/01/17 21:27:27     1.38
+@@ -33,6 +33,8 @@
+ #define MAX_NUMERIC_LEN 40
++extern Menu *main_menu;               /* Access to the main menu */
++
+ char *error_strs[] = {"", "Out of range", "Too long", "Too short", "Invalid Address"};
+ char *menuitemtypenames[] = {"menu", "action", "checkbox", "ring", "slider", "numeric", "alpha", "ip"};
+ char *menueventtypenames[] = {"select", "update", "plus", "minus", "enter", "leave"};
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-3.10-apu_leds.patch b/src/patches/linux-3.10-apu_leds.patch
new file mode 100644 (file)
index 0000000..53d389a
--- /dev/null
@@ -0,0 +1,215 @@
+diff -Naur linux-3.10.33.org/arch/x86/Kconfig linux-3.10.33/arch/x86/Kconfig
+--- linux-3.10.33.org/arch/x86/Kconfig 2014-03-07 06:58:45.000000000 +0100
++++ linux-3.10.33/arch/x86/Kconfig     2014-03-17 17:02:46.703135023 +0100
+@@ -2199,6 +2199,12 @@
+          - AC adapter status updates
+          - Battery status updates
++config APULED
++      bool "PCEngines APU Led Support"
++      depends on DMI
++      ---help---
++        This option enables system support for the PCEngines APU.
++
+ config ALIX
+       bool "PCEngines ALIX System Support (LED setup)"
+       select GPIOLIB
+diff -Naur linux-3.10.33.org/arch/x86/platform/apu/apu-led.c linux-3.10.33/arch/x86/platform/apu/apu-led.c
+--- linux-3.10.33.org/arch/x86/platform/apu/apu-led.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.33/arch/x86/platform/apu/apu-led.c      2014-03-17 17:00:36.187188456 +0100
+@@ -0,0 +1,181 @@
++/*
++ * LEDs driver for PCEngines apu
++ *
++ * Copyright (C) 2013 Christian Herzog <daduke@daduke.org>, based on
++ * Petr Leibman's leds-alix
++ * Hardware presence check added by Arne Fitzenreiter <arne_f@ipfire.org>
++ * Based on leds-wrap.c
++ * Hardware info taken from http://www.dpie.com/manuals/miniboards/kontron/KTD-S0043-0_KTA55_SoftwareGuide.pdf
++ *
++ * 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/kernel.h>
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/leds.h>
++#include <linux/err.h>
++#include <asm/io.h>
++#include <linux/dmi.h>
++
++#define DRVNAME               "apu-led"
++#define BASEADDR      (0xFED801BD)
++#define LEDON         (0x8)
++#define LEDOFF                (0xC8)
++
++static struct platform_device *pdev;
++unsigned int *p1;
++unsigned int *p2;
++unsigned int *p3;
++
++static void apu_led_set_1(struct led_classdev *led_cdev,
++              enum led_brightness value) {
++      if (value)
++              iowrite8(LEDON, p1);
++      else
++              iowrite8(LEDOFF, p1);
++}
++
++static void apu_led_set_2(struct led_classdev *led_cdev,
++              enum led_brightness value) {
++      if (value)
++              iowrite8(LEDON, p2);
++      else
++              iowrite8(LEDOFF, p2);
++}
++
++static void apu_led_set_3(struct led_classdev *led_cdev,
++              enum led_brightness value) {
++      if (value)
++              iowrite8(LEDON, p3);
++      else
++              iowrite8(LEDOFF, p3);
++}
++
++static struct led_classdev apu_led_1 = {
++      .name           = "apu:1",
++      .brightness_set = apu_led_set_1,
++};
++
++static struct led_classdev apu_led_2 = {
++      .name           = "apu:2",
++      .brightness_set = apu_led_set_2,
++};
++
++static struct led_classdev apu_led_3 = {
++      .name           = "apu:3",
++      .brightness_set = apu_led_set_3,
++};
++
++
++#ifdef CONFIG_PM
++static int apu_led_suspend(struct platform_device *dev,
++              pm_message_t state)
++{
++      led_classdev_suspend(&apu_led_1);
++      led_classdev_suspend(&apu_led_2);
++      led_classdev_suspend(&apu_led_3);
++      return 0;
++}
++
++static int apu_led_resume(struct platform_device *dev)
++{
++      led_classdev_resume(&apu_led_1);
++      led_classdev_resume(&apu_led_2);
++      led_classdev_resume(&apu_led_3);
++      return 0;
++}
++#else
++#define apu_led_suspend NULL
++#define apu_led_resume NULL
++#endif
++
++static int apu_led_probe(struct platform_device *pdev)
++{
++      int ret;
++
++      ret = led_classdev_register(&pdev->dev, &apu_led_1);
++      if (ret == 0)
++      {
++              ret = led_classdev_register(&pdev->dev, &apu_led_2);
++              if (ret >= 0)
++              {
++                      ret = led_classdev_register(&pdev->dev, &apu_led_3);
++                      if (ret < 0)
++                              led_classdev_unregister(&apu_led_2);
++              }
++              if (ret < 0)
++                      led_classdev_unregister(&apu_led_1);
++      }
++      return ret;
++}
++
++static int apu_led_remove(struct platform_device *pdev)
++{
++      led_classdev_unregister(&apu_led_1);
++      led_classdev_unregister(&apu_led_2);
++      led_classdev_unregister(&apu_led_3);
++      return 0;
++}
++
++static struct platform_driver apu_led_driver = {
++      .probe          = apu_led_probe,
++      .remove         = apu_led_remove,
++      .suspend        = apu_led_suspend,
++      .resume         = apu_led_resume,
++      .driver         = {
++      .name           = DRVNAME,
++      .owner          = THIS_MODULE,
++      },
++};
++
++static int __init apu_led_init(void)
++{
++      int ret=0;
++      const char *vendor, *product;
++
++      vendor = dmi_get_system_info(DMI_SYS_VENDOR);
++      if (!vendor || strcmp(vendor, "PC Engines"))
++              goto out;
++
++      product = dmi_get_system_info(DMI_PRODUCT_NAME);
++      if (!product || strcmp(product, "APU"))
++              goto out;
++
++      printk(KERN_INFO "%s: system is recognized as \"%s %s\"\n",
++             KBUILD_MODNAME, vendor, product);
++
++      ret = platform_driver_register(&apu_led_driver);
++      if (ret < 0)
++              goto out;
++
++      pdev = platform_device_register_simple(DRVNAME, -1, NULL, 0);
++      if (IS_ERR(pdev)) {
++              ret = PTR_ERR(pdev);
++              platform_driver_unregister(&apu_led_driver);
++              goto out;
++      }
++
++      p1 = ioremap(BASEADDR, 1);
++      p2 = ioremap(BASEADDR+1, 1);
++      p3 = ioremap(BASEADDR+2, 1);
++
++out:
++      return ret;
++}
++
++static void __exit apu_led_exit(void)
++{
++      platform_device_unregister(pdev);
++      platform_driver_unregister(&apu_led_driver);
++}
++
++module_init(apu_led_init);
++module_exit(apu_led_exit);
++
++MODULE_AUTHOR("Christian Herzog");
++MODULE_DESCRIPTION("PCEngines apu LED driver");
++MODULE_LICENSE("GPL");
+diff -Naur linux-3.10.33.org/arch/x86/platform/apu/Makefile linux-3.10.33/arch/x86/platform/apu/Makefile
+--- linux-3.10.33.org/arch/x86/platform/apu/Makefile   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.33/arch/x86/platform/apu/Makefile       2014-03-17 17:05:19.245651480 +0100
+@@ -0,0 +1 @@
++obj-$(CONFIG_APULED)          += apu-led.o
+diff -Naur linux-3.10.33.org/arch/x86/platform/Makefile linux-3.10.33/arch/x86/platform/Makefile
+--- linux-3.10.33.org/arch/x86/platform/Makefile       2014-03-07 06:58:45.000000000 +0100
++++ linux-3.10.33/arch/x86/platform/Makefile   2014-03-17 14:53:15.078571307 +0100
+@@ -1,4 +1,5 @@
+ # Platform specific code goes here
++obj-y += apu/
+ obj-y += ce4100/
+ obj-y += efi/
+ obj-y += geode/
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-layer7-filter.patch b/src/patches/linux-3.10-layer7-filter.patch
new file mode 100644 (file)
index 0000000..ec5fc5d
--- /dev/null
@@ -0,0 +1,2185 @@
+http://git.ipfire.org/?p=people/ms/linux.git;a=shortlog;h=refs/heads/linux-3.10.y-layer7
+
+diff --git a/include/linux/netfilter/xt_layer7.h b/include/linux/netfilter/xt_layer7.h
+new file mode 100644
+index 0000000..c38d3c4
+--- /dev/null
++++ b/include/linux/netfilter/xt_layer7.h
+@@ -0,0 +1,14 @@
++#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;
++    u_int8_t pkt;
++};
++
++#endif /* _XT_LAYER7_H */
+diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h
+index 644d9c2..b226a8f 100644
+--- a/include/net/netfilter/nf_conntrack.h
++++ b/include/net/netfilter/nf_conntrack.h
+@@ -105,6 +105,22 @@ struct nf_conn {
+       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 --git a/include/uapi/linux/netfilter/Kbuild b/include/uapi/linux/netfilter/Kbuild
+index 4111577..a95e6b5 100644
+--- a/include/uapi/linux/netfilter/Kbuild
++++ b/include/uapi/linux/netfilter/Kbuild
+@@ -53,6 +53,7 @@ header-y += xt_hashlimit.h
+ header-y += xt_helper.h
+ header-y += xt_iprange.h
+ header-y += xt_ipvs.h
++header-y += xt_layer7.h
+ header-y += xt_length.h
+ header-y += xt_limit.h
+ header-y += xt_mac.h
+diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
+index 56d22ca..7827ba4 100644
+--- a/net/netfilter/Kconfig
++++ b/net/netfilter/Kconfig
+@@ -1011,6 +1011,26 @@ config NETFILTER_XT_MATCH_IPVS
+         If unsure, say N.
++config NETFILTER_XT_MATCH_LAYER7
++      tristate '"layer7" match support'
++      depends on NETFILTER_XTABLES
++      depends on NETFILTER_ADVANCED
++      depends on 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_LENGTH
+       tristate '"length" match support'
+       depends on NETFILTER_ADVANCED
+@@ -1205,6 +1225,12 @@ config NETFILTER_XT_MATCH_STATE
+         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 --git a/net/netfilter/Makefile b/net/netfilter/Makefile
+index a1abf87..acec24e 100644
+--- a/net/netfilter/Makefile
++++ b/net/netfilter/Makefile
+@@ -134,6 +134,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT) += xt_recent.o
+ 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 --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
+index 0283bae..cae3790 100644
+--- a/net/netfilter/nf_conntrack_core.c
++++ b/net/netfilter/nf_conntrack_core.c
+@@ -224,6 +224,13 @@ destroy_conntrack(struct nf_conntrack *nfct)
+        * 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 --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c
+index bd700b4..5d045ca 100644
+--- a/net/netfilter/nf_conntrack_standalone.c
++++ b/net/netfilter/nf_conntrack_standalone.c
+@@ -240,6 +240,12 @@ static int ct_seq_show(struct seq_file *s, void *v)
+       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 --git a/net/netfilter/regexp/regexp.c b/net/netfilter/regexp/regexp.c
+new file mode 100644
+index 0000000..9006988
+--- /dev/null
++++ b/net/netfilter/regexp/regexp.c
+@@ -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 --git a/net/netfilter/regexp/regexp.h b/net/netfilter/regexp/regexp.h
+new file mode 100644
+index 0000000..a72eba7
+--- /dev/null
++++ b/net/netfilter/regexp/regexp.h
+@@ -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 --git a/net/netfilter/regexp/regmagic.h b/net/netfilter/regexp/regmagic.h
+new file mode 100644
+index 0000000..5acf447
+--- /dev/null
++++ b/net/netfilter/regexp/regmagic.h
+@@ -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 --git a/net/netfilter/regexp/regsub.c b/net/netfilter/regexp/regsub.c
+new file mode 100644
+index 0000000..339631f
+--- /dev/null
++++ b/net/netfilter/regexp/regsub.c
+@@ -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 --git a/net/netfilter/xt_layer7.c b/net/netfilter/xt_layer7.c
+new file mode 100644
+index 0000000..1573e9d
+--- /dev/null
++++ b/net/netfilter/xt_layer7.c
+@@ -0,0 +1,665 @@
++/*
++  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/seq_file.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter.h>
++#include <net/netfilter/nf_conntrack.h>
++#include <net/netfilter/nf_conntrack_core.h>
++#include <net/netfilter/nf_conntrack_extend.h>
++#include <net/netfilter/nf_conntrack_acct.h>
++#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.21");
++
++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)
++{
++      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));
++}
++
++#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("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)
++{
++      struct iphdr iphdr_tmp;
++      struct iphdr *iphdr;
++      int offset;
++
++      if (!ip_hdr(skb))
++              return 0;
++
++      offset = ((uintptr_t)ip_hdr(skb)) - ((uintptr_t)skb->data);
++
++      iphdr = skb_header_pointer(skb, offset, sizeof(*iphdr), &iphdr_tmp);
++      if (!iphdr)
++              return 0;
++
++      if (iphdr->protocol == IPPROTO_TCP ||
++          iphdr->protocol == IPPROTO_UDP ||
++          iphdr->protocol == IPPROTO_ICMP)
++              return 1;
++
++      return 0;
++}
++
++static int app_data_offset(const struct sk_buff *skb)
++{
++      int offset;
++      struct iphdr iphdr_tmp;
++      struct iphdr *iphdr;
++      struct tcphdr tcphdr_tmp;
++      struct tcphdr *tcphdr;
++
++      if (!ip_hdr(skb))
++              return -1;
++
++      offset = ((uintptr_t)ip_hdr(skb)) - ((uintptr_t)skb->data);
++
++      iphdr = skb_header_pointer(skb, offset, sizeof(*iphdr), &iphdr_tmp);
++      if (!iphdr)
++              return -1;
++
++      offset += iphdr->ihl * 4;
++
++      if (iphdr->protocol == IPPROTO_TCP) {
++              tcphdr = skb_header_pointer(skb, offset, sizeof(*tcphdr),
++                                          &tcphdr_tmp);
++              if (!tcphdr)
++                      return -1;
++
++              offset += tcphdr->doff * 4;
++
++              return offset;
++      }
++
++      if (iphdr->protocol == IPPROTO_UDP)
++              return offset + 8;
++
++      if (iphdr->protocol == IPPROTO_ICMP)
++              return offset + 8;
++
++      if (net_ratelimit())
++              pr_err(KERN_ERR "layer7: tried to handle unknown protocol!\n");
++
++      return offset + 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_datastr(char *target, int offset, char *app_data, int len)
++{
++      int length = 0, i;
++      if (!target) 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-offset-1 && i < len; i++) {
++              if(app_data[i] != '\0') {
++                      /* the kernel version of tolower mungs 'upper ascii' */
++                      target[length+offset] =
++                              isascii(app_data[i])? 
++                                      tolower(app_data[i]) : app_data[i];
++                      length++;
++              }
++      }
++      target[length+offset] = '\0';
++
++      return length;
++}
++
++/* add the new app data to the buffer.  Return number of bytes added. */
++static int add_data(char *target, int offset, const struct sk_buff *skb)
++{
++      int length, length_sum = 0;
++      int data_start = app_data_offset(skb);
++      int remaining = skb->len - data_start;
++      int to_copy;
++      uint8_t buf[512];
++      uint8_t *data;
++
++      while ((offset < maxdatalen - 1) && (remaining > 0)) {
++              to_copy = min_t(int, remaining, sizeof(buf));
++
++              data = skb_header_pointer(skb, data_start, to_copy, buf);
++              length = add_datastr(target, offset, data, to_copy);
++
++              remaining -= to_copy;
++              data_start += to_copy;
++              offset += length;
++              length_sum += length;
++      }
++
++      return length_sum;
++}
++
++/* add the new app data to the conntrack.  Return number of bytes added. */
++static int add_data_conntrack(struct nf_conn *master_conntrack,
++                            const struct sk_buff *skb)
++{
++      int length;
++
++      length = add_data(master_conntrack->layer7.app_data,
++                        master_conntrack->layer7.app_data_len, skb);
++      master_conntrack->layer7.app_data_len += length;
++
++      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;
++              }
++      }
++}
++
++static int layer7_numpackets_proc_show(struct seq_file *s, void *p) {
++      seq_printf(s, "%d\n", num_packets);
++
++      return 0;
++}
++
++static int layer7_numpackets_proc_open(struct inode *inode, struct file *file) {
++      return single_open(file, layer7_numpackets_proc_show, NULL);
++}
++
++/* Read in num_packets from userland */
++static ssize_t layer7_numpackets_write_proc(struct file* file, const char __user *buffer,
++              size_t count, loff_t *data) {
++      char value[1024];
++      int new_num_packets;
++
++      if (copy_from_user(&value, buffer, sizeof(value)))
++              return -EFAULT;
++
++      new_num_packets = my_atoi(value);
++
++      if ((new_num_packets < 1) || (new_num_packets > 99)) {
++              printk(KERN_WARNING "layer7: numpackets must be between 1 and 99\n");
++              return -EFAULT;
++      }
++
++      num_packets = new_num_packets;
++
++      return count;
++}
++
++static bool match(const struct sk_buff *skbin, struct xt_action_param *par)
++{
++      /* sidestep const without getting a compiler warning... */
++      struct sk_buff *skb = (struct sk_buff *)skbin;
++
++      const struct xt_layer7_info * info = par->matchinfo;
++
++      enum ip_conntrack_info master_ctinfo, ctinfo;
++      struct nf_conn *master_conntrack, *conntrack;
++      unsigned char *tmp_data;
++      unsigned int pattern_result;
++      regexp * comppattern;
++
++      /* Be paranoid/incompetent - lock the entire match function. */
++      spin_lock_bh(&l7_lock);
++
++      if (!can_handle(skbin)) {
++              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. */
++      conntrack = nf_ct_get(skbin, &ctinfo);
++      master_conntrack = nf_ct_get(skbin, &master_ctinfo);
++      if (!conntrack || !master_conntrack) {
++              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(!info->pkt && (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);
++      }
++
++      /* the return value gets checked later, when we're ready to use it */
++      comppattern = compile_and_cache(info->pattern, info->protocol);
++
++      if (info->pkt) {
++              tmp_data = kmalloc(maxdatalen, GFP_ATOMIC);
++              if(!tmp_data){
++                      if (net_ratelimit())
++                              printk(KERN_ERR "layer7: out of memory in match, bailing.\n");
++                      return info->invert;
++              }
++
++              tmp_data[0] = '\0';
++              add_data(tmp_data, 0, skbin);
++              pattern_result = ((comppattern && regexec(comppattern, tmp_data)) ? 1 : 0);
++
++              kfree(tmp_data);
++              tmp_data = NULL;
++              spin_unlock_bh(&l7_lock);
++
++              return (pattern_result ^ info->invert);
++      }
++
++      /* 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_conntrack(master_conntrack, skb);
++
++              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
++static int 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);
++              return -EINVAL;
++      }
++      return 0;
++}
++
++
++static void destroy(const struct xt_mtdtor_param *par)
++{
++      nf_ct_l3proto_module_put(par->match->family);
++}
++
++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 const struct file_operations layer7_numpackets_proc_fops = {
++      .owner   = THIS_MODULE,
++      .open    = layer7_numpackets_proc_open,
++      .read    = seq_read,
++      .llseek  = seq_lseek,
++      .release = single_release,
++      .write   = layer7_numpackets_write_proc,
++};
++
++static int __init xt_layer7_init(void)
++{
++      need_conntrack();
++
++      // Register proc interface
++      proc_create_data("layer7_numpackets", 0644,
++              init_net.proc_net, &layer7_numpackets_proc_fops, NULL);
++
++      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)
++{
++      remove_proc_entry("layer7_numpackets", init_net.proc_net);
++      xt_unregister_matches(xt_layer7_match, ARRAY_SIZE(xt_layer7_match));
++}
++
++module_init(xt_layer7_init);
++module_exit(xt_layer7_fini);
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.27-fs-exec-atomic64-operand-requires-impossible-reload.patch b/src/patches/linux-3.10.27-fs-exec-atomic64-operand-requires-impossible-reload.patch
new file mode 100644 (file)
index 0000000..a829790
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/fs/Makefile.orig 2014-01-16 20:17:03.000000000 +0000
++++ b/fs/Makefile      2014-01-16 20:25:05.000000000 +0000
+@@ -13,6 +13,8 @@
+               pnode.o splice.o sync.o utimes.o \
+               stack.o fs_struct.o statfs.o
++CFLAGS_exec.o += -O1
++
+ ifeq ($(CONFIG_BLOCK),y)
+ obj-y +=      buffer.o bio.o block_dev.o direct-io.o mpage.o ioprio.o
+ else
diff --git a/src/patches/linux-3.10.30-imq.patch b/src/patches/linux-3.10.30-imq.patch
new file mode 100644 (file)
index 0000000..7eebd69
--- /dev/null
@@ -0,0 +1,3304 @@
+diff -Naur linux-3.10.30.org/drivers/net/imq.c linux-3.10.30/drivers/net/imq.c
+--- linux-3.10.30.org/drivers/net/imq.c        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30/drivers/net/imq.c    2014-02-14 20:29:05.379402305 +0100
+@@ -0,0 +1,1001 @@
++/*
++ *             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
++ *
++ *             2013/09/10 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
++ *              - Fixed GSO handling for 3.10, see imq_nf_queue() for comments.
++ *              - Don't copy skb->cb_next when copying or cloning skbuffs.
++ *
++ *           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 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 struct nf_queue_entry *nf_queue_entry_dup(struct nf_queue_entry *e)
++{
++      struct nf_queue_entry *entry = kmemdup(e, e->size, GFP_ATOMIC);
++      if (entry) {
++              if (nf_queue_entry_get_refs(entry))
++                      return entry;
++              kfree(entry);
++      }
++      return NULL;
++}
++
++#ifdef CONFIG_BRIDGE_NETFILTER
++/* When called from bridge netfilter, skb->data must point to MAC header
++ * before calling skb_gso_segment(). Else, original MAC header is lost
++ * and segmented skbs will be sent to wrong destination.
++ */
++static void nf_bridge_adjust_skb_data(struct sk_buff *skb)
++{
++      if (skb->nf_bridge)
++              __skb_push(skb, skb->network_header - skb->mac_header);
++}
++
++static void nf_bridge_adjust_segmented_data(struct sk_buff *skb)
++{
++      if (skb->nf_bridge)
++              __skb_pull(skb, skb->network_header - skb->mac_header);
++}
++#else
++#define nf_bridge_adjust_skb_data(s) do {} while (0)
++#define nf_bridge_adjust_segmented_data(s) do {} while (0)
++#endif
++
++static void free_entry(struct nf_queue_entry *entry)
++{
++      nf_queue_entry_release_refs(entry);
++      kfree(entry);
++}
++
++static int __imq_nf_queue(struct nf_queue_entry *entry, struct net_device *dev);
++
++static int __imq_nf_queue_gso(struct nf_queue_entry *entry,
++                            struct net_device *dev, struct sk_buff *skb)
++{
++      int ret = -ENOMEM;
++      struct nf_queue_entry *entry_seg;
++
++      nf_bridge_adjust_segmented_data(skb);
++
++      if (skb->next == NULL) { /* last packet, no need to copy entry */
++              struct sk_buff *gso_skb = entry->skb;
++              entry->skb = skb;
++              ret = __imq_nf_queue(entry, dev);
++              if (ret)
++                      entry->skb = gso_skb;
++              return ret;
++      }
++
++      skb->next = NULL;
++
++      entry_seg = nf_queue_entry_dup(entry);
++      if (entry_seg) {
++              entry_seg->skb = skb;
++              ret = __imq_nf_queue(entry_seg, dev);
++              if (ret)
++                      free_entry(entry_seg);
++      }
++      return ret;
++}
++
++static int imq_nf_queue(struct nf_queue_entry *entry, unsigned queue_num)
++{
++      struct sk_buff *skb, *segs;
++      struct net_device *dev;
++      unsigned int queued;
++      int index, retval, err;
++
++      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_no_dev;
++      }
++
++      /* 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_no_dev;
++              }
++      }
++
++      if (unlikely(!(dev->flags & IFF_UP))) {
++              entry->skb->imq_flags = 0;
++              retval = -ECANCELED;
++              goto out_no_dev;
++      }
++
++      if (!skb_is_gso(entry->skb))
++              return __imq_nf_queue(entry, dev);
++
++      /* Since 3.10.x, GSO handling moved here as result of upstream commit
++       * a5fedd43d5f6c94c71053a66e4c3d2e35f1731a2 (netfilter: move
++       * skb_gso_segment into nfnetlink_queue module).
++       *
++       * Following code replicates the gso handling from
++       * 'net/netfilter/nfnetlink_queue_core.c':nfqnl_enqueue_packet().
++       */
++
++      skb = entry->skb;
++
++      switch (entry->pf) {
++      case NFPROTO_IPV4:
++              skb->protocol = htons(ETH_P_IP);
++              break;
++      case NFPROTO_IPV6:
++              skb->protocol = htons(ETH_P_IPV6);
++              break;
++      }
++
++      nf_bridge_adjust_skb_data(skb);
++      segs = skb_gso_segment(skb, 0);
++      /* Does not use PTR_ERR to limit the number of error codes that can be
++       * returned by nf_queue.  For instance, callers rely on -ECANCELED to
++       * mean 'ignore this hook'.
++       */
++      err = -ENOBUFS;
++      if (IS_ERR(segs))
++              goto out_err;
++      queued = 0;
++      err = 0;
++      do {
++              struct sk_buff *nskb = segs->next;
++              if (nskb && nskb->next)
++                      nskb->cb_next = NULL;
++              if (err == 0)
++                      err = __imq_nf_queue_gso(entry, dev, segs);
++              if (err == 0)
++                      queued++;
++              else
++                      kfree_skb(segs);
++              segs = nskb;
++      } while (segs);
++
++      if (queued) {
++              if (err) /* some segments are already queued */
++                      free_entry(entry);
++              kfree_skb(skb);
++              return 0;
++      }
++
++out_err:
++      nf_bridge_adjust_segmented_data(skb);
++      retval = err;
++out_no_dev:
++      return retval;
++}
++
++static int __imq_nf_queue(struct nf_queue_entry *entry, 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;
++      int retval = -EINVAL;
++      unsigned int orig_queue_index;
++
++      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;
++              }
++              skb->cb_next = NULL;
++              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 -Naur linux-3.10.30.org/drivers/net/Kconfig linux-3.10.30/drivers/net/Kconfig
+--- linux-3.10.30.org/drivers/net/Kconfig      2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/drivers/net/Kconfig  2014-02-14 20:29:05.379402305 +0100
+@@ -207,6 +207,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 -Naur linux-3.10.30.org/drivers/net/Makefile linux-3.10.30/drivers/net/Makefile
+--- linux-3.10.30.org/drivers/net/Makefile     2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/drivers/net/Makefile 2014-02-14 20:29:05.379402305 +0100
+@@ -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 -Naur linux-3.10.30.org/include/linux/imq.h linux-3.10.30/include/linux/imq.h
+--- linux-3.10.30.org/include/linux/imq.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30/include/linux/imq.h  2014-02-14 20:29:05.379402305 +0100
+@@ -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 -Naur linux-3.10.30.org/include/linux/netfilter/xt_IMQ.h linux-3.10.30/include/linux/netfilter/xt_IMQ.h
+--- linux-3.10.30.org/include/linux/netfilter/xt_IMQ.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30/include/linux/netfilter/xt_IMQ.h     2014-02-14 20:29:05.379402305 +0100
+@@ -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 -Naur linux-3.10.30.org/include/linux/netfilter_ipv4/ipt_IMQ.h linux-3.10.30/include/linux/netfilter_ipv4/ipt_IMQ.h
+--- linux-3.10.30.org/include/linux/netfilter_ipv4/ipt_IMQ.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30/include/linux/netfilter_ipv4/ipt_IMQ.h       2014-02-14 20:29:05.379402305 +0100
+@@ -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 -Naur linux-3.10.30.org/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-3.10.30/include/linux/netfilter_ipv6/ip6t_IMQ.h
+--- linux-3.10.30.org/include/linux/netfilter_ipv6/ip6t_IMQ.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30/include/linux/netfilter_ipv6/ip6t_IMQ.h      2014-02-14 20:29:05.379402305 +0100
+@@ -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 -Naur linux-3.10.30.org/include/linux/skbuff.h linux-3.10.30/include/linux/skbuff.h
+--- linux-3.10.30.org/include/linux/skbuff.h   2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/include/linux/skbuff.h       2014-02-14 20:29:05.379402305 +0100
+@@ -33,6 +33,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
+@@ -414,6 +417,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
+@@ -449,6 +455,9 @@
+ #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
+       struct nf_conntrack     *nfct;
+ #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
+@@ -487,7 +496,9 @@
+       __u8                    encapsulation:1;
+       /* 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
+@@ -616,7 +627,10 @@
+ {
+       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 kfree_skb_list(struct sk_buff *segs);
+ extern void skb_tx_error(struct sk_buff *skb);
+@@ -2735,6 +2749,10 @@
+       nf_conntrack_get(src->nfct);
+       dst->nfctinfo = src->nfctinfo;
+ #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 -Naur linux-3.10.30.org/include/net/netfilter/nf_queue.h linux-3.10.30/include/net/netfilter/nf_queue.h
+--- linux-3.10.30.org/include/net/netfilter/nf_queue.h 2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/include/net/netfilter/nf_queue.h     2014-02-14 20:29:05.382736249 +0100
+@@ -29,6 +29,12 @@
+ 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
+ bool nf_queue_entry_get_refs(struct nf_queue_entry *entry);
+ void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
+diff -Naur linux-3.10.30.org/include/uapi/linux/netfilter.h linux-3.10.30/include/uapi/linux/netfilter.h
+--- linux-3.10.30.org/include/uapi/linux/netfilter.h   2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/include/uapi/linux/netfilter.h       2014-02-14 20:29:05.382736249 +0100
+@@ -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 -Naur linux-3.10.30.org/net/core/dev.c linux-3.10.30/net/core/dev.c
+--- linux-3.10.30.org/net/core/dev.c   2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/net/core/dev.c       2014-02-14 20:29:05.382736249 +0100
+@@ -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"
+@@ -2573,7 +2576,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 -Naur linux-3.10.30.org/net/core/skbuff.c linux-3.10.30/net/core/skbuff.c
+--- linux-3.10.30.org/net/core/skbuff.c        2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/net/core/skbuff.c    2014-02-14 21:47:17.286039229 +0100
+@@ -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
+ /**
+  *    skb_panic - private function for out-of-line support
+@@ -552,6 +555,29 @@
+               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 +709,10 @@
+       new->sp                 = secpath_get(old->sp);
+ #endif
+       memcpy(new->cb, old->cb, sizeof(old->cb));
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      new->cb_next = NULL;
++      /*skb_copy_stored_cb(new, old);*/
++#endif
+       new->csum               = old->csum;
+       new->local_df           = old->local_df;
+       new->pkt_type           = old->pkt_type;
+@@ -3050,6 +3080,15 @@
+ }
+ EXPORT_SYMBOL_GPL(skb_gro_receive);
++#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;
++};
++#endif
++
+ void __init skb_init(void)
+ {
+       skbuff_head_cache = kmem_cache_create("skbuff_head_cache",
+@@ -3063,6 +3102,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
+ }
+ /**
+@@ -3348,6 +3394,76 @@
+ EXPORT_SYMBOL_GPL(skb_complete_wifi_ack);
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++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
++
+ /**
+  * skb_partial_csum_set - set up and verify partial csum values for packet
+  * @skb: the skb to set
+diff -Naur linux-3.10.30.org/net/ipv6/ip6_output.c linux-3.10.30/net/ipv6/ip6_output.c
+--- linux-3.10.30.org/net/ipv6/ip6_output.c    2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/net/ipv6/ip6_output.c        2014-02-14 20:29:05.392738001 +0100
+@@ -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));
+@@ -168,6 +165,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 -Naur linux-3.10.30.org/net/ipv6/ip6_output.c.orig linux-3.10.30/net/ipv6/ip6_output.c.orig
+--- linux-3.10.30.org/net/ipv6/ip6_output.c.orig       1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30/net/ipv6/ip6_output.c.orig   2014-02-14 20:29:05.392738001 +0100
+@@ -0,0 +1,1580 @@
++/*
++ *    IPv6 output functions
++ *    Linux INET6 implementation
++ *
++ *    Authors:
++ *    Pedro Roque             <roque@di.fc.ul.pt>
++ *
++ *    Based on linux/net/ipv4/ip_output.c
++ *
++ *    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.
++ *
++ *    Changes:
++ *    A.N.Kuznetsov   :       airthmetics in fragmentation.
++ *                            extension headers are implemented.
++ *                            route changes now work.
++ *                            ip6_forward does not confuse sniffers.
++ *                            etc.
++ *
++ *      H. von Brand    :       Added missing #include <linux/string.h>
++ *    Imran Patel     :       frag id should be in NBO
++ *      Kazunori MIYAZAWA @USAGI
++ *                    :       add ip6_append_data and related functions
++ *                            for datagram xmit
++ */
++
++#include <linux/errno.h>
++#include <linux/kernel.h>
++#include <linux/string.h>
++#include <linux/socket.h>
++#include <linux/net.h>
++#include <linux/netdevice.h>
++#include <linux/if_arp.h>
++#include <linux/in6.h>
++#include <linux/tcp.h>
++#include <linux/route.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++
++#include <linux/netfilter.h>
++#include <linux/netfilter_ipv6.h>
++
++#include <net/sock.h>
++#include <net/snmp.h>
++
++#include <net/ipv6.h>
++#include <net/ndisc.h>
++#include <net/protocol.h>
++#include <net/ip6_route.h>
++#include <net/addrconf.h>
++#include <net/rawv6.h>
++#include <net/icmp.h>
++#include <net/xfrm.h>
++#include <net/checksum.h>
++#include <linux/mroute6.h>
++
++int __ip6_local_out(struct sk_buff *skb)
++{
++      int len;
++
++      len = skb->len - sizeof(struct ipv6hdr);
++      if (len > IPV6_MAXPLEN)
++              len = 0;
++      ipv6_hdr(skb)->payload_len = htons(len);
++
++      return nf_hook(NFPROTO_IPV6, NF_INET_LOCAL_OUT, skb, NULL,
++                     skb_dst(skb)->dev, dst_output);
++}
++
++int ip6_local_out(struct sk_buff *skb)
++{
++      int err;
++
++      err = __ip6_local_out(skb);
++      if (likely(err == 1))
++              err = dst_output(skb);
++
++      return err;
++}
++EXPORT_SYMBOL_GPL(ip6_local_out);
++
++static int ip6_finish_output2(struct sk_buff *skb)
++{
++      struct dst_entry *dst = skb_dst(skb);
++      struct net_device *dev = dst->dev;
++      struct neighbour *neigh;
++      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));
++
++              if (!(dev->flags & IFF_LOOPBACK) && sk_mc_loop(skb->sk) &&
++                  ((mroute6_socket(dev_net(dev), skb) &&
++                   !(IP6CB(skb)->flags & IP6SKB_FORWARDED)) ||
++                   ipv6_chk_mcast_addr(dev, &ipv6_hdr(skb)->daddr,
++                                       &ipv6_hdr(skb)->saddr))) {
++                      struct sk_buff *newskb = skb_clone(skb, GFP_ATOMIC);
++
++                      /* Do not check for IFF_ALLMULTI; multicast routing
++                         is not supported in any case.
++                       */
++                      if (newskb)
++                              NF_HOOK(NFPROTO_IPV6, NF_INET_POST_ROUTING,
++                                      newskb, NULL, newskb->dev,
++                                      dev_loopback_xmit);
++
++                      if (ipv6_hdr(skb)->hop_limit == 0) {
++                              IP6_INC_STATS(dev_net(dev), idev,
++                                            IPSTATS_MIB_OUTDISCARDS);
++                              kfree_skb(skb);
++                              return 0;
++                      }
++              }
++
++              IP6_UPD_PO_STATS(dev_net(dev), idev, IPSTATS_MIB_OUTMCAST,
++                              skb->len);
++
++              if (IPV6_ADDR_MC_SCOPE(&ipv6_hdr(skb)->daddr) <=
++                  IPV6_ADDR_SCOPE_NODELOCAL &&
++                  !(dev->flags & IFF_LOOPBACK)) {
++                      kfree_skb(skb);
++                      return 0;
++              }
++      }
++
++      rcu_read_lock_bh();
++      nexthop = rt6_nexthop((struct rt6_info *)dst);
++      neigh = __ipv6_neigh_lookup_noref(dst->dev, nexthop);
++      if (unlikely(!neigh))
++              neigh = __neigh_create(&nd_tbl, nexthop, dst->dev, false);
++      if (!IS_ERR(neigh)) {
++              ret = dst_neigh_output(dst, neigh, skb);
++              rcu_read_unlock_bh();
++              return ret;
++      }
++      rcu_read_unlock_bh();
++
++      IP6_INC_STATS(dev_net(dst->dev),
++                    ip6_dst_idev(dst), IPSTATS_MIB_OUTNOROUTES);
++      kfree_skb(skb);
++      return -EINVAL;
++}
++
++static int ip6_finish_output(struct sk_buff *skb)
++{
++      if ((skb->len > ip6_skb_dst_mtu(skb) && !skb_is_gso(skb)) ||
++          dst_allfrag(skb_dst(skb)) ||
++          (IP6CB(skb)->frag_max_size && skb->len > IP6CB(skb)->frag_max_size))
++              return ip6_fragment(skb, ip6_finish_output2);
++      else
++              return ip6_finish_output2(skb);
++}
++
++int ip6_output(struct sk_buff *skb)
++{
++      struct net_device *dev = skb_dst(skb)->dev;
++      struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
++      if (unlikely(idev->cnf.disable_ipv6)) {
++              IP6_INC_STATS(dev_net(dev), idev,
++                            IPSTATS_MIB_OUTDISCARDS);
++              kfree_skb(skb);
++              return 0;
++      }
++
++      return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL, dev,
++                          ip6_finish_output,
++                          !(IP6CB(skb)->flags & IP6SKB_REROUTED));
++}
++
++/*
++ *    xmit an sk_buff (used by TCP, SCTP and DCCP)
++ */
++
++int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6,
++           struct ipv6_txoptions *opt, int tclass)
++{
++      struct net *net = sock_net(sk);
++      struct ipv6_pinfo *np = inet6_sk(sk);
++      struct in6_addr *first_hop = &fl6->daddr;
++      struct dst_entry *dst = skb_dst(skb);
++      struct ipv6hdr *hdr;
++      u8  proto = fl6->flowi6_proto;
++      int seg_len = skb->len;
++      int hlimit = -1;
++      u32 mtu;
++
++      if (opt) {
++              unsigned int head_room;
++
++              /* First: exthdrs may take lots of space (~8K for now)
++                 MAX_HEADER is not enough.
++               */
++              head_room = opt->opt_nflen + opt->opt_flen;
++              seg_len += head_room;
++              head_room += sizeof(struct ipv6hdr) + LL_RESERVED_SPACE(dst->dev);
++
++              if (skb_headroom(skb) < head_room) {
++                      struct sk_buff *skb2 = skb_realloc_headroom(skb, head_room);
++                      if (skb2 == NULL) {
++                              IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
++                                            IPSTATS_MIB_OUTDISCARDS);
++                              kfree_skb(skb);
++                              return -ENOBUFS;
++                      }
++                      consume_skb(skb);
++                      skb = skb2;
++                      skb_set_owner_w(skb, sk);
++              }
++              if (opt->opt_flen)
++                      ipv6_push_frag_opts(skb, opt, &proto);
++              if (opt->opt_nflen)
++                      ipv6_push_nfrag_opts(skb, opt, &proto, &first_hop);
++      }
++
++      skb_push(skb, sizeof(struct ipv6hdr));
++      skb_reset_network_header(skb);
++      hdr = ipv6_hdr(skb);
++
++      /*
++       *      Fill in the IPv6 header
++       */
++      if (np)
++              hlimit = np->hop_limit;
++      if (hlimit < 0)
++              hlimit = ip6_dst_hoplimit(dst);
++
++      ip6_flow_hdr(hdr, tclass, fl6->flowlabel);
++
++      hdr->payload_len = htons(seg_len);
++      hdr->nexthdr = proto;
++      hdr->hop_limit = hlimit;
++
++      hdr->saddr = fl6->saddr;
++      hdr->daddr = *first_hop;
++
++      skb->priority = sk->sk_priority;
++      skb->mark = sk->sk_mark;
++
++      mtu = dst_mtu(dst);
++      if ((skb->len <= mtu) || skb->local_df || skb_is_gso(skb)) {
++              IP6_UPD_PO_STATS(net, ip6_dst_idev(skb_dst(skb)),
++                            IPSTATS_MIB_OUT, skb->len);
++              return NF_HOOK(NFPROTO_IPV6, NF_INET_LOCAL_OUT, skb, NULL,
++                             dst->dev, dst_output);
++      }
++
++      skb->dev = dst->dev;
++      ipv6_local_error(sk, EMSGSIZE, fl6, mtu);
++      IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)), IPSTATS_MIB_FRAGFAILS);
++      kfree_skb(skb);
++      return -EMSGSIZE;
++}
++
++EXPORT_SYMBOL(ip6_xmit);
++
++static int ip6_call_ra_chain(struct sk_buff *skb, int sel)
++{
++      struct ip6_ra_chain *ra;
++      struct sock *last = NULL;
++
++      read_lock(&ip6_ra_lock);
++      for (ra = ip6_ra_chain; ra; ra = ra->next) {
++              struct sock *sk = ra->sk;
++              if (sk && ra->sel == sel &&
++                  (!sk->sk_bound_dev_if ||
++                   sk->sk_bound_dev_if == skb->dev->ifindex)) {
++                      if (last) {
++                              struct sk_buff *skb2 = skb_clone(skb, GFP_ATOMIC);
++                              if (skb2)
++                                      rawv6_rcv(last, skb2);
++                      }
++                      last = sk;
++              }
++      }
++
++      if (last) {
++              rawv6_rcv(last, skb);
++              read_unlock(&ip6_ra_lock);
++              return 1;
++      }
++      read_unlock(&ip6_ra_lock);
++      return 0;
++}
++
++static int ip6_forward_proxy_check(struct sk_buff *skb)
++{
++      struct ipv6hdr *hdr = ipv6_hdr(skb);
++      u8 nexthdr = hdr->nexthdr;
++      __be16 frag_off;
++      int offset;
++
++      if (ipv6_ext_hdr(nexthdr)) {
++              offset = ipv6_skip_exthdr(skb, sizeof(*hdr), &nexthdr, &frag_off);
++              if (offset < 0)
++                      return 0;
++      } else
++              offset = sizeof(struct ipv6hdr);
++
++      if (nexthdr == IPPROTO_ICMPV6) {
++              struct icmp6hdr *icmp6;
++
++              if (!pskb_may_pull(skb, (skb_network_header(skb) +
++                                       offset + 1 - skb->data)))
++                      return 0;
++
++              icmp6 = (struct icmp6hdr *)(skb_network_header(skb) + offset);
++
++              switch (icmp6->icmp6_type) {
++              case NDISC_ROUTER_SOLICITATION:
++              case NDISC_ROUTER_ADVERTISEMENT:
++              case NDISC_NEIGHBOUR_SOLICITATION:
++              case NDISC_NEIGHBOUR_ADVERTISEMENT:
++              case NDISC_REDIRECT:
++                      /* For reaction involving unicast neighbor discovery
++                       * message destined to the proxied address, pass it to
++                       * input function.
++                       */
++                      return 1;
++              default:
++                      break;
++              }
++      }
++
++      /*
++       * The proxying router can't forward traffic sent to a link-local
++       * address, so signal the sender and discard the packet. This
++       * behavior is clarified by the MIPv6 specification.
++       */
++      if (ipv6_addr_type(&hdr->daddr) & IPV6_ADDR_LINKLOCAL) {
++              dst_link_failure(skb);
++              return -1;
++      }
++
++      return 0;
++}
++
++static inline int ip6_forward_finish(struct sk_buff *skb)
++{
++      return dst_output(skb);
++}
++
++int ip6_forward(struct sk_buff *skb)
++{
++      struct dst_entry *dst = skb_dst(skb);
++      struct ipv6hdr *hdr = ipv6_hdr(skb);
++      struct inet6_skb_parm *opt = IP6CB(skb);
++      struct net *net = dev_net(dst->dev);
++      u32 mtu;
++
++      if (net->ipv6.devconf_all->forwarding == 0)
++              goto error;
++
++      if (skb_warn_if_lro(skb))
++              goto drop;
++
++      if (!xfrm6_policy_check(NULL, XFRM_POLICY_FWD, skb)) {
++              IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_INDISCARDS);
++              goto drop;
++      }
++
++      if (skb->pkt_type != PACKET_HOST)
++              goto drop;
++
++      skb_forward_csum(skb);
++
++      /*
++       *      We DO NOT make any processing on
++       *      RA packets, pushing them to user level AS IS
++       *      without ane WARRANTY that application will be able
++       *      to interpret them. The reason is that we
++       *      cannot make anything clever here.
++       *
++       *      We are not end-node, so that if packet contains
++       *      AH/ESP, we cannot make anything.
++       *      Defragmentation also would be mistake, RA packets
++       *      cannot be fragmented, because there is no warranty
++       *      that different fragments will go along one path. --ANK
++       */
++      if (unlikely(opt->flags & IP6SKB_ROUTERALERT)) {
++              if (ip6_call_ra_chain(skb, ntohs(opt->ra)))
++                      return 0;
++      }
++
++      /*
++       *      check and decrement ttl
++       */
++      if (hdr->hop_limit <= 1) {
++              /* Force OUTPUT device used as source address */
++              skb->dev = dst->dev;
++              icmpv6_send(skb, ICMPV6_TIME_EXCEED, ICMPV6_EXC_HOPLIMIT, 0);
++              IP6_INC_STATS_BH(net,
++                               ip6_dst_idev(dst), IPSTATS_MIB_INHDRERRORS);
++
++              kfree_skb(skb);
++              return -ETIMEDOUT;
++      }
++
++      /* XXX: idev->cnf.proxy_ndp? */
++      if (net->ipv6.devconf_all->proxy_ndp &&
++          pneigh_lookup(&nd_tbl, net, &hdr->daddr, skb->dev, 0)) {
++              int proxied = ip6_forward_proxy_check(skb);
++              if (proxied > 0)
++                      return ip6_input(skb);
++              else if (proxied < 0) {
++                      IP6_INC_STATS(net, ip6_dst_idev(dst),
++                                    IPSTATS_MIB_INDISCARDS);
++                      goto drop;
++              }
++      }
++
++      if (!xfrm6_route_forward(skb)) {
++              IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_INDISCARDS);
++              goto drop;
++      }
++      dst = skb_dst(skb);
++
++      /* IPv6 specs say nothing about it, but it is clear that we cannot
++         send redirects to source routed frames.
++         We don't send redirects to frames decapsulated from IPsec.
++       */
++      if (skb->dev == dst->dev && opt->srcrt == 0 && !skb_sec_path(skb)) {
++              struct in6_addr *target = NULL;
++              struct inet_peer *peer;
++              struct rt6_info *rt;
++
++              /*
++               *      incoming and outgoing devices are the same
++               *      send a redirect.
++               */
++
++              rt = (struct rt6_info *) dst;
++              if (rt->rt6i_flags & RTF_GATEWAY)
++                      target = &rt->rt6i_gateway;
++              else
++                      target = &hdr->daddr;
++
++              peer = inet_getpeer_v6(net->ipv6.peers, &rt->rt6i_dst.addr, 1);
++
++              /* Limit redirects both by destination (here)
++                 and by source (inside ndisc_send_redirect)
++               */
++              if (inet_peer_xrlim_allow(peer, 1*HZ))
++                      ndisc_send_redirect(skb, target);
++              if (peer)
++                      inet_putpeer(peer);
++      } else {
++              int addrtype = ipv6_addr_type(&hdr->saddr);
++
++              /* This check is security critical. */
++              if (addrtype == IPV6_ADDR_ANY ||
++                  addrtype & (IPV6_ADDR_MULTICAST | IPV6_ADDR_LOOPBACK))
++                      goto error;
++              if (addrtype & IPV6_ADDR_LINKLOCAL) {
++                      icmpv6_send(skb, ICMPV6_DEST_UNREACH,
++                                  ICMPV6_NOT_NEIGHBOUR, 0);
++                      goto error;
++              }
++      }
++
++      mtu = dst_mtu(dst);
++      if (mtu < IPV6_MIN_MTU)
++              mtu = IPV6_MIN_MTU;
++
++      if ((!skb->local_df && skb->len > mtu && !skb_is_gso(skb)) ||
++          (IP6CB(skb)->frag_max_size && IP6CB(skb)->frag_max_size > mtu)) {
++              /* Again, force OUTPUT device used as source address */
++              skb->dev = dst->dev;
++              icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu);
++              IP6_INC_STATS_BH(net,
++                               ip6_dst_idev(dst), IPSTATS_MIB_INTOOBIGERRORS);
++              IP6_INC_STATS_BH(net,
++                               ip6_dst_idev(dst), IPSTATS_MIB_FRAGFAILS);
++              kfree_skb(skb);
++              return -EMSGSIZE;
++      }
++
++      if (skb_cow(skb, dst->dev->hard_header_len)) {
++              IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTDISCARDS);
++              goto drop;
++      }
++
++      hdr = ipv6_hdr(skb);
++
++      /* Mangling hops number delayed to point after skb COW */
++
++      hdr->hop_limit--;
++
++      IP6_INC_STATS_BH(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTFORWDATAGRAMS);
++      IP6_ADD_STATS_BH(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTOCTETS, skb->len);
++      return NF_HOOK(NFPROTO_IPV6, NF_INET_FORWARD, skb, skb->dev, dst->dev,
++                     ip6_forward_finish);
++
++error:
++      IP6_INC_STATS_BH(net, ip6_dst_idev(dst), IPSTATS_MIB_INADDRERRORS);
++drop:
++      kfree_skb(skb);
++      return -EINVAL;
++}
++
++static void ip6_copy_metadata(struct sk_buff *to, struct sk_buff *from)
++{
++      to->pkt_type = from->pkt_type;
++      to->priority = from->priority;
++      to->protocol = from->protocol;
++      skb_dst_drop(to);
++      skb_dst_set(to, dst_clone(skb_dst(from)));
++      to->dev = from->dev;
++      to->mark = from->mark;
++
++#ifdef CONFIG_NET_SCHED
++      to->tc_index = from->tc_index;
++#endif
++      nf_copy(to, from);
++#if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE)
++      to->nf_trace = from->nf_trace;
++#endif
++      skb_copy_secmark(to, from);
++}
++
++int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *))
++{
++      struct sk_buff *frag;
++      struct rt6_info *rt = (struct rt6_info*)skb_dst(skb);
++      struct ipv6_pinfo *np = skb->sk ? inet6_sk(skb->sk) : NULL;
++      struct ipv6hdr *tmp_hdr;
++      struct frag_hdr *fh;
++      unsigned int mtu, hlen, left, len;
++      int hroom, troom;
++      __be32 frag_id = 0;
++      int ptr, offset = 0, err=0;
++      u8 *prevhdr, nexthdr = 0;
++      struct net *net = dev_net(skb_dst(skb)->dev);
++
++      hlen = ip6_find_1stfragopt(skb, &prevhdr);
++      nexthdr = *prevhdr;
++
++      mtu = ip6_skb_dst_mtu(skb);
++
++      /* We must not fragment if the socket is set to force MTU discovery
++       * or if the skb it not generated by a local socket.
++       */
++      if (unlikely(!skb->local_df && skb->len > mtu) ||
++                   (IP6CB(skb)->frag_max_size &&
++                    IP6CB(skb)->frag_max_size > mtu)) {
++              if (skb->sk && dst_allfrag(skb_dst(skb)))
++                      sk_nocaps_add(skb->sk, NETIF_F_GSO_MASK);
++
++              skb->dev = skb_dst(skb)->dev;
++              icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu);
++              IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
++                            IPSTATS_MIB_FRAGFAILS);
++              kfree_skb(skb);
++              return -EMSGSIZE;
++      }
++
++      if (np && np->frag_size < mtu) {
++              if (np->frag_size)
++                      mtu = np->frag_size;
++      }
++      mtu -= hlen + sizeof(struct frag_hdr);
++
++      if (skb_has_frag_list(skb)) {
++              int first_len = skb_pagelen(skb);
++              struct sk_buff *frag2;
++
++              if (first_len - hlen > mtu ||
++                  ((first_len - hlen) & 7) ||
++                  skb_cloned(skb))
++                      goto slow_path;
++
++              skb_walk_frags(skb, frag) {
++                      /* Correct geometry. */
++                      if (frag->len > mtu ||
++                          ((frag->len & 7) && frag->next) ||
++                          skb_headroom(frag) < hlen)
++                              goto slow_path_clean;
++
++                      /* Partially cloned skb? */
++                      if (skb_shared(frag))
++                              goto slow_path_clean;
++
++                      BUG_ON(frag->sk);
++                      if (skb->sk) {
++                              frag->sk = skb->sk;
++                              frag->destructor = sock_wfree;
++                      }
++                      skb->truesize -= frag->truesize;
++              }
++
++              err = 0;
++              offset = 0;
++              frag = skb_shinfo(skb)->frag_list;
++              skb_frag_list_init(skb);
++              /* BUILD HEADER */
++
++              *prevhdr = NEXTHDR_FRAGMENT;
++              tmp_hdr = kmemdup(skb_network_header(skb), hlen, GFP_ATOMIC);
++              if (!tmp_hdr) {
++                      IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
++                                    IPSTATS_MIB_FRAGFAILS);
++                      return -ENOMEM;
++              }
++
++              __skb_pull(skb, hlen);
++              fh = (struct frag_hdr*)__skb_push(skb, sizeof(struct frag_hdr));
++              __skb_push(skb, hlen);
++              skb_reset_network_header(skb);
++              memcpy(skb_network_header(skb), tmp_hdr, hlen);
++
++              ipv6_select_ident(fh, rt);
++              fh->nexthdr = nexthdr;
++              fh->reserved = 0;
++              fh->frag_off = htons(IP6_MF);
++              frag_id = fh->identification;
++
++              first_len = skb_pagelen(skb);
++              skb->data_len = first_len - skb_headlen(skb);
++              skb->len = first_len;
++              ipv6_hdr(skb)->payload_len = htons(first_len -
++                                                 sizeof(struct ipv6hdr));
++
++              dst_hold(&rt->dst);
++
++              for (;;) {
++                      /* Prepare header of the next frame,
++                       * before previous one went down. */
++                      if (frag) {
++                              frag->ip_summed = CHECKSUM_NONE;
++                              skb_reset_transport_header(frag);
++                              fh = (struct frag_hdr*)__skb_push(frag, sizeof(struct frag_hdr));
++                              __skb_push(frag, hlen);
++                              skb_reset_network_header(frag);
++                              memcpy(skb_network_header(frag), tmp_hdr,
++                                     hlen);
++                              offset += skb->len - hlen - sizeof(struct frag_hdr);
++                              fh->nexthdr = nexthdr;
++                              fh->reserved = 0;
++                              fh->frag_off = htons(offset);
++                              if (frag->next != NULL)
++                                      fh->frag_off |= htons(IP6_MF);
++                              fh->identification = frag_id;
++                              ipv6_hdr(frag)->payload_len =
++                                              htons(frag->len -
++                                                    sizeof(struct ipv6hdr));
++                              ip6_copy_metadata(frag, skb);
++                      }
++
++                      err = output(skb);
++                      if(!err)
++                              IP6_INC_STATS(net, ip6_dst_idev(&rt->dst),
++                                            IPSTATS_MIB_FRAGCREATES);
++
++                      if (err || !frag)
++                              break;
++
++                      skb = frag;
++                      frag = skb->next;
++                      skb->next = NULL;
++              }
++
++              kfree(tmp_hdr);
++
++              if (err == 0) {
++                      IP6_INC_STATS(net, ip6_dst_idev(&rt->dst),
++                                    IPSTATS_MIB_FRAGOKS);
++                      ip6_rt_put(rt);
++                      return 0;
++              }
++
++              while (frag) {
++                      skb = frag->next;
++                      kfree_skb(frag);
++                      frag = skb;
++              }
++
++              IP6_INC_STATS(net, ip6_dst_idev(&rt->dst),
++                            IPSTATS_MIB_FRAGFAILS);
++              ip6_rt_put(rt);
++              return err;
++
++slow_path_clean:
++              skb_walk_frags(skb, frag2) {
++                      if (frag2 == frag)
++                              break;
++                      frag2->sk = NULL;
++                      frag2->destructor = NULL;
++                      skb->truesize += frag2->truesize;
++              }
++      }
++
++slow_path:
++      if ((skb->ip_summed == CHECKSUM_PARTIAL) &&
++          skb_checksum_help(skb))
++              goto fail;
++
++      left = skb->len - hlen;         /* Space per frame */
++      ptr = hlen;                     /* Where to start from */
++
++      /*
++       *      Fragment the datagram.
++       */
++
++      *prevhdr = NEXTHDR_FRAGMENT;
++      hroom = LL_RESERVED_SPACE(rt->dst.dev);
++      troom = rt->dst.dev->needed_tailroom;
++
++      /*
++       *      Keep copying data until we run out.
++       */
++      while(left > 0) {
++              len = left;
++              /* IF: it doesn't fit, use 'mtu' - the data space left */
++              if (len > mtu)
++                      len = mtu;
++              /* IF: we are not sending up to and including the packet end
++                 then align the next start on an eight byte boundary */
++              if (len < left) {
++                      len &= ~7;
++              }
++              /*
++               *      Allocate buffer.
++               */
++
++              if ((frag = alloc_skb(len + hlen + sizeof(struct frag_hdr) +
++                                    hroom + troom, GFP_ATOMIC)) == NULL) {
++                      NETDEBUG(KERN_INFO "IPv6: frag: no memory for new fragment!\n");
++                      IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
++                                    IPSTATS_MIB_FRAGFAILS);
++                      err = -ENOMEM;
++                      goto fail;
++              }
++
++              /*
++               *      Set up data on packet
++               */
++
++              ip6_copy_metadata(frag, skb);
++              skb_reserve(frag, hroom);
++              skb_put(frag, len + hlen + sizeof(struct frag_hdr));
++              skb_reset_network_header(frag);
++              fh = (struct frag_hdr *)(skb_network_header(frag) + hlen);
++              frag->transport_header = (frag->network_header + hlen +
++                                        sizeof(struct frag_hdr));
++
++              /*
++               *      Charge the memory for the fragment to any owner
++               *      it might possess
++               */
++              if (skb->sk)
++                      skb_set_owner_w(frag, skb->sk);
++
++              /*
++               *      Copy the packet header into the new buffer.
++               */
++              skb_copy_from_linear_data(skb, skb_network_header(frag), hlen);
++
++              /*
++               *      Build fragment header.
++               */
++              fh->nexthdr = nexthdr;
++              fh->reserved = 0;
++              if (!frag_id) {
++                      ipv6_select_ident(fh, rt);
++                      frag_id = fh->identification;
++              } else
++                      fh->identification = frag_id;
++
++              /*
++               *      Copy a block of the IP datagram.
++               */
++              if (skb_copy_bits(skb, ptr, skb_transport_header(frag), len))
++                      BUG();
++              left -= len;
++
++              fh->frag_off = htons(offset);
++              if (left > 0)
++                      fh->frag_off |= htons(IP6_MF);
++              ipv6_hdr(frag)->payload_len = htons(frag->len -
++                                                  sizeof(struct ipv6hdr));
++
++              ptr += len;
++              offset += len;
++
++              /*
++               *      Put this fragment into the sending queue.
++               */
++              err = output(frag);
++              if (err)
++                      goto fail;
++
++              IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
++                            IPSTATS_MIB_FRAGCREATES);
++      }
++      IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
++                    IPSTATS_MIB_FRAGOKS);
++      consume_skb(skb);
++      return err;
++
++fail:
++      IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
++                    IPSTATS_MIB_FRAGFAILS);
++      kfree_skb(skb);
++      return err;
++}
++
++static inline int ip6_rt_check(const struct rt6key *rt_key,
++                             const struct in6_addr *fl_addr,
++                             const struct in6_addr *addr_cache)
++{
++      return (rt_key->plen != 128 || !ipv6_addr_equal(fl_addr, &rt_key->addr)) &&
++              (addr_cache == NULL || !ipv6_addr_equal(fl_addr, addr_cache));
++}
++
++static struct dst_entry *ip6_sk_dst_check(struct sock *sk,
++                                        struct dst_entry *dst,
++                                        const struct flowi6 *fl6)
++{
++      struct ipv6_pinfo *np = inet6_sk(sk);
++      struct rt6_info *rt;
++
++      if (!dst)
++              goto out;
++
++      if (dst->ops->family != AF_INET6) {
++              dst_release(dst);
++              return NULL;
++      }
++
++      rt = (struct rt6_info *)dst;
++      /* Yes, checking route validity in not connected
++       * case is not very simple. Take into account,
++       * that we do not support routing by source, TOS,
++       * and MSG_DONTROUTE            --ANK (980726)
++       *
++       * 1. ip6_rt_check(): If route was host route,
++       *    check that cached destination is current.
++       *    If it is network route, we still may
++       *    check its validity using saved pointer
++       *    to the last used address: daddr_cache.
++       *    We do not want to save whole address now,
++       *    (because main consumer of this service
++       *    is tcp, which has not this problem),
++       *    so that the last trick works only on connected
++       *    sockets.
++       * 2. oif also should be the same.
++       */
++      if (ip6_rt_check(&rt->rt6i_dst, &fl6->daddr, np->daddr_cache) ||
++#ifdef CONFIG_IPV6_SUBTREES
++          ip6_rt_check(&rt->rt6i_src, &fl6->saddr, np->saddr_cache) ||
++#endif
++          (fl6->flowi6_oif && fl6->flowi6_oif != dst->dev->ifindex)) {
++              dst_release(dst);
++              dst = NULL;
++      }
++
++out:
++      return dst;
++}
++
++static int ip6_dst_lookup_tail(struct sock *sk,
++                             struct dst_entry **dst, struct flowi6 *fl6)
++{
++      struct net *net = sock_net(sk);
++#ifdef CONFIG_IPV6_OPTIMISTIC_DAD
++      struct neighbour *n;
++      struct rt6_info *rt;
++#endif
++      int err;
++
++      if (*dst == NULL)
++              *dst = ip6_route_output(net, sk, fl6);
++
++      if ((err = (*dst)->error))
++              goto out_err_release;
++
++      if (ipv6_addr_any(&fl6->saddr)) {
++              struct rt6_info *rt = (struct rt6_info *) *dst;
++              err = ip6_route_get_saddr(net, rt, &fl6->daddr,
++                                        sk ? inet6_sk(sk)->srcprefs : 0,
++                                        &fl6->saddr);
++              if (err)
++                      goto out_err_release;
++      }
++
++#ifdef CONFIG_IPV6_OPTIMISTIC_DAD
++      /*
++       * Here if the dst entry we've looked up
++       * has a neighbour entry that is in the INCOMPLETE
++       * state and the src address from the flow is
++       * marked as OPTIMISTIC, we release the found
++       * dst entry and replace it instead with the
++       * dst entry of the nexthop router
++       */
++      rt = (struct rt6_info *) *dst;
++      rcu_read_lock_bh();
++      n = __ipv6_neigh_lookup_noref(rt->dst.dev, rt6_nexthop(rt));
++      err = n && !(n->nud_state & NUD_VALID) ? -EINVAL : 0;
++      rcu_read_unlock_bh();
++
++      if (err) {
++              struct inet6_ifaddr *ifp;
++              struct flowi6 fl_gw6;
++              int redirect;
++
++              ifp = ipv6_get_ifaddr(net, &fl6->saddr,
++                                    (*dst)->dev, 1);
++
++              redirect = (ifp && ifp->flags & IFA_F_OPTIMISTIC);
++              if (ifp)
++                      in6_ifa_put(ifp);
++
++              if (redirect) {
++                      /*
++                       * We need to get the dst entry for the
++                       * default router instead
++                       */
++                      dst_release(*dst);
++                      memcpy(&fl_gw6, fl6, sizeof(struct flowi6));
++                      memset(&fl_gw6.daddr, 0, sizeof(struct in6_addr));
++                      *dst = ip6_route_output(net, sk, &fl_gw6);
++                      if ((err = (*dst)->error))
++                              goto out_err_release;
++              }
++      }
++#endif
++
++      return 0;
++
++out_err_release:
++      if (err == -ENETUNREACH)
++              IP6_INC_STATS_BH(net, NULL, IPSTATS_MIB_OUTNOROUTES);
++      dst_release(*dst);
++      *dst = NULL;
++      return err;
++}
++
++/**
++ *    ip6_dst_lookup - perform route lookup on flow
++ *    @sk: socket which provides route info
++ *    @dst: pointer to dst_entry * for result
++ *    @fl6: flow to lookup
++ *
++ *    This function performs a route lookup on the given flow.
++ *
++ *    It returns zero on success, or a standard errno code on error.
++ */
++int ip6_dst_lookup(struct sock *sk, struct dst_entry **dst, struct flowi6 *fl6)
++{
++      *dst = NULL;
++      return ip6_dst_lookup_tail(sk, dst, fl6);
++}
++EXPORT_SYMBOL_GPL(ip6_dst_lookup);
++
++/**
++ *    ip6_dst_lookup_flow - perform route lookup on flow with ipsec
++ *    @sk: socket which provides route info
++ *    @fl6: flow to lookup
++ *    @final_dst: final destination address for ipsec lookup
++ *    @can_sleep: we are in a sleepable context
++ *
++ *    This function performs a route lookup on the given flow.
++ *
++ *    It returns a valid dst pointer on success, or a pointer encoded
++ *    error code.
++ */
++struct dst_entry *ip6_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6,
++                                    const struct in6_addr *final_dst,
++                                    bool can_sleep)
++{
++      struct dst_entry *dst = NULL;
++      int err;
++
++      err = ip6_dst_lookup_tail(sk, &dst, fl6);
++      if (err)
++              return ERR_PTR(err);
++      if (final_dst)
++              fl6->daddr = *final_dst;
++      if (can_sleep)
++              fl6->flowi6_flags |= FLOWI_FLAG_CAN_SLEEP;
++
++      return xfrm_lookup(sock_net(sk), dst, flowi6_to_flowi(fl6), sk, 0);
++}
++EXPORT_SYMBOL_GPL(ip6_dst_lookup_flow);
++
++/**
++ *    ip6_sk_dst_lookup_flow - perform socket cached route lookup on flow
++ *    @sk: socket which provides the dst cache and route info
++ *    @fl6: flow to lookup
++ *    @final_dst: final destination address for ipsec lookup
++ *    @can_sleep: we are in a sleepable context
++ *
++ *    This function performs a route lookup on the given flow with the
++ *    possibility of using the cached route in the socket if it is valid.
++ *    It will take the socket dst lock when operating on the dst cache.
++ *    As a result, this function can only be used in process context.
++ *
++ *    It returns a valid dst pointer on success, or a pointer encoded
++ *    error code.
++ */
++struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *fl6,
++                                       const struct in6_addr *final_dst,
++                                       bool can_sleep)
++{
++      struct dst_entry *dst = sk_dst_check(sk, inet6_sk(sk)->dst_cookie);
++      int err;
++
++      dst = ip6_sk_dst_check(sk, dst, fl6);
++
++      err = ip6_dst_lookup_tail(sk, &dst, fl6);
++      if (err)
++              return ERR_PTR(err);
++      if (final_dst)
++              fl6->daddr = *final_dst;
++      if (can_sleep)
++              fl6->flowi6_flags |= FLOWI_FLAG_CAN_SLEEP;
++
++      return xfrm_lookup(sock_net(sk), dst, flowi6_to_flowi(fl6), sk, 0);
++}
++EXPORT_SYMBOL_GPL(ip6_sk_dst_lookup_flow);
++
++static inline int ip6_ufo_append_data(struct sock *sk,
++                      int getfrag(void *from, char *to, int offset, int len,
++                      int odd, struct sk_buff *skb),
++                      void *from, int length, int hh_len, int fragheaderlen,
++                      int transhdrlen, int mtu,unsigned int flags,
++                      struct rt6_info *rt)
++
++{
++      struct sk_buff *skb;
++      int err;
++
++      /* There is support for UDP large send offload by network
++       * device, so create one single skb packet containing complete
++       * udp datagram
++       */
++      if ((skb = skb_peek_tail(&sk->sk_write_queue)) == NULL) {
++              struct frag_hdr fhdr;
++
++              skb = sock_alloc_send_skb(sk,
++                      hh_len + fragheaderlen + transhdrlen + 20,
++                      (flags & MSG_DONTWAIT), &err);
++              if (skb == NULL)
++                      return err;
++
++              /* reserve space for Hardware header */
++              skb_reserve(skb, hh_len);
++
++              /* create space for UDP/IP header */
++              skb_put(skb,fragheaderlen + transhdrlen);
++
++              /* initialize network header pointer */
++              skb_reset_network_header(skb);
++
++              /* initialize protocol header pointer */
++              skb->transport_header = skb->network_header + fragheaderlen;
++
++              skb->ip_summed = CHECKSUM_PARTIAL;
++              skb->csum = 0;
++
++              /* Specify the length of each IPv6 datagram fragment.
++               * It has to be a multiple of 8.
++               */
++              skb_shinfo(skb)->gso_size = (mtu - fragheaderlen -
++                                           sizeof(struct frag_hdr)) & ~7;
++              skb_shinfo(skb)->gso_type = SKB_GSO_UDP;
++              ipv6_select_ident(&fhdr, rt);
++              skb_shinfo(skb)->ip6_frag_id = fhdr.identification;
++              __skb_queue_tail(&sk->sk_write_queue, skb);
++      }
++
++      return skb_append_datato_frags(sk, skb, getfrag, from,
++                                     (length - transhdrlen));
++}
++
++static inline struct ipv6_opt_hdr *ip6_opt_dup(struct ipv6_opt_hdr *src,
++                                             gfp_t gfp)
++{
++      return src ? kmemdup(src, (src->hdrlen + 1) * 8, gfp) : NULL;
++}
++
++static inline struct ipv6_rt_hdr *ip6_rthdr_dup(struct ipv6_rt_hdr *src,
++                                              gfp_t gfp)
++{
++      return src ? kmemdup(src, (src->hdrlen + 1) * 8, gfp) : NULL;
++}
++
++static void ip6_append_data_mtu(unsigned int *mtu,
++                              int *maxfraglen,
++                              unsigned int fragheaderlen,
++                              struct sk_buff *skb,
++                              struct rt6_info *rt,
++                              bool pmtuprobe)
++{
++      if (!(rt->dst.flags & DST_XFRM_TUNNEL)) {
++              if (skb == NULL) {
++                      /* first fragment, reserve header_len */
++                      *mtu = *mtu - rt->dst.header_len;
++
++              } else {
++                      /*
++                       * this fragment is not first, the headers
++                       * space is regarded as data space.
++                       */
++                      *mtu = min(*mtu, pmtuprobe ?
++                                 rt->dst.dev->mtu :
++                                 dst_mtu(rt->dst.path));
++              }
++              *maxfraglen = ((*mtu - fragheaderlen) & ~7)
++                            + fragheaderlen - sizeof(struct frag_hdr);
++      }
++}
++
++int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
++      int offset, int len, int odd, struct sk_buff *skb),
++      void *from, int length, int transhdrlen,
++      int hlimit, int tclass, struct ipv6_txoptions *opt, struct flowi6 *fl6,
++      struct rt6_info *rt, unsigned int flags, int dontfrag)
++{
++      struct inet_sock *inet = inet_sk(sk);
++      struct ipv6_pinfo *np = inet6_sk(sk);
++      struct inet_cork *cork;
++      struct sk_buff *skb, *skb_prev = NULL;
++      unsigned int maxfraglen, fragheaderlen, mtu;
++      int exthdrlen;
++      int dst_exthdrlen;
++      int hh_len;
++      int copy;
++      int err;
++      int offset = 0;
++      __u8 tx_flags = 0;
++
++      if (flags&MSG_PROBE)
++              return 0;
++      cork = &inet->cork.base;
++      if (skb_queue_empty(&sk->sk_write_queue)) {
++              /*
++               * setup for corking
++               */
++              if (opt) {
++                      if (WARN_ON(np->cork.opt))
++                              return -EINVAL;
++
++                      np->cork.opt = kzalloc(opt->tot_len, sk->sk_allocation);
++                      if (unlikely(np->cork.opt == NULL))
++                              return -ENOBUFS;
++
++                      np->cork.opt->tot_len = opt->tot_len;
++                      np->cork.opt->opt_flen = opt->opt_flen;
++                      np->cork.opt->opt_nflen = opt->opt_nflen;
++
++                      np->cork.opt->dst0opt = ip6_opt_dup(opt->dst0opt,
++                                                          sk->sk_allocation);
++                      if (opt->dst0opt && !np->cork.opt->dst0opt)
++                              return -ENOBUFS;
++
++                      np->cork.opt->dst1opt = ip6_opt_dup(opt->dst1opt,
++                                                          sk->sk_allocation);
++                      if (opt->dst1opt && !np->cork.opt->dst1opt)
++                              return -ENOBUFS;
++
++                      np->cork.opt->hopopt = ip6_opt_dup(opt->hopopt,
++                                                         sk->sk_allocation);
++                      if (opt->hopopt && !np->cork.opt->hopopt)
++                              return -ENOBUFS;
++
++                      np->cork.opt->srcrt = ip6_rthdr_dup(opt->srcrt,
++                                                          sk->sk_allocation);
++                      if (opt->srcrt && !np->cork.opt->srcrt)
++                              return -ENOBUFS;
++
++                      /* need source address above miyazawa*/
++              }
++              dst_hold(&rt->dst);
++              cork->dst = &rt->dst;
++              inet->cork.fl.u.ip6 = *fl6;
++              np->cork.hop_limit = hlimit;
++              np->cork.tclass = tclass;
++              if (rt->dst.flags & DST_XFRM_TUNNEL)
++                      mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ?
++                            rt->dst.dev->mtu : dst_mtu(&rt->dst);
++              else
++                      mtu = np->pmtudisc == IPV6_PMTUDISC_PROBE ?
++                            rt->dst.dev->mtu : dst_mtu(rt->dst.path);
++              if (np->frag_size < mtu) {
++                      if (np->frag_size)
++                              mtu = np->frag_size;
++              }
++              cork->fragsize = mtu;
++              if (dst_allfrag(rt->dst.path))
++                      cork->flags |= IPCORK_ALLFRAG;
++              cork->length = 0;
++              exthdrlen = (opt ? opt->opt_flen : 0);
++              length += exthdrlen;
++              transhdrlen += exthdrlen;
++              dst_exthdrlen = rt->dst.header_len - rt->rt6i_nfheader_len;
++      } else {
++              rt = (struct rt6_info *)cork->dst;
++              fl6 = &inet->cork.fl.u.ip6;
++              opt = np->cork.opt;
++              transhdrlen = 0;
++              exthdrlen = 0;
++              dst_exthdrlen = 0;
++              mtu = cork->fragsize;
++      }
++
++      hh_len = LL_RESERVED_SPACE(rt->dst.dev);
++
++      fragheaderlen = sizeof(struct ipv6hdr) + rt->rt6i_nfheader_len +
++                      (opt ? opt->opt_nflen : 0);
++      maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen - sizeof(struct frag_hdr);
++
++      if (mtu <= sizeof(struct ipv6hdr) + IPV6_MAXPLEN) {
++              if (cork->length + length > sizeof(struct ipv6hdr) + IPV6_MAXPLEN - fragheaderlen) {
++                      ipv6_local_error(sk, EMSGSIZE, fl6, mtu-exthdrlen);
++                      return -EMSGSIZE;
++              }
++      }
++
++      /* For UDP, check if TX timestamp is enabled */
++      if (sk->sk_type == SOCK_DGRAM)
++              sock_tx_timestamp(sk, &tx_flags);
++
++      /*
++       * Let's try using as much space as possible.
++       * Use MTU if total length of the message fits into the MTU.
++       * Otherwise, we need to reserve fragment header and
++       * fragment alignment (= 8-15 octects, in total).
++       *
++       * Note that we may need to "move" the data from the tail of
++       * of the buffer to the new fragment when we split
++       * the message.
++       *
++       * FIXME: It may be fragmented into multiple chunks
++       *        at once if non-fragmentable extension headers
++       *        are too large.
++       * --yoshfuji
++       */
++
++      if ((length > mtu) && dontfrag && (sk->sk_protocol == IPPROTO_UDP ||
++                                         sk->sk_protocol == IPPROTO_RAW)) {
++              ipv6_local_rxpmtu(sk, fl6, mtu-exthdrlen);
++              return -EMSGSIZE;
++      }
++
++      skb = skb_peek_tail(&sk->sk_write_queue);
++      cork->length += length;
++      if (((length > mtu) ||
++           (skb && skb_has_frags(skb))) &&
++          (sk->sk_protocol == IPPROTO_UDP) &&
++          (rt->dst.dev->features & NETIF_F_UFO)) {
++              err = ip6_ufo_append_data(sk, getfrag, from, length,
++                                        hh_len, fragheaderlen,
++                                        transhdrlen, mtu, flags, rt);
++              if (err)
++                      goto error;
++              return 0;
++      }
++
++      if (!skb)
++              goto alloc_new_skb;
++
++      while (length > 0) {
++              /* Check if the remaining data fits into current packet. */
++              copy = (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - skb->len;
++              if (copy < length)
++                      copy = maxfraglen - skb->len;
++
++              if (copy <= 0) {
++                      char *data;
++                      unsigned int datalen;
++                      unsigned int fraglen;
++                      unsigned int fraggap;
++                      unsigned int alloclen;
++alloc_new_skb:
++                      /* There's no room in the current skb */
++                      if (skb)
++                              fraggap = skb->len - maxfraglen;
++                      else
++                              fraggap = 0;
++                      /* update mtu and maxfraglen if necessary */
++                      if (skb == NULL || skb_prev == NULL)
++                              ip6_append_data_mtu(&mtu, &maxfraglen,
++                                                  fragheaderlen, skb, rt,
++                                                  np->pmtudisc ==
++                                                  IPV6_PMTUDISC_PROBE);
++
++                      skb_prev = skb;
++
++                      /*
++                       * If remaining data exceeds the mtu,
++                       * we know we need more fragment(s).
++                       */
++                      datalen = length + fraggap;
++
++                      if (datalen > (cork->length <= mtu && !(cork->flags & IPCORK_ALLFRAG) ? mtu : maxfraglen) - fragheaderlen)
++                              datalen = maxfraglen - fragheaderlen - rt->dst.trailer_len;
++                      if ((flags & MSG_MORE) &&
++                          !(rt->dst.dev->features&NETIF_F_SG))
++                              alloclen = mtu;
++                      else
++                              alloclen = datalen + fragheaderlen;
++
++                      alloclen += dst_exthdrlen;
++
++                      if (datalen != length + fraggap) {
++                              /*
++                               * this is not the last fragment, the trailer
++                               * space is regarded as data space.
++                               */
++                              datalen += rt->dst.trailer_len;
++                      }
++
++                      alloclen += rt->dst.trailer_len;
++                      fraglen = datalen + fragheaderlen;
++
++                      /*
++                       * We just reserve space for fragment header.
++                       * Note: this may be overallocation if the message
++                       * (without MSG_MORE) fits into the MTU.
++                       */
++                      alloclen += sizeof(struct frag_hdr);
++
++                      if (transhdrlen) {
++                              skb = sock_alloc_send_skb(sk,
++                                              alloclen + hh_len,
++                                              (flags & MSG_DONTWAIT), &err);
++                      } else {
++                              skb = NULL;
++                              if (atomic_read(&sk->sk_wmem_alloc) <=
++                                  2 * sk->sk_sndbuf)
++                                      skb = sock_wmalloc(sk,
++                                                         alloclen + hh_len, 1,
++                                                         sk->sk_allocation);
++                              if (unlikely(skb == NULL))
++                                      err = -ENOBUFS;
++                              else {
++                                      /* Only the initial fragment
++                                       * is time stamped.
++                                       */
++                                      tx_flags = 0;
++                              }
++                      }
++                      if (skb == NULL)
++                              goto error;
++                      /*
++                       *      Fill in the control structures
++                       */
++                      skb->ip_summed = CHECKSUM_NONE;
++                      skb->csum = 0;
++                      /* reserve for fragmentation and ipsec header */
++                      skb_reserve(skb, hh_len + sizeof(struct frag_hdr) +
++                                  dst_exthdrlen);
++
++                      if (sk->sk_type == SOCK_DGRAM)
++                              skb_shinfo(skb)->tx_flags = tx_flags;
++
++                      /*
++                       *      Find where to start putting bytes
++                       */
++                      data = skb_put(skb, fraglen);
++                      skb_set_network_header(skb, exthdrlen);
++                      data += fragheaderlen;
++                      skb->transport_header = (skb->network_header +
++                                               fragheaderlen);
++                      if (fraggap) {
++                              skb->csum = skb_copy_and_csum_bits(
++                                      skb_prev, maxfraglen,
++                                      data + transhdrlen, fraggap, 0);
++                              skb_prev->csum = csum_sub(skb_prev->csum,
++                                                        skb->csum);
++                              data += fraggap;
++                              pskb_trim_unique(skb_prev, maxfraglen);
++                      }
++                      copy = datalen - transhdrlen - fraggap;
++
++                      if (copy < 0) {
++                              err = -EINVAL;
++                              kfree_skb(skb);
++                              goto error;
++                      } else if (copy > 0 && getfrag(from, data + transhdrlen, offset, copy, fraggap, skb) < 0) {
++                              err = -EFAULT;
++                              kfree_skb(skb);
++                              goto error;
++                      }
++
++                      offset += copy;
++                      length -= datalen - fraggap;
++                      transhdrlen = 0;
++                      exthdrlen = 0;
++                      dst_exthdrlen = 0;
++
++                      /*
++                       * Put the packet on the pending queue
++                       */
++                      __skb_queue_tail(&sk->sk_write_queue, skb);
++                      continue;
++              }
++
++              if (copy > length)
++                      copy = length;
++
++              if (!(rt->dst.dev->features&NETIF_F_SG)) {
++                      unsigned int off;
++
++                      off = skb->len;
++                      if (getfrag(from, skb_put(skb, copy),
++                                              offset, copy, off, skb) < 0) {
++                              __skb_trim(skb, off);
++                              err = -EFAULT;
++                              goto error;
++                      }
++              } else {
++                      int i = skb_shinfo(skb)->nr_frags;
++                      struct page_frag *pfrag = sk_page_frag(sk);
++
++                      err = -ENOMEM;
++                      if (!sk_page_frag_refill(sk, pfrag))
++                              goto error;
++
++                      if (!skb_can_coalesce(skb, i, pfrag->page,
++                                            pfrag->offset)) {
++                              err = -EMSGSIZE;
++                              if (i == MAX_SKB_FRAGS)
++                                      goto error;
++
++                              __skb_fill_page_desc(skb, i, pfrag->page,
++                                                   pfrag->offset, 0);
++                              skb_shinfo(skb)->nr_frags = ++i;
++                              get_page(pfrag->page);
++                      }
++                      copy = min_t(int, copy, pfrag->size - pfrag->offset);
++                      if (getfrag(from,
++                                  page_address(pfrag->page) + pfrag->offset,
++                                  offset, copy, skb->len, skb) < 0)
++                              goto error_efault;
++
++                      pfrag->offset += copy;
++                      skb_frag_size_add(&skb_shinfo(skb)->frags[i - 1], copy);
++                      skb->len += copy;
++                      skb->data_len += copy;
++                      skb->truesize += copy;
++                      atomic_add(copy, &sk->sk_wmem_alloc);
++              }
++              offset += copy;
++              length -= copy;
++      }
++
++      return 0;
++
++error_efault:
++      err = -EFAULT;
++error:
++      cork->length -= length;
++      IP6_INC_STATS(sock_net(sk), rt->rt6i_idev, IPSTATS_MIB_OUTDISCARDS);
++      return err;
++}
++EXPORT_SYMBOL_GPL(ip6_append_data);
++
++static void ip6_cork_release(struct inet_sock *inet, struct ipv6_pinfo *np)
++{
++      if (np->cork.opt) {
++              kfree(np->cork.opt->dst0opt);
++              kfree(np->cork.opt->dst1opt);
++              kfree(np->cork.opt->hopopt);
++              kfree(np->cork.opt->srcrt);
++              kfree(np->cork.opt);
++              np->cork.opt = NULL;
++      }
++
++      if (inet->cork.base.dst) {
++              dst_release(inet->cork.base.dst);
++              inet->cork.base.dst = NULL;
++              inet->cork.base.flags &= ~IPCORK_ALLFRAG;
++      }
++      memset(&inet->cork.fl, 0, sizeof(inet->cork.fl));
++}
++
++int ip6_push_pending_frames(struct sock *sk)
++{
++      struct sk_buff *skb, *tmp_skb;
++      struct sk_buff **tail_skb;
++      struct in6_addr final_dst_buf, *final_dst = &final_dst_buf;
++      struct inet_sock *inet = inet_sk(sk);
++      struct ipv6_pinfo *np = inet6_sk(sk);
++      struct net *net = sock_net(sk);
++      struct ipv6hdr *hdr;
++      struct ipv6_txoptions *opt = np->cork.opt;
++      struct rt6_info *rt = (struct rt6_info *)inet->cork.base.dst;
++      struct flowi6 *fl6 = &inet->cork.fl.u.ip6;
++      unsigned char proto = fl6->flowi6_proto;
++      int err = 0;
++
++      if ((skb = __skb_dequeue(&sk->sk_write_queue)) == NULL)
++              goto out;
++      tail_skb = &(skb_shinfo(skb)->frag_list);
++
++      /* move skb->data to ip header from ext header */
++      if (skb->data < skb_network_header(skb))
++              __skb_pull(skb, skb_network_offset(skb));
++      while ((tmp_skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) {
++              __skb_pull(tmp_skb, skb_network_header_len(skb));
++              *tail_skb = tmp_skb;
++              tail_skb = &(tmp_skb->next);
++              skb->len += tmp_skb->len;
++              skb->data_len += tmp_skb->len;
++              skb->truesize += tmp_skb->truesize;
++              tmp_skb->destructor = NULL;
++              tmp_skb->sk = NULL;
++      }
++
++      /* Allow local fragmentation. */
++      if (np->pmtudisc < IPV6_PMTUDISC_DO)
++              skb->local_df = 1;
++
++      *final_dst = fl6->daddr;
++      __skb_pull(skb, skb_network_header_len(skb));
++      if (opt && opt->opt_flen)
++              ipv6_push_frag_opts(skb, opt, &proto);
++      if (opt && opt->opt_nflen)
++              ipv6_push_nfrag_opts(skb, opt, &proto, &final_dst);
++
++      skb_push(skb, sizeof(struct ipv6hdr));
++      skb_reset_network_header(skb);
++      hdr = ipv6_hdr(skb);
++
++      ip6_flow_hdr(hdr, np->cork.tclass, fl6->flowlabel);
++      hdr->hop_limit = np->cork.hop_limit;
++      hdr->nexthdr = proto;
++      hdr->saddr = fl6->saddr;
++      hdr->daddr = *final_dst;
++
++      skb->priority = sk->sk_priority;
++      skb->mark = sk->sk_mark;
++
++      skb_dst_set(skb, dst_clone(&rt->dst));
++      IP6_UPD_PO_STATS(net, rt->rt6i_idev, IPSTATS_MIB_OUT, skb->len);
++      if (proto == IPPROTO_ICMPV6) {
++              struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
++
++              ICMP6MSGOUT_INC_STATS_BH(net, idev, icmp6_hdr(skb)->icmp6_type);
++              ICMP6_INC_STATS_BH(net, idev, ICMP6_MIB_OUTMSGS);
++      }
++
++      err = ip6_local_out(skb);
++      if (err) {
++              if (err > 0)
++                      err = net_xmit_errno(err);
++              if (err)
++                      goto error;
++      }
++
++out:
++      ip6_cork_release(inet, np);
++      return err;
++error:
++      IP6_INC_STATS(net, rt->rt6i_idev, IPSTATS_MIB_OUTDISCARDS);
++      goto out;
++}
++EXPORT_SYMBOL_GPL(ip6_push_pending_frames);
++
++void ip6_flush_pending_frames(struct sock *sk)
++{
++      struct sk_buff *skb;
++
++      while ((skb = __skb_dequeue_tail(&sk->sk_write_queue)) != NULL) {
++              if (skb_dst(skb))
++                      IP6_INC_STATS(sock_net(sk), ip6_dst_idev(skb_dst(skb)),
++                                    IPSTATS_MIB_OUTDISCARDS);
++              kfree_skb(skb);
++      }
++
++      ip6_cork_release(inet_sk(sk), inet6_sk(sk));
++}
++EXPORT_SYMBOL_GPL(ip6_flush_pending_frames);
+diff -Naur linux-3.10.30.org/net/netfilter/core.c linux-3.10.30/net/netfilter/core.c
+--- linux-3.10.30.org/net/netfilter/core.c     2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/net/netfilter/core.c 2014-02-14 20:29:05.392738001 +0100
+@@ -191,9 +191,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 -Naur linux-3.10.30.org/net/netfilter/Kconfig linux-3.10.30/net/netfilter/Kconfig
+--- linux-3.10.30.org/net/netfilter/Kconfig    2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/net/netfilter/Kconfig        2014-02-14 20:29:05.396071847 +0100
+@@ -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 -Naur linux-3.10.30.org/net/netfilter/Makefile linux-3.10.30/net/netfilter/Makefile
+--- linux-3.10.30.org/net/netfilter/Makefile   2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/net/netfilter/Makefile       2014-02-14 20:29:05.396071847 +0100
+@@ -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 -Naur linux-3.10.30.org/net/netfilter/nf_internals.h linux-3.10.30/net/netfilter/nf_internals.h
+--- linux-3.10.30.org/net/netfilter/nf_internals.h     2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/net/netfilter/nf_internals.h 2014-02-14 20:29:05.396071847 +0100
+@@ -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 -Naur linux-3.10.30.org/net/netfilter/nf_queue.c linux-3.10.30/net/netfilter/nf_queue.c
+--- linux-3.10.30.org/net/netfilter/nf_queue.c 2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/net/netfilter/nf_queue.c     2014-02-14 20:29:05.396071847 +0100
+@@ -27,6 +27,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)
+@@ -105,7 +122,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;
+@@ -115,7 +133,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;
+@@ -205,9 +233,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 -Naur linux-3.10.30.org/net/netfilter/xt_IMQ.c linux-3.10.30/net/netfilter/xt_IMQ.c
+--- linux-3.10.30.org/net/netfilter/xt_IMQ.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.30/net/netfilter/xt_IMQ.c       2014-02-14 20:29:05.396071847 +0100
+@@ -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-3.10.30_cs5535audio_fix_logspam_on_geos.patch b/src/patches/linux-3.10.30_cs5535audio_fix_logspam_on_geos.patch
new file mode 100644 (file)
index 0000000..490a34d
--- /dev/null
@@ -0,0 +1,27 @@
+diff -Naur linux-3.10.30.org/sound/pci/cs5535audio/cs5535audio.c linux-3.10.30/sound/pci/cs5535audio/cs5535audio.c
+--- linux-3.10.30.org/sound/pci/cs5535audio/cs5535audio.c      2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/sound/pci/cs5535audio/cs5535audio.c  2014-02-15 12:45:49.545688703 +0100
+@@ -83,8 +83,8 @@
+                       break;
+               udelay(1);
+       } while (--timeout);
+-      if (!timeout)
+-              snd_printk(KERN_ERR "Failure writing to cs5535 codec\n");
++//    if (!timeout)
++//            snd_printk(KERN_ERR "Failure writing to cs5535 codec\n");
+ }
+ static unsigned short snd_cs5535audio_codec_read(struct cs5535audio *cs5535au,
+@@ -108,9 +108,9 @@
+                       break;
+               udelay(1);
+       } while (--timeout);
+-      if (!timeout)
+-              snd_printk(KERN_ERR "Failure reading codec reg 0x%x,"
+-                                      "Last value=0x%x\n", reg, val);
++//    if (!timeout)
++//            snd_printk(KERN_ERR "Failure reading codec reg 0x%x,"
++//                                    "Last value=0x%x\n", reg, val);
+       return (unsigned short) val;
+ }
diff --git a/src/patches/linux-3.10.34-iwlwifi-noibss_only_on_radar_chan.patch b/src/patches/linux-3.10.34-iwlwifi-noibss_only_on_radar_chan.patch
new file mode 100644 (file)
index 0000000..cc76fe6
--- /dev/null
@@ -0,0 +1,23 @@
+diff -Naur linux-3.10.34.org/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c linux-3.10.34/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c
+--- linux-3.10.34.org/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c  2014-03-24 05:42:03.000000000 +0100
++++ linux-3.10.34/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c      2014-03-25 09:08:28.548634788 +0100
+@@ -613,14 +613,16 @@
+                       /* set no-HT40, will enable as appropriate later */
+                       channel->flags = IEEE80211_CHAN_NO_HT40;
++
++                      if (eeprom_ch->flags & EEPROM_CHANNEL_RADAR) {
++                              channel->flags |= IEEE80211_CHAN_RADAR;
++
+                       if (!(eeprom_ch->flags & EEPROM_CHANNEL_IBSS))
+                               channel->flags |= IEEE80211_CHAN_NO_IBSS;
+                       if (!(eeprom_ch->flags & EEPROM_CHANNEL_ACTIVE))
+                               channel->flags |= IEEE80211_CHAN_PASSIVE_SCAN;
+-
+-                      if (eeprom_ch->flags & EEPROM_CHANNEL_RADAR)
+-                              channel->flags |= IEEE80211_CHAN_RADAR;
++}
+                       /* Initialize regulatory-based run-time data */
+                       channel->max_power =
diff --git a/src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch b/src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch
new file mode 100644 (file)
index 0000000..83142c8
--- /dev/null
@@ -0,0 +1,11 @@
+diff -Naur linux-3.10.37.org/drivers/net/wireless/rt2x00/rt2800usb.c linux-3.10.37/drivers/net/wireless/rt2x00/rt2800usb.c
+--- linux-3.10.37.org/drivers/net/wireless/rt2x00/rt2800usb.c  2014-04-14 15:42:31.000000000 +0200
++++ linux-3.10.37/drivers/net/wireless/rt2x00/rt2800usb.c      2014-04-25 10:25:12.796630526 +0200
+@@ -1175,6 +1175,7 @@
+       /* Belkin */
+       { USB_DEVICE(0x050d, 0x945b) },
+       /* D-Link */
++      { USB_DEVICE(0x2001, 0x3317) },
+       { USB_DEVICE(0x2001, 0x3c17) },
+       /* Panasonic */
+       { USB_DEVICE(0x083a, 0xb511) },
diff --git a/src/patches/linux-3.10.39-add_libertas_uap.patch b/src/patches/linux-3.10.39-add_libertas_uap.patch
new file mode 100644 (file)
index 0000000..be9a493
--- /dev/null
@@ -0,0 +1,5081 @@
+diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
+index f8f0156..42a0702 100644
+--- a/drivers/net/wireless/Kconfig
++++ b/drivers/net/wireless/Kconfig
+@@ -51,6 +51,14 @@ config LIBERTAS_THINFIRM_USB
+       ---help---
+         A driver for Marvell Libertas 8388 USB devices using thinfirm.
++config LIBERTAS_UAP
++      tristate "Marvell 8xxx Libertas UAP"
++      depends on MAC80211
++      depends on MMC
++      select FW_LOADER
++      ---help---
++        Driver for Marvell Libertas 8xxx micro AP.
++
+ config AIRO
+       tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"
+       depends on ISA_DMA_API && (PCI || BROKEN)
+diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
+index 67156ef..475a1b3 100644
+--- a/drivers/net/wireless/Makefile
++++ b/drivers/net/wireless/Makefile
+@@ -37,6 +37,8 @@ obj-$(CONFIG_LIBERTAS)               += libertas/
+ obj-$(CONFIG_LIBERTAS_THINFIRM)       += libertas_tf/
++obj-$(CONFIG_LIBERTAS_UAP)    += libertas_uap/
++
+ obj-$(CONFIG_ADM8211) += adm8211.o
+ obj-$(CONFIG_MWL8K)   += mwl8k.o
+diff --git a/drivers/net/wireless/libertas_uap/Makefile b/drivers/net/wireless/libertas_uap/Makefile
+new file mode 100644
+index 0000000..821f2a4
+--- /dev/null
++++ b/drivers/net/wireless/libertas_uap/Makefile
+@@ -0,0 +1,6 @@
++obj-$(CONFIG_LIBERTAS_UAP) += uap8xxx.o
++
++uap8xxx-y += uap_main.o uap_sdio_mmc.o
++uap8xxx-$(CONFIG_PROC_FS) += uap_proc.o uap_debug.o
++
++EXTRA_CFLAGS += -DFPNUM='"52"' -DPXA3XX_DMA_ALIGN -DDEBUG_LEVEL1
+diff --git a/drivers/net/wireless/libertas_uap/uap_debug.c b/drivers/net/wireless/libertas_uap/uap_debug.c
+new file mode 100644
+index 0000000..a2f6dc9
+--- /dev/null
++++ b/drivers/net/wireless/libertas_uap/uap_debug.c
+@@ -0,0 +1,260 @@
++/** @file uap_debug.c
++  * @brief This file contains functions for debug proc file.
++  *
++  * Copyright (C) 2008-2009, Marvell International Ltd.
++  *
++  * This software file (the "File") is distributed by Marvell International
++  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
++  * (the "License").  You may use, redistribute and/or modify this File in
++  * accordance with the terms and conditions of the License, a copy of which
++  * is available along with the File in the gpl.txt file or by writing to
++  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++  * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
++  *
++  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
++  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
++  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
++  * this warranty disclaimer.
++  *
++  */
++#ifdef CONFIG_PROC_FS
++#include  "uap_headers.h"
++
++/********************************************************
++              Local Variables
++********************************************************/
++
++#define item_size(n) (sizeof ((uap_adapter *)0)->n)
++#define item_addr(n) ((u32) &((uap_adapter *)0)->n)
++
++#define item_dbg_size(n) (sizeof (((uap_adapter *)0)->dbg.n))
++#define item_dbg_addr(n) ((u32) &(((uap_adapter *)0)->dbg.n))
++
++#define item_dev_size(n) (sizeof ((uap_dev_t *)0)->n)
++#define item_dev_addr(n) ((u32) &((uap_dev_t *)0)->n)
++
++/** MicroAp device offset */
++#define OFFSET_UAP_DEV                0x01
++/** Bluetooth adapter offset */
++#define OFFSET_UAP_ADAPTER    0x02
++
++struct debug_data
++{
++    /** Name */
++    char name[32];
++    /** Size */
++    u32 size;
++    /** Address */
++    u32 addr;
++    /** Offset */
++    u32 offset;
++    /** Flag */
++    u32 flag;
++};
++
++/* To debug any member of uap_adapter, simply add one line here.
++ */
++static struct debug_data items[] = {
++    {"cmd_sent", item_dev_size(cmd_sent), 0, item_dev_addr(cmd_sent),
++     OFFSET_UAP_DEV},
++    {"data_sent", item_dev_size(data_sent), 0, item_dev_addr(data_sent),
++     OFFSET_UAP_DEV},
++    {"IntCounter", item_size(IntCounter), 0, item_addr(IntCounter),
++     OFFSET_UAP_ADAPTER},
++    {"cmd_pending", item_size(cmd_pending), 0, item_addr(cmd_pending),
++     OFFSET_UAP_ADAPTER},
++    {"num_cmd_h2c_fail", item_dbg_size(num_cmd_host_to_card_failure), 0,
++     item_dbg_addr(num_cmd_host_to_card_failure), OFFSET_UAP_ADAPTER},
++    {"num_tx_h2c_fail", item_dbg_size(num_tx_host_to_card_failure), 0,
++     item_dbg_addr(num_tx_host_to_card_failure), OFFSET_UAP_ADAPTER},
++    {"psmode", item_size(psmode), 0, item_addr(psmode), OFFSET_UAP_ADAPTER},
++    {"ps_state", item_size(ps_state), 0, item_addr(ps_state),
++     OFFSET_UAP_ADAPTER},
++#ifdef DEBUG_LEVEL1
++    {"drvdbg", sizeof(drvdbg), (u32) & drvdbg, 0, 0}
++#endif
++};
++
++static int num_of_items = sizeof(items) / sizeof(items[0]);
++
++/********************************************************
++              Global Variables
++********************************************************/
++
++/********************************************************
++              Local Functions
++********************************************************/
++/**
++ *  @brief proc read function
++ *
++ *  @param page          pointer to buffer
++ *  @param s       read data starting position
++ *  @param off     offset
++ *  @param cnt     counter
++ *  @param eof     end of file flag
++ *  @param data    data to output
++ *  @return      number of output data
++ */
++static int uap_debug_proc_show(struct seq_file *s, void *data) {
++    int val = 0;
++    int i;
++
++    struct debug_data *d = (struct debug_data *)s->private;
++
++    if (MODULE_GET == 0)
++        return UAP_STATUS_FAILURE;
++
++    for (i = 0; i < num_of_items; i++) {
++        if (d[i].size == 1)
++            val = *((u8 *) d[i].addr);
++        else if (d[i].size == 2)
++            val = *((u16 *) d[i].addr);
++        else if (d[i].size == 4)
++            val = *((u32 *) d[i].addr);
++
++        seq_printf(s, "%s=%d\n", d[i].name, val);
++    }
++    MODULE_PUT;
++    return 0;
++}
++
++static int uap_debug_proc_open(struct inode* inode, struct file* file) {
++      return single_open(file, uap_debug_proc_show, PDE_DATA(inode));
++}
++
++/**
++ *  @brief proc write function
++ *
++ *  @param f     file pointer
++ *  @param buf     pointer to data buffer
++ *  @param cnt     data number to write
++ *  @param data    data to write
++ *  @return      number of data
++ */
++static ssize_t uap_debug_proc_write(struct file *f, const char __user *buf, size_t cnt, loff_t *data) {
++    int r, i;
++    char *pdata;
++    char *p;
++    char *p0;
++    char *p1;
++    char *p2;
++    struct debug_data *d = (struct debug_data *)PDE_DATA(file_inode(f));
++
++    if (MODULE_GET == 0)
++        return UAP_STATUS_FAILURE;
++
++    pdata = (char *) kmalloc(cnt, GFP_KERNEL);
++    if (pdata == NULL) {
++        MODULE_PUT;
++        return 0;
++    }
++
++    if (copy_from_user(pdata, buf, cnt)) {
++        PRINTM(INFO, "Copy from user failed\n");
++        kfree(pdata);
++        MODULE_PUT;
++        return 0;
++    }
++
++    p0 = pdata;
++    for (i = 0; i < num_of_items; i++) {
++        do {
++            p = strstr(p0, d[i].name);
++            if (p == NULL)
++                break;
++            p1 = strchr(p, '\n');
++            if (p1 == NULL)
++                break;
++            p0 = p1++;
++            p2 = strchr(p, '=');
++            if (!p2)
++                break;
++            p2++;
++            r = string_to_number(p2);
++            if (d[i].size == 1)
++                *((u8 *) d[i].addr) = (u8) r;
++            else if (d[i].size == 2)
++                *((u16 *) d[i].addr) = (u16) r;
++            else if (d[i].size == 4)
++                *((u32 *) d[i].addr) = (u32) r;
++            break;
++        } while (TRUE);
++    }
++    kfree(pdata);
++#ifdef DEBUG_LEVEL1
++    printk(KERN_ALERT "drvdbg = 0x%x\n", drvdbg);
++    printk(KERN_ALERT "INFO  (%08lx) %s\n", DBG_INFO,
++           (drvdbg & DBG_INFO) ? "X" : "");
++    printk(KERN_ALERT "WARN  (%08lx) %s\n", DBG_WARN,
++           (drvdbg & DBG_WARN) ? "X" : "");
++    printk(KERN_ALERT "ENTRY (%08lx) %s\n", DBG_ENTRY,
++           (drvdbg & DBG_ENTRY) ? "X" : "");
++    printk(KERN_ALERT "CMD_D (%08lx) %s\n", DBG_CMD_D,
++           (drvdbg & DBG_CMD_D) ? "X" : "");
++    printk(KERN_ALERT "DAT_D (%08lx) %s\n", DBG_DAT_D,
++           (drvdbg & DBG_DAT_D) ? "X" : "");
++    printk(KERN_ALERT "CMND  (%08lx) %s\n", DBG_CMND,
++           (drvdbg & DBG_CMND) ? "X" : "");
++    printk(KERN_ALERT "DATA  (%08lx) %s\n", DBG_DATA,
++           (drvdbg & DBG_DATA) ? "X" : "");
++    printk(KERN_ALERT "ERROR (%08lx) %s\n", DBG_ERROR,
++           (drvdbg & DBG_ERROR) ? "X" : "");
++    printk(KERN_ALERT "FATAL (%08lx) %s\n", DBG_FATAL,
++           (drvdbg & DBG_FATAL) ? "X" : "");
++    printk(KERN_ALERT "MSG   (%08lx) %s\n", DBG_MSG,
++           (drvdbg & DBG_MSG) ? "X" : "");
++#endif
++    MODULE_PUT;
++    return cnt;
++}
++
++static const struct file_operations uap_debug_proc_fops = {
++      .owner   = THIS_MODULE,
++      .open    = uap_debug_proc_open,
++      .read    = seq_read,
++      .llseek  = seq_lseek,
++      .release = single_release,
++      .write   = uap_debug_proc_write,
++};
++
++/********************************************************
++              Global Functions
++********************************************************/
++/**
++ *  @brief create debug proc file
++ *
++ *  @param priv          pointer uap_private
++ *  @param dev     pointer net_device
++ *  @return      N/A
++ */
++void
++uap_debug_entry(uap_private * priv, struct net_device *dev)
++{
++    int i;
++
++    if (priv->proc_entry == NULL)
++        return;
++
++    for (i = 0; i < num_of_items; i++) {
++        if (items[i].flag & OFFSET_UAP_ADAPTER)
++            items[i].addr = items[i].offset + (u32) priv->adapter;
++        if (items[i].flag & OFFSET_UAP_DEV)
++            items[i].addr = items[i].offset + (u32) & priv->uap_dev;
++    }
++    proc_create_data("debug", 0644, priv->proc_entry, &uap_debug_proc_fops,
++      &items[0]);
++}
++
++/**
++ *  @brief remove proc file
++ *
++ *  @param priv          pointer uap_private
++ *  @return      N/A
++ */
++void
++uap_debug_remove(uap_private * priv)
++{
++    remove_proc_entry("debug", priv->proc_entry);
++}
++
++#endif
+diff --git a/drivers/net/wireless/libertas_uap/uap_drv.h b/drivers/net/wireless/libertas_uap/uap_drv.h
+new file mode 100644
+index 0000000..5aa009f
+--- /dev/null
++++ b/drivers/net/wireless/libertas_uap/uap_drv.h
+@@ -0,0 +1,667 @@
++/** @file uap_drv.h
++  * @brief This file contains Linux OS related definitions and
++  * declarations, uAP driver
++  *
++  * Copyright (C) 2008-2009, Marvell International Ltd.
++  *
++  * This software file (the "File") is distributed by Marvell International
++  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
++  * (the "License").  You may use, redistribute and/or modify this File in
++  * accordance with the terms and conditions of the License, a copy of which
++  * is available along with the File in the gpl.txt file or by writing to
++  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++  * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
++  *
++  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
++  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
++  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
++  * this warranty disclaimer.
++  *
++  */
++
++#ifndef _UAP_DRV_H
++#define _UAP_DRV_H
++
++/** Driver release version */
++#define DRIVER_VERSION                "26146"
++
++/** True */
++#ifndef       TRUE
++#define TRUE                  1
++#endif
++/** False */
++#ifndef       FALSE
++#define       FALSE                   0
++#endif
++
++/** Bit definitions */
++#ifndef BIT
++#define BIT(x)        (1UL << (x))
++#endif
++
++/** Dma addresses are 32-bits wide.  */
++#ifndef __ATTRIB_ALIGN__
++#define __ATTRIB_ALIGN__ __attribute__((aligned(4)))
++#endif
++
++/**  attribute pack */
++#ifndef __ATTRIB_PACK__
++#define __ATTRIB_PACK__ __attribute__ ((packed))
++#endif
++
++/** Debug Macro definition*/
++#ifdef        DEBUG_LEVEL1
++
++extern u32 drvdbg;
++
++/** Debug message control bit definition for drvdbg */
++/** Debug message */
++#define       DBG_MSG         BIT(0)
++/** Debug fatal message */
++#define DBG_FATAL     BIT(1)
++/** Debug error message */
++#define DBG_ERROR     BIT(2)
++/** Debug data message */
++#define DBG_DATA      BIT(3)
++/** Debug command message */
++#define DBG_CMND      BIT(4)
++
++/** Debug data */
++#define DBG_DAT_D     BIT(16)
++/** Debug command */
++#define DBG_CMD_D     BIT(17)
++
++/** Debug entry */
++#define DBG_ENTRY     BIT(28)
++/** Debug warning */
++#define DBG_WARN      BIT(29)
++/** Debug info */
++#define DBG_INFO      BIT(30)
++
++/** Print info */
++#define       PRINTM_INFO(msg...)  {if (drvdbg & DBG_INFO) printk(KERN_DEBUG msg);}
++/** Print warn message */
++#define       PRINTM_WARN(msg...)  {if (drvdbg & DBG_WARN) printk(KERN_DEBUG msg);}
++/** Print entry */
++#define       PRINTM_ENTRY(msg...) {if (drvdbg & DBG_ENTRY) printk(KERN_DEBUG msg);}
++/** Print cmd_d */
++#define       PRINTM_CMD_D(msg...) {if (drvdbg & DBG_CMD_D) printk(KERN_DEBUG msg);}
++/** Print data_d */
++#define       PRINTM_DAT_D(msg...) {if (drvdbg & DBG_DAT_D) printk(KERN_DEBUG msg);}
++/** Print command */
++#define       PRINTM_CMND(msg...)  {if (drvdbg & DBG_CMND) printk(KERN_DEBUG msg);}
++/** Print data */
++#define       PRINTM_DATA(msg...)  {if (drvdbg & DBG_DATA) printk(KERN_DEBUG msg);}
++/** Print error message */
++#define       PRINTM_ERROR(msg...) {if (drvdbg & DBG_ERROR) printk(KERN_DEBUG msg);}
++/** Print fatal message */
++#define       PRINTM_FATAL(msg...) {if (drvdbg & DBG_FATAL) printk(KERN_DEBUG msg);}
++/** Print message */
++#define       PRINTM_MSG(msg...)   {if (drvdbg & DBG_MSG) printk(KERN_ALERT msg);}
++/** Print level */
++#define       PRINTM(level,msg...) PRINTM_##level(msg)
++
++#else
++
++#define       PRINTM(level,msg...) do {} while (0)
++
++#endif /* DEBUG_LEVEL1 */
++
++/** Wait until a condition becomes true */
++#define ASSERT(cond)                                          \
++do {                                                          \
++      if (!(cond))                                            \
++              PRINTM(INFO, "ASSERT: %s, %s:%i\n",             \
++                     __FUNCTION__, __FILE__, __LINE__);       \
++} while(0)
++
++/** Log enrty point for debugging */
++#define       ENTER()                 PRINTM(ENTRY, "Enter: %s, %s:%i\n", __FUNCTION__, \
++                                                      __FILE__, __LINE__)
++/** Log exit point for debugging */
++#define       LEAVE()                 PRINTM(ENTRY, "Leave: %s, %s:%i\n", __FUNCTION__, \
++                                                      __FILE__, __LINE__)
++
++#ifdef        DEBUG_LEVEL1
++/** Dump buffer length */
++#define DBG_DUMP_BUF_LEN    64
++/** Maximum dump per line */
++#define MAX_DUMP_PER_LINE   16
++/** Data dump length */
++#define DATA_DUMP_LEN       32
++
++static inline void
++hexdump(char *prompt, u8 * buf, int len)
++{
++    int i;
++    char dbgdumpbuf[DBG_DUMP_BUF_LEN];
++    char *ptr = dbgdumpbuf;
++
++    printk(KERN_DEBUG "%s:\n", prompt);
++    for (i = 1; i <= len; i++) {
++        ptr += sprintf(ptr, "%02x ", *buf);
++        buf++;
++        if (i % MAX_DUMP_PER_LINE == 0) {
++            *ptr = 0;
++            printk(KERN_DEBUG "%s\n", dbgdumpbuf);
++            ptr = dbgdumpbuf;
++        }
++    }
++    if (len % MAX_DUMP_PER_LINE) {
++        *ptr = 0;
++        printk(KERN_DEBUG "%s\n", dbgdumpbuf);
++    }
++}
++
++/** Debug command */
++#define DBG_HEXDUMP_CMD_D(x,y,z)    {if (drvdbg & DBG_CMD_D) hexdump(x,y,z);}
++/** Debug data */
++#define DBG_HEXDUMP_DAT_D(x,y,z)    {if (drvdbg & DBG_DAT_D) hexdump(x,y,z);}
++/** Debug hexdump */
++#define       DBG_HEXDUMP(level,x,y,z)    DBG_HEXDUMP_##level(x,y,z)
++/** hexdump */
++#define HEXDUMP(x,y,z)              {if (drvdbg & DBG_INFO) hexdump(x,y,z);}
++#else
++/** Do nothing since debugging is not turned on */
++#define DBG_HEXDUMP(level,x,y,z)    do {} while (0)
++/** Do nothing since debugging is not turned on */
++#define HEXDUMP(x,y,z)              do {} while (0)
++#endif
++
++/**
++ * Typedefs
++ */
++/** Unsigned char */
++typedef u8 BOOLEAN;
++
++/*
++ * OS macro definitions
++ */
++/** OS macro to get time */
++#define os_time_get() jiffies
++
++/** OS macro to update transfer start time */
++#define UpdateTransStart(dev) { \
++      dev->trans_start = jiffies; \
++}
++
++/** Try to get a reference to the module */
++#define MODULE_GET    try_module_get(THIS_MODULE)
++/** Decrease module reference count */
++#define MODULE_PUT    module_put(THIS_MODULE)
++
++/** OS macro to initialize semaphore */
++#define OS_INIT_SEMAPHORE(x)  sema_init(x,1)
++/** OS macro to acquire blocking semaphore */
++#define OS_ACQ_SEMAPHORE_BLOCK(x)     down_interruptible(x)
++/** OS macro to acquire non-blocking semaphore */
++#define OS_ACQ_SEMAPHORE_NOBLOCK(x)   down_trylock(x)
++/** OS macro to release semaphore */
++#define OS_REL_SEMAPHORE(x)           up(x)
++
++static inline void
++os_sched_timeout(u32 millisec)
++{
++    set_current_state(TASK_INTERRUPTIBLE);
++    schedule_timeout((millisec * HZ) / 1000);
++}
++
++/** Maximum size of ethernet packet */
++#define MRVDRV_MAXIMUM_ETH_PACKET_SIZE        1514
++
++/** Maximum size of multicast list */
++#define MRVDRV_MAX_MULTICAST_LIST_SIZE        32
++
++/** Find minimum */
++#ifndef MIN
++#define MIN(a,b)              ((a) < (b) ? (a) : (b))
++#endif
++
++/** Find maximum */
++#ifndef MAX
++#define MAX(a,b)              ((a) > (b) ? (a) : (b))
++#endif
++
++/** Find number of elements */
++#ifndef NELEMENTS
++#define NELEMENTS(x) (sizeof(x)/sizeof(x[0]))
++#endif
++
++/** Buffer Constants */
++
++/** Size of command buffer */
++#define MRVDRV_SIZE_OF_CMD_BUFFER       (2 * 1024)
++
++/** Length of device length */
++#define DEV_NAME_LEN                  32
++
++/** Length of ethernet address */
++#ifndef       ETH_ALEN
++#define ETH_ALEN                      6
++#endif
++
++/** Default watchdog timeout */
++#define MRVDRV_DEFAULT_WATCHDOG_TIMEOUT (2 * HZ)
++
++/** Success */
++#define UAP_STATUS_SUCCESS         (0)
++/** Failure */
++#define UAP_STATUS_FAILURE         (-1)
++/** Not accepted */
++#define UAP_STATUS_NOT_ACCEPTED    (-2)
++
++/** Max loop count (* 100ms) for waiting device ready at init time */
++#define MAX_WAIT_DEVICE_READY_COUNT   50
++
++/** Tx high watermark. Stop Tx queue after this is crossed */
++#define TX_HIGH_WATERMARK   4
++/** Tx low watermark. Restart Tx queue after this is crossed */
++#define TX_LOW_WATERMARK    2
++
++/** Netlink protocol number */
++#define NETLINK_MARVELL     (MAX_LINKS - 1)
++/** Netlink maximum payload size */
++#define NL_MAX_PAYLOAD      1024
++/** Netlink multicast group number */
++#define NL_MULTICAST_GROUP  1
++
++/** 20 seconds */
++#define MRVDRV_TIMER_20S              20000
++
++/** Host Command option for wait till Send */
++#define HostCmd_OPTION_WAITFORSEND            0x0001
++/** Host Command option for wait for RSP */
++#define HostCmd_OPTION_WAITFORRSP             0x0002
++/** Host Command option for wait for RSP or Timeout */
++#define HostCmd_OPTION_WAITFORRSP_TIMEOUT     0x0003
++/** Host Command option for wait for RSP of sleep confirm */
++#define HostCmd_OPTION_WAITFORRSP_SLEEPCONFIRM   0x0004
++
++/** Sleep until a condition gets true or a timeout elapses */
++#define os_wait_interruptible_timeout(waitq, cond, timeout) \
++      wait_event_interruptible_timeout(waitq, cond, ((timeout) * HZ / 1000))
++
++/** Private command ID to Host command */
++#define       UAPHOSTCMD                      (SIOCDEVPRIVATE + 1)
++
++/** Private command ID to Power Mode */
++#define       UAP_POWER_MODE                  (SIOCDEVPRIVATE + 3)
++/** sleep_param */
++typedef struct _ps_sleep_param
++{
++    /** control bitmap */
++    u32 ctrl_bitmap;
++    /** minimum sleep period (micro second) */
++    u32 min_sleep;
++    /** maximum sleep period (micro second) */
++    u32 max_sleep;
++} ps_sleep_param;
++
++/** inactivity sleep_param */
++typedef struct _inact_sleep_param
++{
++    /** inactivity timeout (micro second) */
++    u32 inactivity_to;
++    /** miniumu awake period (micro second) */
++    u32 min_awake;
++    /** maximum awake period (micro second) */
++    u32 max_awake;
++} inact_sleep_param;
++
++/** flag for ps mode */
++#define PS_FLAG_PS_MODE                 1
++/** flag for sleep param */
++#define PS_FLAG_SLEEP_PARAM             2
++/** flag for inactivity sleep param */
++#define PS_FLAG_INACT_SLEEP_PARAM       4
++
++/** Disable power mode */
++#define PS_MODE_DISABLE                      0
++/** Enable periodic dtim ps */
++#define PS_MODE_PERIODIC_DTIM                1
++/** Enable inactivity ps */
++#define PS_MODE_INACTIVITY                   2
++
++/** sleep parameter */
++#define SLEEP_PARAMETER                     1
++/** inactivity sleep parameter */
++#define INACTIVITY_SLEEP_PARAMETER          2
++/** ps_mgmt */
++typedef struct _ps_mgmt
++{
++    /** flags for valid field */
++    u16 flags;
++    /** power mode */
++    u16 ps_mode;
++    /** sleep param */
++    ps_sleep_param sleep_param;
++    /** inactivity sleep param */
++    inact_sleep_param inact_param;
++} ps_mgmt;
++
++/** Semaphore structure */
++typedef struct semaphore SEMAPHORE;
++
++/** Global Varibale Declaration */
++/** Private data structure of the device */
++typedef struct _uap_private uap_private;
++/** Adapter data structure of the device */
++typedef struct _uap_adapter uap_adapter;
++/** private structure */
++extern uap_private *uappriv;
++
++/** ENUM definition*/
++
++/** Hardware status codes */
++typedef enum _HARDWARE_STATUS
++{
++    HWReady,
++    HWInitializing,
++    HWReset,
++    HWClosing,
++    HWNotReady
++} HARDWARE_STATUS;
++
++/** info for debug purpose */
++typedef struct _uap_dbg
++{
++        /** Number of host to card command failures */
++    u32 num_cmd_host_to_card_failure;
++        /** Number of host to card Tx failures */
++    u32 num_tx_host_to_card_failure;
++} uap_dbg;
++
++/** Set thread state */
++#define OS_SET_THREAD_STATE(x)                set_current_state(x)
++
++typedef struct
++{
++    /** Task */
++    struct task_struct *task;
++    /** Queue */
++    wait_queue_head_t waitQ;
++    /** PID */
++    pid_t pid;
++    /** Private structure */
++    void *priv;
++} uap_thread;
++
++static inline void
++uap_activate_thread(uap_thread * thr)
++{
++        /** Record the thread pid */
++    thr->pid = current->pid;
++
++        /** Initialize the wait queue */
++    init_waitqueue_head(&thr->waitQ);
++}
++
++static inline void
++uap_deactivate_thread(uap_thread * thr)
++{
++    thr->pid = 0;
++    return;
++}
++
++static inline void
++uap_create_thread(int (*uapfunc) (void *), uap_thread * thr, char *name)
++{
++    thr->task = kthread_run(uapfunc, thr, "%s", name);
++}
++
++static inline int
++uap_terminate_thread(uap_thread * thr)
++{
++    /* Check if the thread is active or not */
++    if (!thr->pid)
++        return -1;
++    kthread_stop(thr->task);
++    return 0;
++}
++
++/** Data structure for the Marvell uAP device */
++typedef struct _uap_dev
++{
++        /** device name */
++    char name[DEV_NAME_LEN];
++        /** card pointer */
++    void *card;
++        /** IO port */
++    u32 ioport;
++        /** Rx unit */
++    u8 rx_unit;
++        /** Data sent:
++          TRUE - Data is sent to fw, no Tx Done received
++          FALSE - Tx done received for previous Tx */
++    BOOLEAN data_sent;
++        /** CMD sent:
++          TRUE - CMD is sent to fw, no CMD Done received
++          FALSE - CMD done received for previous CMD */
++    BOOLEAN cmd_sent;
++        /** netdev pointer */
++    struct net_device *netdev;
++} uap_dev_t, *puap_dev_t;
++
++/** Private structure for the MV device */
++struct _uap_private
++{
++        /** Device open */
++    int open;
++
++        /** Device adapter structure */
++    uap_adapter *adapter;
++        /** Device structure */
++    uap_dev_t uap_dev;
++
++        /** Net device statistics structure */
++    struct net_device_stats stats;
++
++        /** Number of Tx timeouts */
++    u32 num_tx_timeout;
++
++        /** Media connection status */
++    BOOLEAN MediaConnected;
++
++#ifdef CONFIG_PROC_FS
++    struct proc_dir_entry *proc_uap;
++    struct proc_dir_entry *proc_entry;
++#endif                          /* CONFIG_PROC_FS */
++
++        /** Firmware helper */
++    const struct firmware *fw_helper;
++        /** Firmware */
++    const struct firmware *firmware;
++        /** Hotplug device */
++    struct device *hotplug_device;
++        /** thread to service interrupts */
++    uap_thread MainThread;
++        /** Driver lock */
++    spinlock_t driver_lock;
++        /** Driver lock flags */
++    ulong driver_flags;
++
++};
++
++/** PS_CMD_ConfirmSleep */
++typedef struct _PS_CMD_ConfirmSleep
++{
++        /** SDIO Length */
++    u16 SDLen;
++    /** SDIO Type */
++    u16 SDType;
++        /** Command */
++    u16 Command;
++        /** Size */
++    u16 Size;
++        /** Sequence number */
++    u16 SeqNum;
++        /** Result */
++    u16 Result;
++} __ATTRIB_PACK__ PS_CMD_ConfirmSleep, *PPS_CMD_ConfirmSleep;
++
++/** Wlan Adapter data structure*/
++struct _uap_adapter
++{
++        /** Power save confirm sleep command */
++    PS_CMD_ConfirmSleep PSConfirmSleep;
++        /** Device status */
++    HARDWARE_STATUS HardwareStatus;
++        /** Interrupt counter */
++    u32 IntCounter;
++        /** Tx packet queue */
++    struct sk_buff_head tx_queue;
++        /** Cmd packet queue */
++    struct sk_buff_head cmd_queue;
++        /** Command sequence number */
++    u16 SeqNum;
++        /** Command buffer */
++    u8 *CmdBuf;
++        /** cmd pending flag */
++    u8 cmd_pending;
++        /** cmd wait option */
++    u8 cmd_wait_option;
++        /** Command buffer length */
++    u32 CmdSize;
++        /** Command wait queue */
++    wait_queue_head_t cmdwait_q __ATTRIB_ALIGN__;
++        /** Command wait queue state flag */
++    u8 CmdWaitQWoken;
++        /** PnP support */
++    BOOLEAN SurpriseRemoved;
++        /** Debug */
++    uap_dbg dbg;
++        /** Netlink kernel socket */
++    struct sock *nl_sk;
++        /** Semaphore for CMD */
++    SEMAPHORE CmdSem;
++         /** Power Save mode */
++    u8 psmode;
++        /** Power Save state */
++    u8 ps_state;
++        /** Number of wakeup tries */
++    u32 WakeupTries;
++};
++
++static inline int
++os_upload_rx_packet(uap_private * priv, struct sk_buff *skb)
++{
++    skb->dev = priv->uap_dev.netdev;
++    skb->protocol = eth_type_trans(skb, priv->uap_dev.netdev);
++    skb->ip_summed = CHECKSUM_UNNECESSARY;
++    if (in_interrupt())
++        netif_rx(skb);
++    else
++        netif_rx_ni(skb);
++    return 0;
++}
++
++/*
++ *  netif carrier_on/off and start(wake)/stop_queue handling
++ */
++static inline void
++os_carrier_on(uap_private * priv)
++{
++    if (!netif_carrier_ok(priv->uap_dev.netdev) &&
++        (priv->MediaConnected == TRUE)) {
++        netif_carrier_on(priv->uap_dev.netdev);
++    }
++}
++
++static inline void
++os_carrier_off(uap_private * priv)
++{
++    if (netif_carrier_ok(priv->uap_dev.netdev)) {
++        netif_carrier_off(priv->uap_dev.netdev);
++    }
++}
++
++static inline void
++os_start_queue(uap_private * priv)
++{
++    if (netif_queue_stopped(priv->uap_dev.netdev) &&
++        (priv->MediaConnected == TRUE)) {
++        netif_wake_queue(priv->uap_dev.netdev);
++    }
++}
++
++static inline void
++os_stop_queue(uap_private * priv)
++{
++    if (!netif_queue_stopped(priv->uap_dev.netdev)) {
++        netif_stop_queue(priv->uap_dev.netdev);
++    }
++}
++
++/** Interface specific header */
++#define INTF_HEADER_LEN         4
++
++/** headroom alignment for tx packet */
++#define HEADER_ALIGNMENT      8
++
++/** The number of times to try when polling for status bits */
++#define MAX_POLL_TRIES                        100
++
++/** Length of SNAP header */
++#define MRVDRV_SNAP_HEADER_LEN          8
++
++/** Extra length of Tx packet buffer */
++#define EXTRA_LEN     36
++
++/** Buffer size for ethernet Tx packets */
++#define MRVDRV_ETH_TX_PACKET_BUFFER_SIZE \
++      (ETH_FRAME_LEN + sizeof(TxPD) + EXTRA_LEN)
++
++/** Buffer size for ethernet Rx packets */
++#define MRVDRV_ETH_RX_PACKET_BUFFER_SIZE \
++      (ETH_FRAME_LEN + sizeof(RxPD) \
++       + MRVDRV_SNAP_HEADER_LEN + EXTRA_LEN)
++
++/** Packet type: data, command & event */
++typedef enum _mv_type
++{
++    MV_TYPE_DAT = 0,
++    MV_TYPE_CMD = 1,
++    MV_TYPE_EVENT = 3
++} mv_type;
++
++/** Disable interrupt */
++#define OS_INT_DISABLE        spin_lock_irqsave(&priv->driver_lock, priv->driver_flags)
++/** Enable interrupt */
++#define       OS_INT_RESTORE  spin_unlock_irqrestore(&priv->driver_lock, priv->driver_flags)
++
++int uap_process_rx_packet(uap_private * priv, struct sk_buff *skb);
++void uap_interrupt(uap_private * priv);
++uap_private *uap_add_card(void *card);
++int uap_remove_card(void *card);
++int uap_process_event(uap_private * priv, u8 * payload, uint len);
++int uap_soft_reset(uap_private * priv);
++int uap_process_sleep_confirm_resp(uap_private * priv, u8 * resp, int resp_len);
++
++#ifdef CONFIG_PROC_FS
++/** The proc fs interface */
++void uap_proc_entry(uap_private * priv, struct net_device *dev);
++void uap_proc_remove(uap_private * priv);
++int string_to_number(char *s);
++void uap_debug_entry(uap_private * priv, struct net_device *dev);
++void uap_debug_remove(uap_private * priv);
++#endif /* CONFIG_PROC_FS */
++
++int sbi_register(void);
++
++void sbi_unregister(void);
++int sbi_register_dev(uap_private * priv);
++int sbi_unregister_dev(uap_private * priv);
++int sbi_prog_fw_w_helper(uap_private *);
++
++int sbi_host_to_card(uap_private * priv, u8 * payload, u16 nb);
++int sbi_enable_host_int(uap_private * priv);
++int sbi_disable_host_int(uap_private * priv);
++
++int sbi_get_int_status(uap_private * priv, u8 * ireg);
++/** Check firmware status */
++int sbi_check_fw_status(uap_private *, int);
++int sbi_prog_helper(uap_private *);
++
++int sbi_wakeup_firmware(uap_private * priv);
++
++#endif /* _UAP_DRV_H */
+diff --git a/drivers/net/wireless/libertas_uap/uap_fw.h b/drivers/net/wireless/libertas_uap/uap_fw.h
+new file mode 100644
+index 0000000..23a40d6
+--- /dev/null
++++ b/drivers/net/wireless/libertas_uap/uap_fw.h
+@@ -0,0 +1,359 @@
++/** @file uap_fw.h
++ *
++ * @brief This file contains firmware specific defines.
++ *
++ * Copyright (C) 2008-2009, Marvell International Ltd.
++ *
++ * This software file (the "File") is distributed by Marvell International
++ * Ltd. under the terms of the GNU General Public License Version 2, June 1991
++ * (the "License").  You may use, redistribute and/or modify this File in
++ * accordance with the terms and conditions of the License, a copy of which
++ * is available along with the File in the gpl.txt file or by writing to
++ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
++ *
++ * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
++ * this warranty disclaimer.
++ *
++ */
++/********************************************************
++Change log:
++      02/26/08: Initial creation
++********************************************************/
++
++#ifndef _UAP_FW_H
++#define _UAP_FW_H
++
++/** uap upload size */
++#define       UAP_UPLD_SIZE                   2312
++/** Packet type Micro AP */
++#define PKT_TYPE_MICROAP              1
++/** Packet type client */
++#define PKT_TYPE_CLIENT                       0
++
++/** TxPD descriptor */
++typedef struct _TxPD
++{
++        /** Bss Type */
++    u8 BssType;
++        /** Bss num */
++    u8 BssNum;
++        /** Tx packet length */
++    u16 TxPktLength;
++        /** Tx packet offset */
++    u16 TxPktOffset;
++        /** Tx packet type */
++    u16 TxPktType;
++        /** Tx Control */
++    u32 TxControl;
++        /** reserved */
++    u32 reserved[2];
++} __ATTRIB_PACK__ TxPD, *PTxPD;
++
++/** RxPD Descriptor */
++typedef struct _RxPD
++{
++        /** Bss Type */
++    u8 BssType;
++        /** Bss Num */
++    u8 BssNum;
++        /** Tx packet length */
++    u16 RxPktLength;
++        /** Tx packet offset */
++    u16 RxPktOffset;
++} __ATTRIB_PACK__ RxPD, *PRxPD;
++
++#ifdef BIG_ENDIAN
++/** Convert from 16 bit little endian format to CPU format */
++#define uap_le16_to_cpu(x) le16_to_cpu(x)
++/** Convert from 32 bit little endian format to CPU format */
++#define uap_le32_to_cpu(x) le32_to_cpu(x)
++/** Convert from 64 bit little endian format to CPU format */
++#define uap_le64_to_cpu(x) le64_to_cpu(x)
++/** Convert to 16 bit little endian format from CPU format */
++#define uap_cpu_to_le16(x) cpu_to_le16(x)
++/** Convert to 32 bit little endian format from CPU format */
++#define uap_cpu_to_le32(x) cpu_to_le32(x)
++/** Convert to 64 bit little endian format from CPU format */
++#define uap_cpu_to_le64(x) cpu_to_le64(x)
++
++/** Convert TxPD to little endian format from CPU format */
++#define endian_convert_TxPD(x);                                         \
++    {                                                                   \
++        (x)->TxPktLength = uap_cpu_to_le16((x)->TxPktLength);         \
++        (x)->TxPktOffset = uap_cpu_to_le32((x)->TxPktOffset);         \
++        (x)->TxControl = uap_cpu_to_le32((x)->TxControl);              \
++        (x)->TxPktType = uap_cpu_to_le32((x)->TxPktType);             \
++    }
++
++/** Convert RxPD from little endian format to CPU format */
++#define endian_convert_RxPD(x);                                       \
++    {                                                                 \
++        (x)->RxPktLength = uap_le16_to_cpu((x)->RxPktLength);         \
++        (x)->RxPktOffset = uap_le32_to_cpu((x)->RxPktOffset);         \
++    }
++#else /* BIG_ENDIAN */
++/** Do nothing */
++#define uap_le16_to_cpu(x) x
++/** Do nothing */
++#define uap_le32_to_cpu(x) x
++/** Do nothing */
++#define uap_le64_to_cpu(x) x
++/** Do nothing */
++#define uap_cpu_to_le16(x) x
++/** Do nothing */
++#define uap_cpu_to_le32(x) x
++/** Do nothing */
++#define uap_cpu_to_le64(x) x
++
++/** Do nothing */
++#define endian_convert_TxPD(x)
++/** Do nothing */
++#define endian_convert_RxPD(x)
++#endif /* BIG_ENDIAN */
++
++/** Host Command ID : Function initialization */
++#define HostCmd_CMD_FUNC_INIT                 0x00a9
++/** Host Command ID : Function shutdown */
++#define HostCmd_CMD_FUNC_SHUTDOWN             0x00aa
++
++/** Host Command id: SYS_INFO  */
++#define HOST_CMD_APCMD_SYS_INFO               0x00ae
++/** Host Command id: SYS_RESET  */
++#define HOST_CMD_APCMD_SYS_RESET              0x00af
++/** Host Command id: SYS_CONFIGURE  */
++#define HOST_CMD_APCMD_SYS_CONFIGURE          0x00b0
++/** Host Command id: BSS_START  */
++#define HOST_CMD_APCMD_BSS_START              0x00b1
++/** Host Command id: SYS_STOP  */
++#define HOST_CMD_APCMD_BSS_STOP               0x00b2
++/** Host Command id: STA_LIST  */
++#define HOST_CMD_APCMD_STA_LIST               0x00b3
++/** Host Command id: STA_FILTER_TABLE  */
++#define HOST_CMD_APCMD_STA_FILTER_TABLE       0x00b4
++/** Host Command id: STA_DEAUTH  */
++#define HOST_CMD_APCMD_STA_DEAUTH             0x00b5
++/** Host Command id: SOFT_RESET  */
++#define HOST_CMD_APCMD_SOFT_RESET             0x00d5
++/** Host Command id: POWER_MGMT_EXT  */
++#define HOST_CMD_POWER_MGMT_EXT               0x00ef
++/** Host Command id: SLEEP_CONFIRM*/
++#define HOST_CMD_SLEEP_CONFIRM              0x00d8
++
++/** TLV type : SSID */
++#define TLV_TYPE_SSID                         0x0000
++/** TLV type : Rates */
++#define TLV_TYPE_RATES                                0x0001
++/** TLV type : PHY DS */
++#define TLV_TYPE_PHY_DS                               0x0003
++
++/** TLV Id : Base id */
++#define PROPRIETARY_TLV_BASE_ID               0x0100
++/** TLV Id : AP_MAC_ADDRESS */
++#define MRVL_AP_MAC_ADDRESS_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 43)
++/** TLV Id : Beacon period */
++#define MRVL_BEACON_PERIOD_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 44)
++/** TLV Id : Dtim period */
++#define MRVL_DTIM_PERIOD_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 45)
++/** TLV Id : Basic rates */
++#define MRVL_BASIC_RATES_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 46)
++/** TLV Id : Tx Power */
++#define MRVL_TX_POWER_TLV_ID            (PROPRIETARY_TLV_BASE_ID + 47)
++/** TLV Id : Broadcast SSID control */
++#define MRVL_BCAST_SSID_CTL_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 48)
++/** TLV Id : Preamble control */
++#define MRVL_PREAMBLE_CTL_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 49)
++/** TLV Id : Antenna control */
++#define MRVL_ANTENNA_CTL_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 50)
++/** TLV Id : RTS threshold */
++#define MRVL_RTS_THRESHOLD_TLV_ID       (PROPRIETARY_TLV_BASE_ID + 51)
++/** TLV Id : Radio control */
++#define MRVL_RADIO_CTL_TLV_ID           (PROPRIETARY_TLV_BASE_ID + 52)
++/** TLV Id : TX data rate */
++#define MRVL_TX_DATA_RATE_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 53)
++/** TLV Id : Packet forward control */
++#define MRVL_PKT_FWD_CTL_TLV_ID         (PROPRIETARY_TLV_BASE_ID + 54)
++/** TLV Id : STA info */
++#define MRVL_STA_INFO_TLV_ID            (PROPRIETARY_TLV_BASE_ID + 55)
++/** TLV Id : STA MAC address filter */
++#define MRVL_STA_MAC_ADDR_FILTER_TLV_ID (PROPRIETARY_TLV_BASE_ID + 56)
++/** TLV Id : STA ageout timer */
++#define MRVL_STA_AGEOUT_TIMER_TLV_ID    (PROPRIETARY_TLV_BASE_ID + 57)
++/** TLV Id : Security config */
++#define MRVL_SECURITY_CFG_TLV_ID        (PROPRIETARY_TLV_BASE_ID + 58)
++/** TLV Id : WEP KEY */
++#define MRVL_WEP_KEY_TLV_ID             (PROPRIETARY_TLV_BASE_ID + 59)
++/** TLV Id : WPA Passphrase */
++#define MRVL_WPA_PASSPHRASE_TLV_ID      (PROPRIETARY_TLV_BASE_ID + 60)
++
++/** Action get */
++#define ACTION_GET    0
++/** Action set */
++#define ACTION_SET    1
++/** Length of ethernet address */
++#ifndef       ETH_ALEN
++#define ETH_ALEN                      6
++#endif
++
++/** HostCmd_DS_GEN */
++typedef struct
++{
++    /** Command */
++    u16 Command;
++    /** Size */
++    u16 Size;
++    /** Sequence number */
++    u16 SeqNum;
++    /** Result */
++    u16 Result;
++} __ATTRIB_PACK__ HostCmd_DS_GEN;
++
++/** Size of HostCmd_DS_GEN */
++#define S_DS_GEN    sizeof(HostCmd_DS_GEN)
++
++/** _HostCmd_HEADER*/
++typedef struct
++{
++    /** Command Header : Command */
++    u16 Command;
++    /** Command Header : Size */
++    u16 Size;
++} __ATTRIB_PACK__ HostCmd_HEADER;
++
++/** HostCmd_SYS_CONFIG */
++typedef struct _HostCmd_SYS_CONFIG
++{
++        /** CMD Action GET/SET*/
++    u16 Action;
++        /** Tlv buffer */
++    u8 TlvBuffer[0];
++} __ATTRIB_PACK__ HostCmd_SYS_CONFIG;
++
++/** HostCmd_DS_POWER_MGMT_EXT */
++typedef struct _HostCmd_DS_POWER_MGMT_EXT
++{
++    /** CMD Action Get/Set*/
++    u16 action;
++    /** power mode */
++    u16 power_mode;
++} __ATTRIB_PACK__ HostCmd_DS_POWER_MGMT_EXT;
++
++/** _HostCmd_DS_COMMAND*/
++typedef struct _HostCmd_DS_COMMAND
++{
++
++        /** Command Header : Command */
++    u16 Command;
++        /** Command Header : Size */
++    u16 Size;
++        /** Command Header : Sequence number */
++    u16 SeqNum;
++        /** Command Header : Result */
++    u16 Result;
++        /** Command Body */
++    union
++    {
++        HostCmd_SYS_CONFIG sys_config;
++        HostCmd_DS_POWER_MGMT_EXT pm_cfg;
++
++    } params;
++} __ATTRIB_PACK__ HostCmd_DS_COMMAND;
++
++/** MrvlIEtypesHeader_*/
++typedef struct _MrvlIEtypesHeader
++{
++    /** Header type */
++    u16 Type;
++    /** Header length */
++    u16 Len;
++} __ATTRIB_PACK__ MrvlIEtypesHeader_t;
++
++/** MrvlIEtypes_Data_t */
++typedef struct _MrvlIEtypes_Data_t
++{
++    /** Header */
++    MrvlIEtypesHeader_t Header;
++    /** Data */
++    u8 Data[1];
++} __ATTRIB_PACK__ MrvlIEtypes_Data_t;
++
++/** MrvlIEtypes_ChanListParamSet_t */
++typedef struct _MrvlIEtypes_MacAddr_t
++{
++    /** Header */
++    MrvlIEtypesHeader_t Header;
++    /** AP MAC address */
++    u8 ApMacAddr[ETH_ALEN];
++} __ATTRIB_PACK__ MrvlIEtypes_MacAddr_t;
++
++/** Event ID: BSS started */
++#define MICRO_AP_EV_ID_BSS_START    46
++
++/** Event ID: BSS idle event */
++#define MICRO_AP_EV_BSS_IDLE       67
++
++/** Event ID: BSS active event */
++#define MICRO_AP_EV_BSS_ACTIVE             68
++
++/** Event ID: PS_AWAKE */
++#define EVENT_PS_AWAKE     0x0a
++
++/** Event ID: PS_SLEEP */
++#define EVENT_PS_SLEEP     0x0b
++
++/** PS_STATE */
++typedef enum _PS_STATE
++{
++    PS_STATE_AWAKE,
++    PS_STATE_PRE_SLEEP,
++    PS_STATE_SLEEP
++} PS_STATE;
++
++/** TLV type: AP Sleep param */
++#define TLV_TYPE_AP_SLEEP_PARAM         (PROPRIETARY_TLV_BASE_ID + 106)
++/** TLV type: AP Inactivity Sleep param */
++#define TLV_TYPE_AP_INACT_SLEEP_PARAM   (PROPRIETARY_TLV_BASE_ID + 107)
++
++/** MrvlIEtypes_sleep_param_t */
++typedef struct _MrvlIEtypes_sleep_param_t
++{
++    /** Header */
++    MrvlIEtypesHeader_t header;
++    /** control bitmap */
++    u32 ctrl_bitmap;
++    /** min_sleep */
++    u32 min_sleep;
++    /** max_sleep */
++    u32 max_sleep;
++} __ATTRIB_PACK__ MrvlIEtypes_sleep_param_t;
++
++/** MrvlIEtypes_inact_sleep_param_t */
++typedef struct _MrvlIEtypes_inact_sleep_param_t
++{
++    /** Header */
++    MrvlIEtypesHeader_t header;
++    /** inactivity timeout */
++    u32 inactivity_to;
++    /** min_awake */
++    u32 min_awake;
++    /** max_awake */
++    u32 max_awake;
++} __ATTRIB_PACK__ MrvlIEtypes_inact_sleep_param_t;
++
++/** AP_Event */
++typedef struct _AP_Event
++{
++    /** Event ID */
++    u32 EventId;
++    /*
++     * Reserved for STA_ASSOCIATED event and contains
++     * status information for the MIC_COUNTERMEASURES event.
++     */
++    /** Reserved/status */
++    u16 status;
++    /** AP MAC address */
++    u8 MacAddr[ETH_ALEN];
++} __ATTRIB_PACK__ AP_Event;
++#endif /* _UAP_FW_H */
+diff --git a/drivers/net/wireless/libertas_uap/uap_headers.h b/drivers/net/wireless/libertas_uap/uap_headers.h
+new file mode 100644
+index 0000000..fa09af4
+--- /dev/null
++++ b/drivers/net/wireless/libertas_uap/uap_headers.h
+@@ -0,0 +1,64 @@
++/** @file uap_headers.h
++ *
++ * @brief This file contains all the necessary include file.
++ *
++  * Copyright (C) 2008-2009, Marvell International Ltd.
++ *
++ * This software file (the "File") is distributed by Marvell International
++ * Ltd. under the terms of the GNU General Public License Version 2, June 1991
++ * (the "License").  You may use, redistribute and/or modify this File in
++ * accordance with the terms and conditions of the License, a copy of which
++ * is available along with the File in the gpl.txt file or by writing to
++ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
++ *
++ * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
++ * this warranty disclaimer.
++ *
++ */
++#ifndef _UAP_HEADERS_H
++#define _UAP_HEADERS_H
++
++/* Linux header files */
++#include    <linux/kernel.h>
++#include    <linux/module.h>
++#include    <linux/init.h>
++#include    <linux/version.h>
++#include    <linux/param.h>
++#include    <linux/types.h>
++#include    <linux/interrupt.h>
++#include    <linux/proc_fs.h>
++#include    <linux/kthread.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
++#include    <linux/semaphore.h>
++#else
++#include    <asm/semaphore.h>
++#endif
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
++#include    <linux/config.h>
++#endif
++
++/* Net header files */
++#include    <linux/netdevice.h>
++#include    <linux/net.h>
++#include    <linux/skbuff.h>
++#include    <linux/if_ether.h>
++#include    <linux/etherdevice.h>
++#include    <net/sock.h>
++#include    <linux/netlink.h>
++#include    <linux/firmware.h>
++#include    <linux/delay.h>
++
++#include    "uap_drv.h"
++#include    "uap_fw.h"
++
++#include <linux/mmc/sdio.h>
++#include <linux/mmc/sdio_ids.h>
++#include <linux/mmc/sdio_func.h>
++#include <linux/mmc/card.h>
++#include "uap_sdio_mmc.h"
++
++#endif /* _UAP_HEADERS_H */
+diff --git a/drivers/net/wireless/libertas_uap/uap_main.c b/drivers/net/wireless/libertas_uap/uap_main.c
+new file mode 100644
+index 0000000..6ad8403
+--- /dev/null
++++ b/drivers/net/wireless/libertas_uap/uap_main.c
+@@ -0,0 +1,1817 @@
++/** @file uap_main.c
++  * @brief This file contains the major functions in uAP
++  * driver. It includes init, exit etc..
++  * This file also contains the initialization for SW,
++  * FW and HW
++  *
++  * Copyright (C) 2008-2009, Marvell International Ltd.
++  *
++  * This software file (the "File") is distributed by Marvell International
++  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
++  * (the "License").  You may use, redistribute and/or modify this File in
++  * accordance with the terms and conditions of the License, a copy of which
++  * is available along with the File in the gpl.txt file or by writing to
++  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++  * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
++  *
++  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
++  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
++  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
++  * this warranty disclaimer.
++  *
++  */
++/**
++  * @mainpage uAP Linux Driver
++  *
++  * @section overview_sec Overview
++  *
++  * This is Linux reference driver for Marvell uAP.
++  *
++  * @section copyright_sec Copyright
++  *
++  * Copyright (C) 2008, Marvell International Ltd.
++  *
++  */
++
++#include      "uap_headers.h"
++
++/**
++ * the global variable of a pointer to uap_private
++ * structure variable
++ */
++uap_private *uappriv = NULL;
++#ifdef DEBUG_LEVEL1
++#define DEFAULT_DEBUG_MASK    (DBG_MSG | DBG_FATAL | DBG_ERROR)
++u32 drvdbg = DEFAULT_DEBUG_MASK;
++#endif
++/** Helper name */
++char *helper_name = NULL;
++/** Firmware name */
++char *fw_name = NULL;
++
++/** Semaphore for add/remove card */
++SEMAPHORE AddRemoveCardSem;
++
++/********************************************************
++              Local Functions
++********************************************************/
++/**
++ *  @brief This function send sleep confirm command to firmware
++ *
++ *  @param priv       A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS for success otherwise UAP_STATUS_FAILURE
++ */
++static int
++uap_dnld_sleep_confirm_cmd(uap_private * priv)
++{
++    uap_adapter *Adapter = priv->adapter;
++    int ret = UAP_STATUS_SUCCESS;
++    ENTER();
++    PRINTM(CMND, "Sleep confirm\n");
++    Adapter->cmd_pending = TRUE;
++    Adapter->cmd_wait_option = HostCmd_OPTION_WAITFORRSP_SLEEPCONFIRM;
++    ret =
++        sbi_host_to_card(priv, (u8 *) & Adapter->PSConfirmSleep,
++                         sizeof(PS_CMD_ConfirmSleep));
++    if (ret != UAP_STATUS_SUCCESS) {
++        Adapter->ps_state = PS_STATE_AWAKE;
++        Adapter->cmd_pending = FALSE;
++        Adapter->cmd_wait_option = FALSE;
++    }
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function process sleep confirm resp from firmware
++ *
++ *  @param priv       A pointer to uap_private structure
++ *  @param resp       A pointer to resp buf
++ *  @param resp_len   resp buf len
++ *  @return      UAP_STATUS_SUCCESS for success otherwise UAP_STATUS_FAILURE
++ */
++int
++uap_process_sleep_confirm_resp(uap_private * priv, u8 * resp, int resp_len)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    HostCmd_DS_COMMAND *cmd;
++    uap_adapter *Adapter = priv->adapter;
++    ENTER();
++    PRINTM(CMND, "Sleep confirm resp\n");
++    if (!resp_len) {
++        PRINTM(ERROR, "Cmd Size is 0\n");
++        ret = -EFAULT;
++        goto done;
++    }
++    cmd = (HostCmd_DS_COMMAND *) resp;
++    cmd->Result = uap_le16_to_cpu(cmd->Result);
++    if (cmd->Result != UAP_STATUS_SUCCESS) {
++        PRINTM(ERROR, "HOST_CMD_APCMD_PS_SLEEP_CONFIRM fail=%x\n", cmd->Result);
++        ret = -EFAULT;
++    }
++  done:
++    if (ret == UAP_STATUS_SUCCESS)
++        Adapter->ps_state = PS_STATE_SLEEP;
++    else
++        Adapter->ps_state = PS_STATE_AWAKE;
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function checks condition and prepares to
++ *  send sleep confirm command to firmware if OK.
++ *
++ *  @param priv       A pointer to uap_private structure
++ *  @return           n/a
++ */
++static void
++uap_ps_cond_check(uap_private * priv)
++{
++    uap_adapter *Adapter = priv->adapter;
++
++    ENTER();
++    if (!priv->uap_dev.cmd_sent &&
++        !Adapter->cmd_pending && !Adapter->IntCounter) {
++        uap_dnld_sleep_confirm_cmd(priv);
++    } else {
++        PRINTM(INFO, "Delay Sleep Confirm (%s%s%s)\n",
++               (priv->uap_dev.cmd_sent) ? "D" : "",
++               (Adapter->cmd_pending) ? "C" : "",
++               (Adapter->IntCounter) ? "I" : "");
++    }
++    LEAVE();
++}
++
++/**
++ *  @brief This function add cmd to cmdQ and waiting for response
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param skb           A pointer to the skb for process
++ *  @param wait_option Wait option
++ *  @return      UAP_STATUS_SUCCESS for success otherwise UAP_STATUS_FAILURE
++ */
++static int
++uap_process_cmd(uap_private * priv, struct sk_buff *skb, u8 wait_option)
++{
++    uap_adapter *Adapter = priv->adapter;
++    int ret = UAP_STATUS_SUCCESS;
++    HostCmd_DS_COMMAND *cmd;
++    u8 *headptr;
++    ENTER();
++    if (Adapter->HardwareStatus != HWReady) {
++        PRINTM(ERROR, "Hw not ready, uap_process_cmd\n");
++        kfree(skb);
++        LEAVE();
++        return -EFAULT;
++    }
++    skb->cb[0] = wait_option;
++    headptr = skb->data;
++    *(u16 *) & headptr[0] = uap_cpu_to_le16(skb->len);
++    *(u16 *) & headptr[2] = uap_cpu_to_le16(MV_TYPE_CMD);
++    cmd = (HostCmd_DS_COMMAND *) (skb->data + INTF_HEADER_LEN);
++    Adapter->SeqNum++;
++    cmd->SeqNum = uap_cpu_to_le16(Adapter->SeqNum);
++    PRINTM(CMND, "process_cmd: %x\n", cmd->Command);
++    DBG_HEXDUMP(CMD_D, "process_cmd", (u8 *) cmd, cmd->Size);
++    if (!wait_option) {
++        skb_queue_tail(&priv->adapter->cmd_queue, skb);
++        wake_up_interruptible(&priv->MainThread.waitQ);
++        LEAVE();
++        return ret;
++    }
++    if (OS_ACQ_SEMAPHORE_BLOCK(&Adapter->CmdSem)) {
++        PRINTM(ERROR, "Acquire semaphore error, uap_prepare_cmd\n");
++        kfree(skb);
++        LEAVE();
++        return -EBUSY;
++    }
++    skb_queue_tail(&priv->adapter->cmd_queue, skb);
++    Adapter->CmdWaitQWoken = FALSE;
++    wake_up_interruptible(&priv->MainThread.waitQ);
++    /* Sleep until response is generated by FW */
++    if (wait_option == HostCmd_OPTION_WAITFORRSP_TIMEOUT) {
++        if (!os_wait_interruptible_timeout
++            (Adapter->cmdwait_q, Adapter->CmdWaitQWoken, MRVDRV_TIMER_20S)) {
++            PRINTM(ERROR, "Cmd timeout\n");
++            Adapter->cmd_pending = FALSE;
++            ret = -EFAULT;
++        }
++    } else
++        wait_event_interruptible(Adapter->cmdwait_q, Adapter->CmdWaitQWoken);
++    OS_REL_SEMAPHORE(&Adapter->CmdSem);
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief Inspect the response buffer for pointers to expected TLVs
++ *
++ *
++ *  @param pTlv        Pointer to the start of the TLV buffer to parse
++ *  @param tlvBufSize  Size of the TLV buffer
++ *  @param reqTlvType  request tlv's tlvtype
++ *  @param ppTlv       Output parameter: Pointer to the request TLV if found
++ *
++ *  @return            void
++ */
++static void
++uap_get_tlv_ptrs(MrvlIEtypes_Data_t * pTlv, int tlvBufSize,
++                 u16 reqTlvType, MrvlIEtypes_Data_t ** ppTlv)
++{
++    MrvlIEtypes_Data_t *pCurrentTlv;
++    int tlvBufLeft;
++    u16 tlvType;
++    u16 tlvLen;
++
++    ENTER();
++    pCurrentTlv = pTlv;
++    tlvBufLeft = tlvBufSize;
++    *ppTlv = NULL;
++    PRINTM(INFO, "uap_get_tlv: tlvBufSize = %d, reqTlvType=%x\n", tlvBufSize,
++           reqTlvType);
++    while (tlvBufLeft >= sizeof(MrvlIEtypesHeader_t)) {
++        tlvType = uap_le16_to_cpu(pCurrentTlv->Header.Type);
++        tlvLen = uap_le16_to_cpu(pCurrentTlv->Header.Len);
++        if (reqTlvType == tlvType)
++            *ppTlv = (MrvlIEtypes_Data_t *) pCurrentTlv;
++        if (*ppTlv) {
++            HEXDUMP("TLV Buf", (u8 *) * ppTlv, tlvLen);
++            break;
++        }
++        tlvBufLeft -= (sizeof(pTlv->Header) + tlvLen);
++        pCurrentTlv = (MrvlIEtypes_Data_t *) (pCurrentTlv->Data + tlvLen);
++    }                           /* while */
++    LEAVE();
++}
++
++/**
++ *  @brief This function get mac
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS on success, otherwise failure code
++ */
++static int
++uap_get_mac_address(uap_private * priv)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u32 CmdSize;
++    HostCmd_DS_COMMAND *cmd;
++    uap_adapter *Adapter = priv->adapter;
++    struct sk_buff *skb;
++    MrvlIEtypes_MacAddr_t *pMacAddrTlv;
++    MrvlIEtypes_Data_t *pTlv;
++    u16 tlvBufSize;
++    ENTER();
++    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
++    if (!skb) {
++        PRINTM(ERROR, "No free skb\n");
++        ret = -ENOMEM;
++        goto done;
++    }
++    CmdSize =
++        S_DS_GEN + sizeof(HostCmd_SYS_CONFIG) + sizeof(MrvlIEtypes_MacAddr_t);
++    cmd = (HostCmd_DS_COMMAND *) (skb->data + INTF_HEADER_LEN);
++    cmd->Command = uap_cpu_to_le16(HOST_CMD_APCMD_SYS_CONFIGURE);
++    cmd->Size = uap_cpu_to_le16(CmdSize);
++    cmd->params.sys_config.Action = uap_cpu_to_le16(ACTION_GET);
++    pMacAddrTlv =
++        (MrvlIEtypes_MacAddr_t *) (skb->data + INTF_HEADER_LEN + S_DS_GEN +
++                                   sizeof(HostCmd_SYS_CONFIG));
++    pMacAddrTlv->Header.Type = uap_cpu_to_le16(MRVL_AP_MAC_ADDRESS_TLV_ID);
++    pMacAddrTlv->Header.Len = uap_cpu_to_le16(ETH_ALEN);
++    skb_put(skb, CmdSize + INTF_HEADER_LEN);
++    if (UAP_STATUS_SUCCESS !=
++        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP_TIMEOUT)) {
++        PRINTM(ERROR, "Fail to process cmd SYS_CONFIGURE Query\n");
++        ret = -EFAULT;
++        goto done;
++    }
++    if (!Adapter->CmdSize) {
++        PRINTM(ERROR, "Cmd Size is 0\n");
++        ret = -EFAULT;
++        goto done;
++    }
++    cmd = (HostCmd_DS_COMMAND *) Adapter->CmdBuf;
++    cmd->Result = uap_le16_to_cpu(cmd->Result);
++    if (cmd->Result != UAP_STATUS_SUCCESS) {
++        PRINTM(ERROR, "uap_get_mac_address fail=%x\n", cmd->Result);
++        ret = -EFAULT;
++        goto done;
++    }
++    pTlv =
++        (MrvlIEtypes_Data_t *) (Adapter->CmdBuf + S_DS_GEN +
++                                sizeof(HostCmd_SYS_CONFIG));
++    tlvBufSize = Adapter->CmdSize - S_DS_GEN - sizeof(HostCmd_SYS_CONFIG);
++    uap_get_tlv_ptrs(pTlv, tlvBufSize, MRVL_AP_MAC_ADDRESS_TLV_ID,
++                     (MrvlIEtypes_Data_t **) & pMacAddrTlv);
++    if (pMacAddrTlv) {
++        memcpy(priv->uap_dev.netdev->dev_addr, pMacAddrTlv->ApMacAddr,
++               ETH_ALEN);
++        HEXDUMP("Original MAC addr", priv->uap_dev.netdev->dev_addr, ETH_ALEN);
++    }
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function checks the conditions and sends packet to device
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param skb           A pointer to the skb for process
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++uap_process_tx(uap_private * priv, struct sk_buff *skb)
++{
++    uap_adapter *Adapter = priv->adapter;
++    int ret = UAP_STATUS_SUCCESS;
++    TxPD *pLocalTxPD;
++    u8 *headptr;
++    struct sk_buff *newskb;
++    int newheadlen;
++    ENTER();
++    ASSERT(skb);
++    if (!skb) {
++        LEAVE();
++        return UAP_STATUS_FAILURE;
++    }
++    if (skb_headroom(skb) < (sizeof(TxPD) + INTF_HEADER_LEN + HEADER_ALIGNMENT)) {
++        newheadlen = sizeof(TxPD) + INTF_HEADER_LEN + HEADER_ALIGNMENT;
++        PRINTM(WARN, "Tx: Insufficient skb headroom %d\n", skb_headroom(skb));
++        /* Insufficient skb headroom - allocate a new skb */
++        newskb = skb_realloc_headroom(skb, newheadlen);
++        if (unlikely(newskb == NULL)) {
++            PRINTM(ERROR, "Tx: Cannot allocate skb\n");
++            ret = UAP_STATUS_FAILURE;
++            goto done;
++        }
++        kfree_skb(skb);
++        skb = newskb;
++        PRINTM(INFO, "new skb headroom %d\n", skb_headroom(skb));
++    }
++    /* headptr should be aligned */
++    headptr = skb->data - sizeof(TxPD) - INTF_HEADER_LEN;
++    headptr = (u8 *) ((u32) headptr & ~((u32) (HEADER_ALIGNMENT - 1)));
++
++    pLocalTxPD = (TxPD *) (headptr + INTF_HEADER_LEN);
++    memset(pLocalTxPD, 0, sizeof(TxPD));
++    pLocalTxPD->BssType = PKT_TYPE_MICROAP;
++    pLocalTxPD->TxPktLength = skb->len;
++    /* offset of actual data */
++    pLocalTxPD->TxPktOffset = (long) skb->data - (long) pLocalTxPD;
++    endian_convert_TxPD(pLocalTxPD);
++    *(u16 *) & headptr[0] =
++        uap_cpu_to_le16(skb->len + ((long) skb->data - (long) headptr));
++    *(u16 *) & headptr[2] = uap_cpu_to_le16(MV_TYPE_DAT);
++    ret =
++        sbi_host_to_card(priv, headptr,
++                         skb->len + ((long) skb->data - (long) headptr));
++    if (ret) {
++        PRINTM(ERROR, "uap_process_tx Error: sbi_host_to_card failed: 0x%X\n",
++               ret);
++        Adapter->dbg.num_tx_host_to_card_failure++;
++        goto done;
++    }
++    PRINTM(DATA, "Data => FW\n");
++    DBG_HEXDUMP(DAT_D, "Tx", headptr,
++                MIN(skb->len + sizeof(TxPD), DATA_DUMP_LEN));
++  done:
++    /* Freed skb */
++    kfree_skb(skb);
++    LEAVE();
++    return ret;
++}
++
++static struct netlink_kernel_cfg cfg = {
++      .groups = NL_MULTICAST_GROUP,
++};
++
++/**
++ *  @brief This function initializes the adapter structure
++ *  and set default value to the member of adapter.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++uap_init_sw(uap_private * priv)
++{
++    uap_adapter *Adapter = priv->adapter;
++
++    ENTER();
++
++    if (!(Adapter->CmdBuf = kmalloc(MRVDRV_SIZE_OF_CMD_BUFFER, GFP_KERNEL))) {
++        PRINTM(INFO, "Failed to allocate command buffer!\n");
++        LEAVE();
++        return UAP_STATUS_FAILURE;
++    }
++
++    Adapter->cmd_pending = FALSE;
++    Adapter->CmdWaitQWoken = FALSE;
++    Adapter->ps_state = PS_STATE_AWAKE;
++    Adapter->WakeupTries = 0;
++
++    memset(&Adapter->PSConfirmSleep, 0, sizeof(PS_CMD_ConfirmSleep));
++        /** SDIO header */
++    Adapter->PSConfirmSleep.SDLen =
++        uap_cpu_to_le16(sizeof(PS_CMD_ConfirmSleep));
++    Adapter->PSConfirmSleep.SDType = uap_cpu_to_le16(MV_TYPE_CMD);
++    Adapter->PSConfirmSleep.SeqNum = 0;
++    Adapter->PSConfirmSleep.Command = uap_cpu_to_le16(HOST_CMD_SLEEP_CONFIRM);
++    Adapter->PSConfirmSleep.Size = uap_cpu_to_le16(sizeof(HostCmd_DS_GEN));
++    Adapter->PSConfirmSleep.Result = 0;
++
++    init_waitqueue_head(&Adapter->cmdwait_q);
++    OS_INIT_SEMAPHORE(&Adapter->CmdSem);
++
++    skb_queue_head_init(&Adapter->tx_queue);
++    skb_queue_head_init(&Adapter->cmd_queue);
++
++    /* Status variable */
++    Adapter->HardwareStatus = HWInitializing;
++
++    /* PnP support */
++    Adapter->SurpriseRemoved = FALSE;
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
++    Adapter->nl_sk = netlink_kernel_create(NETLINK_MARVELL,
++                                           NL_MULTICAST_GROUP, NULL,
++                                           THIS_MODULE);
++#else
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
++    Adapter->nl_sk = netlink_kernel_create(NETLINK_MARVELL,
++                                           NL_MULTICAST_GROUP, NULL, NULL,
++                                           THIS_MODULE);
++#else
++    Adapter->nl_sk = netlink_kernel_create(&init_net, NETLINK_MARVELL, &cfg);
++#endif
++#endif
++    if (!Adapter->nl_sk) {
++        PRINTM(ERROR,
++               "Could not initialize netlink event passing mechanism!\n");
++    }
++    LEAVE();
++    return UAP_STATUS_SUCCESS;
++}
++
++/**
++ *  @brief This function sends FUNC_INIT command to firmware
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS on success, otherwise failure code
++ */
++static int
++uap_func_init(uap_private * priv)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u32 CmdSize;
++    HostCmd_DS_GEN *cmd;
++    uap_adapter *Adapter = priv->adapter;
++    struct sk_buff *skb;
++    ENTER();
++    if (Adapter->HardwareStatus != HWReady) {
++        PRINTM(ERROR, "uap_func_init:Hardware is not ready!\n");
++        ret = -EFAULT;
++        goto done;
++    }
++    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
++    if (!skb) {
++        PRINTM(ERROR, "No free skb\n");
++        ret = -ENOMEM;
++        goto done;
++    }
++    CmdSize = sizeof(HostCmd_DS_GEN);
++    cmd = (HostCmd_DS_GEN *) (skb->data + INTF_HEADER_LEN);
++    cmd->Command = uap_cpu_to_le16(HostCmd_CMD_FUNC_INIT);
++    cmd->Size = uap_cpu_to_le16(CmdSize);
++    skb_put(skb, CmdSize + INTF_HEADER_LEN);
++    PRINTM(CMND, "HostCmd_CMD_FUNC_INIT\n");
++    if (UAP_STATUS_SUCCESS !=
++        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP_TIMEOUT)) {
++        PRINTM(ERROR, "Fail to process cmd HostCmd_CMD_FUNC_INIT\n");
++        ret = -EFAULT;
++        goto done;
++    }
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function sends FUNC_SHUTDOWN command to firmware
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS on success, otherwise failure code
++ */
++static int __exit
++uap_func_shutdown(uap_private * priv)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u32 CmdSize;
++    HostCmd_DS_GEN *cmd;
++    uap_adapter *Adapter = priv->adapter;
++    struct sk_buff *skb;
++    ENTER();
++    if (Adapter->HardwareStatus != HWReady) {
++        PRINTM(ERROR, "uap_func_shutdown:Hardware is not ready!\n");
++        ret = -EFAULT;
++        goto done;
++    }
++    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
++    if (!skb) {
++        PRINTM(ERROR, "No free skb\n");
++        ret = -ENOMEM;
++        goto done;
++    }
++    CmdSize = sizeof(HostCmd_DS_GEN);
++    cmd = (HostCmd_DS_GEN *) (skb->data + INTF_HEADER_LEN);
++    cmd->Command = uap_cpu_to_le16(HostCmd_CMD_FUNC_SHUTDOWN);
++    cmd->Size = uap_cpu_to_le16(CmdSize);
++    skb_put(skb, CmdSize + INTF_HEADER_LEN);
++    PRINTM(CMND, "HostCmd_CMD_FUNC_SHUTDOWN\n");
++    if (UAP_STATUS_SUCCESS !=
++        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP_TIMEOUT)) {
++        PRINTM(ERROR, "Fail to process cmd HostCmd_CMD_FUNC_SHUTDOWN\n");
++        ret = -EFAULT;
++        goto done;
++    }
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function initializes firmware
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++uap_init_fw(uap_private * priv)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    ENTER();
++    sbi_disable_host_int(priv);
++    /* Check if firmware is already running */
++    if (sbi_check_fw_status(priv, 1) == UAP_STATUS_SUCCESS) {
++        PRINTM(MSG, "UAP FW already running! Skip FW download\n");
++    } else {
++        if ((ret = request_firmware(&priv->fw_helper, helper_name,
++                                    priv->hotplug_device)) < 0) {
++            PRINTM(FATAL,
++                   "request_firmware() failed (helper), error code = %#x\n",
++                   ret);
++            goto done;
++        }
++
++        /* Download the helper */
++        ret = sbi_prog_helper(priv);
++
++        if (ret) {
++            PRINTM(FATAL,
++                   "Bootloader in invalid state! Helper download failed!\n");
++            ret = UAP_STATUS_FAILURE;
++            goto done;
++        }
++        if ((ret = request_firmware(&priv->firmware, fw_name,
++                                    priv->hotplug_device)) < 0) {
++            PRINTM(FATAL, "request_firmware() failed, error code = %#x\n", ret);
++            goto done;
++        }
++
++        /* Download the main firmware via the helper firmware */
++        if (sbi_prog_fw_w_helper(priv)) {
++            PRINTM(FATAL, "UAP FW download failed!\n");
++            ret = UAP_STATUS_FAILURE;
++            goto done;
++        }
++        /* Check if the firmware is downloaded successfully or not */
++        if (sbi_check_fw_status(priv, MAX_FIRMWARE_POLL_TRIES) ==
++            UAP_STATUS_FAILURE) {
++            PRINTM(FATAL, "FW failed to be active in time!\n");
++            ret = UAP_STATUS_FAILURE;
++            goto done;
++        }
++        PRINTM(MSG, "UAP FW is active\n");
++    }
++    sbi_enable_host_int(priv);
++    priv->adapter->HardwareStatus = HWReady;
++    if (uap_func_init(priv) != UAP_STATUS_SUCCESS) {
++        ret = UAP_STATUS_FAILURE;
++        goto done;
++    }
++  done:
++    if (priv->fw_helper)
++        release_firmware(priv->fw_helper);
++    if (priv->firmware)
++        release_firmware(priv->firmware);
++    LEAVE();
++    return ret;
++
++}
++
++/**
++ *  @brief This function frees the structure of adapter
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      n/a
++ */
++static void
++uap_free_adapter(uap_private * priv)
++{
++    uap_adapter *Adapter = priv->adapter;
++
++    ENTER();
++
++    if (Adapter) {
++        if ((Adapter->nl_sk) && ((Adapter->nl_sk)->sk_socket)) {
++            sock_release((Adapter->nl_sk)->sk_socket);
++            Adapter->nl_sk = NULL;
++        }
++        if (Adapter->CmdBuf)
++            kfree(Adapter->CmdBuf);
++        skb_queue_purge(&priv->adapter->tx_queue);
++        skb_queue_purge(&priv->adapter->cmd_queue);
++        /* Free the adapter object itself */
++        kfree(Adapter);
++        priv->adapter = NULL;
++    }
++
++    LEAVE();
++}
++
++/**
++ *  @brief This function handles the major job in uap driver.
++ *  it handles the event generated by firmware, rx data received
++ *  from firmware and tx data sent from kernel.
++ *
++ *  @param data    A pointer to uap_thread structure
++ *  @return        BT_STATUS_SUCCESS
++ */
++static int
++uap_service_main_thread(void *data)
++{
++    uap_thread *thread = data;
++    uap_private *priv = thread->priv;
++    uap_adapter *Adapter = priv->adapter;
++    wait_queue_t wait;
++    u8 ireg = 0;
++    struct sk_buff *skb;
++    ENTER();
++    uap_activate_thread(thread);
++    init_waitqueue_entry(&wait, current);
++    current->flags |= PF_NOFREEZE;
++
++    for (;;) {
++        add_wait_queue(&thread->waitQ, &wait);
++        OS_SET_THREAD_STATE(TASK_INTERRUPTIBLE);
++        if ((Adapter->WakeupTries) ||
++            (!Adapter->IntCounter && Adapter->ps_state == PS_STATE_PRE_SLEEP) ||
++            (!priv->adapter->IntCounter
++             && (priv->uap_dev.data_sent ||
++                 skb_queue_empty(&priv->adapter->tx_queue))
++             && (priv->uap_dev.cmd_sent || Adapter->cmd_pending ||
++                 skb_queue_empty(&priv->adapter->cmd_queue))
++            )) {
++            PRINTM(INFO, "Main: Thread sleeping...\n");
++            schedule();
++        }
++        OS_SET_THREAD_STATE(TASK_RUNNING);
++        remove_wait_queue(&thread->waitQ, &wait);
++        if (kthread_should_stop() || Adapter->SurpriseRemoved) {
++            PRINTM(INFO, "main-thread: break from main thread: "
++                   "SurpriseRemoved=0x%x\n", Adapter->SurpriseRemoved);
++            /* Cancel pending command */
++            if (Adapter->cmd_pending == TRUE) {
++                /* Wake up cmd Q */
++                Adapter->CmdWaitQWoken = TRUE;
++                wake_up_interruptible(&Adapter->cmdwait_q);
++            }
++            break;
++        }
++
++        PRINTM(INFO, "Main: Thread waking up...\n");
++        if (priv->adapter->IntCounter) {
++            OS_INT_DISABLE;
++            Adapter->IntCounter = 0;
++            OS_INT_RESTORE;
++            sbi_get_int_status(priv, &ireg);
++        } else if ((priv->adapter->ps_state == PS_STATE_SLEEP) &&
++                   (!skb_queue_empty(&priv->adapter->cmd_queue) ||
++                    !skb_queue_empty(&priv->adapter->tx_queue))) {
++            priv->adapter->WakeupTries++;
++            PRINTM(CMND, "%lu : Wakeup device...\n", os_time_get());
++            sbi_wakeup_firmware(priv);
++            continue;
++        }
++        if (Adapter->ps_state == PS_STATE_PRE_SLEEP)
++            uap_ps_cond_check(priv);
++
++        /* The PS state is changed during processing of Sleep Request event
++           above */
++        if ((Adapter->ps_state == PS_STATE_SLEEP) ||
++            (Adapter->ps_state == PS_STATE_PRE_SLEEP))
++            continue;
++        /* Execute the next command */
++        if (!priv->uap_dev.cmd_sent && !Adapter->cmd_pending &&
++            (Adapter->HardwareStatus == HWReady)) {
++            if (!skb_queue_empty(&priv->adapter->cmd_queue)) {
++                skb = skb_dequeue(&priv->adapter->cmd_queue);
++                if (skb) {
++                    Adapter->CmdSize = 0;
++                    Adapter->cmd_pending = TRUE;
++                    Adapter->cmd_wait_option = skb->cb[0];
++                    if (sbi_host_to_card(priv, skb->data, skb->len)) {
++                        PRINTM(ERROR, "Cmd:sbi_host_to_card failed!\n");
++                        Adapter->cmd_pending = FALSE;
++                        Adapter->dbg.num_cmd_host_to_card_failure++;
++                        /* Wake up cmd Q */
++                        Adapter->CmdWaitQWoken = TRUE;
++                        wake_up_interruptible(&Adapter->cmdwait_q);
++                    } else {
++                        if (Adapter->cmd_wait_option ==
++                            HostCmd_OPTION_WAITFORSEND) {
++                            /* Wake up cmd Q */
++                            Adapter->CmdWaitQWoken = TRUE;
++                            wake_up_interruptible(&Adapter->cmdwait_q);
++                            Adapter->cmd_wait_option = FALSE;
++                        }
++                    }
++                    kfree_skb(skb);
++                }
++            }
++        }
++        if (!priv->uap_dev.data_sent && (Adapter->HardwareStatus == HWReady)) {
++            if (!skb_queue_empty(&priv->adapter->tx_queue)) {
++                skb = skb_dequeue(&priv->adapter->tx_queue);
++                if (skb) {
++                    if (uap_process_tx(priv, skb)) {
++                        priv->stats.tx_dropped++;
++                        priv->stats.tx_errors++;
++                        os_start_queue(priv);
++                    } else {
++                        priv->stats.tx_packets++;
++                        priv->stats.tx_bytes += skb->len;
++                    }
++
++                }
++            }
++        }
++    }
++    uap_deactivate_thread(thread);
++    LEAVE();
++    return UAP_STATUS_SUCCESS;
++}
++
++/**
++ *  @brief uap hostcmd ioctl handler
++ *
++ *  @param dev      A pointer to net_device structure
++ *  @param req      A pointer to ifreq structure
++ *  @return         UAP_STATUS_SUCCESS --success, otherwise fail
++ */
++/*********  format of ifr_data *************/
++/*    buf_len + Hostcmd_body             */
++/*    buf_len: 4 bytes                     */
++/*             the length of the buf which */
++/*             can be used to return data  */
++/*             to application            */
++/*    Hostcmd_body                       */
++/*******************************************/
++static int
++uap_hostcmd_ioctl(struct net_device *dev, struct ifreq *req)
++{
++    u32 buf_len;
++    HostCmd_HEADER head;
++    uap_private *priv = (uap_private *) netdev_priv(dev);
++    uap_adapter *Adapter = priv->adapter;
++    int ret = UAP_STATUS_SUCCESS;
++    struct sk_buff *skb;
++
++    ENTER();
++
++    /* Sanity check */
++    if (req->ifr_data == NULL) {
++        PRINTM(ERROR, "uap_hostcmd_ioctl() corrupt data\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    if (copy_from_user(&buf_len, req->ifr_data, sizeof(buf_len))) {
++        PRINTM(ERROR, "Copy from user failed\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    memset(&head, 0, sizeof(HostCmd_HEADER));
++    /* Get the command size from user space */
++    if (copy_from_user
++        (&head, req->ifr_data + sizeof(buf_len), sizeof(HostCmd_HEADER))) {
++        PRINTM(ERROR, "Copy from user failed\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    head.Size = uap_le16_to_cpu(head.Size);
++    if (head.Size > MRVDRV_SIZE_OF_CMD_BUFFER) {
++        PRINTM(ERROR, "CmdSize too big=%d\n", head.Size);
++        LEAVE();
++        return -EFAULT;
++    }
++    PRINTM(CMND, "ioctl: hostcmd=%x, size=%d,buf_len=%d\n", head.Command,
++           head.Size, buf_len);
++    skb = dev_alloc_skb(head.Size + INTF_HEADER_LEN);
++    if (!skb) {
++        PRINTM(ERROR, "No free skb\n");
++        LEAVE();
++        return -ENOMEM;
++    }
++
++    /* Get the command from user space */
++    if (copy_from_user
++        (skb->data + INTF_HEADER_LEN, req->ifr_data + sizeof(buf_len),
++         head.Size)) {
++        PRINTM(ERROR, "Copy from user failed\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    skb_put(skb, head.Size + INTF_HEADER_LEN);
++    if (UAP_STATUS_SUCCESS !=
++        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP)) {
++        PRINTM(ERROR, "Fail to process cmd\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    if (!Adapter->CmdSize) {
++        PRINTM(ERROR, "Cmd Size is 0\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    if (Adapter->CmdSize > buf_len) {
++        PRINTM(ERROR, "buf_len is too small\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    /* Copy to user */
++    if (copy_to_user
++        (req->ifr_data + sizeof(buf_len), Adapter->CmdBuf, Adapter->CmdSize)) {
++        PRINTM(ERROR, "Copy to user failed!\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief uap power mode ioctl handler
++ *
++ *  @param dev      A pointer to net_device structure
++ *  @param req      A pointer to ifreq structure
++ *  @return         UAP_STATUS_SUCCESS --success, otherwise fail
++ */
++static int
++uap_power_mode_ioctl(struct net_device *dev, struct ifreq *req)
++{
++    ps_mgmt pm_cfg;
++    int ret = UAP_STATUS_SUCCESS;
++    uap_private *priv = (uap_private *) netdev_priv(dev);
++    uap_adapter *Adapter = priv->adapter;
++    struct sk_buff *skb = NULL;
++    HostCmd_DS_COMMAND *cmd;
++    u32 CmdSize;
++    u8 *tlv = NULL;
++    MrvlIEtypes_sleep_param_t *sleep_tlv = NULL;
++    MrvlIEtypes_inact_sleep_param_t *inact_tlv = NULL;
++    u16 tlv_buf_left = 0;
++    MrvlIEtypesHeader_t *tlvbuf = NULL;
++    u16 tlv_type = 0;
++    u16 tlv_len = 0;
++
++    ENTER();
++
++    /* Sanity check */
++    if (req->ifr_data == NULL) {
++        PRINTM(ERROR, "uap_power_mode_ioctl() corrupt data\n");
++        LEAVE();
++        return -EFAULT;
++    }
++
++    memset(&pm_cfg, 0, sizeof(ps_mgmt));
++    if (copy_from_user(&pm_cfg, req->ifr_data, sizeof(ps_mgmt))) {
++        PRINTM(ERROR, "Copy from user failed\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    PRINTM(CMND,
++           "ioctl power: flag=0x%x ps_mode=%d ctrl_bitmap=%d min_sleep=%d max_sleep=%d "
++           "inact_to=%d min_awake=%d max_awake=%d\n", pm_cfg.flags,
++           (int) pm_cfg.ps_mode, (int) pm_cfg.sleep_param.ctrl_bitmap,
++           (int) pm_cfg.sleep_param.min_sleep,
++           (int) pm_cfg.sleep_param.max_sleep,
++           (int) pm_cfg.inact_param.inactivity_to,
++           (int) pm_cfg.inact_param.min_awake,
++           (int) pm_cfg.inact_param.max_awake);
++
++    if (pm_cfg.
++        flags & ~(PS_FLAG_PS_MODE | PS_FLAG_SLEEP_PARAM |
++                  PS_FLAG_INACT_SLEEP_PARAM)) {
++        PRINTM(ERROR, "Invalid parameter: flags = 0x%x\n", pm_cfg.flags);
++        ret = -EINVAL;
++        goto done;
++    }
++    if (pm_cfg.ps_mode > PS_MODE_INACTIVITY) {
++        PRINTM(ERROR, "Invalid parameter: ps_mode = %d\n", (int) pm_cfg.flags);
++        ret = -EINVAL;
++        goto done;
++    }
++
++    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
++    if (!skb) {
++        PRINTM(INFO, "No free skb\n");
++        ret = -ENOMEM;
++        goto done;
++    }
++
++    CmdSize = S_DS_GEN + sizeof(HostCmd_DS_POWER_MGMT_EXT);
++
++    cmd = (HostCmd_DS_COMMAND *) (skb->data + INTF_HEADER_LEN);
++    cmd->Command = uap_cpu_to_le16(HOST_CMD_POWER_MGMT_EXT);
++    if (!pm_cfg.flags) {
++        cmd->params.pm_cfg.action = uap_cpu_to_le16(ACTION_GET);
++    } else {
++        cmd->params.pm_cfg.action = uap_cpu_to_le16(ACTION_SET);
++        cmd->params.pm_cfg.power_mode = uap_cpu_to_le16(pm_cfg.ps_mode);
++        tlv = (u8 *) & cmd->params.pm_cfg + sizeof(HostCmd_DS_POWER_MGMT_EXT);
++
++        if ((pm_cfg.ps_mode) && (pm_cfg.flags & PS_FLAG_SLEEP_PARAM)) {
++            sleep_tlv = (MrvlIEtypes_sleep_param_t *) tlv;
++            sleep_tlv->header.Type = uap_cpu_to_le16(TLV_TYPE_AP_SLEEP_PARAM);
++            sleep_tlv->header.Len =
++                uap_cpu_to_le16(sizeof(MrvlIEtypes_sleep_param_t) -
++                                sizeof(MrvlIEtypesHeader_t));
++            sleep_tlv->ctrl_bitmap =
++                uap_cpu_to_le32(pm_cfg.sleep_param.ctrl_bitmap);
++            sleep_tlv->min_sleep =
++                uap_cpu_to_le32(pm_cfg.sleep_param.min_sleep);
++            sleep_tlv->max_sleep =
++                uap_cpu_to_le32(pm_cfg.sleep_param.max_sleep);
++            CmdSize += sizeof(MrvlIEtypes_sleep_param_t);
++            tlv += sizeof(MrvlIEtypes_sleep_param_t);
++        }
++        if ((pm_cfg.ps_mode == PS_MODE_INACTIVITY) &&
++            (pm_cfg.flags & PS_FLAG_INACT_SLEEP_PARAM)) {
++            inact_tlv = (MrvlIEtypes_inact_sleep_param_t *) tlv;
++            inact_tlv->header.Type =
++                uap_cpu_to_le16(TLV_TYPE_AP_INACT_SLEEP_PARAM);
++            inact_tlv->header.Len =
++                uap_cpu_to_le16(sizeof(MrvlIEtypes_inact_sleep_param_t) -
++                                sizeof(MrvlIEtypesHeader_t));
++            inact_tlv->inactivity_to =
++                uap_cpu_to_le32(pm_cfg.inact_param.inactivity_to);
++            inact_tlv->min_awake =
++                uap_cpu_to_le32(pm_cfg.inact_param.min_awake);
++            inact_tlv->max_awake =
++                uap_cpu_to_le32(pm_cfg.inact_param.max_awake);
++            CmdSize += sizeof(MrvlIEtypes_inact_sleep_param_t);
++            tlv += sizeof(MrvlIEtypes_inact_sleep_param_t);
++        }
++    }
++    cmd->Size = uap_cpu_to_le16(CmdSize);
++    skb_put(skb, CmdSize + INTF_HEADER_LEN);
++    if (UAP_STATUS_SUCCESS !=
++        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP)) {
++        PRINTM(ERROR, "Fail to process cmd POWER_MODE\n");
++        ret = -EFAULT;
++        goto done;
++    }
++    if (!Adapter->CmdSize) {
++        PRINTM(ERROR, "Cmd Size is 0\n");
++        ret = -EFAULT;
++        goto done;
++    }
++    cmd = (HostCmd_DS_COMMAND *) Adapter->CmdBuf;
++    cmd->Result = uap_le16_to_cpu(cmd->Result);
++    if (cmd->Result != UAP_STATUS_SUCCESS) {
++        PRINTM(ERROR, "HOST_CMD_APCMD_POWER_MODE fail=%x\n", cmd->Result);
++        ret = -EFAULT;
++        goto done;
++    }
++    if (pm_cfg.flags) {
++        Adapter->psmode = uap_le16_to_cpu(cmd->params.pm_cfg.power_mode);
++    } else {
++        pm_cfg.flags = PS_FLAG_PS_MODE;
++        pm_cfg.ps_mode = uap_le16_to_cpu(cmd->params.pm_cfg.power_mode);
++        tlv_buf_left =
++            cmd->Size - (sizeof(HostCmd_DS_POWER_MGMT_EXT) + S_DS_GEN);
++        tlvbuf =
++            (MrvlIEtypesHeader_t *) ((u8 *) & cmd->params.pm_cfg +
++                                     sizeof(HostCmd_DS_POWER_MGMT_EXT));
++        while (tlv_buf_left >= sizeof(MrvlIEtypesHeader_t)) {
++            tlv_type = uap_le16_to_cpu(tlvbuf->Type);
++            tlv_len = uap_le16_to_cpu(tlvbuf->Len);
++            switch (tlv_type) {
++            case TLV_TYPE_AP_SLEEP_PARAM:
++                sleep_tlv = (MrvlIEtypes_sleep_param_t *) tlvbuf;
++                pm_cfg.flags |= PS_FLAG_SLEEP_PARAM;
++                pm_cfg.sleep_param.ctrl_bitmap =
++                    uap_le32_to_cpu(sleep_tlv->ctrl_bitmap);
++                pm_cfg.sleep_param.min_sleep =
++                    uap_le32_to_cpu(sleep_tlv->min_sleep);
++                pm_cfg.sleep_param.max_sleep =
++                    uap_le32_to_cpu(sleep_tlv->max_sleep);
++                break;
++            case TLV_TYPE_AP_INACT_SLEEP_PARAM:
++                inact_tlv = (MrvlIEtypes_inact_sleep_param_t *) tlvbuf;
++                pm_cfg.flags |= PS_FLAG_INACT_SLEEP_PARAM;
++                pm_cfg.inact_param.inactivity_to =
++                    uap_le32_to_cpu(inact_tlv->inactivity_to);
++                pm_cfg.inact_param.min_awake =
++                    uap_le32_to_cpu(inact_tlv->min_awake);
++                pm_cfg.inact_param.max_awake =
++                    uap_le32_to_cpu(inact_tlv->max_awake);
++                break;
++            }
++            tlv_buf_left -= tlv_len + sizeof(MrvlIEtypesHeader_t);
++            tlvbuf =
++                (MrvlIEtypesHeader_t *) ((u8 *) tlvbuf + tlv_len +
++                                         sizeof(MrvlIEtypesHeader_t));
++        }
++        /* Copy to user */
++        if (copy_to_user(req->ifr_data, &pm_cfg, sizeof(ps_mgmt))) {
++            PRINTM(ERROR, "Copy to user failed!\n");
++            LEAVE();
++            return -EFAULT;
++        }
++    }
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function send bss_stop command to firmware
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS on success, otherwise failure code
++ */
++static int
++uap_bss_stop(uap_private * priv)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u32 CmdSize;
++    HostCmd_DS_GEN *cmd;
++    uap_adapter *Adapter = priv->adapter;
++    struct sk_buff *skb;
++    ENTER();
++    if (Adapter->HardwareStatus != HWReady) {
++        PRINTM(ERROR, "uap_bss_stop:Hardware is not ready!\n");
++        ret = -EFAULT;
++        goto done;
++    }
++    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
++    if (!skb) {
++        PRINTM(ERROR, "No free skb\n");
++        ret = -ENOMEM;
++        goto done;
++    }
++    CmdSize = sizeof(HostCmd_DS_GEN);
++    cmd = (HostCmd_DS_GEN *) (skb->data + INTF_HEADER_LEN);
++    cmd->Command = uap_cpu_to_le16(HOST_CMD_APCMD_BSS_STOP);
++    cmd->Size = uap_cpu_to_le16(CmdSize);
++    skb_put(skb, CmdSize + INTF_HEADER_LEN);
++    PRINTM(CMND, "APCMD_BSS_STOP\n");
++    if (UAP_STATUS_SUCCESS !=
++        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP_TIMEOUT)) {
++        PRINTM(ERROR, "Fail to process cmd BSS_STOP\n");
++        ret = -EFAULT;
++        goto done;
++    }
++  done:
++    LEAVE();
++    return ret;
++}
++
++/********************************************************
++              Global Functions
++********************************************************/
++/**
++ *  @brief This function send soft_reset command to firmware
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS on success, otherwise failure code
++ */
++int
++uap_soft_reset(uap_private * priv)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u32 CmdSize;
++    HostCmd_DS_GEN *cmd;
++    uap_adapter *Adapter = priv->adapter;
++    struct sk_buff *skb;
++    ENTER();
++    ret = uap_bss_stop(priv);
++    if (ret != UAP_STATUS_SUCCESS)
++        goto done;
++    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
++    if (!skb) {
++        PRINTM(ERROR, "No free skb\n");
++        ret = -ENOMEM;
++        goto done;
++    }
++    CmdSize = sizeof(HostCmd_DS_GEN);
++    cmd = (HostCmd_DS_GEN *) (skb->data + INTF_HEADER_LEN);
++    cmd->Command = uap_cpu_to_le16(HOST_CMD_APCMD_SOFT_RESET);
++    cmd->Size = uap_cpu_to_le16(CmdSize);
++    skb_put(skb, CmdSize + INTF_HEADER_LEN);
++    PRINTM(CMND, "APCMD_SOFT_RESET\n");
++    if (UAP_STATUS_SUCCESS !=
++        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORSEND)) {
++        PRINTM(ERROR, "Fail to process cmd SOFT_RESET\n");
++        ret = -EFAULT;
++        goto done;
++    }
++    Adapter->SurpriseRemoved = TRUE;
++    /* delay to allow hardware complete reset */
++    os_sched_timeout(5);
++    if (priv->MediaConnected == TRUE) {
++        os_stop_queue(priv);
++        os_carrier_off(priv);
++        priv->MediaConnected = FALSE;
++    }
++    Adapter->CmdSize = 0;
++    Adapter->CmdWaitQWoken = TRUE;
++    wake_up_interruptible(&Adapter->cmdwait_q);
++    skb_queue_purge(&priv->adapter->tx_queue);
++    skb_queue_purge(&priv->adapter->cmd_queue);
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function processes received packet and forwards it
++ *  to kernel/upper layer
++ *
++ *  @param priv    A pointer to uap_private
++ *  @param skb     A pointer to skb which includes the received packet
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++uap_process_rx_packet(uap_private * priv, struct sk_buff *skb)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    RxPD *pRxPD;
++    ENTER();
++    priv->adapter->ps_state = PS_STATE_AWAKE;
++    pRxPD = (RxPD *) skb->data;
++    endian_convert_RxPD(pRxPD);
++    DBG_HEXDUMP(DAT_D, "Rx", skb->data, MIN(skb->len, DATA_DUMP_LEN));
++    skb_pull(skb, pRxPD->RxPktOffset);
++    priv->stats.rx_packets++;
++    priv->stats.rx_bytes += skb->len;
++    os_upload_rx_packet(priv, skb);
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function opens the network device
++ *
++ *  @param dev     A pointer to net_device structure
++ *  @return        UAP_STATUS_SUCCESS
++ */
++static int
++uap_open(struct net_device *dev)
++{
++    uap_private *priv = (uap_private *) (uap_private *) netdev_priv(dev);
++    uap_adapter *Adapter = priv->adapter;
++    int i = 0;
++
++    ENTER();
++
++    /* On some systems the device open handler will be called before HW ready. */
++    /* Use the following flag check and wait function to work around the issue. */
++    while ((Adapter->HardwareStatus != HWReady) &&
++           (i < MAX_WAIT_DEVICE_READY_COUNT)) {
++        i++;
++        os_sched_timeout(100);
++    }
++    if (i >= MAX_WAIT_DEVICE_READY_COUNT) {
++        PRINTM(FATAL, "HW not ready, uap_open() return failure\n");
++        LEAVE();
++        return UAP_STATUS_FAILURE;
++    }
++
++    if (MODULE_GET == 0)
++        return UAP_STATUS_FAILURE;
++
++    priv->open = TRUE;
++    if (priv->MediaConnected == TRUE) {
++        os_carrier_on(priv);
++        os_start_queue(priv);
++    } else {
++        os_stop_queue(priv);
++        os_carrier_off(priv);
++    }
++    LEAVE();
++    return UAP_STATUS_SUCCESS;
++}
++
++/**
++ *  @brief This function closes the network device
++ *
++ *  @param dev     A pointer to net_device structure
++ *  @return        UAP_STATUS_SUCCESS
++ */
++static int
++uap_close(struct net_device *dev)
++{
++    uap_private *priv = (uap_private *) netdev_priv(dev);
++
++    ENTER();
++    skb_queue_purge(&priv->adapter->tx_queue);
++    os_stop_queue(priv);
++    os_carrier_off(priv);
++
++    MODULE_PUT;
++    priv->open = FALSE;
++    LEAVE();
++    return UAP_STATUS_SUCCESS;
++}
++
++/**
++ *  @brief This function returns the network statistics
++ *
++ *  @param dev     A pointer to uap_private structure
++ *  @return        A pointer to net_device_stats structure
++ */
++static struct net_device_stats *
++uap_get_stats(struct net_device *dev)
++{
++    uap_private *priv = (uap_private *) netdev_priv(dev);
++
++    return &priv->stats;
++}
++
++/**
++ *  @brief This function sets the MAC address to firmware.
++ *
++ *  @param dev     A pointer to uap_private structure
++ *  @param addr    MAC address to set
++ *  @return        UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++uap_set_mac_address(struct net_device *dev, void *addr)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    uap_private *priv = (uap_private *) netdev_priv(dev);
++    struct sockaddr *pHwAddr = (struct sockaddr *) addr;
++    u32 CmdSize;
++    HostCmd_DS_COMMAND *cmd;
++    MrvlIEtypes_MacAddr_t *pMacAddrTlv;
++    uap_adapter *Adapter = priv->adapter;
++    struct sk_buff *skb;
++
++    ENTER();
++
++    /* Dump MAC address */
++    DBG_HEXDUMP(CMD_D, "Original MAC addr", dev->dev_addr, ETH_ALEN);
++    DBG_HEXDUMP(CMD_D, "New MAC addr", pHwAddr->sa_data, ETH_ALEN);
++    if (priv->open && (priv->MediaConnected == TRUE)) {
++        os_carrier_on(priv);
++        os_start_queue(priv);
++    }
++    skb = dev_alloc_skb(MRVDRV_SIZE_OF_CMD_BUFFER);
++    if (!skb) {
++        PRINTM(ERROR, "No free skb\n");
++        LEAVE();
++        return -ENOMEM;
++    }
++    CmdSize =
++        S_DS_GEN + sizeof(HostCmd_SYS_CONFIG) + sizeof(MrvlIEtypes_MacAddr_t);
++    cmd = (HostCmd_DS_COMMAND *) (skb->data + INTF_HEADER_LEN);
++    cmd->Command = uap_cpu_to_le16(HOST_CMD_APCMD_SYS_CONFIGURE);
++    cmd->Size = uap_cpu_to_le16(CmdSize);
++    cmd->params.sys_config.Action = uap_cpu_to_le16(ACTION_SET);
++    pMacAddrTlv =
++        (MrvlIEtypes_MacAddr_t *) ((u8 *) cmd + S_DS_GEN +
++                                   sizeof(HostCmd_SYS_CONFIG));
++    pMacAddrTlv->Header.Type = uap_cpu_to_le16(MRVL_AP_MAC_ADDRESS_TLV_ID);
++    pMacAddrTlv->Header.Len = uap_cpu_to_le16(ETH_ALEN);
++    memcpy(pMacAddrTlv->ApMacAddr, pHwAddr->sa_data, ETH_ALEN);
++    skb_put(skb, CmdSize + INTF_HEADER_LEN);
++    PRINTM(CMND, "set_mac_address\n");
++    if (UAP_STATUS_SUCCESS !=
++        uap_process_cmd(priv, skb, HostCmd_OPTION_WAITFORRSP_TIMEOUT)) {
++        PRINTM(ERROR, "Fail to set mac address\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    if (!Adapter->CmdSize) {
++        PRINTM(ERROR, "Cmd Size is 0\n");
++        LEAVE();
++        return -EFAULT;
++    }
++    cmd = (HostCmd_DS_COMMAND *) Adapter->CmdBuf;
++    cmd->Result = uap_cpu_to_le16(cmd->Result);
++    if (cmd->Result != UAP_STATUS_SUCCESS) {
++        PRINTM(ERROR, "set mac addrress fail,cmd result=%x\n", cmd->Result);
++        ret = -EFAULT;
++    } else
++        memcpy(dev->dev_addr, pHwAddr->sa_data, ETH_ALEN);
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function handles the timeout of packet
++ *  transmission
++ *
++ *  @param dev     A pointer to net_device structure
++ *  @return        n/a
++ */
++static void
++uap_tx_timeout(struct net_device *dev)
++{
++    uap_private *priv = (uap_private *) netdev_priv(dev);
++
++    ENTER();
++
++    PRINTM(DATA, "Tx timeout\n");
++    UpdateTransStart(dev);
++    priv->num_tx_timeout++;
++    priv->adapter->IntCounter++;
++    wake_up_interruptible(&priv->MainThread.waitQ);
++
++    LEAVE();
++}
++
++/**
++ *  @brief This function handles packet transmission
++ *
++ *  @param skb     A pointer to sk_buff structure
++ *  @param dev     A pointer to net_device structure
++ *  @return        UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++uap_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
++{
++    uap_private *priv = (uap_private *) netdev_priv(dev);
++    int ret = UAP_STATUS_SUCCESS;
++
++    ENTER();
++    PRINTM(DATA, "Data <= kernel\n");
++    DBG_HEXDUMP(DAT_D, "Tx", skb->data, MIN(skb->len, DATA_DUMP_LEN));
++    /* skb sanity check */
++    if (!skb->len || (skb->len > MRVDRV_MAXIMUM_ETH_PACKET_SIZE)) {
++        PRINTM(ERROR, "Tx Error: Bad skb length %d : %d\n", skb->len,
++               MRVDRV_MAXIMUM_ETH_PACKET_SIZE);
++        priv->stats.tx_dropped++;
++        kfree(skb);
++        goto done;
++    }
++    skb_queue_tail(&priv->adapter->tx_queue, skb);
++    wake_up_interruptible(&priv->MainThread.waitQ);
++    if (skb_queue_len(&priv->adapter->tx_queue) > TX_HIGH_WATERMARK) {
++        UpdateTransStart(dev);
++        os_stop_queue(priv);
++    }
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief ioctl function - entry point
++ *
++ *  @param dev      A pointer to net_device structure
++ *  @param req      A pointer to ifreq structure
++ *  @param cmd      command
++ *  @return         UAP_STATUS_SUCCESS--success, otherwise fail
++ */
++static int
++uap_do_ioctl(struct net_device *dev, struct ifreq *req, int cmd)
++{
++    int ret = UAP_STATUS_SUCCESS;
++
++    ENTER();
++
++    PRINTM(CMND, "uap_do_ioctl: ioctl cmd = 0x%x\n", cmd);
++
++    switch (cmd) {
++    case UAPHOSTCMD:
++        ret = uap_hostcmd_ioctl(dev, req);
++        break;
++    case UAP_POWER_MODE:
++        ret = uap_power_mode_ioctl(dev, req);
++        break;
++    default:
++        ret = -EINVAL;
++        break;
++    }
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function handles events generated by firmware
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param payload A pointer to payload buffer
++ *  @param len           Length of the payload
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++uap_process_event(uap_private * priv, u8 * payload, uint len)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    uap_adapter *Adapter = priv->adapter;
++    struct sk_buff *skb = NULL;
++    struct nlmsghdr *nlh = NULL;
++    struct sock *sk = Adapter->nl_sk;
++    AP_Event *pEvent;
++
++    ENTER();
++    Adapter->ps_state = PS_STATE_AWAKE;
++    if (len > NL_MAX_PAYLOAD) {
++        PRINTM(ERROR, "event size is too big!!! len=%d\n", len);
++        ret = UAP_STATUS_FAILURE;
++        goto done;
++    }
++    pEvent = (AP_Event *) payload;
++    PRINTM(CMND, "Event: %d\n", pEvent->EventId);
++    switch (pEvent->EventId) {
++    case MICRO_AP_EV_ID_BSS_START:
++        memcpy(priv->uap_dev.netdev->dev_addr, pEvent->MacAddr, ETH_ALEN);
++        DBG_HEXDUMP(CMD_D, "BSS MAC addr", priv->uap_dev.netdev->dev_addr,
++                    ETH_ALEN);
++        break;
++    case MICRO_AP_EV_BSS_ACTIVE:
++        // carrier on
++        priv->MediaConnected = TRUE;
++        os_carrier_on(priv);
++        os_start_queue(priv);
++        break;
++    case MICRO_AP_EV_BSS_IDLE:
++        os_stop_queue(priv);
++        os_carrier_off(priv);
++        priv->MediaConnected = FALSE;
++        break;
++    case EVENT_PS_AWAKE:
++        PRINTM(CMND, "UAP: PS_AWAKE\n");
++        Adapter->ps_state = PS_STATE_AWAKE;
++        Adapter->WakeupTries = 0;
++        break;
++    case EVENT_PS_SLEEP:
++        PRINTM(CMND, "UAP: PS_SLEEP\n");
++        Adapter->ps_state = PS_STATE_PRE_SLEEP;
++        break;
++    default:
++        break;
++    }
++    if ((pEvent->EventId == EVENT_PS_AWAKE) ||
++        (pEvent->EventId == EVENT_PS_SLEEP))
++        goto done;
++    if (sk) {
++        /* Allocate skb */
++        if (!(skb = alloc_skb(NLMSG_SPACE(NL_MAX_PAYLOAD), GFP_ATOMIC))) {
++            PRINTM(ERROR, "Could not allocate skb for netlink.\n");
++            ret = UAP_STATUS_FAILURE;
++            goto done;
++        }
++        nlh = (struct nlmsghdr *) skb->data;
++        nlh->nlmsg_len = NLMSG_SPACE(len);
++
++        /* From kernel */
++        nlh->nlmsg_pid = 0;
++        nlh->nlmsg_flags = 0;
++
++        /* Data */
++        skb_put(skb, nlh->nlmsg_len);
++        memcpy(NLMSG_DATA(nlh), payload, len);
++
++        /* From Kernel */
++        NETLINK_CB(skb).portid = 0;
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
++        /* Multicast message */
++        NETLINK_CB(skb).dst_pid = 0;
++#endif
++
++        /* Multicast group number */
++        NETLINK_CB(skb).dst_group = NL_MULTICAST_GROUP;
++
++        /* Send message */
++        netlink_broadcast(sk, skb, 0, NL_MULTICAST_GROUP, GFP_KERNEL);
++
++        ret = UAP_STATUS_SUCCESS;
++    } else {
++        PRINTM(ERROR, "Could not send event through NETLINK. Link down.\n");
++        ret = UAP_STATUS_FAILURE;
++    }
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function handles the interrupt. it will change PS
++ *  state if applicable. it will wake up main_thread to handle
++ *  the interrupt event as well.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return        n/a
++ */
++void
++uap_interrupt(uap_private * priv)
++{
++    ENTER();
++    priv->adapter->IntCounter++;
++    priv->adapter->WakeupTries = 0;
++    PRINTM(INFO, "*\n");
++    wake_up_interruptible(&priv->MainThread.waitQ);
++
++    LEAVE();
++
++}
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)
++/** Network device handlers */
++static const struct net_device_ops uap_netdev_ops = {
++    .ndo_open = uap_open,
++    .ndo_start_xmit = uap_hard_start_xmit,
++    .ndo_stop = uap_close,
++    .ndo_do_ioctl = uap_do_ioctl,
++    .ndo_set_mac_address = uap_set_mac_address,
++    .ndo_tx_timeout = uap_tx_timeout,
++    .ndo_get_stats = uap_get_stats,
++};
++#endif
++
++/**
++ * @brief This function adds the card. it will probe the
++ * card, allocate the uap_priv and initialize the device.
++ *
++ *  @param card    A pointer to card
++ *  @return        A pointer to uap_private structure
++ */
++uap_private *
++uap_add_card(void *card)
++{
++    struct net_device *dev = NULL;
++    uap_private *priv = NULL;
++
++    ENTER();
++
++    if (OS_ACQ_SEMAPHORE_BLOCK(&AddRemoveCardSem))
++        goto exit_sem_err;
++
++    /* Allocate an Ethernet device */
++    if (!(dev = alloc_etherdev(sizeof(uap_private)))) {
++        PRINTM(FATAL, "Init ethernet device failed!\n");
++        goto error;
++    }
++    priv = (uap_private *) netdev_priv(dev);
++
++    /* Allocate name */
++    if (dev_alloc_name(dev, "uap%d") < 0) {
++        PRINTM(ERROR, "Could not allocate device name!\n");
++        goto error;
++    }
++
++    /* Allocate buffer for uap_adapter */
++    if (!(priv->adapter = kmalloc(sizeof(uap_adapter), GFP_KERNEL))) {
++        PRINTM(FATAL, "Allocate buffer for uap_adapter failed!\n");
++        goto error;
++    }
++    memset(priv->adapter, 0, sizeof(uap_adapter));
++
++    priv->uap_dev.netdev = dev;
++    priv->uap_dev.card = card;
++    priv->MediaConnected = FALSE;
++    uappriv = priv;
++    ((struct sdio_mmc_card *) card)->priv = priv;
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
++    SET_MODULE_OWNER(dev);
++#endif
++
++    /* Setup the OS Interface to our functions */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
++    dev->open = uap_open;
++    dev->stop = uap_close;
++    dev->hard_start_xmit = uap_hard_start_xmit;
++    dev->tx_timeout = uap_tx_timeout;
++    dev->get_stats = uap_get_stats;
++    dev->do_ioctl = uap_do_ioctl;
++    dev->set_mac_address = uap_set_mac_address;
++    dev->set_multicast_list = uap_set_multicast_list;
++#else
++    dev->netdev_ops = &uap_netdev_ops;
++#endif
++    dev->watchdog_timeo = MRVDRV_DEFAULT_WATCHDOG_TIMEOUT;
++    dev->hard_header_len += sizeof(TxPD) + INTF_HEADER_LEN;
++    dev->hard_header_len += HEADER_ALIGNMENT;
++#define NETIF_F_DYNALLOC 16
++    dev->features |= NETIF_F_DYNALLOC;
++    dev->flags |= IFF_BROADCAST | IFF_MULTICAST;
++
++    /* Init SW */
++    if (uap_init_sw(priv)) {
++        PRINTM(FATAL, "Software Init Failed\n");
++        goto error;
++    }
++
++    PRINTM(INFO, "Starting kthread...\n");
++    priv->MainThread.priv = priv;
++    spin_lock_init(&priv->driver_lock);
++    uap_create_thread(uap_service_main_thread, &priv->MainThread,
++                      "uap_main_service");
++    while (priv->MainThread.pid == 0) {
++        os_sched_timeout(2);
++    }
++
++    /* Register the device */
++    if (sbi_register_dev(priv) < 0) {
++        PRINTM(FATAL, "Failed to register uap device!\n");
++        goto err_registerdev;
++    }
++#ifdef FW_DNLD_NEEDED
++    SET_NETDEV_DEV(dev, priv->hotplug_device);
++#endif
++
++    /* Init FW and HW */
++    if (uap_init_fw(priv)) {
++        PRINTM(FATAL, "Firmware Init Failed\n");
++        goto err_init_fw;
++    }
++
++    priv->uap_dev.cmd_sent = FALSE;
++    priv->uap_dev.data_sent = FALSE;
++
++    /* Get mac address from firmware */
++    if (uap_get_mac_address(priv)) {
++        PRINTM(FATAL, "Fail to get mac address\n");
++        goto err_init_fw;
++    }
++    /* Register network device */
++    if (register_netdev(dev)) {
++        printk(KERN_ERR "Cannot register network device!\n");
++        goto err_init_fw;
++    }
++#ifdef CONFIG_PROC_FS
++    uap_proc_entry(priv, dev);
++    uap_debug_entry(priv, dev);
++#endif /* CPNFIG_PROC_FS */
++    OS_REL_SEMAPHORE(&AddRemoveCardSem);
++
++    LEAVE();
++    return priv;
++  err_init_fw:
++    sbi_unregister_dev(priv);
++  err_registerdev:
++    ((struct sdio_mmc_card *) card)->priv = NULL;
++    /* Stop the thread servicing the interrupts */
++    priv->adapter->SurpriseRemoved = TRUE;
++    wake_up_interruptible(&priv->MainThread.waitQ);
++    while (priv->MainThread.pid) {
++        os_sched_timeout(1);
++    }
++  error:
++    if (dev) {
++        if (dev->reg_state == NETREG_REGISTERED)
++            unregister_netdev(dev);
++        if (priv->adapter)
++            uap_free_adapter(priv);
++        free_netdev(dev);
++        uappriv = NULL;
++    }
++    OS_REL_SEMAPHORE(&AddRemoveCardSem);
++  exit_sem_err:
++    LEAVE();
++    return NULL;
++}
++
++/**
++ *  @brief This function removes the card.
++ *
++ *  @param card    A pointer to card
++ *  @return        UAP_STATUS_SUCCESS
++ */
++int
++uap_remove_card(void *card)
++{
++    uap_private *priv = uappriv;
++    uap_adapter *Adapter;
++    struct net_device *dev;
++
++    ENTER();
++
++    if (OS_ACQ_SEMAPHORE_BLOCK(&AddRemoveCardSem))
++        goto exit_sem_err;
++
++    if (!priv || !(Adapter = priv->adapter)) {
++        goto exit_remove;
++    }
++    Adapter->SurpriseRemoved = TRUE;
++    if (Adapter->cmd_pending == TRUE) {
++        /* Wake up cmd Q */
++        Adapter->CmdWaitQWoken = TRUE;
++        wake_up_interruptible(&Adapter->cmdwait_q);
++    }
++    dev = priv->uap_dev.netdev;
++    if (priv->MediaConnected == TRUE) {
++        os_stop_queue(priv);
++        os_carrier_off(priv);
++        priv->MediaConnected = FALSE;
++    }
++    Adapter->CmdSize = 0;
++    Adapter->CmdWaitQWoken = TRUE;
++    wake_up_interruptible(&Adapter->cmdwait_q);
++    skb_queue_purge(&priv->adapter->tx_queue);
++    skb_queue_purge(&priv->adapter->cmd_queue);
++
++    /* Disable interrupts on the card */
++    sbi_disable_host_int(priv);
++    PRINTM(INFO, "netdev_finish_unregister: %s%s.\n", dev->name,
++           (dev->features & NETIF_F_DYNALLOC) ? "" : ", old style");
++    unregister_netdev(dev);
++    PRINTM(INFO, "Unregister finish\n");
++    wake_up_interruptible(&priv->MainThread.waitQ);
++    while (priv->MainThread.pid) {
++        os_sched_timeout(1);
++    }
++
++    if ((Adapter->nl_sk) && ((Adapter->nl_sk)->sk_socket)) {
++        sock_release((Adapter->nl_sk)->sk_socket);
++        Adapter->nl_sk = NULL;
++    }
++#ifdef CONFIG_PROC_FS
++    uap_debug_remove(priv);
++    uap_proc_remove(priv);
++#endif
++    sbi_unregister_dev(priv);
++    PRINTM(INFO, "Free Adapter\n");
++    uap_free_adapter(priv);
++    priv->uap_dev.netdev = NULL;
++    free_netdev(dev);
++    uappriv = NULL;
++
++  exit_remove:
++    OS_REL_SEMAPHORE(&AddRemoveCardSem);
++  exit_sem_err:
++    LEAVE();
++    return UAP_STATUS_SUCCESS;
++}
++
++/**
++ *  @brief This function initializes module.
++ *
++ *  @return    UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int __init
++uap_init_module(void)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    ENTER();
++
++    OS_INIT_SEMAPHORE(&AddRemoveCardSem);
++    ret = sbi_register();
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function cleans module
++ *
++ *  @return        n/a
++ */
++static void __exit
++uap_cleanup_module(void)
++{
++    ENTER();
++
++    if (OS_ACQ_SEMAPHORE_BLOCK(&AddRemoveCardSem))
++        goto exit_sem_err;
++
++    if ((uappriv) && (uappriv->adapter)) {
++        uap_func_shutdown(uappriv);
++    }
++    OS_REL_SEMAPHORE(&AddRemoveCardSem);
++  exit_sem_err:
++    sbi_unregister();
++    LEAVE();
++}
++
++module_init(uap_init_module);
++module_exit(uap_cleanup_module);
++module_param(helper_name, charp, 0);
++MODULE_PARM_DESC(helper_name, "Helper name");
++module_param(fw_name, charp, 0);
++MODULE_PARM_DESC(fw_name, "Firmware name");
++
++MODULE_DESCRIPTION("M-UAP Driver");
++MODULE_AUTHOR("Marvell International Ltd.");
++MODULE_VERSION(DRIVER_VERSION);
++MODULE_LICENSE("GPL");
+diff --git a/drivers/net/wireless/libertas_uap/uap_proc.c b/drivers/net/wireless/libertas_uap/uap_proc.c
+new file mode 100644
+index 0000000..d673f56
+--- /dev/null
++++ b/drivers/net/wireless/libertas_uap/uap_proc.c
+@@ -0,0 +1,258 @@
++/** @file uap_proc.c
++  * @brief This file contains functions for proc file.
++  *
++  * Copyright (C) 2008-2009, Marvell International Ltd.
++  *
++  * This software file (the "File") is distributed by Marvell International
++  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
++  * (the "License").  You may use, redistribute and/or modify this File in
++  * accordance with the terms and conditions of the License, a copy of which
++  * is available along with the File in the gpl.txt file or by writing to
++  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++  * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
++  *
++  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
++  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
++  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
++  * this warranty disclaimer.
++  *
++  */
++#ifdef CONFIG_PROC_FS
++#include <linux/proc_fs.h>
++#include <linux/seq_file.h>
++#include "uap_headers.h"
++
++/** /proc directory root */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
++#define PROC_DIR NULL
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
++#define PROC_DIR &proc_root
++#else
++#define PROC_DIR proc_net
++#endif
++
++/********************************************************
++              Local Variables
++********************************************************/
++
++/********************************************************
++              Global Variables
++********************************************************/
++
++/********************************************************
++              Local Functions
++********************************************************/
++
++static int uap_info_proc_show(struct seq_file *s, void *data) {
++    int i;
++    struct net_device *netdev = (struct net_device*)s->private;
++    struct netdev_hw_addr *ha;
++    uap_private *priv = (uap_private *) netdev_priv(netdev);
++
++    seq_printf(s, "driver_name = " "\"uap\"\n");
++    seq_printf(s, "driver_version = %s-(FP%s)", DRIVER_VERSION, FPNUM);
++    seq_printf(s, "\nInterfaceName=\"%s\"\n", netdev->name);
++
++    seq_printf(s, "State=\"%s\"\n",
++                 ((priv->MediaConnected ==
++                   FALSE) ? "Disconnected" : "Connected"));
++    seq_printf(s, "MACAddress=\"%02x:%02x:%02x:%02x:%02x:%02x\"\n",
++                 netdev->dev_addr[0], netdev->dev_addr[1], netdev->dev_addr[2],
++                 netdev->dev_addr[3], netdev->dev_addr[4], netdev->dev_addr[5]);
++    i = 0;
++    netdev_for_each_mc_addr(ha, netdev) {
++        ++i;
++    }
++    seq_printf(s, "MCCount=\"%d\"\n", i);
++
++    /*
++     * Put out the multicast list
++     */
++    i = 0;
++    netdev_for_each_mc_addr(ha, netdev) {
++        seq_printf(s,
++                     "MCAddr[%d]=\"%02x:%02x:%02x:%02x:%02x:%02x\"\n",
++                     i++,
++                     ha->addr[0], ha->addr[1],
++                     ha->addr[2], ha->addr[3],
++                     ha->addr[4], ha->addr[5]);
++    }
++
++    seq_printf(s, "num_tx_bytes = %lu\n", priv->stats.tx_bytes);
++    seq_printf(s, "num_rx_bytes = %lu\n", priv->stats.rx_bytes);
++    seq_printf(s, "num_tx_pkts = %lu\n", priv->stats.tx_packets);
++    seq_printf(s, "num_rx_pkts = %lu\n", priv->stats.rx_packets);
++    seq_printf(s, "num_tx_pkts_dropped = %lu\n", priv->stats.tx_dropped);
++    seq_printf(s, "num_rx_pkts_dropped = %lu\n", priv->stats.rx_dropped);
++    seq_printf(s, "num_tx_pkts_err = %lu\n", priv->stats.tx_errors);
++    seq_printf(s, "num_rx_pkts_err = %lu\n", priv->stats.rx_errors);
++    seq_printf(s, "num_tx_timeout = %u\n", priv->num_tx_timeout);
++    seq_printf(s, "carrier %s\n",
++                 ((netif_carrier_ok(priv->uap_dev.netdev)) ? "on" : "off"));
++    seq_printf(s, "tx queue %s\n",
++                 ((netif_queue_stopped(priv->uap_dev.netdev)) ? "stopped" :
++                  "started"));
++
++    return 0;
++}
++
++static int uap_info_proc_open(struct inode *inode, struct file *file) {
++      return single_open(file, uap_info_proc_show, PDE_DATA(inode));
++}
++
++static int uap_hwstatus_proc_show(struct seq_file *s, void *data) {
++    struct net_device *netdev = (struct net_device*)s->private;
++    uap_private *priv = (uap_private *) netdev_priv(netdev);
++
++    MODULE_GET;
++    seq_printf(s, "%d\n", priv->adapter->HardwareStatus);
++    MODULE_PUT;
++
++    return 0;
++}
++
++static int uap_hwstatus_proc_open(struct inode *inode, struct file *file) {
++      return single_open(file, uap_hwstatus_proc_show, PDE_DATA(inode));
++}
++
++static ssize_t uap_hwstatus_proc_write(struct file *file, const char __user *buffer, size_t count, loff_t *data) {
++      struct net_device *netdev = (struct net_device *)PDE_DATA(file_inode(file));
++      uap_private *priv = (uap_private *) netdev_priv(netdev);
++
++      int hwstatus;
++      char value[10];
++
++      if (count > sizeof(value))
++              return count;
++
++      if (copy_from_user(&value, buffer, count))
++              return -EFAULT;
++
++      hwstatus = string_to_number(value);
++      switch (hwstatus) {
++      case HWReset:
++              PRINTM(MSG, "reset hw\n");
++              uap_soft_reset(priv);
++              priv->adapter->HardwareStatus = HWReset;
++              break;
++      default:
++              break;
++      }
++
++      MODULE_PUT;
++      return count;
++}
++
++static const struct file_operations uap_info_proc_fops = {
++      .owner   = THIS_MODULE,
++      .open    = uap_info_proc_open,
++      .read    = seq_read,
++      .llseek  = seq_lseek,
++      .release = single_release,
++};
++
++static const struct file_operations uap_hwstatus_proc_fops = {
++      .owner   = THIS_MODULE,
++      .open    = uap_hwstatus_proc_open,
++      .read    = seq_read,
++      .llseek  = seq_lseek,
++      .release = single_release,
++      .write   = uap_hwstatus_proc_write,
++};
++
++/********************************************************
++              Global Functions
++********************************************************/
++/**
++ *  @brief create uap proc file
++ *
++ *  @param priv          pointer uap_private
++ *  @param dev     pointer net_device
++ *  @return      N/A
++ */
++void
++uap_proc_entry(uap_private * priv, struct net_device *dev)
++{
++    PRINTM(INFO, "Creating Proc Interface\n");
++    /* Check if uap directory already exists */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
++    struct proc_dir_entry *r = PROC_DIR;
++
++    for (r = r->subdir; r; r = r->next) {
++        if (r->namelen && !strcmp("uap", r->name)) {
++            /* Directory exists */
++            PRINTM(WARN, "proc directory already exists!\n");
++            priv->proc_uap = r;
++            break;
++        }
++    }
++#endif
++    if (!priv->proc_uap) {
++        priv->proc_uap = proc_mkdir("uap", PROC_DIR);
++        if (!priv->proc_uap)
++            return;
++    }
++    priv->proc_entry = proc_mkdir(dev->name, priv->proc_uap);
++
++    if (priv->proc_entry) {
++      proc_create_data("info", 0644, priv->proc_entry, &uap_info_proc_fops, dev);
++      proc_create_data("hwinfo", 0644, priv->proc_entry, &uap_hwstatus_proc_fops, dev);
++    }
++}
++
++/**
++ *  @brief remove proc file
++ *
++ *  @param priv          pointer uap_private
++ *  @return      N/A
++ */
++void
++uap_proc_remove(uap_private * priv)
++{
++    if (priv->proc_uap) {
++        if (priv->proc_entry) {
++            remove_proc_entry("info", priv->proc_entry);
++            remove_proc_entry("hwstatus", priv->proc_entry);
++        }
++        remove_proc_entry(priv->uap_dev.netdev->name, priv->proc_uap);
++    }
++}
++
++/**
++ *  @brief convert string to number
++ *
++ *  @param s     pointer to numbered string
++ *  @return      converted number from string s
++ */
++int
++string_to_number(char *s)
++{
++    int r = 0;
++    int base = 0;
++    int pn = 1;
++
++    if (strncmp(s, "-", 1) == 0) {
++        pn = -1;
++        s++;
++    }
++    if ((strncmp(s, "0x", 2) == 0) || (strncmp(s, "0X", 2) == 0)) {
++        base = 16;
++        s += 2;
++    } else
++        base = 10;
++
++    for (s = s; *s != 0; s++) {
++        if ((*s >= '0') && (*s <= '9'))
++            r = (r * base) + (*s - '0');
++        else if ((*s >= 'A') && (*s <= 'F'))
++            r = (r * base) + (*s - 'A' + 10);
++        else if ((*s >= 'a') && (*s <= 'f'))
++            r = (r * base) + (*s - 'a' + 10);
++        else
++            break;
++    }
++
++    return (r * pn);
++}
++
++#endif
+diff --git a/drivers/net/wireless/libertas_uap/uap_sdio_mmc.c b/drivers/net/wireless/libertas_uap/uap_sdio_mmc.c
+new file mode 100644
+index 0000000..86f55b5
+--- /dev/null
++++ b/drivers/net/wireless/libertas_uap/uap_sdio_mmc.c
+@@ -0,0 +1,1428 @@
++/** @file uap_sdio_mmc.c
++ *  @brief This file contains SDIO IF (interface) module
++ *  related functions.
++ *
++ * Copyright (C) 2007-2009, Marvell International Ltd.
++ *
++ * This software file (the "File") is distributed by Marvell International
++ * Ltd. under the terms of the GNU General Public License Version 2, June 1991
++ * (the "License").  You may use, redistribute and/or modify this File in
++ * accordance with the terms and conditions of the License, a copy of which
++ * is available along with the File in the gpl.txt file or by writing to
++ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
++ *
++ * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
++ * this warranty disclaimer.
++ *
++ */
++/****************************************************
++Change log:
++****************************************************/
++
++#include      "uap_sdio_mmc.h"
++
++#include <linux/firmware.h>
++
++/** define SDIO block size */
++/* We support up to 480-byte block size due to FW buffer limitation. */
++#define SD_BLOCK_SIZE         256
++
++/** define allocated buffer size */
++#define ALLOC_BUF_SIZE                (((MAX(MRVDRV_ETH_RX_PACKET_BUFFER_SIZE, \
++                                      MRVDRV_SIZE_OF_CMD_BUFFER) + INTF_HEADER_LEN \
++                                      + SD_BLOCK_SIZE - 1) / SD_BLOCK_SIZE) * SD_BLOCK_SIZE)
++
++/** Max retry number of CMD53 write */
++#define MAX_WRITE_IOMEM_RETRY 2
++
++/********************************************************
++              Local Variables
++********************************************************/
++
++/** SDIO Rx unit */
++static u8 sdio_rx_unit = 0;
++
++/**Interrupt status */
++static u8 sd_ireg = 0;
++/********************************************************
++              Global Variables
++********************************************************/
++extern u8 *helper_name;
++extern u8 *fw_name;
++/** Default helper name */
++#define DEFAULT_HELPER_NAME "mrvl/helper_sd.bin"
++/** Default firmware name */
++#define DEFAULT_FW_NAME "mrvl/sd8688_ap.bin"
++
++/********************************************************
++              Local Functions
++********************************************************/
++/**
++ *  @brief This function reads the IO register.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param reg           register to be read
++ *  @param dat           A pointer to variable that keeps returned value
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++sbi_read_ioreg(uap_private * priv, u32 reg, u8 * dat)
++{
++    struct sdio_mmc_card *card;
++    int ret = UAP_STATUS_FAILURE;
++
++    ENTER();
++
++    card = priv->uap_dev.card;
++    if (!card || !card->func) {
++        PRINTM(ERROR, "sbi_read_ioreg(): card or function is NULL!\n");
++        goto done;
++    }
++
++    *dat = sdio_readb(card->func, reg, &ret);
++    if (ret) {
++        PRINTM(ERROR, "sbi_read_ioreg(): sdio_readb failed! ret=%d\n", ret);
++        goto done;
++    }
++
++    PRINTM(INFO, "sbi_read_ioreg() priv=%p func=%d reg=%#x dat=%#x\n", priv,
++           card->func->num, reg, *dat);
++
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function writes the IO register.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param reg           register to be written
++ *  @param dat           the value to be written
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++sbi_write_ioreg(uap_private * priv, u32 reg, u8 dat)
++{
++    struct sdio_mmc_card *card;
++    int ret = UAP_STATUS_FAILURE;
++
++    ENTER();
++
++    card = priv->uap_dev.card;
++    if (!card || !card->func) {
++        PRINTM(ERROR, "sbi_write_ioreg(): card or function is NULL!\n");
++        goto done;
++    }
++
++    PRINTM(INFO, "sbi_write_ioreg() priv=%p func=%d reg=%#x dat=%#x\n", priv,
++           card->func->num, reg, dat);
++
++    sdio_writeb(card->func, dat, reg, &ret);
++    if (ret) {
++        PRINTM(ERROR, "sbi_write_ioreg(): sdio_readb failed! ret=%d\n", ret);
++        goto done;
++    }
++
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function get rx_unit value
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++sd_get_rx_unit(uap_private * priv)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u8 reg;
++
++    ENTER();
++
++    ret = sbi_read_ioreg(priv, CARD_RX_UNIT_REG, &reg);
++    if (ret == UAP_STATUS_SUCCESS)
++        sdio_rx_unit = reg;
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function reads rx length
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param dat           A pointer to keep returned data
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++sd_read_rx_len(uap_private * priv, u16 * dat)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u8 reg;
++
++    ENTER();
++
++    ret = sbi_read_ioreg(priv, CARD_RX_LEN_REG, &reg);
++    if (ret == UAP_STATUS_SUCCESS)
++        *dat = (u16) reg << sdio_rx_unit;
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function reads fw status registers
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param dat           A pointer to keep returned data
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++sd_read_firmware_status(uap_private * priv, u16 * dat)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u8 fws0;
++    u8 fws1;
++
++    ENTER();
++
++    ret = sbi_read_ioreg(priv, CARD_FW_STATUS0_REG, &fws0);
++    if (ret < 0) {
++        LEAVE();
++        return UAP_STATUS_FAILURE;
++    }
++
++    ret = sbi_read_ioreg(priv, CARD_FW_STATUS1_REG, &fws1);
++    if (ret < 0) {
++        LEAVE();
++        return UAP_STATUS_FAILURE;
++    }
++
++    *dat = (((u16) fws1) << 8) | fws0;
++
++    LEAVE();
++    return UAP_STATUS_SUCCESS;
++}
++
++/**
++ *  @brief This function polls the card status register.
++ *
++ *  @param priv       A pointer to uap_private structure
++ *  @param bits       the bit mask
++ *  @return           UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++mv_sdio_poll_card_status(uap_private * priv, u8 bits)
++{
++    int tries;
++    u8 cs;
++
++    ENTER();
++
++    for (tries = 0; tries < MAX_POLL_TRIES; tries++) {
++        if (sbi_read_ioreg(priv, CARD_STATUS_REG, &cs) < 0)
++            break;
++        else if ((cs & bits) == bits) {
++            LEAVE();
++            return UAP_STATUS_SUCCESS;
++        }
++        udelay(10);
++    }
++
++    PRINTM(WARN, "mv_sdio_poll_card_status failed, tries = %d\n", tries);
++
++    LEAVE();
++    return UAP_STATUS_FAILURE;
++}
++
++/**
++ *  @brief This function set the sdio bus width.
++ *
++ *  @param priv       A pointer to uap_private structure
++ *  @param mode       1--1 bit mode, 4--4 bit mode
++ *  @return           UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++#if 0
++static int
++sdio_set_bus_width(uap_private * priv, u8 mode)
++{
++    ENTER();
++    LEAVE();
++    return UAP_STATUS_SUCCESS;
++}
++#endif
++
++/**
++ *  @brief This function reads data from the card.
++ *
++ *  @param priv       A pointer to uap_private structure
++ *  @return           UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++sd_card_to_host(uap_private * priv)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u16 buf_len = 0;
++    int buf_block_len;
++    int blksz;
++    struct sk_buff *skb = NULL;
++    u16 type;
++    u8 *payload = NULL;
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++
++    ENTER();
++
++    if (!card || !card->func) {
++        PRINTM(ERROR, "card or function is NULL!\n");
++        ret = UAP_STATUS_FAILURE;
++        goto exit;
++    }
++
++    /* Read the length of data to be transferred */
++    ret = sd_read_rx_len(priv, &buf_len);
++    if (ret < 0) {
++        PRINTM(ERROR, "card_to_host, read scratch reg failed\n");
++        ret = UAP_STATUS_FAILURE;
++        goto exit;
++    }
++
++    /* Allocate buffer */
++    blksz = SD_BLOCK_SIZE;
++    buf_block_len = (buf_len + blksz - 1) / blksz;
++    if (buf_len <= INTF_HEADER_LEN || (buf_block_len * blksz) > ALLOC_BUF_SIZE) {
++        PRINTM(ERROR, "card_to_host, invalid packet length: %d\n", buf_len);
++        ret = UAP_STATUS_FAILURE;
++        goto exit;
++    }
++#ifdef PXA3XX_DMA_ALIGN
++    skb = dev_alloc_skb(buf_block_len * blksz + PXA3XX_DMA_ALIGNMENT);
++#else
++    skb = dev_alloc_skb(buf_block_len * blksz);
++#endif
++    if (skb == NULL) {
++        PRINTM(WARN, "No free skb\n");
++        goto exit;
++    }
++#ifdef PXA3XX_DMA_ALIGN
++    if ((u32) skb->data & (PXA3XX_DMA_ALIGNMENT - 1)) {
++        skb_put(skb, (u32) skb->data & (PXA3XX_DMA_ALIGNMENT - 1));
++        skb_pull(skb, (u32) skb->data & (PXA3XX_DMA_ALIGNMENT - 1));
++    }
++#endif /* PXA3XX_DMA_ALIGN */
++
++    payload = skb->tail;
++    ret = sdio_readsb(card->func, payload, priv->uap_dev.ioport,
++                      buf_block_len * blksz);
++    if (ret < 0) {
++        PRINTM(ERROR, "card_to_host, read iomem failed: %d\n", ret);
++        ret = UAP_STATUS_FAILURE;
++        goto exit;
++    }
++    HEXDUMP("SDIO Blk Rd", payload, blksz * buf_block_len);
++    /*
++     * This is SDIO specific header
++     *  u16 length,
++     *  u16 type (MV_TYPE_DAT = 0, MV_TYPE_CMD = 1, MV_TYPE_EVENT = 3)
++     */
++    buf_len = uap_le16_to_cpu(*(u16 *) & payload[0]);
++    type = uap_le16_to_cpu(*(u16 *) & payload[2]);
++    switch (type) {
++    case MV_TYPE_EVENT:
++        skb_put(skb, buf_len);
++        skb_pull(skb, INTF_HEADER_LEN);
++        uap_process_event(priv, skb->data, skb->len);
++        kfree_skb(skb);
++        skb = NULL;
++        break;
++    case MV_TYPE_CMD:
++        skb_put(skb, buf_len);
++        skb_pull(skb, INTF_HEADER_LEN);
++        priv->adapter->cmd_pending = FALSE;
++        if (priv->adapter->cmd_wait_option ==
++            HostCmd_OPTION_WAITFORRSP_SLEEPCONFIRM) {
++            priv->adapter->cmd_wait_option = FALSE;
++            uap_process_sleep_confirm_resp(priv, skb->data, skb->len);
++        } else if (priv->adapter->cmd_wait_option) {
++            memcpy(priv->adapter->CmdBuf, skb->data, skb->len);
++            priv->adapter->CmdSize = skb->len;
++            priv->adapter->cmd_wait_option = FALSE;
++            priv->adapter->CmdWaitQWoken = TRUE;
++            wake_up_interruptible(&priv->adapter->cmdwait_q);
++        }
++        kfree_skb(skb);
++        skb = NULL;
++        break;
++    case MV_TYPE_DAT:
++        skb_put(skb, buf_len);
++        skb_pull(skb, INTF_HEADER_LEN);
++        uap_process_rx_packet(priv, skb);
++        break;
++    default:
++        priv->stats.rx_errors++;
++        priv->stats.rx_dropped++;
++        /* Driver specified event and command resp should be handle here */
++        PRINTM(INFO, "Unknown PKT type:%d\n", type);
++        kfree_skb(skb);
++        skb = NULL;
++        break;
++    }
++  exit:
++    if (ret) {
++        if (skb)
++            kfree_skb(skb);
++    }
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function enables the host interrupts mask
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param mask          the interrupt mask
++ *  @return      UAP_STATUS_SUCCESS
++ */
++static int
++enable_host_int_mask(uap_private * priv, u8 mask)
++{
++    int ret = UAP_STATUS_SUCCESS;
++
++    ENTER();
++
++    /* Simply write the mask to the register */
++    ret = sbi_write_ioreg(priv, HOST_INT_MASK_REG, mask);
++
++    if (ret) {
++        PRINTM(WARN, "Unable to enable the host interrupt!\n");
++        ret = UAP_STATUS_FAILURE;
++    }
++
++    LEAVE();
++    return ret;
++}
++
++/**  @brief This function disables the host interrupts mask.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param mask          the interrupt mask
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++disable_host_int_mask(uap_private * priv, u8 mask)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u8 host_int_mask;
++
++    ENTER();
++
++    /* Read back the host_int_mask register */
++    ret = sbi_read_ioreg(priv, HOST_INT_MASK_REG, &host_int_mask);
++    if (ret) {
++        ret = UAP_STATUS_FAILURE;
++        goto done;
++    }
++
++    /* Update with the mask and write back to the register */
++    host_int_mask &= ~mask;
++    ret = sbi_write_ioreg(priv, HOST_INT_MASK_REG, host_int_mask);
++    if (ret < 0) {
++        PRINTM(WARN, "Unable to diable the host interrupt!\n");
++        ret = UAP_STATUS_FAILURE;
++        goto done;
++    }
++
++  done:
++    LEAVE();
++    return ret;
++}
++
++/********************************************************
++              Global Functions
++********************************************************/
++
++/**
++ *  @brief This function handles the interrupt.
++ *
++ *  @param func          A pointer to sdio_func structure.
++ *  @return      n/a
++ */
++static void
++sbi_interrupt(struct sdio_func *func)
++{
++    struct sdio_mmc_card *card;
++    uap_private *priv;
++    u8 ireg = 0;
++    int ret = UAP_STATUS_SUCCESS;
++
++    ENTER();
++
++    card = sdio_get_drvdata(func);
++    if (!card || !card->priv) {
++        PRINTM(MSG, "%s: sbi_interrupt(%p) card or priv is NULL, card=%p\n",
++               __FUNCTION__, func, card);
++        LEAVE();
++        return;
++    }
++    priv = card->priv;
++#ifdef FW_WAKEUP_TIME
++    if ((priv->adapter->wt_pwrup_sending != 0L) &&
++        (priv->adapter->wt_int == 0L))
++        priv->adapter->wt_int = get_utimeofday();
++#endif
++
++    ireg = sdio_readb(card->func, HOST_INTSTATUS_REG, &ret);
++    if (ret) {
++        PRINTM(WARN, "sdio_read_ioreg: read int status register failed\n");
++        goto done;
++    }
++    if (ireg != 0) {
++        /*
++         * DN_LD_HOST_INT_STATUS and/or UP_LD_HOST_INT_STATUS
++         * Clear the interrupt status register and re-enable the interrupt
++         */
++        PRINTM(INFO, "sdio_ireg = 0x%x\n", ireg);
++        sdio_writeb(card->func,
++                    ~(ireg) & (DN_LD_HOST_INT_STATUS | UP_LD_HOST_INT_STATUS),
++                    HOST_INTSTATUS_REG, &ret);
++        if (ret) {
++            PRINTM(WARN,
++                   "sdio_write_ioreg: clear int status register failed\n");
++            goto done;
++        }
++    }
++    OS_INT_DISABLE;
++    sd_ireg |= ireg;
++    OS_INT_RESTORE;
++
++    uap_interrupt(priv);
++  done:
++    LEAVE();
++}
++
++/**
++ *  @brief This function probe the card
++ *
++ *  @param func    A pointer to sdio_func structure
++ *  @param id    A pointer to structure sd_device_id
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++static int
++uap_probe(struct sdio_func *func, const struct sdio_device_id *id)
++{
++    int ret = UAP_STATUS_FAILURE;
++    struct sdio_mmc_card *card = NULL;
++
++    ENTER();
++
++    PRINTM(MSG, "%s: vendor=0x%4.04X device=0x%4.04X class=%d function=%d\n",
++           __FUNCTION__, func->vendor, func->device, func->class, func->num);
++
++    card = kzalloc(sizeof(struct sdio_mmc_card), GFP_KERNEL);
++    if (!card) {
++        ret = -ENOMEM;
++        goto done;
++    }
++
++    card->func = func;
++
++    if (!uap_add_card(card)) {
++        PRINTM(ERROR, "%s: uap_add_callback failed\n", __FUNCTION__);
++        kfree(card);
++        ret = UAP_STATUS_FAILURE;
++        goto done;
++    }
++
++    ret = UAP_STATUS_SUCCESS;
++
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function removes the card
++ *
++ *  @param func    A pointer to sdio_func structure
++ *  @return        N/A
++ */
++static void
++uap_remove(struct sdio_func *func)
++{
++    struct sdio_mmc_card *card;
++
++    ENTER();
++
++    if (func) {
++        card = sdio_get_drvdata(func);
++        if (card) {
++            uap_remove_card(card);
++            kfree(card);
++        }
++    }
++
++    LEAVE();
++}
++
++#ifdef CONFIG_PM
++/**
++ *  @brief This function handles client driver suspend
++ *
++ *  @param func    A pointer to sdio_func structure
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++uap_suspend(struct sdio_func *func)
++{
++    ENTER();
++    LEAVE();
++    return 0;
++}
++
++/**
++ *  @brief This function handles client driver resume
++ *
++ *  @param func    A pointer to sdio_func structure
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++uap_resume(struct sdio_func *func)
++{
++    ENTER();
++    LEAVE();
++    return 0;
++}
++#endif
++
++/** Device ID for SD8688 */
++#define  SD_DEVICE_ID_8688_UAP 0x9104
++/** UAP IDs */
++static const struct sdio_device_id uap_ids[] = {
++    {SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, SD_DEVICE_ID_8688_UAP)},
++    {},
++};
++
++MODULE_DEVICE_TABLE(sdio, uap_ids);
++
++static struct sdio_driver uap_sdio = {
++    .name = "uap_sdio",
++    .id_table = uap_ids,
++    .probe = uap_probe,
++    .remove = uap_remove,
++#ifdef CONFIG_PM
++/*    .suspend        = uap_suspend, */
++/*    .resume = uap_resume, */
++#endif
++
++};
++
++/**
++ *  @brief This function registers the IF module in bus driver.
++ *
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int __init
++sbi_register()
++{
++    int ret = UAP_STATUS_SUCCESS;
++
++    ENTER();
++
++    /* SDIO Driver Registration */
++    if (sdio_register_driver(&uap_sdio) != 0) {
++        PRINTM(FATAL, "SDIO Driver Registration Failed \n");
++        ret = UAP_STATUS_FAILURE;
++    }
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function de-registers the IF module in bus driver.
++ *
++ *  @return      n/a
++ */
++void __exit
++sbi_unregister(void)
++{
++    ENTER();
++
++    /* SDIO Driver Unregistration */
++    sdio_unregister_driver(&uap_sdio);
++
++    LEAVE();
++}
++
++/**
++ *  @brief This function checks the interrupt status and handle it accordingly.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param ireg    A pointer to variable that keeps returned value
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++sbi_get_int_status(uap_private * priv, u8 * ireg)
++{
++    int ret = UAP_STATUS_SUCCESS;
++    u8 sdio_ireg = 0;
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++
++    ENTER();
++
++    *ireg = 0;
++    OS_INT_DISABLE;
++    sdio_ireg = sd_ireg;
++    sd_ireg = 0;
++    OS_INT_RESTORE;
++
++    sdio_claim_host(card->func);
++
++    if (sdio_ireg & DN_LD_HOST_INT_STATUS) {    /* tx_done INT */
++        if (!priv->uap_dev.cmd_sent) {  /* tx_done already received */
++            PRINTM(INFO,
++                   "warning: tx_done already received: tx_dnld_rdy=0x%x int status=0x%x\n",
++                   priv->uap_dev.cmd_sent, sdio_ireg);
++        } else {
++            priv->uap_dev.cmd_sent = FALSE;
++            priv->uap_dev.data_sent = FALSE;
++            if ( (priv->uap_dev.netdev->reg_state == NETREG_REGISTERED) && (skb_queue_len(&priv->adapter->tx_queue) < TX_LOW_WATERMARK)) {
++                os_start_queue(priv);
++          }
++        }
++    }
++    if (sdio_ireg & UP_LD_HOST_INT_STATUS) {
++        sd_card_to_host(priv);
++    }
++
++    *ireg = sdio_ireg;
++    ret = UAP_STATUS_SUCCESS;
++    sdio_release_host(card->func);
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function disables the host interrupts.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++sbi_disable_host_int(uap_private * priv)
++{
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++    int ret;
++
++    ENTER();
++
++    sdio_claim_host(card->func);
++    ret = disable_host_int_mask(priv, HIM_DISABLE);
++    sdio_release_host(card->func);
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function enables the host interrupts.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS
++ */
++int
++sbi_enable_host_int(uap_private * priv)
++{
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++    int ret;
++
++    ENTER();
++
++    sdio_claim_host(card->func);
++    ret = enable_host_int_mask(priv, HIM_ENABLE);
++    sdio_release_host(card->func);
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function de-registers the device.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS
++ */
++int
++sbi_unregister_dev(uap_private * priv)
++{
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++
++    ENTER();
++
++    if (!card || !card->func) {
++        PRINTM(ERROR, "Error: card or function is NULL!\n");
++        goto done;
++    }
++
++    sdio_claim_host(card->func);
++    sdio_release_irq(card->func);
++    sdio_disable_func(card->func);
++    sdio_release_host(card->func);
++
++    sdio_set_drvdata(card->func, NULL);
++
++  done:
++    LEAVE();
++    return UAP_STATUS_SUCCESS;
++}
++
++/**
++ *  @brief This function registers the device.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++sbi_register_dev(uap_private * priv)
++{
++    int ret = UAP_STATUS_FAILURE;
++    u8 reg;
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++    struct sdio_func *func;
++
++    ENTER();
++
++    if (!card || !card->func) {
++        PRINTM(ERROR, "Error: card or function is NULL!\n");
++        goto done;
++    }
++
++    func = card->func;
++
++    /* Initialize the private structure */
++    priv->uap_dev.ioport = 0;
++
++    sdio_claim_host(func);
++
++    ret = sdio_enable_func(func);
++    if (ret) {
++        PRINTM(FATAL, "sdio_enable_func() failed: ret=%d\n", ret);
++        goto release_host;
++    }
++
++    ret = sdio_claim_irq(func, sbi_interrupt);
++    if (ret) {
++        PRINTM(FATAL, "sdio_claim_irq failed: ret=%d\n", ret);
++        goto disable_func;
++    }
++
++    /* Read the IO port */
++    ret = sbi_read_ioreg(priv, IO_PORT_0_REG, &reg);
++    if (ret)
++        goto release_irq;
++    else
++        priv->uap_dev.ioport |= reg;
++
++    ret = sbi_read_ioreg(priv, IO_PORT_1_REG, &reg);
++    if (ret)
++        goto release_irq;
++    else
++        priv->uap_dev.ioport |= (reg << 8);
++
++    ret = sbi_read_ioreg(priv, IO_PORT_2_REG, &reg);
++    if (ret)
++        goto release_irq;
++    else
++        priv->uap_dev.ioport |= (reg << 16);
++
++    PRINTM(INFO, "SDIO FUNC #%d IO port: 0x%x\n", func->num,
++           priv->uap_dev.ioport);
++
++    ret = sdio_set_block_size(card->func, SD_BLOCK_SIZE);
++    if (ret) {
++        PRINTM(ERROR, "%s: cannot set SDIO block size\n", __FUNCTION__);
++        ret = UAP_STATUS_FAILURE;
++        goto release_irq;
++    }
++    priv->hotplug_device = &func->dev;
++
++    if (helper_name == NULL) {
++        helper_name = DEFAULT_HELPER_NAME;
++    }
++    if (fw_name == NULL) {
++        fw_name = DEFAULT_FW_NAME;
++    }
++    sdio_release_host(func);
++
++    sdio_set_drvdata(func, card);
++
++    ret = UAP_STATUS_SUCCESS;
++    goto done;
++
++  release_irq:
++    sdio_release_irq(func);
++  disable_func:
++    sdio_disable_func(func);
++  release_host:
++    sdio_release_host(func);
++
++  done:
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function sends data to the card.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param payload A pointer to the data/cmd buffer
++ *  @param nb    the length of data/cmd
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++sbi_host_to_card(uap_private * priv, u8 * payload, u16 nb)
++{
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++    int ret = UAP_STATUS_SUCCESS;
++    int buf_block_len;
++    int blksz;
++    int i = 0;
++    u8 *buf = NULL;
++#ifdef PXA3XX_DMA_ALIGN
++    void *tmpbuf = NULL;
++    int tmpbufsz;
++#endif
++
++    ENTER();
++
++    if (!card || !card->func) {
++        PRINTM(ERROR, "card or function is NULL!\n");
++        LEAVE();
++        return UAP_STATUS_FAILURE;
++    }
++    buf = payload;
++#ifdef PXA3XX_DMA_ALIGN
++    if ((u32) payload & (PXA3XX_DMA_ALIGNMENT - 1)) {
++        tmpbufsz = ALIGN_SZ(nb, PXA3XX_DMA_ALIGNMENT);
++        tmpbuf = kmalloc(tmpbufsz, GFP_KERNEL);
++        memset(tmpbuf, 0, tmpbufsz);
++        /* Ensure 8-byte aligned CMD buffer */
++        buf = (u8 *) ALIGN_ADDR(tmpbuf, PXA3XX_DMA_ALIGNMENT);
++        memcpy(buf, payload, nb);
++    }
++#endif
++    /* Allocate buffer and copy payload */
++    blksz = SD_BLOCK_SIZE;
++    buf_block_len = (nb + blksz - 1) / blksz;
++    sdio_claim_host(card->func);
++#define MAX_WRITE_IOMEM_RETRY 2
++    priv->uap_dev.cmd_sent = TRUE;
++    priv->uap_dev.data_sent = TRUE;
++    do {
++        /* Transfer data to card */
++        ret = sdio_writesb(card->func, priv->uap_dev.ioport, buf,
++                           buf_block_len * blksz);
++        if (ret < 0) {
++            i++;
++            PRINTM(ERROR, "host_to_card, write iomem (%d) failed: %d\n", i,
++                   ret);
++            ret = UAP_STATUS_FAILURE;
++            if (i > MAX_WRITE_IOMEM_RETRY)
++                goto exit;
++        } else {
++            HEXDUMP("SDIO Blk Wr", payload, nb);
++        }
++    } while (ret == UAP_STATUS_FAILURE);
++  exit:
++    sdio_release_host(card->func);
++#ifdef PXA3XX_DMA_ALIGN
++    if (tmpbuf)
++        kfree(tmpbuf);
++#endif
++    if (ret == UAP_STATUS_FAILURE) {
++        priv->uap_dev.cmd_sent = FALSE;
++        priv->uap_dev.data_sent = FALSE;
++    }
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function reads CIS information.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param cisinfo A pointer to CIS information output buffer
++ *  @param cislen  A pointer to length of CIS info output buffer
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++#if 0
++static int
++sbi_get_cis_info(uap_private * priv, void *cisinfo, int *cislen)
++{
++#define CIS_PTR (0x8000)
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++    unsigned int i, cis_ptr = CIS_PTR;
++    int ret = UAP_STATUS_FAILURE;
++
++    ENTER();
++
++    if (!card || !card->func) {
++        PRINTM(ERROR, "sbi_get_cis_info(): card or function is NULL!\n");
++        goto exit;
++    }
++#define MAX_SDIO_CIS_INFO_LEN (256)
++    if (!cisinfo || (*cislen < MAX_SDIO_CIS_INFO_LEN)) {
++        PRINTM(WARN, "ERROR! get_cis_info: insufficient buffer passed\n");
++        goto exit;
++    }
++
++    *cislen = MAX_SDIO_CIS_INFO_LEN;
++
++    sdio_claim_host(card->func);
++
++    PRINTM(INFO, "cis_ptr=%#x\n", cis_ptr);
++
++    /* Read the Tuple Data */
++    for (i = 0; i < *cislen; i++) {
++        ((unsigned char *) cisinfo)[i] =
++            sdio_readb(card->func, cis_ptr + i, &ret);
++        if (ret) {
++            PRINTM(WARN, "get_cis_info error: ret=%d\n", ret);
++            ret = UAP_STATUS_FAILURE;
++            goto done;
++        }
++        PRINTM(INFO, "cisinfo[%d]=%#x\n", i, ((unsigned char *) cisinfo)[i]);
++    }
++
++  done:
++    sdio_release_host(card->func);
++  exit:
++    LEAVE();
++    return ret;
++}
++#endif
++/**
++ *  @brief This function downloads helper image to the card.
++ *
++ *  @param priv       A pointer to uap_private structure
++ *  @return           UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++sbi_prog_helper(uap_private * priv)
++{
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++    u8 *helper = NULL;
++    int helperlen;
++    int ret = UAP_STATUS_SUCCESS;
++    void *tmphlprbuf = NULL;
++    int tmphlprbufsz;
++    u8 *hlprbuf;
++    int hlprblknow;
++    u32 tx_len;
++#ifdef FW_DOWNLOAD_SPEED
++    u32 tv1, tv2;
++#endif
++
++    ENTER();
++
++    if (!card || !card->func) {
++        PRINTM(ERROR, "sbi_prog_helper(): card or function is NULL!\n");
++        goto done;
++    }
++
++    if (priv->fw_helper) {
++        helper = (u8 *) priv->fw_helper->data;
++        helperlen = priv->fw_helper->size;
++    } else {
++        PRINTM(MSG, "No helper image found! Terminating download.\n");
++        LEAVE();
++        return UAP_STATUS_FAILURE;
++    }
++
++    PRINTM(INFO, "Downloading helper image (%d bytes), block size %d bytes\n",
++           helperlen, SD_BLOCK_SIZE);
++
++#ifdef FW_DOWNLOAD_SPEED
++    tv1 = get_utimeofday();
++#endif
++
++#ifdef PXA3XX_DMA_ALIGN
++    tmphlprbufsz = ALIGN_SZ(UAP_UPLD_SIZE, PXA3XX_DMA_ALIGNMENT);
++#else /* !PXA3XX_DMA_ALIGN */
++    tmphlprbufsz = UAP_UPLD_SIZE;
++#endif /* !PXA3XX_DMA_ALIGN */
++    tmphlprbuf = kmalloc(tmphlprbufsz, GFP_KERNEL);
++    if (!tmphlprbuf) {
++        PRINTM(ERROR,
++               "Unable to allocate buffer for helper. Terminating download\n");
++        ret = UAP_STATUS_FAILURE;
++        goto done;
++    }
++    memset(tmphlprbuf, 0, tmphlprbufsz);
++#ifdef PXA3XX_DMA_ALIGN
++    hlprbuf = (u8 *) ALIGN_ADDR(tmphlprbuf, PXA3XX_DMA_ALIGNMENT);
++#else /* !PXA3XX_DMA_ALIGN */
++    hlprbuf = (u8 *) tmphlprbuf;
++#endif /* !PXA3XX_DMA_ALIGN */
++
++    sdio_claim_host(card->func);
++
++    /* Perform helper data transfer */
++    tx_len = (FIRMWARE_TRANSFER_NBLOCK * SD_BLOCK_SIZE) - INTF_HEADER_LEN;
++    hlprblknow = 0;
++    do {
++        /* The host polls for the DN_LD_CARD_RDY and CARD_IO_READY bits */
++        ret = mv_sdio_poll_card_status(priv, CARD_IO_READY | DN_LD_CARD_RDY);
++        if (ret < 0) {
++            PRINTM(FATAL, "Helper download poll status timeout @ %d\n",
++                   hlprblknow);
++            goto done;
++        }
++
++        /* More data? */
++        if (hlprblknow >= helperlen)
++            break;
++
++        /* Set blocksize to transfer - checking for last block */
++        if (helperlen - hlprblknow < tx_len)
++            tx_len = helperlen - hlprblknow;
++
++        /* Set length to the 4-byte header */
++        *(u32 *) hlprbuf = uap_cpu_to_le32(tx_len);
++
++        /* Copy payload to buffer */
++        memcpy(&hlprbuf[INTF_HEADER_LEN], &helper[hlprblknow], tx_len);
++
++        PRINTM(INFO, ".");
++
++        /* Send data */
++        ret = sdio_writesb(card->func, priv->uap_dev.ioport,
++                           hlprbuf, FIRMWARE_TRANSFER_NBLOCK * SD_BLOCK_SIZE);
++
++        if (ret < 0) {
++            PRINTM(FATAL, "IO error during helper download @ %d\n", hlprblknow);
++            goto done;
++        }
++
++        hlprblknow += tx_len;
++    } while (TRUE);
++
++#ifdef FW_DOWNLOAD_SPEED
++    tv2 = get_utimeofday();
++    PRINTM(INFO, "helper: %ld.%03ld.%03ld ", tv1 / 1000000,
++           (tv1 % 1000000) / 1000, tv1 % 1000);
++    PRINTM(INFO, " -> %ld.%03ld.%03ld ", tv2 / 1000000, (tv2 % 1000000) / 1000,
++           tv2 % 1000);
++    tv2 -= tv1;
++    PRINTM(INFO, " == %ld.%03ld.%03ld\n", tv2 / 1000000, (tv2 % 1000000) / 1000,
++           tv2 % 1000);
++#endif
++
++    /* Write last EOF data */
++    PRINTM(INFO, "\nTransferring helper image EOF block\n");
++    memset(hlprbuf, 0x0, SD_BLOCK_SIZE);
++    ret = sdio_writesb(card->func, priv->uap_dev.ioport,
++                       hlprbuf, SD_BLOCK_SIZE);
++
++    if (ret < 0) {
++        PRINTM(FATAL, "IO error in writing helper image EOF block\n");
++        goto done;
++    }
++
++    ret = UAP_STATUS_SUCCESS;
++
++  done:
++    sdio_release_host(card->func);
++    if (tmphlprbuf)
++        kfree(tmphlprbuf);
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function downloads firmware image to the card.
++ *
++ *  @param priv       A pointer to uap_private structure
++ *  @return           UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++sbi_prog_fw_w_helper(uap_private * priv)
++{
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++    u8 *firmware = NULL;
++    int firmwarelen;
++    u8 base0;
++    u8 base1;
++    int ret = UAP_STATUS_SUCCESS;
++    int offset;
++    void *tmpfwbuf = NULL;
++    int tmpfwbufsz;
++    u8 *fwbuf;
++    u16 len;
++    int txlen = 0;
++    int tx_blocks = 0;
++    int i = 0;
++    int tries = 0;
++#ifdef FW_DOWNLOAD_SPEED
++    u32 tv1, tv2;
++#endif
++
++    ENTER();
++
++    if (!card || !card->func) {
++        PRINTM(ERROR, "sbi_prog_fw_w_helper(): card or function is NULL!\n");
++        goto done;
++    }
++
++    if (priv->firmware) {
++        firmware = (u8 *) priv->firmware->data;
++        firmwarelen = priv->firmware->size;
++    } else {
++        PRINTM(MSG, "No firmware image found! Terminating download.\n");
++        LEAVE();
++        return UAP_STATUS_FAILURE;
++    }
++
++    PRINTM(INFO, "Downloading FW image (%d bytes)\n", firmwarelen);
++
++#ifdef FW_DOWNLOAD_SPEED
++    tv1 = get_utimeofday();
++#endif
++
++#ifdef PXA3XX_DMA_ALIGN
++    tmpfwbufsz = ALIGN_SZ(UAP_UPLD_SIZE, PXA3XX_DMA_ALIGNMENT);
++#else /* PXA3XX_DMA_ALIGN */
++    tmpfwbufsz = UAP_UPLD_SIZE;
++#endif /* PXA3XX_DMA_ALIGN */
++    tmpfwbuf = kmalloc(tmpfwbufsz, GFP_KERNEL);
++    if (!tmpfwbuf) {
++        PRINTM(ERROR,
++               "Unable to allocate buffer for firmware. Terminating download.\n");
++        ret = UAP_STATUS_FAILURE;
++        goto done;
++    }
++    memset(tmpfwbuf, 0, tmpfwbufsz);
++#ifdef PXA3XX_DMA_ALIGN
++    /* Ensure 8-byte aligned firmware buffer */
++    fwbuf = (u8 *) ALIGN_ADDR(tmpfwbuf, PXA3XX_DMA_ALIGNMENT);
++#else /* PXA3XX_DMA_ALIGN */
++    fwbuf = (u8 *) tmpfwbuf;
++#endif /* PXA3XX_DMA_ALIGN */
++
++    sdio_claim_host(card->func);
++
++    /* Perform firmware data transfer */
++    offset = 0;
++    do {
++        /* The host polls for the DN_LD_CARD_RDY and CARD_IO_READY bits */
++        ret = mv_sdio_poll_card_status(priv, CARD_IO_READY | DN_LD_CARD_RDY);
++        if (ret < 0) {
++            PRINTM(FATAL, "FW download with helper poll status timeout @ %d\n",
++                   offset);
++            goto done;
++        }
++
++        /* More data? */
++        if (offset >= firmwarelen)
++            break;
++
++        for (tries = 0; tries < MAX_POLL_TRIES; tries++) {
++            if ((ret = sbi_read_ioreg(priv, HOST_F1_RD_BASE_0, &base0)) < 0) {
++                PRINTM(WARN, "Dev BASE0 register read failed:"
++                       " base0=0x%04X(%d). Terminating download.\n", base0,
++                       base0);
++                ret = UAP_STATUS_FAILURE;
++                goto done;
++            }
++            if ((ret = sbi_read_ioreg(priv, HOST_F1_RD_BASE_1, &base1)) < 0) {
++                PRINTM(WARN, "Dev BASE1 register read failed:"
++                       " base1=0x%04X(%d). Terminating download.\n", base1,
++                       base1);
++                ret = UAP_STATUS_FAILURE;
++                goto done;
++            }
++            len = (((u16) base1) << 8) | base0;
++
++            /* For SD8688 wait until the length is not 0, 1 or 2 before
++               downloading the first FW block, since BOOT code writes the
++               register to indicate the helper/FW download winner, the value
++               could be 1 or 2 (Func1 or Func2). */
++            if ((len && offset) || (len > 2))
++                break;
++            udelay(10);
++        }
++
++        if (len == 0)
++            break;
++        else if (len > UAP_UPLD_SIZE) {
++            PRINTM(FATAL, "FW download failure @ %d, invalid length %d\n",
++                   offset, len);
++            ret = UAP_STATUS_FAILURE;
++            goto done;
++        }
++
++        txlen = len;
++
++        if (len & BIT(0)) {
++            i++;
++            if (i > MAX_WRITE_IOMEM_RETRY) {
++                PRINTM(FATAL,
++                       "FW download failure @ %d, over max retry count\n",
++                       offset);
++                ret = UAP_STATUS_FAILURE;
++                goto done;
++            }
++            PRINTM(ERROR, "FW CRC error indicated by the helper:"
++                   " len = 0x%04X, txlen = %d\n", len, txlen);
++            len &= ~BIT(0);
++            /* Setting this to 0 to resend from same offset */
++            txlen = 0;
++        } else {
++            i = 0;
++
++            /* Set blocksize to transfer - checking for last block */
++            if (firmwarelen - offset < txlen) {
++                txlen = firmwarelen - offset;
++            }
++            PRINTM(INFO, ".");
++
++            tx_blocks = (txlen + SD_BLOCK_SIZE - 1) / SD_BLOCK_SIZE;
++
++            /* Copy payload to buffer */
++            memcpy(fwbuf, &firmware[offset], txlen);
++        }
++
++        /* Send data */
++        ret = sdio_writesb(card->func, priv->uap_dev.ioport,
++                           fwbuf, tx_blocks * SD_BLOCK_SIZE);
++
++        if (ret < 0) {
++            PRINTM(ERROR, "FW download, write iomem (%d) failed @ %d\n", i,
++                   offset);
++            if (sbi_write_ioreg(priv, CONFIGURATION_REG, 0x04) < 0) {
++                PRINTM(ERROR, "write ioreg failed (CFG)\n");
++            }
++        }
++
++        offset += txlen;
++    } while (TRUE);
++
++    PRINTM(INFO, "\nFW download over, size %d bytes\n", offset);
++
++    ret = UAP_STATUS_SUCCESS;
++  done:
++#ifdef FW_DOWNLOAD_SPEED
++    tv2 = get_utimeofday();
++    PRINTM(INFO, "FW: %ld.%03ld.%03ld ", tv1 / 1000000,
++           (tv1 % 1000000) / 1000, tv1 % 1000);
++    PRINTM(INFO, " -> %ld.%03ld.%03ld ", tv2 / 1000000,
++           (tv2 % 1000000) / 1000, tv2 % 1000);
++    tv2 -= tv1;
++    PRINTM(INFO, " == %ld.%03ld.%03ld\n", tv2 / 1000000,
++           (tv2 % 1000000) / 1000, tv2 % 1000);
++#endif
++    sdio_release_host(card->func);
++    if (tmpfwbuf)
++        kfree(tmpfwbuf);
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function checks if the firmware is ready to accept
++ *  command or not.
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param pollnum Poll number
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++sbi_check_fw_status(uap_private * priv, int pollnum)
++{
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++    int ret = UAP_STATUS_SUCCESS;
++    u16 firmwarestat;
++    int tries;
++
++    ENTER();
++
++    sdio_claim_host(card->func);
++
++    /* Wait for firmware initialization event */
++    for (tries = 0; tries < pollnum; tries++) {
++        if ((ret = sd_read_firmware_status(priv, &firmwarestat)) < 0)
++            continue;
++        if (firmwarestat == FIRMWARE_READY) {
++            ret = UAP_STATUS_SUCCESS;
++            break;
++        } else {
++            mdelay(10);
++            ret = UAP_STATUS_FAILURE;
++        }
++    }
++
++    if (ret < 0)
++        goto done;
++
++    ret = UAP_STATUS_SUCCESS;
++    sd_get_rx_unit(priv);
++
++  done:
++    sdio_release_host(card->func);
++
++    LEAVE();
++    return ret;
++}
++
++/**
++ *  @brief This function set bus clock on/off
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @param option    TRUE--on , FALSE--off
++ *  @return      UAP_STATUS_SUCCESS
++ */
++#if 0
++static int
++sbi_set_bus_clock(uap_private * priv, u8 option)
++{
++    ENTER();
++    LEAVE();
++    return UAP_STATUS_SUCCESS;
++}
++#endif
++
++/**
++ *  @brief This function wakeup firmware
++ *
++ *  @param priv    A pointer to uap_private structure
++ *  @return      UAP_STATUS_SUCCESS or UAP_STATUS_FAILURE
++ */
++int
++sbi_wakeup_firmware(uap_private * priv)
++{
++    struct sdio_mmc_card *card = priv->uap_dev.card;
++    int ret = UAP_STATUS_SUCCESS;
++
++    ENTER();
++
++    if (!card || !card->func) {
++        PRINTM(ERROR, "card or function is NULL!\n");
++        LEAVE();
++        return UAP_STATUS_FAILURE;
++    }
++    sdio_claim_host(card->func);
++    sdio_writeb(card->func, HOST_POWER_UP, CONFIGURATION_REG, &ret);
++    sdio_release_host(card->func);
++    LEAVE();
++    return ret;
++}
+diff --git a/drivers/net/wireless/libertas_uap/uap_sdio_mmc.h b/drivers/net/wireless/libertas_uap/uap_sdio_mmc.h
+new file mode 100644
+index 0000000..191c67f
+--- /dev/null
++++ b/drivers/net/wireless/libertas_uap/uap_sdio_mmc.h
+@@ -0,0 +1,136 @@
++/** @file uap_sdio_mmc.h
++ *  @brief This file contains SDIO IF (interface) module
++ *  related macros, enum, and structure.
++ *
++ * Copyright (C) 2007-2009, Marvell International Ltd.
++ *
++ * This software file (the "File") is distributed by Marvell International
++ * Ltd. under the terms of the GNU General Public License Version 2, June 1991
++ * (the "License").  You may use, redistribute and/or modify this File in
++ * accordance with the terms and conditions of the License, a copy of which
++ * is available along with the File in the gpl.txt file or by writing to
++ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ * 02111-1307 or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
++ *
++ * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
++ * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
++ * this warranty disclaimer.
++ *
++ */
++/****************************************************
++Change log:
++      10/10/07: initial version
++****************************************************/
++
++#ifndef       _UAP_SDIO_MMC_H
++#define       _UAP_SDIO_MMC_H
++
++#include      <linux/mmc/sdio.h>
++#include      <linux/mmc/sdio_ids.h>
++#include      <linux/mmc/sdio_func.h>
++#include      <linux/mmc/card.h>
++
++#include      "uap_headers.h"
++
++/** The number of times to try when waiting for downloaded firmware to
++     become active. (polling the scratch register). */
++#define MAX_FIRMWARE_POLL_TRIES               100
++
++/** Firmware ready */
++#define FIRMWARE_READY                        0xfedc
++
++/** Number of firmware blocks to transfer */
++#define FIRMWARE_TRANSFER_NBLOCK      2
++
++/* Host Control Registers */
++/** Host Control Registers : I/O port 0 */
++#define IO_PORT_0_REG                 0x00
++/** Host Control Registers : I/O port 1 */
++#define IO_PORT_1_REG                 0x01
++/** Host Control Registers : I/O port 2 */
++#define IO_PORT_2_REG                 0x02
++
++/** Host Control Registers : Configuration */
++#define CONFIGURATION_REG             0x03
++/** Host Control Registers : Host without Command 53 finish host */
++#define HOST_WO_CMD53_FINISH_HOST     (0x1U << 2)
++/** Host Control Registers : Host power up */
++#define HOST_POWER_UP                 (0x1U << 1)
++/** Host Control Registers : Host power down */
++#define HOST_POWER_DOWN                       (0x1U << 0)
++
++/** Host Control Registers : Host interrupt mask */
++#define HOST_INT_MASK_REG             0x04
++/** Host Control Registers : Upload host interrupt mask */
++#define UP_LD_HOST_INT_MASK           (0x1U)
++/** Host Control Registers : Download host interrupt mask */
++#define DN_LD_HOST_INT_MASK           (0x2U)
++/** Enable Host interrupt mask */
++#define HIM_ENABLE                    (UP_LD_HOST_INT_MASK | DN_LD_HOST_INT_MASK)
++/** Disable Host interrupt mask */
++#define       HIM_DISABLE                     0xff
++
++/** Host Control Registers : Host interrupt status */
++#define HOST_INTSTATUS_REG            0x05
++/** Host Control Registers : Upload host interrupt status */
++#define UP_LD_HOST_INT_STATUS         (0x1U)
++/** Host Control Registers : Download host interrupt status */
++#define DN_LD_HOST_INT_STATUS         (0x2U)
++
++/** Host F1 read base 0 */
++#define HOST_F1_RD_BASE_0             0x10
++/** Host F1 read base 1 */
++#define HOST_F1_RD_BASE_1             0x11
++
++/** Card Control Registers : Card status register */
++#define CARD_STATUS_REG               0x20
++/** Card Control Registers : Card I/O ready */
++#define CARD_IO_READY                 (0x1U << 3)
++/** Card Control Registers : CIS card ready */
++#define CIS_CARD_RDY                  (0x1U << 2)
++/** Card Control Registers : Upload card ready */
++#define UP_LD_CARD_RDY                (0x1U << 1)
++/** Card Control Registers : Download card ready */
++#define DN_LD_CARD_RDY                (0x1U << 0)
++
++/** Card Control Registers : Card OCR 0 register */
++#define CARD_OCR_0_REG                0x34
++/** Card Control Registers : Card OCR 1 register */
++#define CARD_OCR_1_REG                0x35
++
++/** Firmware status 0 register */
++#define CARD_FW_STATUS0_REG           0x40
++/** Firmware status 1 register */
++#define CARD_FW_STATUS1_REG           0x41
++/** Rx length register */
++#define CARD_RX_LEN_REG                       0x42
++/** Rx unit register */
++#define CARD_RX_UNIT_REG              0x43
++
++/** Chip Id Register 0 */
++#define CARD_CHIP_ID_0_REG            0x801c
++/** Chip Id Register 1 */
++#define CARD_CHIP_ID_1_REG            0x801d
++
++#ifdef PXA3XX_DMA_ALIGN
++/** DMA alignment value for PXA3XX platforms */
++#define PXA3XX_DMA_ALIGNMENT    8
++/** Macros for Data Alignment : size */
++#define ALIGN_SZ(p, a)  \
++    (((p) + ((a) - 1)) & ~((a) - 1))
++
++/** Macros for Data Alignment : address */
++#define ALIGN_ADDR(p, a)    \
++    ((((u32)(p)) + (((u32)(a)) - 1)) & ~(((u32)(a)) - 1))
++#endif /* PXA3XX_DMA_ALIGN */
++
++struct sdio_mmc_card
++{
++        /** sdio_func structure pointer */
++    struct sdio_func *func;
++        /** uap_private structure pointer */
++    uap_private *priv;
++};
++
++#endif /* _UAP_SDIO_MMC_H */
diff --git a/src/patches/linux-3.10.39-pie_packet_sch.patch b/src/patches/linux-3.10.39-pie_packet_sch.patch
new file mode 100644 (file)
index 0000000..6bec374
--- /dev/null
@@ -0,0 +1,674 @@
+From d4b36210c2e6ecef0ce52fb6c18c51144f5c2d88 Mon Sep 17 00:00:00 2001
+From: Vijay Subramanian <vijaynsu@cisco.com>
+Date: Sat, 4 Jan 2014 17:33:55 -0800
+Subject: net: pkt_sched: PIE AQM scheme
+
+Proportional Integral controller Enhanced (PIE) is a scheduler to address the
+bufferbloat problem.
+
+>From the IETF draft below:
+" Bufferbloat is a phenomenon where excess buffers in the network cause high
+latency and jitter. As more and more interactive applications (e.g. voice over
+IP, real time video streaming and financial transactions) run in the Internet,
+high latency and jitter degrade application performance. There is a pressing
+need to design intelligent queue management schemes that can control latency and
+jitter; and hence provide desirable quality of service to users.
+
+We present here a lightweight design, PIE(Proportional Integral controller
+Enhanced) that can effectively control the average queueing latency to a target
+value. Simulation results, theoretical analysis and Linux testbed results have
+shown that PIE can ensure low latency and achieve high link utilization under
+various congestion situations. The design does not require per-packet
+timestamp, so it incurs very small overhead and is simple enough to implement
+in both hardware and software.  "
+
+Many thanks to Dave Taht for extensive feedback, reviews, testing and
+suggestions. Thanks also to Stephen Hemminger and Eric Dumazet for reviews and
+suggestions.  Naeem Khademi and Dave Taht independently contributed to ECN
+support.
+
+For more information, please see technical paper about PIE in the IEEE
+Conference on High Performance Switching and Routing 2013. A copy of the paper
+can be found at ftp://ftpeng.cisco.com/pie/.
+
+Please also refer to the IETF draft submission at
+http://tools.ietf.org/html/draft-pan-tsvwg-pie-00
+
+All relevant code, documents and test scripts and results can be found at
+ftp://ftpeng.cisco.com/pie/.
+
+For problems with the iproute2/tc or Linux kernel code, please contact Vijay
+Subramanian (vijaynsu@cisco.com or subramanian.vijay@gmail.com) Mythili Prabhu
+(mysuryan@cisco.com)
+
+Signed-off-by: Vijay Subramanian <subramanian.vijay@gmail.com>
+Signed-off-by: Mythili Prabhu <mysuryan@cisco.com>
+CC: Dave Taht <dave.taht@bufferbloat.net>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+
+diff -Naur linux-3.10.39.org/include/uapi/linux/pkt_sched.h linux-3.10.39/include/uapi/linux/pkt_sched.h
+--- linux-3.10.39.org/include/uapi/linux/pkt_sched.h   2014-05-06 16:56:24.000000000 +0200
++++ linux-3.10.39/include/uapi/linux/pkt_sched.h       2014-05-15 10:33:08.296828477 +0200
+@@ -744,4 +744,29 @@
+       };
+ };
++/* PIE */
++enum {
++      TCA_PIE_UNSPEC,
++      TCA_PIE_TARGET,
++      TCA_PIE_LIMIT,
++      TCA_PIE_TUPDATE,
++      TCA_PIE_ALPHA,
++      TCA_PIE_BETA,
++      TCA_PIE_ECN,
++      TCA_PIE_BYTEMODE,
++      __TCA_PIE_MAX
++};
++#define TCA_PIE_MAX   (__TCA_PIE_MAX - 1)
++
++struct tc_pie_xstats {
++      __u32 prob;             /* current probability */
++      __u32 delay;            /* current delay in ms */
++      __u32 avg_dq_rate;      /* current average dq_rate in bits/pie_time */
++      __u32 packets_in;       /* total number of packets enqueued */
++      __u32 dropped;          /* packets dropped due to pie_action */
++      __u32 overlimit;        /* dropped due to lack of space in queue */
++      __u32 maxq;             /* maximum queue size */
++      __u32 ecn_mark;         /* packets marked with ecn*/
++};
++
+ #endif
+diff -Naur linux-3.10.39.org/net/sched/Kconfig linux-3.10.39/net/sched/Kconfig
+--- linux-3.10.39.org/net/sched/Kconfig        2014-05-06 16:56:24.000000000 +0200
++++ linux-3.10.39/net/sched/Kconfig    2014-05-15 09:30:29.866632326 +0200
+@@ -272,6 +272,19 @@
+         If unsure, say N.
++config NET_SCH_PIE
++      tristate "Proportional Integral controller Enhanced (PIE) scheduler"
++      help
++        Say Y here if you want to use the Proportional Integral controller
++        Enhanced scheduler packet scheduling algorithm.
++        For more information, please see
++        http://tools.ietf.org/html/draft-pan-tsvwg-pie-00
++
++        To compile this driver as a module, choose M here: the module
++        will be called sch_pie.
++
++        If unsure, say N.
++
+ config NET_SCH_INGRESS
+       tristate "Ingress Qdisc"
+       depends on NET_CLS_ACT
+diff -Naur linux-3.10.39.org/net/sched/Makefile linux-3.10.39/net/sched/Makefile
+--- linux-3.10.39.org/net/sched/Makefile       2014-05-06 16:56:24.000000000 +0200
++++ linux-3.10.39/net/sched/Makefile   2014-05-15 10:34:55.533502406 +0200
+@@ -39,6 +39,7 @@
+ obj-$(CONFIG_NET_SCH_QFQ)     += sch_qfq.o
+ obj-$(CONFIG_NET_SCH_CODEL)   += sch_codel.o
+ obj-$(CONFIG_NET_SCH_FQ_CODEL)        += sch_fq_codel.o
++obj-$(CONFIG_NET_SCH_PIE)     += sch_pie.o
+ obj-$(CONFIG_NET_CLS_U32)     += cls_u32.o
+ obj-$(CONFIG_NET_CLS_ROUTE4)  += cls_route.o
+diff -Naur linux-3.10.39.org/net/sched/sch_pie.c linux-3.10.39/net/sched/sch_pie.c
+--- linux-3.10.39.org/net/sched/sch_pie.c      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.10.39/net/sched/sch_pie.c  2014-05-15 09:30:29.869966724 +0200
+@@ -0,0 +1,555 @@
++/* Copyright (C) 2013 Cisco Systems, Inc, 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 2
++ * of the License.
++ *
++ * 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.
++ *
++ * Author: Vijay Subramanian <vijaynsu@cisco.com>
++ * Author: Mythili Prabhu <mysuryan@cisco.com>
++ *
++ * ECN support is added by Naeem Khademi <naeemk@ifi.uio.no>
++ * University of Oslo, Norway.
++ */
++
++#include <linux/module.h>
++#include <linux/slab.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/skbuff.h>
++#include <net/pkt_sched.h>
++#include <net/inet_ecn.h>
++
++#define QUEUE_THRESHOLD 10000
++#define DQCOUNT_INVALID -1
++#define MAX_PROB  0xffffffff
++#define PIE_SCALE 8
++
++/* parameters used */
++struct pie_params {
++      psched_time_t target;   /* user specified target delay in pschedtime */
++      u32 tupdate;            /* timer frequency (in jiffies) */
++      u32 limit;              /* number of packets that can be enqueued */
++      u32 alpha;              /* alpha and beta are between -4 and 4 */
++      u32 beta;               /* and are used for shift relative to 1 */
++      bool ecn;               /* true if ecn is enabled */
++      bool bytemode;          /* to scale drop early prob based on pkt size */
++};
++
++/* variables used */
++struct pie_vars {
++      u32 prob;               /* probability but scaled by u32 limit. */
++      psched_time_t burst_time;
++      psched_time_t qdelay;
++      psched_time_t qdelay_old;
++      u64 dq_count;           /* measured in bytes */
++      psched_time_t dq_tstamp;        /* drain rate */
++      u32 avg_dq_rate;        /* bytes per pschedtime tick,scaled */
++      u32 qlen_old;           /* in bytes */
++};
++
++/* statistics gathering */
++struct pie_stats {
++      u32 packets_in;         /* total number of packets enqueued */
++      u32 dropped;            /* packets dropped due to pie_action */
++      u32 overlimit;          /* dropped due to lack of space in queue */
++      u32 maxq;               /* maximum queue size */
++      u32 ecn_mark;           /* packets marked with ECN */
++};
++
++/* private data for the Qdisc */
++struct pie_sched_data {
++      struct pie_params params;
++      struct pie_vars vars;
++      struct pie_stats stats;
++      struct timer_list adapt_timer;
++};
++
++static void pie_params_init(struct pie_params *params)
++{
++      params->alpha = 2;
++      params->beta = 20;
++      params->tupdate = usecs_to_jiffies(30 * USEC_PER_MSEC); /* 30 ms */
++      params->limit = 1000;   /* default of 1000 packets */
++      params->target = PSCHED_NS2TICKS(20 * NSEC_PER_MSEC);   /* 20 ms */
++      params->ecn = false;
++      params->bytemode = false;
++}
++
++static void pie_vars_init(struct pie_vars *vars)
++{
++      vars->dq_count = DQCOUNT_INVALID;
++      vars->avg_dq_rate = 0;
++      /* default of 100 ms in pschedtime */
++      vars->burst_time = PSCHED_NS2TICKS(100 * NSEC_PER_MSEC);
++}
++
++static bool drop_early(struct Qdisc *sch, u32 packet_size)
++{
++      struct pie_sched_data *q = qdisc_priv(sch);
++      u32 rnd;
++      u32 local_prob = q->vars.prob;
++      u32 mtu = psched_mtu(qdisc_dev(sch));
++
++      /* If there is still burst allowance left skip random early drop */
++      if (q->vars.burst_time > 0)
++              return false;
++
++      /* If current delay is less than half of target, and
++       * if drop prob is low already, disable early_drop
++       */
++      if ((q->vars.qdelay < q->params.target / 2)
++          && (q->vars.prob < MAX_PROB / 5))
++              return false;
++
++      /* If we have fewer than 2 mtu-sized packets, disable drop_early,
++       * similar to min_th in RED
++       */
++      if (sch->qstats.backlog < 2 * mtu)
++              return false;
++
++      /* If bytemode is turned on, use packet size to compute new
++       * probablity. Smaller packets will have lower drop prob in this case
++       */
++      if (q->params.bytemode && packet_size <= mtu)
++              local_prob = (local_prob / mtu) * packet_size;
++      else
++              local_prob = q->vars.prob;
++
++      rnd = net_random();
++      if (rnd < local_prob)
++              return true;
++
++      return false;
++}
++
++static int pie_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch)
++{
++      struct pie_sched_data *q = qdisc_priv(sch);
++      bool enqueue = false;
++
++      if (unlikely(qdisc_qlen(sch) >= sch->limit)) {
++              q->stats.overlimit++;
++              goto out;
++      }
++
++      if (!drop_early(sch, skb->len)) {
++              enqueue = true;
++      } else if (q->params.ecn && (q->vars.prob <= MAX_PROB / 10) &&
++                 INET_ECN_set_ce(skb)) {
++              /* If packet is ecn capable, mark it if drop probability
++               * is lower than 10%, else drop it.
++               */
++              q->stats.ecn_mark++;
++              enqueue = true;
++      }
++
++      /* we can enqueue the packet */
++      if (enqueue) {
++              q->stats.packets_in++;
++              if (qdisc_qlen(sch) > q->stats.maxq)
++                      q->stats.maxq = qdisc_qlen(sch);
++
++              return qdisc_enqueue_tail(skb, sch);
++      }
++
++out:
++      q->stats.dropped++;
++      return qdisc_drop(skb, sch);
++}
++
++static const struct nla_policy pie_policy[TCA_PIE_MAX + 1] = {
++      [TCA_PIE_TARGET] = {.type = NLA_U32},
++      [TCA_PIE_LIMIT] = {.type = NLA_U32},
++      [TCA_PIE_TUPDATE] = {.type = NLA_U32},
++      [TCA_PIE_ALPHA] = {.type = NLA_U32},
++      [TCA_PIE_BETA] = {.type = NLA_U32},
++      [TCA_PIE_ECN] = {.type = NLA_U32},
++      [TCA_PIE_BYTEMODE] = {.type = NLA_U32},
++};
++
++static int pie_change(struct Qdisc *sch, struct nlattr *opt)
++{
++      struct pie_sched_data *q = qdisc_priv(sch);
++      struct nlattr *tb[TCA_PIE_MAX + 1];
++      unsigned int qlen;
++      int err;
++
++      if (!opt)
++              return -EINVAL;
++
++      err = nla_parse_nested(tb, TCA_PIE_MAX, opt, pie_policy);
++      if (err < 0)
++              return err;
++
++      sch_tree_lock(sch);
++
++      /* convert from microseconds to pschedtime */
++      if (tb[TCA_PIE_TARGET]) {
++              /* target is in us */
++              u32 target = nla_get_u32(tb[TCA_PIE_TARGET]);
++
++              /* convert to pschedtime */
++              q->params.target = PSCHED_NS2TICKS((u64)target * NSEC_PER_USEC);
++      }
++
++      /* tupdate is in jiffies */
++      if (tb[TCA_PIE_TUPDATE])
++              q->params.tupdate = usecs_to_jiffies(nla_get_u32(tb[TCA_PIE_TUPDATE]));
++
++      if (tb[TCA_PIE_LIMIT]) {
++              u32 limit = nla_get_u32(tb[TCA_PIE_LIMIT]);
++
++              q->params.limit = limit;
++              sch->limit = limit;
++      }
++
++      if (tb[TCA_PIE_ALPHA])
++              q->params.alpha = nla_get_u32(tb[TCA_PIE_ALPHA]);
++
++      if (tb[TCA_PIE_BETA])
++              q->params.beta = nla_get_u32(tb[TCA_PIE_BETA]);
++
++      if (tb[TCA_PIE_ECN])
++              q->params.ecn = nla_get_u32(tb[TCA_PIE_ECN]);
++
++      if (tb[TCA_PIE_BYTEMODE])
++              q->params.bytemode = nla_get_u32(tb[TCA_PIE_BYTEMODE]);
++
++      /* Drop excess packets if new limit is lower */
++      qlen = sch->q.qlen;
++      while (sch->q.qlen > sch->limit) {
++              struct sk_buff *skb = __skb_dequeue(&sch->q);
++
++              sch->qstats.backlog -= qdisc_pkt_len(skb);
++              qdisc_drop(skb, sch);
++      }
++      qdisc_tree_decrease_qlen(sch, qlen - sch->q.qlen);
++
++      sch_tree_unlock(sch);
++      return 0;
++}
++
++static void pie_process_dequeue(struct Qdisc *sch, struct sk_buff *skb)
++{
++
++      struct pie_sched_data *q = qdisc_priv(sch);
++      int qlen = sch->qstats.backlog; /* current queue size in bytes */
++
++      /* If current queue is about 10 packets or more and dq_count is unset
++       * we have enough packets to calculate the drain rate. Save
++       * current time as dq_tstamp and start measurement cycle.
++       */
++      if (qlen >= QUEUE_THRESHOLD && q->vars.dq_count == DQCOUNT_INVALID) {
++              q->vars.dq_tstamp = psched_get_time();
++              q->vars.dq_count = 0;
++      }
++
++      /* Calculate the average drain rate from this value.  If queue length
++       * has receded to a small value viz., <= QUEUE_THRESHOLD bytes,reset
++       * the dq_count to -1 as we don't have enough packets to calculate the
++       * drain rate anymore The following if block is entered only when we
++       * have a substantial queue built up (QUEUE_THRESHOLD bytes or more)
++       * and we calculate the drain rate for the threshold here.  dq_count is
++       * in bytes, time difference in psched_time, hence rate is in
++       * bytes/psched_time.
++       */
++      if (q->vars.dq_count != DQCOUNT_INVALID) {
++              q->vars.dq_count += skb->len;
++
++              if (q->vars.dq_count >= QUEUE_THRESHOLD) {
++                      psched_time_t now = psched_get_time();
++                      u32 dtime = now - q->vars.dq_tstamp;
++                      u32 count = q->vars.dq_count << PIE_SCALE;
++
++                      if (dtime == 0)
++                              return;
++
++                      count = count / dtime;
++
++                      if (q->vars.avg_dq_rate == 0)
++                              q->vars.avg_dq_rate = count;
++                      else
++                              q->vars.avg_dq_rate =
++                                  (q->vars.avg_dq_rate -
++                                   (q->vars.avg_dq_rate >> 3)) + (count >> 3);
++
++                      /* If the queue has receded below the threshold, we hold
++                       * on to the last drain rate calculated, else we reset
++                       * dq_count to 0 to re-enter the if block when the next
++                       * packet is dequeued
++                       */
++                      if (qlen < QUEUE_THRESHOLD)
++                              q->vars.dq_count = DQCOUNT_INVALID;
++                      else {
++                              q->vars.dq_count = 0;
++                              q->vars.dq_tstamp = psched_get_time();
++                      }
++
++                      if (q->vars.burst_time > 0) {
++                              if (q->vars.burst_time > dtime)
++                                      q->vars.burst_time -= dtime;
++                              else
++                                      q->vars.burst_time = 0;
++                      }
++              }
++      }
++}
++
++static void calculate_probability(struct Qdisc *sch)
++{
++      struct pie_sched_data *q = qdisc_priv(sch);
++      u32 qlen = sch->qstats.backlog; /* queue size in bytes */
++      psched_time_t qdelay = 0;       /* in pschedtime */
++      psched_time_t qdelay_old = q->vars.qdelay;      /* in pschedtime */
++      s32 delta = 0;          /* determines the change in probability */
++      u32 oldprob;
++      u32 alpha, beta;
++      bool update_prob = true;
++
++      q->vars.qdelay_old = q->vars.qdelay;
++
++      if (q->vars.avg_dq_rate > 0)
++              qdelay = (qlen << PIE_SCALE) / q->vars.avg_dq_rate;
++      else
++              qdelay = 0;
++
++      /* If qdelay is zero and qlen is not, it means qlen is very small, less
++       * than dequeue_rate, so we do not update probabilty in this round
++       */
++      if (qdelay == 0 && qlen != 0)
++              update_prob = false;
++
++      /* Add ranges for alpha and beta, more aggressive for high dropping
++       * mode and gentle steps for light dropping mode
++       * In light dropping mode, take gentle steps; in medium dropping mode,
++       * take medium steps; in high dropping mode, take big steps.
++       */
++      if (q->vars.prob < MAX_PROB / 100) {
++              alpha =
++                  (q->params.alpha * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 7;
++              beta =
++                  (q->params.beta * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 7;
++      } else if (q->vars.prob < MAX_PROB / 10) {
++              alpha =
++                  (q->params.alpha * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 5;
++              beta =
++                  (q->params.beta * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 5;
++      } else {
++              alpha =
++                  (q->params.alpha * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 4;
++              beta =
++                  (q->params.beta * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 4;
++      }
++
++      /* alpha and beta should be between 0 and 32, in multiples of 1/16 */
++      delta += alpha * ((qdelay - q->params.target));
++      delta += beta * ((qdelay - qdelay_old));
++
++      oldprob = q->vars.prob;
++
++      /* to ensure we increase probability in steps of no more than 2% */
++      if (delta > (s32) (MAX_PROB / (100 / 2)) &&
++          q->vars.prob >= MAX_PROB / 10)
++              delta = (MAX_PROB / 100) * 2;
++
++      /* Non-linear drop:
++       * Tune drop probability to increase quickly for high delays(>= 250ms)
++       * 250ms is derived through experiments and provides error protection
++       */
++
++      if (qdelay > (PSCHED_NS2TICKS(250 * NSEC_PER_MSEC)))
++              delta += MAX_PROB / (100 / 2);
++
++      q->vars.prob += delta;
++
++      if (delta > 0) {
++              /* prevent overflow */
++              if (q->vars.prob < oldprob) {
++                      q->vars.prob = MAX_PROB;
++                      /* Prevent normalization error. If probability is at
++                       * maximum value already, we normalize it here, and
++                       * skip the check to do a non-linear drop in the next
++                       * section.
++                       */
++                      update_prob = false;
++              }
++      } else {
++              /* prevent underflow */
++              if (q->vars.prob > oldprob)
++                      q->vars.prob = 0;
++      }
++
++      /* Non-linear drop in probability: Reduce drop probability quickly if
++       * delay is 0 for 2 consecutive Tupdate periods.
++       */
++
++      if ((qdelay == 0) && (qdelay_old == 0) && update_prob)
++              q->vars.prob = (q->vars.prob * 98) / 100;
++
++      q->vars.qdelay = qdelay;
++      q->vars.qlen_old = qlen;
++
++      /* We restart the measurement cycle if the following conditions are met
++       * 1. If the delay has been low for 2 consecutive Tupdate periods
++       * 2. Calculated drop probability is zero
++       * 3. We have atleast one estimate for the avg_dq_rate ie.,
++       *    is a non-zero value
++       */
++      if ((q->vars.qdelay < q->params.target / 2) &&
++          (q->vars.qdelay_old < q->params.target / 2) &&
++          (q->vars.prob == 0) &&
++          (q->vars.avg_dq_rate > 0))
++              pie_vars_init(&q->vars);
++}
++
++static void pie_timer(unsigned long arg)
++{
++      struct Qdisc *sch = (struct Qdisc *)arg;
++      struct pie_sched_data *q = qdisc_priv(sch);
++      spinlock_t *root_lock = qdisc_lock(qdisc_root_sleeping(sch));
++
++      spin_lock(root_lock);
++      calculate_probability(sch);
++
++      /* reset the timer to fire after 'tupdate'. tupdate is in jiffies. */
++      if (q->params.tupdate)
++              mod_timer(&q->adapt_timer, jiffies + q->params.tupdate);
++      spin_unlock(root_lock);
++
++}
++
++static int pie_init(struct Qdisc *sch, struct nlattr *opt)
++{
++      struct pie_sched_data *q = qdisc_priv(sch);
++
++      pie_params_init(&q->params);
++      pie_vars_init(&q->vars);
++      sch->limit = q->params.limit;
++
++      setup_timer(&q->adapt_timer, pie_timer, (unsigned long)sch);
++      mod_timer(&q->adapt_timer, jiffies + HZ / 2);
++
++      if (opt) {
++              int err = pie_change(sch, opt);
++
++              if (err)
++                      return err;
++      }
++
++      return 0;
++}
++
++static int pie_dump(struct Qdisc *sch, struct sk_buff *skb)
++{
++      struct pie_sched_data *q = qdisc_priv(sch);
++      struct nlattr *opts;
++
++      opts = nla_nest_start(skb, TCA_OPTIONS);
++      if (opts == NULL)
++              goto nla_put_failure;
++
++      /* convert target from pschedtime to us */
++      if (nla_put_u32(skb, TCA_PIE_TARGET,
++                      ((u32) PSCHED_TICKS2NS(q->params.target)) /
++                      NSEC_PER_USEC) ||
++          nla_put_u32(skb, TCA_PIE_LIMIT, sch->limit) ||
++          nla_put_u32(skb, TCA_PIE_TUPDATE, jiffies_to_usecs(q->params.tupdate)) ||
++          nla_put_u32(skb, TCA_PIE_ALPHA, q->params.alpha) ||
++          nla_put_u32(skb, TCA_PIE_BETA, q->params.beta) ||
++          nla_put_u32(skb, TCA_PIE_ECN, q->params.ecn) ||
++          nla_put_u32(skb, TCA_PIE_BYTEMODE, q->params.bytemode))
++              goto nla_put_failure;
++
++      return nla_nest_end(skb, opts);
++
++nla_put_failure:
++      nla_nest_cancel(skb, opts);
++      return -1;
++
++}
++
++static int pie_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
++{
++      struct pie_sched_data *q = qdisc_priv(sch);
++      struct tc_pie_xstats st = {
++              .prob           = q->vars.prob,
++              .delay          = ((u32) PSCHED_TICKS2NS(q->vars.qdelay)) /
++                                 NSEC_PER_USEC,
++              /* unscale and return dq_rate in bytes per sec */
++              .avg_dq_rate    = q->vars.avg_dq_rate *
++                                (PSCHED_TICKS_PER_SEC) >> PIE_SCALE,
++              .packets_in     = q->stats.packets_in,
++              .overlimit      = q->stats.overlimit,
++              .maxq           = q->stats.maxq,
++              .dropped        = q->stats.dropped,
++              .ecn_mark       = q->stats.ecn_mark,
++      };
++
++      return gnet_stats_copy_app(d, &st, sizeof(st));
++}
++
++static struct sk_buff *pie_qdisc_dequeue(struct Qdisc *sch)
++{
++      struct sk_buff *skb;
++      skb = __qdisc_dequeue_head(sch, &sch->q);
++
++      if (!skb)
++              return NULL;
++
++      pie_process_dequeue(sch, skb);
++      return skb;
++}
++
++static void pie_reset(struct Qdisc *sch)
++{
++      struct pie_sched_data *q = qdisc_priv(sch);
++      qdisc_reset_queue(sch);
++      pie_vars_init(&q->vars);
++}
++
++static void pie_destroy(struct Qdisc *sch)
++{
++      struct pie_sched_data *q = qdisc_priv(sch);
++      q->params.tupdate = 0;
++      del_timer_sync(&q->adapt_timer);
++}
++
++static struct Qdisc_ops pie_qdisc_ops __read_mostly = {
++      .id = "pie",
++      .priv_size      = sizeof(struct pie_sched_data),
++      .enqueue        = pie_qdisc_enqueue,
++      .dequeue        = pie_qdisc_dequeue,
++      .peek           = qdisc_peek_dequeued,
++      .init           = pie_init,
++      .destroy        = pie_destroy,
++      .reset          = pie_reset,
++      .change         = pie_change,
++      .dump           = pie_dump,
++      .dump_stats     = pie_dump_stats,
++      .owner          = THIS_MODULE,
++};
++
++static int __init pie_module_init(void)
++{
++      return register_qdisc(&pie_qdisc_ops);
++}
++
++static void __exit pie_module_exit(void)
++{
++      unregister_qdisc(&pie_qdisc_ops);
++}
++
++module_init(pie_module_init);
++module_exit(pie_module_exit);
++
++MODULE_DESCRIPTION("Proportional Integral controller Enhanced (PIE) scheduler");
++MODULE_AUTHOR("Vijay Subramanian");
++MODULE_AUTHOR("Mythili Prabhu");
++MODULE_LICENSE("GPL");
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.10.y-usbnet_mcs7830_rework_link_detect.patch b/src/patches/linux-3.10.y-usbnet_mcs7830_rework_link_detect.patch
new file mode 100644 (file)
index 0000000..2114ae8
--- /dev/null
@@ -0,0 +1,71 @@
+From 4e9792dc8ab29175295c79c35f9f6fbd2d453b35 Mon Sep 17 00:00:00 2001
+From: Octavian Purdila <octavian.purdila@intel.com>
+Date: Mon, 23 Dec 2013 19:06:31 +0200
+Subject: [PATCH] usbnet: mcs7830: rework link state detection
+
+Even with the quirks in commit dabdaf0c (mcs7830: Fix link state
+detection) there are still spurious link-down events for some chips
+where the false link-down events count go over a few hundreds.
+
+This patch takes a more conservative approach and only looks at
+link-down events where the link-down state is not combined with other
+states (e.g. half/full speed, pending frames in SRAM or TX status
+information valid). In all other cases we assume the link is up.
+
+Tested on MCS7830CV-DA (USB ID 9710:7830).
+
+Cc: Ondrej Zary <linux@rainbow-software.org>
+Cc: Michael Leun <lkml20120218@newton.leun.net>
+Cc: Ming Lei <ming.lei@canonical.com>
+Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/usb/mcs7830.c | 19 ++++---------------
+ 1 file changed, 4 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/net/usb/mcs7830.c b/drivers/net/usb/mcs7830.c
+index 9237c45..8dd48b5 100644
+--- a/drivers/net/usb/mcs7830.c
++++ b/drivers/net/usb/mcs7830.c
+@@ -117,7 +117,6 @@ enum {
+ struct mcs7830_data {
+       u8 multi_filter[8];
+       u8 config;
+-      u8 link_counter;
+ };
+ static const char driver_name[] = "MOSCHIP usb-ethernet driver";
+@@ -562,26 +561,16 @@ static void mcs7830_status(struct usbnet *dev, struct urb *urb)
+ {
+       u8 *buf = urb->transfer_buffer;
+       bool link, link_changed;
+-      struct mcs7830_data *data = mcs7830_get_data(dev);
+       if (urb->actual_length < 16)
+               return;
+-      link = !(buf[1] & 0x20);
++      link = !(buf[1] == 0x20);
+       link_changed = netif_carrier_ok(dev->net) != link;
+       if (link_changed) {
+-              data->link_counter++;
+-              /*
+-                 track link state 20 times to guard against erroneous
+-                 link state changes reported sometimes by the chip
+-               */
+-              if (data->link_counter > 20) {
+-                      data->link_counter = 0;
+-                      usbnet_link_change(dev, link, 0);
+-                      netdev_dbg(dev->net, "Link Status is: %d\n", link);
+-              }
+-      } else
+-              data->link_counter = 0;
++              usbnet_link_change(dev, link, 0);
++              netdev_dbg(dev->net, "Link Status is: %d\n", link);
++      }
+ }
+ static const struct driver_info moschip_info = {
+-- 
+2.0.0
+
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/mpage25-config.patch b/src/patches/mpage25-config.patch
new file mode 100644 (file)
index 0000000..fefc547
--- /dev/null
@@ -0,0 +1,46 @@
+diff -up mpage-2.5.6/Makefile.config mpage-2.5.6/Makefile
+--- mpage-2.5.6/Makefile.config        2004-05-30 21:38:31.000000000 +0200
++++ mpage-2.5.6/Makefile       2009-03-27 11:11:14.652186064 +0100
+@@ -40,7 +40,7 @@ CC=gcc
+ #  See glob.c for all possibilities
+ #
+ # PAGESIZE=Letter
+-PAGESIZE=A4
++PAGESIZE=Letter
+ #
+ # Define your spooler type
+@@ -50,7 +50,7 @@ PAGESIZE=A4
+ SPOOL_TYPE=BSD_SPOOLER
+ # PREFIX=e:/usr               # OS/2 type
+-PREFIX=/usr/local
++PREFIX=/usr
+ #PREFIX=/usr
+ BINDIR=$(PREFIX)/bin
+ LIBDIR=$(PREFIX)/share
+@@ -73,7 +73,7 @@ SHEETMARGIN=18 
+ #
+ DEFAULT_DUPLEX=0
+-DEFS = -DPAGE_DEF=\"${PAGESIZE}\" -DLIBDIR=\"${LIBDIR}/mpage\" -DDEFAULT_ENCODING=${ENCODING} -DDEFAULT_DUPLEX=${DEFAULT_DUPLEX} -DDEFAULTSMARGIN=${SHEETMARGIN} -DSPOOLER=${SPOOL_TYPE} # -DKANJI
++DEFS = -DPAGE_DEF=\"${PAGESIZE}\" -DLIBDIR=\"${LIBDIR}/mpage\" -DDEFAULT_ENCODING=${ENCODING} -DDEFAULT_DUPLEX=${DEFAULT_DUPLEX} -DDEFAULTSMARGIN=${SHEETMARGIN} -DSPOOLER=${SPOOL_TYPE} -DKANJI
+ ############################################################################
+@@ -107,7 +107,7 @@ O = .o
+ # If you are using gcc, you probably don't need to change anything here.
+ # Linux:
+-CFLAGS = -O2 -s $(DEFS) -Wall
++CFLAGS = $(RPM_OPT_FLAGS) $(DEFS) -Wall
+ # AIX (xlC on aix 4):
+ #CFLAGS = -O2 -s $(DEFS)
+@@ -183,5 +183,4 @@ install:
+       if [ ! -d $(MANDIR) ] ; then mkdir -p $(MANDIR) ; fi
+       cp mpage$(E) $(BINDIR)
+       cp mpage.1 $(MANDIR)
+-      -cp Encodings/* $(LIBDIR)/mpage
+-      -chmod 644 $(LIBDIR)/mpage/*
++      install -p -m 644 Encodings/* $(LIBDIR)/mpage
diff --git a/src/patches/multicat-makefile.patch b/src/patches/multicat-makefile.patch
new file mode 100644 (file)
index 0000000..60a987b
--- /dev/null
@@ -0,0 +1,12 @@
+--- Makefile.orig       2013-06-14 12:39:11.000000000 +0200
++++ Makefile    2013-06-14 12:39:20.000000000 +0200
+@@ -13,7 +13,7 @@
+ OBJ_LASTS = lasts.o
+ OBJ_MULTICAT_VALIDATE = multicat_validate.o util.o
+
+-PREFIX ?= /usr/local
++PREFIX ?= /usr
+ BIN = $(DESTDIR)/$(PREFIX)/bin
+ MAN = $(DESTDIR)/$(PREFIX)/share/man/man1
+
+
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/net-tools-1.60-no-hostname.patch b/src/patches/net-tools-1.60-no-hostname.patch
new file mode 100644 (file)
index 0000000..e2e34a1
--- /dev/null
@@ -0,0 +1,52 @@
+--- a/Makefile.bak     2014-06-03 19:01:39.758845492 +0000
++++ b/Makefile 2014-06-03 19:02:34.119171419 +0000
+@@ -76,7 +76,7 @@
+ NET_LIB_PATH = lib
+ NET_LIB_NAME = net-tools
+-PROGS := ifconfig hostname arp netstat route rarp slattach plipconfig nameif
++PROGS := ifconfig arp netstat route rarp slattach plipconfig nameif
+ -include config.make
+ ifeq ($(HAVE_IP_TOOLS),1)
+@@ -190,9 +190,6 @@
+ nameif:       nameif.o
+               $(CC) $(LDFLAGS) -o nameif nameif.o 
+-hostname:     hostname.o
+-              $(CC) $(LDFLAGS) -o hostname hostname.o $(DNLIB)
+-
+ route:                $(NET_LIB) route.o
+               $(CC) $(LDFLAGS) -o route route.o $(NLIB) $(RESLIB)
+@@ -224,7 +221,6 @@
+       install -m 0755 -d ${BASEDIR}/sbin
+       install -m 0755 -d ${BASEDIR}/bin
+       install -m 0755 arp        ${BASEDIR}/sbin
+-      install -m 0755 hostname   ${BASEDIR}/bin
+       install -m 0755 ifconfig   ${BASEDIR}/sbin
+       install -m 0755 nameif     ${BASEDIR}/sbin
+       install -m 0755 netstat    ${BASEDIR}/bin
+@@ -239,21 +235,11 @@
+ ifeq ($(HAVE_MII),1)
+       install -m 0755 mii-tool   $(BASEDIR)/sbin
+ endif
+-      ln -fs hostname $(BASEDIR)/bin/dnsdomainname
+-      ln -fs hostname $(BASEDIR)/bin/ypdomainname
+-      ln -fs hostname $(BASEDIR)/bin/nisdomainname
+-      ln -fs hostname $(BASEDIR)/bin/domainname
+-ifeq ($(HAVE_AFDECnet),1)
+-      ln -fs hostname $(BASEDIR)/bin/nodename
+-endif
+ savebin:
+       @for i in ${BASEDIR}/sbin/arp ${BASEDIR}/sbin/ifconfig \
+                  ${BASEDIR}/bin/netstat \
+-               ${BASEDIR}/sbin/rarp ${BASEDIR}/sbin/route \
+-               ${BASEDIR}/bin/hostname ${BASEDIR}/bin/ypdomainname \
+-                 ${BASEDIR}/bin/dnsdomainname ${BASEDIR}/bin/nisdomainname \
+-               ${BASEDIR}/bin/domainname ; do \
++               ${BASEDIR}/sbin/rarp ${BASEDIR}/sbin/route; do \
+                [ -f $$i ] && cp -f $$i $$i.old ; done ; echo Saved.
+ installdata:
diff --git a/src/patches/oinkmaster-2.0-add_community_rules.patch b/src/patches/oinkmaster-2.0-add_community_rules.patch
new file mode 100644 (file)
index 0000000..720efd6
--- /dev/null
@@ -0,0 +1,14 @@
+diff -Naur oinkmaster-2.0.org/oinkmaster.pl oinkmaster-2.0/oinkmaster.pl
+--- oinkmaster-2.0.org/oinkmaster.pl   2007-04-20 05:20:32.000000000 +0200
++++ oinkmaster-2.0/oinkmaster.pl       2013-07-15 16:46:40.000000000 +0200
+@@ -1159,6 +1159,10 @@
+         }
+     }
++  # hack for community-ruleset.
++  if (-d "$dir/community-rules") {
++      move("$dir/community-rules","$dir/$rules_dir");
++  }
+   # Make sure that non-empty rules directory existed in archive.
+   # We permit empty rules directory if min_files is set to 0 though.
+     clean_exit("$url: no \"$rules_dir\" directory found in tar file.")
diff --git a/src/patches/openssl-1.0.0-beta5-enginesdir.patch b/src/patches/openssl-1.0.0-beta5-enginesdir.patch
new file mode 100644 (file)
index 0000000..d942d6e
--- /dev/null
@@ -0,0 +1,52 @@
+diff -up openssl-1.0.0-beta5/Configure.enginesdir openssl-1.0.0-beta5/Configure
+--- openssl-1.0.0-beta5/Configure.enginesdir   2010-01-20 18:07:05.000000000 +0100
++++ openssl-1.0.0-beta5/Configure      2010-01-20 18:10:48.000000000 +0100
+@@ -622,6 +622,7 @@ my $idx_multilib = $idx++;
+ my $prefix="";
+ my $libdir="";
+ my $openssldir="";
++my $enginesdir="";
+ my $exe_ext="";
+ my $install_prefix= "$ENV{'INSTALL_PREFIX'}";
+ my $cross_compile_prefix="";
+@@ -833,6 +834,10 @@ PROCESS_ARGS:
+                               {
+                               $openssldir=$1;
+                               }
++                      elsif (/^--enginesdir=(.*)$/)
++                              {
++                              $enginesdir=$1;
++                              }
+                       elsif (/^--install.prefix=(.*)$/)
+                               {
+                               $install_prefix=$1;
+@@ -1053,7 +1058,7 @@ chop $prefix if $prefix =~ /.\/$/;
+ $openssldir=$prefix . "/ssl" if $openssldir eq "";
+ $openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/])/;
+-
++$enginesdir="$prefix/lib/engines" if $enginesdir eq "";
+ print "IsMK1MF=$IsMK1MF\n";
+@@ -1673,7 +1678,7 @@ while (<IN>)
+               }
+       elsif   (/^#define\s+ENGINESDIR/)
+               {
+-              my $foo = "$prefix/$libdir/engines";
++              my $foo = "$enginesdir";
+               $foo =~ s/\\/\\\\/g;
+               print OUT "#define ENGINESDIR \"$foo\"\n";
+               }
+diff -up openssl-1.0.0-beta5/engines/Makefile.enginesdir openssl-1.0.0-beta5/engines/Makefile
+--- openssl-1.0.0-beta5/engines/Makefile.enginesdir    2010-01-16 21:06:09.000000000 +0100
++++ openssl-1.0.0-beta5/engines/Makefile       2010-01-20 18:07:05.000000000 +0100
+@@ -124,7 +124,7 @@ install:
+                               sfx=".so"; \
+                               cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
+                         fi; \
+-                        chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
++                        chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
+                         mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx ); \
+               done; \
+       fi
diff --git a/src/patches/openssl-1.0.1-beta2-build.patch b/src/patches/openssl-1.0.1-beta2-build.patch
new file mode 100644 (file)
index 0000000..0a5cef1
--- /dev/null
@@ -0,0 +1,109 @@
+diff -up openssl-1.0.1-beta2/Configure.rpmbuild openssl-1.0.1-beta2/Configure
+--- openssl-1.0.1-beta2/Configure.rpmbuild     2012-01-05 01:07:34.000000000 +0100
++++ openssl-1.0.1-beta2/Configure      2012-02-02 12:43:56.547409325 +0100
+@@ -343,23 +343,23 @@ my %table=(
+ ####
+ # *-generic* is endian-neutral target, but ./config is free to
+ # throw in -D[BL]_ENDIAN, whichever appropriate...
+-"linux-generic32","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+-"linux-ppc",  "gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-generic32","gcc:-DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
++"linux-ppc",  "gcc:-DB_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
+ # It's believed that majority of ARM toolchains predefine appropriate -march.
+ # If you compiler does not, do complement config command line with one!
+-"linux-armv4",        "gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-armv4",        "gcc:-DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
+ #### IA-32 targets...
+ "linux-ia32-icc",     "icc:-DL_ENDIAN -DTERMIO -O2 -no_cpprt::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+-"linux-elf",  "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-elf",  "gcc:-DL_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
+ "linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out",
+ ####
+-"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+-"linux-ppc64",        "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
+-"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-generic64","gcc:-DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
++"linux-ppc64",        "gcc:-m64 -DB_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
++"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
+ "linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+ "linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+-"linux-x86_64",       "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
+-"linux64-s390x",      "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
++"linux-x86_64",       "gcc:-m64 -DL_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
++"linux64-s390x",      "gcc:-m64 -DB_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:64:dlfcn:linux-shared:-fPIC:-m64 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
+ #### So called "highgprs" target for z/Architecture CPUs
+ # "Highgprs" is kernel feature first implemented in Linux 2.6.32, see
+ # /proc/cpuinfo. The idea is to preserve most significant bits of
+@@ -373,16 +373,16 @@ my %table=(
+ # ldconfig and run-time linker to autodiscover. Unfortunately it
+ # doesn't work just yet, because of couple of bugs in glibc
+ # sysdeps/s390/dl-procinfo.c affecting ldconfig and ld.so.1...
+-"linux32-s390x",      "gcc:-m31 -Wa,-mzarch -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:".eval{my $asm=$s390x_asm;$asm=~s/bn\-s390x\.o/bn_asm.o/;$asm}.":31:dlfcn:linux-shared:-fPIC:-m31:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/highgprs",
++"linux32-s390x",      "gcc:-m31 -Wa,-mzarch -DB_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:".eval{my $asm=$s390x_asm;$asm=~s/bn\-s390x\.o/bn_asm.o/;$asm}.":31:dlfcn:linux-shared:-fPIC:-m31 \$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::/highgprs",
+ #### SPARC Linux setups
+ # Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
+ # assisted with debugging of following two configs.
+-"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-sparcv8","gcc:-DB_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS) -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
+ # it's a real mess with -mcpu=ultrasparc option under Linux, but
+ # -Wa,-Av8plus should do the trick no matter what.
+-"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-sparcv9","gcc:-DB_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS) -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
+ # GCC 3.1 is a requirement
+-"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
++"linux64-sparcv9","gcc:-DB_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER):::64",
+ #### Alpha Linux with GNU C and Compaq C setups
+ # Special notes:
+ # - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
+@@ -396,8 +396,8 @@ my %table=(
+ #
+ #                                     <appro@fy.chalmers.se>
+ #
+-"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
+-"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
++"linux-alpha-gcc","gcc:-DL_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
++"linux-alpha+bwx-gcc","gcc:-DL_ENDIAN -DTERMIO -Wall \$(RPM_OPT_FLAGS)::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC:\$(RPM_OPT_FLAGS):.so.\$(SHLIB_SONAMEVER)",
+ "linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
+ "linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
+@@ -1678,7 +1678,7 @@ while (<IN>)
+       elsif ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*\.[^\.]*$/)
+               {
+               my $sotmp = $1;
+-              s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_MAJOR) .s$sotmp/;
++              s/^SHARED_LIBS_LINK_EXTS=.*/SHARED_LIBS_LINK_EXTS=.s$sotmp.\$(SHLIB_SONAMEVER) .s$sotmp/;
+               }
+       elsif ($shared_extension ne "" && $shared_extension =~ /^\.[^\.]*\.[^\.]*\.dylib$/)
+               {
+diff -up openssl-1.0.1-beta2/Makefile.org.rpmbuild openssl-1.0.1-beta2/Makefile.org
+--- openssl-1.0.1-beta2/Makefile.org.rpmbuild  2011-12-27 16:17:50.000000000 +0100
++++ openssl-1.0.1-beta2/Makefile.org   2012-02-02 12:30:23.652495435 +0100
+@@ -10,6 +10,7 @@ SHLIB_VERSION_HISTORY=
+ SHLIB_MAJOR=
+ SHLIB_MINOR=
+ SHLIB_EXT=
++SHLIB_SONAMEVER=10
+ PLATFORM=dist
+ OPTIONS=
+ CONFIGURE_ARGS=
+@@ -333,10 +334,9 @@ clean-shared:
+ link-shared:
+       @ set -e; for i in $(SHLIBDIRS); do \
+               $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \
+-                      LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
++                      LIBNAME=$$i LIBVERSION=$(SHLIB_SONAMEVER) \
+                       LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
+                       symlink.$(SHLIB_TARGET); \
+-              libs="$$libs -l$$i"; \
+       done
+ build-shared: do_$(SHLIB_TARGET) link-shared
+@@ -347,7 +347,7 @@ do_$(SHLIB_TARGET):
+                       libs="$(LIBKRB5) $$libs"; \
+               fi; \
+               $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
+-                      LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
++                      LIBNAME=$$i LIBVERSION=$(SHLIB_SONAMEVER) \
+                       LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
+                       LIBDEPS="$$libs $(EX_LIBS)" \
+                       link_a.$(SHLIB_TARGET); \
diff --git a/src/patches/openssl-1.0.1e-cryptodev.patch b/src/patches/openssl-1.0.1e-cryptodev.patch
new file mode 100644 (file)
index 0000000..29b6f77
--- /dev/null
@@ -0,0 +1,712 @@
+Patch created by Michael Tremer <michael.tremer@ipfire.org> from
+  http://download.gna.org/cryptodev-linux/cryptodev-linux-1.6.tar.gz
+
+diff -Nur openssl-1.0.1e-vanilla/crypto/cryptodev.h openssl-1.0.1e/crypto/cryptodev.h
+--- openssl-1.0.1e-vanilla/crypto/cryptodev.h  1970-01-01 00:00:00.000000000 +0000
++++ openssl-1.0.1e/crypto/cryptodev.h  2013-12-25 14:27:20.907326820 +0000
+@@ -0,0 +1,292 @@
++/* This is a source compatible implementation with the original API of
++ * cryptodev by Angelos D. Keromytis, found at openbsd cryptodev.h.
++ * Placed under public domain */
++
++#ifndef L_CRYPTODEV_H
++#define L_CRYPTODEV_H
++
++#include <linux/types.h>
++#ifndef __KERNEL__
++#define __user
++#endif
++
++/* API extensions for linux */
++#define CRYPTO_HMAC_MAX_KEY_LEN               512
++#define CRYPTO_CIPHER_MAX_KEY_LEN     64
++
++/* All the supported algorithms
++ */
++enum cryptodev_crypto_op_t {
++      CRYPTO_DES_CBC = 1,
++      CRYPTO_3DES_CBC = 2,
++      CRYPTO_BLF_CBC = 3,
++      CRYPTO_CAST_CBC = 4,
++      CRYPTO_SKIPJACK_CBC = 5,
++      CRYPTO_MD5_HMAC = 6,
++      CRYPTO_SHA1_HMAC = 7,
++      CRYPTO_RIPEMD160_HMAC = 8,
++      CRYPTO_MD5_KPDK = 9,
++      CRYPTO_SHA1_KPDK = 10,
++      CRYPTO_RIJNDAEL128_CBC = 11,
++      CRYPTO_AES_CBC = CRYPTO_RIJNDAEL128_CBC,
++      CRYPTO_ARC4 = 12,
++      CRYPTO_MD5 = 13,
++      CRYPTO_SHA1 = 14,
++      CRYPTO_DEFLATE_COMP = 15,
++      CRYPTO_NULL = 16,
++      CRYPTO_LZS_COMP = 17,
++      CRYPTO_SHA2_256_HMAC = 18,
++      CRYPTO_SHA2_384_HMAC = 19,
++      CRYPTO_SHA2_512_HMAC = 20,
++      CRYPTO_AES_CTR = 21,
++      CRYPTO_AES_XTS = 22,
++      CRYPTO_AES_ECB = 23,
++      CRYPTO_AES_GCM = 50,
++
++      CRYPTO_CAMELLIA_CBC = 101,
++      CRYPTO_RIPEMD160,
++      CRYPTO_SHA2_224,
++      CRYPTO_SHA2_256,
++      CRYPTO_SHA2_384,
++      CRYPTO_SHA2_512,
++      CRYPTO_SHA2_224_HMAC,
++      CRYPTO_ALGORITHM_ALL, /* Keep updated - see below */
++};
++
++#define       CRYPTO_ALGORITHM_MAX    (CRYPTO_ALGORITHM_ALL - 1)
++
++/* Values for ciphers */
++#define DES_BLOCK_LEN         8
++#define DES3_BLOCK_LEN                8
++#define RIJNDAEL128_BLOCK_LEN 16
++#define AES_BLOCK_LEN         RIJNDAEL128_BLOCK_LEN
++#define CAMELLIA_BLOCK_LEN      16
++#define BLOWFISH_BLOCK_LEN    8
++#define SKIPJACK_BLOCK_LEN    8
++#define CAST128_BLOCK_LEN     8
++
++/* the maximum of the above */
++#define EALG_MAX_BLOCK_LEN    16
++
++/* Values for hashes/MAC */
++#define AALG_MAX_RESULT_LEN           64
++
++/* maximum length of verbose alg names (depends on CRYPTO_MAX_ALG_NAME) */
++#define CRYPTODEV_MAX_ALG_NAME                64
++
++#define HASH_MAX_LEN 64
++
++/* input of CIOCGSESSION */
++struct session_op {
++      /* Specify either cipher or mac
++       */
++      __u32   cipher;         /* cryptodev_crypto_op_t */
++      __u32   mac;            /* cryptodev_crypto_op_t */
++
++      __u32   keylen;
++      __u8    __user *key;
++      __u32   mackeylen;
++      __u8    __user *mackey;
++
++      __u32   ses;            /* session identifier */
++};
++
++struct session_info_op {
++      __u32 ses;              /* session identifier */
++
++      /* verbose names for the requested ciphers */
++      struct alg_info {
++              char cra_name[CRYPTODEV_MAX_ALG_NAME];
++              char cra_driver_name[CRYPTODEV_MAX_ALG_NAME];
++      } cipher_info, hash_info;
++
++      __u16   alignmask;      /* alignment constraints */
++      __u32   flags;          /* SIOP_FLAGS_* */
++};
++
++/* If this flag is set then this algorithm uses
++ * a driver only available in kernel (software drivers,
++ * or drivers based on instruction sets do not set this flag).
++ *
++ * If multiple algorithms are involved (as in AEAD case), then
++ * if one of them is kernel-driver-only this flag will be set.
++ */
++#define SIOP_FLAG_KERNEL_DRIVER_ONLY 1
++
++#define       COP_ENCRYPT     0
++#define COP_DECRYPT   1
++
++/* input of CIOCCRYPT */
++struct crypt_op {
++      __u32   ses;            /* session identifier */
++      __u16   op;             /* COP_ENCRYPT or COP_DECRYPT */
++      __u16   flags;          /* see COP_FLAG_* */
++      __u32   len;            /* length of source data */
++      __u8    __user *src;    /* source data */
++      __u8    __user *dst;    /* pointer to output data */
++      /* pointer to output data for hash/MAC operations */
++      __u8    __user *mac;
++      /* initialization vector for encryption operations */
++      __u8    __user *iv;
++};
++
++/* input of CIOCAUTHCRYPT */
++struct crypt_auth_op {
++      __u32   ses;            /* session identifier */
++      __u16   op;             /* COP_ENCRYPT or COP_DECRYPT */
++      __u16   flags;          /* see COP_FLAG_AEAD_* */
++      __u32   len;            /* length of source data */
++      __u32   auth_len;       /* length of auth data */
++      __u8    __user *auth_src;       /* authenticated-only data */
++
++      /* The current implementation is more efficient if data are
++       * encrypted in-place (src==dst). */
++      __u8    __user *src;    /* data to be encrypted and authenticated */
++      __u8    __user *dst;    /* pointer to output data. Must have
++                               * space for tag. For TLS this should be at least 
++                               * len + tag_size + block_size for padding */
++
++      __u8    __user *tag;    /* where the tag will be copied to. TLS mode
++                                 * doesn't use that as tag is copied to dst.
++                                 * SRTP mode copies tag there. */
++      __u32   tag_len;        /* the length of the tag. Use zero for digest size or max tag. */
++
++      /* initialization vector for encryption operations */
++      __u8    __user *iv;
++      __u32   iv_len;
++};
++
++/* In plain AEAD mode the following are required:
++ *  flags   : 0
++ *  iv      : the initialization vector (12 bytes)
++ *  auth_len: the length of the data to be authenticated
++ *  auth_src: the data to be authenticated
++ *  len     : length of data to be encrypted
++ *  src     : the data to be encrypted
++ *  dst     : space to hold encrypted data. It must have
++ *            at least a size of len + tag_size.
++ *  tag_size: the size of the desired authentication tag or zero to use
++ *            the maximum tag output.
++ *
++ * Note tag isn't being used because the Linux AEAD interface
++ * copies the tag just after data.
++ */
++
++/* In TLS mode (used for CBC ciphers that required padding) 
++ * the following are required:
++ *  flags   : COP_FLAG_AEAD_TLS_TYPE
++ *  iv      : the initialization vector
++ *  auth_len: the length of the data to be authenticated only
++ *  len     : length of data to be encrypted
++ *  auth_src: the data to be authenticated
++ *  src     : the data to be encrypted
++ *  dst     : space to hold encrypted data (preferably in-place). It must have
++ *            at least a size of len + tag_size + blocksize.
++ *  tag_size: the size of the desired authentication tag or zero to use
++ *            the default mac output.
++ *
++ * Note that the padding used is the minimum padding.
++ */
++
++/* In SRTP mode the following are required:
++ *  flags   : COP_FLAG_AEAD_SRTP_TYPE
++ *  iv      : the initialization vector
++ *  auth_len: the length of the data to be authenticated. This must
++ *            include the SRTP header + SRTP payload (data to be encrypted) + rest
++ *            
++ *  len     : length of data to be encrypted
++ *  auth_src: pointer the data to be authenticated. Should point at the same buffer as src.
++ *  src     : pointer to the data to be encrypted.
++ *  dst     : This is mandatory to be the same as src (in-place only).
++ *  tag_size: the size of the desired authentication tag or zero to use
++ *            the default mac output.
++ *  tag     : Pointer to an address where the authentication tag will be copied.
++ */
++
++
++/* struct crypt_op flags */
++
++#define COP_FLAG_NONE         (0 << 0) /* totally no flag */
++#define COP_FLAG_UPDATE               (1 << 0) /* multi-update hash mode */
++#define COP_FLAG_FINAL                (1 << 1) /* multi-update final hash mode */
++#define COP_FLAG_WRITE_IV     (1 << 2) /* update the IV during operation */
++#define COP_FLAG_NO_ZC                (1 << 3) /* do not zero-copy */
++#define COP_FLAG_AEAD_TLS_TYPE  (1 << 4) /* authenticate and encrypt using the 
++                                          * TLS protocol rules */
++#define COP_FLAG_AEAD_SRTP_TYPE  (1 << 5) /* authenticate and encrypt using the 
++                                           * SRTP protocol rules */
++#define COP_FLAG_RESET                (1 << 6) /* multi-update reset the state.
++                                          * should be used in combination
++                                          * with COP_FLAG_UPDATE */
++
++
++/* Stuff for bignum arithmetic and public key
++ * cryptography - not supported yet by linux
++ * cryptodev.
++ */
++
++#define       CRYPTO_ALG_FLAG_SUPPORTED       1
++#define       CRYPTO_ALG_FLAG_RNG_ENABLE      2
++#define       CRYPTO_ALG_FLAG_DSA_SHA         4
++
++struct crparam {
++      __u8    *crp_p;
++      __u32   crp_nbits;
++};
++
++#define CRK_MAXPARAM  8
++
++/* input of CIOCKEY */
++struct crypt_kop {
++      __u32   crk_op;         /* cryptodev_crk_ot_t */
++      __u32   crk_status;
++      __u16   crk_iparams;
++      __u16   crk_oparams;
++      __u32   crk_pad1;
++      struct crparam  crk_param[CRK_MAXPARAM];
++};
++
++enum cryptodev_crk_op_t {
++      CRK_MOD_EXP = 0,
++      CRK_MOD_EXP_CRT = 1,
++      CRK_DSA_SIGN = 2,
++      CRK_DSA_VERIFY = 3,
++      CRK_DH_COMPUTE_KEY = 4,
++      CRK_ALGORITHM_ALL
++};
++
++#define CRK_ALGORITHM_MAX     (CRK_ALGORITHM_ALL-1)
++
++/* features to be queried with CIOCASYMFEAT ioctl
++ */
++#define CRF_MOD_EXP           (1 << CRK_MOD_EXP)
++#define CRF_MOD_EXP_CRT               (1 << CRK_MOD_EXP_CRT)
++#define CRF_DSA_SIGN          (1 << CRK_DSA_SIGN)
++#define CRF_DSA_VERIFY                (1 << CRK_DSA_VERIFY)
++#define CRF_DH_COMPUTE_KEY    (1 << CRK_DH_COMPUTE_KEY)
++
++
++/* ioctl's. Compatible with old linux cryptodev.h
++ */
++#define CRIOGET         _IOWR('c', 101, __u32)
++#define CIOCGSESSION    _IOWR('c', 102, struct session_op)
++#define CIOCFSESSION    _IOW('c', 103, __u32)
++#define CIOCCRYPT       _IOWR('c', 104, struct crypt_op)
++#define CIOCKEY         _IOWR('c', 105, struct crypt_kop)
++#define CIOCASYMFEAT    _IOR('c', 106, __u32)
++#define CIOCGSESSINFO _IOWR('c', 107, struct session_info_op)
++
++/* to indicate that CRIOGET is not required in linux
++ */
++#define CRIOGET_NOT_NEEDED 1
++
++/* additional ioctls for AEAD */
++#define CIOCAUTHCRYPT   _IOWR('c', 109, struct crypt_auth_op)
++
++/* additional ioctls for asynchronous operation.
++ * These are conditionally enabled since version 1.6.
++ */
++#define CIOCASYNCCRYPT    _IOW('c', 110, struct crypt_op)
++#define CIOCASYNCFETCH    _IOR('c', 111, struct crypt_op)
++
++#endif /* L_CRYPTODEV_H */
+diff -Nur openssl-1.0.1e-vanilla/crypto/engine/eng_cryptodev.c openssl-1.0.1e/crypto/engine/eng_cryptodev.c
+--- openssl-1.0.1e-vanilla/crypto/engine/eng_cryptodev.c       2013-02-11 15:26:04.000000000 +0000
++++ openssl-1.0.1e/crypto/engine/eng_cryptodev.c       2013-12-25 14:27:06.968877039 +0000
+@@ -2,6 +2,7 @@
+  * Copyright (c) 2002 Bob Beck <beck@openbsd.org>
+  * Copyright (c) 2002 Theo de Raadt
+  * Copyright (c) 2002 Markus Friedl
++ * Copyright (c) 2012 Nikos Mavrogiannopoulos
+  * All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+@@ -74,8 +75,6 @@
+       int d_fd;
+ #ifdef USE_CRYPTODEV_DIGESTS
+-      char dummy_mac_key[HASH_MAX_LEN];
+-
+       unsigned char digest_res[HASH_MAX_LEN];
+       char *mac_data;
+       int mac_len;
+@@ -157,15 +156,21 @@
+ static struct {
+       int     id;
+       int     nid;
+-      int     keylen;
++      int     digestlen;
+ } digests[] = {
++#if 0
++        /* HMAC is not supported */
+       { CRYPTO_MD5_HMAC,              NID_hmacWithMD5,        16},
+       { CRYPTO_SHA1_HMAC,             NID_hmacWithSHA1,       20},
+-      { CRYPTO_RIPEMD160_HMAC,        NID_ripemd160,          16/*?*/},
+-      { CRYPTO_MD5_KPDK,              NID_undef,              0},
+-      { CRYPTO_SHA1_KPDK,             NID_undef,              0},
++      { CRYPTO_SHA2_256_HMAC,         NID_hmacWithSHA256,     32},
++      { CRYPTO_SHA2_384_HMAC,         NID_hmacWithSHA384,     48},
++      { CRYPTO_SHA2_512_HMAC,         NID_hmacWithSHA512,     64},
++#endif
+       { CRYPTO_MD5,                   NID_md5,                16},
+       { CRYPTO_SHA1,                  NID_sha1,               20},
++      { CRYPTO_SHA2_256,              NID_sha256,             32},
++      { CRYPTO_SHA2_384,              NID_sha384,             48},
++      { CRYPTO_SHA2_512,              NID_sha512,             64},
+       { 0,                            NID_undef,              0},
+ };
+ #endif
+@@ -243,13 +248,14 @@
+       static int nids[CRYPTO_ALGORITHM_MAX];
+       struct session_op sess;
+       int fd, i, count = 0;
++      unsigned char fake_key[CRYPTO_CIPHER_MAX_KEY_LEN];
+       if ((fd = get_dev_crypto()) < 0) {
+               *cnids = NULL;
+               return (0);
+       }
+       memset(&sess, 0, sizeof(sess));
+-      sess.key = (caddr_t)"123456789abcdefghijklmno";
++      sess.key = (void*)fake_key;
+       for (i = 0; ciphers[i].id && count < CRYPTO_ALGORITHM_MAX; i++) {
+               if (ciphers[i].nid == NID_undef)
+@@ -281,6 +287,7 @@
+ get_cryptodev_digests(const int **cnids)
+ {
+       static int nids[CRYPTO_ALGORITHM_MAX];
++      unsigned char fake_key[CRYPTO_CIPHER_MAX_KEY_LEN];
+       struct session_op sess;
+       int fd, i, count = 0;
+@@ -289,12 +296,12 @@
+               return (0);
+       }
+       memset(&sess, 0, sizeof(sess));
+-      sess.mackey = (caddr_t)"123456789abcdefghijklmno";
++      sess.mackey = fake_key;
+       for (i = 0; digests[i].id && count < CRYPTO_ALGORITHM_MAX; i++) {
+               if (digests[i].nid == NID_undef)
+                       continue;
+               sess.mac = digests[i].id;
+-              sess.mackeylen = digests[i].keylen;
++              sess.mackeylen = 8;
+               sess.cipher = 0;
+               if (ioctl(fd, CIOCGSESSION, &sess) != -1 &&
+                   ioctl(fd, CIOCFSESSION, &sess.ses) != -1)
+@@ -382,14 +389,14 @@
+       cryp.ses = sess->ses;
+       cryp.flags = 0;
+       cryp.len = inl;
+-      cryp.src = (caddr_t) in;
+-      cryp.dst = (caddr_t) out;
++      cryp.src = (void*) in;
++      cryp.dst = (void*) out;
+       cryp.mac = 0;
+       cryp.op = ctx->encrypt ? COP_ENCRYPT : COP_DECRYPT;
+       if (ctx->cipher->iv_len) {
+-              cryp.iv = (caddr_t) ctx->iv;
++              cryp.iv = (void*) ctx->iv;
+               if (!ctx->encrypt) {
+                       iiv = in + inl - ctx->cipher->iv_len;
+                       memcpy(save_iv, iiv, ctx->cipher->iv_len);
+@@ -440,7 +447,7 @@
+       if ((state->d_fd = get_dev_crypto()) < 0)
+               return (0);
+-      sess->key = (caddr_t)key;
++      sess->key = (void*)key;
+       sess->keylen = ctx->key_len;
+       sess->cipher = cipher;
+@@ -660,18 +667,6 @@
+ }
+-static int
+-digest_key_length(int nid)
+-{
+-      int i;
+-
+-      for (i = 0; digests[i].id; i++)
+-              if (digests[i].nid == nid)
+-                      return digests[i].keylen;
+-      return (0);
+-}
+-
+-
+ static int cryptodev_digest_init(EVP_MD_CTX *ctx)
+ {
+       struct dev_crypto_state *state = ctx->md_data;
+@@ -682,7 +677,6 @@
+               printf("cryptodev_digest_init: Can't get digest \n");
+               return (0);
+       }
+-
+       memset(state, 0, sizeof(struct dev_crypto_state));
+       if ((state->d_fd = get_dev_crypto()) < 0) {
+@@ -690,8 +684,8 @@
+               return (0);
+       }
+-      sess->mackey = state->dummy_mac_key;
+-      sess->mackeylen = digest_key_length(ctx->digest->type);
++      sess->mackey = NULL;
++      sess->mackeylen = 0;
+       sess->mac = digest;
+       if (ioctl(state->d_fd, CIOCGSESSION, sess) < 0) {
+@@ -707,8 +701,8 @@
+ static int cryptodev_digest_update(EVP_MD_CTX *ctx, const void *data,
+               size_t count)
+ {
+-      struct crypt_op cryp;
+       struct dev_crypto_state *state = ctx->md_data;
++      struct crypt_op cryp;
+       struct session_op *sess = &state->d_sess;
+       if (!data || state->d_fd < 0) {
+@@ -717,7 +711,7 @@
+       }
+       if (!count) {
+-              return (0);
++              return (1);
+       }
+       if (!(ctx->flags & EVP_MD_CTX_FLAG_ONESHOT)) {
+@@ -740,9 +734,9 @@
+       cryp.ses = sess->ses;
+       cryp.flags = 0;
+       cryp.len = count;
+-      cryp.src = (caddr_t) data;
++      cryp.src = (void*) data;
+       cryp.dst = NULL;
+-      cryp.mac = (caddr_t) state->digest_res;
++      cryp.mac = (void*) state->digest_res;
+       if (ioctl(state->d_fd, CIOCCRYPT, &cryp) < 0) {
+               printf("cryptodev_digest_update: digest failed\n");
+               return (0);
+@@ -757,8 +751,6 @@
+       struct dev_crypto_state *state = ctx->md_data;
+       struct session_op *sess = &state->d_sess;
+-      int ret = 1;
+-
+       if (!md || state->d_fd < 0) {
+               printf("cryptodev_digest_final: illegal input\n");
+               return(0);
+@@ -772,7 +764,7 @@
+               cryp.len = state->mac_len;
+               cryp.src = state->mac_data;
+               cryp.dst = NULL;
+-              cryp.mac = (caddr_t)md;
++              cryp.mac = (void*)md;
+               if (ioctl(state->d_fd, CIOCCRYPT, &cryp) < 0) {
+                       printf("cryptodev_digest_final: digest failed\n");
+                       return (0);
+@@ -783,7 +775,7 @@
+       memcpy(md, state->digest_res, ctx->digest->md_size);
+-      return (ret);
++      return 1;
+ }
+@@ -835,8 +827,8 @@
+       digest = digest_nid_to_cryptodev(to->digest->type);
+-      sess->mackey = dstate->dummy_mac_key;
+-      sess->mackeylen = digest_key_length(to->digest->type);
++      sess->mackey = NULL;
++      sess->mackeylen = 0;
+       sess->mac = digest;
+       dstate->d_fd = get_dev_crypto();
+@@ -861,34 +853,117 @@
+ }
+-const EVP_MD cryptodev_sha1 = {
++static const EVP_MD cryptodev_sha1 = {
+       NID_sha1,
+-      NID_undef, 
++      NID_sha1WithRSAEncryption,
+       SHA_DIGEST_LENGTH, 
++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT)
++      EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|
++      EVP_MD_FLAG_DIGALGID_ABSENT|
++#endif
+       EVP_MD_FLAG_ONESHOT,
+       cryptodev_digest_init,
+       cryptodev_digest_update,
+       cryptodev_digest_final,
+       cryptodev_digest_copy,
+       cryptodev_digest_cleanup,
+-      EVP_PKEY_NULL_method,
++      EVP_PKEY_RSA_method,
+       SHA_CBLOCK,
+-      sizeof(struct dev_crypto_state),
++      sizeof(EVP_MD *)+sizeof(struct dev_crypto_state),
++};
++
++static const EVP_MD cryptodev_sha256 = {
++      NID_sha256,
++      NID_sha256WithRSAEncryption,
++      SHA256_DIGEST_LENGTH, 
++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT)
++      EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|
++      EVP_MD_FLAG_DIGALGID_ABSENT|
++#endif
++      EVP_MD_FLAG_ONESHOT,
++      cryptodev_digest_init,
++      cryptodev_digest_update,
++      cryptodev_digest_final,
++      cryptodev_digest_copy,
++      cryptodev_digest_cleanup,
++      EVP_PKEY_RSA_method,
++      SHA256_CBLOCK,
++      sizeof(EVP_MD *)+sizeof(struct dev_crypto_state),
++};
++static const EVP_MD cryptodev_sha224 = {
++      NID_sha224,
++      NID_sha224WithRSAEncryption, 
++      SHA224_DIGEST_LENGTH, 
++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT)
++      EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|
++      EVP_MD_FLAG_DIGALGID_ABSENT|
++#endif
++      EVP_MD_FLAG_ONESHOT,
++      cryptodev_digest_init,
++      cryptodev_digest_update,
++      cryptodev_digest_final,
++      cryptodev_digest_copy,
++      cryptodev_digest_cleanup,
++      EVP_PKEY_RSA_method,
++      SHA256_CBLOCK,
++      sizeof(EVP_MD *)+sizeof(struct dev_crypto_state),
++};
++
++static const EVP_MD cryptodev_sha384 = {
++      NID_sha384,
++      NID_sha384WithRSAEncryption, 
++      SHA384_DIGEST_LENGTH, 
++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT)
++      EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|
++      EVP_MD_FLAG_DIGALGID_ABSENT|
++#endif
++      EVP_MD_FLAG_ONESHOT,
++      cryptodev_digest_init,
++      cryptodev_digest_update,
++      cryptodev_digest_final,
++      cryptodev_digest_copy,
++      cryptodev_digest_cleanup,
++      EVP_PKEY_RSA_method,
++      SHA512_CBLOCK,
++      sizeof(EVP_MD *)+sizeof(struct dev_crypto_state),
++};
++
++static const EVP_MD cryptodev_sha512 = {
++      NID_sha512,
++      NID_sha512WithRSAEncryption, 
++      SHA512_DIGEST_LENGTH, 
++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT)
++      EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|
++      EVP_MD_FLAG_DIGALGID_ABSENT|
++#endif
++      EVP_MD_FLAG_ONESHOT,
++      cryptodev_digest_init,
++      cryptodev_digest_update,
++      cryptodev_digest_final,
++      cryptodev_digest_copy,
++      cryptodev_digest_cleanup,
++      EVP_PKEY_RSA_method,
++      SHA512_CBLOCK,
++      sizeof(EVP_MD *)+sizeof(struct dev_crypto_state),
+ };
+-const EVP_MD cryptodev_md5 = {
++static const EVP_MD cryptodev_md5 = {
+       NID_md5,
+-      NID_undef, 
++      NID_md5WithRSAEncryption, 
+       16 /* MD5_DIGEST_LENGTH */, 
++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT)
++      EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|
++      EVP_MD_FLAG_DIGALGID_ABSENT|
++#endif
+       EVP_MD_FLAG_ONESHOT,
+       cryptodev_digest_init,
+       cryptodev_digest_update,
+       cryptodev_digest_final,
+       cryptodev_digest_copy,
+       cryptodev_digest_cleanup,
+-      EVP_PKEY_NULL_method,
++      EVP_PKEY_RSA_method,
+       64 /* MD5_CBLOCK */,
+-      sizeof(struct dev_crypto_state),
++      sizeof(EVP_MD *)+sizeof(struct dev_crypto_state),
+ };
+ #endif /* USE_CRYPTODEV_DIGESTS */
+@@ -909,6 +984,18 @@
+       case NID_sha1:
+               *digest = &cryptodev_sha1;
+               break;
++      case NID_sha224:
++              *digest = &cryptodev_sha224;
++              break;
++      case NID_sha256:
++              *digest = &cryptodev_sha256;
++              break;
++      case NID_sha384:
++              *digest = &cryptodev_sha384;
++              break;
++      case NID_sha512:
++              *digest = &cryptodev_sha512;
++              break;
+       default:
+ #endif /* USE_CRYPTODEV_DIGESTS */
+               *digest = NULL;
+@@ -940,7 +1027,7 @@
+               return (1);
+       memset(b, 0, bytes);
+-      crp->crp_p = (caddr_t) b;
++      crp->crp_p = (void*) b;
+       crp->crp_nbits = bits;
+       for (i = 0, j = 0; i < a->top; i++) {
+@@ -1193,7 +1280,7 @@
+       kop.crk_op = CRK_DSA_SIGN;
+       /* inputs: dgst dsa->p dsa->q dsa->g dsa->priv_key */
+-      kop.crk_param[0].crp_p = (caddr_t)dgst;
++      kop.crk_param[0].crp_p = (void*)dgst;
+       kop.crk_param[0].crp_nbits = dlen * 8;
+       if (bn2crparam(dsa->p, &kop.crk_param[1]))
+               goto err;
+@@ -1233,7 +1320,7 @@
+       kop.crk_op = CRK_DSA_VERIFY;
+       /* inputs: dgst dsa->p dsa->q dsa->g dsa->pub_key sig->r sig->s */
+-      kop.crk_param[0].crp_p = (caddr_t)dgst;
++      kop.crk_param[0].crp_p = (void*)dgst;
+       kop.crk_param[0].crp_nbits = dlen * 8;
+       if (bn2crparam(dsa->p, &kop.crk_param[1]))
+               goto err;
+@@ -1311,9 +1398,10 @@
+               goto err;
+       kop.crk_iparams = 3;
+-      kop.crk_param[3].crp_p = (caddr_t) key;
+-      kop.crk_param[3].crp_nbits = keylen * 8;
++      kop.crk_param[3].crp_p = (void*) key;
++      kop.crk_param[3].crp_nbits = keylen;
+       kop.crk_oparams = 1;
++      dhret = keylen/8;
+       if (ioctl(fd, CIOCKEY, &kop) == -1) {
+               const DH_METHOD *meth = DH_OpenSSL();
+@@ -1385,7 +1473,7 @@
+       put_dev_crypto(fd);
+       if (!ENGINE_set_id(engine, "cryptodev") ||
+-          !ENGINE_set_name(engine, "BSD cryptodev engine") ||
++          !ENGINE_set_name(engine, "cryptodev engine") ||
+           !ENGINE_set_ciphers(engine, cryptodev_engine_ciphers) ||
+           !ENGINE_set_digests(engine, cryptodev_engine_digests) ||
+           !ENGINE_set_ctrl_function(engine, cryptodev_ctrl) ||
diff --git a/src/patches/openssl-1.0.1e-fix_parallel_build-1.patch b/src/patches/openssl-1.0.1e-fix_parallel_build-1.patch
new file mode 100644 (file)
index 0000000..855e4fe
--- /dev/null
@@ -0,0 +1,340 @@
+Submitted By:            Armin K. <krejzi at email dot com>
+Date:                    2013-05-05
+Initial Package Version: 1.0.1e
+Upstream Status:         Unknown
+Origin:                  https://github.com/Alexpux/Qt-builds/tree/master/patches/openssl
+Description:             Fixes build with make -jx, where x is greater than 1.
+
+--- a/crypto/Makefile  2013-02-11 16:26:04.000000000 +0100
++++ b/crypto/Makefile  2013-05-05 20:06:34.872208113 +0200
+@@ -86,11 +86,11 @@
+       @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
+ subdirs:
+-      @target=all; $(RECURSIVE_MAKE)
++      +@target=all; $(RECURSIVE_MAKE)
+ files:
+       $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
+-      @target=files; $(RECURSIVE_MAKE)
++      +@target=files; $(RECURSIVE_MAKE)
+ links:
+       @$(PERL) $(TOP)/util/mklink.pl ../include/openssl $(EXHEADER)
+@@ -101,7 +101,7 @@
+ # lib: $(LIB): are splitted to avoid end-less loop
+ lib:  $(LIB)
+       @touch lib
+-$(LIB):       $(LIBOBJ)
++$(LIB):       $(LIBOBJ) | subdirs
+       $(AR) $(LIB) $(LIBOBJ)
+       [ -z "$(FIPSLIBDIR)" ] || $(AR) $(LIB) $(FIPSLIBDIR)fipscanister.o
+       $(RANLIB) $(LIB) || echo Never mind.
+@@ -112,7 +112,7 @@
+       fi
+ libs:
+-      @target=lib; $(RECURSIVE_MAKE)
++      +@target=lib; $(RECURSIVE_MAKE)
+ install:
+       @[ -n "$(INSTALLTOP)" ] # should be set by top Makefile...
+@@ -121,7 +121,7 @@
+       (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
+       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
+       done;
+-      @target=install; $(RECURSIVE_MAKE)
++      +@target=install; $(RECURSIVE_MAKE)
+ lint:
+       @target=lint; $(RECURSIVE_MAKE)
+--- a/engines/Makefile 2013-02-11 16:26:04.000000000 +0100
++++ b/engines/Makefile 2013-05-05 20:06:34.872208113 +0200
+@@ -72,7 +72,7 @@
+ all:  lib subdirs
+-lib:  $(LIBOBJ)
++lib:  $(LIBOBJ) | subdirs
+       @if [ -n "$(SHARED_LIBS)" ]; then \
+               set -e; \
+               for l in $(LIBNAMES); do \
+@@ -89,7 +89,7 @@
+ subdirs:
+       echo $(EDIRS)
+-      @target=all; $(RECURSIVE_MAKE)
++      +@target=all; $(RECURSIVE_MAKE)
+ files:
+       $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
+@@ -128,7 +128,7 @@
+                         mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx ); \
+               done; \
+       fi
+-      @target=install; $(RECURSIVE_MAKE)
++      +@target=install; $(RECURSIVE_MAKE)
+ tags:
+       ctags $(SRC)
+--- a/Makefile.org     2013-02-11 16:26:04.000000000 +0100
++++ b/Makefile.org     2013-05-05 20:06:34.862207917 +0200
+@@ -273,17 +273,17 @@
+ build_libs: build_crypto build_ssl build_engines
+ build_crypto:
+-      @dir=crypto; target=all; $(BUILD_ONE_CMD)
+-build_ssl:
+-      @dir=ssl; target=all; $(BUILD_ONE_CMD)
+-build_engines:
+-      @dir=engines; target=all; $(BUILD_ONE_CMD)
+-build_apps:
+-      @dir=apps; target=all; $(BUILD_ONE_CMD)
+-build_tests:
+-      @dir=test; target=all; $(BUILD_ONE_CMD)
+-build_tools:
+-      @dir=tools; target=all; $(BUILD_ONE_CMD)
++      +@dir=crypto; target=all; $(BUILD_ONE_CMD)
++build_ssl: build_crypto
++      +@dir=ssl; target=all; $(BUILD_ONE_CMD)
++build_engines: build_crypto
++      +@dir=engines; target=all; $(BUILD_ONE_CMD)
++build_apps: build_libs
++      +@dir=apps; target=all; $(BUILD_ONE_CMD)
++build_tests: build_libs
++      +@dir=test; target=all; $(BUILD_ONE_CMD)
++build_tools: build_libs
++      +@dir=tools; target=all; $(BUILD_ONE_CMD)
+ all_testapps: build_libs build_testapps
+ build_testapps:
+@@ -537,9 +537,9 @@
+ dist_pem_h:
+       (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
+-install: all install_docs install_sw
++install: install_docs install_sw
+-install_sw:
++install_dirs:
+       @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
+               $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \
+               $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines \
+@@ -548,12 +548,19 @@
+               $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
+               $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
+               $(INSTALL_PREFIX)$(OPENSSLDIR)/private
++      @$(PERL) $(TOP)/util/mkdir-p.pl \
++              $(INSTALL_PREFIX)$(MANDIR)/man1 \
++              $(INSTALL_PREFIX)$(MANDIR)/man3 \
++              $(INSTALL_PREFIX)$(MANDIR)/man5 \
++              $(INSTALL_PREFIX)$(MANDIR)/man7
++
++install_sw: install_dirs
+       @set -e; headerlist="$(EXHEADER)"; for i in $$headerlist;\
+       do \
+       (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
+       chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
+       done;
+-      @set -e; target=install; $(RECURSIVE_BUILD_CMD)
++      +@set -e; target=install; $(RECURSIVE_BUILD_CMD)
+       @set -e; liblist="$(LIBS)"; for i in $$liblist ;\
+       do \
+               if [ -f "$$i" ]; then \
+@@ -633,12 +640,7 @@
+               done; \
+       done
+-install_docs:
+-      @$(PERL) $(TOP)/util/mkdir-p.pl \
+-              $(INSTALL_PREFIX)$(MANDIR)/man1 \
+-              $(INSTALL_PREFIX)$(MANDIR)/man3 \
+-              $(INSTALL_PREFIX)$(MANDIR)/man5 \
+-              $(INSTALL_PREFIX)$(MANDIR)/man7
++install_docs: install_dirs
+       @pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \
+       here="`pwd`"; \
+       filecase=; \
+--- a/Makefile.shared  2013-02-11 16:26:04.000000000 +0100
++++ b/Makefile.shared  2013-05-05 20:06:34.872208113 +0200
+@@ -105,6 +105,7 @@
+     SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
+     LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
+     LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
++    [ -e $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX ] && exit 0; \
+     LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
+     $${SHAREDCMD} $${SHAREDFLAGS} \
+       -o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
+@@ -122,6 +123,7 @@
+                       done; \
+               fi; \
+               if [ -n "$$SHLIB_SOVER" ]; then \
++                      [ -e "$$SHLIB$$SHLIB_SUFFIX" ] || \
+                       ( $(SET_X); rm -f $$SHLIB$$SHLIB_SUFFIX; \
+                         ln -s $$prev $$SHLIB$$SHLIB_SUFFIX ); \
+               fi; \
+--- a/test/Makefile    2013-02-11 16:26:04.000000000 +0100
++++ b/test/Makefile    2013-05-05 20:06:34.872208113 +0200
+@@ -124,7 +124,7 @@
+ tags:
+       ctags $(SRC)
+-tests:        exe apps $(TESTS)
++tests:        exe $(TESTS)
+ apps:
+       @(cd ..; $(MAKE) DIRS=apps all)
+@@ -365,109 +365,109 @@
+               link_app.$${shlib_target}
+ $(RSATEST)$(EXE_EXT): $(RSATEST).o $(DLIBCRYPTO)
+-      @target=$(RSATEST); $(BUILD_CMD)
++      +@target=$(RSATEST); $(BUILD_CMD)
+ $(BNTEST)$(EXE_EXT): $(BNTEST).o $(DLIBCRYPTO)
+-      @target=$(BNTEST); $(BUILD_CMD)
++      +@target=$(BNTEST); $(BUILD_CMD)
+ $(ECTEST)$(EXE_EXT): $(ECTEST).o $(DLIBCRYPTO)
+-      @target=$(ECTEST); $(BUILD_CMD)
++      +@target=$(ECTEST); $(BUILD_CMD)
+ $(EXPTEST)$(EXE_EXT): $(EXPTEST).o $(DLIBCRYPTO)
+-      @target=$(EXPTEST); $(BUILD_CMD)
++      +@target=$(EXPTEST); $(BUILD_CMD)
+ $(IDEATEST)$(EXE_EXT): $(IDEATEST).o $(DLIBCRYPTO)
+-      @target=$(IDEATEST); $(BUILD_CMD)
++      +@target=$(IDEATEST); $(BUILD_CMD)
+ $(MD2TEST)$(EXE_EXT): $(MD2TEST).o $(DLIBCRYPTO)
+-      @target=$(MD2TEST); $(BUILD_CMD)
++      +@target=$(MD2TEST); $(BUILD_CMD)
+ $(SHATEST)$(EXE_EXT): $(SHATEST).o $(DLIBCRYPTO)
+-      @target=$(SHATEST); $(BUILD_CMD)
++      +@target=$(SHATEST); $(BUILD_CMD)
+ $(SHA1TEST)$(EXE_EXT): $(SHA1TEST).o $(DLIBCRYPTO)
+-      @target=$(SHA1TEST); $(BUILD_CMD)
++      +@target=$(SHA1TEST); $(BUILD_CMD)
+ $(SHA256TEST)$(EXE_EXT): $(SHA256TEST).o $(DLIBCRYPTO)
+-      @target=$(SHA256TEST); $(BUILD_CMD)
++      +@target=$(SHA256TEST); $(BUILD_CMD)
+ $(SHA512TEST)$(EXE_EXT): $(SHA512TEST).o $(DLIBCRYPTO)
+-      @target=$(SHA512TEST); $(BUILD_CMD)
++      +@target=$(SHA512TEST); $(BUILD_CMD)
+ $(RMDTEST)$(EXE_EXT): $(RMDTEST).o $(DLIBCRYPTO)
+-      @target=$(RMDTEST); $(BUILD_CMD)
++      +@target=$(RMDTEST); $(BUILD_CMD)
+ $(MDC2TEST)$(EXE_EXT): $(MDC2TEST).o $(DLIBCRYPTO)
+-      @target=$(MDC2TEST); $(BUILD_CMD)
++      +@target=$(MDC2TEST); $(BUILD_CMD)
+ $(MD4TEST)$(EXE_EXT): $(MD4TEST).o $(DLIBCRYPTO)
+-      @target=$(MD4TEST); $(BUILD_CMD)
++      +@target=$(MD4TEST); $(BUILD_CMD)
+ $(MD5TEST)$(EXE_EXT): $(MD5TEST).o $(DLIBCRYPTO)
+-      @target=$(MD5TEST); $(BUILD_CMD)
++      +@target=$(MD5TEST); $(BUILD_CMD)
+ $(HMACTEST)$(EXE_EXT): $(HMACTEST).o $(DLIBCRYPTO)
+-      @target=$(HMACTEST); $(BUILD_CMD)
++      +@target=$(HMACTEST); $(BUILD_CMD)
+ $(WPTEST)$(EXE_EXT): $(WPTEST).o $(DLIBCRYPTO)
+-      @target=$(WPTEST); $(BUILD_CMD)
++      +@target=$(WPTEST); $(BUILD_CMD)
+ $(RC2TEST)$(EXE_EXT): $(RC2TEST).o $(DLIBCRYPTO)
+-      @target=$(RC2TEST); $(BUILD_CMD)
++      +@target=$(RC2TEST); $(BUILD_CMD)
+ $(BFTEST)$(EXE_EXT): $(BFTEST).o $(DLIBCRYPTO)
+-      @target=$(BFTEST); $(BUILD_CMD)
++      +@target=$(BFTEST); $(BUILD_CMD)
+ $(CASTTEST)$(EXE_EXT): $(CASTTEST).o $(DLIBCRYPTO)
+-      @target=$(CASTTEST); $(BUILD_CMD)
++      +@target=$(CASTTEST); $(BUILD_CMD)
+ $(RC4TEST)$(EXE_EXT): $(RC4TEST).o $(DLIBCRYPTO)
+-      @target=$(RC4TEST); $(BUILD_CMD)
++      +@target=$(RC4TEST); $(BUILD_CMD)
+ $(RC5TEST)$(EXE_EXT): $(RC5TEST).o $(DLIBCRYPTO)
+-      @target=$(RC5TEST); $(BUILD_CMD)
++      +@target=$(RC5TEST); $(BUILD_CMD)
+ $(DESTEST)$(EXE_EXT): $(DESTEST).o $(DLIBCRYPTO)
+-      @target=$(DESTEST); $(BUILD_CMD)
++      +@target=$(DESTEST); $(BUILD_CMD)
+ $(RANDTEST)$(EXE_EXT): $(RANDTEST).o $(DLIBCRYPTO)
+-      @target=$(RANDTEST); $(BUILD_CMD)
++      +@target=$(RANDTEST); $(BUILD_CMD)
+ $(DHTEST)$(EXE_EXT): $(DHTEST).o $(DLIBCRYPTO)
+-      @target=$(DHTEST); $(BUILD_CMD)
++      +@target=$(DHTEST); $(BUILD_CMD)
+ $(DSATEST)$(EXE_EXT): $(DSATEST).o $(DLIBCRYPTO)
+-      @target=$(DSATEST); $(BUILD_CMD)
++      +@target=$(DSATEST); $(BUILD_CMD)
+ $(METHTEST)$(EXE_EXT): $(METHTEST).o $(DLIBCRYPTO)
+-      @target=$(METHTEST); $(BUILD_CMD)
++      +@target=$(METHTEST); $(BUILD_CMD)
+ $(SSLTEST)$(EXE_EXT): $(SSLTEST).o $(DLIBSSL) $(DLIBCRYPTO)
+-      @target=$(SSLTEST); $(FIPS_BUILD_CMD)
++      +@target=$(SSLTEST); $(FIPS_BUILD_CMD)
+ $(ENGINETEST)$(EXE_EXT): $(ENGINETEST).o $(DLIBCRYPTO)
+-      @target=$(ENGINETEST); $(BUILD_CMD)
++      +@target=$(ENGINETEST); $(BUILD_CMD)
+ $(EVPTEST)$(EXE_EXT): $(EVPTEST).o $(DLIBCRYPTO)
+-      @target=$(EVPTEST); $(BUILD_CMD)
++      +@target=$(EVPTEST); $(BUILD_CMD)
+ $(ECDSATEST)$(EXE_EXT): $(ECDSATEST).o $(DLIBCRYPTO)
+-      @target=$(ECDSATEST); $(BUILD_CMD)
++      +@target=$(ECDSATEST); $(BUILD_CMD)
+ $(ECDHTEST)$(EXE_EXT): $(ECDHTEST).o $(DLIBCRYPTO)
+-      @target=$(ECDHTEST); $(BUILD_CMD)
++      +@target=$(ECDHTEST); $(BUILD_CMD)
+ $(IGETEST)$(EXE_EXT): $(IGETEST).o $(DLIBCRYPTO)
+-      @target=$(IGETEST); $(BUILD_CMD)
++      +@target=$(IGETEST); $(BUILD_CMD)
+ $(JPAKETEST)$(EXE_EXT): $(JPAKETEST).o $(DLIBCRYPTO)
+-      @target=$(JPAKETEST); $(BUILD_CMD)
++      +@target=$(JPAKETEST); $(BUILD_CMD)
+ $(ASN1TEST)$(EXE_EXT): $(ASN1TEST).o $(DLIBCRYPTO)
+-      @target=$(ASN1TEST); $(BUILD_CMD)
++      +@target=$(ASN1TEST); $(BUILD_CMD)
+ $(SRPTEST)$(EXE_EXT): $(SRPTEST).o $(DLIBCRYPTO)
+-      @target=$(SRPTEST); $(BUILD_CMD)
++      +@target=$(SRPTEST); $(BUILD_CMD)
+ #$(AESTEST).o: $(AESTEST).c
+ #     $(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c
+@@ -480,7 +480,7 @@
+ #     fi
+ dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO)
+-      @target=dummytest; $(BUILD_CMD)
++      +@target=dummytest; $(BUILD_CMD)
+ # DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/src/patches/openssl-1.0.1e-weak-ciphers.patch b/src/patches/openssl-1.0.1e-weak-ciphers.patch
new file mode 100644 (file)
index 0000000..8657345
--- /dev/null
@@ -0,0 +1,12 @@
+diff -up openssl-1.0.1e/ssl/ssl.h.weak-ciphers openssl-1.0.1e/ssl/ssl.h
+--- openssl-1.0.1e/ssl/ssl.h.weak-ciphers      2013-12-18 15:50:40.881620314 +0100
++++ openssl-1.0.1e/ssl/ssl.h   2013-12-18 14:25:25.596566704 +0100
+@@ -331,7 +331,7 @@ extern "C" {
+ /* The following cipher list is used by default.
+  * It also is substituted when an application-defined cipher list string
+  * starts with 'DEFAULT'. */
+-#define SSL_DEFAULT_CIPHER_LIST       "ALL:!aNULL:!eNULL:!SSLv2"
++#define SSL_DEFAULT_CIPHER_LIST       "ALL:!aNULL:!eNULL:!SSLv2:!EXPORT:!RC2:!DES"
+ /* As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always
+  * starts with a reasonable order, and all we have to do for DEFAULT is
+  * throwing out anonymous and unencrypted ciphersuites!
diff --git a/src/patches/ppp/0003-build-sys-utilize-compiler-flags-handed-to-us-by-rpm.patch b/src/patches/ppp/0003-build-sys-utilize-compiler-flags-handed-to-us-by-rpm.patch
new file mode 100644 (file)
index 0000000..4a43d44
--- /dev/null
@@ -0,0 +1,121 @@
+From d729b06f0ac7a5ebd3648ef60bef0499b59bf82d Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Fri, 4 Apr 2014 11:29:39 +0200
+Subject: [PATCH 03/25] build-sys: utilize compiler flags handed to us by
+ rpmbuild
+
+---
+ chat/Makefile.linux                  | 2 +-
+ pppd/Makefile.linux                  | 3 +--
+ pppd/plugins/Makefile.linux          | 2 +-
+ pppd/plugins/pppoatm/Makefile.linux  | 2 +-
+ pppd/plugins/radius/Makefile.linux   | 2 +-
+ pppd/plugins/rp-pppoe/Makefile.linux | 2 +-
+ pppdump/Makefile.linux               | 2 +-
+ pppstats/Makefile.linux              | 2 +-
+ 8 files changed, 8 insertions(+), 9 deletions(-)
+
+diff --git a/chat/Makefile.linux b/chat/Makefile.linux
+index 1065ac5..848cd8d 100644
+--- a/chat/Makefile.linux
++++ b/chat/Makefile.linux
+@@ -10,7 +10,7 @@ CDEF3=       -UNO_SLEEP                      # Use the usleep function
+ CDEF4=        -DFNDELAY=O_NDELAY              # Old name value
+ CDEFS=        $(CDEF1) $(CDEF2) $(CDEF3) $(CDEF4)
+-COPTS=        -O2 -g -pipe
++COPTS=        $(RPM_OPT_FLAGS)
+ CFLAGS=       $(COPTS) $(CDEFS)
+ INSTALL= install
+diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux
+index 5a44d30..63872eb 100644
+--- a/pppd/Makefile.linux
++++ b/pppd/Makefile.linux
+@@ -32,8 +32,7 @@ endif
+ CC = gcc
+ #
+-COPTS = -O2 -pipe -Wall -g
+-LIBS =
++COPTS = -Wall $(RPM_OPT_FLAGS)
+ # Uncomment the next 2 lines to include support for Microsoft's
+ # MS-CHAP authentication protocol.  Also, edit plugins/radius/Makefile.linux.
+diff --git a/pppd/plugins/Makefile.linux b/pppd/plugins/Makefile.linux
+index 0a7ec7b..e09a369 100644
+--- a/pppd/plugins/Makefile.linux
++++ b/pppd/plugins/Makefile.linux
+@@ -1,5 +1,5 @@
+ #CC   = gcc
+-COPTS = -O2 -g
++COPTS = $(RPM_OPT_FLAGS)
+ CFLAGS        = $(COPTS) -I.. -I../../include -fPIC
+ LDFLAGS       = -shared
+ INSTALL       = install
+diff --git a/pppd/plugins/pppoatm/Makefile.linux b/pppd/plugins/pppoatm/Makefile.linux
+index 20f62e6..5a81447 100644
+--- a/pppd/plugins/pppoatm/Makefile.linux
++++ b/pppd/plugins/pppoatm/Makefile.linux
+@@ -1,5 +1,5 @@
+ #CC   = gcc
+-COPTS = -O2 -g
++COPTS = $(RPM_OPT_FLAGS)
+ CFLAGS        = $(COPTS) -I../.. -I../../../include -fPIC
+ LDFLAGS       = -shared
+ INSTALL       = install
+diff --git a/pppd/plugins/radius/Makefile.linux b/pppd/plugins/radius/Makefile.linux
+index 24ed3e5..45b3b8d 100644
+--- a/pppd/plugins/radius/Makefile.linux
++++ b/pppd/plugins/radius/Makefile.linux
+@@ -12,7 +12,7 @@ VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../../patchlevel.h)
+ INSTALL       = install
+ PLUGIN=radius.so radattr.so radrealms.so
+-CFLAGS=-I. -I../.. -I../../../include -O2 -fPIC -DRC_LOG_FACILITY=LOG_DAEMON
++CFLAGS=-I. -I../.. -I../../../include $(RPM_OPT_FLAGS) -DRC_LOG_FACILITY=LOG_DAEMON
+ # Uncomment the next line to include support for Microsoft's
+ # MS-CHAP authentication protocol.
+diff --git a/pppd/plugins/rp-pppoe/Makefile.linux b/pppd/plugins/rp-pppoe/Makefile.linux
+index 5d7a271..352991a 100644
+--- a/pppd/plugins/rp-pppoe/Makefile.linux
++++ b/pppd/plugins/rp-pppoe/Makefile.linux
+@@ -25,7 +25,7 @@ INSTALL      = install
+ # Version is set ONLY IN THE MAKEFILE!  Don't delete this!
+ RP_VERSION=3.8p
+-COPTS=-O2 -g
++COPTS=$(RPM_OPT_FLAGS)
+ CFLAGS=$(COPTS) -I../../../include '-DRP_VERSION="$(RP_VERSION)"'
+ all: rp-pppoe.so pppoe-discovery
+diff --git a/pppdump/Makefile.linux b/pppdump/Makefile.linux
+index ac028f6..d0a5032 100644
+--- a/pppdump/Makefile.linux
++++ b/pppdump/Makefile.linux
+@@ -2,7 +2,7 @@ DESTDIR = $(INSTROOT)@DESTDIR@
+ BINDIR = $(DESTDIR)/sbin
+ MANDIR = $(DESTDIR)/share/man/man8
+-CFLAGS= -O -I../include/net
++CFLAGS= $(RPM_OPT_FLAGS) -I../include/net
+ OBJS = pppdump.o bsd-comp.o deflate.o zlib.o
+ INSTALL= install
+diff --git a/pppstats/Makefile.linux b/pppstats/Makefile.linux
+index cca6f0f..42aba73 100644
+--- a/pppstats/Makefile.linux
++++ b/pppstats/Makefile.linux
+@@ -10,7 +10,7 @@ PPPSTATSRCS = pppstats.c
+ PPPSTATOBJS = pppstats.o
+ #CC = gcc
+-COPTS = -O
++COPTS = $(RPM_OPT_FLAGS)
+ COMPILE_FLAGS = -I../include
+ LIBS =
+-- 
+1.8.3.1
+
diff --git a/src/patches/ppp/0012-pppd-we-don-t-want-to-accidentally-leak-fds.patch b/src/patches/ppp/0012-pppd-we-don-t-want-to-accidentally-leak-fds.patch
new file mode 100644 (file)
index 0000000..90bb2d1
--- /dev/null
@@ -0,0 +1,143 @@
+From 82cd789df0f022eb6f3d28646e7a61d1d0715805 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 7 Apr 2014 12:23:36 +0200
+Subject: [PATCH 12/25] pppd: we don't want to accidentally leak fds
+
+---
+ pppd/auth.c      | 20 ++++++++++----------
+ pppd/options.c   |  2 +-
+ pppd/sys-linux.c |  4 ++--
+ 3 files changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/pppd/auth.c b/pppd/auth.c
+index 4271af6..9e957fa 100644
+--- a/pppd/auth.c
++++ b/pppd/auth.c
+@@ -428,7 +428,7 @@ setupapfile(argv)
+       option_error("unable to reset uid before opening %s: %m", fname);
+       return 0;
+     }
+-    ufile = fopen(fname, "r");
++    ufile = fopen(fname, "re");
+     if (seteuid(euid) == -1)
+       fatal("unable to regain privileges: %m");
+     if (ufile == NULL) {
+@@ -1413,7 +1413,7 @@ check_passwd(unit, auser, userlen, apasswd, passwdlen, msg)
+     filename = _PATH_UPAPFILE;
+     addrs = opts = NULL;
+     ret = UPAP_AUTHNAK;
+-    f = fopen(filename, "r");
++    f = fopen(filename, "re");
+     if (f == NULL) {
+       error("Can't open PAP password file %s: %m", filename);
+@@ -1512,7 +1512,7 @@ null_login(unit)
+     if (ret <= 0) {
+       filename = _PATH_UPAPFILE;
+       addrs = NULL;
+-      f = fopen(filename, "r");
++      f = fopen(filename, "re");
+       if (f == NULL)
+           return 0;
+       check_access(f, filename);
+@@ -1559,7 +1559,7 @@ get_pap_passwd(passwd)
+     }
+     filename = _PATH_UPAPFILE;
+-    f = fopen(filename, "r");
++    f = fopen(filename, "re");
+     if (f == NULL)
+       return 0;
+     check_access(f, filename);
+@@ -1597,7 +1597,7 @@ have_pap_secret(lacks_ipp)
+     }
+     filename = _PATH_UPAPFILE;
+-    f = fopen(filename, "r");
++    f = fopen(filename, "re");
+     if (f == NULL)
+       return 0;
+@@ -1642,7 +1642,7 @@ have_chap_secret(client, server, need_ip, lacks_ipp)
+     }
+     filename = _PATH_CHAPFILE;
+-    f = fopen(filename, "r");
++    f = fopen(filename, "re");
+     if (f == NULL)
+       return 0;
+@@ -1684,7 +1684,7 @@ have_srp_secret(client, server, need_ip, lacks_ipp)
+     struct wordlist *addrs;
+     filename = _PATH_SRPFILE;
+-    f = fopen(filename, "r");
++    f = fopen(filename, "re");
+     if (f == NULL)
+       return 0;
+@@ -1740,7 +1740,7 @@ get_secret(unit, client, server, secret, secret_len, am_server)
+       addrs = NULL;
+       secbuf[0] = 0;
+-      f = fopen(filename, "r");
++      f = fopen(filename, "re");
+       if (f == NULL) {
+           error("Can't open chap secret file %s: %m", filename);
+           return 0;
+@@ -1797,7 +1797,7 @@ get_srp_secret(unit, client, server, secret, am_server)
+       filename = _PATH_SRPFILE;
+       addrs = NULL;
+-      fp = fopen(filename, "r");
++      fp = fopen(filename, "re");
+       if (fp == NULL) {
+           error("Can't open srp secret file %s: %m", filename);
+           return 0;
+@@ -2203,7 +2203,7 @@ scan_authfile(f, client, server, secret, addrs, opts, filename, flags)
+            */
+           if (word[0] == '@' && word[1] == '/') {
+               strlcpy(atfile, word+1, sizeof(atfile));
+-              if ((sf = fopen(atfile, "r")) == NULL) {
++              if ((sf = fopen(atfile, "re")) == NULL) {
+                   warn("can't open indirect secret file %s", atfile);
+                   continue;
+               }
+diff --git a/pppd/options.c b/pppd/options.c
+index 45fa742..1d754ae 100644
+--- a/pppd/options.c
++++ b/pppd/options.c
+@@ -427,7 +427,7 @@ options_from_file(filename, must_exist, check_prot, priv)
+       option_error("unable to drop privileges to open %s: %m", filename);
+       return 0;
+     }
+-    f = fopen(filename, "r");
++    f = fopen(filename, "re");
+     err = errno;
+     if (check_prot && seteuid(euid) == -1)
+       fatal("unable to regain privileges");
+diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c
+index 72a7727..8a12fa0 100644
+--- a/pppd/sys-linux.c
++++ b/pppd/sys-linux.c
+@@ -1412,7 +1412,7 @@ static char *path_to_procfs(const char *tail)
+       /* Default the mount location of /proc */
+       strlcpy (proc_path, "/proc", sizeof(proc_path));
+       proc_path_len = 5;
+-      fp = fopen(MOUNTED, "r");
++      fp = fopen(MOUNTED, "re");
+       if (fp != NULL) {
+           while ((mntent = getmntent(fp)) != NULL) {
+               if (strcmp(mntent->mnt_type, MNTTYPE_IGNORE) == 0)
+@@ -1472,7 +1472,7 @@ static int open_route_table (void)
+     close_route_table();
+     path = path_to_procfs("/net/route");
+-    route_fd = fopen (path, "r");
++    route_fd = fopen (path, "re");
+     if (route_fd == NULL) {
+       error("can't open routing table %s: %m", path);
+       return 0;
+-- 
+1.8.3.1
+
diff --git a/src/patches/ppp/0013-everywhere-O_CLOEXEC-harder.patch b/src/patches/ppp/0013-everywhere-O_CLOEXEC-harder.patch
new file mode 100644 (file)
index 0000000..e3608a0
--- /dev/null
@@ -0,0 +1,241 @@
+From 302c1b736cb656c7885a0cba270fd953a672d8a8 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 7 Apr 2014 13:56:34 +0200
+Subject: [PATCH 13/25] everywhere: O_CLOEXEC harder
+
+---
+ pppd/eap.c       |  2 +-
+ pppd/main.c      |  4 ++--
+ pppd/options.c   |  4 ++--
+ pppd/sys-linux.c | 22 +++++++++++-----------
+ pppd/tdb.c       |  4 ++--
+ pppd/tty.c       |  4 ++--
+ pppd/utils.c     |  6 +++---
+ 7 files changed, 23 insertions(+), 23 deletions(-)
+
+diff --git a/pppd/eap.c b/pppd/eap.c
+index 6ea6c1f..faced53 100644
+--- a/pppd/eap.c
++++ b/pppd/eap.c
+@@ -1226,7 +1226,7 @@ mode_t modebits;
+       if ((path = name_of_pn_file()) == NULL)
+               return (-1);
+-      fd = open(path, modebits, S_IRUSR | S_IWUSR);
++      fd = open(path, modebits, S_IRUSR | S_IWUSR | O_CLOEXEC);
+       err = errno;
+       free(path);
+       errno = err;
+diff --git a/pppd/main.c b/pppd/main.c
+index 6d50d1b..4880377 100644
+--- a/pppd/main.c
++++ b/pppd/main.c
+@@ -420,7 +420,7 @@ main(argc, argv)
+       die(0);
+     /* Make sure fds 0, 1, 2 are open to somewhere. */
+-    fd_devnull = open(_PATH_DEVNULL, O_RDWR);
++    fd_devnull = open(_PATH_DEVNULL, O_RDWR | O_CLOEXEC);
+     if (fd_devnull < 0)
+       fatal("Couldn't open %s: %m", _PATH_DEVNULL);
+     while (fd_devnull <= 2) {
+@@ -1679,7 +1679,7 @@ device_script(program, in, out, dont_wait)
+     if (log_to_fd >= 0)
+       errfd = log_to_fd;
+     else
+-      errfd = open(_PATH_CONNERRS, O_WRONLY | O_APPEND | O_CREAT, 0600);
++      errfd = open(_PATH_CONNERRS, O_WRONLY | O_APPEND | O_CREAT | O_CLOEXEC, 0600);
+     ++conn_running;
+     pid = safe_fork(in, out, errfd);
+diff --git a/pppd/options.c b/pppd/options.c
+index 1d754ae..8e62635 100644
+--- a/pppd/options.c
++++ b/pppd/options.c
+@@ -1544,9 +1544,9 @@ setlogfile(argv)
+       option_error("unable to drop permissions to open %s: %m", *argv);
+       return 0;
+     }
+-    fd = open(*argv, O_WRONLY | O_APPEND | O_CREAT | O_EXCL, 0644);
++    fd = open(*argv, O_WRONLY | O_APPEND | O_CREAT | O_EXCL | O_CLOEXEC, 0644);
+     if (fd < 0 && errno == EEXIST)
+-      fd = open(*argv, O_WRONLY | O_APPEND);
++      fd = open(*argv, O_WRONLY | O_APPEND | O_CLOEXEC);
+     err = errno;
+     if (!privileged_option && seteuid(euid) == -1)
+       fatal("unable to regain privileges: %m");
+diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c
+index 8a12fa0..00a2cf5 100644
+--- a/pppd/sys-linux.c
++++ b/pppd/sys-linux.c
+@@ -459,7 +459,7 @@ int generic_establish_ppp (int fd)
+           goto err;
+       }
+       dbglog("using channel %d", chindex);
+-      fd = open("/dev/ppp", O_RDWR);
++      fd = open("/dev/ppp", O_RDWR | O_CLOEXEC);
+       if (fd < 0) {
+           error("Couldn't reopen /dev/ppp: %m");
+           goto err;
+@@ -619,7 +619,7 @@ static int make_ppp_unit()
+               dbglog("in make_ppp_unit, already had /dev/ppp open?");
+               close(ppp_dev_fd);
+       }
+-      ppp_dev_fd = open("/dev/ppp", O_RDWR);
++      ppp_dev_fd = open("/dev/ppp", O_RDWR | O_CLOEXEC);
+       if (ppp_dev_fd < 0)
+               fatal("Couldn't open /dev/ppp: %m");
+       flags = fcntl(ppp_dev_fd, F_GETFL);
+@@ -693,7 +693,7 @@ int bundle_attach(int ifnum)
+       if (!new_style_driver)
+               return -1;
+-      master_fd = open("/dev/ppp", O_RDWR);
++      master_fd = open("/dev/ppp", O_RDWR | O_CLOEXEC);
+       if (master_fd < 0)
+               fatal("Couldn't open /dev/ppp: %m");
+       if (ioctl(master_fd, PPPIOCATTACH, &ifnum) < 0) {
+@@ -1715,7 +1715,7 @@ int sifproxyarp (int unit, u_int32_t his_adr)
+       if (tune_kernel) {
+           forw_path = path_to_procfs("/sys/net/ipv4/ip_forward");
+           if (forw_path != 0) {
+-              int fd = open(forw_path, O_WRONLY);
++              int fd = open(forw_path, O_WRONLY | O_CLOEXEC);
+               if (fd >= 0) {
+                   if (write(fd, "1", 1) != 1)
+                       error("Couldn't enable IP forwarding: %m");
+@@ -2030,7 +2030,7 @@ int ppp_available(void)
+     sscanf(utsname.release, "%d.%d.%d", &osmaj, &osmin, &ospatch);
+     kernel_version = KVERSION(osmaj, osmin, ospatch);
+-    fd = open("/dev/ppp", O_RDWR);
++    fd = open("/dev/ppp", O_RDWR | O_CLOEXEC);
+     if (fd >= 0) {
+       new_style_driver = 1;
+@@ -2208,7 +2208,7 @@ void logwtmp (const char *line, const char *name, const char *host)
+ #if __GLIBC__ >= 2
+     updwtmp(_PATH_WTMP, &ut);
+ #else
+-    wtmp = open(_PATH_WTMP, O_APPEND|O_WRONLY);
++    wtmp = open(_PATH_WTMP, O_APPEND|O_WRONLY|O_CLOEXEC);
+     if (wtmp >= 0) {
+       flock(wtmp, LOCK_EX);
+@@ -2394,7 +2394,7 @@ int sifaddr (int unit, u_int32_t our_adr, u_int32_t his_adr,
+       int fd;
+       path = path_to_procfs("/sys/net/ipv4/ip_dynaddr");
+-      if (path != 0 && (fd = open(path, O_WRONLY)) >= 0) {
++      if (path != 0 && (fd = open(path, O_WRONLY | O_CLOEXEC)) >= 0) {
+           if (write(fd, "1", 1) != 1)
+               error("Couldn't enable dynamic IP addressing: %m");
+           close(fd);
+@@ -2570,7 +2570,7 @@ get_pty(master_fdp, slave_fdp, slave_name, uid)
+     /*
+      * Try the unix98 way first.
+      */
+-    mfd = open("/dev/ptmx", O_RDWR);
++    mfd = open("/dev/ptmx", O_RDWR | O_CLOEXEC);
+     if (mfd >= 0) {
+       int ptn;
+       if (ioctl(mfd, TIOCGPTN, &ptn) >= 0) {
+@@ -2581,7 +2581,7 @@ get_pty(master_fdp, slave_fdp, slave_name, uid)
+           if (ioctl(mfd, TIOCSPTLCK, &ptn) < 0)
+               warn("Couldn't unlock pty slave %s: %m", pty_name);
+ #endif
+-          if ((sfd = open(pty_name, O_RDWR | O_NOCTTY)) < 0)
++          if ((sfd = open(pty_name, O_RDWR | O_NOCTTY | O_CLOEXEC)) < 0)
+               warn("Couldn't open pty slave %s: %m", pty_name);
+       }
+     }
+@@ -2592,10 +2592,10 @@ get_pty(master_fdp, slave_fdp, slave_name, uid)
+       for (i = 0; i < 64; ++i) {
+           slprintf(pty_name, sizeof(pty_name), "/dev/pty%c%x",
+                    'p' + i / 16, i % 16);
+-          mfd = open(pty_name, O_RDWR, 0);
++          mfd = open(pty_name, O_RDWR | O_CLOEXEC, 0);
+           if (mfd >= 0) {
+               pty_name[5] = 't';
+-              sfd = open(pty_name, O_RDWR | O_NOCTTY, 0);
++              sfd = open(pty_name, O_RDWR | O_NOCTTY | O_CLOEXEC, 0);
+               if (sfd >= 0) {
+                   fchown(sfd, uid, -1);
+                   fchmod(sfd, S_IRUSR | S_IWUSR);
+diff --git a/pppd/tdb.c b/pppd/tdb.c
+index bdc5828..c7ab71c 100644
+--- a/pppd/tdb.c
++++ b/pppd/tdb.c
+@@ -1724,7 +1724,7 @@ TDB_CONTEXT *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
+               goto internal;
+       }
+-      if ((tdb->fd = open(name, open_flags, mode)) == -1) {
++      if ((tdb->fd = open(name, open_flags | O_CLOEXEC, mode)) == -1) {
+               TDB_LOG((tdb, 5, "tdb_open_ex: could not open file %s: %s\n",
+                        name, strerror(errno)));
+               goto fail;      /* errno set by open(2) */
+@@ -1967,7 +1967,7 @@ int tdb_reopen(TDB_CONTEXT *tdb)
+       }
+       if (close(tdb->fd) != 0)
+               TDB_LOG((tdb, 0, "tdb_reopen: WARNING closing tdb->fd failed!\n"));
+-      tdb->fd = open(tdb->name, tdb->open_flags & ~(O_CREAT|O_TRUNC), 0);
++      tdb->fd = open(tdb->name, (tdb->open_flags & ~(O_CREAT|O_TRUNC)) | O_CLOEXEC, 0);
+       if (tdb->fd == -1) {
+               TDB_LOG((tdb, 0, "tdb_reopen: open failed (%s)\n", strerror(errno)));
+               goto fail;
+diff --git a/pppd/tty.c b/pppd/tty.c
+index d571b11..bc96695 100644
+--- a/pppd/tty.c
++++ b/pppd/tty.c
+@@ -569,7 +569,7 @@ int connect_tty()
+                               status = EXIT_OPEN_FAILED;
+                               goto errret;
+                       }
+-                      real_ttyfd = open(devnam, O_NONBLOCK | O_RDWR, 0);
++                      real_ttyfd = open(devnam, O_NONBLOCK | O_RDWR | O_CLOEXEC, 0);
+                       err = errno;
+                       if (prio < OPRIO_ROOT && seteuid(0) == -1)
+                               fatal("Unable to regain privileges");
+@@ -723,7 +723,7 @@ int connect_tty()
+       if (connector == NULL && modem && devnam[0] != 0) {
+               int i;
+               for (;;) {
+-                      if ((i = open(devnam, O_RDWR)) >= 0)
++                      if ((i = open(devnam, O_RDWR | O_CLOEXEC)) >= 0)
+                               break;
+                       if (errno != EINTR) {
+                               error("Failed to reopen %s: %m", devnam);
+diff --git a/pppd/utils.c b/pppd/utils.c
+index 29bf970..6051b9a 100644
+--- a/pppd/utils.c
++++ b/pppd/utils.c
+@@ -918,14 +918,14 @@ lock(dev)
+     slprintf(lock_file, sizeof(lock_file), "%s/LCK..%s", LOCK_DIR, dev);
+ #endif
+-    while ((fd = open(lock_file, O_EXCL | O_CREAT | O_RDWR, 0644)) < 0) {
++    while ((fd = open(lock_file, O_EXCL | O_CREAT | O_RDWR | O_CLOEXEC, 0644)) < 0) {
+       if (errno != EEXIST) {
+           error("Can't create lock file %s: %m", lock_file);
+           break;
+       }
+       /* Read the lock file to find out who has the device locked. */
+-      fd = open(lock_file, O_RDONLY, 0);
++      fd = open(lock_file, O_RDONLY | O_CLOEXEC, 0);
+       if (fd < 0) {
+           if (errno == ENOENT) /* This is just a timing problem. */
+               continue;
+@@ -1004,7 +1004,7 @@ relock(pid)
+     if (lock_file[0] == 0)
+       return -1;
+-    fd = open(lock_file, O_WRONLY, 0);
++    fd = open(lock_file, O_WRONLY | O_CLOEXEC, 0);
+     if (fd < 0) {
+       error("Couldn't reopen lock file %s: %m", lock_file);
+       lock_file[0] = 0;
+-- 
+1.8.3.1
+
diff --git a/src/patches/ppp/0014-everywhere-use-SOCK_CLOEXEC-when-creating-socket.patch b/src/patches/ppp/0014-everywhere-use-SOCK_CLOEXEC-when-creating-socket.patch
new file mode 100644 (file)
index 0000000..3475f09
--- /dev/null
@@ -0,0 +1,174 @@
+From 2a97ab28ee00586e5f06b3ef3a0e43ea0c7c6499 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 7 Apr 2014 14:21:41 +0200
+Subject: [PATCH 14/25] everywhere: use SOCK_CLOEXEC when creating socket
+
+---
+ pppd/plugins/pppoatm/pppoatm.c          |  2 +-
+ pppd/plugins/pppol2tp/openl2tp.c        |  2 +-
+ pppd/plugins/pppol2tp/pppol2tp.c        |  2 +-
+ pppd/plugins/rp-pppoe/if.c              |  2 +-
+ pppd/plugins/rp-pppoe/plugin.c          |  6 +++---
+ pppd/plugins/rp-pppoe/pppoe-discovery.c |  2 +-
+ pppd/sys-linux.c                        | 10 +++++-----
+ pppd/tty.c                              |  2 +-
+ 8 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/pppd/plugins/pppoatm/pppoatm.c b/pppd/plugins/pppoatm/pppoatm.c
+index d693350..c31bb34 100644
+--- a/pppd/plugins/pppoatm/pppoatm.c
++++ b/pppd/plugins/pppoatm/pppoatm.c
+@@ -135,7 +135,7 @@ static int connect_pppoatm(void)
+       if (!device_got_set)
+               no_device_given_pppoatm();
+-      fd = socket(AF_ATMPVC, SOCK_DGRAM, 0);
++      fd = socket(AF_ATMPVC, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+       if (fd < 0)
+               fatal("failed to create socket: %m");
+       memset(&qos, 0, sizeof qos);
+diff --git a/pppd/plugins/pppol2tp/openl2tp.c b/pppd/plugins/pppol2tp/openl2tp.c
+index 9643b96..1099575 100644
+--- a/pppd/plugins/pppol2tp/openl2tp.c
++++ b/pppd/plugins/pppol2tp/openl2tp.c
+@@ -83,7 +83,7 @@ static int openl2tp_client_create(void)
+       int result;
+       if (openl2tp_fd < 0) {
+-              openl2tp_fd = socket(PF_UNIX, SOCK_DGRAM, 0);
++              openl2tp_fd = socket(PF_UNIX, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+               if (openl2tp_fd < 0) {
+                       error("openl2tp connection create: %m");
+                       return -ENOTCONN;
+diff --git a/pppd/plugins/pppol2tp/pppol2tp.c b/pppd/plugins/pppol2tp/pppol2tp.c
+index a7e3400..e64a778 100644
+--- a/pppd/plugins/pppol2tp/pppol2tp.c
++++ b/pppd/plugins/pppol2tp/pppol2tp.c
+@@ -208,7 +208,7 @@ static void send_config_pppol2tp(int mtu,
+               struct ifreq ifr;
+               int fd;
+-              fd = socket(AF_INET, SOCK_DGRAM, 0);
++              fd = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+               if (fd >= 0) {
+                       memset (&ifr, '\0', sizeof (ifr));
+                       strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+diff --git a/pppd/plugins/rp-pppoe/if.c b/pppd/plugins/rp-pppoe/if.c
+index 91e9a57..72aba41 100644
+--- a/pppd/plugins/rp-pppoe/if.c
++++ b/pppd/plugins/rp-pppoe/if.c
+@@ -116,7 +116,7 @@ openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr)
+     stype = SOCK_PACKET;
+ #endif
+-    if ((fd = socket(domain, stype, htons(type))) < 0) {
++    if ((fd = socket(domain, stype | SOCK_CLOEXEC, htons(type))) < 0) {
+       /* Give a more helpful message for the common error case */
+       if (errno == EPERM) {
+           fatal("Cannot create raw socket -- pppoe must be run as root.");
+diff --git a/pppd/plugins/rp-pppoe/plugin.c b/pppd/plugins/rp-pppoe/plugin.c
+index a8c2bb4..24bdf8f 100644
+--- a/pppd/plugins/rp-pppoe/plugin.c
++++ b/pppd/plugins/rp-pppoe/plugin.c
+@@ -137,7 +137,7 @@ PPPOEConnectDevice(void)
+     /* server equipment).                                                  */
+     /* Opening this socket just before waitForPADS in the discovery()      */
+     /* function would be more appropriate, but it would mess-up the code   */
+-    conn->sessionSocket = socket(AF_PPPOX, SOCK_STREAM, PX_PROTO_OE);
++    conn->sessionSocket = socket(AF_PPPOX, SOCK_STREAM | SOCK_CLOEXEC, PX_PROTO_OE);
+     if (conn->sessionSocket < 0) {
+       error("Failed to create PPPoE socket: %m");
+       return -1;
+@@ -148,7 +148,7 @@ PPPOEConnectDevice(void)
+     lcp_wantoptions[0].mru = conn->mru;
+     /* Update maximum MRU */
+-    s = socket(AF_INET, SOCK_DGRAM, 0);
++    s = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+     if (s < 0) {
+       error("Can't get MTU for %s: %m", conn->ifName);
+       goto errout;
+@@ -320,7 +320,7 @@ PPPoEDevnameHook(char *cmd, char **argv, int doit)
+     }
+     /* Open a socket */
+-    if ((fd = socket(PF_PACKET, SOCK_RAW, 0)) < 0) {
++    if ((fd = socket(PF_PACKET, SOCK_RAW | SOCK_CLOEXEC, 0)) < 0) {
+       r = 0;
+     }
+diff --git a/pppd/plugins/rp-pppoe/pppoe-discovery.c b/pppd/plugins/rp-pppoe/pppoe-discovery.c
+index 3d3bf4e..c0d927d 100644
+--- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
++++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
+@@ -121,7 +121,7 @@ openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr)
+     stype = SOCK_PACKET;
+ #endif
+-    if ((fd = socket(domain, stype, htons(type))) < 0) {
++    if ((fd = socket(domain, stype | SOCK_CLOEXEC, htons(type))) < 0) {
+       /* Give a more helpful message for the common error case */
+       if (errno == EPERM) {
+           rp_fatal("Cannot create raw socket -- pppoe must be run as root.");
+diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c
+index 00a2cf5..0690019 100644
+--- a/pppd/sys-linux.c
++++ b/pppd/sys-linux.c
+@@ -308,12 +308,12 @@ static int modify_flags(int fd, int clear_bits, int set_bits)
+ void sys_init(void)
+ {
+     /* Get an internet socket for doing socket ioctls. */
+-    sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
++    sock_fd = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+     if (sock_fd < 0)
+       fatal("Couldn't create IP socket: %m(%d)", errno);
+ #ifdef INET6
+-    sock6_fd = socket(AF_INET6, SOCK_DGRAM, 0);
++    sock6_fd = socket(AF_INET6, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+     if (sock6_fd < 0)
+       sock6_fd = -errno;      /* save errno for later */
+ #endif
+@@ -1857,7 +1857,7 @@ get_if_hwaddr(u_char *addr, char *name)
+       struct ifreq ifreq;
+       int ret, sock_fd;
+-      sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
++      sock_fd = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+       if (sock_fd < 0)
+               return 0;
+       memset(&ifreq.ifr_hwaddr, 0, sizeof(struct sockaddr));
+@@ -2067,7 +2067,7 @@ int ppp_available(void)
+ /*
+  * Open a socket for doing the ioctl operations.
+  */
+-    s = socket(AF_INET, SOCK_DGRAM, 0);
++    s = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+     if (s < 0)
+       return 0;
+@@ -2860,7 +2860,7 @@ ether_to_eui64(eui64_t *p_eui64)
+     int skfd;
+     const unsigned char *ptr;
+-    skfd = socket(PF_INET6, SOCK_DGRAM, 0);
++    skfd = socket(PF_INET6, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+     if(skfd == -1)
+     {
+         warn("could not open IPv6 socket");
+diff --git a/pppd/tty.c b/pppd/tty.c
+index bc96695..8e76a5d 100644
+--- a/pppd/tty.c
++++ b/pppd/tty.c
+@@ -896,7 +896,7 @@ open_socket(dest)
+     *sep = ':';
+     /* get a socket and connect it to the other end */
+-    sock = socket(PF_INET, SOCK_STREAM, 0);
++    sock = socket(PF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0);
+     if (sock < 0) {
+       error("Can't create socket: %m");
+       return -1;
+-- 
+1.8.3.1
+
diff --git a/src/patches/ppp/ppp-2.4.6-increase-max-padi-attempts.patch b/src/patches/ppp/ppp-2.4.6-increase-max-padi-attempts.patch
new file mode 100644 (file)
index 0000000..5127c1f
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/pppd/plugins/rp-pppoe/pppoe.h b/pppd/plugins/rp-pppoe/pppoe.h
+index 9ab2eee..86762bd 100644
+--- a/pppd/plugins/rp-pppoe/pppoe.h
++++ b/pppd/plugins/rp-pppoe/pppoe.h
+@@ -148,7 +148,7 @@ extern UINT16_t Eth_PPPOE_Session;
+ #define STATE_TERMINATED    4
+ /* How many PADI/PADS attempts? */
+-#define MAX_PADI_ATTEMPTS 3
++#define MAX_PADI_ATTEMPTS 4
+ /* Initial timeout for PADO/PADS */
+ #define PADI_TIMEOUT 5
diff --git a/src/patches/squidclamav-5.11-dont_use_ipv6.patch b/src/patches/squidclamav-5.11-dont_use_ipv6.patch
new file mode 100644 (file)
index 0000000..4588962
--- /dev/null
@@ -0,0 +1,13 @@
+diff -Nur a/src/squidclamav.c b/src/squidclamav.c
+--- a/src/squidclamav.c        2012-10-29 09:46:06.000000000 +0100
++++ b/src/squidclamav.c        2013-07-06 19:10:56.375292374 +0200
+@@ -413,6 +413,9 @@
+         /* Suppress error: SSL certificate problem, verify that the CA cert is OK */
+         curl_easy_setopt (eh, CURLOPT_SSL_VERIFYHOST, 0);
+         curl_easy_setopt (eh, CURLOPT_SSL_VERIFYPEER, 0);
++
++        /* Prevent squidclamav from using IPv6 - fix by Nico Prenzel */
++        curl_easy_setopt (eh, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
+       }
+    }
+   /* create a squidguard child process and setup pipes */
diff --git a/src/patches/squidclamav-5.11-squid-helper-protocol.patch b/src/patches/squidclamav-5.11-squid-helper-protocol.patch
new file mode 100644 (file)
index 0000000..e64bcaf
--- /dev/null
@@ -0,0 +1,185 @@
+diff -Naur squidclamav-5.11.org/src/squidclamav.c squidclamav-5.11/src/squidclamav.c
+--- squidclamav-5.11.org/src/squidclamav.c     2012-10-29 09:46:06.000000000 +0100
++++ squidclamav-5.11/src/squidclamav.c 2014-06-03 12:26:36.215696508 +0200
+@@ -483,7 +483,7 @@
+          aren't appropriate, then just echo back the line from stdin */
+       if (buff_status == 1) {
+         logit(log_file, "DEBUG Invalid input buffer, aborting: %s\n", sbuff);
+-        puts("");
++        puts("BH message=\"Invalid input buffer\"");
+         fflush(stdout);
+         continue;
+       }
+@@ -496,7 +496,7 @@
+           logit(log_file, "DEBUG No squidguard and no antivir check (TRUSTUSER match) for user: %s\n", in_buff.ident);
+         if (statit == 1)
+               timeit(g_start, "Total");
+-        puts("");
++        puts("ERR message=\"TRUSTUSER match\"");
+         fflush(stdout);
+         continue;
+       }
+@@ -508,7 +508,7 @@
+           logit(log_file, "DEBUG No squidguard and no antivir check (TRUSTCLIENT match) for address: %s/%s\n",in_buff.ipaddress, in_buff.fqdn);
+         if (statit == 1)
+               timeit(g_start, "Total");
+-        puts("");
++        puts("ERR message=\"TRUSTCLIENT match\"");
+         fflush(stdout);
+         continue;
+       }
+@@ -520,7 +520,7 @@
+           logit(log_file, "DEBUG No squidguard and no antivir check (WHITELIST match) for url: %s\n", in_buff.url);
+           if (statit == 1)
+               timeit(g_start, "Total");
+-        puts("");
++        puts("ERR message=\"WHITLIST match\"");
+         fflush(stdout);
+         continue;
+       }
+@@ -536,7 +536,7 @@
+         if ((sockd = dconnect ()) < 0)
+           {
+             logit(log_file, "ERROR Can't connect to Clamd daemon, fallback to Squid.\n");
+-            puts("");
++            puts("BH message=\"Cannot connect to clamd\"");
+             fflush(stdout);
+             continue;
+           }
+@@ -546,7 +546,7 @@
+         if (write (sockd, "zINSTREAM", 10) <= 0)
+           {
+             logit(log_file, "ERROR Can't write to Clamd socket.\n");
+-            puts("");
++            puts("BG message=\"Cannot write to clamd socket\"");
+             fflush(stdout);
+             continue;
+           }
+@@ -614,8 +614,7 @@
+                                          logit(log_file, "Squid Cache purged of url %s.\n", in_buff.url);
+                                       }
+                                 }
+-                                fprintf (stdout, "%s %s %s %s\n", urlredir,
+-                                     in_buff.src_address, in_buff.ident, in_buff.method);
++                                fprintf (stdout, "OK rewrite-url=\"%s\"\n", urlredir);
+                                 fflush(stdout);
+                                 xfree(urlredir);
+                                 if (debug != 0)
+@@ -675,7 +674,7 @@
+          continue operation (so that Squid still works!),
+          we simply echo stdin to stdout - i.e. "bridge mode" :-) */
+        if (bridge_mode == 1) {
+-        puts("");
++        puts("ERR message=\"brigde mode\"");
+         fflush(stdout);
+         continue;
+        }
+@@ -685,7 +684,7 @@
+       if (buff_status == -1) {
+         if (debug > 2)
+            logit(log_file, "DEBUG method is not GET skipping virus scan.\n");
+-        puts("");
++        puts("ERR message=\"method is not GET skipping virus scan\"");
+         fflush(stdout);
+         continue;
+       }
+@@ -699,7 +698,7 @@
+               timeit(g_start, "Total");
+         /* no replacement for the URL was found */
+-        puts("");
++        puts("ERR message=\"ABORT match\"");
+         fflush(stdout);
+         continue;
+@@ -750,7 +749,7 @@
+                  logit(log_file, "DEBUG HIT Cache found, trust cache enabled, skipping...\n");
+             if (statit == 1)
+               timeit(g_start, "Total");
+-            puts("");
++            puts("ERR message=\"cache hit found\"");
+             fflush(stdout);
+             continue;
+         }
+@@ -762,7 +761,7 @@
+                     logit(log_file, "ERROR No content length from url %s\n", in_buff.url);
+                     if (statit == 1)
+                               timeit(g_start, "Total");
+-                    puts("");
++                    puts("ERR message=\"no content length from URL\"");
+                     fflush(stdout);
+                     continue;
+         }
+@@ -775,7 +774,7 @@
+                     logit(log_file, "DEBUG No antivir check (Content length is upper than maxsize): %'.2f > %'.2f\n", usize, maxsize);
+            if (statit == 1)
+               timeit(g_start, "Total");
+-           puts("");
++           puts("ERR message=\"content length is upper than maxsize\"");
+            fflush(stdout);
+            continue;
+         }
+@@ -787,7 +786,7 @@
+                      in_buff.url);
+                 if (statit == 1)
+                       timeit(g_start, "Total");
+-                puts("");
++                puts("ERR message=\"no content type from URL\"");
+                 fflush(stdout);
+                 continue;
+         }
+@@ -799,7 +798,7 @@
+                   logit(log_file, "DEBUG No antivir check (ABORTCONTENT match) for content-type: %s\n", content_type);
+               if (statit == 1)
+                       timeit(g_start, "Total");
+-              puts("");
++              puts("ERR message=\"ABORTCONTENT match\"");
+               fflush(stdout);
+               continue;
+          }
+@@ -814,7 +813,7 @@
+         if ((sockd = dconnect ()) < 0)
+           {
+             logit(log_file, "ERROR Can't connect to Clamd daemon, fallback to Squid.\n");
+-            puts("");
++            puts("BH message=\"cannot connect clamd daemon\"");
+             fflush(stdout);
+             continue;
+           }
+@@ -824,7 +823,7 @@
+         if (write (sockd, "zINSTREAM", 10) <= 0)
+           {
+             logit(log_file, "ERROR Can't write to Clamd socket.\n");
+-            puts("");
++            puts("BH message=\"cannot write to clamd socket\"");
+             fflush(stdout);
+             continue;
+           }
+@@ -844,7 +843,7 @@
+             close (sockd);
+             if (debug > 1)
+                logit(log_file, "DEBUG Connection to clamd closed.\n");
+-            puts("");
++            puts("ERR message=\"connection to clamd closed\"");
+             fflush(stdout);
+             if (statit == 1)
+                timeit(g_start, "Total");
+@@ -892,8 +891,7 @@
+                                  logit(log_file, "Squid Cache purged of url %s.\n", in_buff.url);
+                               }
+                         }
+-                        fprintf (stdout, "%s %s %s %s\n", urlredir,
+-                             in_buff.src_address, in_buff.ident, in_buff.method);
++                        fprintf (stdout, "OK rewrite-url=\"%s\"\n", urlredir);
+                         fflush(stdout);
+                         xfree(urlredir);
+                         if (debug != 0)
+@@ -911,7 +909,7 @@
+         if (virusfound == 0) {
+             if (debug != 0)
+               logit(log_file, "DEBUG No virus detected.\n");
+-            puts("");
++            puts("ERR message=\"no virus detected\"");
+             fflush(stdout);
+         }
+       }
diff --git a/src/patches/squidguard-1.4-squid-helper-protocol.patch b/src/patches/squidguard-1.4-squid-helper-protocol.patch
new file mode 100644 (file)
index 0000000..9806946
--- /dev/null
@@ -0,0 +1,75 @@
+http://bugs.squid-cache.org/show_bug.cgi?id=3978
+
+--- squidGuard-1.4.orig/src/main.c     2013-12-11 17:42:15.000000000 +1300
++++ squidGuard-1.4.orig/src/main.c     2013-12-11 19:04:09.000000000 +1300
+@@ -175,7 +175,7 @@ 
+       sgReloadConfig();
+       }
+       if(failsafe_mode) {
+-      puts("");
++      puts("ERR message=\"squidGuard failsafe mode\"");
+       fflush(stdout);
+       if(sig_hup){
+           sgReloadConfig();
+@@ -184,7 +184,7 @@ 
+       }
+       if(parseLine(buf,&squidInfo) != 1){
+       sgLogError("Error parsing squid line: %s",buf);
+-      puts("");
++      puts("BH message=\"squidGuard error parsing squid line\"");
+       }
+         else {
+       src = Source;
+@@ -196,14 +196,14 @@ 
+         acl = sgAclCheckSource(src);
+         if((redirect = sgAclAccess(src,acl,&squidInfo)) == NULL){
+           if(src == NULL || src->cont_search == 0){
+-            puts(""); 
++            puts("ERR");
+             break;
+           } else
+             if(src->next != NULL){
+               src = src->next;
+               continue;
+             } else {
+-              puts("");
++              puts("ERR");
+               break;
+             }
+         } else {
+@@ -215,9 +215,10 @@ 
+             squidInfo.ident[0] = '-';
+             squidInfo.ident[1] = '\0';
+           }
+-          fprintf(stdout,"%s %s/%s %s %s\n",redirect,squidInfo.src,
+-                  squidInfo.srcDomain,squidInfo.ident,
+-                  squidInfo.method);
++          if (isdigit(redirect[0]) && isdigit(redirect[1]) && isdigit(redirect[2]) && redirect[3]==':') {
++            fprintf(stdout,"OK status=%c%c%c url=\"%s\"\n", redirect[0], redirect[1], redirect[2], &redirect[4]);
++          } else
++            fprintf(stdout,"OK rewrite-url=\"%s\"\n",redirect);
+             /* sgLogError("%s %s/%s %s %s\n",redirect,squidInfo.src,squidInfo.srcDomain,squidInfo.ident,squidInfo.method);  */
+           break;
+         }
+--- squidGuard-1.4.orig/src/sgDiv.c    2013-12-11 17:42:15.000000000 +1300
++++ squidGuard-1.4.orig/src/sgDiv.c    2013-12-11 18:58:33.000000000 +1300
+@@ -771,7 +771,7 @@ 
+   }
+   sgLogError("Going into emergency mode");
+   while(fgets(buf, MAX_BUF, stdin) != NULL){
+-    puts("");
++    puts("ERR");
+     fflush(stdout);
+   }
+   sgLogError("ending emergency mode, stdin empty");
+--- squidGuard-1.4.orig/src/sgDiv.c.in 2013-12-11 17:42:15.000000000 +1300
++++ squidGuard-1.4.orig/src/sgDiv.c.in 2013-12-11 18:58:40.000000000 +1300
+@@ -782,7 +782,7 @@ 
+   }
+   sgLogError("Going into emergency mode");
+   while(fgets(buf, MAX_BUF, stdin) != NULL){
+-    puts("");
++    puts("ERR");
+     fflush(stdout);
+   }
+   sgLogError("ending emergency mode, stdin empty");
similarity index 88%
rename from src/patches/strongswan-4.5.3_ipfire.patch
rename to src/patches/strongswan-5.0.2_ipfire.patch
index 2ba975b1d5012a13cd3577bd5cdb42f5b6dbff0d..71eb24e481e9b208a9563bb6855c230a37b2accf 100644 (file)
@@ -1,7 +1,6 @@
-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 @@
+--- a/src/_updown/_updown.in
++++ b/src/_updown/_updown.in
+@@ -178,6 +178,29 @@
        ;;
  esac
  
@@ -31,7 +30,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 @@
+@@ -407,12 +430,12 @@
        # 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.
@@ -45,9 +44,9 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
 -          -d $PLUTO_PEER_CLIENT $D_PEER_PORT -j ACCEPT
 +          -d $PLUTO_PEER_CLIENT $D_PEER_PORT -j MARK --set-mark 50
        #
-       # log IPsec host connection setup
-       if [ $VPN_LOGGING ]
-@@ -400,10 +423,10 @@
+       # allow IPIP traffic because of the implicit SA created by the kernel if
+       # IPComp is used (for small inbound packets that are not compressed)
+@@ -428,10 +451,10 @@
          if [ "$PLUTO_PEER_CLIENT" = "$PLUTO_PEER/32" ]
          then
            logger -t $TAG -p $FAC_PRIO \
@@ -60,7 +59,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
          fi
        fi
        ;;
-@@ -411,12 +434,12 @@
+@@ -439,12 +462,12 @@
        # 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.
@@ -74,9 +73,9 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
 -          -d $PLUTO_PEER_CLIENT $D_PEER_PORT -j ACCEPT
 +          -d $PLUTO_PEER_CLIENT $D_PEER_PORT -j MARK --set-mark 50
        #
-       # log IPsec host connection teardown
-       if [ $VPN_LOGGING ]
-@@ -424,10 +447,10 @@
+       # IPIP exception teardown
+       if [ -n "$PLUTO_IPCOMP" ]
+@@ -459,10 +482,10 @@
          if [ "$PLUTO_PEER_CLIENT" = "$PLUTO_PEER/32" ]
          then
            logger -t $TAG -p $FAC_PRIO -- \
@@ -89,7 +88,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
          fi
        fi
        ;;
-@@ -437,10 +460,10 @@
+@@ -472,24 +495,24 @@
        # ones, so do not mess with it; see CAUTION comment up at top.
        if [ "$PLUTO_PEER_CLIENT" != "$PLUTO_MY_SOURCEIP/32" ]
        then
@@ -101,25 +100,37 @@ 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
 -        iptables -I INPUT 1 -i $PLUTO_INTERFACE -p $PLUTO_MY_PROTOCOL \
 +        iptables -I IPSECINPUT 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
 -        iptables -I OUTPUT 1 -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
++            -d $PLUTO_MY_CLIENT $D_MY_PORT $IPSEC_POLICY_IN -j RETURN
 +        iptables -I IPSECOUTPUT 1 -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
              -s $PLUTO_MY_CLIENT $S_MY_PORT \
 -            -d $PLUTO_PEER_CLIENT $D_PEER_PORT $IPSEC_POLICY_OUT -j ACCEPT
 +            -d $PLUTO_PEER_CLIENT $D_PEER_PORT $IPSEC_POLICY_OUT -j MARK --set-mark 50
        fi
        #
-       # log IPsec client connection setup
-@@ -463,12 +486,51 @@
+       # allow IPIP traffic because of the implicit SA created by the kernel if
+@@ -497,7 +520,7 @@
+       # INPUT is correct here even for forwarded traffic.
+       if [ -n "$PLUTO_IPCOMP" ]
+       then
+-        iptables -I INPUT 1 -i $PLUTO_INTERFACE -p 4 \
++        iptables -I IPSECINPUT 1 -i $PLUTO_INTERFACE -p 4 \
+             -s $PLUTO_PEER -d $PLUTO_ME $IPSEC_POLICY_IN -j ACCEPT
+       fi
+       #
+@@ -507,12 +530,51 @@
          if [ "$PLUTO_PEER_CLIENT" = "$PLUTO_PEER/32" ]
          then
            logger -t $TAG -p $FAC_PRIO \
@@ -173,7 +184,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 @@
+@@ -520,34 +582,34 @@
        # ones, so do not mess with it; see CAUTION comment up at top.
        if [ "$PLUTO_PEER_CLIENT" != "$PLUTO_MY_SOURCEIP/32" ]
        then
@@ -187,8 +198,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
@@ -196,8 +210,9 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
 +        iptables -D IPSECINPUT -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
+-               $IPSEC_POLICY_IN -j ACCEPT
 -        iptables -D OUTPUT -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
++               $IPSEC_POLICY_IN -j RETURN
 +        iptables -D IPSECOUTPUT -o $PLUTO_INTERFACE -p $PLUTO_PEER_PROTOCOL \
              -s $PLUTO_MY_CLIENT $S_MY_PORT \
              -d $PLUTO_PEER_CLIENT $D_PEER_PORT \
@@ -205,8 +220,15 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
 +               $IPSEC_POLICY_OUT -j MARK --set-mark 50
        fi
        #
-       # log IPsec client connection teardown
-@@ -506,12 +568,51 @@
+       # IPIP exception teardown
+       if [ -n "$PLUTO_IPCOMP" ]
+       then
+-        iptables -D INPUT -i $PLUTO_INTERFACE -p 4 \
++        iptables -D IPSECINPUT -i $PLUTO_INTERFACE -p 4 \
+             -s $PLUTO_PEER -d $PLUTO_ME $IPSEC_POLICY_IN -j ACCEPT
+       fi
+       #
+@@ -557,12 +619,51 @@
          if [ "$PLUTO_PEER_CLIENT" = "$PLUTO_PEER/32" ]
          then
            logger -t $TAG -p $FAC_PRIO -- \
@@ -260,7 +282,7 @@ diff -Naur strongswan-4.5.3.org/src/_updown/_updown.in strongswan-4.5.3/src/_upd
        ;;
  #
  # IPv6
-@@ -546,10 +647,10 @@
+@@ -597,10 +698,10 @@
        # 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 +295,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 @@
+@@ -621,10 +722,10 @@
        # 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 +308,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 @@
+@@ -647,10 +748,10 @@
        # ones, so do not mess with it; see CAUTION comment up at top.
        if [ "$PLUTO_PEER_CLIENT" != "$PLUTO_MY_SOURCEIP/128" ]
        then
@@ -299,7 +321,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 @@
+@@ -659,10 +760,10 @@
        # or sometimes host access via the internal IP is needed
        if [ -n "$PLUTO_MY_SOURCEIP" -o -n "$PLUTO_HOST_ACCESS" ]
        then
@@ -312,7 +334,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 @@
+@@ -686,11 +787,11 @@
        # ones, so do not mess with it; see CAUTION comment up at top.
        if [ "$PLUTO_PEER_CLIENT" != "$PLUTO_MY_SOURCEIP/128" ]
        then
@@ -326,7 +348,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 @@
+@@ -700,11 +801,11 @@
        # 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/tcpdump-4.0.0-noINET.patch b/src/patches/tcpdump-4.0.0-noINET.patch
deleted file mode 100644 (file)
index 2664134..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---- tcpdump-4.0.0.orig/print-enc.c     2008-09-01 09:44:22.000000000 +0700
-+++ tcpdump-4.0.0/print-enc.c  2008-11-10 21:40:52.000000000 +0700
-@@ -77,9 +77,11 @@
-       case AF_INET:
-               ip_print(gndo, p, length);
-               break;
-+#ifdef INTE6
-       case AF_INET6:
-               ip6_print(p, length);
-               break;
-+#endif
-       }
- out:
diff --git a/src/patches/udev-208_remove_systemd_log.patch b/src/patches/udev-208_remove_systemd_log.patch
new file mode 100644 (file)
index 0000000..927de1e
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Naur systemd-208.org/src/libudev/libudev-util.c systemd-208/src/libudev/libudev-util.c
+--- systemd-208.org/src/libudev/libudev-util.c 2013-09-23 21:31:55.000000000 +0200
++++ systemd-208/src/libudev/libudev-util.c     2013-11-19 23:18:10.326350131 +0100
+@@ -481,7 +481,7 @@
+         if (fd < 0)
+                 return -errno;
+-        len = snprintf(text, sizeof(text), "<30>systemd-udevd[%u]: ", getpid());
++        len = snprintf(text, sizeof(text), "udevd[%u]: ", getpid());
+         va_start(ap, fmt);
+         len += vsnprintf(text + len, sizeof(text) - len, fmt, ap);
diff --git a/src/patches/util-linux-2.12r-cramfs-1.patch b/src/patches/util-linux-2.12r-cramfs-1.patch
deleted file mode 100644 (file)
index b8366b3..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-Submitted by: Jeremy Utley <jeremy@linuxfromscratch.org>
-Date: 2004-12-25
-Initial Package Version: 2.12p (should apply to versions back to at least k)
-Upstream Status: Not Submitted - Test Version
-Origin: Alexander Patrakov, adapted from debian build of cramfs utilities
-Description: Util-Linux fails in cramfs compilation due to changes in the
-linux-libc-headers package 2.6.9 and after.  This patch is a proper fix to the
-problem, but may in fact not be accepted upstream.
-
-
-diff -Naur util-linux-2.12p/disk-utils/fsck.cramfs.c util-linux-2.12p-new/disk-utils/fsck.cramfs.c
---- util-linux-2.12p/disk-utils/fsck.cramfs.c  2004-12-11 14:53:16.000000000 +0000
-+++ util-linux-2.12p-new/disk-utils/fsck.cramfs.c      2004-12-26 00:53:10.665199086 +0000
-@@ -76,16 +76,7 @@
- #define PAD_SIZE 512
--#include <asm/page.h>
--#ifdef PAGE_SIZE
--#define PAGE_CACHE_SIZE ((int) PAGE_SIZE)
--#elif defined __ia64__
--#define PAGE_CACHE_SIZE (16384)
--#elif defined __alpha__
--#define PAGE_CACHE_SIZE (8192)
--#else
--#define PAGE_CACHE_SIZE (4096)
--#endif
-+#define PAGE_CACHE_SIZE  page_size
- /* Guarantee access to at least 8kB at a time */
- #define ROMBUFFER_BITS        13
-@@ -95,11 +86,13 @@
- static unsigned long read_buffer_block = ~0UL;
- /* Uncompressing data structures... */
--static char outbuffer[PAGE_CACHE_SIZE*2];
-+static char *outbuffer;
- z_stream stream;
- #endif /* INCLUDE_FS_TESTS */
-+static size_t page_size;
-+
- /* Input status of 0 to print help and exit without an error. */
- static void usage(int status)
- {
-@@ -464,9 +457,17 @@
-       int c;                  /* for getopt */
-       int start = 0;
-+      page_size = sysconf(_SC_PAGESIZE);
-+      
-       if (argc)
-               progname = argv[0];
-+      outbuffer = malloc(page_size * 2);
-+      if (!outbuffer) {
-+              fprintf(stderr, _("failed to allocate outbuffer\n"));
-+              exit(8);
-+      }
-+
-       /* command line options */
-       while ((c = getopt(argc, argv, "hx:v")) != EOF) {
-               switch (c) {
-diff -Naur util-linux-2.12p/disk-utils/mkfs.cramfs.c util-linux-2.12p-new/disk-utils/mkfs.cramfs.c
---- util-linux-2.12p/disk-utils/mkfs.cramfs.c  2004-12-11 14:56:01.000000000 +0000
-+++ util-linux-2.12p-new/disk-utils/mkfs.cramfs.c      2004-12-26 00:53:10.666198928 +0000
-@@ -46,16 +46,8 @@
- static const char *progname = "mkcramfs";
- static int verbose = 0;
--#ifdef __ia64__
--#define PAGE_CACHE_SIZE (16384)
--#elif defined __alpha__
--#define PAGE_CACHE_SIZE (8192)
--#else
--#define PAGE_CACHE_SIZE (4096)
--#endif
--
- /* The kernel assumes PAGE_CACHE_SIZE as block size. */
--static unsigned int blksize = PAGE_CACHE_SIZE; /* settable via -b option */
-+static unsigned int blksize;                   /* settable via -b option */
- static long total_blocks = 0, total_nodes = 1; /* pre-count the root node */
- static int image_length = 0;
-@@ -730,6 +722,7 @@
-       u32 crc = crc32(0L, Z_NULL, 0);
-       int c;
-+      blksize = sysconf(_SC_PAGESIZE);
-       total_blocks = 0;
-       if (argc) {
diff --git a/src/patches/util-linux-2.12r-umount-no-special.patch b/src/patches/util-linux-2.12r-umount-no-special.patch
deleted file mode 100644 (file)
index d79598f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- util-linux-2.12r.old/mount/umount.c
-+++ util-linux-2.12r/mount/umount.c
-@@ -31,7 +31,7 @@
- #include <arpa/inet.h>
- #endif
--#if defined(MNT_FORCE) && !defined(__sparc__) && !defined(__arm__)
-+#if defined(MNT_FORCE)
- /* Interesting ... it seems libc knows about MNT_FORCE and presumably
-    about umount2 as well -- need not do anything */
- #else /* MNT_FORCE */
diff --git a/src/patches/util-linux-buildfix.patch b/src/patches/util-linux-buildfix.patch
deleted file mode 100644 (file)
index 3d578e4..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-Submitted By: Dan Nicholson <dbn_dot_lists_at_gmail_dot_com>
-Date: 2006-07-08
-Initial Package Version: 2.12r
-Origin: Upstream
-Upstream Status: Applied in util-linux-2.13-pre6.tar.bz2
-Description: Replaces uses of *llseek with lseek. Fixes an issue
-       compiling util-linux with kernel headers from linux-2.6.18-rc1
-       headers_install.
-
-diff -pur -x '*.rej' util-linux-2.12r.orig/fdisk/Makefile util-linux-2.12r/fdisk/Makefile
---- util-linux-2.12r.orig/fdisk/Makefile       2004-09-06 20:28:58.000000000 +0000
-+++ util-linux-2.12r/fdisk/Makefile    2006-07-08 15:40:57.140375072 +0000
-@@ -39,7 +39,7 @@ else
- endif
- endif
--cfdisk: cfdisk.o llseek.o disksize.o i386_sys_types.o $(LIB)/xstrncpy.o
-+cfdisk: cfdisk.o disksize.o i386_sys_types.o $(LIB)/xstrncpy.o
- ifeq "$(HAVE_SLANG)" "yes"
-       $(CC) $(LDFLAGS) $^ -o $@ $(LIBSLANG)
- else
-@@ -55,7 +55,7 @@ activate: sfdisk
-       rm -f activate
-       ln -s sfdisk activate
--fdisk: fdisk.o llseek.o disksize.o fdiskbsdlabel.o fdisksgilabel.o \
-+fdisk: fdisk.o disksize.o fdiskbsdlabel.o fdisksgilabel.o \
-       fdisksunlabel.o fdiskaixlabel.o i386_sys_types.o partname.o
- fdisk.o: fdisk.c fdisk.h
- fdiskbsdlabel.o: fdiskbsdlabel.c fdisk.h fdiskbsdlabel.h
-diff -pur -x '*.rej' util-linux-2.12r.orig/fdisk/cfdisk.c util-linux-2.12r/fdisk/cfdisk.c
---- util-linux-2.12r.orig/fdisk/cfdisk.c       2005-09-09 21:44:57.000000000 +0000
-+++ util-linux-2.12r/fdisk/cfdisk.c    2006-07-08 15:40:23.458901045 +0000
-@@ -84,9 +84,6 @@
- #include "xstrncpy.h"
- #include "common.h"
--extern long long ext2_llseek(unsigned int fd, long long offset,
--                           unsigned int origin);
--
- #define VERSION UTIL_LINUX_VERSION
- #define DEFAULT_DEVICE "/dev/hda"
-@@ -552,7 +549,7 @@ die_x(int ret) {
- static void
- read_sector(char *buffer, long long sect_num) {
--    if (ext2_llseek(fd, sect_num*SECTOR_SIZE, SEEK_SET) < 0)
-+    if (lseek(fd, sect_num*SECTOR_SIZE, SEEK_SET) < 0)
-       fatal(_("Cannot seek on disk drive"), 2);
-     if (read(fd, buffer, SECTOR_SIZE) != SECTOR_SIZE)
-       fatal(_("Cannot read disk drive"), 2);
-@@ -560,7 +557,7 @@ read_sector(char *buffer, long long sect
- static void
- write_sector(char *buffer, long long sect_num) {
--    if (ext2_llseek(fd, sect_num*SECTOR_SIZE, SEEK_SET) < 0)
-+    if (lseek(fd, sect_num*SECTOR_SIZE, SEEK_SET) < 0)
-       fatal(_("Cannot seek on disk drive"), 2);
-     if (write(fd, buffer, SECTOR_SIZE) != SECTOR_SIZE)
-       fatal(_("Cannot write disk drive"), 2);
-@@ -587,7 +584,7 @@ get_dos_label(int i) {
-       long long offset;
-       offset = (p_info[i].first_sector + p_info[i].offset) * SECTOR_SIZE;
--      if (ext2_llseek(fd, offset, SEEK_SET) == offset
-+      if (lseek(fd, offset, SEEK_SET) == offset
-           && read(fd, &sector, sizeof(sector)) == sizeof(sector)) {
-               dos_copy_to_info(p_info[i].ostype, OSTYPESZ,
-                                sector+DOS_OSTYPE_OFFSET, DOS_OSTYPE_SZ);
-@@ -672,7 +669,7 @@ get_linux_label(int i) {
-       offset = (p_info[i].first_sector + p_info[i].offset) * SECTOR_SIZE
-               + 1024;
--      if (ext2_llseek(fd, offset, SEEK_SET) == offset
-+      if (lseek(fd, offset, SEEK_SET) == offset
-           && read(fd, &e2fsb, sizeof(e2fsb)) == sizeof(e2fsb)
-           && e2fsb.s_magic[0] + (e2fsb.s_magic[1]<<8) == EXT2_SUPER_MAGIC) {
-               label = e2fsb.s_volume_name;
-@@ -688,7 +685,7 @@ get_linux_label(int i) {
-       }
-       offset = (p_info[i].first_sector + p_info[i].offset) * SECTOR_SIZE + 0;
--      if (ext2_llseek(fd, offset, SEEK_SET) == offset
-+      if (lseek(fd, offset, SEEK_SET) == offset
-           && read(fd, &xfsb, sizeof(xfsb)) == sizeof(xfsb)
-           && !strncmp(xfsb.s_magic, XFS_SUPER_MAGIC, 4)) {
-               label = xfsb.s_fname;
-@@ -702,7 +699,7 @@ get_linux_label(int i) {
-       /* jfs? */
-       offset = (p_info[i].first_sector + p_info[i].offset) * SECTOR_SIZE
-               + JFS_SUPER1_OFF;
--      if (ext2_llseek(fd, offset, SEEK_SET) == offset
-+      if (lseek(fd, offset, SEEK_SET) == offset
-           && read(fd, &jfsb, sizeof(jfsb)) == sizeof(jfsb)
-           && !strncmp(jfsb.s_magic, JFS_MAGIC, strlen(JFS_MAGIC))) {
-               label = jfsb.s_label;
-@@ -716,7 +713,7 @@ get_linux_label(int i) {
-       /* reiserfs? */
-       offset = (p_info[i].first_sector + p_info[i].offset) * SECTOR_SIZE
-               + REISERFS_DISK_OFFSET_IN_BYTES;
--      if (ext2_llseek(fd, offset, SEEK_SET) == offset
-+      if (lseek(fd, offset, SEEK_SET) == offset
-           && read(fd, &reiserfsb, sizeof(reiserfsb)) == sizeof(reiserfsb)
-           && has_reiserfs_magic_string(&reiserfsb, &reiserfs_is_3_6)) {
-               if (reiserfs_is_3_6) {
-@@ -1860,7 +1857,7 @@ write_part_table(void) {
-        while (!done) {
-             mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X,
--                     _("Are you sure you want write the partition table "
-+                     _("Are you sure you want to write the partition table "
-                      "to disk? (yes or no): "));
-             len = get_string(response, LINE_LENGTH, NULL);
-             clear_warning();
-diff -pur -x '*.rej' util-linux-2.12r.orig/fdisk/fdisk.c util-linux-2.12r/fdisk/fdisk.c
---- util-linux-2.12r.orig/fdisk/fdisk.c        2004-12-18 02:00:31.000000000 +0000
-+++ util-linux-2.12r/fdisk/fdisk.c     2006-07-08 15:40:23.461899841 +0000
-@@ -239,8 +239,8 @@ void fatal(enum failure why) {
- static void
- seek_sector(int fd, unsigned int secno) {
--      long long offset = (long long) secno * sector_size;
--      if (ext2_llseek(fd, offset, SEEK_SET) == (long long) -1)
-+      off_t offset = (off_t) secno * sector_size;
-+      if (lseek(fd, offset, SEEK_SET) == (off_t) -1)
-               fatal(unable_to_seek);
- }
-diff -pur -x '*.rej' util-linux-2.12r.orig/fdisk/fdisk.h util-linux-2.12r/fdisk/fdisk.h
---- util-linux-2.12r.orig/fdisk/fdisk.h        2004-12-15 18:19:06.000000000 +0000
-+++ util-linux-2.12r/fdisk/fdisk.h     2006-07-08 15:40:23.462899439 +0000
-@@ -26,9 +26,6 @@
- #define cround(n)     (display_in_cyl_units ? ((n)/units_per_sector)+1 : (n))
- #define scround(x)    (((x)+units_per_sector-1)/units_per_sector)
--extern long long ext2_llseek(unsigned int fd, long long offset,
--                           unsigned int origin);
--
- #if defined(__GNUC__) && (defined(__arm__) || defined(__alpha__))
- # define PACKED __attribute__ ((packed))
- #else
-diff -pur -x '*.rej' util-linux-2.12r.orig/fdisk/fdiskbsdlabel.c util-linux-2.12r/fdisk/fdiskbsdlabel.c
---- util-linux-2.12r.orig/fdisk/fdiskbsdlabel.c        2003-07-13 21:12:47.000000000 +0000
-+++ util-linux-2.12r/fdisk/fdiskbsdlabel.c     2006-07-08 15:40:23.463899038 +0000
-@@ -566,7 +566,7 @@ xbsd_write_bootstrap (void)
-   sector = get_start_sect(xbsd_part);
- #endif
--  if (ext2_llseek (fd, (long long) sector * SECTOR_SIZE, SEEK_SET) == -1)
-+  if (lseek (fd, (off_t) sector * SECTOR_SIZE, SEEK_SET) == -1)
-     fatal (unable_to_seek);
-   if (BSD_BBSIZE != write (fd, disklabelbuffer, BSD_BBSIZE))
-     fatal (unable_to_write);
-@@ -735,7 +735,7 @@ xbsd_readlabel (struct partition *p, str
-       sector = 0;
- #endif
--      if (ext2_llseek (fd, (long long) sector * SECTOR_SIZE, SEEK_SET) == -1)
-+      if (lseek (fd, (off_t) sector * SECTOR_SIZE, SEEK_SET) == -1)
-               fatal (unable_to_seek);
-       if (BSD_BBSIZE != read (fd, disklabelbuffer, BSD_BBSIZE))
-               fatal (unable_to_read);
-@@ -781,12 +781,12 @@ xbsd_writelabel (struct partition *p, st
- #if defined (__alpha__) && BSD_LABELSECTOR == 0
-   alpha_bootblock_checksum (disklabelbuffer);
--  if (ext2_llseek (fd, (long long) 0, SEEK_SET) == -1)
-+  if (lseek (fd, (off_t) 0, SEEK_SET) == -1)
-     fatal (unable_to_seek);
-   if (BSD_BBSIZE != write (fd, disklabelbuffer, BSD_BBSIZE))
-     fatal (unable_to_write);
- #else
--  if (ext2_llseek (fd, (long long) sector * SECTOR_SIZE + BSD_LABELOFFSET,
-+  if (lseek (fd, (off_t) sector * SECTOR_SIZE + BSD_LABELOFFSET,
-                  SEEK_SET) == -1)
-     fatal (unable_to_seek);
-   if (sizeof (struct xbsd_disklabel) != write (fd, d, sizeof (struct xbsd_disklabel)))
-diff -pur -x '*.rej' util-linux-2.12r.orig/fdisk/fdisksgilabel.c util-linux-2.12r/fdisk/fdisksgilabel.c
---- util-linux-2.12r.orig/fdisk/fdisksgilabel.c        2004-12-18 01:53:45.000000000 +0000
-+++ util-linux-2.12r/fdisk/fdisksgilabel.c     2006-07-08 15:40:23.464898637 +0000
-@@ -379,7 +379,7 @@ sgi_write_table(void) {
-                */
-               sgiinfo *info = fill_sgiinfo();
-               int infostartblock = SSWAP32(sgilabel->directory[0].vol_file_start);
--              if (ext2_llseek(fd, (long long)infostartblock*
-+              if (lseek(fd, (off_t) infostartblock*
-                               SECTOR_SIZE, SEEK_SET) < 0)
-                       fatal(unable_to_seek);
-               if (write(fd, info, SECTOR_SIZE) != SECTOR_SIZE)
-diff -pur -x '*.rej' util-linux-2.12r.orig/fdisk/sfdisk.c util-linux-2.12r/fdisk/sfdisk.c
---- util-linux-2.12r.orig/fdisk/sfdisk.c       2005-01-04 22:31:57.000000000 +0000
-+++ util-linux-2.12r/fdisk/sfdisk.c    2006-07-08 15:40:23.467897432 +0000
-@@ -164,36 +164,17 @@ fatal(char *s, ...) {
- /*
-  * sseek: seek to specified sector - return 0 on failure
-  *
-- * For >4GB disks lseek needs a > 32bit arg, and we have to use llseek.
-- * On the other hand, a 32 bit sector number is OK until 2TB.
-- * The routines _llseek and sseek below are the only ones that
-- * know about the loff_t type.
-- *
-  * Note: we use 512-byte sectors here, irrespective of the hardware ss.
-  */
--#undef use_lseek
--#if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__) || defined (__s390x__)
--#define use_lseek
--#endif
--
--#ifndef use_lseek
--static __attribute__used
--_syscall5(int,  _llseek,  unsigned int,  fd, ulong, hi, ulong, lo,
--       loff_t *, res, unsigned int, wh);
--#endif
- static int
- sseek(char *dev, unsigned int fd, unsigned long s) {
--    loff_t in, out;
--    in = ((loff_t) s << 9);
-+    off_t in, out;
-+    in = ((off_t) s << 9);
-     out = 1;
--#ifndef use_lseek
--    if (_llseek (fd, in>>32, in & 0xffffffff, &out, SEEK_SET) != 0) {
--#else
-     if ((out = lseek(fd, in, SEEK_SET)) != in) {
--#endif
--      perror("llseek");
-+      perror("lseek");
-       error(_("seek error on %s - cannot seek to %lu\n"), dev, s);
-       return 0;
-     }
-diff -pur -x '*.rej' util-linux-2.12r.orig/partx/partx.c util-linux-2.12r/partx/partx.c
---- util-linux-2.12r.orig/partx/partx.c        2004-08-23 20:13:27.000000000 +0000
-+++ util-linux-2.12r/partx/partx.c     2006-07-08 15:40:23.469896630 +0000
-@@ -330,34 +330,15 @@ xmalloc (size_t size) {
-       return t;
- }
--/*
-- * sseek: seek to specified sector
-- */
--#if !defined (__alpha__) && !defined (__ia64__) && !defined (__s390x__) && !defined(__x86_64__)
--#define NEED__llseek
--#endif
--
--#ifdef NEED__llseek
--#include <linux/unistd.h>       /* _syscall */
--static
--_syscall5(int,  _llseek,  uint,  fd, ulong, hi, ulong, lo,
--        long long *, res, uint, wh);
--#endif
--
- static int
- sseek(int fd, unsigned int secnr) {
-       long long in, out;
-       in = ((long long) secnr << 9);
-       out = 1;
--#ifdef NEED__llseek
--      if (_llseek (fd, in>>32, in & 0xffffffff, &out, SEEK_SET) != 0
--          || out != in)
--#else
-       if ((out = lseek(fd, in, SEEK_SET)) != in)
--#endif
-       {
--              fprintf(stderr, "llseek error\n");
-+              fprintf(stderr, "lseek error\n");
-               return -1;
-       }
-       return 0;
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; \
diff --git a/src/patches/wget-1.14-texi2pod-1.patch b/src/patches/wget-1.14-texi2pod-1.patch
new file mode 100644 (file)
index 0000000..700242b
--- /dev/null
@@ -0,0 +1,32 @@
+Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
+Date: 2013-06-18
+Initial Package Version: 1.14
+Upstream Status: Submitted
+Origin: Arch
+Description: Build with perl-5.18.
+
+http://lists.gnu.org/archive/html/bug-wget/2013-06/msg00046.html
+
+From 2ed1707b5d8be66feb80cccfe8e11e719b52b99a Mon Sep 17 00:00:00 2001
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Mon, 17 Jun 2013 23:31:46 +0530
+Subject: [PATCH] Fix error in texi2pod intriduced with Perl 5.18
+
+---
+
+diff --git a/doc/texi2pod.pl b/doc/texi2pod.pl
+index 86c4b18..9db6de1 100755
+--- a/doc/texi2pod.pl
++++ b/doc/texi2pod.pl
+@@ -291,7 +291,7 @@ while(<$inf>) {
+       if (defined $1) {
+             my $thing = $1;
+             if ($ic =~ /\@asis/) {
+-                $_ = "\n=item $thing\n";
++                $_ = "\n=item C<$thing>\n";
+             } else {
+                 # Entity escapes prevent munging by the <> processing below.
+                 $_ = "\n=item $ic\&LT;$thing\&GT;\n";
+-- 
+1.8.3.1
+
index 30616a4a5a48277487133a21aae1776eb77122a6..a340d6f1462e6eb1dd2ddacef5682dd28f8306b7 100644 (file)
@@ -2,8 +2,8 @@
 
 COREVER=$(cat /opt/pakfire/db/core/mine)
 # FIXME: edit this lines before release
-URL="http://download.ipfire.org/releases/ipfire-2.x/2.13-core$COREVER/"
-ISO="ipfire-2.13.i586-full-core$COREVER.iso"
+URL="http://download.ipfire.org/releases/ipfire-2.x/2.15-core$COREVER/"
+ISO="ipfire-2.15.i586-full-core$COREVER.iso"
 
 if [ -z $1 ]; then
        echo usage: $0 backup-file
@@ -60,6 +60,7 @@ echo "Running mkisofs"
 mkisofs -J -r -V "ipfire backup ${TS}" \
             -b boot/isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table \
             -c boot/isolinux/boot.catalog backupiso.${TS} > $(basename ${ISO} .iso)-${TS}.iso
+isohybrid $(basename ${ISO} .iso)-${TS}.iso
 
 echo "Cleaning up"
 rm -rf backupiso.${TS}
diff --git a/src/scripts/convert-ovpn b/src/scripts/convert-ovpn
new file mode 100755 (executable)
index 0000000..58921a5
--- /dev/null
@@ -0,0 +1,60 @@
+#!/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 openvpn ccd files with underscore                  #
+# to files with spaces to make them working with openvpn 2.3 again            #
+# STEP1: read ovpnconfig and verify cert names                                #
+# STEP2: if neccessary convert ccd file                                       #
+#                                                                             #
+###############################################################################
+
+require '/var/ipfire/general-functions.pl';
+
+my %configovpn=();
+my $ccdpath="/var/ipfire/ovpn/ccd/";
+my $ovpnconfig="/var/ipfire/ovpn/ovpnconfig";
+
+&General::readhasharray ($ovpnconfig,\%configovpn);
+
+&check_config();
+
+sub check_config {
+       print "Converting CCD files...\n";
+       chdir($ccdpath);
+
+       foreach my $key (sort keys %configovpn){
+               # Skip everything else but roadwarrior connections.
+               next if ($configovpn{$key}[3] ne 'host');
+
+               # Skip all connections with no space in the CN name.
+               next if ($configovpn{$key}[2] !~ " ");
+
+               my $ccdname = $configovpn{$key}[2];
+               $ccdname =~ tr/ /_/;
+
+               # Rename the CCD file if one with the old format exists.
+               if (-e "$ccdname") {
+                       print " Renaming $ccdname -> $configovpn{$key}[2]...\n";
+                       rename($ccdname, $configovpn{$key}[2]);
+               }
+       }
+}
diff --git a/src/scripts/dialctrl.pl b/src/scripts/dialctrl.pl
deleted file mode 100644 (file)
index 88f5492..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-#!/usr/bin/perl
-#
-# Dialup Statistics for IPFire
-# based on SilverStar's work on
-# http://goodymuc.go.funpic.de
-#
-
-require '/var/ipfire/general-functions.pl';
-require "${General::swroot}/lang.pl";
-require "${General::swroot}/header.pl";
-
-($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst)=localtime();
-             $jahr=$year;
-             $monat=$mon+1;
-             $tag=$mday;
-             $jahr=$year;
-
-$jahr=$year +1900;
-
-if (length($monat) == 1)
-{
-    $monat="0$monat";
-}
-if(length($tag) == 1)
-{
-   $tag="0$tag";
-}
-if(length($hour) == 1)
-{
-   $hour="0$hour";
-}
-if(length($min) == 1)
-{
-   $min="0$min";
-}
-if(length($sec) == 1)
-{
-   $sec="0$sec";
-}
-
-my $s_date = $tag."/".$monat."/".$jahr;
-my $s_time = $hour.":".$min.":".$sec;
-my $file_log = "/var/log/counter/dialup.log";
-my $file_connect = "/var/log/counter/connect";
-my $file_reset = "/var/log/counter/reset";
-
-if ($ARGV[0] eq 'up') {
-       if (! -e "$file_log") {
-               &new;
-       } else {
-               open(CONNECT,">$file_connect");
-               close(CONNECT);
-               open(COUNTER,"<$file_log");
-               $line = <COUNTER>;
-               ($start,$update,$up,$down,$rec,$on,$bit) = split(/\|/,$line);
-               close(COUNTER);
-               $up++;
-               $update = $s_date." on ".$s_time;
-               open(COUNTER,">$file_log");
-               print COUNTER "$start\|$update\|$up\|$down\|$rec\|$on\|$bit";
-               close(COUNTER);
-       }
-}
-
-if ($ARGV[0] eq 'down') {
-       if (! -e "$file_log") {
-               &new;
-       } else {
-               open(COUNTER,"<$file_log");
-               $line = <COUNTER>;
-               ($start,$update,$up,$down,$rec,$on,$bit) = split(/\|/,$line);
-               close(COUNTER);
-               $on =~ /(\d+)d\s+(\d+)h\s+(\d+)m\s+(\d+)s/;
-               $d1 = $1; $h1 = $2; $m1 = $3; $s1 = $4;
-               $con = &General::age("$file_connect");
-               $con =~ /(\d+)d\s+(\d+)h\s+(\d+)m\s+(\d+)s/;
-               $d2 = $1; $h2 = $2; $m2 = $3; $s2 = $4;
-               $sum_d = ($d1 + $d2) * 86400;
-               $sum_h = ($h1 + $h2) * 3600;
-               $sum_m = ($m1 + $m2) * 60;
-               $sum_s = ($s1 + $s2);
-               $sum_1 = $sum_d + $sum_h + $sum_m + $sum_s;
-               $d = int($sum_1 / 86400);
-               $totalhours = int($sum_1 / 3600);
-               $h = $totalhours % 24;
-               $totalmins = int($sum_1 / 60);
-               $m = $totalmins % 60;
-               $s = $sum_1 % 60;
-               $on = "${d}d ${h}h ${m}m ${s}s";
-               $down++;
-               $update = $s_date." on ".$s_time;
-               open(COUNTER,">$file_log");
-               print COUNTER "$start\|$update\|$up\|$down\|$rec\|$on\|$bit";
-               close(COUNTER);
-       }
-}
-
-if ($ARGV[0] eq 'rec') {
-       if (! -e "$file_log") {
-               &new;
-       } else {
-               open(COUNTER,"<$file_log");
-               $line = <COUNTER>;
-               ($start,$update,$up,$down,$rec,$on,$bit) = split(/\|/,$line);
-               close(COUNTER);
-               $rec++;
-               $update = $s_date." on ".$s_time;
-               open(COUNTER,">$file_log");
-               print COUNTER "$start\|$update\|$up\|$down\|$rec\|$on\|$bit";
-               close(COUNTER);
-       }
-}
-
-elsif ($ARGV[0] eq 'show') {
-if (! -e "$file_log") {
-               &new;
-       }
-else {
-               open(COUNTER,"<$file_log");
-                       $line = <COUNTER>;
-                       ($start,$update,$up,$down,$rec,$on,$bit) = split(/\|/,$line);
-                       $on =~ /(\d+)d\s+(\d+)h\s+(\d+)m\s+(\d+)s/;
-                       $d1 = $1; $h1 = $2; $m1 = $3; $s1 = $4;
-               close(COUNTER);
-               if ( ! -e "${General::swroot}/red/active") {
-                       $timecon = "0d 0h 0m 0s";
-               } else {
-                       $timecon = &General::age("$file_connect");
-               }
-               $timecon =~ /(\d+)d\s+(\d+)h\s+(\d+)m\s+(\d+)s/;
-               $d2 = $1; $h2 = $2; $m2 = $3; $s2 = $4;
-               $timeres = &General::age("$file_reset");
-               $timeres =~ /(\d+)d\s+(\d+)h\s+(\d+)m\s+(\d+)s/;
-               $d3 = $1; $h3 = $2; $m3 = $3; $s3 = $4;
-               $sum_d1 = ($d1 + $d2) * 86400;
-               $sum_h1 = ($h1 + $h2) * 3600;
-               $sum_m1 = ($m1 + $m2) * 60;
-               $sum_s1 = ($s1 + $s2);
-               $sum_1 = $sum_d1 + $sum_h1 + $sum_m1 + $sum_s1;
-               $sum_d2 = $d3 * 86400;
-               $sum_h2 = $h3 * 3600;
-               $sum_m2 = $m3 * 60;
-               $sum_s2 = $s3;
-               $sum_2 = $sum_d2 + $sum_h2 + $sum_m2 + $sum_s2;
-               $d = int($sum_1 / 86400);
-               $totalhours = int($sum_1 / 3600);
-               $h = $totalhours % 24;
-               $totalmins = int($sum_1 / 60);
-               $m = $totalmins % 60;
-               $s = $sum_1 % 60;
-               $current = "${d}d ${h}h ${m}m ${s}s";
-               $ontime = ( $sum_1 * 100 ) / $sum_2;
-               if ($ontime >= 99.95) {
-                       $ontime = sprintf("%.0f", $ontime);
-               }
-               elsif ($ontime <= 0.05) {
-                       $ontime = sprintf("%.0f", $ontime);
-               }
-               else {
-                       $ontime = sprintf("%.1f", $ontime);
-               }
-
-print <<END
-<br />$Lang::tr{'since'} $update
-<tr><td colspan='3' align='center'>$Lang::tr{'connections'}: $up | $Lang::tr{'disconnects'}: $down | $Lang::tr{'attemps'}: $rec
-<tr><td><b>$Lang::tr{'total connection time'}:</b><td align='right'>$current<td align='left'> ~ $ontime%
-END
-;
-       }
-}
-
-elsif ($ARGV[0] eq 'reset') {
-       &new;
-}
-
-elsif ($ARGV[0] eq '') {
-       print "\nDont run on the console...\n\n";
-}
-
-exit 0;
-
-sub new {
-       open(COUNTER,">$file_log");
-       $start = $s_date." on ".$s_time;
-       $update = "&#8249;no action since clearing&#8250;";
-       $up = "0";
-       $down = "0";
-       $rec = "0";
-       $on = "0d 0h 0m";
-       $bit = "0";
-       print COUNTER "$start\|$update\|$up\|$down\|$rec\|$on\|$bit";
-       close(COUNTER);
-       open(CONNECT,">$file_connect");
-               print CONNECT "0";
-               close(CONNECT);
-               open(RESET,">$file_reset");
-               print RESET "0";
-               close(RESET);
-}
index fb2d64bace8d9060a3083d847eb54218dac10c27..d0e23fa7f8bdf784438b7c7d162226111be694cb 100644 (file)
@@ -6,13 +6,9 @@
 # See how we were called.
 case "$1" in
   new)
-       # set temporary random file
-       export RANDFILE=/root/.rnd
        if [ ! -f /etc/httpd/server.key ]; then
                echo "Generating https server key."
-               /usr/bin/openssl genrsa -rand \
-                       /boot/vmlinuz:CONFIG_ROOT/ethernet/settings -out \
-                       /etc/httpd/server.key 1024
+               /usr/bin/openssl genrsa -out /etc/httpd/server.key 4096
        fi
        echo "Generating CSR"
        /bin/cat /etc/certparams | sed "s/HOSTNAME/`hostname -f`/" | /usr/bin/openssl \
@@ -21,9 +17,6 @@ case "$1" in
        /usr/bin/openssl x509 -req -days 999999 -in \
                /etc/httpd/server.csr -signkey /etc/httpd/server.key -out \
                /etc/httpd/server.crt
-       # unset and remove random file
-       export -n RANDFILE
-       rm -f /root/.rnd
        ;;
   read)
        if [ -f /etc/httpd/server.key -a -f /etc/httpd/server.crt -a -f /etc/httpd/server.csr ]; then
index f66b841d7ac9697c51d5553d84faf4fb45f49ab9..5e77fce5c024a3f17ba4c892a94abfe95845e8c6 100644 (file)
@@ -44,37 +44,15 @@ if (open(FILE, "$filename")) {
 # ignore monthly update if not in minimize update mode
 exit 0 if (($settings{'MINIMIZEUPDATES'} ne 'on') && ($ARGV[1] eq '-m'));
 
-my $ip;
-if (open(IP, "${General::swroot}/red/local-ipaddress")) {
-    $ip = <IP>;
-    close(IP);
-    chomp $ip;
-} else {
-    &General::log('Dynamic DNS failure : unable to open local-ipaddress file.');
-    exit 0;
-}
-
-#If IP is reserved network, we are behind a router. May we ask for our real public IP ?
-if ( &General::IpInSubnet ($ip,'10.0.0.0','255.0.0.0') ||
-     &General::IpInSubnet ($ip,'172.16.0.0','255.240.0.0') ||
-     &General::IpInSubnet ($ip,'192.168.0.0','255.255.0.0')) {
-    # We can, but are we authorized by GUI ?
-    if ($settings{'BEHINDROUTER'} eq 'FETCH_IP') {
-       if ($ARGV[0] eq '-f'){
-           $settings{'BEHINDROUTERWAITLOOP'} = -1; # When forced option, fectch PublicIP now
-       }
+my $ip = &General::GetDyndnsRedIP();
 
-       # Increment counter modulo 4. When it is zero, fetch ip else exit
-       # This divides by 4 the requests to the dyndns server.
-       $settings{'BEHINDROUTERWAITLOOP'} = ($settings{'BEHINDROUTERWAITLOOP'}+1) %4;
-       &General::writehash("${General::swroot}/ddns/settings", \%settings);
-       exit 0 if ( $settings{'BEHINDROUTERWAITLOOP'} ne 0 );
-       my $RealIP = &General::FetchPublicIp;
-       $ip = (&General::validip ($RealIP) ?  $RealIP : 'unavailable');
-       &General::log ("Dynamic DNS public router IP is:$ip");
-    }
+if ($ip eq "unavailable") {
+       &General::log("Dynamic DNS error: RED/Public IP is unavailable");
+       exit(0);
 }
 
+#&General::log("Dynamic DNS public router IP is: $ip");
+
 if ($ARGV[0] eq '-f') {
        unlink ($cachefile);    # next regular calls will try again if this force update fails.
 } else {
@@ -115,8 +93,10 @@ if ($ip ne $ipcache) {
                                next;           # do not update, go to test next service
                            }
                        }
-                       my @service = split(/\./, "$settings{'SERVICE'}");
-                       $settings{'SERVICE'} = "$service[0]";
+                       if ($settings{'SERVICE'} ne "dns.lightningwirelabs.com") {
+                               my @service = split(/\./, "$settings{'SERVICE'}");
+                               $settings{'SERVICE'} = "$service[0]";
+                       }
                        if ($settings{'SERVICE'} eq 'no-ip') {
                                open(F, ">${General::swroot}/ddns/noipsettings");
                                flock F, 2;
@@ -148,6 +128,27 @@ if ($ip ne $ipcache) {
                                }
                        }
 
+                       elsif ($settings{'SERVICE'} eq 'all-inkl') {
+                           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'} );
+                           }
+
+                           my ($out, $response) = Net::SSLeay::get_https("dyndns.kasserver.com", 443, "/", 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%) {
+                               &General::log("Dynamic DNS ip-update for $settings{'HOSTNAME'}.$settings{'DOMAIN'} : success");
+                               $success++;
+                           } else {
+                               &General::log("Dynamic DNS ip-update for $settings{'HOSTNAME'}.$settings{'DOMAIN'} : failure (could not connect to server, check your credentials)");
+                           }
+                       }
+
                        elsif ($settings{'SERVICE'} eq 'cjb') {
                            # use proxy ?
                            my %proxysettings;
@@ -236,6 +237,42 @@ if ($ip ne $ipcache) {
                                &General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} : failure (could not connect to server, check your credentials)");
                            }
                        }
+                       elsif ($settings{'SERVICE'} eq 'dns.lightningwirelabs.com') {
+                           # 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 $authstring;
+                           if ($settings{'LOGIN'} eq "token") {
+                               $authstring = "token=$settings{'PASSWORD'}";
+                           } else {
+                               $authstring = "username=$settings{'LOGIN'}&password=$settings{'PASSWORD'}";
+                           }
+
+                           my $user_agent = &General::MakeUserAgent();
+                           my ($out, $response) = Net::SSLeay::get_https("dns.lightningwirelabs.com", 443,
+                               "/update?hostname=$settings{'HOSTDOMAIN'}&address4=$ip&$authstring",
+                               Net::SSLeay::make_headers('User-Agent' => $user_agent)
+                           );
+
+                           # Valid response are 'ok'   'nochange'
+                           if ($response =~ m%HTTP/1\.. 200 OK%) {
+                               &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)");
+                           }
+                       }
                        elsif ($settings{'SERVICE'} eq 'enom') {
                            # use proxy ?
                            my %proxysettings;
@@ -363,6 +400,41 @@ if ($ip ne $ipcache) {
                                &General::log("Dynamic DNS ip-update for $settings{'HOSTNAME'}.$settings{'DOMAIN'} : failure (could not connect to server)");
                            }
                        }
+                        elsif ($settings{'SERVICE'} eq 'spdns.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( 'update.spdns.de', 443,
+                                                                            "/nic/update?&hostname=$settings{'HOSTDOMAIN'}&myip=$ip",
+                                                                            Net::SSLeay::make_headers('User-Agent' => 'IPFire' ,
+                                                                                                      'Authorization' => 'Basic ' . encode_base64("$settings{'LOGIN'}:$settings{'PASSWORD'}"))
+                                                                         );
+                            
+                            #Valid responses from service are:
+                            # good xxx.xxx.xxx.xxx
+                            # nochg  xxx.xxx.xxx.xxx
+                            if ($response =~ m%HTTP/1\.. 200 OK%) {
+                                if ($out !~ m/good |nochg /ig) {
+                                    &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)");
+                            }
+                        }
                        elsif ($settings{'SERVICE'} eq 'strato') {
                                # use proxy ?
                                my %proxysettings;
@@ -578,7 +650,109 @@ 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') {
+                           # 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--)");
+                           }
+                       }
+                        elsif ($settings{'SERVICE'} eq 'twodns') {
+                            # 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( 'update.twodns.de',
+                                                                            443,
+                                                                           "/update?hostname=$settings{'HOSTDOMAIN'}&ip=$ip",
+                                                                            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/^(good|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--)");
+                            }
+                        }
+                       elsif ($settings{'SERVICE'} eq 'variomedia') { 
+                           # 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( 'dyndns.variomedia.de',
+                                                                           443,
+                                                                           "/nic/update?hostname=$settings{'HOSTDOMAIN'}&myip=$ip",
+                                                                           Net::SSLeay::make_headers('User-Agent' => 'IPFire',
+                                                                                                     'Authorization' => 'Basic ' . encode_base64("$settings{'LOGIN'}:$settings{'PASSWORD'}")) );
+                           # Valid response is 'good $ip'
+                           if ($response =~ m%HTTP/1\.. 200 OK%) {
+                               if ( $out !~ m/^good $ip/ ) {
+                                   &General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} ($ip) : failure ($out)");
+                               } else {
+                                   &General::log("Dynamic DNS ip-update for $settings{'HOSTDOMAIN'} ($ip) : 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 {
diff --git a/src/scripts/timezone-transition b/src/scripts/timezone-transition
new file mode 100644 (file)
index 0000000..a8e436f
--- /dev/null
@@ -0,0 +1,37 @@
+#!/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) 2014 IPFire Team <info@ipfire.org>                         #
+#                                                                          #
+############################################################################
+
+# This script checks if a daylight saving time transition
+# has just happened and will run the given command.
+
+HOUR_NOW=$(date "+%H")
+HOUR_THEN=$(date --date="1 hour ago" "+%H")
+
+# We expect that the result in HOUR_THEN is HOUR_NOW - 1
+HOUR_EXPECTED=$(( ${HOUR_NOW} - 1 ))
+
+if [ "${HOUR_EXPECTED}" -eq "${HOUR_THEN}" ]; then
+       exit 0
+fi
+
+$@
index c007f5a02a9b3f1a7ec356ca7c6d4b87bd8b7158..dd78a29652ebbf854651c4fadbfa7c1e838fa57d 100755 (executable)
@@ -28,7 +28,7 @@ foreach(@FILES) {
 #      print $_."\n";
        my $Found = 0;
 
-       if ( $_ =~ /$\.log/ || $_ =~ /^\.+/  || $_=~ /-install/ || $_=~ /-tools/ || $_=~ /-config/ || $_=~ /-kmod-/|| $_=~ /coreutils/ || $_=~ /esniper/ || $_=~ /libsigc/ || $_ eq 'FILES' ){
+       if ( $_ =~ /$\.log/ || $_ =~ /^\.+/  || $_=~ /-install/ || $_=~ /-tools/ || $_=~ /-config/ || $_=~ /-kmod-/|| $_=~ /coreutils/ || $_=~ /linux-xen/ || $_=~ /libsigc/ || $_ eq 'FILES' ){
                next;
        } elsif ( $_=~ /missing_rootfile/ ){
                print "Rootfile for $_ missing!\n";
old mode 100644 (file)
new mode 100755 (executable)
similarity index 81%
rename from lfs/linux-xen
rename to tools/checkwronginitlinks
index 39f19a8..6f001c0
@@ -1,7 +1,8 @@
+#!/bin/bash
 ###############################################################################
 #                                                                             #
 # 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        #
 #                                                                             #
 ###############################################################################
 
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER       = kernel
-
-include linux2
-
-PROG      = linux-xen
-SUP_ARCH   = i586
+grep -r "^etc/init.d//*" ./config/rootfiles/ >/dev/null 2>&1
+if [ "${?}" == "0" ]; then
+       echo "Error! 'etc/init.d/...' in rootfiles files found!"
+       grep -r "^etc/init.d//*" ./config/rootfiles/
+       echo "Change this to 'etc/rc.d/init.d/...' !"
+fi
diff --git a/tools/langdiff.pl b/tools/langdiff.pl
new file mode 100755 (executable)
index 0000000..6ce313d
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+my @one=();
+my @two=();
+
+my $file1;
+my $file2;
+my $cnt=0;
+my $numArgs = $#ARGV + 1;
+if ($numArgs !=2 ){
+       print"Usage:  langdiff.pl <languagefile1 - incomplete> <languagefile2 - complete>\n";
+       exit;
+}else{
+       $file1=$ARGV[0];
+       $file2=$ARGV[1];
+}
+
+open(FILE1, $file1) or die 'Unable to open file $file1.';
+my @one = <FILE1>;
+close(FILE1);
+undef ($one[0]);
+undef ($one[1]);
+undef ($one[2]);
+undef ($one[3]);
+undef ($one[$#one-1]);
+undef ($one[$#one-2]);
+open(FILE2, $file2) or die 'Unable to open file $file2.';
+my @two = <FILE2>;
+close(FILE2);
+undef ($two[0]);
+undef ($two[1]);
+undef ($two[2]);
+undef ($two[3]);
+undef ($two[$#two-1]);
+undef ($two[$#two-2]);
+open(FILE3, ">language-diff.txt") or die 'Unable to open config file.';
+
+foreach my $line (@two){
+       my ($a,$b) = split ("=>",$line);
+       if(!&is_in_array($a)){
+               $cnt++;
+               print FILE3 "$a => $b";
+       }
+}
+
+sub is_in_array{
+       my $val = shift;
+
+       foreach my $line1 (@one){
+               my ($c,$d) = split ("=>",$line1);
+               return 1 if ($val eq $c);
+       }
+       return 0;
+}
+
+
+print"$cnt lines from $file2 are not existent in $file1. Please check language-diff.txt for details.\n\n";
index 16352b4a2f84b01f2870c0f302363cc45d384cb0..ba6654700c0f2e75682223445318a05269409942 100644 (file)
@@ -60,6 +60,67 @@ WARN="\\033[1;35m"
 FAIL="\\033[1;31m"
 NORMAL="\\033[0;39m"
 
+configure_target() {
+       local target_arch="${1}"
+
+       if [ "${target_arch}" = "default" ]; then
+               target_arch="$(configure_target_guess)"
+       fi
+
+       case "${target_arch}" in
+               i586)
+                       BUILDTARGET="${target_arch}-pc-linux-gnu"
+                       CROSSTARGET="${BUILD_ARCH}-cross-linux-gnu"
+                       CFLAGS_ARCH="-march=i586 -fomit-frame-pointer"
+                       ;;
+
+               armv5tel)
+                       BUILDTARGET="${target_arch}-unknown-linux-gnueabi"
+                       CROSSTARGET="${BUILD_ARCH}-cross-linux-gnueabi"
+                       CFLAGS_ARCH="-march=armv5te -mfloat-abi=soft -fomit-frame-pointer"
+                       MACHINE_TYPE="arm"
+                       ;;
+
+               *)
+                       exiterror "Cannot build for architure ${target_arch}"
+                       ;;
+       esac
+
+       # Check if the QEMU helper is available if needed.
+       if qemu_is_required "${target_arch}"; then
+               local qemu_target_helper="$(qemu_find_target_helper_name "${target_arch}")"
+
+               if [ -n "${qemu_target_helper}" ]; then
+                       QEMU_TARGET_HELPER="${qemu_target_helper}"
+               else
+                       exiterror "Could not find a binfmt_misc helper entry for ${target_arch}"
+               fi
+       fi
+
+       TARGET_ARCH="${target_arch}"
+
+       # Old variable names
+       MACHINE="${TARGET_ARCH}"
+
+       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}"
+}
+
+configure_target_guess() {
+       case "${BUILD_ARCH}" in
+               x86_64|i686|i586)
+                       echo "i586"
+                       ;;
+               armv7*|armv6*|armv5*)
+                       echo "armv5tel"
+                       ;;
+               *)
+                       exiterror "Cannot guess target architecture"
+                       ;;
+       esac
+}
+
 evaluate() {
        if [ "$?" -eq "0" ]; then
                beautify message DONE
@@ -217,30 +278,6 @@ get_pkg_ver()
        echo "$PKG_VER"
 } # End of get_pkg_ver()
 
-if [ 'x86_64' = $MACHINE -o 'i686' = $MACHINE -o 'i586' = $MACHINE ]; then
-       echo "`date -u '+%b %e %T'`: Machine is iX86 (or equivalent)" >> $LOGFILE
-       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"
-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"
-else
-       echo "`date -u '+%b %e %T'`: Can't determine your architecture - $MACHINE"
-       exit 1
-fi
-
 # Define immediately
 stdumount() {
        umount $BASEDIR/build/sys                       2>/dev/null;
@@ -282,22 +319,136 @@ fake_environ() {
        env="${env} UTS_RELEASE=${KVER}"
 
        # Fake machine version.
-       env="${env} UTS_MACHINE=${MACHINE}"
+       env="${env} UTS_MACHINE=${TARGET_ARCH}"
+
+       echo "${env}"
+}
+
+qemu_environ() {
+       local env
+
+       # Don't add anything if qemu is not used.
+       if ! qemu_is_required; then
+               return
+       fi
+
+       # Set default qemu options
+       case "${TARGET_ARCH}" in
+               arm*)
+                       QEMU_CPU="${QEMU_CPU:-cortex-a9}"
+
+                       env="${env} QEMU_CPU=${QEMU_CPU}"
+                       ;;
+       esac
+
+       # Enable QEMU strace
+       #env="${env} QEMU_STRACE=1"
 
        echo "${env}"
 }
 
+qemu_is_required() {
+       local target_arch="${1}"
+
+       if [ -z "${target_arch}" ]; then
+               target_arch="${TARGET_ARCH}"
+       fi
+
+       case "${BUILD_ARCH},${target_arch}" in
+               x86_64,arm*|i?86,arm*)
+                       return 0
+                       ;;
+               *)
+                       return 1
+                       ;;
+       esac
+}
+
+qemu_install_helper() {
+       # Do nothing, if qemu is not required
+       if ! qemu_is_required; then
+               return 0
+       fi
+
+       if [ -z "${QEMU_TARGET_HELPER}" ]; then
+               exiterror "QEMU_TARGET_HELPER not set"
+       fi
+
+       # Check if the helper is already installed.
+       if [ -x "${LFS}${QEMU_TARGET_HELPER}" ]; then
+               return 0
+       fi
+
+       # Try to find a suitable binary that we can install
+       # to the build environment.
+       local file
+       for file in "${QEMU_TARGET_HELPER}" "${QEMU_TARGET_HELPER}-static"; do
+               # file must exist and be executable.
+               [ -x "${file}" ] || continue
+
+               # Must be static.
+               file_is_static "${file}" || continue
+
+               local dirname="${LFS}$(dirname "${file}")"
+               mkdir -p "${dirname}"
+
+               install -m 755 "${file}" "${LFS}${QEMU_TARGET_HELPER}"
+               return 0
+       done
+
+       exiterror "Could not find a statically-linked QEMU emulator: ${QEMU_TARGET_HELPER}"
+}
+
+qemu_find_target_helper_name() {
+       local target_arch="${1}"
+
+       local magic
+       case "${target_arch}" in
+               arm*)
+                       magic="7f454c4601010100000000000000000002002800"
+                       ;;
+       esac
+
+       [ -z "${magic}" ] && return 1
+
+       local file
+       for file in /proc/sys/fs/binfmt_misc/*; do
+               # Search for the file with the correct magic value.
+               grep -qE "^magic ${magic}$" "${file}" || continue
+
+               local interpreter="$(grep "^interpreter" "${file}" | awk '{ print $2 }')"
+
+               [ -n "${interpreter}" ] || continue
+               [ "${interpreter:0:1}" = "/" ] || continue
+               [ -x "${interpreter}" ] || continue
+
+               echo "${interpreter}"
+               return 0
+       done
+
+       return 1
+}
+
+file_is_static() {
+       local file="${1}"
+
+       file ${file} 2>/dev/null | grep -q "statically linked"
+}
+
 entershell() {
        if [ ! -e $BASEDIR/build/usr/src/lfs/ ]; then
                exiterror "No such file or directory: $BASEDIR/build/usr/src/lfs/"
        fi
 
+       # Install QEMU helper, if needed
+       qemu_install_helper
+
        echo "Entering to a shell inside LFS chroot, go out with exit"
-       chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
+       chroot $LFS /tools/bin/env -i HOME=/root TERM=$TERM PS1='ipfire build chroot ($(uname -m)) \u:\w\$ ' \
                PATH=/tools/ccache/bin:/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
                VERSION=$VERSION CONFIG_ROOT=$CONFIG_ROOT \
                NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
-               CFLAGS="$CF2LAGS" CXXFLAGS="$CXX2FLAGS" \
+               CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \
                CCACHE_DIR=/usr/src/ccache \
                CCACHE_COMPRESS=1 \
                CCACHE_COMPILERCHECK="none" \
@@ -306,9 +457,9 @@ entershell() {
                CROSSTARGET="${CROSSTARGET}" \
                MACHINE="$MACHINE" \
                MACHINE_TYPE="$MACHINE_TYPE" \
-               KGCC="ccache /usr/bin/gcc" \
                $(fake_environ) \
-               /tools/bin/bash
+               $(qemu_environ) \
+               /tools/bin/bash -i
        if [ $? -ne 0 ]; then
                        beautify message FAIL
                        exiterror "chroot error"
@@ -410,14 +561,18 @@ lfsmake2() {
        lfsmakecommoncheck $*
        [ $? == 1 ] && return 0
 
+       # Install QEMU helper, if needed
+       qemu_install_helper
+
        local PKG_TIME_START=`date +%s`
        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" \
+                                               CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \
                                                CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \
                                                CCACHE_COMPILERCHECK="none" \
                                                KVER=$KVER MAKETUNING=$MAKETUNING \
@@ -425,6 +580,7 @@ lfsmake2() {
                                                CROSSTARGET="${CROSSTARGET}" \
                                                MACHINE="$MACHINE" \
                                                MACHINE_TYPE="$MACHINE_TYPE" \
+                                               $(qemu_environ) \
                                                $(fake_environ) \
                                                /tools/bin/bash -x -c "cd /usr/src/lfs && \
                                                make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
@@ -445,6 +601,9 @@ ipfiremake() {
        lfsmakecommoncheck $*
        [ $? == 1 ] && return 0
 
+       # Install QEMU helper, if needed
+       qemu_install_helper
+
        local PKG_TIME_START=`date +%s`
        chroot $LFS /tools/bin/env -i   HOME=/root \
                                                TERM=$TERM PS1='\u:\w\$ ' \
@@ -453,7 +612,8 @@ ipfiremake() {
                                                CORE=$CORE \
                                                CONFIG_ROOT=$CONFIG_ROOT \
                                                NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
-                                               CFLAGS="$C2FLAGS" CXXFLAGS="$CXX2FLAGS" \
+                                               SYSTEM_RELEASE="$SYSTEM_RELEASE" \
+                                               CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \
                                                CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \
                                                CCACHE_COMPILERCHECK="none" \
                                                KVER=$KVER MAKETUNING=$MAKETUNING \
@@ -461,6 +621,7 @@ ipfiremake() {
                                                CROSSTARGET="${CROSSTARGET}" \
                                                MACHINE="$MACHINE" \
                                                MACHINE_TYPE="$MACHINE_TYPE" \
+                                               $(qemu_environ) \
                                                $(fake_environ) \
                                                /bin/bash -x -c "cd /usr/src/lfs && \
                                                make -f $* LFS_BASEDIR=/usr/src install" >>$LOGFILE 2>&1
@@ -481,6 +642,9 @@ ipfiredist() {
        lfsmakecommoncheck $*
        [ $? == 1 ] && return 0
        
+       # Install QEMU helper, if needed
+       qemu_install_helper
+
        local PKG_TIME_START=`date +%s`
        chroot $LFS /tools/bin/env -i   HOME=/root \
                                        TERM=$TERM PS1='\u:\w\$ ' \
@@ -488,7 +652,7 @@ ipfiredist() {
                                        VERSION=$VERSION \
                                        CONFIG_ROOT=$CONFIG_ROOT \
                                        NAME="$NAME" SNAME="$SNAME" SLOGAN="$SLOGAN" \
-                                       CFLAGS="$C2FLAGS" CXXFLAGS="$CXX2FLAGS" \
+                                       CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \
                                        CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 \
                                        CCACHE_COMPILERCHECK="none" \
                                        KVER=$KVER \
@@ -496,6 +660,7 @@ ipfiredist() {
                                        CROSSTARGET="${CROSSTARGET}" \
                                        MACHINE="$MACHINE" \
                                        MACHINE_TYPE="$MACHINE_TYPE" \
+                                       $(qemu_environ) \
                                        $(fake_environ) \
                                        /bin/bash -x -c "cd /usr/src/lfs && \
                                        make -f $1 LFS_BASEDIR=/usr/src dist" >>$LOGFILE 2>&1
@@ -516,14 +681,18 @@ installmake() {
        lfsmakecommoncheck $*
        [ $? == 1 ] && return 0
 
+       # Install QEMU helper, if needed
+       qemu_install_helper
+
        local PKG_TIME_START=`date +%s`
        chroot $LFS /tools/bin/env -i   HOME=/root \
                                                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" \
+                                               CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" \
                                                CCACHE_DIR=/usr/src/ccache CCACHE_COMPRESS=1 CCACHE_HASHDIR=1 \
                                                KVER=$KVER \
                                                BUILDTARGET="$BUILDTARGET" \
@@ -556,6 +725,7 @@ update_langs() {
                $BASEDIR/tools/sort_strings.pl pl
                $BASEDIR/tools/sort_strings.pl ru
                $BASEDIR/tools/sort_strings.pl nl
+               $BASEDIR/tools/sort_strings.pl tr
                $BASEDIR/tools/check_strings.pl en > $BASEDIR/doc/language_issues.en
                $BASEDIR/tools/check_strings.pl de > $BASEDIR/doc/language_issues.de
                $BASEDIR/tools/check_strings.pl fr > $BASEDIR/doc/language_issues.fr
@@ -563,6 +733,7 @@ update_langs() {
                $BASEDIR/tools/check_strings.pl es > $BASEDIR/doc/language_issues.pl
                $BASEDIR/tools/check_strings.pl ru > $BASEDIR/doc/language_issues.ru
                $BASEDIR/tools/check_strings.pl nl > $BASEDIR/doc/language_issues.nl
+               $BASEDIR/tools/check_strings.pl tr > $BASEDIR/doc/language_issues.tr
                $BASEDIR/tools/check_langs.sh > $BASEDIR/doc/language_missings
                beautify message DONE
 }