]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
Merge remote-tracking branch 'stevee/squid-zph-qos' into beyond-next
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 21 Mar 2014 13:48:22 +0000 (14:48 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 21 Mar 2014 13:48:22 +0000 (14:48 +0100)
253 files changed:
config/avahi/avahi
config/backup/backup.pl
config/backup/includes/mysql [new file with mode: 0644]
config/cfgroot/ethernet-vlans
config/cfgroot/general-functions.pl
config/cfgroot/graphs.pl
config/cfgroot/header.pl
config/collectd/collectd.conf
config/cron/crontab
config/etc/sysctl.conf
config/firewall/firewall-policy
config/firewall/rules.pl
config/fwhosts/customservices
config/hostapd/config
config/httpd/vhosts.d/ipfire-interface-ssl.conf
config/kernel/kernel.config.armv5tel-ipfire-kirkwood
config/kernel/kernel.config.armv5tel-ipfire-multi
config/kernel/kernel.config.armv5tel-ipfire-rpi
config/kernel/kernel.config.i586-ipfire
config/kernel/kernel.config.i586-ipfire-pae
config/menu/20-status.menu
config/menu/70-log.menu
config/ovpn/settings
config/rootfiles/common/apache2
config/rootfiles/common/armv5tel/dracut
config/rootfiles/common/armv5tel/glibc
config/rootfiles/common/armv5tel/initscripts
config/rootfiles/common/armv5tel/linux-headers
config/rootfiles/common/armv5tel/linux-kirkwood
config/rootfiles/common/armv5tel/linux-multi
config/rootfiles/common/armv5tel/linux-rpi
config/rootfiles/common/armv5tel/u-boot
config/rootfiles/common/armv5tel/u-boot-panda [deleted file]
config/rootfiles/common/configroot
config/rootfiles/common/i586/glibc
config/rootfiles/common/i586/initscripts
config/rootfiles/common/i586/linux
config/rootfiles/common/i586/strongswan-padlock
config/rootfiles/common/ntp
config/rootfiles/common/openssh
config/rootfiles/common/rng-tools [new file with mode: 0644]
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/vnstat
config/rootfiles/common/vnstati [deleted file]
config/rootfiles/core/76/exclude
config/rootfiles/core/76/filelists/beep [new symlink]
config/rootfiles/core/76/filelists/files
config/rootfiles/core/76/filelists/firewall
config/rootfiles/core/76/filelists/i586/strongswan-padlock [new symlink]
config/rootfiles/core/76/filelists/ntp [new file with mode: 0644]
config/rootfiles/core/76/filelists/openssh [new symlink]
config/rootfiles/core/76/filelists/rng-tools [new symlink]
config/rootfiles/core/76/filelists/tzdata [new symlink]
config/rootfiles/core/76/filelists/wpa_supplicant [new symlink]
config/rootfiles/core/76/update.sh
config/rootfiles/installer/parted [new symlink]
config/rootfiles/packages/armv5tel/vdr_dvbapi [new file with mode: 0644]
config/rootfiles/packages/foomatic
config/rootfiles/packages/i586/vdr_dvbapi [new file with mode: 0644]
config/rootfiles/packages/linux-pae
config/rootfiles/packages/mysql
config/rootfiles/packages/perl-DBD-SQLite [new file with mode: 0644]
config/rootfiles/packages/perl-DBI
config/rootfiles/packages/perl-File-ReadBackwards [new file with mode: 0644]
config/rootfiles/packages/vdr_eepg [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/updxlrator/updxlrator
config/xen-image/xen-image-maker.sh
doc/language_issues.de
doc/language_issues.en
doc/language_issues.es
doc/language_issues.fr
doc/language_issues.nl
doc/language_issues.pl
doc/language_issues.ru
doc/language_issues.tr
doc/language_missings
html/cgi-bin/aliases.cgi
html/cgi-bin/atm-status.cgi
html/cgi-bin/connections.cgi
html/cgi-bin/country.cgi
html/cgi-bin/dnsforward.cgi
html/cgi-bin/entropy.cgi [new file with mode: 0755]
html/cgi-bin/extrahd.cgi
html/cgi-bin/fireinfo.cgi
html/cgi-bin/firewall.cgi
html/cgi-bin/fwhosts.cgi
html/cgi-bin/gpl.cgi
html/cgi-bin/gui.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/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/mdstat.cgi
html/cgi-bin/media.cgi
html/cgi-bin/netexternal.cgi
html/cgi-bin/ovpnmain.cgi
html/cgi-bin/p2p-block.cgi
html/cgi-bin/pakfire.cgi
html/cgi-bin/pppsetup.cgi
html/cgi-bin/proxy.cgi
html/cgi-bin/qos.cgi
html/cgi-bin/remote.cgi
html/cgi-bin/samba.cgi
html/cgi-bin/services.cgi
html/cgi-bin/shutdown.cgi
html/cgi-bin/tripwire.cgi
html/cgi-bin/updatexlrator.cgi
html/cgi-bin/upnp.cgi
html/cgi-bin/vpnmain.cgi
html/cgi-bin/wlanap.cgi
html/html/index.cgi
html/html/themes/ipfire/include/css/style.css
html/html/themes/ipfire/include/functions.pl
html/html/themes/maniac/include/functions.pl
langs/de/cgi-bin/de.pl
langs/en/cgi-bin/en.pl
langs/tr/cgi-bin/tr.pl
lfs/apache2
lfs/avahi
lfs/beep
lfs/configroot
lfs/e1000e
lfs/ffmpeg
lfs/ffmpeg-libs
lfs/fireinfo
lfs/flash-images
lfs/glibc
lfs/hostapd
lfs/igb
lfs/initscripts
lfs/libmad
lfs/linux
lfs/mysql
lfs/nginx
lfs/ntp
lfs/openssh
lfs/perl-DBD-SQLite [new file with mode: 0644]
lfs/perl-DBI
lfs/perl-File-ReadBackwards [new file with mode: 0644]
lfs/rng-tools [moved from lfs/vnstati with 90% similarity]
lfs/rpi-firmware
lfs/samba
lfs/squid
lfs/stage2
lfs/strongswan
lfs/sudo
lfs/tor
lfs/tzdata
lfs/udev
lfs/vdr
lfs/vdr_dvbapi [new file with mode: 0644]
lfs/vdr_eepg [new file with mode: 0644]
lfs/vnstat
lfs/wpa_supplicant
make.sh
src/initscripts/init.d/apache
src/initscripts/init.d/firewall
src/initscripts/init.d/firstsetup
src/initscripts/init.d/leds
src/initscripts/init.d/network
src/initscripts/init.d/networking/red
src/initscripts/init.d/ntp
src/initscripts/init.d/partresize
src/initscripts/init.d/random
src/initscripts/init.d/rngd [new file with mode: 0644]
src/initscripts/init.d/sshd
src/initscripts/init.d/udev
src/install+setup/install/main.c
src/misc-progs/firewallctrl.c
src/misc-progs/openvpnctrl.c
src/paks/avahi/install.sh
src/paks/mysql/install.sh
src/paks/mysql/uninstall.sh
src/paks/mysql/update.sh
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/patches/fireinfo-0001-Exclude-some-more-invalid-patterns.patch [new file with mode: 0644]
src/patches/fireinfo-2.1.7-testing.patch [deleted file]
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-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/imq_kernel3.10.23.patch [deleted file]
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/linux-2.6.30-no-pcspkr-modalias.patch [deleted file]
src/patches/linux-3.10-apu_leds.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/strongswan-5.0.2_ipfire.patch
src/patches/strongswan-5.1.1-delay-dpd.patch [deleted file]
src/scripts/dialctrl.pl [deleted file]
src/scripts/setddns.pl
src/scripts/timezone-transition [new file with mode: 0644]

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 3172d6dc6bb36804986fb371b52eaa20a3eb402b..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        #
@@ -124,7 +124,6 @@ elsif ($ARGV[0] eq 'restore') {
        rmtree("${General::swroot}/portfw");
   }
   system("/usr/local/bin/firewallctrl");
- }
 
   # Convert old OpenVPN CCD files (CN change, core 75).
   system("/usr/local/bin/convert-ovpn");
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
index ae87bfe9eafb377ad4edc56da17cb73f00fbedfe..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 9a5e6714d612e334c96309e9c2cfa2d994ea205b..adfba5489177320e2b1528223156a620089863bf 100644 (file)
@@ -506,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]);
@@ -535,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;}
 }
 
 
@@ -1039,7 +1074,7 @@ 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() {
index 19c0546da2d3d16bcffdd17f4da7ccefece452b6..4942c98c86a92acfdcd138aadec923bf7694f33a 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 "<iframe src='".$_[0]."?".$_[1]."?".$_[2]."' width='".$width."' height='".$height."' scrolling='no' frameborder='no' marginheight='0' name='".$_[1]."box'></iframe>";
        print "</center>";
+       print "<iframe src='".$_[0]."?".$_[1]."?".$_[2]."' width='".$width."' height='".$height."' scrolling='no' frameborder='no' marginheight='0' name='".$_[1]."box'></iframe>";
 }
 
 # 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++;
                }
@@ -983,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"
@@ -1114,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 9473465bacd3b5b7ed0b5fd6dbf2a36b715e9fe7..39472a85759dfe7d0658b99b2e43ace36a4fa709 100644 (file)
@@ -158,7 +158,6 @@ sub genmenu {
 sub showhttpheaders
 {
        print "Cache-control: private\n";
-       print "Connection: close\n";
        print "Content-type: text/html; charset=UTF-8\n\n";
 }
 
index 14dd568c2ffd3369a13ef48e78800a5063357d48..61327bf6c04f1b642c45d1db81aef61187e87f99 100644 (file)
@@ -15,6 +15,7 @@ ReadThreads  1
 LoadPlugin cpu
 #LoadPlugin cpufreq
 LoadPlugin disk
+LoadPlugin entropy
 LoadPlugin interface
 LoadPlugin iptables
 LoadPlugin load
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 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
index 6d26d5b2cf156d0e43f2251ba124a1e31b599e22..2c583c5957a121b3c58e7f3c9581711ffb182b29 100755 (executable)
@@ -23,6 +23,10 @@ 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
@@ -37,10 +41,10 @@ HAVE_ORANGE="false"
 
 case "${CONFIG_TYPE}" in
        2)
-               HAVE_BLUE="true"
+               HAVE_ORANGE="true"
                ;;
        3)
-               HAVE_ORANGE="true"
+               HAVE_BLUE="true"
                ;;
        4)
                HAVE_BLUE="true"
@@ -48,19 +52,41 @@ case "${CONFIG_TYPE}" in
                ;;
 esac
 
+HAVE_IPSEC="true"
+HAVE_OPENVPN="true"
+
 # INPUT
+
+# 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
-                       /sbin/iptables -A POLICYIN -m limit --limit 10/minute -j LOG --log-prefix "REJECT_INPUT"
+                       iptables -A POLICYIN -m limit --limit 10/minute -j LOG --log-prefix "REJECT_INPUT "
                fi
-               /sbin/iptables -A POLICYIN -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_INPUT"
+               iptables -A POLICYIN -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_INPUT"
                ;;
        *) # DROP
                if [ "${DROPINPUT}" = "on" ]; then
-                       /sbin/iptables -A POLICYIN -m limit --limit 10/minute -j LOG --log-prefix "DROP_INPUT"
+                       iptables -A POLICYIN -m limit --limit 10/minute -j LOG --log-prefix "DROP_INPUT "
                fi
-               /sbin/iptables -A POLICYIN -j DROP -m comment --comment "DROP_INPUT"
+               iptables -A POLICYIN -j DROP -m comment --comment "DROP_INPUT"
                ;;
 esac
 
@@ -70,15 +96,15 @@ case "${POLICY}" in
                case "${FWPOLICY}" in
                        REJECT)
                                if [ "${DROPFORWARD}" = "on" ]; then
-                                       /sbin/iptables -A POLICYFWD -m limit --limit 10/minute -j LOG --log-prefix "REJECT_FORWARD"
+                                       iptables -A POLICYFWD -m limit --limit 10/minute -j LOG --log-prefix "REJECT_FORWARD "
                                fi
-                               /sbin/iptables -A POLICYFWD -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_FORWARD"
+                               iptables -A POLICYFWD -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_FORWARD"
                                ;;
                        *) # DROP
                                if [ "${DROPFORWARD}" = "on" ]; then
-                                       /sbin/iptables -A POLICYFWD -m limit --limit 10/minute -j LOG --log-prefix "DROP_FORWARD"
+                                       iptables -A POLICYFWD -m limit --limit 10/minute -j LOG --log-prefix "DROP_FORWARD "
                                fi
-                               /sbin/iptables -A POLICYFWD -j DROP -m comment --comment "DROP_FORWARD"
+                               iptables -A POLICYFWD -j DROP -m comment --comment "DROP_FORWARD"
                                ;;
                esac
                ;;
@@ -86,14 +112,14 @@ case "${POLICY}" in
        *)
                if [ -n "${IFACE}" ]; then
                        if [ "${HAVE_BLUE}" = "true" ] && [ -n "${BLUE_DEV}" ]; then
-                               /sbin/iptables -A POLICYFWD -i "${BLUE_DEV}" ! -o "${IFACE}" -j DROP
+                               iptables -A POLICYFWD -i "${BLUE_DEV}" ! -o "${IFACE}" -j DROP
                        fi
                        if [ "${HAVE_ORANGE}" = "true" ] && [ -n "${ORANGE_DEV}" ]; then
-                               /sbin/iptables -A POLICYFWD -i "${ORANGE_DEV}" ! -o "${IFACE}" -j DROP
+                               iptables -A POLICYFWD -i "${ORANGE_DEV}" ! -o "${IFACE}" -j DROP
                        fi
                fi
-               /sbin/iptables -A POLICYFWD -j ACCEPT
-               /sbin/iptables -A POLICYFWD -m comment --comment "DROP_FORWARD" -j DROP
+               iptables -A POLICYFWD -j ACCEPT
+               iptables -A POLICYFWD -m comment --comment "DROP_FORWARD" -j DROP
                ;;
 esac
 
@@ -103,21 +129,21 @@ case "${POLICY1}" in
                case "${FWPOLICY1}" in
                        REJECT)
                                if [ "${DROPOUTGOING}" = "on" ]; then
-                                       /sbin/iptables -A POLICYOUT -m limit --limit 10/minute -j LOG --log-prefix "REJECT_OUTPUT"
+                                       iptables -A POLICYOUT -m limit --limit 10/minute -j LOG --log-prefix "REJECT_OUTPUT "
                                fi
-                               /sbin/iptables -A POLICYOUT -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_OUTPUT"
+                               iptables -A POLICYOUT -j REJECT --reject-with icmp-host-unreachable -m comment --comment "DROP_OUTPUT"
                                ;;
                        *) # DROP
                                if [ "${DROPOUTGOING}" == "on" ]; then
-                                       /sbin/iptables -A POLICYOUT -m limit --limit 10/minute -j LOG --log-prefix "DROP_OUTPUT"
+                                       iptables -A POLICYOUT -m limit --limit 10/minute -j LOG --log-prefix "DROP_OUTPUT "
                                fi
-                               /sbin/iptables -A POLICYOUT -j DROP -m comment --comment "DROP_OUTPUT"
+                               iptables -A POLICYOUT -j DROP -m comment --comment "DROP_OUTPUT"
                                ;;
                esac
                ;;
        *)
-               /sbin/iptables -A POLICYOUT -j ACCEPT
-               /sbin/iptables -A POLICYOUT -m comment --comment "DROP_OUTPUT" -j DROP
+               iptables -A POLICYOUT -j ACCEPT
+               iptables -A POLICYOUT -m comment --comment "DROP_OUTPUT" -j DROP
                ;;
 esac
 
index d0a9e20b758f4cad6b6408f094e15ce76f77b1f9..50fff3f09f97f28726eed8f733000845b89342af 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!/usr/bin/perl -w
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
 ###############################################################################
 
 use strict;
-use Time::Local;
-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 "/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 %defaultNetworks=();
-my %configfwdfw=();
-my %color=();
-my %icmptypes=();
-my %ovpnSettings=();
+my %configfwdfw=();;
 my %customgrp=();
-our %sourcehash=();
-our %targethash=();
-my @timeframe=();
 my %configinputfw=();
 my %configoutgoingfw=();
 my %confignatfw=();
 my %aliases=();
-my @DPROT=();
 my @p2ps=();
-require '/var/ipfire/general-functions.pl';
-require "${General::swroot}/lang.pl";
-require "${General::swroot}/firewall/bin/firewall-lib.pl";
 
 my $configfwdfw                = "${General::swroot}/firewall/config";
 my $configinput            = "${General::swroot}/firewall/input";
@@ -53,16 +62,6 @@ my $configoutgoing  = "${General::swroot}/firewall/outgoing";
 my $p2pfile                    = "${General::swroot}/firewall/p2protocols";
 my $configgrp          = "${General::swroot}/fwhosts/customgroups";
 my $netsettings                = "${General::swroot}/ethernet/settings";
-my $errormessage       = '';
-my $orange                     = '';
-my $green                      = '';
-my $blue                       = '';
-my ($TYPE,$PROT,$SPROT,$DPROT,$SPORT,$DPORT,$TIME,$TIMEFROM,$TIMETILL,$SRC_TGT);
-my $CHAIN                      = "FORWARDFW";
-my $conexists          = 'off';
-my $command                    = 'iptables -A';
-my $dnat                       ='';
-my $snat                       ='';
 
 &General::readhash("${General::swroot}/firewall/settings", \%fwdfwsettings);
 &General::readhash("$netsettings", \%defaultNetworks);
@@ -72,61 +71,68 @@ my $snat                    ='';
 &General::readhasharray($configgrp, \%customgrp);
 &General::get_aliases(\%aliases);
 
-#check if we have an internetconnection
-open (CONN,"/var/ipfire/red/iface");
-my $con = <CONN>;
-close(CONN);
-if (-f "/var/ipfire/red/active"){
-       $conexists='on';
+my @log_limit_options = &make_log_limit_options();
+
+# 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");
 }
-open (CONN1,"/var/ipfire/red/local-ipaddress");
-my $redip = <CONN1>;
-close(CONN1);
-#################
-#    DEBUG/TEST #
-#################
-my $MODE=0;     # 0 - normal operation
-                # 1 - print configline and rules to console
-                #
-#################
-my $param=shift;
-
-if($param eq 'flush'){
-       if ($MODE eq '1'){
-               print " Flushing chains...\n";
-       }
-       &flush;
-}else{
-       if ($MODE eq '1'){
-               print " Flushing chains...\n";
-       }
-       &flush;
-       if ($MODE eq '1'){
-               print " Preparing rules...\n";
-       }
-       &preparerules;
-       if($MODE eq '0'){
-               if ($fwdfwsettings{'POLICY'} eq 'MODE1'){
-                       &p2pblock;
-                       system ("/usr/sbin/firewall-policy");
-               }elsif($fwdfwsettings{'POLICY'} eq 'MODE2'){
-                       &p2pblock;
-                       system ("iptables -A $CHAIN -m conntrack --ctstate NEW -j ACCEPT");
-                       system ("/usr/sbin/firewall-policy");
-                       system ("/etc/sysconfig/firewall.local reload");
+
+sub 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 flush
-{
-       system ("iptables -F FORWARDFW");
-       system ("iptables -F INPUTFW");
-       system ("iptables -F OUTGOINGFW");
-       system ("iptables -t nat -F NAT_DESTINATION");
-       system ("iptables -t nat -F NAT_SOURCE");
+
+sub print_error {
+       my $message = shift;
+
+       print STDERR "$message\n";
 }
-sub preparerules
-{
+
+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/config"){
                &buildrules(\%configfwdfw);
        }
@@ -137,348 +143,331 @@ sub preparerules
                &buildrules(\%configoutgoingfw);
        }
 }
-sub buildrules
-{
-       my $hash=shift;
-       my $STAG;
-       my $natip;
-       my $snatport;
-       my $fireport;
-       my $nat;
-       my $fwaccessdport;
-       my $natchain;
-       my $icmptype;
-       foreach my $key (sort {$a <=> $b} keys %$hash){
-               next if (($$hash{$key}[6] eq 'RED' || $$hash{$key}[6] eq 'RED1') && $conexists eq 'off' );
-               $command="iptables -A";
-               if ($$hash{$key}[28] eq 'ON'){
-                       $command='iptables -t nat -A';
-                       $natip=&get_nat_ip($$hash{$key}[29],$$hash{$key}[31]);
-                       if($$hash{$key}[31] eq 'dnat'){
-                               $nat='DNAT';
-                               if ($$hash{$key}[30] =~ /\|/){
-                                       $$hash{$key}[30]=~ tr/|/,/;
-                                       $fireport='-m multiport --dport '.$$hash{$key}[30];
-                               }else{
-                                       $fireport='--dport '.$$hash{$key}[30] if ($$hash{$key}[30]>0);
-                               }
-                       }else{
-                               $nat='SNAT';
+
+sub buildrules {
+       my $hash = shift;
+
+       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 = &get_addresses($hash, $key, "src");
+
+               # Collect all destinations.
+               my @destinations = &get_addresses($hash, $key, "tgt");
+
+               # 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));
                        }
                }
-               $STAG='';
-               if($$hash{$key}[2] eq 'ON'){
-                       #get source ip's
-                       if ($$hash{$key}[3] eq 'cust_grp_src'){
-                               foreach my $grp (sort {$a <=> $b} keys %customgrp){
-                                               if($customgrp{$grp}[0] eq $$hash{$key}[4]){
-                                               &get_address($customgrp{$grp}[3],$customgrp{$grp}[2],"src");
-                                       }
-                               }
-                       }else{
-                               &get_address($$hash{$key}[3],$$hash{$key}[4],"src");
+
+               # 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;
                        }
-                       #get target ip's
-                       if ($$hash{$key}[5] eq 'cust_grp_tgt'){
-                               foreach my $grp (sort {$a <=> $b} keys %customgrp){
-                                       if($customgrp{$grp}[0] eq $$hash{$key}[6]){
-                                               &get_address($customgrp{$grp}[3],$customgrp{$grp}[2],"tgt");
+
+                       # Prepare protocol options (like ICMP types, ports, etc...).
+                       my @protocol_options = &get_protocol_options($hash, $key, $protocol);
+
+                       # Check if this protocol knows ports.
+                       my $protocol_has_ports = ($protocol ~~ @PROTOCOLS_WITH_PORTS);
+
+                       foreach my $source (@sources) {
+                               foreach my $destination (@destinations) {
+                                       # Skip invalid rules.
+                                       next if (!$source || !$destination || ($destination eq "none"));
+
+                                       # Sanitize source.
+                                       if ($source ~~ @ANY_ADDRESSES) {
+                                               $source = "";
                                        }
-                               }
-                       }elsif($$hash{$key}[5] eq 'ipfire' ){
-                               if($$hash{$key}[6] eq 'GREEN'){
-                                       $targethash{$key}[0]=$defaultNetworks{'GREEN_ADDRESS'};
-                               }
-                               if($$hash{$key}[6] eq 'BLUE'){
-                                       $targethash{$key}[0]=$defaultNetworks{'BLUE_ADDRESS'};
-                               }
-                               if($$hash{$key}[6] eq 'ORANGE'){
-                                       $targethash{$key}[0]=$defaultNetworks{'ORANGE_ADDRESS'};
-                               }
-                               if($$hash{$key}[6] eq 'ALL'){
-                                       $targethash{$key}[0]='0.0.0.0/0';
-                               }
-                               if($$hash{$key}[6] eq 'RED' || $$hash{$key}[6] eq 'RED1'){
-                                       open(FILE, "/var/ipfire/red/local-ipaddress")or die "Couldn't open local-ipaddress";
-                                       $targethash{$key}[0]= <FILE>;
-                                       close(FILE);
-                               }else{
-                                       foreach my $alias (sort keys %aliases){
-                                               if ($$hash{$key}[6] eq $alias){
-                                                       $targethash{$key}[0]=$aliases{$alias}{'IPT'};
-                                               }
+
+                                       # Sanitize destination.
+                                       if ($destination ~~ @ANY_ADDRESSES) {
+                                               $destination = "";
                                        }
-                               }
-                       }else{
-                               &get_address($$hash{$key}[5],$$hash{$key}[6],"tgt");
-                       }
-                       ##get source prot and port
-                       $SRC_TGT='SRC';
-                       $SPORT = &get_port($hash,$key);
-                       $SRC_TGT='';
-
-                       ##get target prot and port
-                       $DPROT=&get_prot($hash,$key);
-
-                       if ($DPROT eq ''){$DPROT=' ';}
-                       @DPROT=split(",",$DPROT);
-
-                       #get time if defined
-                       if($$hash{$key}[18] eq 'ON'){
-                               my ($time1,$time2,$daylight);
-                               my $daylight=$$hash{$key}[28];
-                               $time1=&get_time($$hash{$key}[26],$daylight);
-                               $time2=&get_time($$hash{$key}[27],$daylight);
-                               if($$hash{$key}[19] ne ''){push (@timeframe,"Mon");}
-                               if($$hash{$key}[20] ne ''){push (@timeframe,"Tue");}
-                               if($$hash{$key}[21] ne ''){push (@timeframe,"Wed");}
-                               if($$hash{$key}[22] ne ''){push (@timeframe,"Thu");}
-                               if($$hash{$key}[23] ne ''){push (@timeframe,"Fri");}
-                               if($$hash{$key}[24] ne ''){push (@timeframe,"Sat");}
-                               if($$hash{$key}[25] ne ''){push (@timeframe,"Sun");}
-                               $TIME=join(",",@timeframe);
-
-                               $TIMEFROM="--timestart $time1 ";
-                               $TIMETILL="--timestop $time2 ";
-                               $TIME="-m time --weekdays $TIME $TIMEFROM $TIMETILL";
-                       }
-                       if ($MODE eq '1'){
-                               print "NR:$key ";
-                               foreach my $i (0 .. $#{$$hash{$key}}){
-                                       print "$i: $$hash{$key}[$i]  ";
-                               }
-                               print "\n";
-                               print"##################################\n";
-                               #print rules to console
-                               foreach my $DPROT (@DPROT){
-                                       $DPORT = &get_port($hash,$key,$DPROT);
-                                       if ($DPROT ne 'TCP' && $DPROT ne 'UDP' && $DPROT ne 'ICMP' ){
-                                               $DPORT='';
+
+                                       # Array with iptables arguments.
+                                       my @options = ();
+
+                                       # Append protocol.
+                                       if ($protocol ne "all") {
+                                               push(@options, ("-p", $protocol));
+                                               push(@options, @protocol_options);
                                        }
-                                       $PROT=$DPROT;
-                                       $PROT="-p $PROT" if ($PROT ne '' && $PROT ne ' ');
-                                       foreach my $a (sort keys %sourcehash){
-                                               foreach my $b (sort keys %targethash){
-                                                       if ($sourcehash{$a}[0] ne $targethash{$b}[0] && $targethash{$b}[0] ne 'none' || $sourcehash{$a}[0] eq '0.0.0.0/0.0.0.0'){
-                                                               if($DPROT ne ''){
-                                                                       if(substr($sourcehash{$a}[0], 3, 3) ne 'mac' && $sourcehash{$a}[0] ne ''){ $STAG="-s";}
-                                                                       #Process ICMP RULE
-                                                                       if(substr($DPORT, 2, 4) eq 'icmp'){
-                                                                               my @icmprule= split(",",substr($DPORT, 12,));
-                                                                               foreach (@icmprule){
-                                                                                       $icmptype="--icmp-type ";
-                                                                                       if ($_ eq "BLANK") {
-                                                                                                       $icmptype="";
-                                                                                                       $_="";
-                                                                                       }
-                                                                                       if ($$hash{$key}[17] eq 'ON'){
-                                                                                               print "$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $icmptype $_ $TIME -j LOG\n";
-                                                                                       }
-                                                                                               print "$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $icmptype $_ $TIME -j $$hash{$key}[0]\n";
-                                                                               }
-                                                                       #PROCESS DNAT RULE (Portforward)
-                                                                       }elsif($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'dnat'){
-                                                                               $natchain='NAT_DESTINATION';
-                                                                               if ($$hash{$key}[17] eq 'ON'){
-                                                                                       print "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT $natip $fireport $TIME -j LOG --log-prefix 'DNAT' \n";
-                                                                               }
-                                                                               my ($ip,$sub) =split("/",$targethash{$b}[0]);
-                                                                               #Process NAT with servicegroup used
-                                                                               if ($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'dnat' && $$hash{$key}[14] eq 'cust_srvgrp'){
-                                                                                       print "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT $natip $fireport $TIME -j $nat --to $ip $DPORT\n";
-                                                                                       $fwaccessdport=$DPORT;
-                                                                               }else{
-                                                                                       print "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT $natip $fireport $TIME -j $nat --to $ip$DPORT\n";
-                                                                                       $DPORT =~ s/\-/:/g;
-                                                                                       if ($DPORT){
-                                                                                               $fwaccessdport="--dport ".substr($DPORT,1,);
-                                                                                       }elsif(! $DPORT && $$hash{$key}[30] ne ''){
-                                                                                               if ($$hash{$key}[30]=~m/|/i){
-                                                                                                       $$hash{$key}[30] =~ s/\|/,/g;
-                                                                                                       $fwaccessdport="-m multiport --dport $$hash{$key}[30]";
-                                                                                               }else{
-                                                                                                       $fwaccessdport="--dport $$hash{$key}[30]";
-                                                                                               }
-                                                                                       }
-                                                                               }
-                                                                               print "iptables -A FORWARDFW $PROT -i $con $STAG $sourcehash{$a}[0] -d $ip $fwaccessdport $TIME -j $$hash{$key}[0]\n";
-                                                                               next;
-                                                                       #PROCESS SNAT RULE
-                                                                       }elsif($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'snat'){
-                                                                               $natchain='NAT_SOURCE';
-                                                                               if ($$hash{$key}[17] eq 'ON' ){
-                                                                                       print "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j LOG --log-prefix 'SNAT' \n";
-                                                                               }
-                                                                               print "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $nat --to $natip\n";
-                                                                       }
-                                                                       #PROCESS EVERY OTHER RULE (If NOT ICMP, else the rule would be applied double)
-                                                                       if ($PROT ne '-p ICMP'){
-                                                                               if ($$hash{$key}[17] eq 'ON' && $$hash{$key}[28] ne 'ON'){
-                                                                                       print "$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j LOG\n";
-                                                                               }
-                                                                               print "iptables -A $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $$hash{$key}[0]\n";
-                                                                       }
-                                                                       #PROCESS Prot ICMP and type = All ICMP-Types
-                                                                       if ($PROT eq '-p ICMP' && $$hash{$key}[9] eq 'All ICMP-Types'){
-                                                                               if ($$hash{$key}[17] eq 'ON' && $$hash{$key}[28] ne 'ON'){
-                                                                                       print "$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j LOG\n";
-                                                                               }
-                                                                               print "iptables -A $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $$hash{$key}[0]\n";
-                                                                       }
-                                                               }
-                                                       }
-                                               }
+
+                                       # Prepare source options.
+                                       my @source_options = ();
+                                       if ($source =~ /mac/) {
+                                               push(@source_options, $source);
+                                       } elsif ($source) {
+                                               push(@source_options, ("-s", $source));
                                        }
-                                       print"\n";
-                               }
-                       }elsif($MODE eq '0'){
-                               foreach my $DPROT (@DPROT){
-                                       $DPORT = &get_port($hash,$key,$DPROT);
-                                       $PROT=$DPROT;
-                                       $PROT="-p $PROT" if ($PROT ne '' && $PROT ne ' ');
-                                       if ($DPROT ne 'TCP' && $DPROT ne'UDP' && $DPROT ne 'ICMP' ){
-                                               $DPORT='';
+
+                                       # Prepare destination options.
+                                       my @destination_options = ();
+                                       if ($destination) {
+                                               push(@destination_options, ("-d", $destination));
                                        }
-                                       foreach my $a (sort keys %sourcehash){
-                                               foreach my $b (sort keys %targethash){
-                                                       if ($sourcehash{$a}[0] ne $targethash{$b}[0] && $targethash{$b}[0] ne 'none' || $sourcehash{$a}[0] eq '0.0.0.0/0.0.0.0'){
-                                                               if($DPROT ne ''){
-                                                                       if(substr($sourcehash{$a}[0], 3, 3) ne 'mac' && $sourcehash{$a}[0] ne ''){ $STAG="-s";}
-                                                                       #Process ICMP RULE
-                                                                       if(substr($DPORT, 2, 4) eq 'icmp'){
-                                                                               my @icmprule= split(",",substr($DPORT, 12,));
-                                                                               foreach (@icmprule){
-                                                                                       $icmptype="--icmp-type ";
-                                                                                       if ($_ eq "BLANK") {
-                                                                                                       $icmptype="";
-                                                                                                       $_="";
-                                                                                       }
-                                                                                       if ($$hash{$key}[17] eq 'ON'){
-                                                                                               system ("$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $icmptype $_ $TIME -j LOG");
-                                                                                       }
-                                                                                               system ("$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $icmptype $_ $TIME -j $$hash{$key}[0]");
-                                                                               }
-                                                                       #PROCESS DNAT RULE (Portforward)
-                                                                       }elsif($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'dnat'){
-                                                                               $natchain='NAT_DESTINATION';
-                                                                               if ($$hash{$key}[17] eq 'ON'){
-                                                                                       system "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT $natip $fireport $TIME -j LOG --log-prefix 'DNAT' \n";
-                                                                               }
-                                                                               my ($ip,$sub) =split("/",$targethash{$b}[0]);
-                                                                               #Process NAT with servicegroup used
-                                                                               if ($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'dnat' && $$hash{$key}[14] eq 'cust_srvgrp'){
-                                                                                       system "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT $natip $fireport $TIME -j $nat --to $ip $DPORT\n";
-                                                                                       $fwaccessdport=$DPORT;
-                                                                               }else{
-                                                                                       system "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT $natip $fireport $TIME -j $nat --to $ip$DPORT\n";
-                                                                                       $DPORT =~ s/\-/:/g;
-                                                                                       if ($DPORT){
-                                                                                               $fwaccessdport="--dport ".substr($DPORT,1,);
-                                                                                       }elsif(! $DPORT && $$hash{$key}[30] ne ''){
-                                                                                               if ($$hash{$key}[30]=~m/|/i){
-                                                                                                       $$hash{$key}[30] =~ s/\|/,/g;
-                                                                                                       $fwaccessdport="-m multiport --dport $$hash{$key}[30]";
-                                                                                               }else{
-                                                                                                       $fwaccessdport="--dport $$hash{$key}[30]";
-                                                                                               }
-                                                                                       }
-                                                                               }
-                                                                               system "iptables -A FORWARDFW $PROT -i $con $STAG $sourcehash{$a}[0] -d $ip $fwaccessdport $TIME -j $$hash{$key}[0]\n";
-                                                                               next;
-                                                                       #PROCESS SNAT RULE
-                                                                       }elsif($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'snat'){
-                                                                               $natchain='NAT_SOURCE';
-                                                                               if ($$hash{$key}[17] eq 'ON' ){
-                                                                                       system "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j LOG --log-prefix 'SNAT' \n";
-                                                                               }
-                                                                               system "$command $natchain $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $nat --to $natip\n";
-                                                                       }
-                                                                       #PROCESS EVERY OTHER RULE (If NOT ICMP, else the rule would be applied double)
-                                                                       if ($PROT ne '-p ICMP'){
-                                                                               if ($$hash{$key}[17] eq 'ON' && $$hash{$key}[28] ne 'ON'){
-                                                                                       system "$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j LOG\n";
-                                                                               }
-                                                                               system "iptables -A $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $$hash{$key}[0]\n";
-                                                                       }
-                                                                       #PROCESS Prot ICMP and type = All ICMP-Types
-                                                                       if ($PROT eq '-p ICMP' && $$hash{$key}[9] eq 'All ICMP-Types'){
-                                                                               if ($$hash{$key}[17] eq 'ON' && $$hash{$key}[28] ne 'ON'){
-                                                                                       system "$command $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j LOG\n";
-                                                                               }
-                                                                               system "iptables -A $$hash{$key}[1] $PROT $STAG $sourcehash{$a}[0] $SPORT -d $targethash{$b}[0] $DPORT $TIME -j $$hash{$key}[0]\n";
-                                                                       }
+
+                                       # Add time constraint options.
+                                       push(@options, @time_options);
+
+                                       my $firewall_is_in_source_subnet = 0;
+                                       if ($source) {
+                                               $firewall_is_in_source_subnet = &firewall_is_in_subnet($source);
+                                       }
+
+                                       # Process NAT rules.
+                                       if ($NAT) {
+                                               my $nat_address = &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") {
+                                                       # Make port-forwardings useable from the internal networks.
+                                                       my @internal_addresses = &get_internal_firewall_ip_addresses(1);
+                                                       unless ($nat_address ~~ @internal_addresses) {
+                                                               &add_dnat_mangle_rules($nat_address, @options);
+                                                       }
+
+                                                       my @nat_options = @options;
+                                                       push(@nat_options, @source_options);
+                                                       push(@nat_options, ("-d", $nat_address));
+
+                                                       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";
                                                                }
                                                        }
+
+                                                       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 -j DNAT --to-destination $dnat_address");
+
+                                               # 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);
+
+                                       if ($firewall_is_in_source_subnet && ($fwdfwsettings{"POLICY"} eq "MODE1") && ($chain eq $CHAIN_FORWARD)) {
+                                               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");
                                        }
+
+                                       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");
                                }
                        }
                }
-               %sourcehash=();
-               %targethash=();
-               undef $TIME;
-               undef $TIMEFROM;
-               undef $TIMETILL;
-               undef $fireport;
        }
 }
-sub get_nat_ip
-{
-       my $val=shift;
-       my $type=shift;
-       my $result;
-       if($val eq 'RED' || $val eq 'GREEN' || $val eq 'ORANGE' || $val eq 'BLUE'){
-               $result=$defaultNetworks{$val.'_ADDRESS'};
-       }elsif($val eq 'ALL'){
-               $result='-i '.$con;
-       }elsif($val eq 'Default IP' && $type eq 'dnat'){
-               $result='-d '.$redip;
-       }elsif($val eq 'Default IP' && $type eq 'snat'){
-               $result=$redip;
-       }else{
-               foreach my $al (sort keys %aliases){
-                       if($val eq $al && $type eq 'dnat'){
-                               $result='-d '.$aliases{$al}{'IPT'};
-                       }elsif($val eq $al && $type eq 'snat'){
-                               $result=$aliases{$al}{'IPT'};
+
+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};
+               }
+       }
+}
+
+sub get_nat_address {
+       my $zone = shift;
+       my $source = shift;
+
+       # Any static address of any zone.
+       if ($zone eq "AUTO") {
+               if ($source) {
+                       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 $defaultNetworks{$zone . "_ADDRESS"};
+
+       } elsif ($zone eq "Default IP") {
+               return &get_external_address();
+
+       } else {
+               return &get_alias($zone);
        }
-       return $result;
+
+       print_error("Could not find NAT address");
 }
-sub get_time
-{
-       my $val=shift;
-       my $val1=shift;
-       my $time;
-       my $minutes;
-       my $ruletime;
-       $minutes = &utcmin($val);
-       $ruletime = $minutes + &time_get_utc($val);
-       if ($ruletime < 0){$ruletime +=1440;}
-       if ($ruletime > 1440){$ruletime -=1440;}
-       $time=sprintf "%02d:%02d", $ruletime / 60, $ruletime % 60;
-       return $time;
+
+# 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);
 }
-sub time_get_utc
-{
-       # Calculates the UTCtime from a given time
-       my $val=shift;
-       my @localtime=localtime(time);
-       my @gmtime=gmtime(time);
-       my $diff = ($gmtime[2]*60+$gmtime[1]%60)-($localtime[2]*60+$localtime[1]%60);
-       return $diff;
+
+# 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);
 }
-sub utcmin
-{
-       my $ruletime=shift;
-       my ($hrs,$min) = split(":",$ruletime);
-       my $newtime = $hrs*60+$min;
-       return $newtime;
+
+# 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 $P2PSTRING;
+
+sub p2pblock {
+       my $P2PSTRING = "";
        my $DO;
        open( FILE, "< $p2pfile" ) or die "Unable to read $p2pfile";
        @p2ps = <FILE>;
@@ -498,167 +487,420 @@ sub p2pblock
                        }
                }
        }
-       if ($MODE eq 1){
-               if($P2PSTRING){
-                       print"/sbin/iptables -A FORWARDFW $CMD $P2PSTRING -j $DO\n";
+
+       if($P2PSTRING) {
+               run("$IPTABLES -A FORWARDFW $CMD $P2PSTRING -j $DO");
+       }
+}
+
+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{
-               if($P2PSTRING){
-                       system("/sbin/iptables -A FORWARDFW $CMD $P2PSTRING -j $DO");
+       } else {
+               my @address = &get_address($addr_type, $value, $type);
+
+               if (@address) {
+                       push(@addresses, @address);
                }
        }
+
+       return @addresses;
 }
-sub get_address
-{
-       my $base=shift; #source of checking ($configfwdfw{$key}[x] or groupkey
-       my $base2=shift;
-       my $type=shift; #src or tgt
-       my $hash;
-       if ($type eq 'src'){
-               $hash=\%sourcehash;
-       }else{
-               $hash=\%targethash;
-       }
-       my $key = &General::findhasharraykey($hash);
-       if($base eq 'src_addr' || $base eq 'tgt_addr' ){
-               if (&General::validmac($base2)){
-                       $$hash{$key}[0] = "-m mac --mac-source $base2";
-               }else{
-                       $$hash{$key}[0] = $base2;
+
+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);
                }
-       }elsif($base eq 'std_net_src' || $base eq 'std_net_tgt' || $base eq 'Standard Network'){
-               $$hash{$key}[0]=&fwlib::get_std_net_ip($base2,$con);
-       }elsif($base eq 'cust_net_src' || $base eq 'cust_net_tgt' || $base eq 'Custom Network'){
-               $$hash{$key}[0]=&fwlib::get_net_ip($base2);
-       }elsif($base eq 'cust_host_src' || $base eq 'cust_host_tgt' || $base eq 'Custom Host'){
-               $$hash{$key}[0]=&fwlib::get_host_ip($base2,$type);
-       }elsif($base eq 'ovpn_net_src' || $base eq 'ovpn_net_tgt' || $base eq 'OpenVPN static network'){
-               $$hash{$key}[0]=&fwlib::get_ovpn_net_ip($base2,1);
-       }elsif($base eq 'ovpn_host_src' ||$base eq 'ovpn_host_tgt' || $base eq 'OpenVPN static host'){
-               $$hash{$key}[0]=&fwlib::get_ovpn_host_ip($base2,33);
-       }elsif($base eq 'ovpn_n2n_src' ||$base eq 'ovpn_n2n_tgt' || $base eq 'OpenVPN N-2-N'){
-               $$hash{$key}[0]=&fwlib::get_ovpn_n2n_ip($base2,11);
-       }elsif($base eq 'ipsec_net_src' || $base eq 'ipsec_net_tgt' || $base eq 'IpSec Network'){
-               $$hash{$key}[0]=&fwlib::get_ipsec_net_ip($base2,11);
-       }elsif($base eq 'ipfire_src' ){
-               if($base2 eq 'GREEN'){
-                       $$hash{$key}[0]=$defaultNetworks{'GREEN_ADDRESS'};
+
+       # If 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 = &fwlib::get_std_net_ip($value, $external_interface);
+               if ($network_address) {
+                       push(@ret, $network_address);
                }
-               if($base2 eq 'BLUE'){
-                       $$hash{$key}[0]=$defaultNetworks{'BLUE_ADDRESS'};
+
+       # Custom networks.
+       } elsif ($key ~~ ["cust_net_src", "cust_net_tgt", "Custom Network"]) {
+               my $network_address = &fwlib::get_net_ip($value);
+               if ($network_address) {
+                       push(@ret, $network_address);
                }
-               if($base2 eq 'ORANGE'){
-                       $$hash{$key}[0]=$defaultNetworks{'ORANGE_ADDRESS'};
+
+       # Custom hosts.
+       } elsif ($key ~~ ["cust_host_src", "cust_host_tgt", "Custom Host"]) {
+               my $host_address = &fwlib::get_host_ip($value, $type);
+               if ($host_address) {
+                       push(@ret, $host_address);
                }
-               if($base2 eq 'ALL'){
-                       $$hash{$key}[0]='0.0.0.0/0';
+
+       # OpenVPN networks.
+       } elsif ($key ~~ ["ovpn_net_src", "ovpn_net_tgt", "OpenVPN static network"]) {
+               my $network_address = &fwlib::get_ovpn_net_ip($value, 1);
+               if ($network_address) {
+                       push(@ret, $network_address);
                }
-               if($base2 eq 'RED' || $base2 eq 'RED1'){
-                       open(FILE, "/var/ipfire/red/local-ipaddress")or die "Couldn't open local-ipaddress";
-                       $$hash{$key}[0]= <FILE>;
-                       close(FILE);
-               }else{
-                       foreach my $alias (sort keys %aliases){
-                               if ($base2 eq $alias){
-                                       $$hash{$key}[0]=$aliases{$alias}{'IPT'};
-                               }
+
+       # OpenVPN hosts.
+       } elsif ($key ~~ ["ovpn_host_src", "ovpn_host_tgt", "OpenVPN static host"]) {
+               my $host_address = &fwlib::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 = &fwlib::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 = &fwlib::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, $defaultNetworks{"GREEN_ADDRESS"});
+
+               # BLUE
+               } elsif ($value eq "BLUE") {
+                       push(@ret, $defaultNetworks{"BLUE_ADDRESS"});
+
+               # ORANGE
+               } elsif ($value eq "ORANGE") {
+                       push(@ret, $defaultNetworks{"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{"IPT"});
                        }
                }
+
+       # If nothing was selected, we assume "any".
+       } else {
+               push(@ret, "0/0");
        }
+
+       return @ret;
 }
-sub get_prot
-{
-       my $hash=shift;
-       my $key=shift;
-       #check AH,GRE,ESP or ICMP
-       if ($$hash{$key}[7] ne 'ON' && $$hash{$key}[11] ne 'ON'){
-               return "$$hash{$key}[8]";
-       }
-       if ($$hash{$key}[7] eq 'ON' || $$hash{$key}[11] eq 'ON'){
-               #check if servicegroup or service
-               if($$hash{$key}[14] eq 'cust_srv'){
-                       return &fwlib::get_srv_prot($$hash{$key}[15]);
-               }elsif($$hash{$key}[14] eq 'cust_srvgrp'){
-                       return &fwlib::get_srvgrp_prot($$hash{$key}[15]);
-               }elsif (($$hash{$key}[10] ne '' || $$hash{$key}[15] ne '') && $$hash{$key}[8] eq ''){ #when ports are used and prot set to "all"
-                       return "TCP,UDP";
-               }elsif (($$hash{$key}[10] ne '' || $$hash{$key}[15] ne '') && ($$hash{$key}[8] eq 'TCP' || $$hash{$key}[8] eq 'UDP')){ #when ports are used and prot set to "tcp" or "udp"
-                       return "$$hash{$key}[8]";
-               }elsif (($$hash{$key}[10] eq '' && $$hash{$key}[15] eq '') && $$hash{$key}[8] ne 'ICMP'){ #when ports are NOT used and prot NOT set to "ICMP"
-                       return "$$hash{$key}[8]";
-               }else{
-                       return "$$hash{$key}[8]";
+
+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);
                }
        }
-       #DNAT
-       if ($SRC_TGT eq '' && $$hash{$key}[31] eq 'dnat' && $$hash{$key}[11] eq '' && $$hash{$key}[12] ne ''){
-               return "$$hash{$key}[8]";
+
+       # 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_port
-{
-       my $hash=shift;
-       my $key=shift;
-       my $prot=shift;
-       #Get manual defined Ports from SOURCE
-       if ($$hash{$key}[7] eq 'ON' && $SRC_TGT eq 'SRC'){
-               if ($$hash{$key}[10] ne ''){
-                       $$hash{$key}[10] =~ s/\|/,/g;
-                       if(index($$hash{$key}[10],",") > 0){
-                               return "-m multiport --sport $$hash{$key}[10] ";
-                       }else{
-                               if($$hash{$key}[28] ne 'ON' || ($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'snat') ||($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'dnat')  ){
-                                       return "--sport $$hash{$key}[10] ";
-                               }else{
-                                       return ":$$hash{$key}[10]";
-                               }
-                       }
-               }
-               #Get manual ports from TARGET
-       }elsif($$hash{$key}[11] eq 'ON' && $SRC_TGT eq ''){
-               if($$hash{$key}[14] eq 'TGT_PORT'){
-                       if ($$hash{$key}[15] ne ''){
-                               $$hash{$key}[15] =~ s/\|/,/g;
-                               if(index($$hash{$key}[15],",") > 0){
-                                       return "-m multiport --dport $$hash{$key}[15] ";
-                               }else{
-                                       if($$hash{$key}[28] ne 'ON' || ($$hash{$key}[28] eq 'ON' && $$hash{$key}[31] eq 'snat') ){
-                                               return "--dport $$hash{$key}[15] ";
-                                        }else{
-                                                $$hash{$key}[15] =~ s/\:/-/g;
-                                                return ":$$hash{$key}[15]";
-                                        }
-                               }
-                       }
-               #Get ports defined in custom Service (firewall-groups)
-               }elsif($$hash{$key}[14] eq 'cust_srv'){
-                       if ($prot ne 'ICMP'){
-                               if($$hash{$key}[31] eq 'dnat' && $$hash{$key}[28] eq 'ON'){
-                                       my $ports =&fwlib::get_srv_port($$hash{$key}[15],1,$prot);
-                                       $ports =~ s/\:/-/g;
-                                       return ":".$ports
-                               }else{
-                                       return "--dport ".&fwlib::get_srv_port($$hash{$key}[15],1,$prot);
-                               }
-                       }elsif($prot eq 'ICMP' && $$hash{$key}[11] eq 'ON'){        #When PROT is ICMP and "use targetport is checked, this is an icmp-service
-                               return "--icmp-type ".&fwlib::get_srv_port($$hash{$key}[15],3,$prot);
-                       }
-               #Get ports from services which are used in custom servicegroups (firewall-groups)
-               }elsif($$hash{$key}[14] eq 'cust_srvgrp'){
-                       if      ($prot ne 'ICMP'){
-                               return &fwlib::get_srvgrp_port($$hash{$key}[15],$prot);
+
+sub get_protocol_options {
+       my $hash = shift;
+       my $key  = shift;
+       my $protocol = shift;
+       my @options = ();
+
+       # 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 ($use_dnat && $$hash{$key}[30]) {
+                               $dst_ports = $$hash{$key}[30];
                        }
-                       elsif($prot eq 'ICMP'){
-                               return &fwlib::get_srvgrp_port($$hash{$key}[15],$prot);
+                       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 (!$use_src_ports && !$use_dst_ports && $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 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 $defaultNetworks{$zone . "_ADDRESS"});
+
+               my $zone_address = $defaultNetworks{$zone . "_ADDRESS"};
+               push(@addresses, $zone_address);
+       }
+
+       return @addresses;
+}
+
+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;
+       }
+
+       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;
                }
        }
-       #CHECK ICMP
-       if ($$hash{$key}[7] ne 'ON' && $$hash{$key}[11] ne 'ON' && $SRC_TGT eq ''){
-               if($$hash{$key}[9] ne '' && $$hash{$key}[9] ne 'All ICMP-Types'){
-                       return "--icmp-type $$hash{$key}[9] ";
-               }elsif($$hash{$key}[9] eq 'All ICMP-Types'){
-                       return;
+
+       return 0;
+}
+
+sub firewall_is_in_subnet {
+       my $subnet = shift;
+
+       # ORANGE is missing here, because nothing may ever access
+       # the firewall from this network.
+       my $address = &get_internal_firewall_ip_address($subnet, 0);
+
+       if ($address) {
+               return 1;
+       }
+
+       return 0;
+}
+
+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 $defaultNetworks{$zone . "_ADDRESS"});
+
+               my $zone_subnet = $defaultNetworks{$zone . "_NETADDRESS"};
+               my $zone_mask   = $defaultNetworks{$zone . "_NETMASK"};
+
+               if (&General::IpInSubnet($address, $zone_subnet, $zone_mask)) {
+                       return $defaultNetworks{$zone . "_ADDRESS"};
                }
        }
+
+       return 0;
 }
index 7f9ae3a6f3950cd003d0cbcf0a718ab616e067a7..9b25a72402c4e1f8148b7c0823594abb0eefc35f 100644 (file)
@@ -28,7 +28,7 @@
 12,NetBIOS Name Service,137,TCP,BLANK,0
 15,IMAP,143,TCP,BLANK,0
 8,HTTP,80,TCP,BLANK,0
-4,Telnet,23,UDP,BLANK,0
+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
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
 
index 626e44e31749e1e686d473d6592e781b2f8cd9fe..5245a7f8ee6e540711ad14b7bdbd89b395dbfa07 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.10.10-ipfire-kirkwood Kernel Configuration
+# Linux/arm 3.10.27-ipfire-kirkwood Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -907,7 +907,7 @@ CONFIG_L2TP_V3=y
 CONFIG_L2TP_IP=m
 CONFIG_L2TP_ETH=m
 CONFIG_STP=y
-CONFIG_GARP=y
+CONFIG_GARP=m
 CONFIG_BRIDGE=y
 CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
@@ -2195,7 +2195,7 @@ CONFIG_ISDN_HDLC=m
 #
 CONFIG_INPUT=y
 # CONFIG_INPUT_FF_MEMLESS is not set
-CONFIG_INPUT_POLLDEV=m
+CONFIG_INPUT_POLLDEV=y
 CONFIG_INPUT_SPARSEKMAP=m
 CONFIG_INPUT_MATRIXKMAP=m
 
@@ -4019,7 +4019,7 @@ 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
@@ -4027,7 +4027,7 @@ 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 is not set
@@ -4043,7 +4043,7 @@ 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_MVSDIO=y
 CONFIG_MMC_CB710=m
 CONFIG_MMC_VIA_SDMMC=m
 CONFIG_MMC_DW=m
@@ -4213,7 +4213,6 @@ CONFIG_DMA_OF=y
 #
 # DMA Clients
 #
-CONFIG_NET_DMA=y
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
 # CONFIG_AUXDISPLAY is not set
@@ -4253,7 +4252,8 @@ CONFIG_USBIP_HOST=m
 # CONFIG_RTL8192U 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_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
index bb9f21a6d7783ace727da49ffd55a99cbea5872a..dcd3b08f73f39de8de2d9651439d0c859ad22ca7 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.10.21 Kernel Configuration
+# Linux/arm 3.10.32 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_MIGHT_HAVE_PCI=y
@@ -14,6 +14,7 @@ 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
@@ -332,7 +333,14 @@ CONFIG_ARCH_MULTIPLATFORM=y
 CONFIG_ARCH_MULTI_V7=y
 CONFIG_ARCH_MULTI_V6_V7=y
 # CONFIG_ARCH_MULTI_CPU_AUTO is not set
-# CONFIG_ARCH_MVEBU 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
@@ -369,10 +377,80 @@ CONFIG_IMX_HAVE_PLATFORM_FEC=y
 CONFIG_IMX_HAVE_PLATFORM_GPIO_KEYS=y
 CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT=y
 CONFIG_WAND_RFKILL=m
-# CONFIG_ARCH_OMAP2PLUS is not set
+
+#
+# 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 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
@@ -389,12 +467,14 @@ 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
@@ -421,7 +501,6 @@ CONFIG_SWP_EMULATE=y
 # CONFIG_CPU_DCACHE_DISABLE is not set
 # CONFIG_CPU_BPREDICT_DISABLE is not set
 CONFIG_KUSER_HELPERS=y
-CONFIG_DMA_CACHE_RWFO=y
 CONFIG_OUTER_CACHE=y
 CONFIG_OUTER_CACHE_SYNC=y
 CONFIG_MIGHT_HAVE_CACHE_L2X0=y
@@ -432,6 +511,7 @@ 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
@@ -451,7 +531,6 @@ CONFIG_ICST=y
 #
 CONFIG_ARM_AMBA=y
 CONFIG_PCI=y
-CONFIG_PCIE_DW=y
 CONFIG_PCI_DOMAINS=y
 CONFIG_PCI_SYSCALL=y
 # CONFIG_PCI_DEBUG is not set
@@ -464,6 +543,7 @@ CONFIG_PCI_SYSCALL=y
 #
 # PCI host controller drivers
 #
+CONFIG_PCIE_DW=y
 CONFIG_PCI_IMX6=y
 # CONFIG_PCCARD is not set
 
@@ -488,7 +568,7 @@ CONFIG_NR_CPUS=8
 CONFIG_HOTPLUG_CPU=y
 CONFIG_ARM_PSCI=y
 CONFIG_LOCAL_TIMERS=y
-CONFIG_ARCH_NR_GPIO=352
+CONFIG_ARCH_NR_GPIO=512
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
@@ -497,6 +577,7 @@ 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
@@ -513,14 +594,14 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
 CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
 # CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
+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=11
+CONFIG_FORCE_MAX_ZONEORDER=12
 CONFIG_ALIGNMENT_TRAP=y
 # CONFIG_SECCOMP is not set
 CONFIG_CC_STACKPROTECTOR=y
@@ -535,7 +616,9 @@ CONFIG_ATAGS=y
 CONFIG_ZBOOT_ROM_TEXT=0
 CONFIG_ZBOOT_ROM_BSS=0
 CONFIG_ARM_APPENDED_DTB=y
-# CONFIG_ARM_ATAG_DTB_COMPAT is not set
+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
@@ -578,11 +661,9 @@ CONFIG_GENERIC_CPUFREQ_CPU0=y
 # CONFIG_ARM_EXYNOS5440_CPUFREQ is not set
 CONFIG_ARM_IMX6Q_CPUFREQ=m
 # CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
-CONFIG_CPU_IDLE=y
-CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-CONFIG_CPU_IDLE_GOV_MENU=y
-# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
+CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
+# CONFIG_CPU_IDLE is not set
+CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y
 
 #
 # Floating point emulation
@@ -1220,6 +1301,7 @@ CONFIG_FW_LOADER_USER_HELPER=y
 # 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
@@ -1242,6 +1324,9 @@ 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
@@ -1306,6 +1391,8 @@ CONFIG_MTD_CFI_I2=y
 # 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
@@ -1313,6 +1400,10 @@ CONFIG_MTD_NAND=y
 # 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
@@ -1322,6 +1413,7 @@ CONFIG_MTD_NAND_IDS=y
 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
 
@@ -1354,16 +1446,12 @@ CONFIG_OF_PCI=y
 CONFIG_OF_PCI_IRQ=y
 CONFIG_OF_MTD=y
 CONFIG_PARPORT=m
-CONFIG_PARPORT_PC=m
-# CONFIG_PARPORT_SERIAL is not set
-# CONFIG_PARPORT_PC_FIFO is not set
-# CONFIG_PARPORT_PC_SUPERIO is not set
+# 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_PARIDE is not set
 # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
 # CONFIG_BLK_CPQ_CISS_DA is not set
 # CONFIG_BLK_DEV_DAC960 is not set
@@ -1484,61 +1572,82 @@ CONFIG_SCSI_SRP_TGT_ATTRS=y
 CONFIG_SCSI_LOWLEVEL=y
 CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
-# CONFIG_SCSI_CXGB3_ISCSI is not set
-# CONFIG_SCSI_CXGB4_ISCSI is not set
-# CONFIG_SCSI_BNX2_ISCSI is not set
-# CONFIG_SCSI_BNX2X_FCOE is not set
-# CONFIG_BE2ISCSI is not set
-# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
-# CONFIG_SCSI_HPSA is not set
-# CONFIG_SCSI_3W_9XXX is not set
-# CONFIG_SCSI_3W_SAS is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AACRAID is not set
-# CONFIG_SCSI_AIC7XXX is not set
+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 is not set
-# CONFIG_SCSI_AIC94XX is not set
-# CONFIG_SCSI_MVSAS is not set
-# CONFIG_SCSI_MVUMI is not set
-# CONFIG_SCSI_ARCMSR is not set
-# CONFIG_MEGARAID_NEWGEN is not set
-# CONFIG_MEGARAID_LEGACY is not set
-# CONFIG_MEGARAID_SAS is not set
-# CONFIG_SCSI_MPT2SAS is not set
-# CONFIG_SCSI_MPT3SAS 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 is not set
+CONFIG_SCSI_UFSHCD_PCI=m
 CONFIG_SCSI_UFSHCD_PLATFORM=m
-# CONFIG_SCSI_HPTIOP is not set
+CONFIG_SCSI_HPTIOP=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
-# CONFIG_FCOE is not set
-# CONFIG_SCSI_DMX3191D is not set
-# CONFIG_SCSI_FUTURE_DOMAIN is not set
-# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-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 is not set
-# CONFIG_SCSI_SYM53C8XX_2 is not set
-# CONFIG_SCSI_IPR is not set
-# CONFIG_SCSI_QLOGIC_1280 is not set
-# CONFIG_SCSI_QLA_FC is not set
-# CONFIG_SCSI_QLA_ISCSI is not set
-# CONFIG_SCSI_LPFC is not set
-# CONFIG_SCSI_DC395x is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_NSP32 is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_PMCRAID is not set
-# CONFIG_SCSI_PM8001 is not set
-# CONFIG_SCSI_SRP is not set
-# CONFIG_SCSI_BFA_FC is not set
-# CONFIG_SCSI_CHELSIO_FCOE is not set
+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
@@ -1660,6 +1769,7 @@ 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
@@ -1688,7 +1798,10 @@ CONFIG_DM_VERITY=m
 #
 # IEEE 1394 (FireWire) support
 #
-# CONFIG_FIREWIRE is not set
+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
@@ -1716,18 +1829,31 @@ CONFIG_IMQ_BEHAVIOR_AB=y
 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 is not set
-# CONFIG_ATM_ENI is not set
-# CONFIG_ATM_NICSTAR is not set
-# CONFIG_ATM_IDT77252 is not set
-# CONFIG_ATM_IA is not set
-# CONFIG_ATM_FORE200E is not set
-# CONFIG_ATM_HE is not set
-# CONFIG_ATM_SOLOS is not set
+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
@@ -1742,21 +1868,23 @@ 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 is not set
+CONFIG_TYPHOON=m
 CONFIG_NET_VENDOR_ADAPTEC=y
-# CONFIG_ADAPTEC_STARFIRE is not set
+CONFIG_ADAPTEC_STARFIRE=m
 CONFIG_NET_VENDOR_ALTEON=y
-# CONFIG_ACENIC is not set
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
 CONFIG_NET_VENDOR_AMD=y
-# CONFIG_AMD8111_ETH is not set
-# CONFIG_PCNET32 is not set
+CONFIG_AMD8111_ETH=m
+CONFIG_PCNET32=m
 CONFIG_NET_VENDOR_ATHEROS=y
-# CONFIG_ATL2 is not set
-# CONFIG_ATL1 is not set
-# CONFIG_ATL1E is not set
-# CONFIG_ATL1C is not set
-# CONFIG_ALX is not set
+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
@@ -1765,108 +1893,135 @@ CONFIG_B44=m
 CONFIG_B44_PCI_AUTOSELECT=y
 CONFIG_B44_PCICORE_AUTOSELECT=y
 CONFIG_B44_PCI=y
-# CONFIG_BNX2 is not set
-# CONFIG_CNIC is not set
-# CONFIG_TIGON3 is not set
-# CONFIG_BNX2X is not set
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_TIGON3=m
+CONFIG_BNX2X=m
 CONFIG_NET_VENDOR_BROCADE=y
-# CONFIG_BNA is not set
+CONFIG_BNA=m
 CONFIG_NET_CALXEDA_XGMAC=m
 CONFIG_NET_VENDOR_CHELSIO=y
-# CONFIG_CHELSIO_T1 is not set
-# CONFIG_CHELSIO_T3 is not set
-# CONFIG_CHELSIO_T4 is not set
-# CONFIG_CHELSIO_T4VF is not set
+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 is not set
+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 is not set
+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 is not set
-# CONFIG_SUNDANCE is not set
+CONFIG_DL2K=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
 CONFIG_NET_VENDOR_EMULEX=y
-# CONFIG_BE2NET is not set
+CONFIG_BE2NET=m
 CONFIG_NET_VENDOR_EXAR=y
-# CONFIG_S2IO is not set
-# CONFIG_VXGE is not set
+CONFIG_S2IO=m
+CONFIG_VXGE=m
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
 CONFIG_NET_VENDOR_FARADAY=y
-# CONFIG_FTMAC100 is not set
-# CONFIG_FTGMAC100 is not set
+CONFIG_FTMAC100=m
+CONFIG_FTGMAC100=m
 CONFIG_NET_VENDOR_FREESCALE=y
 CONFIG_FEC=m
 CONFIG_NET_VENDOR_HP=y
-# CONFIG_HP100 is not set
+CONFIG_HP100=m
 CONFIG_NET_VENDOR_INTEL=y
-# CONFIG_E100 is not set
-# CONFIG_E1000 is not set
-# CONFIG_E1000E is not set
-# CONFIG_IGB is not set
-# CONFIG_IGBVF is not set
-# CONFIG_IXGB is not set
-# CONFIG_IXGBE is not set
+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 is not set
-# CONFIG_JME is not set
+CONFIG_IP1000=m
+CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_MV643XX_ETH=m
 CONFIG_MVMDIO=m
-# CONFIG_SKGE is not set
-# CONFIG_SKY2 is not set
+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 is not set
-# CONFIG_MLX4_CORE is not set
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
 CONFIG_NET_VENDOR_MICREL=y
-# CONFIG_KS8842 is not set
-# CONFIG_KS8851_MLL is not set
-# CONFIG_KSZ884X_PCI is not set
+CONFIG_KS8842=m
+CONFIG_KS8851_MLL=m
+CONFIG_KSZ884X_PCI=m
 CONFIG_NET_VENDOR_MYRI=y
-# CONFIG_MYRI10GE is not set
-# CONFIG_FEALNX is not set
+CONFIG_MYRI10GE=m
+CONFIG_FEALNX=m
 CONFIG_NET_VENDOR_NATSEMI=y
-# CONFIG_NATSEMI is not set
-# CONFIG_NS83820 is not set
+CONFIG_NATSEMI=m
+CONFIG_NS83820=m
 CONFIG_NET_VENDOR_8390=y
 CONFIG_AX88796=m
 CONFIG_AX88796_93CX6=y
-# CONFIG_NE2K_PCI is not set
+CONFIG_NE2K_PCI=m
 CONFIG_NET_VENDOR_NVIDIA=y
-# CONFIG_FORCEDETH is not set
+CONFIG_FORCEDETH=m
 CONFIG_NET_VENDOR_OKI=y
-# CONFIG_PCH_GBE is not set
+CONFIG_PCH_GBE=m
 CONFIG_ETHOC=m
 CONFIG_NET_PACKET_ENGINE=y
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
 CONFIG_NET_VENDOR_QLOGIC=y
-# CONFIG_QLA3XXX is not set
-# CONFIG_QLCNIC is not set
-# CONFIG_QLGE is not set
-# CONFIG_NETXEN_NIC is not set
+CONFIG_QLA3XXX=m
+CONFIG_QLCNIC=m
+CONFIG_QLGE=m
+CONFIG_NETXEN_NIC=m
 CONFIG_NET_VENDOR_REALTEK=y
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_R8169 is not set
+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 is not set
+CONFIG_R6040=m
 CONFIG_NET_VENDOR_SEEQ=y
 CONFIG_NET_VENDOR_SILAN=y
-# CONFIG_SC92031 is not set
+CONFIG_SC92031=m
 CONFIG_NET_VENDOR_SIS=y
-# CONFIG_SIS900 is not set
-# CONFIG_SIS190 is not set
-# CONFIG_SFC is not set
+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 is not set
+CONFIG_EPIC100=m
 CONFIG_SMC911X=m
 CONFIG_SMSC911X=m
 # CONFIG_SMSC911X_ARCH_HOOKS is not set
-# CONFIG_SMSC9420 is not set
+CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
 CONFIG_STMMAC_PLATFORM=y
@@ -1874,17 +2029,23 @@ CONFIG_STMMAC_PLATFORM=y
 # CONFIG_STMMAC_DEBUG_FS is not set
 # CONFIG_STMMAC_DA is not set
 CONFIG_NET_VENDOR_SUN=y
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_CASSINI is not set
-# CONFIG_NIU is not set
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
+CONFIG_NIU=m
 CONFIG_NET_VENDOR_TEHUTI=y
-# CONFIG_TEHUTI is not set
+CONFIG_TEHUTI=m
 CONFIG_NET_VENDOR_TI=y
-# CONFIG_TLAN is not set
+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 is not set
-# CONFIG_VIA_VELOCITY is not set
+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
@@ -1980,17 +2141,18 @@ CONFIG_WLAN=y
 CONFIG_LIBERTAS_THINFIRM=m
 # CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
 CONFIG_LIBERTAS_THINFIRM_USB=m
-# CONFIG_ATMEL is not set
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
 CONFIG_AT76C50X_USB=m
-# CONFIG_PRISM54 is not set
+CONFIG_PRISM54=m
 CONFIG_USB_ZD1201=m
 CONFIG_USB_NET_RNDIS_WLAN=m
-# CONFIG_RTL8180 is not set
+CONFIG_RTL8180=m
 CONFIG_RTL8187=m
 CONFIG_RTL8187_LEDS=y
-# CONFIG_ADM8211 is not set
+CONFIG_ADM8211=m
 CONFIG_MAC80211_HWSIM=m
-# CONFIG_MWL8K is not set
+CONFIG_MWL8K=m
 CONFIG_ATH_COMMON=m
 CONFIG_ATH_CARDS=m
 # CONFIG_ATH_DEBUG is not set
@@ -2044,22 +2206,53 @@ CONFIG_BRCMFMAC_SDIO=y
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
 CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-# CONFIG_HOSTAP_PLX is not set
-# CONFIG_HOSTAP_PCI is not set
-# 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_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 is not set
+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 is not set
+CONFIG_P54_PCI=m
 CONFIG_P54_LEDS=y
 CONFIG_RT2X00=m
 # CONFIG_RT2400PCI is not set
@@ -2083,11 +2276,11 @@ CONFIG_RT2X00_LIB_LEDS=y
 # CONFIG_RT2X00_DEBUG is not set
 CONFIG_RTLWIFI=m
 # CONFIG_RTLWIFI_DEBUG is not set
-# CONFIG_RTL8192CE is not set
-# CONFIG_RTL8192SE is not set
-# CONFIG_RTL8192DE is not set
-# CONFIG_RTL8723AE is not set
-# CONFIG_RTL8188EE 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
@@ -2102,14 +2295,14 @@ CONFIG_ZD1211RW=m
 # CONFIG_ZD1211RW_DEBUG is not set
 CONFIG_MWIFIEX=m
 CONFIG_MWIFIEX_SDIO=m
-# CONFIG_MWIFIEX_PCIE is not set
+CONFIG_MWIFIEX_PCIE=m
 CONFIG_MWIFIEX_USB=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
 #
 # CONFIG_WAN is not set
-# CONFIG_VMXNET3 is not set
+CONFIG_VMXNET3=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
 CONFIG_ISDN_PPP=y
@@ -2248,6 +2441,7 @@ CONFIG_KEYBOARD_IMX=m
 # 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
@@ -2362,8 +2556,10 @@ CONFIG_SERIAL_8250_RSA=y
 #
 # Non-8250 serial port support
 #
-CONFIG_SERIAL_AMBA_PL010=m
-CONFIG_SERIAL_AMBA_PL011=m
+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
@@ -2372,6 +2568,8 @@ 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
@@ -2445,8 +2643,10 @@ CONFIG_I2C_CBUS_GPIO=m
 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
@@ -2524,9 +2724,13 @@ CONFIG_PINCTRL_IMX=y
 CONFIG_PINCTRL_IMX51=y
 CONFIG_PINCTRL_IMX53=y
 CONFIG_PINCTRL_IMX6Q=y
-CONFIG_PINCTRL_SINGLE=m
+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
@@ -2544,6 +2748,7 @@ CONFIG_GPIO_GENERIC=y
 #
 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
@@ -2558,14 +2763,13 @@ CONFIG_GPIO_TS5500=m
 # CONFIG_GPIO_MAX732X is not set
 # CONFIG_GPIO_PCF857X is not set
 # CONFIG_GPIO_SX150X is not set
-CONFIG_GPIO_TWL4030=m
+CONFIG_GPIO_TWL4030=y
 # CONFIG_GPIO_ADP5588 is not set
 CONFIG_GPIO_ADNP=m
 
 #
 # PCI GPIO expanders:
 #
-# CONFIG_GPIO_BT8XX is not set
 # CONFIG_GPIO_AMD8111 is not set
 # CONFIG_GPIO_ML_IOH is not set
 # CONFIG_GPIO_RDC321X is not set
@@ -2599,6 +2803,7 @@ 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
@@ -2636,7 +2841,7 @@ 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=m
+CONFIG_CHARGER_TWL4030=y
 # CONFIG_CHARGER_LP8727 is not set
 # CONFIG_CHARGER_GPIO is not set
 # CONFIG_CHARGER_MANAGER is not set
@@ -2645,6 +2850,7 @@ CONFIG_CHARGER_TWL4030=m
 # 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
@@ -2781,6 +2987,7 @@ 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
@@ -2792,6 +2999,7 @@ 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
@@ -2880,6 +3088,7 @@ CONFIG_ABX500_CORE=y
 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
@@ -2892,7 +3101,7 @@ CONFIG_MFD_SYSCON=y
 # CONFIG_MFD_TPS65912_I2C is not set
 # CONFIG_MFD_TPS80031 is not set
 CONFIG_TWL4030_CORE=y
-CONFIG_TWL4030_MADC=m
+CONFIG_TWL4030_MADC=y
 CONFIG_TWL4030_POWER=y
 CONFIG_MFD_TWL4030_AUDIO=y
 # CONFIG_TWL6040_CORE is not set
@@ -2956,9 +3165,10 @@ CONFIG_VIDEO_V4L2=y
 # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
 CONFIG_VIDEO_TUNER=m
 CONFIG_V4L2_MEM2MEM_DEV=m
-CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_GEN=y
+CONFIG_VIDEOBUF_DMA_SG=m
 CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF_DMA_CONTIG=m
+CONFIG_VIDEOBUF_DMA_CONTIG=y
 CONFIG_VIDEOBUF_DVB=m
 CONFIG_VIDEOBUF2_CORE=m
 CONFIG_VIDEOBUF2_MEMOPS=m
@@ -3143,9 +3353,70 @@ CONFIG_VIDEO_EM28XX=m
 CONFIG_VIDEO_EM28XX_ALSA=m
 CONFIG_VIDEO_EM28XX_DVB=m
 CONFIG_VIDEO_EM28XX_RC=m
-# CONFIG_MEDIA_PCI_SUPPORT is not set
+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
@@ -3164,15 +3435,23 @@ CONFIG_VIDEO_SH_VEU=m
 #
 # 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
@@ -3187,13 +3466,22 @@ 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
@@ -3205,11 +3493,13 @@ 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
@@ -3223,10 +3513,13 @@ CONFIG_VIDEO_MT9V011=m
 #
 # Video improvement chips
 #
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
 
 #
 # Miscelaneous helper chips
 #
+CONFIG_VIDEO_M52790=m
 
 #
 # Sensors used on soc_camera driver
@@ -3259,6 +3552,7 @@ 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
@@ -3295,8 +3589,10 @@ 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
@@ -3304,22 +3600,31 @@ 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
@@ -3331,6 +3636,7 @@ 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
@@ -3338,6 +3644,8 @@ CONFIG_DVB_RTL2832=m
 #
 # DVB-C (cable) frontends
 #
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
 CONFIG_DVB_TDA10023=m
 CONFIG_DVB_STV0297=m
 
@@ -3345,6 +3653,8 @@ 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
@@ -3374,11 +3684,13 @@ CONFIG_DVB_TUNER_DIB0090=m
 #
 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
@@ -3424,7 +3736,9 @@ 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_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
@@ -3432,7 +3746,7 @@ CONFIG_DRM_UDL=m
 CONFIG_VIDEOMODE_HELPERS=y
 CONFIG_HDMI=y
 CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FIRMWARE_EDID=y
 # CONFIG_FB_DDC is not set
 # CONFIG_FB_BOOT_VESA_SUPPORT is not set
 CONFIG_FB_CFB_FILLRECT=m
@@ -3449,7 +3763,7 @@ CONFIG_FB_DEFERRED_IO=y
 # CONFIG_FB_MACMODES is not set
 # CONFIG_FB_BACKLIGHT is not set
 CONFIG_FB_MODE_HELPERS=y
-# CONFIG_FB_TILEBLITTING is not set
+CONFIG_FB_TILEBLITTING=y
 
 #
 # Frame buffer hardware drivers
@@ -3495,6 +3809,31 @@ CONFIG_FB_SMSCUFX=m
 # 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
@@ -3510,6 +3849,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # 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
@@ -3517,7 +3857,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
 # CONFIG_FONTS is not set
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
@@ -3553,12 +3893,15 @@ 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 is not set
+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 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
@@ -3571,70 +3914,97 @@ 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 is not set
-# CONFIG_SND_ALS300 is not set
-# CONFIG_SND_ALI5451 is not set
-# CONFIG_SND_ATIIXP is not set
-# CONFIG_SND_ATIIXP_MODEM is not set
-# CONFIG_SND_AU8810 is not set
-# CONFIG_SND_AU8820 is not set
-# CONFIG_SND_AU8830 is not set
-# CONFIG_SND_AW2 is not set
-# CONFIG_SND_AZT3328 is not set
-# CONFIG_SND_BT87X is not set
-# CONFIG_SND_CA0106 is not set
-# CONFIG_SND_CMIPCI is not set
-# CONFIG_SND_OXYGEN is not set
-# CONFIG_SND_CS4281 is not set
-# CONFIG_SND_CS46XX is not set
-# CONFIG_SND_CS5535AUDIO is not set
-# CONFIG_SND_CTXFI is not set
-# CONFIG_SND_DARLA20 is not set
-# CONFIG_SND_GINA20 is not set
-# CONFIG_SND_LAYLA20 is not set
-# CONFIG_SND_DARLA24 is not set
-# CONFIG_SND_GINA24 is not set
-# CONFIG_SND_LAYLA24 is not set
-# CONFIG_SND_MONA is not set
-# CONFIG_SND_MIA is not set
-# CONFIG_SND_ECHO3G is not set
-# CONFIG_SND_INDIGO is not set
-# CONFIG_SND_INDIGOIO is not set
-# CONFIG_SND_INDIGODJ is not set
-# CONFIG_SND_INDIGOIOX is not set
-# CONFIG_SND_INDIGODJX is not set
-# CONFIG_SND_EMU10K1 is not set
-# CONFIG_SND_EMU10K1X is not set
-# CONFIG_SND_ENS1370 is not set
-# CONFIG_SND_ENS1371 is not set
-# CONFIG_SND_ES1938 is not set
-# CONFIG_SND_ES1968 is not set
-# CONFIG_SND_FM801 is not set
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDSP is not set
-# CONFIG_SND_HDSPM is not set
-# CONFIG_SND_ICE1712 is not set
-# CONFIG_SND_ICE1724 is not set
-# CONFIG_SND_INTEL8X0 is not set
-# CONFIG_SND_INTEL8X0M is not set
-# CONFIG_SND_KORG1212 is not set
-# CONFIG_SND_LOLA is not set
-# CONFIG_SND_MAESTRO3 is not set
-# CONFIG_SND_MIXART is not set
-# CONFIG_SND_NM256 is not set
-# CONFIG_SND_PCXHR is not set
-# CONFIG_SND_RIPTIDE is not set
-# CONFIG_SND_RME32 is not set
-# CONFIG_SND_RME96 is not set
-# CONFIG_SND_RME9652 is not set
-# CONFIG_SND_SONICVIBES is not set
-# CONFIG_SND_TRIDENT is not set
-# CONFIG_SND_VIA82XX is not set
-# CONFIG_SND_VIA82XX_MODEM is not set
-# CONFIG_SND_VIRTUOSO is not set
-# CONFIG_SND_VX222 is not set
-# CONFIG_SND_YMFPCI is not set
+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
@@ -3643,6 +4013,10 @@ 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
@@ -3655,9 +4029,22 @@ 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
@@ -3766,7 +4153,7 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 #
 CONFIG_USB_DEFAULT_PERSIST=y
 # CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG 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
@@ -3783,6 +4170,8 @@ 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
@@ -3939,7 +4328,8 @@ CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
 CONFIG_USB_PHY=y
 CONFIG_NOP_USB_XCEIV=m
-CONFIG_OMAP_CONTROL_USB=m
+CONFIG_OMAP_CONTROL_USB=y
+CONFIG_OMAP_USB2=y
 CONFIG_OMAP_USB3=m
 CONFIG_SAMSUNG_USBPHY=m
 CONFIG_SAMSUNG_USB2PHY=m
@@ -3976,8 +4366,11 @@ 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
@@ -4013,20 +4406,21 @@ CONFIG_LEDS_88PM860X=y
 CONFIG_LEDS_LM3530=m
 CONFIG_LEDS_LM3533=m
 CONFIG_LEDS_LM3642=m
-# CONFIG_LEDS_PCA9532 is not set
+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 is not set
+CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA9633=m
 CONFIG_LEDS_PWM=m
 CONFIG_LEDS_REGULATOR=m
-# CONFIG_LEDS_BD2802 is not set
+CONFIG_LEDS_BD2802=m
 CONFIG_LEDS_LT3593=m
-# CONFIG_LEDS_RENESAS_TPU is not set
+CONFIG_LEDS_RENESAS_TPU=y
 CONFIG_LEDS_TCA6507=m
 CONFIG_LEDS_LM355x=m
 CONFIG_LEDS_OT200=m
@@ -4089,7 +4483,7 @@ 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=m
+CONFIG_RTC_DRV_TWL4030=y
 # CONFIG_RTC_DRV_S35390A is not set
 CONFIG_RTC_DRV_FM3130=m
 CONFIG_RTC_DRV_RX8581=m
@@ -4123,9 +4517,11 @@ 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
 
@@ -4139,8 +4535,10 @@ CONFIG_DMADEVICES=y
 #
 # 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
@@ -4148,6 +4546,7 @@ 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
@@ -4155,7 +4554,6 @@ CONFIG_DMA_OF=y
 #
 # DMA Clients
 #
-CONFIG_NET_DMA=y
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
 # CONFIG_AUXDISPLAY is not set
@@ -4195,7 +4593,8 @@ CONFIG_USBIP_HOST=m
 # CONFIG_RTL8192U 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_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
@@ -4305,6 +4704,7 @@ CONFIG_DRM_IMX=m
 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
@@ -4316,19 +4716,25 @@ CONFIG_COMMON_CLK=y
 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=y
-CONFIG_OF_IOMMU=y
+# CONFIG_IOMMU_SUPPORT is not set
 
 #
 # Remoteproc drivers
@@ -4341,6 +4747,7 @@ CONFIG_OF_IOMMU=y
 # 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
@@ -4424,6 +4831,8 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # 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
@@ -4782,23 +5191,10 @@ CONFIG_STRICT_DEVMEM=y
 CONFIG_ARM_UNWIND=y
 CONFIG_OLD_MCOUNT=y
 # CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_ZYNQ_UART0 is not set
-# CONFIG_DEBUG_ZYNQ_UART1 is not set
-# CONFIG_DEBUG_IMX51_UART is not set
-# CONFIG_DEBUG_IMX53_UART is not set
-CONFIG_DEBUG_IMX6Q_UART=y
-# CONFIG_DEBUG_VEXPRESS_UART0_DETECT is not set
-# CONFIG_DEBUG_VEXPRESS_UART0_CA9 is not set
-# CONFIG_DEBUG_VEXPRESS_UART0_RS1 is not set
-# CONFIG_DEBUG_VT8500_UART0 is not set
-# CONFIG_DEBUG_ICEDCC is not set
-# CONFIG_DEBUG_SEMIHOSTING is not set
+# CONFIG_DEBUG_LL is not set
 CONFIG_DEBUG_IMX_UART_PORT=1
-CONFIG_DEBUG_LL_INCLUDE="debug/imx.S"
-CONFIG_DEBUG_UNCOMPRESS=y
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
 CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
-CONFIG_EARLY_PRINTK=y
 CONFIG_OC_ETM=y
 # CONFIG_PID_IN_CONTEXTIDR is not set
 
@@ -5095,7 +5491,11 @@ CONFIG_CRYPTO_USER_API=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
 CONFIG_CRYPTO_HW=y
-# CONFIG_CRYPTO_DEV_HIFN_795X is not set
+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
@@ -5146,12 +5546,15 @@ 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
index 3f6c8da3b42c1cb39b6bd5eb6fd6769b13267c76..a5266ec19222db846cec8eaef1855152f4f29300 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.10.22 Kernel Configuration
+# Linux/arm 3.10.32 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -17,6 +17,7 @@ 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
@@ -78,11 +79,14 @@ CONFIG_HIGH_RES_TIMERS=y
 #
 # CPU/Task time and stats accounting
 #
-# CONFIG_TICK_CPU_ACCOUNTING is not set
-CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
 CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-# CONFIG_TASKSTATS is not set
+# 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
@@ -93,7 +97,21 @@ CONFIG_TINY_RCU=y
 # 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
@@ -288,8 +306,8 @@ CONFIG_MACH_BCM2708=y
 CONFIG_BCM2708_GPIO=y
 CONFIG_BCM2708_VCMEM=y
 # CONFIG_BCM2708_NOL2CACHE is not set
-CONFIG_BCM2708_DMAER=m
 CONFIG_BCM2708_SPIDEV=y
+CONFIG_BCM2708_DMAER=m
 
 #
 # Processor Type
@@ -566,7 +584,7 @@ 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
@@ -887,6 +905,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
@@ -918,6 +937,7 @@ 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
 
@@ -1024,6 +1044,7 @@ CONFIG_FW_LOADER_USER_HELPER=y
 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
@@ -1302,6 +1323,7 @@ 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
@@ -2581,6 +2603,8 @@ 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
 
@@ -2925,10 +2949,19 @@ CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
 CONFIG_SND_USB_6FIRE=m
 CONFIG_SND_SOC=m
+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_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_WM8804=m
 CONFIG_SND_SIMPLE_CARD=m
 # CONFIG_SOUND_PRIME is not set
 CONFIG_AC97_BUS=m
@@ -3385,6 +3418,7 @@ 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
@@ -3392,7 +3426,6 @@ CONFIG_DMA_OF=y
 #
 # DMA Clients
 #
-CONFIG_NET_DMA=y
 CONFIG_ASYNC_TX_DMA=y
 CONFIG_DMATEST=m
 # CONFIG_AUXDISPLAY is not set
@@ -3423,7 +3456,8 @@ CONFIG_ECHO=m
 # 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_LINE6_USB is not set
 # CONFIG_USB_SERIAL_QUATECH2 is not set
index 925b0e0e223a2f9f9f173eff0569390ddbd32a0b..9ec9523b7ab45e6bd542331862903eebc3306e7c 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.10.11-ipfire Kernel Configuration
+# Linux/x86 3.10.33 Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -658,6 +658,7 @@ CONFIG_EISA_NAMES=y
 CONFIG_SCx200=m
 CONFIG_SCx200HR_TIMER=m
 # CONFIG_OLPC is not set
+CONFIG_APULED=y
 CONFIG_ALIX=y
 CONFIG_NET5501=y
 CONFIG_GEOS=y
@@ -1093,7 +1094,7 @@ CONFIG_L2TP_V3=y
 CONFIG_L2TP_IP=m
 CONFIG_L2TP_ETH=m
 CONFIG_STP=y
-CONFIG_GARP=y
+CONFIG_GARP=m
 CONFIG_BRIDGE=y
 CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
@@ -1524,6 +1525,7 @@ CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
 # CONFIG_SCSI_FLASHPOINT is not set
 CONFIG_VMWARE_PVSCSI=m
+CONFIG_HYPERV_STORAGE=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
 CONFIG_FCOE=m
@@ -1715,6 +1717,7 @@ 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
@@ -2297,6 +2300,7 @@ CONFIG_MWIFIEX_USB=m
 #
 # CONFIG_WAN is not set
 CONFIG_VMXNET3=m
+CONFIG_HYPERV_NET=m
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
 CONFIG_ISDN_PPP=y
@@ -2818,7 +2822,7 @@ CONFIG_GPIO_ICH=m
 #
 # PCI GPIO expanders:
 #
-# CONFIG_GPIO_CS5535 is not set
+CONFIG_GPIO_CS5535=m
 # CONFIG_GPIO_AMD8111 is not set
 # CONFIG_GPIO_LANGWELL is not set
 # CONFIG_GPIO_PCH is not set
@@ -3890,6 +3894,7 @@ CONFIG_FB_UDL=m
 # 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
@@ -3905,6 +3910,7 @@ CONFIG_BACKLIGHT_APPLE=m
 # 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
@@ -4196,6 +4202,7 @@ CONFIG_HID_SPEEDLINK=m
 # CONFIG_HID_STEELSERIES is not set
 CONFIG_HID_SUNPLUS=m
 # 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
@@ -4473,17 +4480,18 @@ CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_LM3530=m
 CONFIG_LEDS_LM3533=m
 CONFIG_LEDS_LM3642=m
-# CONFIG_LEDS_PCA9532 is not set
-# CONFIG_LEDS_GPIO is not set
+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 is not set
+CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA9633=m
-# CONFIG_LEDS_BD2802 is not set
+CONFIG_LEDS_BD2802=m
 CONFIG_LEDS_INTEL_SS4200=m
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_DELL_NETBOOKS=m
@@ -4623,7 +4631,6 @@ CONFIG_DMA_ACPI=y
 #
 # DMA Clients
 #
-CONFIG_NET_DMA=y
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
 CONFIG_DCA=m
@@ -4652,7 +4659,9 @@ CONFIG_VIRTIO_MMIO=m
 #
 # Microsoft Hyper-V guest support
 #
-# CONFIG_HYPERV is not set
+CONFIG_HYPERV=m
+CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_BALLOON=m
 CONFIG_STAGING=y
 CONFIG_ET131X=m
 CONFIG_SLICOSS=m
@@ -4670,7 +4679,8 @@ CONFIG_ECHO=m
 # CONFIG_RTL8192U 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_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
index fc619b804e15cb28496f03ae487b8071a43bffad..5fd7ab9bf9e508adec01e2a01587cb04c41175dd 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.10.11-ipfire Kernel Configuration
+# Linux/x86 3.10.33 Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -670,6 +670,7 @@ CONFIG_EISA_PCI_EISA=y
 CONFIG_EISA_VIRTUAL_ROOT=y
 CONFIG_EISA_NAMES=y
 # CONFIG_SCx200 is not set
+CONFIG_APULED=y
 # CONFIG_ALIX is not set
 # CONFIG_NET5501 is not set
 # CONFIG_GEOS is not set
@@ -1105,7 +1106,7 @@ CONFIG_L2TP_V3=y
 CONFIG_L2TP_IP=m
 CONFIG_L2TP_ETH=m
 CONFIG_STP=y
-CONFIG_GARP=y
+CONFIG_GARP=m
 CONFIG_BRIDGE=y
 CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
@@ -1537,6 +1538,7 @@ CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
 # CONFIG_SCSI_FLASHPOINT is not set
 CONFIG_VMWARE_PVSCSI=m
+CONFIG_HYPERV_STORAGE=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
 CONFIG_FCOE=m
@@ -1728,6 +1730,7 @@ 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
@@ -2313,6 +2316,7 @@ CONFIG_MWIFIEX_USB=m
 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
@@ -3910,6 +3914,7 @@ CONFIG_XEN_FBDEV_FRONTEND=m
 # 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
@@ -4216,6 +4221,7 @@ CONFIG_HID_SPEEDLINK=m
 # CONFIG_HID_STEELSERIES is not set
 CONFIG_HID_SUNPLUS=m
 # 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
@@ -4493,17 +4499,18 @@ CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_LM3530=m
 CONFIG_LEDS_LM3533=m
 CONFIG_LEDS_LM3642=m
-# CONFIG_LEDS_PCA9532 is not set
-# CONFIG_LEDS_GPIO is not set
+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 is not set
+CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA9633=m
-# CONFIG_LEDS_BD2802 is not set
+CONFIG_LEDS_BD2802=m
 CONFIG_LEDS_INTEL_SS4200=m
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_DELL_NETBOOKS=m
@@ -4643,7 +4650,6 @@ CONFIG_DMA_ACPI=y
 #
 # DMA Clients
 #
-CONFIG_NET_DMA=y
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
 CONFIG_DCA=m
@@ -4672,7 +4678,9 @@ CONFIG_VIRTIO_MMIO=m
 #
 # Microsoft Hyper-V guest support
 #
-# CONFIG_HYPERV is not set
+CONFIG_HYPERV=m
+CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_BALLOON=m
 
 #
 # Xen driver support
@@ -4711,7 +4719,8 @@ CONFIG_ECHO=m
 # CONFIG_RTL8192U 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_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
index c0b780a0624080ea73373376626127356e99b77f..8899310aaa8cad97f950b22fdd38663ab679a9e9 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',
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'}",
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b78fc32d701c90c32008ec72fddc099b950b164f 100644 (file)
@@ -0,0 +1,6 @@
+ENABLED=off
+ENABLED_BLUE=off
+ENABLED_ORANGE=off
+DDEST_PORT=1149
+DPROTOCOL=udp
+VPN_IP=
index 8f5c8c0ad6702c48a8ed6c00ffe6d8f41943a69e..092a16f8ee50ea9f63b0d76fa5fb70f6ac9542ec 100644 (file)
@@ -606,6 +606,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
@@ -1330,12 +1331,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.4.8
 #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.2
 #usr/lib/pkgconfig/apr-1.pc
 #usr/lib/pkgconfig/apr-util-1.pc
 #usr/sbin/ab
@@ -1391,10 +1392,12 @@ 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/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
index ca3defcb01f66c419aa853a5952eb142b7619dab..9c41aba9a6480896071e3ff109e3ee94ead46bd0 100644 (file)
@@ -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..545386197cfaafdf6d8cd36341db33242df1f5c7 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
index 1b8fbda0066c8d46c671191a7655812b98df472e..4716b9726ec325f6e568b86dc433570c854bec5c 100644 (file)
@@ -74,14 +74,12 @@ 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-forwardfwctrl
 etc/rc.d/init.d/networking/red.up/23-RS-snort
 etc/rc.d/init.d/networking/red.up/24-RS-qos
 etc/rc.d/init.d/networking/red.up/27-RS-squid
@@ -90,7 +88,6 @@ 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
@@ -106,6 +103,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
@@ -211,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
@@ -223,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
index 3b8dd3a70079a6d21359614aaeb2c683d4c70e16..b9040c37882b150cafb56ce83eca12005943d3ec 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_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.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 60374aad0989e2dec37371dbe6bc205e2dbfffe4..cb6858f77e149d2cccf21a51ab8c61ae62e4dbd8 100644 (file)
@@ -2,6 +2,31 @@ 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.conf
@@ -10,14 +35,19 @@ 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
@@ -29,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
@@ -49,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
@@ -58,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
@@ -76,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
@@ -102,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
@@ -112,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
@@ -128,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
@@ -142,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
@@ -203,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
@@ -318,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
@@ -329,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
@@ -337,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
@@ -358,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
@@ -367,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
@@ -377,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
@@ -385,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
@@ -422,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
@@ -440,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
@@ -501,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
@@ -521,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
@@ -599,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
@@ -647,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
@@ -663,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
@@ -693,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
@@ -702,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
@@ -712,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
@@ -725,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
@@ -734,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
@@ -769,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
@@ -879,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
@@ -888,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
@@ -896,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
@@ -913,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
@@ -936,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
@@ -961,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
@@ -978,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
@@ -990,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
@@ -1008,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
@@ -1056,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
@@ -1070,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
@@ -1077,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
@@ -1087,60 +1350,141 @@ 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/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
@@ -1148,18 +1492,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
@@ -1167,7 +1512,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
@@ -1194,6 +1539,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
@@ -1202,19 +1549,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
@@ -1235,77 +1581,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
@@ -1314,44 +1663,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
@@ -1360,11 +1714,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
@@ -1372,31 +1724,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
@@ -1410,7 +1758,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
@@ -1426,154 +1773,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
@@ -1594,7 +1951,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
@@ -1612,64 +1968,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
@@ -1682,17 +2019,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
@@ -1700,12 +2041,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
@@ -1713,28 +2056,31 @@ 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/ipvs/ip_vs_dh.ko
@@ -1749,7 +2095,6 @@ lib/modules/KVER-ipfire-kirkwood
 #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.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
@@ -1766,33 +2111,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
@@ -1800,18 +2163,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
@@ -1822,20 +2187,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
@@ -1847,6 +2213,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
@@ -1855,6 +2222,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
@@ -1862,8 +2230,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
@@ -1871,6 +2241,7 @@ 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_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
@@ -1878,11 +2249,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
@@ -1891,7 +2268,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
@@ -1908,6 +2284,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
@@ -1934,12 +2311,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
@@ -1948,6 +2323,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
@@ -2048,15 +2425,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
@@ -2080,19 +2458,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
index e047c9f4aa686bb42f28c3cdd36dfe6de33fdeec..89107a3349916082f554708ebaa0ca792f751e4e 100644 (file)
@@ -11,13 +11,6 @@ boot/dtb-KVER-ipfire-multi
 #boot/dtb-KVER-ipfire-multi/armada-xp-db.dtb
 #boot/dtb-KVER-ipfire-multi/armada-xp-gp.dtb
 #boot/dtb-KVER-ipfire-multi/armada-xp-openblocks-ax3-4.dtb
-#boot/dtb-KVER-ipfire-multi/bcm11351-brt.dtb
-#boot/dtb-KVER-ipfire-multi/bcm2835-rpi-b.dtb
-#boot/dtb-KVER-ipfire-multi/ccu9540.dtb
-#boot/dtb-KVER-ipfire-multi/ecx-2000.dtb
-#boot/dtb-KVER-ipfire-multi/highbank.dtb
-#boot/dtb-KVER-ipfire-multi/hrefprev60.dtb
-#boot/dtb-KVER-ipfire-multi/hrefv60plus.dtb
 #boot/dtb-KVER-ipfire-multi/imx25-karo-tx25.dtb
 #boot/dtb-KVER-ipfire-multi/imx25-pdk.dtb
 #boot/dtb-KVER-ipfire-multi/imx27-apf27.dtb
@@ -37,11 +30,12 @@ boot/dtb-KVER-ipfire-multi
 #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/marco-evb.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
@@ -57,31 +51,10 @@ boot/dtb-KVER-ipfire-multi
 #boot/dtb-KVER-ipfire-multi/omap4-sdp.dtb
 #boot/dtb-KVER-ipfire-multi/omap4-var-som.dtb
 #boot/dtb-KVER-ipfire-multi/omap5-evm.dtb
-#boot/dtb-KVER-ipfire-multi/prima2-evb.dtb
-#boot/dtb-KVER-ipfire-multi/snowball.dtb
-#boot/dtb-KVER-ipfire-multi/socfpga_cyclone5.dtb
-#boot/dtb-KVER-ipfire-multi/socfpga_vt.dtb
-#boot/dtb-KVER-ipfire-multi/spear1310-evb.dtb
-#boot/dtb-KVER-ipfire-multi/spear1340-evb.dtb
 #boot/dtb-KVER-ipfire-multi/sun4i-a10-cubieboard.dtb
 #boot/dtb-KVER-ipfire-multi/sun4i-a10-hackberry.dtb
 #boot/dtb-KVER-ipfire-multi/sun4i-a10-mini-xplus.dtb
 #boot/dtb-KVER-ipfire-multi/sun5i-a13-olinuxino.dtb
-#boot/dtb-KVER-ipfire-multi/tegra114-dalmore.dtb
-#boot/dtb-KVER-ipfire-multi/tegra114-pluto.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-harmony.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-iris-512.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-medcom-wide.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-paz00.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-plutux.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-seaboard.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-tec.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-trimslice.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-ventana.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-whistler.dtb
-#boot/dtb-KVER-ipfire-multi/tegra30-beaver.dtb
-#boot/dtb-KVER-ipfire-multi/tegra30-cardhu-a02.dtb
-#boot/dtb-KVER-ipfire-multi/tegra30-cardhu-a04.dtb
 #boot/dtb-KVER-ipfire-multi/vexpress-v2p-ca15-tc1.dtb
 #boot/dtb-KVER-ipfire-multi/vexpress-v2p-ca15_a7.dtb
 #boot/dtb-KVER-ipfire-multi/vexpress-v2p-ca5s.dtb
@@ -94,7 +67,6 @@ boot/dtb-KVER-ipfire-multi
 #boot/dtb-KVER-ipfire-multi/zynq-zc702.dtb
 boot/vmlinuz-KVER-ipfire-multi
 boot/zImage-ipfire-multi
-boot/uInit-ipfire-multi
 lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/build
 #lib/modules/KVER-ipfire-multi/kernel
@@ -102,7 +74,11 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/arch/arm
 #lib/modules/KVER-ipfire-multi/kernel/arch/arm/crypto
 #lib/modules/KVER-ipfire-multi/kernel/arch/arm/crypto/aes-arm.ko
-#lib/modules/KVER-ipfire-multi/kernel/arch/arm/crypto/sha1-arm.ko
+#lib/modules/KVER-ipfire-multi/kernel/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
@@ -151,7 +127,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/crypto/salsa20_generic.ko
 #lib/modules/KVER-ipfire-multi/kernel/crypto/seed.ko
 #lib/modules/KVER-ipfire-multi/kernel/crypto/serpent_generic.ko
-#lib/modules/KVER-ipfire-multi/kernel/crypto/sha1_generic.ko
 #lib/modules/KVER-ipfire-multi/kernel/crypto/sha512_generic.ko
 #lib/modules/KVER-ipfire-multi/kernel/crypto/tcrypt.ko
 #lib/modules/KVER-ipfire-multi/kernel/crypto/tea.ko
@@ -166,68 +141,13 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/crypto/zlib.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers
 #lib/modules/KVER-ipfire-multi/kernel/drivers/ata
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/acard-ahci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/ahci_imx.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/ata/ahci_platform.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/ata_generic.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_ali.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_amd.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/libahci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_arasan_cf.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_artop.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_atiixp.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_atp867x.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cmd640.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cmd64x.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cs5520.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cs5530.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cs5536.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_cypress.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_efar.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_hpt366.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_hpt37x.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_hpt3x2n.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_hpt3x3.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_imx.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_it8213.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_it821x.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_jmicron.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_marvell.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_mpiix.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_netcell.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_ninja32.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_ns87410.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_ns87415.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_of_platform.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_oldpiix.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_opti.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_optidma.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_pdc2027x.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_pdc202xx_old.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_piccolo.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_platform.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_rdc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_rz1000.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_sch.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_serverworks.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_sil680.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_sis.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_sl82c105.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_triflex.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pata_via.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/pdc_adma.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_highbank.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_inic162x.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_mv.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_nv.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_promise.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_qstor.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_sil.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_sil24.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_sis.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_svw.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_sx4.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_uli.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_via.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/ata/sata_vsc.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/atm
 #lib/modules/KVER-ipfire-multi/kernel/drivers/atm/atmtcp.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/atm/eni.ko
@@ -240,16 +160,7 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/atm/solos-pci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/atm/suni.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/block
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/DAC960.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/cciss.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/block/cryptoloop.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/mg_disk.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/nvme.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/rsxx
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/rsxx/rsxx.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/sx8.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/umem.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/virtio_blk.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth
 #lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/ath3k.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/bcm203x.ko
@@ -262,33 +173,28 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/btwilink.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/hci_uart.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/hci_vhci.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/bus
-#lib/modules/KVER-ipfire-multi/kernel/drivers/bus/omap-ocp2scp.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char/hw_random
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char/hw_random/atmel-rng.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char/hw_random/exynos-rng.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char/hw_random/timeriomem-rng.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/char/hw_random/virtio-rng.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi/ipmi_devintf.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi/ipmi_msghandler.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi/ipmi_poweroff.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi/ipmi_si.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/char/ipmi/ipmi_watchdog.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/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/clk/clk-twl6040.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/crypto/omap-aes.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/crypto/omap-sham.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/crypto/tegra-aes.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/dma
-#lib/modules/KVER-ipfire-multi/kernel/drivers/dma/imx-dma.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/dma/imx-sdma.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/dma/timb_dma.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/firewire
 #lib/modules/KVER-ipfire-multi/kernel/drivers/firewire/firewire-core.ko
@@ -296,16 +202,11 @@ lib/modules/KVER-ipfire-multi
 #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-twl4030.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpio/gpio-twl6040.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpio/gpio-viperboard.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpu
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/ast
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/ast/ast.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/cirrus
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/cirrus/cirrus.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/drm.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/drm_kms_helper.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/drm_usb.ko
@@ -315,32 +216,12 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/i2c/ch7006.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/i2c/sil164.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/i2c/tda998x.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/mga
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/mga/mga.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/mgag200
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/mgag200/mgag200.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/nouveau
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/nouveau/nouveau.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/omapdrm
 #lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/omapdrm/omapdrm.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/qxl
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/qxl/qxl.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/r128
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/r128/r128.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/radeon
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/radeon/radeon.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/savage
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/savage/savage.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/tdfx
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/tdfx/tdfx.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/ttm
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/ttm/ttm.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/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/gpu/drm/via
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/via/via.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/vmwgfx
-#lib/modules/KVER-ipfire-multi/kernel/drivers/gpu/drm/vmwgfx/vmwgfx.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hid
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-aureal.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hid/hid-gyration.ko
@@ -411,14 +292,12 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/gl520sm.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/hih6130.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/hwmon-vid.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/i5k_amb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ibmaem.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ibmpex.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ina209.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ina2xx.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/it87.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lineage-pem.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm63.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm73.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm75.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm77.ko
@@ -466,7 +345,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sch56xx-common.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sht15.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sht21.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sis5595.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/smsc47b397.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/smsc47m1.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/smsc47m192.ko
@@ -474,9 +352,8 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/tmp102.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/tmp401.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/tmp421.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/via686a.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/twl4030-madc-hwmon.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/vt1211.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/vt8231.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83627ehf.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83627hf.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83781d.ko
@@ -486,37 +363,21 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83795.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83l785ts.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/w83l786ng.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwspinlock
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwspinlock/hwspinlock_core.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwspinlock/omap_hwspinlock.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/algos
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/algos/i2c-algo-bit.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/algos/i2c-algo-pca.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-ali1535.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-ali1563.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-ali15x3.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-amd756.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-amd8111.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-cbus-gpio.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-diolan-u2c.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-i801.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-gpio.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-imx.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-isch.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-mv64xxx.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-nforce2.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-parport-light.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-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-piix4.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-simtec.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-sis5595.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-sis630.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-sis96x.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-tiny-usb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-versatile.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-via.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-viapro.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/busses/i2c-viperboard.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/i2c-dev.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/i2c/i2c-smbus.ko
@@ -529,14 +390,13 @@ lib/modules/KVER-ipfire-multi
 #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.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/gpio_keys_polled.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/imx_keypad.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/lm8333.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/omap4-keypad.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/tegra-kbc.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/input/keyboard/twl4030_keypad.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/input/matrix-keymap.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/input/misc
@@ -544,15 +404,17 @@ lib/modules/KVER-ipfire-multi
 #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/gpio_mouse.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/psmouse.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/sermouse.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/input/mouse/synaptics_i2c.ko
@@ -572,50 +434,17 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/capi/kernelcapi.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/divert
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/divert/dss1_divert.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/gigaset
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/gigaset/gigaset.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm/b1.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm/b1dma.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm/b1pci.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm/c4.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/avm/t1pci.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon/diva_idi.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon/diva_mnt.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon/divacapi.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon/divadidd.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/eicon/divas.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/avmfritz.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/hfcmulti.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/hfcpci.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/hfcsusb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/mISDNinfineon.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/mISDNipac.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/mISDNisar.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/netjet.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/speedfax.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hardware/mISDN/w6692.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hfc4s8s_l1.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hfc_usb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hisax.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hisax_fcpcipnp.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hisax_isac.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hisax/hisax_st5481.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hysdn
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/hysdn/hysdn.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/i4l
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/i4l/isdn.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/i4l/isdn_bsdcomp.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/i4l/isdnhdlc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/mISDN
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/mISDN/l1oip.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/mISDN/mISDN_core.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/isdn/mISDN/mISDN_dsp.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/leds
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/leds-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
@@ -628,14 +457,17 @@ lib/modules/KVER-ipfire-multi
 #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-default-on.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-gpio.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/leds/trigger/ledtrig-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
@@ -688,7 +520,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/au8522_dig.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/bcm3510.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx22700.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx22702.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx24110.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx24113.ko
@@ -770,8 +601,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/zl10036.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/zl10039.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/zl10353.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/firewire
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/firewire/firedtv.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/adv7180.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/cs5345.ko
@@ -781,7 +610,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/m52790.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/msp3400.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/mt9v011.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/ov7670.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/saa6588.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/saa7115.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/saa7127.ko
@@ -812,9 +640,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/vp27smpx.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/wm8739.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/wm8775.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/mmc
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/mmc/siano
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/mmc/siano/smssdio.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/b2c2
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
@@ -841,6 +666,8 @@ lib/modules/KVER-ipfire-multi
 #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
@@ -878,27 +705,15 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/coda.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci/dm644x_ccdc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci/vpfe_capture.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci/vpss.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/m2m-deinterlace.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/marvell-ccic
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/omap
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/omap/omap-vout.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/sh_veu.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/mx3_camera.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/soc_camera.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/timblogiw.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ati_remote.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/gpio-ir-recv.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/iguanair.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/imon.ko
@@ -1139,7 +954,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_stv0680.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_t613.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_topro.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_vicam.ko
@@ -1171,11 +985,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tm6000/tm6000.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-budget
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-dec
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-dec/ttusb_dec.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-dec/ttusbdecfe.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/usbvision
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/usbvision/usbvision.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/uvc
@@ -1186,8 +995,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/tuner.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/v4l2-int-device.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-core.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
@@ -1195,53 +1002,21 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memory
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memory/emif.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/memstick
 #lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/core
 #lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/core/memstick.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/core/mspro_block.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/jmb38x_ms.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/r592.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/rtsx_pci_ms.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/tifm_ms.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptbase.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptctl.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptfc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptsas.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptscsih.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptspi.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_block.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_bus.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_core.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_proc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_scsi.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mfd
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/88pm800.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/88pm805.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/88pm80x.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lm3533-core.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lm3533-ctrlbank.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lpc_ich.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lpc_sch.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/max8907.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/retu-mfd.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/rtsx_pci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/sm501.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/twl4030-madc.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/viperboard.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/vx855.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/wl1273-core.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/altera-stapl
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/altera-stapl/altera-stapl.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/bmp085-i2c.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/cb710
-#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/cb710/cb710.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/ds1682.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/dummy-irq.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/eeprom
@@ -1251,58 +1026,28 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/eeprom/max6875.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/enclosure.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/fsa9480.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/hpilo.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/ics932s401.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/pch_phub.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/ti-st
 #lib/modules/KVER-ipfire-multi/kernel/drivers/misc/ti-st/st_drv.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/tifm_7xx1.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/tifm_core.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/cb710-mmc.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/dw_mmc-exynos.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/dw_mmc-pci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/dw_mmc-pltfm.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/dw_mmc.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/mmci.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/mvsdio.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/mxcmmc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/rtsx_pci_sdmmc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-esdhc-imx.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-pci.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-pltfm.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-pxav2.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-pxav3.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-sirf.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/sdhci-tegra.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/tifm_sd.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/ushc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/via-sdmmc.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/vub300.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mmc/host/wmt-sdmmc.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mtd
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/chips
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/chips/map_ram.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/devices
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/devices/phram.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/devices/slram.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/maps
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/maps/plat-ram.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/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/mtd/nand/orion_nand.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/sm_ftl.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_nandbiterrs.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_nandecctest.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_oobtest.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_pagetest.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_readtest.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_speedtest.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_stresstest.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_subpagetest.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mtd/tests/mtd_torturetest.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/bonding
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/bonding/bonding.ko
@@ -1431,6 +1176,9 @@ lib/modules/KVER-ipfire-multi
 #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
@@ -1555,7 +1303,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/usbnet.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/zaurus.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/veth.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/virtio_net.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/vmxnet3
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/vmxnet3/vmxnet3.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/vxlan.ko
@@ -1566,8 +1313,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ar5523
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath5k
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
@@ -1575,8 +1320,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/carl9170
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/wil6210
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/atmel.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/atmel_pci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/b43
@@ -1630,19 +1373,15 @@ lib/modules/KVER-ipfire-multi
 #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/rt2400pci.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2x00mmio.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtl818x
 #lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/rtl818x/rtl8180
@@ -1679,57 +1418,29 @@ lib/modules/KVER-ipfire-multi
 #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/aat2870-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/ad5398.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/anatop-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/as3711-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/da903x.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/da9052-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/da9055-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/fan53555.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/isl6271a-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/lp3971.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/lp3972.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/lp8755.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max1586.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max77686.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8649.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8660.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8907-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8925-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8952.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8973-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8997.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/max8998.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/palmas-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/rc5t583-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/s2mps11.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/s5m8767.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps51632-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps62360-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps65023-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps6507x-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps65090-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps6586x-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps65910-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps65912-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/tps80031-regulator.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/vexpress.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm831x-dcdc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm831x-isink.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm831x-ldo.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm8350-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm8400-regulator.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/regulator/wm8994-regulator.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc
+#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-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
@@ -1754,7 +1465,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-msm6242.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-mv.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-mxc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-omap.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pcf8523.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pcf8563.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pcf8583.ko
@@ -1767,7 +1477,6 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-rx8581.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-snvs.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-stk17ta8.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-tegra.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-v3020.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-vt8500.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-x1205.ko
@@ -1785,6 +1494,7 @@ lib/modules/KVER-ipfire-multi
 #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
@@ -1826,12 +1536,11 @@ lib/modules/KVER-ipfire-multi
 #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_mbox.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/megaraid/megaraid_mm.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/megaraid/megaraid_sas.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mpt2sas
 #lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mpt2sas/mpt2sas.ko
@@ -1839,6 +1548,8 @@ lib/modules/KVER-ipfire-multi
 #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
@@ -1852,6 +1563,7 @@ lib/modules/KVER-ipfire-multi
 #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
@@ -1868,44 +1580,32 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ufs/ufshcd-pci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ufs/ufshcd-pltfrm.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/ufs/ufshcd.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/virtio_scsi.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/ssb
 #lib/modules/KVER-ipfire-multi/kernel/drivers/ssb/ssb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/staging
 #lib/modules/KVER-ipfire-multi/kernel/drivers/staging/ced1401
 #lib/modules/KVER-ipfire-multi/kernel/drivers/staging/ced1401/cedusb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/echo
-#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/echo/echo.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/et131x
-#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/et131x/et131x.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/fwserial
-#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/fwserial/firewire-serial.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/silicom
-#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/silicom/bpctl_mod.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/silicom/bypasslib
-#lib/modules/KVER-ipfire-multi/kernel/drivers/staging/silicom/bypasslib/bypass.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/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/cyclades.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/tty/n_gsm.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/tty/n_hdlc.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/tty/n_r3964.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/nozomi.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/rocket.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial
 #lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/arc_uart.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/jsm
-#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/jsm/jsm.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/rp2.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/tty/serial/sccnxp.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/synclink_gt.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/tty/synclinkmp.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/uio
 #lib/modules/KVER-ipfire-multi/kernel/drivers/uio/uio.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uio/uio_aec.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uio/uio_pci_generic.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uio/uio_sercos3.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/atm
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/atm/cxacru.ko
@@ -1931,14 +1631,9 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/dwc3/dwc3.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/ehci-mxc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/ehci-orion.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/hwa-hc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/imx21-hcd.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/isp1362-hcd.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/sl811-hcd.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/ssb-hcd.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/whci
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/whci/whci-hcd.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/image
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/image/mdc800.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/image/microtek.ko
@@ -1955,19 +1650,20 @@ lib/modules/KVER-ipfire-multi
 #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-ab8500-usb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-gpio-vbus-usb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-isp1301.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-mxs-usb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-nop.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-omap-control.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-omap-usb2.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-omap-usb3.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/phy/phy-rcar-usb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/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
@@ -2020,83 +1716,26 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-sddr09.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-sddr55.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/usb/storage/ums-usbat.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/wusbcore
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/wusbcore/wusb-cbaf.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/wusbcore/wusb-wa.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/wusbcore/wusbcore.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/hwa-rc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/i1480
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/i1480/dfu
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/i1480/dfu/i1480-dfu-usb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/i1480/i1480-est.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/umc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/uwb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/whc-rc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/uwb/whci.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/video
 #lib/modules/KVER-ipfire-multi/kernel/drivers/video/amba-clcd.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/arkfb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/aty
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/aty/atyfb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/auo_k1900fb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/auo_k1901fb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/auo_k190x.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/video/backlight
 #lib/modules/KVER-ipfire-multi/kernel/drivers/video/backlight/lcd.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/broadsheetfb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/carminefb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/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/cirrusfb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/console
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/console/font.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/cyber2000fb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/fb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/fb_ddc.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/video/fb_sys_fops.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/i740fb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/kyro
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/kyro/kyrofb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/macmodes.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/i2c-matroxfb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/matroxfb_DAC1064.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/matroxfb_Ti3026.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/matroxfb_accel.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/matroxfb_base.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/matrox/matroxfb_misc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/mb862xx
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/mb862xx/mb862xxfb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/metronomefb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/mx3fb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/neofb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2
 #lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2/displays
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/omap2/displays/panel-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/output.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/pm2fb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/pm3fb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/riva
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/riva/rivafb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/s1d13xxxfb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/s3fb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/savage
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/savage/savagefb.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/video/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/video/sstfb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/svgalib.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/syscopyarea.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/sysfillrect.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/sysimgblt.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/tridentfb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/udlfb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/vgastate.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/video/vt8623fb.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/virtio
-#lib/modules/KVER-ipfire-multi/kernel/drivers/virtio/virtio_balloon.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/w1
 #lib/modules/KVER-ipfire-multi/kernel/drivers/w1/masters
 #lib/modules/KVER-ipfire-multi/kernel/drivers/w1/masters/ds1wm.ko
@@ -2118,14 +1757,14 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/drivers/w1/slaves/w1_therm.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/w1/wire.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog
-#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/alim7101_wdt.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/i6300esb.ko
 #lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/imx2_wdt.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/pcwd_pci.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/watchdog/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/wdt_pci.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
@@ -2225,6 +1864,7 @@ lib/modules/KVER-ipfire-multi
 #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
@@ -2242,6 +1882,10 @@ lib/modules/KVER-ipfire-multi
 #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
@@ -2509,7 +2153,7 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/net/openvswitch
 #lib/modules/KVER-ipfire-multi/kernel/net/openvswitch/openvswitch.ko
 #lib/modules/KVER-ipfire-multi/kernel/net/rfkill
-#lib/modules/KVER-ipfire-multi/kernel/net/rfkill/rfkill.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/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
@@ -2612,13 +2256,12 @@ lib/modules/KVER-ipfire-multi
 #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/firewire
-#lib/modules/KVER-ipfire-multi/kernel/sound/firewire/snd-firewire-lib.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/firewire/snd-firewire-speakers.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/i2c
 #lib/modules/KVER-ipfire-multi/kernel/sound/i2c/other
 #lib/modules/KVER-ipfire-multi/kernel/sound/i2c/other/snd-ak4113.ko
@@ -2735,60 +2378,32 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/atmel
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/atmel/snd-soc-atmel-pcm.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-ab8500-codec.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-alc5632.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-dmic.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-omap-hdmi-codec.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-sgtl5000.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-tlv320aic23.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-tlv320aic3x.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-tpa6130a2.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-twl4030.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-twl6040.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-wm8903.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-wm9712.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/dwc
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/dwc/designware_i2s.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-eukrea-tlv320.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-fsl-ssi.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-fsl-utils.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-audmux.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-pcm.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-sgtl5000.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-ssi.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/generic
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/generic/snd-soc-simple-card.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-am3517evm.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-abe-twl6040.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-dmic.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-hdmi-card.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-hdmi.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-mcbsp.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-mcpdm.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-twl4030.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap3pandora.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-rx51.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soc/snd-soc-core.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-alc5632.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-pcm.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-trimslice.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-utils.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-wm8903.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-wm9712.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-ac97.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-das.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-i2s.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-spdif.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra30-ahub.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra30-i2s.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500/snd-soc-ux500-mach-mop500.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500/snd-soc-ux500-plat-dma.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500/snd-soc-ux500-plat-msp-i2s.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/soundcore.ko
 #lib/modules/KVER-ipfire-multi/kernel/sound/synth
 #lib/modules/KVER-ipfire-multi/kernel/sound/synth/emux
@@ -2806,17 +2421,13 @@ lib/modules/KVER-ipfire-multi
 #lib/modules/KVER-ipfire-multi/modules.alias
 #lib/modules/KVER-ipfire-multi/modules.alias.bin
 #lib/modules/KVER-ipfire-multi/modules.builtin
-#lib/modules/KVER-ipfire-multi/modules.ccwmap
+#lib/modules/KVER-ipfire-multi/modules.builtin.bin
 #lib/modules/KVER-ipfire-multi/modules.dep
 #lib/modules/KVER-ipfire-multi/modules.dep.bin
-#lib/modules/KVER-ipfire-multi/modules.ieee1394map
-#lib/modules/KVER-ipfire-multi/modules.inputmap
-#lib/modules/KVER-ipfire-multi/modules.isapnpmap
-#lib/modules/KVER-ipfire-multi/modules.ofmap
+#lib/modules/KVER-ipfire-multi/modules.devname
 #lib/modules/KVER-ipfire-multi/modules.order
-#lib/modules/KVER-ipfire-multi/modules.pcimap
-#lib/modules/KVER-ipfire-multi/modules.seriomap
+#lib/modules/KVER-ipfire-multi/modules.softdep
 #lib/modules/KVER-ipfire-multi/modules.symbols
 #lib/modules/KVER-ipfire-multi/modules.symbols.bin
-#lib/modules/KVER-ipfire-multi/modules.usbmap
 #lib/modules/KVER-ipfire-multi/source
+boot/uInit-ipfire-multi
index 602107994e16812e20d676a33cb6ead9855ea74c..98f513e9b09bc0ae86eac7b3e8e39c9dadee3db4 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,77 @@ 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/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 +1175,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 +1246,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 +1272,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 +1298,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 +1334,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 +1364,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 +1384,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 +1401,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 +1447,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 +1467,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 +1475,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 +1535,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 +1547,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 +1590,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 +1608,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,27 +1623,21 @@ 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
@@ -1237,7 +1653,6 @@ lib/modules/KVER-ipfire-rpi
 #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.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
@@ -1254,8 +1669,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
@@ -1265,22 +1692,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
@@ -1288,6 +1720,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
@@ -1300,6 +1733,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
@@ -1318,6 +1753,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
@@ -1336,6 +1775,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
@@ -1351,8 +1791,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
@@ -1360,6 +1802,7 @@ 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_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
@@ -1372,6 +1815,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
@@ -1379,6 +1824,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
@@ -1399,6 +1845,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
@@ -1421,6 +1868,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
@@ -1435,17 +1895,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 1048dc8182a91d6e838c060d79a06b220b3d7073..b139d7e732a416475e9bf41e07a6374517ade9c6 100644 (file)
@@ -1,8 +1,12 @@
+#boot/MLO
+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.bin
 #usr/share/u-boot/pandaboard/u-boot.img
 #usr/share/u-boot/wandboard_dl
 #usr/share/u-boot/wandboard_dl/u-boot.imx
diff --git a/config/rootfiles/common/armv5tel/u-boot-panda b/config/rootfiles/common/armv5tel/u-boot-panda
deleted file mode 100644 (file)
index 544d9d7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#boot/MLO
-#boot/u-boot.bin
-boot/boot.scr
-boot/boot.script
-boot/convert_bootscript
index b1097cd8956e2af376ba1b8081263308de3f5873..f50937016da4a4efa2003224c9fda32cfd744dd4 100644 (file)
@@ -50,9 +50,6 @@ var/ipfire/extrahd
 #var/ipfire/extrahd/scan
 #var/ipfire/extrahd/settings
 var/ipfire/firewall
-#var/ipfire/firewall/bin
-#var/ipfire/firewall/bin/firewall-lib.pl
-#var/ipfire/firewall/bin/rules.pl
 #var/ipfire/firewall/config
 #var/ipfire/firewall/dmz
 #var/ipfire/firewall/input
index d17d7dadd63b944cb8745b52f006e7f21839b149..8eb200d931e8832b0e758fe15133715efc133db7 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
index ca47f807c6851f587a21d23d747aeb803aaf0808..07a39f46350495efeb9ce8d6a3a8f0a267bc275b 100644 (file)
@@ -76,14 +76,12 @@ 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-forwardfwctrl
 etc/rc.d/init.d/networking/red.up/23-RS-snort
 etc/rc.d/init.d/networking/red.up/24-RS-qos
 etc/rc.d/init.d/networking/red.up/27-RS-squid
@@ -92,7 +90,6 @@ 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
@@ -108,6 +105,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
@@ -217,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
@@ -230,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
index 93ed5678ce5e1fc036b92f9a4b146c36da5a99e0..daaa17645f5b9cfc38e660d844b3257b285faf4a 100644 (file)
@@ -245,7 +245,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_powersave.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/cpufreq_stats.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
@@ -281,6 +281,7 @@ lib/modules/KVER-ipfire
 #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/gpio
+#lib/modules/KVER-ipfire/kernel/drivers/gpio/gpio-cs5535.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-ts5500.ko
@@ -367,6 +368,10 @@ lib/modules/KVER-ipfire
 #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
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/abituguru.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/abituguru3.ko
@@ -619,8 +624,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/isdn/mISDN/mISDN_dsp.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
@@ -632,6 +639,8 @@ lib/modules/KVER-ipfire
 #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-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-pca9633.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ss4200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-tca6507.ko
@@ -1505,6 +1514,8 @@ lib/modules/KVER-ipfire
 #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/macvlan.ko
@@ -1867,6 +1878,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/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
@@ -1951,6 +1963,8 @@ lib/modules/KVER-ipfire
 #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/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
@@ -2118,6 +2132,7 @@ lib/modules/KVER-ipfire
 #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/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
index 02aa457d31559086586f188971b2c516e1fba7cb..952e7ae8f625883bba6b071a867b3b150b52b7d9 100644 (file)
@@ -1 +1,2 @@
+etc/strongswan.d/charon/padlock.conf
 usr/lib/ipsec/plugins/libstrongswan-padlock.so
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
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 9515dc3a0088008c7f4aa1a1defea0a94a0d8608..76abbe8516bf6fdce0e1fe1bcc702e0be92ad719 100644 (file)
@@ -34,7 +34,7 @@ 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/digest_edirectory_auth
+usr/lib/squid/cert_valid.pl
 usr/lib/squid/digest_file_auth
 usr/lib/squid/digest_ldap_auth
 usr/lib/squid/diskd
@@ -1374,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
@@ -2148,6 +2149,7 @@ usr/lib/squid/mib.txt
 usr/lib/squid/negotiate_wrapper_auth
 usr/lib/squid/ntlm_fake_auth
 usr/lib/squid/ntlm_smb_lm_auth
+usr/lib/squid/storeid_file_rewrite
 usr/lib/squid/unlinkd
 usr/lib/squid/url_fake_rewrite
 usr/lib/squid/url_fake_rewrite.sh
@@ -2173,6 +2175,7 @@ usr/sbin/updxlrator
 #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/storeid_file_rewrite.8
 #var/cache/squid
 var/ipfire/proxy/errorpage-ipfire.css
 var/ipfire/proxy/errorpage-squid.css
@@ -2190,4 +2193,3 @@ var/log/cache
 var/log/squid/access.log
 var/log/updatexlrator
 #var/logs
-#var/run/squid
index 4286cec995660a72e0a1b92728a17d1cb738c03f..87649e9726b942db11496c458ac754032adf3ba7 100644 (file)
@@ -66,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
@@ -78,7 +81,6 @@ usr/local/bin/backupiso
 usr/local/bin/connscheduler
 usr/local/bin/consort.sh
 usr/local/bin/convert-ovpn
-usr/local/bin/dialctrl.pl
 usr/local/bin/hddshutdown
 usr/local/bin/httpscert
 usr/local/bin/makegraphs
@@ -91,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
index 0e18580d971897de1ebfb0cd7d6650a8d41000e5..9b61cd135ce4f7f97175bb448897027b2bf35030 100644 (file)
@@ -10,6 +10,57 @@ 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/xcbc.conf
+etc/strongswan.d/starter.conf
+etc/strongswan.d/tools.conf
 usr/bin/pki
 #usr/lib/ipsec
 #usr/lib/ipsec/libcharon.a
@@ -43,6 +94,7 @@ 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
@@ -51,6 +103,7 @@ 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
@@ -111,3 +164,58 @@ 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/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 3b9979b2e8972bcf03db3fb919e17c91b4ed260e..bc1cdaa1ff3ba1ceae448a37f13ed5b8314b6e85 100644 (file)
@@ -51,6 +51,7 @@ lib/udev
 #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
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 321a931ca5a55e6c7ac27da9449d937faceaae41..18e9b4d2433cbceb33fa5ac82618577040e4f66e 100644 (file)
@@ -1,17 +1,20 @@
-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/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/76/filelists/beep b/config/rootfiles/core/76/filelists/beep
new file mode 120000 (symlink)
index 0000000..6db094e
--- /dev/null
@@ -0,0 +1 @@
+../../../common/beep
\ No newline at end of file
index f0695341c2bff314cb14dae65676a2eccfe16e41..fcd2804b335d77b32184fdf746fba74404069ec4 100644 (file)
@@ -5,6 +5,7 @@ etc/rc.d/init.d/network
 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
@@ -17,7 +18,10 @@ 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/timezone-transition
 usr/local/bin/setddns.pl
+usr/sbin/updxlrator
 var/ipfire/backup/bin/backup.pl
 var/ipfire/backup/exclude
 var/ipfire/backup/include
index 3edde8eb302a4d3b09020a7a53b2cd166a89d9f2..e770307c14b1f0b57373e2661a639933a4a03c74 100644 (file)
@@ -1,5 +1,4 @@
 etc/rc.d/init.d/firewall
-etc/rc.d/init.d/networking/red.up/22-forwardfwctrl
 srv/web/ipfire/cgi-bin/firewall.cgi
 srv/web/ipfire/cgi-bin/fwhosts.cgi
 srv/web/ipfire/cgi-bin/optionsfw.cgi
@@ -9,19 +8,6 @@ usr/sbin/convert-outgoingfw
 usr/sbin/convert-portfw
 usr/sbin/convert-xtaccess
 usr/sbin/firewall-policy
-var/ipfire/firewall
-var/ipfire/firewall/bin/firewall-lib.pl
-var/ipfire/firewall/bin/rules.pl
-var/ipfire/firewall/config
-var/ipfire/firewall/input
-var/ipfire/firewall/outgoing
 var/ipfire/firewall/p2protocols
-var/ipfire/firewall/settings
-var/ipfire/fwhosts
-var/ipfire/fwhosts/customhosts
-var/ipfire/fwhosts/customnetworks
-var/ipfire/fwhosts/customgroups
-var/ipfire/fwhosts/customservices
-var/ipfire/fwhosts/customservicegrp
 var/ipfire/fwhosts/icmp-types
 var/ipfire/menu.d/50-firewall.menu
diff --git a/config/rootfiles/core/76/filelists/i586/strongswan-padlock b/config/rootfiles/core/76/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/76/filelists/ntp b/config/rootfiles/core/76/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/76/filelists/openssh b/config/rootfiles/core/76/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/76/filelists/rng-tools b/config/rootfiles/core/76/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/76/filelists/tzdata b/config/rootfiles/core/76/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/76/filelists/wpa_supplicant b/config/rootfiles/core/76/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
index cf0d2f96d85b87c619f203c5a19a3a752e02e2b9..a9055d320f213c09f43bc074e9e3de159a691c09 100644 (file)
@@ -71,7 +71,7 @@ esac
 
 #
 #
-KVER="3.10.27"
+KVER="xxxKVERxxx"
 MOUNT=`grep "kernel" /boot/grub/grub.conf 2>/dev/null | tail -n 1 `
 # Nur den letzten Parameter verwenden
 echo $MOUNT > /dev/null
@@ -110,6 +110,9 @@ 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
 
 # Backup the files
 tar cJvf /var/ipfire/backup/core-upgrade${core}_${KVER}.tar.xz \
@@ -140,6 +143,14 @@ rm -rf /lib/modules
 
 # Remove old usb_modeswitch_data
 rm -rf /usr/share/usb_modeswitch
+# Remove old tzdata
+rm -rf /usr/share/zoneinfo
+
+# 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.
@@ -192,6 +203,21 @@ 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 /
@@ -234,6 +260,7 @@ rm -rf /usr/lib/engines
 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
@@ -253,6 +280,21 @@ rm -f /srv/web/ipfire/cgi-bin/{dmzholes,outgoingfw,portfw,xtaccess}.cgi
 /sbin/iptables -t nat -N NAT_SOURCE 2>/dev/null
 /sbin/iptables -t nat -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
+
+# 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
@@ -262,8 +304,62 @@ rm -f /srv/web/ipfire/cgi-bin/{dmzholes,outgoingfw,portfw,xtaccess}.cgi
 # 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
@@ -294,6 +390,15 @@ if [ -e /var/ipfire/qos/enable ]; then
        /usr/local/bin/qosctrl start
 fi
 
+# Update crontab
+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
+fcrontab -z &>/dev/null
+
 
 case $(uname -m) in
        i?86 )
@@ -351,6 +456,9 @@ 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
+               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
 
@@ -359,6 +467,9 @@ 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
@@ -382,6 +493,7 @@ echo '/usr/bin/logger -p syslog.emerg -t ipfire "Check it before reboot !!!"' >>
 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 &
 
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
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 933000a034d101d5b492888f03f9d3b7d30fb28c..896eb167b7d7bfe52c81a2dd0f66a73db62184ed 100644 (file)
@@ -22,8 +22,8 @@ usr/lib/perl5/site_perl/5.12.3/Foomatic/DB.pm
 usr/lib/perl5/site_perl/5.12.3/Foomatic/Defaults.pm
 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/i586-linux-thread-multi/auto/Foomatic
-#usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/auto/Foomatic/.packlist
+#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/sbin/foomatic-addpjloptions
 usr/sbin/foomatic-cleanupdrivers
 usr/sbin/foomatic-extract-text
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
index b1973b9482e4a4c33bbd41d3381cce71ea33478a..242bc968dd4e1fb405aad14427dd52aa6241f950 100644 (file)
@@ -243,7 +243,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_powersave.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/cpufreq_stats.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
@@ -364,6 +364,10 @@ lib/modules/KVER-ipfire-pae
 #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
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/abituguru.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/abituguru3.ko
@@ -616,8 +620,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn/mISDN/mISDN_dsp.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
@@ -629,6 +635,8 @@ lib/modules/KVER-ipfire-pae
 #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-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-pca9633.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-ss4200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-tca6507.ko
@@ -1502,6 +1510,8 @@ lib/modules/KVER-ipfire-pae
 #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/macvlan.ko
@@ -1868,6 +1878,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/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
@@ -1952,6 +1963,8 @@ lib/modules/KVER-ipfire-pae
 #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/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
@@ -2119,6 +2132,7 @@ lib/modules/KVER-ipfire-pae
 #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/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
index b03ee11c73ebbcecb278720905f25e35e773e50c..0beaca8bd0a58d1b67b67846c72ccf3963fc0354 100644 (file)
@@ -299,4 +299,5 @@ usr/share/mysql
 #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
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-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/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
index 8caeb40c786746ca8641e202f4885638cb3e079c..672b15277a2196c387b4804da9f994d564cd25eb 100755 (executable)
Binary files a/config/u-boot/boot.scr and b/config/u-boot/boot.scr differ
index 4c9df1fa44ec9c1803e9cf66831807de847fd169..66d76282fc0d6175c279099252d9676dad9398a1 100755 (executable)
@@ -1,5 +1,7 @@
 fatload mmc 0:1 0x82000000 zImage-ipfire-multi
-fatload mmc 0:1 0x83600000 uInit-ipfire-multi
-fatload mmc 0:1 ${ftdaddr} omap4-${board_name}.dtb
-setenv bootargs vram=32M console=tty1 rootwait smsc95xx.macaddr=$usbethaddr root=/dev/mmcblk0p3 ro
-bootz 0x82000000 0x83600000 ${ftdaddr}
+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"
index cdfce26d8aa16813e99196c2de431aa42fc94381..91ff8a9665f665e97e31f15f93de460b05b1bc90 100644 (file)
@@ -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);
index 4a7c7f2a7e3500fd11a5ab6ba4fb05f3ecc40539..c08045037e994d308b9d2ddb5732abdd405721c3 100644 (file)
@@ -2,7 +2,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2013  Arne Fitzenreiter  <arne_f@ipfire.org>             #
+# 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        #
@@ -34,14 +34,14 @@ KRNDOWN=http://mirror0.ipfire.org/pakfire2/$VERSION/paks
 ######################
 #KERN_TYPE=xen
 #KVER=2.6.32.61
-#KERN_PACK=27
-#KRNDOWN=http://mirror0.ipfire.org/pakfire2/2.13/paks
+#KERN_PACK=28
+#KRNDOWN=http://mirror0.ipfire.org/pakfire2/2.15/paks
 ###############################################################################
 
-SIZEboot=30
+SIZEboot=64
 SIZEswap=512
-SIZEroot=512
-SIZEvar=950
+SIZEroot=1024
+SIZEvar=1024
 # ct'server does not support ext4 so change this to ext3.
 FSTYPE=ext4
 
@@ -166,7 +166,7 @@ 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
+echo "8:2345:respawn:/sbin/agetty xvc0 9600 --noclear" >> $MNThdd/etc/inittab
 
 #Disable some initskripts
 echo "#!/bin/sh" > $MNThdd/etc/rc.d/init.d/setclock
index 50cdc5af678fe00d7d00d197d803d0505cfc21eb..86c0dba5c56042ce5784b0bb4e4a61718627d309 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
@@ -58,6 +57,7 @@ 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
@@ -118,6 +118,7 @@ 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
@@ -134,12 +135,14 @@ 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: driver
@@ -205,6 +208,8 @@ 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
@@ -348,6 +353,7 @@ 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
@@ -392,10 +398,11 @@ 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
@@ -434,6 +441,7 @@ 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: reboot sure
 WARNING: translation string unused: refresh update list
@@ -520,6 +528,7 @@ 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
@@ -586,20 +595,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: advproxy cache-digest
 WARNING: untranslated string: bytes
 WARNING: untranslated string: community rules
 WARNING: untranslated string: dead peer detection
+WARNING: untranslated string: dns servers
+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: uplink
index 6a516c34f10f7ae3f42769050160f64ad7aeee37..8d4a556e6f548ea7ad4c3826f653a43162dd4e2a 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
@@ -59,6 +58,7 @@ 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
@@ -137,6 +137,7 @@ 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
@@ -155,12 +156,14 @@ 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
@@ -227,6 +230,8 @@ 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
@@ -373,6 +378,7 @@ 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
@@ -418,10 +424,11 @@ 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
@@ -461,6 +468,7 @@ 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
@@ -552,6 +560,7 @@ 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
@@ -620,15 +629,20 @@ 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: advproxy cache-digest
 WARNING: untranslated string: bytes
+WARNING: untranslated string: dns servers
+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 98f1137ff6cdb58ad37c231506022580c14bba7b..2718a1aed2e6599925d53e95e4b0819a69fcbf4b 100644 (file)
@@ -54,6 +54,7 @@ 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
@@ -148,12 +149,14 @@ 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
@@ -366,7 +369,6 @@ 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
@@ -409,6 +411,7 @@ 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
@@ -493,6 +496,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
@@ -547,6 +551,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
@@ -557,6 +562,7 @@ WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: year-graph
@@ -571,6 +577,7 @@ WARNING: untranslated string: advproxy errmsg invalid upstream proxy
 WARNING: untranslated string: advproxy errmsg proxy ports equal
 WARNING: untranslated string: advproxy proxy port transparent
 WARNING: untranslated string: attention
+WARNING: untranslated string: bit
 WARNING: untranslated string: bytes
 WARNING: untranslated string: ccd add
 WARNING: untranslated string: ccd choose net
@@ -585,6 +592,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
@@ -607,10 +616,18 @@ 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 ip
 WARNING: untranslated string: deprecated fs warn
+WARNING: untranslated string: details
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh name is invalid
 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
@@ -618,6 +635,7 @@ 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: dpd delay
 WARNING: untranslated string: dpd timeout
 WARNING: untranslated string: drop action
@@ -627,6 +645,8 @@ 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
@@ -645,6 +665,8 @@ WARNING: untranslated string: fireinfo why enable
 WARNING: untranslated string: fireinfo why read more
 WARNING: untranslated string: fireinfo your profile id
 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
@@ -668,9 +690,7 @@ 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 nosrcip
 WARNING: untranslated string: fwdfw err notgt
-WARNING: untranslated string: fwdfw err notgtip
 WARNING: untranslated string: fwdfw err prot_port
 WARNING: untranslated string: fwdfw err remark
 WARNING: untranslated string: fwdfw err ruleexists
@@ -685,6 +705,7 @@ 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
@@ -715,6 +736,7 @@ 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
@@ -788,16 +810,25 @@ 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: 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: 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
@@ -811,8 +842,14 @@ WARNING: untranslated string: openvpn subnet is used
 WARNING: untranslated string: other
 WARNING: untranslated string: outgoing firewall p2p allow
 WARNING: untranslated string: outgoing firewall p2p deny
+WARNING: untranslated string: ovpn crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh name
 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
@@ -840,10 +877,13 @@ 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: snat new source ip address
 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: tor
 WARNING: untranslated string: tor accounting
@@ -893,6 +933,8 @@ 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: visit us at
@@ -927,4 +969,5 @@ 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 a28120359505503f3b78514f8226b736cc630684..aaecb4031965839e6008a3de3780175bbb325a83 100644 (file)
@@ -54,6 +54,7 @@ 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
@@ -148,12 +149,14 @@ 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
@@ -377,7 +380,6 @@ 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
@@ -420,6 +422,7 @@ 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
@@ -504,6 +507,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
@@ -560,6 +564,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
@@ -582,6 +587,7 @@ WARNING: untranslated string: advproxy errmsg invalid upstream proxy
 WARNING: untranslated string: advproxy errmsg proxy ports equal
 WARNING: untranslated string: advproxy proxy port transparent
 WARNING: untranslated string: attention
+WARNING: untranslated string: bit
 WARNING: untranslated string: bytes
 WARNING: untranslated string: ccd add
 WARNING: untranslated string: ccd choose net
@@ -596,6 +602,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
@@ -618,11 +626,19 @@ 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 ip
 WARNING: untranslated string: deprecated fs warn
+WARNING: untranslated string: details
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh name is invalid
 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
@@ -630,6 +646,7 @@ 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: dpd delay
 WARNING: untranslated string: dpd timeout
 WARNING: untranslated string: drop action
@@ -639,6 +656,8 @@ 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
@@ -657,6 +676,8 @@ WARNING: untranslated string: fireinfo why enable
 WARNING: untranslated string: fireinfo why read more
 WARNING: untranslated string: fireinfo your profile id
 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
@@ -680,9 +701,7 @@ 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 nosrcip
 WARNING: untranslated string: fwdfw err notgt
-WARNING: untranslated string: fwdfw err notgtip
 WARNING: untranslated string: fwdfw err prot_port
 WARNING: untranslated string: fwdfw err remark
 WARNING: untranslated string: fwdfw err ruleexists
@@ -697,6 +716,7 @@ 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
@@ -727,6 +747,7 @@ 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
@@ -800,16 +821,25 @@ 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: 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: 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
@@ -823,6 +853,12 @@ 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: ovpn crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh name
+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
@@ -848,11 +884,14 @@ 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: snat new source ip address
 WARNING: untranslated string: snort working
 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: tor
 WARNING: untranslated string: tor accounting
@@ -902,6 +941,8 @@ 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
@@ -939,6 +980,7 @@ 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
@@ -957,6 +999,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 0ec13dc289281033ade9456009e29017179e314d..d318d7f92477776fb471efd8d36bf3bd6f8e68e5 100644 (file)
@@ -54,6 +54,7 @@ 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
@@ -150,12 +151,14 @@ 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
@@ -382,7 +385,6 @@ 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
@@ -425,6 +427,7 @@ 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
@@ -509,6 +512,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
@@ -563,6 +567,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
@@ -573,6 +578,7 @@ WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: year-graph
@@ -582,11 +588,22 @@ WARNING: untranslated string: addons
 WARNING: untranslated string: advproxy cache-digest
 WARNING: untranslated string: advproxy errmsg proxy ports equal
 WARNING: untranslated string: advproxy proxy port transparent
+WARNING: untranslated string: bit
 WARNING: untranslated string: bytes
+WARNING: untranslated string: ccd err isipsecrw
+WARNING: untranslated string: ccd err isovpnn2n
 WARNING: untranslated string: ccd iroute2
+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 ip
+WARNING: untranslated string: details
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh name is invalid
 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
@@ -594,6 +611,7 @@ 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: dpd delay
 WARNING: untranslated string: dpd timeout
 WARNING: untranslated string: drop action
@@ -602,7 +620,11 @@ WARNING: untranslated string: drop action2
 WARNING: untranslated string: drop forward
 WARNING: untranslated string: drop outgoing
 WARNING: untranslated string: encryption
+WARNING: untranslated string: entropy
+WARNING: untranslated string: entropy graphs
 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
@@ -626,9 +648,7 @@ 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 nosrcip
 WARNING: untranslated string: fwdfw err notgt
-WARNING: untranslated string: fwdfw err notgtip
 WARNING: untranslated string: fwdfw err prot_port
 WARNING: untranslated string: fwdfw err remark
 WARNING: untranslated string: fwdfw err ruleexists
@@ -643,6 +663,7 @@ 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
@@ -673,6 +694,7 @@ 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
@@ -746,17 +768,32 @@ 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: 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: 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 network
+WARNING: untranslated string: ovpn crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh name
+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 no connections
 WARNING: untranslated string: ovpn port in root range
@@ -768,9 +805,12 @@ 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: snat new source ip address
 WARNING: untranslated string: ssh
 WARNING: untranslated string: support donation
+WARNING: untranslated string: system has hwrng
+WARNING: untranslated string: system has rdrand
 WARNING: untranslated string: tor
 WARNING: untranslated string: tor accounting
 WARNING: untranslated string: tor accounting bytes
@@ -819,6 +859,8 @@ 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: wlan client
@@ -851,3 +893,4 @@ 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
index 98f1137ff6cdb58ad37c231506022580c14bba7b..2718a1aed2e6599925d53e95e4b0819a69fcbf4b 100644 (file)
@@ -54,6 +54,7 @@ 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
@@ -148,12 +149,14 @@ 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
@@ -366,7 +369,6 @@ 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
@@ -409,6 +411,7 @@ 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
@@ -493,6 +496,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
@@ -547,6 +551,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
@@ -557,6 +562,7 @@ WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: week-graph
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: year-graph
@@ -571,6 +577,7 @@ WARNING: untranslated string: advproxy errmsg invalid upstream proxy
 WARNING: untranslated string: advproxy errmsg proxy ports equal
 WARNING: untranslated string: advproxy proxy port transparent
 WARNING: untranslated string: attention
+WARNING: untranslated string: bit
 WARNING: untranslated string: bytes
 WARNING: untranslated string: ccd add
 WARNING: untranslated string: ccd choose net
@@ -585,6 +592,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
@@ -607,10 +616,18 @@ 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 ip
 WARNING: untranslated string: deprecated fs warn
+WARNING: untranslated string: details
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh name is invalid
 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
@@ -618,6 +635,7 @@ 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: dpd delay
 WARNING: untranslated string: dpd timeout
 WARNING: untranslated string: drop action
@@ -627,6 +645,8 @@ 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
@@ -645,6 +665,8 @@ WARNING: untranslated string: fireinfo why enable
 WARNING: untranslated string: fireinfo why read more
 WARNING: untranslated string: fireinfo your profile id
 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
@@ -668,9 +690,7 @@ 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 nosrcip
 WARNING: untranslated string: fwdfw err notgt
-WARNING: untranslated string: fwdfw err notgtip
 WARNING: untranslated string: fwdfw err prot_port
 WARNING: untranslated string: fwdfw err remark
 WARNING: untranslated string: fwdfw err ruleexists
@@ -685,6 +705,7 @@ 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
@@ -715,6 +736,7 @@ 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
@@ -788,16 +810,25 @@ 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: 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: 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
@@ -811,8 +842,14 @@ WARNING: untranslated string: openvpn subnet is used
 WARNING: untranslated string: other
 WARNING: untranslated string: outgoing firewall p2p allow
 WARNING: untranslated string: outgoing firewall p2p deny
+WARNING: untranslated string: ovpn crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh name
 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
@@ -840,10 +877,13 @@ 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: snat new source ip address
 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: tor
 WARNING: untranslated string: tor accounting
@@ -893,6 +933,8 @@ 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: visit us at
@@ -927,4 +969,5 @@ 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 b4043ad6e9c3457a322827e7684a1f3aa0a2f082..be721a37a737a2b6a437b2a24fd5017a18c2391c 100644 (file)
@@ -54,6 +54,7 @@ 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
@@ -147,12 +148,14 @@ 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
@@ -371,7 +374,6 @@ 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
@@ -414,6 +416,7 @@ 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
@@ -498,6 +501,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
@@ -552,6 +556,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
@@ -561,6 +566,7 @@ WARNING: translation string unused: vpn watch
 WARNING: translation string unused: warn when traffic reaches
 WARNING: translation string unused: web proxy configuration
 WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: wlanap wlan services
 WARNING: translation string unused: xtaccess all error
 WARNING: translation string unused: xtaccess bad transfert
 WARNING: translation string unused: yearly firewallhits
@@ -574,6 +580,7 @@ WARNING: untranslated string: advproxy errmsg invalid upstream proxy
 WARNING: untranslated string: advproxy errmsg proxy ports equal
 WARNING: untranslated string: advproxy proxy port transparent
 WARNING: untranslated string: attention
+WARNING: untranslated string: bit
 WARNING: untranslated string: bytes
 WARNING: untranslated string: ccd add
 WARNING: untranslated string: ccd choose net
@@ -588,6 +595,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
@@ -611,11 +620,19 @@ 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 ip
 WARNING: untranslated string: deprecated fs warn
+WARNING: untranslated string: details
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh name is invalid
 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
@@ -623,6 +640,7 @@ 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: dpd delay
 WARNING: untranslated string: dpd timeout
 WARNING: untranslated string: drop action
@@ -632,6 +650,8 @@ 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
@@ -640,6 +660,8 @@ WARNING: untranslated string: extrahd to
 WARNING: untranslated string: extrahd to root
 WARNING: untranslated string: extrahd you cant mount
 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
@@ -663,9 +685,7 @@ 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 nosrcip
 WARNING: untranslated string: fwdfw err notgt
-WARNING: untranslated string: fwdfw err notgtip
 WARNING: untranslated string: fwdfw err prot_port
 WARNING: untranslated string: fwdfw err remark
 WARNING: untranslated string: fwdfw err ruleexists
@@ -680,6 +700,7 @@ 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
@@ -710,6 +731,7 @@ 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
@@ -783,17 +805,26 @@ 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: 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: 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
@@ -806,6 +837,12 @@ WARNING: untranslated string: openvpn prefix remote subnet
 WARNING: untranslated string: openvpn subnet is used
 WARNING: untranslated string: other
 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 name
+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
@@ -830,10 +867,13 @@ 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: snat new source ip address
 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: tor
 WARNING: untranslated string: tor accounting
 WARNING: untranslated string: tor accounting bytes
@@ -882,6 +922,8 @@ 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: visit us at
@@ -916,4 +958,5 @@ 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 978c74f014e826ab7296ff779d5a69a75b569923..da4e66c0b1af931466c40e548c6ccc79d5e1a656 100644 (file)
@@ -59,6 +59,7 @@ 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
@@ -137,6 +138,7 @@ 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
@@ -155,12 +157,14 @@ 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
@@ -213,6 +217,7 @@ 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
@@ -224,6 +229,38 @@ 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 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 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
@@ -269,6 +306,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
@@ -387,7 +425,6 @@ 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
@@ -430,6 +467,7 @@ 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
@@ -520,6 +558,7 @@ 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
@@ -578,6 +617,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
@@ -588,194 +628,45 @@ 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: advproxy errmsg proxy ports equal
-WARNING: untranslated string: advproxy proxy port transparent
 WARNING: untranslated string: bytes
-WARNING: untranslated string: dead peer detection
-WARNING: untranslated string: default ip
-WARNING: untranslated string: dnat address
-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: ccd err isipsecrw
+WARNING: untranslated string: ccd err isovpnn2n
+WARNING: untranslated string: count
+WARNING: untranslated string: countries
+WARNING: untranslated string: country codes and flags
+WARNING: untranslated string: countrycode
+WARNING: untranslated string: details
+WARNING: untranslated string: dh
+WARNING: untranslated string: dh key warn
+WARNING: untranslated string: dh name is invalid
 WARNING: untranslated string: drop outgoing
-WARNING: untranslated string: encryption
-WARNING: untranslated string: firewall rules
-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 nosrcip
-WARNING: untranslated string: fwdfw err notgt
-WARNING: untranslated string: fwdfw err notgtip
-WARNING: untranslated string: fwdfw err prot_port
-WARNING: untranslated string: fwdfw err 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 iface
-WARNING: untranslated string: fwdfw log
-WARNING: untranslated string: fwdfw log rule
-WARNING: untranslated string: fwdfw menu
-WARNING: untranslated string: fwdfw movedown
-WARNING: untranslated string: fwdfw moveup
-WARNING: untranslated string: fwdfw newrule
-WARNING: untranslated string: fwdfw 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 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: entropy graphs
+WARNING: untranslated string: flag
+WARNING: untranslated string: fwdfw warn1
 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: grouptype
-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: least preferred
-WARNING: untranslated string: lifetime
-WARNING: untranslated string: most preferred
-WARNING: untranslated string: notice
-WARNING: untranslated string: openvpn network
-WARNING: untranslated string: ovpn mgmt in root range
-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: red1
+WARNING: untranslated string: gen dh
+WARNING: untranslated string: generate dh key
+WARNING: untranslated string: hardware support
+WARNING: untranslated string: last
+WARNING: untranslated string: no hardware random number generator
+WARNING: untranslated string: not a valid dh key
+WARNING: untranslated string: ovpn crypt options
+WARNING: untranslated string: ovpn dh
+WARNING: untranslated string: ovpn dh name
+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: snat new source ip address
-WARNING: untranslated string: ssh
-WARNING: untranslated string: support donation
-WARNING: untranslated string: tor directory port
-WARNING: untranslated string: tor errmsg invalid directory port
-WARNING: untranslated string: urlfilter redirect template
+WARNING: untranslated string: show dh
+WARNING: untranslated string: system has hwrng
+WARNING: untranslated string: system has rdrand
+WARNING: untranslated string: upload dh key
index 1324a4e61dc895b517ad0ea00a35a056177905b4..8e75f7ecb42e48cfe3fe09885f713225fc006f5d 100644 (file)
@@ -13,6 +13,7 @@
 # Checking cgi-bin translations for language: fr                           #
 ############################################################################
 < addon
+< advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
 < advproxy errmsg proxy ports equal
@@ -23,6 +24,7 @@
 < age sminute
 < age ssecond
 < attention
+< bit
 < ccd add
 < ccd choose net
 < ccd clientip
@@ -37,6 +39,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
+< count
+< countries
+< countrycode
+< country codes and flags
 < default ip
 < deprecated fs warn
+< details
+< dh
+< dh key warn
+< dh name is invalid
 < dnat address
 < dns address deleted txt
 < dnsforward
@@ -80,6 +92,8 @@
 < drop forward
 < drop outgoing
 < encryption
+< entropy
+< entropy graphs
 < fireinfo ipfire version
 < fireinfo is disabled
 < fireinfo is enabled
 < fireinfo why read more
 < fireinfo your profile id
 < firewall rules
+< flag
 < forward firewall
 < fw default drop
 < fwdfw ACCEPT
 < fwdfw from
 < fwdfw hint ip1
 < fwdfw hint ip2
+< fwdfw hint mac
 < fwdfw iface
 < fwdfw ipsec network
 < fwdfw log
 < fwdfw use nat
 < fwdfw use srcport
 < fwdfw use srv
+< fwdfw warn1
 < fwdfw wd_fri
 < fwdfw wd_mon
 < fwdfw wd_sat
 < fw settings dropdown
 < fw settings remark
 < fw settings ruletable
+< gen dh
+< generate dh key
 < grouptype
+< hardware support
 < integrity
 < invalid input for dpd delay
 < invalid input for dpd timeout
 < ipsec no connections
 < least preferred
 < lifetime
+< mac filter
+< maximum
+< minimum
 < minute
 < most preferred
+< never
+< no hardware random number generator
+< not a valid dh key
 < notice
 < ntp common settings
 < ntp sync
 < openvpn subnet is used
 < other
 < our donors
+< ovpn crypt options
+< ovpn dh
+< ovpn dh name
+< 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 yes
 < ovpn no connections
 < ovpn port in root range
+< ovpn reneg sec
 < p2p block
 < p2p block save notice
 < proxy reports
 < qos enter bandwidths
 < red1
 < server restart
+< show dh
 < snat new source ip address
 < snort working
 < ssh
 < static routes
 < support donation
+< system has hwrng
+< system has rdrand
 < system information
 < tor
 < tor 0 = disabled
 < tor use exit nodes
 < updxlrtr sources
 < updxlrtr standard view
+< upload dh key
 < upload new ruleset
 < uptime
 < uptime load average
 < 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
 # Checking cgi-bin translations for language: es                           #
 ############################################################################
 < addon
+< advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
 < advproxy errmsg proxy ports equal
 < age ssecond
 < Async logging enabled
 < attention
+< bit
 < 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
+< count
+< countries
+< countrycode
+< country codes and flags
 < default ip
 < deprecated fs warn
+< details
+< dh
+< dh key warn
+< dh name is invalid
 < dnat address
 < dnsforward
 < dnsforward add a new entry
 < drop forward
 < drop outgoing
 < encryption
+< entropy
+< entropy graphs
 < fireinfo ipfire version
 < fireinfo is disabled
 < fireinfo is enabled
 < fireinfo why read more
 < fireinfo your profile id
 < firewall rules
+< flag
 < forward firewall
 < fw default drop
 < fwdfw ACCEPT
 < fwdfw from
 < fwdfw hint ip1
 < fwdfw hint ip2
+< fwdfw hint mac
 < fwdfw iface
 < fwdfw ipsec network
 < fwdfw log
 < fwdfw use nat
 < fwdfw use srcport
 < fwdfw use srv
+< fwdfw warn1
 < fwdfw wd_fri
 < fwdfw wd_mon
 < fwdfw wd_sat
 < fw settings dropdown
 < fw settings remark
 < fw settings ruletable
+< gen dh
+< generate dh key
 < grouptype
+< hardware support
 < integrity
 < invalid input for dpd delay
 < invalid input for dpd timeout
 < ipsec no connections
 < least preferred
 < lifetime
+< mac filter
+< maximum
+< minimum
 < minute
 < most preferred
+< never
+< no hardware random number generator
+< not a valid dh key
 < notice
 < openvpn default
 < openvpn destination port used
 < outgoing firewall p2p description 2
 < outgoing firewall p2p description 3
 < outgoing firewall view group
+< ovpn crypt options
+< ovpn dh
+< ovpn dh name
+< 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 yes
 < ovpn no connections
 < ovpn port in root range
+< ovpn reneg sec
 < ovpn routes push
 < ovpn routes push options
 < p2p block
 < red1
 < server restart
 < Set time on boot
+< show dh
 < snat new source ip address
 < ssh
 < static routes
 < support donation
+< system has hwrng
+< system has rdrand
 < system information
 < tor
 < tor 0 = disabled
 < tor use exit nodes
 < updxlrtr sources
 < updxlrtr standard view
+< upload dh key
 < uptime
 < uptime load average
 < urlfilter redirect template
 < 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
 # Checking cgi-bin translations for language: pl                           #
 ############################################################################
 < addon
+< advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
 < advproxy errmsg proxy ports equal
 < age sminute
 < age ssecond
 < attention
+< bit
 < 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
+< count
+< countries
+< countrycode
+< country codes and flags
 < default ip
 < deprecated fs warn
+< details
+< dh
+< dh key warn
+< dh name is invalid
 < dnat address
 < dnsforward
 < dnsforward add a new entry
 < 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 write
 < extrahd you cant mount
 < firewall rules
+< flag
 < forward firewall
 < fw default drop
 < fwdfw ACCEPT
 < fwdfw from
 < fwdfw hint ip1
 < fwdfw hint ip2
+< fwdfw hint mac
 < fwdfw iface
 < fwdfw ipsec network
 < fwdfw log
 < fwdfw use nat
 < fwdfw use srcport
 < fwdfw use srv
+< fwdfw warn1
 < fwdfw wd_fri
 < fwdfw wd_mon
 < fwdfw wd_sat
 < fw settings dropdown
 < fw settings remark
 < fw settings ruletable
+< gen dh
+< generate dh key
 < grouptype
+< hardware support
 < integrity
 < invalid input for dpd delay
 < invalid input for dpd timeout
 < ipsec no connections
 < least preferred
 < lifetime
+< mac filter
+< maximum
+< minimum
 < minute
 < most preferred
+< never
+< no hardware random number generator
+< not a valid dh key
 < notice
 < openvpn default
 < openvpn destination port used
 < openvpn subnet is used
 < other
 < our donors
+< ovpn crypt options
+< ovpn dh
+< ovpn dh name
+< 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 yes
 < ovpn no connections
 < ovpn port in root range
+< ovpn reneg sec
 < ovpn routes push
 < ovpn routes push options
 < p2p block
 < qos enter bandwidths
 < red1
 < server restart
+< show dh
 < snat new source ip address
 < ssh
 < static routes
 < support donation
+< system has hwrng
+< system has rdrand
 < tor
 < tor 0 = disabled
 < tor accounting
 < tor use exit nodes
 < updxlrtr sources
 < updxlrtr standard view
+< upload dh key
 < uptime
 < uptime load average
 < urlfilter redirect template
 < 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
 ############################################################################
 < Add a route
 < addon
+< advproxy cache-digest
 < advproxy errmsg cache
 < advproxy errmsg invalid upstream proxy
 < advproxy errmsg proxy ports equal
 < age sminute
 < age ssecond
 < attention
+< bit
 < 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
+< count
+< countries
+< countrycode
+< country codes and flags
 < day-graph
 < default ip
 < deprecated fs warn
+< details
+< dh
+< dh key warn
+< dh name is invalid
 < disk access per
 < dnat address
 < dnsforward
 < 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 write
 < extrahd you cant mount
 < firewall rules
+< flag
 < forward firewall
 < frequency
 < fw default drop
 < fwdfw from
 < fwdfw hint ip1
 < fwdfw hint ip2
+< fwdfw hint mac
 < fwdfw iface
 < fwdfw ipsec network
 < fwdfw log
 < fwdfw use nat
 < fwdfw use srcport
 < fwdfw use srv
+< fwdfw warn1
 < fwdfw wd_fri
 < fwdfw wd_mon
 < fwdfw wd_sat
 < fw settings dropdown
 < fw settings remark
 < fw settings ruletable
+< gen dh
+< generate dh key
 < grouptype
+< hardware support
 < hour-graph
 < incoming traffic in bytes per second
 < integrity
 < ipsec no connections
 < least preferred
 < lifetime
+< mac filter
+< maximum
+< minimum
 < minute
 < month-graph
 < most preferred
+< never
+< no hardware random number generator
+< not a valid dh key
 < notice
 < openvpn default
 < openvpn destination port used
 < other
 < our donors
 < outgoing traffic in bytes per second
+< ovpn crypt options
+< ovpn dh
+< ovpn dh name
+< 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 yes
 < ovpn no connections
 < ovpn port in root range
+< ovpn reneg sec
 < p2p block
 < p2p block save notice
 < proxy reports
 < qos enter bandwidths
 < red1
 < server restart
+< show dh
 < snat new source ip address
 < ssh
 < static routes
 < support donation
+< system has hwrng
+< system has rdrand
 < tor
 < tor 0 = disabled
 < tor accounting
 < tor use exit nodes
 < updxlrtr sources
 < updxlrtr standard view
+< upload dh key
 < uptime
 < uptime load average
 < urlfilter redirect template
 < 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
index 8d6b19d4b0dff7a214de94b9c705610d35e74f78..09f6ea370dac1bbe7a4e42e0bc9ed5f2231d0bfb 100644 (file)
@@ -241,16 +241,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 +275,22 @@ if ($settings{'KEY1'} ne '') {
 print <<END
 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
 <input type='hidden' name='KEY1' value='$settings{'KEY1'}' />
-<table width='100%'>
+<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'}:&nbsp;<img src='/blob.gif' alt='*' /></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='right'><input type='hidden' name='ACTION' value='$Lang::tr{'add'}' /><input type='submit' name='SUBMIT' value='$buttontext' /></td>
-    </td>
+    <td><img src='/blob.gif' alt='*' />&nbsp;$Lang::tr{'this field may be blank'}</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 +319,11 @@ if ($netsettings{'SORT_ALIASES'} eq 'NAMERev') {
 #
 &Header::openbox('100%', 'left', $Lang::tr{'current aliases'});
 print <<END
-<table width='100%' class='tbl'>
+<table class='tbl' style='width:100%;'>
 <tr>
-    <th width='50%' align='center'><a href='$ENV{'SCRIPT_NAME'}?NAME'><b>$Lang::tr{'name'}</b></a> $sortarrow1</th>
-    <th width='45%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IP'><b>$Lang::tr{'alias ip'}</b></a> $sortarrow2</th>
-    <th width='5%' colspan='3' class='boldbase' align='center'><b>$Lang::tr{'action'}</b></th>
+    <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
 ;
@@ -354,21 +353,19 @@ foreach my $line (@current) {
 
     #Colorize each line
     if ($settings{'KEY1'} eq $key) {
-       print "<tr>";
-       $col="bgcolor='${Header::colouryellow}'";
+        $col="background-color:${Header::colouryellow};";
     } elsif ($key % 2) {
-       print "<tr>";
-       $col="bgcolor='${Header::table2colour}'";
+        $col="background-color:${Header::table2colour};";
     } else {
-       print "<tr>";
-       $col="bgcolor='${Header::table1colour}'";
+        $col="background-color:${Header::table1colour};";
     }
+    print "<tr style='$col'>";
 
     print <<END
-<td align='center' $col>$temp[2]</td>
-<td align='center' $col>$temp[0]</td>
+<td style='text-align:center; $col'>$temp[2]</td>
+<td style='text-align:center; $col'>$temp[0]</td>
 
-<td align='center' $col>
+<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' />
@@ -376,7 +373,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center' $col>
+<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'}' />
@@ -384,7 +381,7 @@ foreach my $line (@current) {
 </form>
 </td>
 
-<td align='center' $col>
+<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'}' />
@@ -514,3 +511,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 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 476a680f41b0233051ddbe540a17b4513b1cea6b..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%' border='0' class='tbl'>";
-print "<tr><th width='5%'><b>Flag</b></th>";
-print "<th width='5%'><b>Code</b></th>";
-print "<th width='40%'><b>Country</b></th>";
-print "<th><b>&nbsp;</b></th>";
-print "<th width='5%'><b>Flag</b></th>";
-print "<th width='5%'><b>Code</b></th>";
-print "<th width='40%'><b>Country</b></th></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/*>;
 
@@ -69,39 +69,34 @@ foreach $flag (@flaglistfiles)
        if($fcode eq 'tp') { $country = 'East Timor'; }
        if($fcode eq 'yu') { $country = 'Yugoslavia'; }
        if ($lines % 2) {
-               print "<td $col><a name='$fcode'/><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$flagcode'</td>";
+               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) {
-               print "<tr>";
-               $col="bgcolor='${Header::table2colour}'";
-       } else {
-               print "<tr>";
-               $col="bgcolor='${Header::table1colour}'";
        }
-       print "<td $col><a name='$fcode'/><img src='/images/flags/$fcode.png' border='0' align='absmiddle' alt='$flagcode'</td>";
-       print "<td $col>$flagcode</td>";
-       print "<td $col>$country</td>";
-       print "<td $col>&nbsp;</td>";
+       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 "</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 5f051d21f0843512b0caf285251ba0fe746d209f..b66fa467b25b6f6bf402c4feb112ef85ec676030 100644 (file)
@@ -207,20 +207,20 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'edit'}) {
 print <<END
 <table width='100%'>
        <tr>
-               <td width='20%' class='base'><font>$Lang::tr{'dnsforward zone'}:</font></td>
+               <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'><font>$Lang::tr{'dnsforward forward_server'}:</font></td>
+               <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'><font class='boldbase'>$Lang::tr{'remark'}:</font>&nbsp;<img src='/blob.gif' alt='*' /></td>
+               <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>
@@ -229,7 +229,7 @@ print <<END
 
 <table width='100%'>
        <tr>
-               <td class='base' width='55%'><img src='/blob.gif' alt ='*' align='top' />&nbsp;<font class='base'>$Lang::tr{'this field may be blank'}</font></td>
+               <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' />
diff --git a/html/cgi-bin/entropy.cgi b/html/cgi-bin/entropy.cgi
new file mode 100755 (executable)
index 0000000..bd3de82
--- /dev/null
@@ -0,0 +1,89 @@
+#!/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'};
+       }
+
+       &Header::openbox('100%', 'center', $Lang::tr{'hardware support'});
+       print <<EOF;
+               <p style="color: $message_colour; text-align: center;">$message</p>
+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;
+}
index 0bff59163c6320e3b9d204d8d7cb7ce3b0dca15a..5a6fbce8310201bb55287f550036536820d75312 100644 (file)
@@ -152,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
 ;
@@ -224,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>
index ee13033614ac874db302dee9935670e0b3db8421..436bdafd069226e1dfb571c62c431636652bb5de 100644 (file)
 
 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';
@@ -29,7 +33,7 @@ no warnings 'uninitialized';
 require '/var/ipfire/general-functions.pl';
 require "${General::swroot}/lang.pl";
 require "${General::swroot}/header.pl";
-require "${General::swroot}/firewall/bin/firewall-lib.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"); }
@@ -194,6 +198,7 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
        $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'}});
@@ -220,16 +225,17 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
                                if (   "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'}"
                                        eq "$configinputfw{$key}[0],$configinputfw{$key}[2],$configinputfw{$key}[3],$configinputfw{$key}[4],$configinputfw{$key}[5],$configinputfw{$key}[6],$configinputfw{$key}[7],$configinputfw{$key}[8],$configinputfw{$key}[9],$configinputfw{$key}[10],$configinputfw{$key}[11],$configinputfw{$key}[12],$configinputfw{$key}[13],$configinputfw{$key}[14],$configinputfw{$key}[15],$configinputfw{$key}[17],$configinputfw{$key}[18],$configinputfw{$key}[19],$configinputfw{$key}[20],$configinputfw{$key}[21],$configinputfw{$key}[22],$configinputfw{$key}[23],$configinputfw{$key}[24],$configinputfw{$key}[25],$configinputfw{$key}[26],$configinputfw{$key}[27],$configinputfw{$key}[28],$configinputfw{$key}[29],$configinputfw{$key}[30],$configinputfw{$key}[31]"){
                                                $errormessage.=$Lang::tr{'fwdfw err ruleexists'};
-                                               if ($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on'){
-                                                       $errormessage='';
-                                               }elsif($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
+                                               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'}){
@@ -263,11 +269,12 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
                                if (   "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'}"
                                        eq "$configoutgoingfw{$key}[0],$configoutgoingfw{$key}[2],$configoutgoingfw{$key}[3],$configoutgoingfw{$key}[4],$configoutgoingfw{$key}[5],$configoutgoingfw{$key}[6],$configoutgoingfw{$key}[7],$configoutgoingfw{$key}[8],$configoutgoingfw{$key}[9],$configoutgoingfw{$key}[10],$configoutgoingfw{$key}[11],$configoutgoingfw{$key}[12],$configoutgoingfw{$key}[13],$configoutgoingfw{$key}[14],$configoutgoingfw{$key}[15],$configoutgoingfw{$key}[17],$configoutgoingfw{$key}[18],$configoutgoingfw{$key}[19],$configoutgoingfw{$key}[20],$configoutgoingfw{$key}[21],$configoutgoingfw{$key}[22],$configoutgoingfw{$key}[23],$configoutgoingfw{$key}[24],$configoutgoingfw{$key}[25],$configoutgoingfw{$key}[26],$configoutgoingfw{$key}[27],$configoutgoingfw{$key}[28],$configoutgoingfw{$key}[29],$configoutgoingfw{$key}[30],$configoutgoingfw{$key}[31]"){
                                                $errormessage.=$Lang::tr{'fwdfw err ruleexists'};
-                                               if ($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on'){
-                                                       $errormessage='';
-                                               }elsif($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
+                                               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';
                                                }
@@ -276,7 +283,6 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
                }
                #check Rulepos on new Rule
                if($fwdfwsettings{'rulepos'} > 0 && !$fwdfwsettings{'oldrulenumber'}){
-                       print"CHECK OUTGOING DOPPELTE REGEL<br>";
                        $fwdfwsettings{'oldrulenumber'}=$maxkey;
                        foreach my $key (sort keys %configoutgoingfw){
                                if (   "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'LOG'},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'}"
@@ -309,17 +315,18 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
                                if (   "$fwdfwsettings{'RULE_ACTION'},$fwdfwsettings{'ACTIVE'},$fwdfwsettings{'grp1'},$fwdfwsettings{$fwdfwsettings{'grp1'}},$fwdfwsettings{'grp2'},$fwdfwsettings{$fwdfwsettings{'grp2'}},$fwdfwsettings{'USE_SRC_PORT'},$fwdfwsettings{'PROT'},$fwdfwsettings{'ICMP_TYPES'},$fwdfwsettings{'SRC_PORT'},$fwdfwsettings{'USESRV'},$fwdfwsettings{'TGT_PROT'},$fwdfwsettings{'ICMP_TGT'},$fwdfwsettings{'grp3'},$fwdfwsettings{$fwdfwsettings{'grp3'}},$fwdfwsettings{'TIME'},$fwdfwsettings{'TIME_MON'},$fwdfwsettings{'TIME_TUE'},$fwdfwsettings{'TIME_WED'},$fwdfwsettings{'TIME_THU'},$fwdfwsettings{'TIME_FRI'},$fwdfwsettings{'TIME_SAT'},$fwdfwsettings{'TIME_SUN'},$fwdfwsettings{'TIME_FROM'},$fwdfwsettings{'TIME_TO'},$fwdfwsettings{'USE_NAT'},$fwdfwsettings{$fwdfwsettings{'nat'}},$fwdfwsettings{'dnatport'},$fwdfwsettings{'nat'}"
                                        eq "$configfwdfw{$key}[0],$configfwdfw{$key}[2],$configfwdfw{$key}[3],$configfwdfw{$key}[4],$configfwdfw{$key}[5],$configfwdfw{$key}[6],$configfwdfw{$key}[7],$configfwdfw{$key}[8],$configfwdfw{$key}[9],$configfwdfw{$key}[10],$configfwdfw{$key}[11],$configfwdfw{$key}[12],$configfwdfw{$key}[13],$configfwdfw{$key}[14],$configfwdfw{$key}[15],$configfwdfw{$key}[18],$configfwdfw{$key}[19],$configfwdfw{$key}[20],$configfwdfw{$key}[21],$configfwdfw{$key}[22],$configfwdfw{$key}[23],$configfwdfw{$key}[24],$configfwdfw{$key}[25],$configfwdfw{$key}[26],$configfwdfw{$key}[27],$configfwdfw{$key}[28],$configfwdfw{$key}[29],$configfwdfw{$key}[30],$configfwdfw{$key}[31]"){
                                                $errormessage.=$Lang::tr{'fwdfw err ruleexists'};
-                                               if ($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' ){
-                                                       $errormessage='';
-                                               }elsif($fwdfwsettings{'oldruleremark'} ne $fwdfwsettings{'ruleremark'} && $fwdfwsettings{'updatefwrule'} eq 'on' && $fwdfwsettings{'ruleremark'} ne '' && !&validremark($fwdfwsettings{'ruleremark'})){
+                                               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;
@@ -327,7 +334,7 @@ if ($fwdfwsettings{'ACTION'} eq 'saverule')
                                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
@@ -505,8 +512,8 @@ sub checksource
                        return $errormessage;
                }
        }elsif($fwdfwsettings{'src_addr'} eq $fwdfwsettings{$fwdfwsettings{'grp1'}} && $fwdfwsettings{'src_addr'} eq ''){
-               $errormessage.=$Lang::tr{'fwdfw err nosrcip'};
-               return $errormessage;
+               $fwdfwsettings{'grp1'}='std_net_src';
+               $fwdfwsettings{$fwdfwsettings{'grp1'}} = 'ALL';
        }
 
        #check empty fields
@@ -606,8 +613,21 @@ sub checktarget
                        return $errormessage;
                }
        }elsif($fwdfwsettings{'tgt_addr'} eq $fwdfwsettings{$fwdfwsettings{'grp2'}} && $fwdfwsettings{'tgt_addr'} eq ''){
-               $errormessage.=$Lang::tr{'fwdfw err notgtip'};
-               return $errormessage;
+               $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>";}
@@ -1280,6 +1300,12 @@ sub getcolor
        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){
@@ -1403,24 +1429,7 @@ sub hint
                print "<class name='base'>$hint\n";
                print "&nbsp;</class>\n";
                &Header::closebox();
-               print"<hr>";
-       }
-}
-sub inc_counter
-{
-       my $config=shift;
-       my %hash=%{(shift)};
-       my $val=shift;
-       my $pos;
-
-       &General::readhasharray($config, \%hash);
-       foreach my $key (sort { uc($hash{$a}[0]) cmp uc($hash{$b}[0]) }  keys %hash){
-               if($hash{$key}[0] eq $val){
-                       $pos=$#{$hash{$key}};
-                       $hash{$key}[$pos] = $hash{$key}[$pos]+1;
-               }
        }
-       &General::writehasharray($config, \%hash);
 }
 sub newrule
 {
@@ -1531,6 +1540,7 @@ sub newrule
                                $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';
                        }
                }
                $fwdfwsettings{'oldgrp1a'}=$fwdfwsettings{'grp1'};
@@ -1576,7 +1586,7 @@ sub newrule
        my ($sip,$scidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp1'}});
        if ($scidr eq '32'){$fwdfwsettings{$fwdfwsettings{'grp1'}}=$sip;}
        my ($dip,$dcidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp2'}});
-       if ($scidr eq '32'){$fwdfwsettings{$fwdfwsettings{'grp2'}}=$dip;}
+       if ($dcidr eq '32'){$fwdfwsettings{$fwdfwsettings{'grp2'}}=$dip;}
        &Header::openbox('100%', 'left', $Lang::tr{'fwdfw source'});
        #------SOURCE-------------------------------------------------------
        print "<form method='post'>";
@@ -1623,25 +1633,28 @@ END
                                                </td>
 END
 
-               if (%aliases) {
-                       print <<END;
+       print <<END;
                                                <td width='25%' align='right'>$Lang::tr{'dnat address'}:</td>
                                                <td width='30%'>
                                                        <select name='dnat' style='width: 100%;'>
-                                                               <option value='Default IP' $selected{'dnat'}{'Default IP'}>$Lang::tr{'default ip'} ($netsettings{'RED_ADDRESS'})</option>
+                                                               <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>";
                        }
-
-                       print "</select>";
-               } else {
-                       print <<END;
-                                               <td colspan="2" width='55%'>
-                                                       <input type='hidden' name='dnat' value='Default IP'>
-                                               </td>
-END
                }
+               #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
@@ -1662,19 +1675,14 @@ END
                foreach my $alias (sort keys %aliases) {
                        print "<option value='$alias' $selected{'snat'}{$alias}>$alias ($aliases{$alias}{'IPT'})</option>";
                }
-
-               # XXX this is composed in a very ugly fashion
+               # SNAT Dropdown
                foreach my $network (sort keys %defaultNetworks) {
-                       next if($defaultNetworks{$network}{'NAME'} eq "IPFire");
-                       next if($defaultNetworks{$network}{'NAME'} eq "ALL");
-                       next if($defaultNetworks{$network}{'NAME'} =~ /OpenVPN/i);
-                       next if($defaultNetworks{$network}{'NAME'} =~ /IPsec/i);
-
-                       print "<option value='$defaultNetworks{$network}{'NAME'}'";
-                       print " selected='selected'" if ($fwdfwsettings{$fwdfwsettings{'nat'}} eq $defaultNetworks{$network}{'NAME'});
-                       print ">$network ($defaultNetworks{$network}{'NET'})</option>";
+                       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>
@@ -2136,6 +2144,9 @@ sub saverule
                        &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'};
@@ -2271,22 +2282,19 @@ sub saverule
 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;
+       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
 {
@@ -2366,26 +2374,18 @@ END
                                if($$hash{$key}[3] eq  'ipsec_net_src'){
                                        if(&fwlib::get_ipsec_net_ip($host,11) eq ''){
                                                $coloryellow='on';
-                                               &disable_rule($key);
-                                               $$hash{$key}[2]='';
                                        }
                                }elsif($$hash{$key}[3] eq  'ovpn_net_src'){
                                        if(&fwlib::get_ovpn_net_ip($host,1) eq ''){
                                                $coloryellow='on';
-                                               &disable_rule($key);
-                                               $$hash{$key}[2]='';
                                        }
                                }elsif($$hash{$key}[3] eq  'ovpn_n2n_src'){
                                        if(&fwlib::get_ovpn_n2n_ip($host,27) eq ''){
                                                $coloryellow='on';
-                                               &disable_rule($key);
-                                               $$hash{$key}[2]='';
                                        }
                                }elsif($$hash{$key}[3] eq  'ovpn_host_src'){
                                        if(&fwlib::get_ovpn_host_ip($host,33) eq ''){
                                                $coloryellow='on';
-                                               &disable_rule($key);
-                                               $$hash{$key}[2]='';
                                        }
                                }
                        }
@@ -2393,26 +2393,18 @@ END
                                if($$hash{$key}[5] eq 'ipsec_net_tgt'){
                                        if(&fwlib::get_ipsec_net_ip($host,11) eq ''){
                                                $coloryellow='on';
-                                               &disable_rule($key);
-                                               $$hash{$key}[2]='';
                                        }
                                }elsif($$hash{$key}[5] eq 'ovpn_net_tgt'){
                                        if(&fwlib::get_ovpn_net_ip($host,1) eq ''){
                                                $coloryellow='on';
-                                               &disable_rule($key);
-                                               $$hash{$key}[2]='';
                                        }
                                }elsif($$hash{$key}[5] eq 'ovpn_n2n_tgt'){
                                        if(&fwlib::get_ovpn_n2n_ip($host,27) eq ''){
                                                $coloryellow='on';
-                                               &disable_rule($key);
-                                               $$hash{$key}[2]='';
                                        }
                                }elsif($$hash{$key}[5] eq 'ovpn_host_tgt'){
                                        if(&fwlib::get_ovpn_host_ip($host,33) eq ''){
                                                $coloryellow='on';
-                                               &disable_rule($key);
-                                               $$hash{$key}[2]='';
                                        }
                                }
                        }
@@ -2420,15 +2412,11 @@ END
                        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';
-                                       &disable_rule($key);
-                                       $$hash{$key}[2]='';
                                }
                        }
                        foreach my $srvgroup (sort keys %customservicegrp){
                                if($$hash{$key}[15] eq $customservicegrp{$srvgroup}[0] && $customservicegrp{$srvgroup}[2] eq 'none'){
                                        $coloryellow='on';
-                                       &disable_rule($key);
-                                       $$hash{$key}[2]='';
                                }
                        }
                        $$hash{'ACTIVE'}=$$hash{$key}[2];
@@ -2564,6 +2552,7 @@ END
 END
                        #Is this a DNAT rule?
                        if ($$hash{$key}[31] eq 'dnat' && $$hash{$key}[28] eq 'ON'){
+                               if ($$hash{$key}[29] eq 'Default IP'){$$hash{$key}[29]=$Lang::tr{'red1'};}
                                print "Firewall ($$hash{$key}[29])";
                                if($$hash{$key}[30] ne ''){
                                        $$hash{$key}[30]=~ tr/|/,/;
@@ -2720,7 +2709,7 @@ END
                                <td colspan='13'>&nbsp;</td>
                        </tr>
                        <tr>
-                               <td colspan='13'>
+                               <td colspan='13' style="padding-left:0px;padding-right:0px">
                                        <table width="100%" border='1' rules="cols" cellspacing='0'>
 END
 
@@ -2803,14 +2792,16 @@ END
                                                <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"</tr>";
                }
 
                print <<END;
index baecde31a06d164a5100bf8ff8ddadbe08834136..042fdde0c5339b1f39c7e20450d442e393ef362f 100644 (file)
@@ -21,7 +21,8 @@
 use strict;
 
 # enable only the following on debugging purpose
-use warnings;
+#use warnings;
+
 use Sort::Naturally;
 use CGI::Carp 'fatalsToBrowser';
 no warnings 'uninitialized';
@@ -48,7 +49,7 @@ my %fwfwd=();
 my %fwinp=();
 my %fwout=();
 my %ovpnsettings=();
-
+my %netsettings=();
 
 my $errormessage;
 my $hint;
@@ -80,7 +81,7 @@ unless (-e $configsrvgrp) { system("touch $configsrvgrp"); }
 &General::readhash("$configovpn", \%ovpnsettings);
 &General::readhasharray("$configipsec", \%ipsecconf);
 &General::readhash("$configipsecrw", \%ipsecsettings);
-
+&General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
 &Header::getcgihash(\%fwhostsettings);
 
 &Header::showhttpheaders();
@@ -1211,12 +1212,12 @@ sub addgrp
                        print<<END;
                <table width='100%' border='0'>
                        <tr>
-                               <td width='10%'>$Lang::tr{'fwhost addgrpname'}</td>
-                               <td><form method='post'><input type='TEXT' name='grp_name' value='$fwhostsettings{'grp_name'}' size='20'></td>
+                               <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 width='10%'>$Lang::tr{'remark'}:</td>
-                               <td ><input type='TEXT' name='remark' value='$fwhostsettings{'remark'}' style='width: 98%;'></td>
+                               <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>
@@ -1225,17 +1226,17 @@ sub addgrp
 END
                }else{
                        print<<END;
-                       <table width='100%' border='0'><form method='post' style='display:inline'>
+                       <table width='100%' border='0'><form method='post'>
                                <tr>
-                                       <td nowrap='nowrap' width='12%'>$Lang::tr{'fwhost addgrpname'}</td>
-                                       <td width='20%'><input type='TEXT' name='grp'  value='$fwhostsettings{'grp_name'}' ></td>
+                                       <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'><input type='TEXT' name='newrem' size='45' value='$fwhostsettings{'remark'}' style='width:98%'></td>
-                                       <td align='right'><input type='submit' value='$Lang::tr{'fwhost change'}'><input type='hidden' name='oldrem' value='$fwhostsettings{'oldremark'}'><input type='hidden' name='ACTION' value='changegrpremark' ></td>
+                                       <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>
@@ -1246,8 +1247,16 @@ END
                        <form method='post'><input type='hidden' name='remark' value='$rem'><input type='hidden' name='grp_name' value='$grp'>
                        <table width='100%' border='0'>
                        <tr><td width=50% valign='top'>
-                       <table width='100%' border='0'>
-                       <tr><td width='1%'><input type='radio' name='grp2' value='std_net' id='DEFAULT_SRC_ADR' checked></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost stdnet'}</td><td><select name='DEFAULT_SRC_ADR' style='min-width:185px;'>
+                       <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)
                        {
@@ -1267,14 +1276,34 @@ END
                        }
                        print"</select></td></tr>";
                        if (! -z $confignet){
-                               print"<tr><td><input type='radio' name='grp2' id='CUST_SRC_NET' value='cust_net' $checked{'grp2'}{'cust_net'}></td><td>$Lang::tr{'fwhost cust net'}:</td><td><select name='CUST_SRC_NET' style='min-width:185px;'>";
+                               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"<tr><td valign='top'><input type='radio' name='grp2' id='CUST_SRC_HOST' value='cust_host' $checked{'grp2'}{'cust_host'}></td><td valign='top'>$Lang::tr{'fwhost cust addr'}:</td><td><select name='CUST_SRC_HOST' style='min-width:185px;'>";
+                               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>";
                                }
@@ -1282,10 +1311,19 @@ END
                        }
                        print"</table>";
                        #Inner table right
-                       print"</td><td valign='top'><table width='100%' border='0'>";
+                       print"</td><td align='right' style='vertical-align:top;'><table width='90%' border='0'>";
                        #OVPN networks
                        if (! -z $configccdnet){
-                               print"<td width='1%'><input type='radio' name='grp2' id='OVPN_CCD_NET' value='ovpn_net'  $checked{'grp2'}{'ovpn_net'}></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost ccdnet'}</td><td nowrap='nowrap' width='1%'><select name='OVPN_CCD_NET' style='min-width:185px;'>";
+                               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>";
@@ -1293,39 +1331,87 @@ END
                                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 ''){
-                                       print"<td width='1%'><input type='radio' name='grp2' value='ovpn_host' $checked{'grp2'}{'ovpn_host'}></td><td nowrap='nowrap' width='16%'>$Lang::tr{'fwhost ccdhost'}</td><td nowrap='nowrap' width='1%'><select name='OVPN_CCD_HOST' style='min-width:185px;'>" if ($show eq '');
                                        $show='1';
-                                       print"<option value='$ccdhost{$key}[1]'>$ccdhost{$key}[1]</option>";
+                                       push (@ovpn_clients,$ccdhost{$key}[1]);
                                }
                        }
-                       if ($show eq '1'){$show='';print"</select></td></tr>";}
+                       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'){
-                                       print"<td width='1%'><input type='radio' name='grp2' id='OVPN_N2N' value='ovpn_n2n' $checked{'grp2'}{'ovpn_n2n'}></td><td valign='top'>$Lang::tr{'fwhost ovpn_n2n'}:</td><td colspan='3'><select name='OVPN_N2N' style='min-width:185px;'>" if ($show eq '');
                                        $show='1';
-                                       print"<option>$ccdhost{$key}[1]</option>";
+                                       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>";
                        }
-                       if ($show eq '1'){$show='';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'){
-                                       print"<td valign='top'><input type='radio' name='grp2' id='IPSEC_NET' value='ipsec_net' $checked{'grp2'}{'ipsec_net'}></td><td valign='top'>$Lang::tr{'fwhost ipsec net'}</td><td><select name='IPSEC_NET' style='min-width:185px;'>" if ($show eq '');
                                        $show='1';
-                                       print"<option value='$ipsecconf{$key}[1]'>$ipsecconf{$key}[1]</option>";
+                                       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>";
                                }
                        }
-                       if ($show eq '1'){$show='';print"</select></td></tr>";}
+                       print"</select></td></tr>";
                        print"</table>";
                        print"</td></tr></table>";
                        print"<br><br>";
                }
                print"<table width='100%'>";
-               print"<tr><td align='right'><input type='submit' value='$Lang::tr{'add'}' style='min-width:100px;' /><input type='hidden' name='oldremark' value='$fwhostsettings{'oldremark'}'><input type='hidden' name='update' value=\"$fwhostsettings{'update'}\"><input type='hidden' name='ACTION' value='savegrp' ></form><form method='post' style='display:inline'><input type='submit' value='$Lang::tr{'fwhost back'}' style='min-width:100px;'><input type='hidden' name='ACTION' value='resetgrp'></form></td></table>";
+               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
@@ -1414,9 +1500,28 @@ END
                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='ACTION' value='changesrvgrpremark' ></td></tr>
-               <tr><td colspan='4'><br></td></td></tr>
-               </table></form>
+               <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'){
@@ -1464,6 +1569,7 @@ sub viewtablenet
                &General::readhasharray("$fwconfigfwd", \%fwfwd);
                &General::readhasharray("$fwconfiginp", \%fwinp);
                &General::readhasharray("$fwconfigout", \%fwout);
+
                if (!keys %customnetwork) 
                { 
                        print "<center><b>$Lang::tr{'fwhost empty'}</b>"; 
@@ -1490,9 +1596,9 @@ END
                        }
                        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>".&Header::colorize($colnet)."</td><td width='40%' $col>$customnetwork{$key}[3]</td><td align='center' $col>$netcount x</td>";
+                       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'} />
+                       <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]' />
@@ -1502,7 +1608,7 @@ END
 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>";
+                               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>";
                        }
@@ -1516,50 +1622,79 @@ END
 sub getcolor
 {
                my $c=shift;
+               my $sip;
+               my $scidr;
+               #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 ( &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 ( &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($c,$a,$b)){
-                                       $tdcolor="style='color:$Header::colourovpn ;'";
+                               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($c,$a,$b)){
-                       $tdcolor="style='color: $Header::colourovpn;'";
+               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($c,$a,$b)){
-                               $tdcolor="style='color: $Header::colourovpn;'";
+                       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($c,$a,$b)){
-                               $tdcolor="style='color: $Header::colourvpn;'";
+                       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){
                        my ($a,$b) = split("/",$ipsecconf{$key}[11]);
-                       if (&General::IpInSubnet($c,$a,$b)){
-                               $tdcolor="style='color: $Header::colourvpn;'";
+                       if (&General::IpInSubnet($sip,$a,$b)){
+                               $tdcolor="<font style='color: $Header::colourvpn;'>$c</font>";
                                return $tdcolor;
                        }
                }
-               $tdcolor='';
-               return $tdcolor;
+               return "$c";
 }
 sub viewtablehost
 {
@@ -1598,9 +1733,9 @@ END
                        $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).">".&Header::colorize($ip)."</td><td width='50%' align='left' $col>$customhost{$key}[3]</td><td align='center' $col>$hostcount x</td>";
+                       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'} />
+                       <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' />
@@ -1610,7 +1745,7 @@ END
 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>";
+                               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>";
                        }
@@ -1677,10 +1812,10 @@ sub viewtablegrp
                                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/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>Name</b></th><th align='center'><b>$Lang::tr{'ip address'}</b></th><th align='center' width='25%'><b>$Lang::tr{'fwhost type'}</th><th></th></tr>";
+                               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]) {
@@ -1709,10 +1844,10 @@ sub viewtablegrp
                        }else{
                                my ($colip,$colsub) = split("/",$ip);
                                $ip="$colip/".&General::subtocidr($colsub) if ($colsub);
-                               print"<td align='center' $col ".&getcolor($colip).">".&Header::colorize($ip)."</td><td align='center' $col>$customgrp{$key}[3]</td><td width='1%' $col><form method='post'>";
+                               print"<td align='center' $col>".&getcolor($ip)."</td><td align='center' $col>$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'} />";
+                               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]){
@@ -1770,7 +1905,7 @@ END
                        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' />
+                       <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]' />
@@ -1778,7 +1913,7 @@ END
 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>";
+                               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>";
                        }
@@ -1844,9 +1979,9 @@ sub viewtableservicegrp
                                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/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"<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]) {
@@ -1885,7 +2020,7 @@ sub viewtableservicegrp
                        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'} />";
+                                       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) {
@@ -1920,7 +2055,7 @@ sub checkname
 }
 sub checkgroup
 {
-       &General::readhasharray("$configsrvgrp", \%customservicegrp );
+       &General::readhasharray("$configgrp", \%customgrp );
        my $name=shift;
        foreach my $key (keys %customservicegrp) {
                if($customservicegrp{$key}[0] eq $name){
index 7589054b642de19894f5cf0431cac3b5894a4159..94187ce7a3dc7daf9b8d4ada0a60225a2f43d654 100644 (file)
@@ -29,28 +29,29 @@ require "${General::swroot}/lang.pl";
 require "${General::swroot}/header.pl";
 require "/opt/pakfire/lib/functions.pl";
 
-
-my %cgiparams;
-my $refresh;
-
+# If the license has already been accepted.
 if ( -e "/var/ipfire/main/gpl_accepted" ) {
-       print "Status: 302 Moved Temporarily\n";
-       print "Location: index.cgi\n\n";
-       exit (0);
+       &redirect();
 }
-&Header::showhttpheaders();
 
+my %cgiparams;
 $cgiparams{'ACTION'} = '';
+
 &Header::getcgihash(\%cgiparams);
 
-&Header::openpage($Lang::tr{'main page'}, 1, $refresh);
-&Header::openbigbox('', 'center');
+# 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);
 
-# licence agreement
-if ($cgiparams{'ACTION'} eq $Lang::tr{'yes'} && $cgiparams{'gpl_accepted'} eq '1') {
-       system('touch /var/ipfire/main/gpl_accepted');
+       &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'}.
@@ -58,7 +59,7 @@ print <<END;
 END
 ;      
 if ( -e "/usr/share/doc/licenses/GPLv3" ) {
-       print '<textarea rows=\'25\' cols=\'75\' readonly=\'true\'>';
+       print '<textarea rows=\'25\' cols=\'75\' readonly=\'readonly\'>';
        print `cat /usr/share/doc/licenses/GPLv3`;
        print '</textarea>';
 }
@@ -80,3 +81,9 @@ END
 &Header::closebox();
 &Header::closebigbox();
 &Header::closepage();
+
+sub redirect {
+       print "Status: 302 Moved Temporarily\n";
+       print "Location: index.cgi\n\n";
+       exit (0);
+}
index 80a059675a8b752228dd16f367156faee866c5c8..726abf7dee5742d7b0b80ecf74f7ecf05f61b11e 100644 (file)
@@ -63,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;
        }
 
index 88d9db2969970086fe2ed3bb829b46ad42b28cdf..55e2645061c659ba7406cd83d5e39ad25258a63a 100644 (file)
@@ -413,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;
@@ -433,7 +433,7 @@ print <<END
        background-color: #DCDCDC;
 }
 -->
-</STYLE>
+</style>
 END
 ;
 #######################  End added for snort rules control  #################################
@@ -472,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
@@ -594,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'>";
 
@@ -615,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;
                        }
 
@@ -666,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=0><TR>";
+                               print "<tr><td class='base' valign='top'><table border='0'><tr>";
 
                                # Local vars
                                my $ruledefdisplaycnt = 0;
@@ -695,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;
                                        }
 
@@ -707,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++;
@@ -715,20 +715,20 @@ 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>
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 3b44baad3453540984d61810f5a6afcac80aacd8..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        #
@@ -158,6 +158,11 @@ if ( ( $pppsettings{'VALID'} eq 'yes' && $modemsettings{'VALID'} eq 'yes' ) || (
            close IPADDR;
            chomp ($ipaddr);
        }
+       if (open(IPADDR,"${General::swroot}/red/local-ipaddress")) {
+           $ipaddr = <IPADDR>;
+           close IPADDR;
+           chomp ($ipaddr);
+       }
 } elsif ($modemsettings{'VALID'} eq 'no') {
        print "$Lang::tr{'modem settings have errors'}\n </b></font>\n";
 } else {
@@ -166,18 +171,22 @@ if ( ( $pppsettings{'VALID'} eq 'yes' && $modemsettings{'VALID'} eq 'yes' ) || (
 
 print <<END;
 <!-- Table of networks -->
-<table width=80% class='tbl' >
-  <tr>  <th bgcolor='$color{'color20'}'>$Lang::tr{'network'}</th>
-        <th bgcolor='$color{'color20'}'>$Lang::tr{'ip address'}</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 </td></tr>
+<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
        my $HOSTNAME = (gethostbyaddr(pack("C4", split(/\./, $ipaddr)), 2))[0];
        if ( "$HOSTNAME" ne "" ) {
                print <<END;
-       <tr><td><b>Hostname:</b><td align='center'>$HOSTNAME</td><td></td>
+       <tr><td><b>$Lang::tr{'hostname'}:</b><td style='text-align:center;'>$HOSTNAME</td><td></td>
 END
        }
 
@@ -187,121 +196,151 @@ END
                chomp($GATEWAY);
                close TMP;
                print <<END;
-       <tr><td><b>Gateway:</b><td align='center'>$GATEWAY</td><td></td></tr>
+       <tr><td><b>$Lang::tr{'gateway'}:</b><td style='text-align:center;'>$GATEWAY</td><td></td></tr>
 END
        }
-       #Read DNS server 1
-       open (DNS1, "<${General::swroot}/red/dns1");
-       my $DNS1 = <DNS1>;
-       chomp($DNS1);
-       close DNS1;
-       #Read DNS server 2
-       open (DNS2, "<${General::swroot}/red/dns2");
-       my $DNS2 = <DNS2>;
-       chomp($DNS2);
-       close DNS2;
-
-       if ( $DNS1 ) { print <<END;
-       <tr><td><b>$Lang::tr{'dns server'}1:</b></td><td align='center'>$DNS1</td><td></td></tr>
-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);
+               }
        }
-       if ( $DNS2 ) { print <<END;
-       <tr><td><b>$Lang::tr{'dns server'}2:</b></td><td align='center'>$DNS2</td><td></td></tr>
-       </table>
-END
-       } else { print <<END;
-       <td></td>
-       </tr>
-       </table>
+       my $dns_servers_str = join(", ", @dns_servers);
 
+       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
-       }
 
 #Dial profiles
 if ( $netsettings{'RED_TYPE'} ne "STATIC" && $netsettings{'RED_TYPE'} ne "DHCP" ){
-print `/usr/local/bin/dialctrl.pl show`;
-print <<END;
-<br>
-               <table width='80%'>
+       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/>";
        }
-       print"</tr></table>";
 }
-       if ( $netsettings{'GREEN_DEV'} ) {
+
+
+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 ( $netsettings{'GREEN_DEV'} ) {
                my $sub=&General::iporsubtocidr($netsettings{'GREEN_NETMASK'});
                print <<END;
-               <br>
-               <table width='80%' class='tbl'>
                <tr>
-                       <th>$Lang::tr{'network'}</th>
-                       <th>$Lang::tr{'ip address'}</th>
-                       <th>$Lang::tr{'status'}</th>
-               </tr>
-               <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'}/$sub
-               <td width='45%' align='center'>
+                       <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>';
        }
-       if ( $netsettings{'BLUE_DEV'} ) {
+if ( $netsettings{'BLUE_DEV'} ) {
                my $sub=&General::iporsubtocidr($netsettings{'BLUE_NETMASK'});
                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'}/$sub
-               <td width='45%' align='center'>
+               <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 ( $netsettings{'ORANGE_DEV'} ) {
+if ( $netsettings{'ORANGE_DEV'} ) {
                my $sub=&General::iporsubtocidr($netsettings{'ORANGE_NETMASK'});
                print <<END;
-               <tr><td align='center' bgcolor='$Header::colourorange' width='25%'><a href="/cgi-bin/firewall.cgi"><font size='2' color='white'><b>$Lang::tr{'dmz'}</b></font></a><br>
-               <td width='30%' align='center'>$netsettings{'ORANGE_ADDRESS'}/$sub
-               <td width='45%' align='center'><font color=$Header::colourgreen>Online</font>
+               <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 align='center' bgcolor='$Header::colourvpn' width='25%'><a href="/cgi-bin/vpnmain.cgi"><font size='2' color='white'><b>$Lang::tr{'ipsec'}</b></font></a><br>
-               <td width='30%' align='center'>$ipsecip
-               <td width='45%' align='center'><font color=$Header::colourgreen>Online</font>
+               <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
 }
 
@@ -317,20 +356,21 @@ if (($confighash{'ENABLED'} eq "on") ||
        $ovpnip="$ovpnip/$sub";
 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 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 width='30%' align='center'>$ovpnip
-       <td width='45%' align='center'><font color=$Header::colourgreen>Online</font>
+               <td style='width:30%; text-align:center;'>$ovpnip</td>
+               <td style='width:45%; text-align:center; color:$Header::colourgreen;'>Online</td>
+       </tr>
 END
        }
-print"</td></tr></table>";
+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'){
+       if ($vpnconfig{$key}[0] eq 'on' && $vpnconfig{$key}[3] ne 'host'){
                $showipsec=1;
                $showbox=1;
                last;
@@ -348,7 +388,8 @@ foreach my $dkey (sort { ncmp($ovpnconfig{$a}[1],$ovpnconfig{$b}[1])} keys %ovpn
 if ($showbox){
 # Start of Box wich contains all vpn connections
        &Header::openbox('100%', 'center', $Lang::tr{'vpn'});
-#show ipsec connectiontable
+
+       #show ipsec connectiontable
        if ( $showipsec ) {
                my $ipsecip = $vpnsettings{'VPN_IP'};
                my @status = `/usr/local/bin/ipsecctrl I`;
@@ -358,58 +399,57 @@ if ($showbox){
                my $col="";
                my $count=0;
                print <<END;
-               <br>
-               <table width='80%' class='tbl'>
+               <table class='tbl' style='width:80%;'>
                <tr>
-                       <th width='40%'>$Lang::tr{'ipsec network'}</th>
-                       <th width='30%'>$Lang::tr{'ip address'}</th>
-                       <th width='30%'>$Lang::tr{'status'}</th>
+                       <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') {
+                       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="bgcolor='$color{'color22'}'";
+                                       $col = $color{'color22'};
                                }else{
-                                       $col="bgcolor='$color{'color20'}'";
+                                       $col = $color{'color20'};
                                }
-                               if ($id % 2) {
-                                       print "<tr><td align='left' nowrap='nowrap' bgcolor='$Header::colourvpn'><font color=white>$vpnconfig{$key}[1]</td><td align='center' $col>$vpnip</td>";
-                               } else {
-                                       print "<tr></td><td align='left' nowrap='nowrap' bgcolor='$Header::colourvpn'><font color=white>$vpnconfig{$key}[1]</td><td align='center' $col>$vpnip</td>";
-                               }
-                               my $active = "<td bgcolor='${Header::colourred}' align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b></td>";
+                               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') {
-                                       $active = "<td bgcolor='${Header::colourblue}' align='center'><b><font color='#FFFFFF'>$Lang::tr{'capsclosed'}</font></b></td>";
+                                       $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/ )){
-                                                       $active = "<td align='center' bgcolor='${Header::colourgreen}'><b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b></td>";
+                                                       $activecolor = $Header::colourgreen;
+                                                       $activestatus = $Lang::tr{'capsopen'};
                                                }
                                        }
                                }
-                               print "$active</td>";
+                               print "<td style='text-align:center; color:white; background-color:$activecolor;'><b>$activestatus</b></td>";
+                               print "</tr>";
                        }
                }
-               print "</tr></table>";
+               print "</table>";
        }
 
-###
-# Check if there is any OpenVPN connection configured.
-###
-
+       # Check if there is any OpenVPN connection configured.
        if ( $showovpn ){
                print <<END;
-               <br>
-               <table width='80%' class='tbl'>
+               <br/>
+               <table class='tbl' style='width:80%;'>
                <tr>
-                       <th width='40%'>$Lang::tr{'openvpn network'}</th>
-                       <th width='30%'>$Lang::tr{'ip address'}</th>
-                       <th width='30%'>$Lang::tr{'status'}</th>
+                       <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
 
                # Check if the OpenVPN server for Road Warrior Connections is running and display status information.
@@ -436,9 +476,9 @@ END
                                                $display = $tustate[1];
                                        }
                                        if ($count %2){
-                                               $col="bgcolor='$color{'color22'}'";
+                                               $col = $color{'color22'};
                                        }else{
-                                               $col="bgcolor='$color{'color20'}'";
+                                               $col = $color{'color20'};
                                        }
                                        $active='off';
                                        #make cidr from ip
@@ -447,16 +487,16 @@ END
                                        my $vpnip="$vpnip/$vpnsub";
                                        print <<END;
                                        <tr>
-                                               <td align='left' nowrap='nowrap' bgcolor='$Header::colourovpn'><font color='white'>$ovpnconfig{$dkey}[1]</font></td>
-                                               <td align='center' $col>$vpnip</td>
-                                               <td align='center' bgcolor='$display_colour' ><b><font color='#FFFFFF'>$display</font></b></td>
+                                               <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' align='center'>$Lang::tr{'ovpn no connections'}</td></tr>";
+                       print "<tr><td colspan='3' style='text-align:center;'>$Lang::tr{'ovpn no connections'}</td></tr>";
                }
                print"</table>";
        }
@@ -476,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
@@ -491,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 {
@@ -500,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>";
                }
        }
 }
@@ -512,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>";
        }
 }
 
@@ -520,24 +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) {
        &Header::openbox('100%','center', );
-       print "<table width='80%' class='tbl'>";
+       print "<table class='tbl' style='width:80%;'>";
        print "<tr><th>$Lang::tr{'fwhost hint'}</th></tr>";
-       print "<tr><td align='center' bgcolor=$Header::colourred colspan='3'><font color='white'>$warnmessage</font></table>";
+       print "<tr><td style='color:white; background-color:$Header::colourred;'>$warnmessage</td></tr>";
+    print "</table>";
        &Header::closebox();
 }
 
-print "<div align='center'>";
 &Pakfire::dblist("upgrade", "notice");
 if ( -e "/var/run/need_reboot" ) {
-       print "<br /><br /><font color='red'>$Lang::tr{'needreboot'}!</font>";
+       print "<div style='text-align:center; color:red;'>";
+       print "<br/><br/>$Lang::tr{'needreboot'}!";
+       print "</div>";
 }
 
-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 73e62eab07a37ec869e9b8711c7f6ca591af83eb..8bb4900638b7b1ce431c99c18d568c65f159aa84 100644 (file)
@@ -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};
@@ -316,7 +317,7 @@ print <<END
         <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>Flag</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
@@ -402,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 b58f09e7569cb0c3ce2424f11f6a3f996be4d97d..07bcc77f813bdfd2ed17988103c717584dd37c23 100644 (file)
@@ -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%' class='tbl'>
-<TR>
-<TH WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'></TH>
-<TH WIDTH='30%' ALIGN='CENTER' CLASS='boldbase'><B>IP</B></TH>
-<TH WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'><B>Flag</B></TH>
-<TH WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'><B>Count</B></TH>
-<TH WIDTH='30%' ALIGN='CENTER' CLASS='boldbase'><B>Percent</B></TH>
-</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
 ;
 
@@ -427,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>"; $col="BGCOLOR='$color{'color1'}'";}
-  if ( ($color % 10) == 2 ){print "<TR>"; $col="BGCOLOR='$color{'color2'}'";}
-  if ( ($color % 10) == 3 ){print "<TR>"; $col="BGCOLOR='$color{'color3'}'";}
-  if ( ($color % 10) == 4 ){print "<TR>"; $col="BGCOLOR='$color{'color4'}'";}
-  if ( ($color % 10) == 5 ){print "<TR>"; $col="BGCOLOR='$color{'color5'}'";}
-  if ( ($color % 10) == 6 ){print "<TR>"; $col="BGCOLOR='$color{'color6'}'";}
-  if ( ($color % 10) == 7 ){print "<TR>"; $col="BGCOLOR='$color{'color7'}'";}
-  if ( ($color % 10) == 8 ){print "<TR>"; $col="BGCOLOR='$color{'color8'}'";}
-  if ( ($color % 10) == 9 ){print "<TR>"; $col="BGCOLOR='$color{'color9'}'";}
-  if ( ($color % 10) == 0 ){print "<TR>"; $col="BGCOLOR='$color{'color10'}'";}
+  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' $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='details'></form></TD>";
-  print "<TD ALIGN='CENTER' $col><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' $col><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' $col></TD>";}
-  print "<TD ALIGN='CENTER' $col>$value[$s]</TD>";
-  print "<TD ALIGN='CENTER' $col>$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>"; $col="BGCOLOR='$color{'color1'}'";}
-if ( ($color % 10) == 2 ){print "<TR>"; $col="BGCOLOR='$color{'color2'}'";}
-if ( ($color % 10) == 3 ){print "<TR>"; $col="BGCOLOR='$color{'color3'}'";}
-if ( ($color % 10) == 4 ){print "<TR>"; $col="BGCOLOR='$color{'color4'}'";}
-if ( ($color % 10) == 5 ){print "<TR>"; $col="BGCOLOR='$color{'color5'}'";}
-if ( ($color % 10) == 6 ){print "<TR>"; $col="BGCOLOR='$color{'color6'}'";}
-if ( ($color % 10) == 7 ){print "<TR>"; $col="BGCOLOR='$color{'color7'}'";}
-if ( ($color % 10) == 8 ){print "<TR>"; $col="BGCOLOR='$color{'color8'}'";}
-if ( ($color % 10) == 9 ){print "<TR>"; $col="BGCOLOR='$color{'color9'}'";}
-if ( ($color % 10) == 0 ){print "<TR>"; $col="BGCOLOR='$color{'color10'}'";}
+  my $colorIndex = $color % 10;
+  if($colorIndex == 0) {
+    $colorIndex = 10;
+  }
+  $col="bgcolor='$color{\"color$colorIndex\"}'";
+  print "<tr>";
 
 if ( $linesjc ne "0")
 {
@@ -474,18 +466,18 @@ $dif = $linesjc - $total;
 $percent = $dif * 100 / $linesjc;
 $percent = sprintf("%.f", $percent);
 print <<END
-<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>
+<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
 ;
 
@@ -504,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 7a32a906f087766d7c125641a81bff68385f393e..5b0db62314df237f3db248040b7e14815e722caa 100644 (file)
@@ -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%' CLASS='tbl'>
-<TR>
-<TH WIDTH='10%' ALIGN='CENTER' CLASS='boldbase'></TH>
-<TH WIDTH='33%' ALIGN='CENTER' CLASS='boldbase'><B>Port</B></TH>
-<TH WIDTH='33%' ALIGN='CENTER' CLASS='boldbase'><B>Count</B></TH>
-<TH WIDTH='33%' ALIGN='CENTER' CLASS='boldbase'><B>Percent</B></TH>
-</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
 ;
 
@@ -429,37 +429,29 @@ 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>"; $col="BGCOLOR='$color{'color1'}'";}
-  if ( ($color % 10) == 2 ){print "<TR>"; $col="BGCOLOR='$color{'color2'}'";}
-  if ( ($color % 10) == 3 ){print "<TR>"; $col="BGCOLOR='$color{'color3'}'";}
-  if ( ($color % 10) == 4 ){print "<TR>"; $col="BGCOLOR='$color{'color4'}'";}
-  if ( ($color % 10) == 5 ){print "<TR>"; $col="BGCOLOR='$color{'color5'}'";}
-  if ( ($color % 10) == 6 ){print "<TR>"; $col="BGCOLOR='$color{'color6'}'";}
-  if ( ($color % 10) == 7 ){print "<TR>"; $col="BGCOLOR='$color{'color7'}'";}
-  if ( ($color % 10) == 8 ){print "<TR>"; $col="BGCOLOR='$color{'color8'}'";}
-  if ( ($color % 10) == 9 ){print "<TR>"; $col="BGCOLOR='$color{'color9'}'";}
-  if ( ($color % 10) == 0 ){print "<TR>"; $col="BGCOLOR='$color{'color10'}'";}
+  my $colorIndex = $color % 10;
+  if($colorIndex == 0) {
+    $colorIndex = 10;
+  }
+  $col="bgcolor='$color{\"color$colorIndex\"}'";
+  print "<tr>";
 
   $color++;
-  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='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>";
+  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>"; $col="BGCOLOR='$color{'color1'}'";}
-if ( ($color % 10) == 2 ){print "<TR>"; $col="BGCOLOR='$color{'color2'}'";}
-if ( ($color % 10) == 3 ){print "<TR>"; $col="BGCOLOR='$color{'color3'}'";}
-if ( ($color % 10) == 4 ){print "<TR>"; $col="BGCOLOR='$color{'color4'}'";}
-if ( ($color % 10) == 5 ){print "<TR>"; $col="BGCOLOR='$color{'color5'}'";}
-if ( ($color % 10) == 6 ){print "<TR>"; $col="BGCOLOR='$color{'color6'}'";}
-if ( ($color % 10) == 7 ){print "<TR>"; $col="BGCOLOR='$color{'color7'}'";}
-if ( ($color % 10) == 8 ){print "<TR>"; $col="BGCOLOR='$color{'color8'}'";}
-if ( ($color % 10) == 9 ){print "<TR>"; $col="BGCOLOR='$color{'color9'}'";}
-if ( ($color % 10) == 0 ){print "<TR>"; $col="BGCOLOR='$color{'color10'}'";}
+  my $colorIndex = $color % 10;
+  if($colorIndex == 0) {
+    $colorIndex = 10;
+  }
+  $col="bgcolor='$color{\"color$colorIndex\"}'";
+  print "<tr>";
 
 if ( $linesjc ne "0")
 {
@@ -468,17 +460,17 @@ $dif = $linesjc - $total;
 $percent = $dif * 100 / $linesjc;
 $percent = sprintf("%.f", $percent);
 print <<END
-<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>
+<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
 ;
 
@@ -487,6 +479,7 @@ END
 &Header::closepage();
 
 sub findkey {
+  my $v;
   foreach $v (@keytabjc) {
     if ($tabjc{$v} eq $_[0]) {
       delete $tabjc{$v};
@@ -497,7 +490,9 @@ sub findkey {
     }
   }
 }
+
 sub checkversion {
-        #Automatic Updates is disabled
-        return "0","0";
-        }
+    #Automatic Updates is disabled
+    return "0","0";
+}
+
index a1a05b289a070f602208dae2ce98dc36b508549b..1d1844e7c4b0ffeee14f41a9cb6667a86d2cb532 100644 (file)
@@ -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;
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 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..2aec3cce1d5a5d81c04cf3c8e7a66de6119f2fe6 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>MB read</b></td><td align='center' class='boldbase'><b>MB writen</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
 ;
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 b075cc54d9bac8d92fc292e061a5d500024f47d2..ceb63d45669ab1799292b5b3ccb9ccffa237eba7 100644 (file)
@@ -19,7 +19,7 @@
 #                                                                             #
 ###############################################################################
 ###
-# Based on IPFireCore 55
+# Based on IPFireCore 76
 ###
 use CGI;
 use CGI qw/:standard/;
@@ -80,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'} = '';
@@ -88,6 +90,8 @@ $cgiparams{'DCOMPLZO'} = 'off';
 $cgiparams{'MSSFIX'} = '';
 $cgiparams{'number'} = '';
 $cgiparams{'PMTU_DISCOVERY'} = '';
+$cgiparams{'DAUTH'} = '';
+$cgiparams{'DCIPHER'} = '';
 $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"); }
@@ -222,15 +226,15 @@ sub checkportinc
        }
 }
 
-# Darren Critchley - certain ports are reserved for IPFire 
-# TCP 67,68,81,222,445
+# Darren Critchley - certain ports are reserved for IPFire
+# TCP 67,68,81,222,444
 # 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 @tcp_reserved = (81,222,444);
        my $prt = $_[0]; # the port or range
        my $ryn = $_[1]; # tells us whether or not it is a port range
        my $prot = $_[2]; # protocol
@@ -266,6 +270,7 @@ sub disallowreserved
        return;
 }
 
+
 sub writeserverconf {
     my %sovpnsettings = ();  
     my @temp = ();  
@@ -287,14 +292,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/dh1024.pem\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') 
@@ -302,8 +307,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"; }
@@ -338,10 +343,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.
@@ -357,6 +362,7 @@ sub writeserverconf {
     print CONF "status-version 1\n";
     print CONF "status /var/log/ovpnserver.log 30\n";
     print CONF "cipher $sovpnsettings{DCIPHER}\n";
+       print CONF "auth $sovpnsettings{DAUTH}\n";
     if ($sovpnsettings{DCOMPLZO} eq 'on') {
         print CONF "comp-lzo\n";
     }
@@ -775,6 +781,7 @@ 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'};
     my @temp=();
     
     if ($cgiparams{'FRAGMENT'} eq '') {
@@ -969,9 +976,11 @@ 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/dh1024.pem\n";
   print SERVERCONF "# Cipher\n"; 
-  print SERVERCONF "cipher AES-256-CBC\n"; 
+  print SERVERCONF "cipher $cgiparams{'DCIPHER'}\n";
+  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";
@@ -996,6 +1005,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'});
@@ -1058,12 +1068,14 @@ 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 "# HMAC algorithm\n";
+  print CLIENTCONF "auth $cgiparams{'DAUTH'}\n";
   print CLIENTCONF "pkcs12 ${General::swroot}/ovpn/certs/$cgiparams{'NAME'}.p12\r\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"; 
@@ -1093,21 +1105,16 @@ 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($cgiparams{'DDEST_PORT'},$cgiparams{'DPROTOCOL'});
     }
-       
     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'});
     
@@ -1163,11 +1170,6 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'save'} && $cgiparams{'TYPE'} eq '' && $cg
        $errormessage = $Lang::tr{'invalid port'};
        goto SETTINGS_ERROR;
     }
-       
-       if ($cgiparams{'DDEST_PORT'} <= 1023) {
-               $errormessage = $Lang::tr{'ovpn port in root range'};
-               goto SETTINGS_ERROR;
-       }
 
     $vpnsettings{'ENABLED_BLUE'} = $cgiparams{'ENABLED_BLUE'};
     $vpnsettings{'ENABLED_ORANGE'} =$cgiparams{'ENABLED_ORANGE'};
@@ -1193,7 +1195,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);
 
@@ -1203,37 +1205,64 @@ 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);
-    #&writeserverconf();
+       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")
+       }
 ###
 ### 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();
@@ -1241,6 +1270,107 @@ 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='15%'> </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'}
+               </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 ($cgiparams{'DH_NAME'} !~ /dh1024.pem/) {
+        $errormessage = $Lang::tr{'dh name is invalid'};
+        goto UPLOADCA_ERROR;
+       }
+    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{'certificate file move failed'}: $!";
+                       unlink ($filename);
+                       goto UPLOADCA_ERROR;
+               }
+    }
+
+
 ###
 ### Upload CA Certificate
 ###
@@ -1259,7 +1389,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
@@ -1317,7 +1447,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`;
@@ -1394,10 +1524,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'>
@@ -1429,7 +1559,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'}:");
@@ -1695,7 +1825,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',
                        '-keyout', "${General::swroot}/ovpn/ca/cakey.pem",
                        '-out', "${General::swroot}/ovpn/ca/cacert.pem",
                        '-config',"${General::swroot}/ovpn/openssl/ovpn.cnf")) {
@@ -1726,7 +1856,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',
@@ -1778,8 +1908,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");
@@ -1797,7 +1926,7 @@ END
     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'});
@@ -1806,7 +1935,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>
@@ -1839,19 +1968,35 @@ END
            }
            print ">$country</option>";
        }
-       print <<END
-           </select></td>
-           <td colspan='2'>&nbsp;</td></tr>
+    print <<END;
+       </select></td>
+       <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='4'><br><br></td></tr>
+       <tr><td class='base' colspan='4' align='center'>
+           <b><font color='${Header::colourred}'>$Lang::tr{'capswarning'}:</font></b>
+               $Lang::tr{'ovpn generating the root and host certificates'}
+               </td>
+       </tr>
+       <tr><td class='base' colspan='4' align='center'>
+               $Lang::tr{'dh key warn'}
+               </td>
+       </tr>
+
+       <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>
@@ -1862,12 +2007,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)
@@ -2000,12 +2146,14 @@ if ($confighash{$cgiparams{'KEY'}}[3] eq 'net'){
    print CLIENTCONF "# Auth. Client\n"; 
    print CLIENTCONF "tls-client\n"; 
    print CLIENTCONF "# Cipher\n"; 
-   print CLIENTCONF "cipher AES-256-CBC\n"; 
+   print CLIENTCONF "cipher $confighash{$cgiparams{'KEY'}}[40]\n";
+   print CLIENTCONF "# HMAC algorithm\n";
+   print CLIENTCONF "auth $confighash{$cgiparams{'KEY'}}[39]\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'}}[30] eq 'on') {
    print CLIENTCONF "# Enable Compression\n";
    print CLIENTCONF "comp-lzo\r\n";
      }
@@ -2100,6 +2248,7 @@ 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";
+       print CLIENTCONF "auth $vpnsettings{DAUTH}\r\n";
     if ($vpnsettings{DCOMPLZO} eq 'on') {
         print CLIENTCONF "comp-lzo\r\n";
     }
@@ -2208,7 +2357,7 @@ if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') {
     } else {
        $errormessage = $Lang::tr{'invalid key'};
     }
-
+       &General::firewall_reload();
 
 ###
 ### Download PKCS12 file
@@ -2229,7 +2378,7 @@ if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') {
 
     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`;
@@ -2241,6 +2390,29 @@ if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') {
        &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 Certificate Revoke List
 ###
@@ -2249,7 +2421,7 @@ if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') {
 
     if ( -f "${General::swroot}/ovpn/crls/cacrl.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{'crl'}:");
        my $output = `/usr/bin/openssl crl -text -noout -in ${General::swroot}/ovpn/crls/cacrl.pem`;
@@ -2280,19 +2452,22 @@ if ($confighash{$cgiparams{'KEY'}}[3] eq 'net') {
 #    }
 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';
+               $cgiparams{'PMTU_DISCOVERY'} = 'off';
+    }
+    if ($cgiparams{'DAUTH'} eq '') {
+               $cgiparams{'DAUTH'} = 'SHA1';
     }
     $checked{'CLIENT2CLIENT'}{'off'} = '';
     $checked{'CLIENT2CLIENT'}{'on'} = '';
@@ -2300,7 +2475,6 @@ 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';
@@ -2318,7 +2492,14 @@ ADV_ERROR:
     $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'}{'ecdsa-with-SHA1'} = '';
+    $selected{'DAUTH'}{'SHA1'} = '';
+    $selected{'DAUTH'}{$cgiparams{'DAUTH'}} = 'SELECTED';
+
     &Header::showhttpheaders();
     &Header::openpage($Lang::tr{'status ovpn'}, 1, '');
     &Header::openbigbox('100%', 'LEFT', '', $errormessage);    
@@ -2329,34 +2510,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
 ;
 
@@ -2371,42 +2552,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>
+       </tr>
+       <tr>
          <td class='base'>mssfix</td>
          <td><input type='checkbox' name='MSSFIX' $checked{'MSSFIX'}{'on'} /></td>
-         <td>Default: on</td>
-         </tr>
-
+       </tr>
        <tr>
                <td class='base'>$Lang::tr{'ovpn mtu-disc'}</td>
                <td><input type='radio' name='PMTU_DISCOVERY' value='yes' $checked{'PMTU_DISCOVERY'}{'yes'} /> $Lang::tr{'ovpn mtu-disc yes'}</td>
@@ -2416,46 +2594,55 @@ 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='15%'></td> <td width='30%'> </td><td width='25%'> </td><td width='30%'></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>
+               <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>
                        </select>
-               </td>   
+               </td>
+       </tr>
 </table>
--->
+
 <hr size='1'>
-    <table width='100%'>
-    <tr>
-       <td class'base'><b>$Lang::tr{'log-options'}</b></td>
-    </tr>
+<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'>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>      
+    <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='ecdsa-with-SHA1'         $selected{'DAUTH'}{'ecdsa-with-SHA1'}>ECDSA-SHA1 (160 $Lang::tr{'bit'})</option>
+                               <option value='SHA1'                    $selected{'DAUTH'}{'SHA1'}>SHA1 (160 $Lang::tr{'bit'})</option>
+                       </select>
+               </td>
+               <td>Default: <span class="base">SHA1 (160 $Lang::tr{'bit'})</span></td>
 </table><hr>
+
 END
 
 if ( -e "/var/run/openvpn.pid"){
@@ -2533,7 +2720,7 @@ if ($cgiparams{'ACTION'} eq "edit"){
        
        &Header::openbox('100%', 'LEFT', $Lang::tr{'ccd modify'});
 
-       print <<END
+    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>
@@ -2547,7 +2734,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>
@@ -2577,7 +2764,7 @@ END
                print "$Lang::tr{'ccd noaddnet'}<br><hr>";
        }
        
-       print <<END
+    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>
@@ -2595,7 +2782,7 @@ 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='hidden' name='ACTION' value='edit'/>
@@ -2631,7 +2818,7 @@ END
 #
 #      <td><b>$Lang::tr{'protocol'}</b></td>
 # protocol temp removed 
-    print <<END
+    print <<END;
     <table width='100%' cellpadding='2' cellspacing='0' class='tbl'>
     <tr>
        <th><b>$Lang::tr{'common name'}</b></th>
@@ -2710,7 +2897,7 @@ END
        }
        
        print "</table>";
-       print <<END
+    print <<END;
        <table width='100%' border='0' cellpadding='2' cellspacing='0'>
        <tr><td></td></tr>
        <tr><td></td></tr>
@@ -2819,13 +3006,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>
@@ -2846,7 +3033,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>
@@ -2858,6 +3045,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);
@@ -2992,8 +3180,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]);
@@ -3010,6 +3199,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]);
 
 
 ###
@@ -3029,6 +3220,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);
 
@@ -3065,7 +3258,7 @@ foreach my $dkey (keys %confighash) {
        }
 
 ###
-# Check im Dest Port is vaild
+# Check if Dest Port is vaild
 ###
 
 foreach my $dkey (keys %confighash) {
@@ -3082,7 +3275,7 @@ foreach my $dkey (keys %confighash) {
        
   $key = &General::findhasharraykey (\%confighash);
 
-       foreach my $i (0 .. 39) { $confighash{$key}[$i] = "";}
+       foreach my $i (0 .. 41) { $confighash{$key}[$i] = "";}
 
        $confighash{$key}[0] = 'off';
        $confighash{$key}[1] = $n2nname[0];
@@ -3104,7 +3297,8 @@ foreach my $dkey (keys %confighash) {
        $confighash{$key}[30] = $complzoactive;
        $confighash{$key}[31] = $n2ntunmtu[1];
        $confighash{$key}[38] = $n2nmtudisc[1]; 
-
+       $confighash{$key}[39] = $n2nauth[1];
+       $confighash{$key}[40] = $n2ncipher[1];
 
   &General::writehasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash);
  
@@ -3124,7 +3318,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>
@@ -3133,16 +3327,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 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
@@ -3160,7 +3356,7 @@ END
        }       
        &Header::closebigbox();
        &Header::closepage();
-       exit(0);        
+       exit(0);
 
 
 ##
@@ -3213,33 +3409,35 @@ 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];
        } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'save'}) {
        $cgiparams{'REMARK'} = &Header::cleanhtml($cgiparams{'REMARK'});
        
@@ -3549,7 +3747,7 @@ if ($cgiparams{'TYPE'} eq 'net') {
                  goto VPNCONF_ERROR;
                }
 
-       if ($cgiparams{'OVPN_MGMT'} eq  '') {
+       if ($cgiparams{'OVPN_MGMT'} eq '') {
                $cgiparams{'OVPN_MGMT'} = $cgiparams{'DEST_PORT'};              
                }
        
@@ -3558,8 +3756,13 @@ 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 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)$/)) {
@@ -3771,6 +3974,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'}))) {
@@ -3843,7 +4048,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")) {
@@ -3912,7 +4117,7 @@ if ($cgiparams{'TYPE'} eq 'net') {
        
        if (! $key) {
            $key = &General::findhasharraykey (\%confighash);
-           foreach my $i (0 .. 38) { $confighash{$key}[$i] = "";}
+           foreach my $i (0 .. 41) { $confighash{$key}[$i] = "";}
        }
        $confighash{$key}[0]            = $cgiparams{'ENABLED'};
        $confighash{$key}[1]            = $cgiparams{'NAME'};
@@ -3931,13 +4136,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'};
@@ -3955,8 +4160,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);
        
@@ -4066,11 +4272,12 @@ if ($cgiparams{'TYPE'} eq 'net') {
 ###    
         $cgiparams{'MSSFIX'} = 'on';
         $cgiparams{'FRAGMENT'} = '1300';
-       $cgiparams{'PMTU_DISCOVERY'} = 'off';
+        $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") {
@@ -4131,10 +4338,35 @@ if ($cgiparams{'TYPE'} eq 'net') {
     }
     $checked{'PMTU_DISCOVERY'}{$cgiparams{'PMTU_DISCOVERY'}} = 'checked=\'checked\'';
 
+    $selected{'DAUTH'}{'whirlpool'} = '';
+    $selected{'DAUTH'}{'SHA512'} = '';
+    $selected{'DAUTH'}{'SHA384'} = '';
+    $selected{'DAUTH'}{'SHA256'} = '';
+    $selected{'DAUTH'}{'ecdsa-with-SHA1'} = '';
+    $selected{'DAUTH'}{'SHA1'} = '';
+    $selected{'DAUTH'}{$cgiparams{'DAUTH'}} = 'SELECTED';
+
+    $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'}{'RC2-CBC'} = '';
+    $selected{'DCIPHER'}{'DES-CBC'} = '';
+    $selected{'DCIPHER'}{'RC2-64-CBC'} = '';
+    $selected{'DCIPHER'}{'RC2-40-CBC'} = '';
+    $selected{'DCIPHER'}{$cgiparams{'DCIPHER'}} = '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'});
@@ -4160,28 +4392,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'}) {
@@ -4189,58 +4418,95 @@ 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><input type='TEXT' name='OVPN_SUBNET' value='$cgiparams{'OVPN_SUBNET'}' /></td>
 
-       <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'}
-                       <input type='radio' name='PMTU_DISCOVERY' value='no' $checked{'PMTU_DISCOVERY'}{'no'} /> $Lang::tr{'ovpn mtu-disc no'}
-                       <input type='radio' name='PMTU_DISCOVERY' value='off' $checked{'PMTU_DISCOVERY'}{'off'} /> $Lang::tr{'ovpn mtu-disc off'}
-               </td>
-       </tr>
+                       <td class='boldbase'>$Lang::tr{'destination port'}:</td>
+                       <td><input type='TEXT' name='DEST_PORT' value='$cgiparams{'DEST_PORT'}' size='5' /></td>
+
+               <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' 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 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 (196 $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>
+                                       <option value='RC2-CBC'         $selected{'DCIPHER'}{'RC2-CBC'}>RC2-CBC (128 $Lang::tr{'bit'})</option>
+                                       <option value='DES-CBC'         $selected{'DCIPHER'}{'DES-CBC'}>DES-CBC (64 $Lang::tr{'bit'} not recommended)</option>
+                                       <option value='RC2-64-CBC'      $selected{'DCIPHER'}{'RC2-64-CBC'}>RC2-CBC (64 $Lang::tr{'bit'} not recommended)</option>
+                                       <option value='RC2-40-CBC'      $selected{'DCIPHER'}{'RC2-40-CBC'}>RC2-CBC (40 $Lang::tr{'bit'} not recommended)</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='ecdsa-with-SHA1' $selected{'DAUTH'}{'ecdsa-with-SHA1'}>ECDSA-SHA1 (160 $Lang::tr{'bit'})</option>
+                                       <option value='SHA1'            $selected{'DAUTH'}{'SHA1'}>SHA1 (160 $Lang::tr{'bit'} Default)</option>
+                               </select>
+                       </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><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'>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'>$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'}
+                               <input type='radio' name='PMTU_DISCOVERY' value='no' $checked{'PMTU_DISCOVERY'}{'no'} /> $Lang::tr{'ovpn mtu-disc no'}
+                               <input type='radio' name='PMTU_DISCOVERY' value='off' $checked{'PMTU_DISCOVERY'}{'off'} /> $Lang::tr{'ovpn mtu-disc off'}
+                       </td>
+               </tr>
 
 END
 ;
@@ -4304,7 +4570,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>
@@ -4329,7 +4595,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>
@@ -4363,7 +4629,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>
@@ -4379,7 +4645,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>
@@ -4555,18 +4821,24 @@ END
     
 #default setzen
     if ($cgiparams{'DCIPHER'} eq '') {
-       $cgiparams{'DCIPHER'} =  'AES-256-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'} = '';
@@ -4582,26 +4854,37 @@ 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'}{'SEED-CBC'} = '';
+    $selected{'DCIPHER'}{'DES-EDE-CBC'} = '';
+    $selected{'DCIPHER'}{'CAST5-CBC'} = '';
+    $selected{'DCIPHER'}{'BF-CBC'} = '';
     $selected{'DCIPHER'}{'RC2-CBC'} = '';
-    $selected{'DCIPHER'}{'RC2-40-CBC'} = '';
+    $selected{'DCIPHER'}{'DES-CBC'} = '';
     $selected{'DCIPHER'}{'RC2-64-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'}{'CAMELLIA-128-CBC'} = '';
-    $selected{'DCIPHER'}{'CAMELLIA-192-CBC'} = '';
-    $selected{'DCIPHER'}{'CAMELLIA-256-CBC'} = '';
+    $selected{'DCIPHER'}{'RC2-40-CBC'} = '';
     $selected{'DCIPHER'}{$cgiparams{'DCIPHER'}} = 'SELECTED';
+
+    $selected{'DAUTH'}{'whirlpool'} = '';
+    $selected{'DAUTH'}{'SHA512'} = '';
+    $selected{'DAUTH'}{'SHA384'} = '';
+    $selected{'DAUTH'}{'SHA256'} = '';
+    $selected{'DAUTH'}{'ecdsa-with-SHA1'} = '';
+    $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'} = '';
@@ -4618,6 +4901,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 = "";
@@ -4629,7 +4922,7 @@ END
        $activeonrun = "disabled='disabled'";
     }  
     &Header::openbox('100%', 'LEFT', $Lang::tr{'global settings'});    
-       print <<END     
+       print <<END;
     <table width='100%' border=0>
     <form method='post'>
     <td width='25%'>&nbsp;</td>
@@ -4649,7 +4942,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>
@@ -4662,27 +4955,30 @@ 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 (196 $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>
+                               <option value='RC2-CBC' $selected{'DCIPHER'}{'RC2-CBC'}>RC2-CBC (128 $Lang::tr{'bit'})</option>
+                               <option value='DES-CBC' $selected{'DCIPHER'}{'DES-CBC'}>DES-CBC (64 $Lang::tr{'bit'} not recommended)</option>
+                               <option value='RC2-64-CBC' $selected{'DCIPHER'}{'RC2-64-CBC'}>RC2-CBC (64 $Lang::tr{'bit'} not recommended)</option>
+                               <option value='RC2-40-CBC' $selected{'DCIPHER'}{'RC2-40-CBC'}>RC2-CBC (40 $Lang::tr{'bit'} not recommended)</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='CAMELLIA-256-CBC' $selected{'DCIPHER'}{'CAMELLIA-256-CBC'}>CAMELLIA-256-CBC</option>
-               <option value='CAMELLIA-192-CBC' $selected{'DCIPHER'}{'CAMELLIA-192-CBC'}>CAMELLIA-192-CBC</option>
-               <option value='CAMELLIA-128-CBC' $selected{'DCIPHER'}{'CAMELLIA-128-CBC'}>CAMELLIA-128-CBC</option>
-               <option value='AES-256-CBC' $selected{'DCIPHER'}{'AES-256-CBC'}>AES-256-CBC</option>
-               <option value='AES-192-CBC' $selected{'DCIPHER'}{'AES-192-CBC'}>AES-192-CBC</option>
-               <option value='AES-128-CBC' $selected{'DCIPHER'}{'AES-128-CBC'}>AES-128-CBC</option>
-               <option value='CAST5-CBC' $selected{'DCIPHER'}{'CAST5-CBC'}>CAST5-CBC</option>
-               <option value='RC2-64-CBC' $selected{'DCIPHER'}{'RC2-64-CBC'}>RC2-64-CBC</option>
-               <option value='RC2-40-CBC' $selected{'DCIPHER'}{'RC2-40-CBC'}>RC2-40-CBC</option>
-               <option value='RC2-CBC' $selected{'DCIPHER'}{'RC2-CBC'}>RC2-CBC</option>
-               <option value='BF-CBC' $selected{'DCIPHER'}{'BF-CBC'}>BF-CBC</option>
-               <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>
-       </select></td></tr>
+       </tr>
     <tr><td colspan='4'><br><br></td></tr>
 END
 ;                                 
@@ -4710,163 +5006,15 @@ END
     }
     print "</form></table>";
     &Header::closebox();
-    &Header::openbox('100%', 'LEFT', "$Lang::tr{'certificate authorities'}");
-    print <<EOF#'
-    <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>
-EOF
-    ;
-    my $col1="bgcolor='$color{'color22'}'";
-       my $col2="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' />
-       </td></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'}' />
-       </td></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' />
-       </td></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
-       ;
-    }
-
-    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'><br></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%' cellspacing='1' cellpadding='0' class='tbl'>
@@ -4941,7 +5089,7 @@ END
 #EXITING       -- A graceful exit is in progress.
 ####
 
-               if (($tustate[1] eq 'CONNECTED') || ($tustate[1] eq 'WAIT')) {
+               if ($tustate[1] eq 'CONNECTED') {
                        $col1="bgcolor='${Header::colourgreen}'";
                        $active = "<b><font color='#FFFFFF'>$Lang::tr{'capsopen'}</font></b>";
                }else {
@@ -4972,7 +5120,7 @@ END
 }
 
 
-       print <<END
+    print <<END;
        <td align='center' $col1>$active</td>
                
        <form method='post' name='frm${key}a'><td align='center' $col>
@@ -4983,7 +5131,7 @@ END
 END
        ;
        if ($confighash{$key}[4] eq 'cert') {
-           print <<END
+           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'}' />
@@ -4994,7 +5142,7 @@ END
            print "<td>&nbsp;</td>";
        }
        if ($confighash{$key}[4] eq 'cert' && -f "${General::swroot}/ovpn/certs/$confighash{$key}[1].p12") { 
-           print <<END
+           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'}' />
@@ -5002,7 +5150,7 @@ END
            </td></form>
 END
        ; } elsif ($confighash{$key}[4] eq 'cert') {
-           print <<END
+           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'}' />
@@ -5038,45 +5186,215 @@ 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>
+               <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();
+       }
+    &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'}'";
+    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' />
+               </td></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'}' />
+               </td></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' />
+               </td></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
+               ;
+    }
 
+    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' 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>
+               <td class='base' nowrap='nowrap'>$Lang::tr{'ovpn dh name'}:</td>
+               <td nowrap='nowrap'><input type='text' name='DH_NAME' value='$cgiparams{'DH_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 dh key'}' /></td>
+       </tr>
+       <tr><td colspan='4'><br></td></tr>
+       <tr>
+               <td nowrap='nowrap'><input type='submit' name='ACTION' value='$Lang::tr{'generate dh key'}' /></td>
+               <td colspan='4' align='right'><input type='submit' name='ACTION' value='$Lang::tr{'show dh'}' /></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
+       ;
+
+    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();
 
index eb5b8abd04584c2ca06072ebf47259fbbba7ee32..04f13314244b5a1e5e42b9dc3aca8feecc729e7b 100644 (file)
@@ -88,10 +88,10 @@ close FILE;
 print <<END;
        <table width='35%' class='tbl'>
                <tr>
-                       <th align=center colspan='2'bgcolor='$color{'color22'}' >
+                       <th align='center' colspan='2' bgcolor='$color{'color22'}' >
                                <b>$Lang::tr{'protocol'}</b>
                        </th>
-                       <th align='center'bgcolor='$color{'color22'}' >
+                       <th align='center' bgcolor='$color{'color22'}' >
                                <b>$Lang::tr{'status'}</b>
                        </th>
                </tr>
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
index ca6892bf151b0ce18482da67b014207641d115bc..edec826963f98deb30ebf01fe1c1a307252da73f 100644 (file)
@@ -432,8 +432,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 +443,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 +530,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
 ;
 }
index 6f78deb09acf93eac281c9d763d4a80a667539ec..c4cff478928133814504953c403274c7801f46ec 100644 (file)
@@ -1206,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>
@@ -2236,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>
index b0b6006ab4e7d092491ae978ecae896fc75e3e6d..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) {
@@ -772,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();
 
@@ -796,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++ )
@@ -807,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++ )
@@ -1079,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>
@@ -1123,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
@@ -1184,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>
@@ -1209,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>
@@ -1249,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
@@ -1314,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]' />
@@ -1324,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
@@ -1372,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
@@ -1407,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 84e08474c87fa8f425b207017f580a76e41859f3..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,7 +120,7 @@ $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();
 }
 
@@ -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 d48edf80fdcc4901a612e7bf8264efcfc9521178..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
index fbff41fb9d0cc22b324ad702af371b2bcac92222..6bfa5bbbe81a5607b91deb6991a70b0ee055e72c 100644 (file)
@@ -200,8 +200,8 @@ END
                                print "<td align='left' $col width='31%'>$_</td> ";
                                my $status = isautorun($_,$col);
                                print "$status ";
-                               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> ";
+                               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;
 
@@ -234,12 +234,12 @@ sub isautorun{
        my $init = `find /etc/rc.d/rc3.d/S??${cmd} 2>/dev/null`;
        chomp ($init);
        if ($init ne ''){
-               $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>";
+               $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' $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>";
+               $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;
index dd6a03ca8735b535c2b11341fbc07aef7358b672..998f9f8f48e1621abaf2b91ed649db03cedbac18 100644 (file)
@@ -73,7 +73,7 @@ END
 <div align='center'>
 <table width='100%' bgcolor='#ffffff'>
 <tr><td align='center'>
-<br /><br /><img src='/ipfire_big.gif' /><br /><br /><br />
+<br /><br /><img src='/images/IPFire.png' /><br /><br /><br />
 </td></tr>
 </table>
 <br />
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 2b03eff8adba575533a227866d7df6f76eabfe5d..07dfa2677c970e49a9be6ae9ffe5f209fb26616c 100644 (file)
@@ -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 7e90649d89aa2c277f97b65f2b4ea4a9e038bbf6..f5ec50079a64dd9ff0f0577a3ed6e2e1cb437624 100644 (file)
@@ -1225,7 +1225,7 @@ END
     } else {
        $errormessage = $Lang::tr{'invalid key'};
     }
-
+       &General::firewall_reload();
 ###
 ### Choose between adding a host-net or net-net connection
 ###
@@ -1407,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'};
@@ -2520,7 +2519,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) ||
                <td>
                        <label>
                                <input type='checkbox' name='ONLY_PROPOSED' $checked{'ONLY_PROPOSED'} />
-                               IKE+ESP: $Lang::tr{'use only proposed settings'}</td>
+                               IKE+ESP: $Lang::tr{'use only proposed settings'}
                        </label>
                </td>
        </tr>
@@ -2612,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'}'>
index 58c6376feac996a2bdb018370bdc0e63ce9cf48e..5b2490da06c036ee7e430538e09dd11c38e43fc4 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)" 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`;
 }
 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
 ;
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";
index 9f3e25b7a49c9d7fc828f1833973d7a03c477d38..0e990d68114e74e5a9478aba8b4a8b39b08e3c1b 100644 (file)
@@ -274,6 +274,8 @@ table {
        border-top: 1px solid lightgrey;
        border-bottom: 1px solid lightgrey;
        background: #cccccc;
+       padding-left: 0.5em;
+       padding-right: 0.5em;
 }
 
 .tbl th:first-child {
@@ -291,7 +293,10 @@ table {
 .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;
 }
index 44ed9b75841600cdc1703ca6702ed6c8b5575ef0..0c47cd456bbee33e732d848e2601304e22f133a8 100644 (file)
@@ -80,7 +80,7 @@ EOF
        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><span>'.$menu->{$k1}->{'caption'}.'</span></a>';
+               print '<li class="has-sub "><a href="#"><span>'.$menu->{$k1}->{'caption'}.'</span></a>';
                my $submenus = $menu->{$k1}->{'subMenu'};
                &showsubmenu($submenus) if ($submenus);
                print "</li>";
@@ -110,7 +110,7 @@ sub openpage {
        &genmenu();
 
        my $headline = "IPFire";
-       if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
+       if (($settings{'WINDOWWITHHOSTNAME'} eq 'on') || ($settings{'WINDOWWITHHOSTNAME'} eq '')) {
                $headline =  "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}";
        }
 
@@ -128,6 +128,12 @@ print <<END;
        <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) {
@@ -232,7 +238,12 @@ sub openbox {
        $align = $_[1];
        $caption = $_[2];
 
-       print "<div class='post' align='$align'>\n";
+       if($align eq 'center') {
+               print "<div class='post' align='center'>\n"
+       }
+       else {
+               print "<div class='post'>\n";
+       }
 
        if ($caption) {
                print "<h2>$caption</h2>\n";
index 47dbcb00138bf58bf4381cc7df8ad1014a3b5086..e8514adfbf8e241de29c14353f6f9303523e0e7b 100644 (file)
@@ -151,7 +151,7 @@ sub openpage {
     $extrahead
     <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);
@@ -284,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 c93234bf394b6ed79cb53f87567862780c919b47..5288baaa3f4750158e0b0974fb2d11e2e8857392 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',
@@ -10,7 +10,6 @@
 '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:',
@@ -34,6 +33,7 @@
 'Level7 rule' => 'Level7-Regel',
 'Local VPN IP' => 'Internes Netzwerk (GREEN)',
 'MTU' => 'MTU Size',
+'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',
 'advproxy banned mac clients' => 'Gesperrte MAC-Adressen (eine pro Zeile)',
 'advproxy cache management' => 'Cacheverwaltung',
 'advproxy cache replacement policy' => 'Cache Ersetzungsrichtlinie',
+'advproxy cache-digest' => 'Cache-Digest-Erstellung aktivieren',
 'advproxy chgwebpwd ERROR' => 'F E H L E R :',
 'advproxy chgwebpwd SUCCESS' => 'E R F O L G :',
 'advproxy chgwebpwd change password' => 'Passwort Ã¤ndern',
 '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',
 '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ß.',
 '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',
 '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',
 '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 Key',
+'dh key warn' => 'Keys mit 1024 und 2048 Bit können mehreren Minuten, 3072 und 4096 Bit bis zu mehreren Stunden dauern. Bitte haben sie Geduld.',
+'dh name is invalid' => 'Name ist ungültig, bitte "dh1024.pem" verwenden.',
 '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' => 'Externe IP-Adresse',
+'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.',
 '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',
 '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',
 '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',
 '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 sourceip' => 'Quelladresse (IP/MAC-Adresse oder Netzwerk):',
 'fwdfw std network' => 'Standard Netzwerke:',
 'fwdfw target' => 'Ziel',
-'fwdfw targetip' => 'Zieladresse (IP/MAC-Adresse oder Netzwerk):',
+'fwdfw targetip' => 'Zieladresse (IP-Adresse oder Netzwerk):',
 'fwdfw till' => 'Bis:',
 'fwdfw time' => 'Zeitrahmen',
 'fwdfw timeframe' => 'Zeitrahmen hinzufügen',
 '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',
 'fwhost wo subnet' => '(Ohne Subnetz)',
 'gateway' => 'Gateway',
 'gateway ip' => 'Gateway-IP',
+'gen dh' => 'Diffie-Hellman Key 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',
 'harddisk temperature' => 'Festplattentemperatur',
 'harddisk temperature graphs' => 'HDD-Diagramme',
 'hardware graphs' => 'Hardware-Diagramme',
+'hardware support' => 'Hardware-Unterstützung',
 'hdd temperature in' => 'Festplattentemperatur in',
 'help' => 'Hilfe',
 'high' => 'Hoch',
 '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 saved txt' => 'Die MAC-Adresse wurde erfolgreich gespeichert. Ã„nderungen werden jedoch erst nach einem Neustart oder einer Wiederverbindung Ã¼bernommen.',
 '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',
 'network traffic graphs others' => 'Netzwerk (sonstige)',
 'network updated' => 'Benutzerdefiniertes Netzwerk aktualisiert',
 'networks settings' => 'Firewall - Netzwerkeinstellungen',
+'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',
 '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 Schlüssel. Bitte nur 1024, 2048, 3072 oder 4096 Bit im PKCS#3 Format verwenden.',
 'not enough disk space' => 'Nicht genügend Plattenplatz vorhanden',
 'not present' => '<B>Nicht</B> vorhanden',
 'not running' => 'nicht gestartet',
 'ovpn' => 'OpenVPN',
 'ovpn con stat' => 'OpenVPN Verbindungs-Statistik',
 'ovpn config' => 'OVPN-Konfiguration',
-'ovpn device' => 'OpenVPN-Gerät',
+'ovpn crypt options' => 'Kryptografieoptionen',
+'ovpn device' => 'OpenVPN-Gerät:',
+'ovpn dh' => 'Diffie-Hellman Key Länge',
+'ovpn dh name' => 'Diffie-Hellman Key Name',
 '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 with mssfix or fragment' => 'Path MTU Discovery kann nicht gemeinsam mit mssfix oder fragment verwendet werden.',
 'ovpn mtu-disc yes' => 'Forciert',
 '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 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 server status' => 'OpenVPN-Server-Status:',
+'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',
 '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',
 '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',
 'show ca certificate' => 'CA Zertifikat anzeigen',
 'show certificate' => 'Zertifikat anzeigen',
 'show crl' => 'Certificate Revocation List anzeigen',
+'show dh' => 'Diffie-Hellman Key anzeigen',
 'show host certificate' => 'Host-Zertifikat anzeigen',
 'show last x lines' => 'die letzten x Zeilen anzeigen',
 'show root certificate' => 'Root-Zertifikat anzeigen',
 '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',
 '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',
 'upload a certificate' => 'Ein Zertifikat hochladen:',
 'upload a certificate request' => 'Eine Zertifikatsanfrage hochladen:',
 'upload ca certificate' => 'CA-Zertifikat hochladen',
+'upload dh key' => 'Diffie-Hellman Key hochladen',
 'upload file' => 'Datei zum hochladen',
 'upload new ruleset' => 'Neuen Regelsatz hochladen',
 'upload p12 file' => 'PKCS12-Datei hochladen',
 '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',
 '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',
 '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',
index 67b5dd500a7565267b53b2767e73069bf0d39c5a..ab85ab6e6a218af93f8ca61302f3e32a64700a77 100644 (file)
@@ -10,7 +10,6 @@
 '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:',
@@ -34,6 +33,7 @@
 'Level7 rule' => 'Level7 rule',
 'Local VPN IP' => 'Internal Network (GREEN):',
 'MTU' => 'MTU size:',
+'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',
 'advproxy banned mac clients' => 'Banned MAC addresses (one per line)',
 'advproxy cache management' => 'Cache management',
 'advproxy cache replacement policy' => 'Cache replacement policy',
+'advproxy cache-digest' => 'Enable Cache-Digest Generation',
 'advproxy chgwebpwd ERROR' => 'E R R O R :',
 'advproxy chgwebpwd SUCCESS' => 'S U C C E S S :',
 'advproxy chgwebpwd change password' => 'Change password',
 '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',
 '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.',
 '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',
 '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 Key',
+'dh key warn' => 'Keys with 1024 and 2048 bit takes up to several minutes, 3072 and 4096 bit might needs several hours. Please be patient.',
+'dh name is invalid' => 'Name ist ung\9fltig, bitte "dh1024.pem" verwenden.',
 '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' => 'External IP address',
+'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.',
 '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',
 'firewall logs' => 'Firewall Logs',
 'firewall logs ip' => 'Fw-Loggraphs (IP)',
 'firewall logs port' => 'Fw-Loggraphs (Port)',
+'firewall logs country' => 'Fw-Loggraphs (Country)',
 'firewall rules' => 'Firewall Rules',
 'firewallhits' => 'firewallhits',
 'firmware' => 'Firmware',
 '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',
 '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 sourceip' => 'Source address (MAC/IP address or network):',
 'fwdfw std network' => 'Standard networks:',
 'fwdfw target' => 'Destination',
-'fwdfw targetip' => 'Destination address (MAC/IP address or network):',
+'fwdfw targetip' => 'Destination address (IP address or network):',
 'fwdfw till' => 'Until:',
 'fwdfw time' => 'Time Constraints',
 'fwdfw timeframe' => 'Use time constraints',
 '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',
 'g.lite' => 'TO BE REMOVED',
 'gateway' => 'Gateway',
 'gateway ip' => 'Gateway IP',
+'gen dh' => 'Generate Diffie-Hellman key',
 'gen static key' => 'Generate a static key',
 'generate' => 'Generate root/host zertifikate',
 'generate a certificate' => 'Generate a certificate:',
+'generate dh key' => 'Generate Diffie-Hellman key',
 'generate iso' => 'Generate ISO',
 'generate root/host certificates' => 'Generate root/host certificates',
 'generate tripwire keys and init' => 'generate tripwire keys and init',
 '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',
 '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',
 'mac address saved txt' => 'The MAC address has been successfully saved, but changes will only take effect after reboot or reconnection.',
 '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',
 'min delay' => 'Minimum delay',
 'min size' => 'Min object size (KB):',
 'minimal' => 'Minimal',
+'minimum' => 'Minimum',
 'minute' => 'Minute',
 'minutes' => 'Minutes',
 'misc-options' => 'Miscellaneous options',
 'network traffic graphs others' => 'Network (others)',
 'network updated' => 'Custom Network updated',
 'networks settings' => 'Firewall - Network settings',
+'never' => 'Never',
 'new optionsfw later' => 'Some options need a reboot to take effect',
 'new optionsfw must boot' => 'You must reboot your IPFire',
 'newer' => 'Newer',
 '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 key. Please use 1024, 2048, 3072 or 4096 bit in PKCS#3 format.',
 'not enough disk space' => 'Not enough disk space',
 'not present' => '<b>Not</b> present',
 'not running' => 'not running',
 '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 key lenght',
+'ovpn dh name' => 'Diffie-Hellman key name',
 '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 with mssfix or fragment' => 'Path MTU Discovery cannot be used with mssfix or fragment.',
 'ovpn mtu-disc yes' => 'Forced',
 '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 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',
 'profile saved' => 'Profile saved: ',
 'profiles' => 'Profiles:',
 'proto' => 'Proto',
-'protocol' => 'Protocol',
+'protocol' => 'Protocol:',
 'proxy' => 'Proxy',
 'proxy access graphs' => 'Proxy access graphs',
 'proxy admin password' => 'Cache administrator password',
 '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',
 'show ca certificate' => 'Show CA certificate',
 'show certificate' => 'Show certificate',
 'show crl' => 'Show certificate revocation list',
+'show dh' => 'Show Diffie-Hellman key',
 'show host certificate' => 'Show host certificate',
 'show last x lines' => 'Show last x lines',
 'show lines' => 'Show lines',
 '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',
 'swap usage per' => 'Swap usage per',
 'system' => 'System',
 'system graphs' => 'System Graphs',
+'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',
 '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 key',
 'upload fcdsl.o' => 'TO BE REMOVED',
 'upload file' => 'Upload file',
 'upload new ruleset' => 'Upload new ruleset',
 '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',
 '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',
 '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',
index 25896680d37d6e975c8601923cde76ca765892fa..0ea9593f1b2cb6d1c408e40fcf0f0726e8c0e540 100644 (file)
@@ -89,6 +89,7 @@
 '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ı:',
 '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' => '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 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 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 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' => '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',
 '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 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 home' => 'Ana Sayfa',
 'alt information' => 'Bilgi',
 'alt logs' => 'Günlükler',
 'alt ovpn' => 'OpenVPN',
 'april' => 'Nisan',
 'archive not exist' => 'Yapılandırma arÅŸivi yok',
 'are you sure' => 'Emin misiniz?',
-'arp table entries' => 'ARP Tablosu Girdileri:',
+'arp table entries' => 'ARP tablosu girdileri:',
 'artist' => 'Sanatçı',
 'attemps' => 'GiriÅŸim',
 'attention' => 'DÄ°KKAT',
 'august' => 'AÄŸustos',
-'authentication' => 'Kimlik DoÄŸrulama:',
+'authentication' => 'Kimlik doÄŸrulama:',
 'automatic' => 'Otomatik',
 'available updates' => 'Mevcut güncellemeler:',
 'average' => 'Ortalama',
 'backup to floppy' => 'Diskete yedekle',
 'backupaddon' => 'Eklenti Yedekleme',
 'backupprofile' => 'Yeniden baÄŸlanma baÅŸarısız durumda. Profile geçin',
-'backups' => 'yedekler',
+'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',
 '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 beep sesi Ã§Ä±kar.',
+'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Ä°',
 'cached swap' => 'takas alanı Ã¶nbelleÄŸi',
 'calamaris available reports' => 'Mevcut raporlar',
 'calamaris byte unit' => 'Bayt birimi',
-'calamaris create report' => 'Rapor oluÅŸtur',
+'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 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 refresh list' => 'Listeyi Yenile',
 'calamaris report interval (in minutes)' => 'Rapor aralığı (dakikada)',
 'calamaris report options' => 'Rapor seçenekleri',
 'calamaris report period' => 'Rapor süresi',
 '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 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 used' => 'Kullanılan adresler',
 'cert' => 'Sertifika',
 'certificate' => 'Sertifika',
-'certificate authorities' => 'Sertifika Yetkilileri',
+'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.',
 '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 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',
 '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' => 'Gün',
 'day after' => 'Bir gün sonra',
 'day before' => 'Bir gün Ã¶nce',
 'day-graph' => 'gün',
 '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' => '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ı',
 '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 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ı',
 'disk access per' => 'eriÅŸim başına disk',
 'disk usage' => 'Disk kullanımı',
 'display' => 'Görünüm',
-'display charset' => 'Karakterleri Göster',
+'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çık bölge',
+'dmz' => 'AÃ\87IK BÃ\96LGE',
 '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 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' => '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 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',
-'dod for dns' => 'DNS için Ã§evirmeli baÄŸlantı Ã¼zerinden talep:',
+'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ı',
 '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',
+'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 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 giriÅŸ paketlerini reddet',
 'drop newnotsyn' => 'Sync paketleri olmayan yeni günlükleri reddet',
 'drop output' => 'Günlük Ã§Ä±kış paketlerini reddet',
 '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' => 'Entropy',
 '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ı',
 'expires' => 'BitiÅŸ tarihi',
 'export' => 'Dışarı Aktar',
 'exportkey' => 'PSK dışarı aktar',
-'external access' => 'Harici EriÅŸim',
+'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.',
 '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 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' => '-',
 '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 istemiyorum',
+'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 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ı bilgi 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ÅŸtirmeliy im?',
+'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 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ı',
 '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.',
 '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 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ı etkinleÅŸ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' => 'EtkinleÅŸtirin veya devre dışı bırakın',
+'fwdfw togglelog' => 'Günlüğü etkinleÅŸ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 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 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ı Gurupları',
+'fwhost netaddress' => 'AÄŸ adresi',
+'fwhost newgrp' => 'AÄŸ/Ana Bilgisayar Grupları',
+'fwhost newhost' => 'Ana Bilgisayarlar',
+'fwhost newnet' => 'AÄŸlar',
+'fwhost newservice' => 'Hizmetler',
+'fwhost newservicegrp' => 'Hizmet Gurupları',
+'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' => '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 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',
 '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' => 'grafiÄŸi',
 'graph per' => '-',
 'green' => 'YEŞİL',
 'green interface' => 'YeÅŸil Arabirim',
+'grouptype' => 'Gurup türü:',
 'guaranteed bandwith' => 'Garantili bant geniÅŸliÄŸi',
 'guardian alertfile' => 'Uyarı dosyası',
 'guardian configuration' => 'Koruyucu Yapılandırması',
 '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 ede veya e-posta ile aktifleÅŸtirin. Sonra ',
+'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',
 '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' => '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 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ÅŸ.',
 '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',
+'iptmangles' => 'IPTablo sıkıştırmaları',
+'iptnats' => 'IPTablo aÄŸ adres Ã§evrimi',
 'ipts' => 'IPTablolar',
 'isdn' => 'ISDN',
 'isdn settings' => 'Ek ISDN ayarları:',
 'key stuff' => '2. Anahtarlar ve Sertifikalar',
 'keyreset' => 'Anahtarları Sıfırla',
 'keys' => 'anahtarlar',
-'lan' => 'LAN',
+'lan' => 'YEREL AÄž',
 'lang' => 'tr',
 'languagepurpose' => 'IPFire sistemini görüntülemek istediÄŸiniz dili seçin:',
 'last activity' => 'Son Etkinlik',
 'lateprompting' => 'Geç istenen',
 'lease expires' => 'Kiralama süresi',
+'least preferred' => 'az tercih edilen',
 'legend' => 'Açıklamalar',
-'length' => 'Süresi',
+'length' => 'Süre',
+'lifetime' => 'YaÅŸam süresi:',
 'line' => 'Satırı',
 'linkq' => 'baÄŸlantı kalitesi',
 'load printer' => 'Yazıcı Yükle',
 'local ntp server specified but not enabled' => 'Belirtilen yerel NTP sunucusu etkin 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',
+'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 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 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',
 'logging' => 'Günlük',
 'logging server' => 'Günlük Sunucusu',
 'loginlogout' => 'GiriÅŸ/Çıkış',
-'logs' => 'günlükler',
+'logs' => 'Günlükler',
 'lookup failed' => 'Ters arama baÅŸarısız',
 'loosedirectorychecking' => 'Serbest Dizin Denetimi',
 'low' => 'Düşük',
 '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' => 'Orta EriÅŸim Kontrolü Adresi',
+'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):',
 'main page' => 'Ana sayfa',
 'manage ovpn' => '5. Tünel Yönetimi:',
 'manage printers' => 'yazıcıları yönet',
-'manage shares' => 'Paylaşım Yönetimi',
+'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ı',
+'map to guest' => 'Ziyaretçi haritası',
 'march' => 'Mart',
 'marked' => 'Ä°ÅŸaretli',
 'max bandwith' => 'En fazla bant geniÅŸliÄŸi',
 '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 volt' => 'voltaj',
 'meaning' => 'anlam',
 'media' => 'Medya',
-'media information' => 'medya bilgisi',
+'media information' => 'Medya bilgisi',
 'medium' => 'Orta',
 'memory' => 'Bellek',
-'memory information' => 'bellek bilgisi',
+'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 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',
 'modify' => 'Düzenle',
 'modulation' => 'GeçiÅŸ',
 'monday' => 'Pazartesi',
-'month' => 'ay',
+'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 volume start day short' => 'Ä°lk gün',
 'months' => 'ay',
 'more' => 'daha',
+'most preferred' => 'En Ã§ok tercih edilen',
 'mount' => 'BaÄŸla',
 'mounted on' => 'BaÄŸlı',
 'mpfire' => 'IPFire için Media Player',
 '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ı',
+'netbios name' => 'Netbios adı',
 'netmask' => 'AÄŸ Maskesi',
 'network' => 'AÄŸ',
 'network added' => 'Özel aÄŸ eklendi',
 '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ı',
 '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',
 'or' => 'veya',
 'orange' => 'TURUNCU',
 'organization cant be empty' => 'KuruluÅŸ boÅŸ olamaz.',
-'organization name' => 'KuruluÅŸ Adı',
+'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',
+'os level' => 'OS seviyesi',
 'other' => 'DiÄŸer',
 'other countries' => 'DiÄŸer Ã¼lkelers',
 'other login script' => 'DiÄŸer oturum açma komut dosyası',
 '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 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_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 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 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 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:',
 'printing' => 'Yazdırılıyor',
 'printing options' => 'yazdırma seçenekleri',
 'priority' => 'Öncelik',
-'processes' => 'iÅŸlemler',
+'processes' => 'Ä°ÅŸlemler',
 'profile' => 'Profil',
 'profile deleted' => 'Silinen profiller: ',
 'profile has errors' => 'Profil hataları',
 'profile saved' => 'Kaydedilen profiller: ',
 'profiles' => 'Profiller:',
 'proto' => 'Kural',
-'protocol' => 'Kural: ',
+'protocol' => 'Kural ',
 'proxy' => 'Vekil sunucu',
 'proxy access graphs' => 'Vekil sunucu eriÅŸim grafiÄŸi',
 'proxy admin password' => 'Önbellek yönetici parolası',
 'rebooting' => 'Yeniden BaÅŸlat',
 'rebooting ipfire' => 'IPFire\'ı Yeniden BaÅŸlat',
 'reconnect' => 'Yeniden BaÄŸlan',
-'reconnection' => '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',
 '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',
+'remove x509' => 'X509 Kaldır',
 'repeat' => 'Tekrar',
 'reportfile' => 'Dosya raporu',
 'reportlevel' => 'Seviye raporu',
 'restart' => 'Yeniden BaÅŸlat',
 'restart ovpn server' => 'OpenVPN sunucusunu yeniden baÅŸlat',
 'restore' => 'Geri Yükle',
-'restore defaults' => 'Varsayılanı 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 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:',
+'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',
+'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',
+'save-adv-options' => 'GeliÅŸmiÅŸ Seçenekleri Kaydet',
 'script name' => 'Komut adı:',
 'secondary dns' => 'Ä°kincil DNS:',
 'secondary ntp server' => 'Ä°kincil NTP sunucusu',
 'section' => 'Bölüm',
 'secure shell server' => 'Güvenli Kabuk Sunucusu',
 'security' => 'Güvenlik',
-'security options' => 'Güvenlik Seçenekleri',
+'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)',
 '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',
+'server string' => 'Sunucu dizisi',
 'service' => 'Hizmet',
 'service added' => 'Özel aÄŸ hizmeti eklendi',
 'service name' => 'Hizmet adı:',
 'services' => 'Hizmetler',
 'services settings' => 'Güvenlik Duvarı - Hizmet Ayarları',
 'set' => 'ayar',
-'set time now' => 'Zamanı Ã…\9fimdi ayarla',
-'set time now help' => 'Herhangi bir zamanda eÅŸitleme etkinliÄŸi sırasında (hatta yinelenen bir program kullanılırken) <i>Åžimdi zamanı ayarla</i> düğmesine basın. Bir eÅŸitleme olmadan Ã¶nce beÅŸ dakika veya daha fazla beklemek zorunda olduÄŸunuzu unutmayın.',
+'set time now' => 'Zamanı Ã…\9eimdi 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',
 'show areas' => 'alanları göster',
 'show ca certificate' => 'CA sertifikalarını göster',
 'show certificate' => 'Sertifika göster',
-'show crl' => 'Sertifika iptal listesini 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',
 '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',
 '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 access' => 'SSH EriÅŸimi',
+'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 Anahtarı',
+'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',
 'static routes' => 'Statik Yollar',
 'status' => 'Durum',
 'status information' => 'Durum bilgisi',
-'status ovpn' => '4. OpenVPN Durumu / Yapılandırma:',
+'status ovpn' => 'OpenVPN',
 'std classes' => 'Standart sınıflar',
 'stop' => 'Dur',
 'stop ovpn server' => 'OpenVPN Sunucusunu Durdur',
 '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 information' => 'Sistem bilgisi',
+'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' => 'Ö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',
 '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 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 settings' => 'Bant geniÅŸliÄŸi ayarları',
 'tor bandwidth unlimited' => 'sınırsız',
 'tor bridge enabled' => 'Tor köprüsünü etkinleÅŸtir',
-'tor common settings' => 'Genel Ayarlar',
-'tor configuration' => 'Tor Yapılandırması',
+'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 contact info' => 'Ä°letiÅŸim bilgileri',
 'tor daemon' => 'Artalan süreci',
-'tor enabled' => 'Tor Aktif',
+'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 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 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 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 relay' => 'Sadece aktarım',
 'tor relay nickname' => 'Aktarım takma adı',
 'tor relay port' => 'Aktarım baÄŸlantı noktası',
-'tor service' => 'Tor Servisi',
+'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ı.',
 'unable to contact' => 'BaÄŸlantı Kurulamadı',
 'unencrypted' => 'Åžifresiz',
 'uninstall' => 'Kaldır',
-'unix charset' => 'UNIX Karakterleri',
+'unix charset' => 'UNIX karakterleri',
 'unix group' => ' UNIX kullanıcı grubu',
 'unix password sync' => 'Unix Parola EÅŸitleme',
 'unix shell' => 'UNIX KabuÄŸu',
 '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 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 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' => 'Sertifikası yükle:',
 'upload a certificate request' => 'Sertifika isteÄŸi yükle:',
-'upload ca certificate' => 'CA sertifikası 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 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',
 '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 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' => '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' => '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 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 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 enabled' => 'Aktif:',
 'urlfilter example' => 'ÖrneÄŸin: www.etkialani.com',
 'urlfilter example ads' => 'ÖrneÄŸin: www.etkialani.com/reklam/',
-'urlfilter export blacklist' => 'Kara listeyi dışarı aktar',
+'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 friday' => 'Cum',
 'urlfilter from' => 'BaÅŸlangıç',
 'urlfilter hourly' => 'Saatlik',
-'urlfilter import blacklist' => 'Kara listeyi al',
+'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 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 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 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 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 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 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 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ı içeri aktar',
+'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 sat' => 'C',
 'urlfilter saturday' => 'Cmt',
 'urlfilter save and restart' => 'Kaydet ve Yeniden BaÅŸlat',
-'urlfilter save schedule' => 'Güncelleme ayarlarını kaydet',
+'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 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 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 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 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 wed' => 'Ç',
 'urlfilter wednesday' => 'Çar',
 'urlfilter weekday error' => 'SeçilmiÅŸ en az bir gün olmalıdır',
-'urlfilter weekly' => 'haftalık',
+'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',
 'usb modem on acm0' => 'ACM0 Ã¼zerindeki USB Modem',
 'weeks' => 'hafta',
 'wildcards' => 'Joker karakterler',
 'wins server' => 'Wins Sunucusu',
-'wins support' => 'Wins DesteÄŸi',
+'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ı',
+'wireless configuration' => 'Kablosuz aÄŸ ayarları',
 'wlan client' => 'Kablosuz istemci',
 'wlan client advanced settings' => 'GeliÅŸmiÅŸ ayarlar',
 'wlan client and' => 've',
 'wlan client wpa mode ccmp ccmp' => 'CCMP-CCMP',
 'wlan client wpa mode ccmp tkip' => 'CCMP-TKIP',
 'wlan client wpa mode tkip tkip' => 'TKIP-TKIP',
-'wlanap access point' => 'EriÅŸim Noktası',
+'wlan clients' => 'Kablosuz istemciler',
+'wlanap access point' => 'Access Point',
 'wlanap channel' => 'Kanal',
 'wlanap country' => 'Ãœlke Kodu',
 'wlanap debugging' => 'Hata ayıklama',
 'wlanap wlan settings' => 'WLan Ayarları',
 'wlanap wlan status' => 'WLan Durumu',
 'wol wakeup' => 'Kalk',
-'workgroup' => 'Çalışma Grubu',
+'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!',
index 50c94a638c6752abe0a4a1719b8a1f007bf2f8f3..697fab619fa7f25dacc12f8df15313de23a73e14 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.26
 
 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 = 254eda547f8d624604e4bf403241e617
 httpd-2.2.2-config-1.patch_MD5 = e02a3ec5925eb9e111400b9aa229f822
 
 install : $(TARGET)
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 98e7af320a30380eda721a7c1478ec08b29708f3..8250a77f68669784850c1675c21e089e52c73c88 100644 (file)
@@ -51,7 +51,7 @@ $(TARGET) :
 
        # Create all directories
        for i in addon-lang auth backup ca certs connscheduler crls ddns dhcp dhcpc dns dnsforward \
-                       ethernet extrahd/bin fwlogs fwhosts firewall firewall/bin isdn key langs logging mac main \
+                       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 \
@@ -99,13 +99,11 @@ $(TARGET) :
        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)/config/firewall/rules.pl                  $(CONFIG_ROOT)/firewall/bin/rules.pl
        cp $(DIR_SRC)/config/firewall/convert-xtaccess  /usr/sbin/convert-xtaccess
        cp $(DIR_SRC)/config/firewall/convert-outgoingfw        /usr/sbin/convert-outgoingfw
        cp $(DIR_SRC)/config/firewall/convert-dmz       /usr/sbin/convert-dmz
        cp $(DIR_SRC)/config/firewall/convert-portfw    /usr/sbin/convert-portfw
        cp $(DIR_SRC)/config/firewall/p2protocols               $(CONFIG_ROOT)/firewall/p2protocols
-       cp $(DIR_SRC)/config/firewall/firewall-lib.pl   $(CONFIG_ROOT)/firewall/bin/firewall-lib.pl
        cp $(DIR_SRC)/config/firewall/firewall-policy   /usr/sbin/firewall-policy
        cp $(DIR_SRC)/config/fwhosts/icmp-types                 $(CONFIG_ROOT)/fwhosts/icmp-types
        cp $(DIR_SRC)/config/fwhosts/customservices             $(CONFIG_ROOT)/fwhosts/customservices
@@ -132,13 +130,10 @@ $(TARGET) :
        echo  "DROPWIRELESSFORWARD=on"  >> $(CONFIG_ROOT)/optionsfw/settings
        echo  "POLICY=MODE2"            >> $(CONFIG_ROOT)/firewall/settings
        echo  "POLICY1=MODE2"           >> $(CONFIG_ROOT)/firewall/settings
-       
-       # set rules.pl executable
-       chmod 755 $(CONFIG_ROOT)/firewall/bin/rules.pl
-               
+
        # set converters executable
        chmod 755 /usr/sbin/convert-*
-       
+
        # Modify variables in header.pl
        sed -i -e "s+CONFIG_ROOT+$(CONFIG_ROOT)+g" \
            -e "s+VERSION+$(VERSION)+g" \
index 04765a09a20507ae5d980a19a4d1b90aa6c09c02..58c99c43c8bcff1e736c7537d12c4b97cdd48475 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        #
 include Config
 
 VERSUFIX = ipfire$(KCFG)
-ifeq "$(KCFG)" "-xen"
-       KVER = 2.6.32.61
-       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.4.14
+VER        = 2.5.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 = 05bae01409bb699f14297d726df2aa23
+$(DL_FILE)_MD5 = 8a57fc73335bf1ab0e16a02ecccdae76
 
 install : $(TARGET)
 
index e2df5cc524e0935c707edfa0fce43090bc4b75eb..74947311fcbfbabf51e00071d6bf4f9f74ff2353 100644 (file)
@@ -31,12 +31,12 @@ 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
+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 3da01016129bd1c8e931d1dd116de76d76ef039d..f1ee58a13c64488ff7099cbcff74b30bdecc4669 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.1.7
+VER        = 2.1.9
 
 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 = a4dbb3a4111f263b5059b2f76b14b32c
 
 install : $(TARGET)
 
@@ -70,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) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo-2.1.7-testing.patch
+
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo-0001-Exclude-some-more-invalid-patterns.patch
 
        cd $(DIR_APP) && [ -x "configure" ] || sh ./autogen.sh
        cd $(DIR_APP) && ./configure --prefix=/usr
index 822124ab3e8cb62e3f25094b3b762a8bb0b51d62..f74c7e1e4eaf21bc0e162754a04a0ed92992405c 100644 (file)
@@ -102,6 +102,7 @@ endif
 ifeq "$(MACHINE_TYPE)" "arm"
        cp -v /boot/MLO $(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
index 9acbb111bbfa6c4d58a784e8138a51d318bcbbec..dcbffc254260d798a852224844f6d26adfe04fa8 100644 (file)
--- a/lfs/glibc
+++ b/lfs/glibc
@@ -258,6 +258,16 @@ endif
        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
index 9e01b06cfb9c576625c887c46a3bbeba791b2358..36343de37c18e109ee8903e1bfdf83fabbe2f06f 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    = 28
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = ba22e639bc57aa4035d2ea8ffa9bbbee
+$(DL_FILE)_MD5 = bb9c50e87c5af6f89f387e63911effac
 
 install : $(TARGET)
 
diff --git a/lfs/igb b/lfs/igb
index a7c136a71480e53de931e6e1169511125e6167d0..9303ffb86df071f9c5764c392994834680dac3af 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.61
-       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.3.0
+VER        = 5.0.6
 
 THISAPP    = igb-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -48,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = dcbf7271c016bdb71102eb623b807f83
+$(DL_FILE)_MD5 = 701717fbbba6065af4ff5138bd3a3a9c
 
 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 eae451b24ca912d1efe6490377942fcd67204a41..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,27 +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/firewallctrl \
-               /etc/rc.d/init.d/networking/red.up/22-forwardfwctrl
        ln -sf ../../../../../usr/local/bin/snortctrl \
                /etc/rc.d/init.d/networking/red.up/23-RS-snort
        ln -sf ../../../../../usr/local/bin/qosctrl \
                /etc/rc.d/init.d/networking/red.up/24-RS-qos
-       ln -sf ../../../../../usr/local/bin/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 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 ee754a28b62bb4c4e4d0afe1cb214332440ffe11..687de3634f6f6942cdb43f66d0364a3710efe618 100644 (file)
--- a/lfs/linux
+++ b/lfs/linux
 
 include Config
 
-VER        = 3.10.27
+VER        = 3.10.33
 
-RPI_PATCHES = linux-3.10.10-grsec-c1af7c6
-GRS_PATCHES = grsecurity-2.9.1-3.10.27-ipfire1.patch.xz
+RPI_PATCHES = linux-3.10.27-grsec-943b563
+GRS_PATCHES = grsecurity-2.9.1-3.10.33-ipfire1.patch.xz
 
 THISAPP    = linux-$(VER)
 DL_FILE    = linux-$(VER).tar.xz
@@ -36,7 +36,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 CFLAGS     =
 CXXFLAGS   =
 
-PAK_VER    = 32
+PAK_VER    = 38
 DEPS      = ""
 
 VERSUFIX=ipfire$(KCFG)
@@ -74,9 +74,9 @@ $(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                         = 4edaaea57dc940969c54ac249e49f7e7
-rpi-patches-$(RPI_PATCHES).patch.xz_MD5        = f55981853573236069db5ad9fb7a4bd9
-$(GRS_PATCHES)_MD5                     = a83aad5c389ea9a496ba41608267d3dc
+$(DL_FILE)_MD5                         = 01865f9c129f3c7eee51e25b3781a364
+rpi-patches-$(RPI_PATCHES).patch.xz_MD5        = 8cf81f48408306d93ccee59b58af2e92
+$(GRS_PATCHES)_MD5                     = c99be0018e8bc55fb2e2b8f0ea9783d5
 
 install : $(TARGET)
 
@@ -112,7 +112,7 @@ $(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/imq_kernel3.10.23.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.10-ipp2p-0.8.2-ipfire.patch
@@ -127,9 +127,6 @@ ifneq "$(KCFG)" "-headers"
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.7-disable-compat_vdso.patch
 endif
 
-       # Disable pcspeaker autoload
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.30-no-pcspkr-modalias.patch
-
        # Remove ACPI Blacklist message
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6-silence-acpi-blacklist.patch
 
@@ -147,6 +144,12 @@ endif
        # Add LED trigger
        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
@@ -160,11 +163,41 @@ endif
 
 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.2-0001-panda-wlan-fix.patch
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-0002-panda-i2c.patch
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-panda-reboot.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch
 
+       # 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
@@ -278,10 +311,6 @@ ifeq "$(LASTKERNEL)" "1"
        # Disable ipv6 at runtime
        echo "options ipv6 disable_ipv6=1" > /etc/modprobe.d/ipv6.conf
 endif
-
-       # Disable geode_aes modul if exist
-       -mv /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko \
-           /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko.off
 endif
 
        @rm -rf $(DIR_SRC)/patch-o-matic* $(DIR_SRC)/iptables* $(DIR_SRC)/squashfs* $(DIR_SRC)/netfilter-layer7-*
index aa5c3579f05e6258d92f56d00e4c453e154068a8..edcd651f8904946739f3a339dd49b115d98c35cd 100644 (file)
--- a/lfs/mysql
+++ b/lfs/mysql
@@ -100,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 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)
index 17772c14db15e5ece45b70065c7c05c7c1a73bd8..bc6fa3cade62f9622a80010933cf997fc3aa4f54 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 6.4p1
+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 = a62b88b884df0b09b8a8c5789ac9e51b
+$(DL_FILE)_MD5 = 3e9800e6bca1fbac0eea4d41baa7f239
 
 install : $(TARGET)
 
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-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)
similarity index 90%
rename from lfs/vnstati
rename to lfs/rng-tools
index c7cd6edafbba72f00e2ef61faf38b82d6aa410da..8ca95cff8f816767ae19df3771f05489d0c217f2 100644 (file)
@@ -24,9 +24,9 @@
 
 include Config
 
-VER        = beta3
+VER        = 4
 
-THISAPP    = vnstati-$(VER)
+THISAPP    = rng-tools-$(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 = ae89dbfcf08bdfbea19066cfbf599127
 
 install : $(TARGET)
 
@@ -50,9 +50,6 @@ download :$(patsubst %,$(DIR_DL)/%,$(objects))
 
 md5 : $(subst %,%_MD5,$(objects))
 
-dist: 
-       @$(PAK)
-
 ###############################################################################
 # Downloading, checking, md5sum
 ###############################################################################
@@ -72,8 +69,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)                                                                             LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes"
-       cd $(DIR_APP) && make install
+       @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 49b3f1a9b975c50308a1bda8e89e850cd45b2f71..71422f0fcff021fbe705caa260ed0704f6d0e461 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = d4f5315
+VER        = 940dc3b
 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 = 65c0a859ab96cb563a80e3529c78f555
+$(DL_FILE)_MD5 = d8e02dc961aa8b5289912fe926a420de
 
 install : $(TARGET)
 
index 13110d56285fd62ecd9a9e1e28f70eca52b0b3a4..4f5375c07faca4099e9369278e1cc217f7ffde44 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.22
+VER        = 3.6.23
 
 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    = 56
+PAK_VER    = 57
 
 DEPS       = "cups"
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 59add4bb178ebc188d857bc13a508c0b
+$(DL_FILE)_MD5 = 2f7aee1dc5d31aefcb364600915b31dc
 
 install : $(TARGET)
 
index f76a16c36def8e6cfa1d70e617067b544ed826fa..00dc12a10a01a7b918e5f0c87a8ccf30737014fe 100644 (file)
--- a/lfs/squid
+++ b/lfs/squid
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.3.11
+VER        = 3.4.4
 
 THISAPP    = squid-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = dd016ff5f14b2548083b3882207914f6
+$(DL_FILE)_MD5 = dc2bcb967fc6b15bbbc6b961010c0c00
 
 install : $(TARGET)
 
@@ -53,6 +53,7 @@ md5 : $(subst %,%_MD5,$(objects))
 ###############################################################################
 # Downloading, checking, md5sum
 ###############################################################################
+
 $(patsubst %,$(DIR_CHK)/%,$(objects)) :
        @$(CHECK)
 
index 3d64f6839970ac82b223f5fbdc34ca16927afe64..956f58953c36a8a393af00b4a15bb0b2a12e7950 100644 (file)
@@ -101,6 +101,13 @@ $(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
index 5c411a3337ae4279c604fd2e1eaea6fe0631b425..600a16f46324fbd6e4986e65a937119a66c175e9 100644 (file)
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.1.1
+VER        = 5.1.2
 
 THISAPP    = strongswan-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -48,7 +48,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = e3af3d493d22286be3cd794533a8966a
+$(DL_FILE)_MD5 = d45a2e89c624bceaf2e53c9b9cdddf83
 
 install : $(TARGET)
 
@@ -79,13 +79,14 @@ $(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-5.1.1-delay-dpd.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-eap-radius \
index 15463c50d2e3cbf00dda5f455449f5e7a2093bed..7c3feabb7de6f734f398c7447c2259d5bc834c33 100644 (file)
--- a/lfs/sudo
+++ b/lfs/sudo
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.6.8p12
+VER        = 1.8.10p1
 
 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 = 1d9c2bc5aaf02608343d17b9a666e8e1
 
 install : $(TARGET)
 
@@ -70,10 +70,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/$(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: "
        cd $(DIR_APP) && make $(MAKETUNING)
        cd $(DIR_APP) && make install
        @rm -rf $(DIR_APP)
diff --git a/lfs/tor b/lfs/tor
index 10eaca4b80b50b646b2d778267e63894b26b3f36..79567366aa6b6507b2ecf0600fee2cf25f95f3fc 100644 (file)
--- a/lfs/tor
+++ b/lfs/tor
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.2.4.18-rc
+VER        = 0.2.4.20
 
 THISAPP    = tor-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = tor
-PAK_VER    = 5
+PAK_VER    = 6
 
 DEPS       = "libevent2"
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 6cc5bc776e9d61a9fb1b000609ed2692
+$(DL_FILE)_MD5 = a8cd8e3b3a3f6a7770f2c22d280f19b8
 
 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 d0349936a18e58bcf1b8c9d6d8038dedf3c2d8dc..fdf8bf296876d4e03df7cc30910cab281de1cc93 100644 (file)
--- a/lfs/udev
+++ b/lfs/udev
@@ -108,6 +108,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        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/vdr b/lfs/vdr
index 161b04ee1e8cd3446b7d51cca0baeb9ba85bce52..52ecdd54354fe21c86f712beb4cd927d8af20e0a 100644 (file)
--- a/lfs/vdr
+++ b/lfs/vdr
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.0.3
+VER        = 2.0.5
 
 # VDRPLUGVER must match with APIVERSION in config.h
 # after change this update also all vdr plugins
@@ -37,7 +37,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = vdr
-PAK_VER    = 8
+PAK_VER    = 9
 
 DEPS       = "vdr_streamdev"
 
@@ -63,9 +63,9 @@ MAKE_OPTIONS = \
 
 objects = $(DL_FILE)
 
-$(DL_FILE)  = $(DL_FROM)/$(DL_FILE)
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5  = dd8fb1642bdfa7feb0e9a8ae41e9ef2f
+$(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)
diff --git a/lfs/vdr_eepg b/lfs/vdr_eepg
new file mode 100644 (file)
index 0000000..fddd075
--- /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
+
+GIT_VER    = 69b47ba4bf0195fd6820beb2cf4f7c7ea31f4011
+VER        = master
+THISAPP    = vdr-plugin-eepg-$(VER)
+DL_FILE    = vdr-plugin-eepg-$(GIT_VER).tar.bz2
+
+DL_FROM    = http://projects.vdr-developer.org/git/vdr-plugin-eepg.git/snapshot
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+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)_MD5  = 0d8049949263f9a2b8deb2ae9919bc49
+
+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_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)
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 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)
 
diff --git a/make.sh b/make.sh
index cb047636f9e74f498ce3d0be1b074ff384e837a2..554254ba53eda5e17dc13f5431698ea7513f5d29 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -17,7 +17,7 @@
 # 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-2013 IPFire Team <info@ipfire.org>.                   #
+# Copyright (C) 2007-2014 IPFire Team <info@ipfire.org>.                   #
 #                                                                          #
 ############################################################################
 #
@@ -25,7 +25,7 @@
 NAME="IPFire"                                                  # Software name
 SNAME="ipfire"                                                 # Short name
 VERSION="2.15"                                                 # Version number
-CORE="76-beta1"                                                        # Core Level (Filename)
+CORE="76-beta3"                                                        # Core Level (Filename)
 PAKFIRE_CORE="76"                                              # Core Level (PAKFIRE)
 GIT_BRANCH=`git rev-parse --abbrev-ref HEAD`                   # Git Branch
 SLOGAN="www.ipfire.org"                                                # Software slogan
@@ -411,8 +411,8 @@ buildipfire() {
 #    ipfiremake r8169                  KCFG="-pae"
 #    ipfiremake r8168                  KCFG="-pae"
 #    ipfiremake r8101                  KCFG="-pae"
-#    ipfiremake e1000e                 KCFG="-pae"
-#    ipfiremake igb                    KCFG="-pae"
+    ipfiremake e1000e                  KCFG="-pae"
+    ipfiremake igb                     KCFG="-pae"
 
     # x86 kernel build
     ipfiremake linux                   KCFG=""
@@ -424,8 +424,8 @@ buildipfire() {
 #    ipfiremake r8169                  KCFG=""
 #    ipfiremake r8168                  KCFG=""
 #    ipfiremake r8101                  KCFG=""
-#    ipfiremake e1000e                 KCFG=""
-#    ipfiremake igb                    KCFG=""
+    ipfiremake e1000e                  KCFG=""
+    ipfiremake igb                     KCFG=""
 
   else
     # arm-rpi (Raspberry Pi) kernel build
@@ -438,6 +438,8 @@ buildipfire() {
     # 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"
@@ -448,8 +450,8 @@ buildipfire() {
 #    ipfiremake r8169                  KCFG="-kirkwood"
 #    ipfiremake r8168                  KCFG="-kirkwood"
 #    ipfiremake r8101                  KCFG="-kirkwood"
-#   ipfiremake e1000e                  KCFG="-kirkwood"
-#    ipfiremake igb                    KCFG="-kirkwood"
+#    ipfiremake e1000e                 KCFG="-kirkwood"
+    ipfiremake igb                     KCFG="-kirkwood"
 
   fi
   ipfiremake pkg-config
@@ -651,6 +653,7 @@ buildipfire() {
   ipfiremake sysstat
   ipfiremake vsftpd
   ipfiremake strongswan
+  ipfiremake rng-tools
   ipfiremake lsof
   ipfiremake br2684ctl
   ipfiremake pcmciautils
@@ -678,6 +681,8 @@ buildipfire() {
   ipfiremake vdr_streamdev
   ipfiremake vdr_vnsiserver3
   ipfiremake vdr_epgsearch
+  ipfiremake vdr_dvbapi
+  ipfiremake vdr_eepg
   ipfiremake w_scan
   ipfiremake icecast
   ipfiremake icegenerator
@@ -687,7 +692,6 @@ buildipfire() {
   ipfiremake git
   ipfiremake squidclamav
   ipfiremake vnstat
-  ipfiremake vnstati
   ipfiremake iw
   ipfiremake wpa_supplicant
   ipfiremake hostapd
@@ -715,6 +719,8 @@ buildipfire() {
   ipfiremake netsnmpd
   ipfiremake perl-DBI
   ipfiremake perl-DBD-mysql
+  ipfiremake perl-DBD-SQLite
+  ipfiremake perl-File-ReadBackwards
   ipfiremake cacti
   ipfiremake icecc
   ipfiremake openvmtools
index 5405d773e85343276e622941b2d1d63a1a38d259..5dd39f939f48497b115caf22bea3efe1a164d80b 100644 (file)
@@ -12,9 +12,12 @@ case "$1" in
                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... this may take some minutes..."
+                       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
index be0c8b0227a5f22396c7c1522deee0c7d1da014c..a67af7056486ad4e93db4786100d0a83ea80d100 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,205 +12,236 @@ 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 conntrack --ctstate NEW -j NEWNOTSYN
+       iptables -A BADTCP -p tcp ! --syn -m conntrack --ctstate NEW -j NEWNOTSYN
 
-       /sbin/iptables -A INPUT   -p tcp -j BADTCP
-       /sbin/iptables -A FORWARD -p tcp -j BADTCP
+       iptables -A INPUT   -p tcp -j BADTCP
+       iptables -A FORWARD -p tcp -j BADTCP
 
        # Connection tracking chain
-       /sbin/iptables -N CONNTRACK
-       /sbin/iptables -A CONNTRACK -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
+       iptables -N CONNTRACK
+       iptables -A CONNTRACK -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 
        # Fix for braindead ISP's
-       /sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
+       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 CUSTOMFORWARD
-       /sbin/iptables -A FORWARD -j CUSTOMFORWARD
-       /sbin/iptables -N CUSTOMOUTPUT
-       /sbin/iptables -A OUTPUT -j CUSTOMOUTPUT
-       /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
+       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
-       /sbin/iptables -N GUARDIAN
-       /sbin/iptables -A INPUT -j GUARDIAN
-       /sbin/iptables -A FORWARD -j GUARDIAN
+       iptables -N GUARDIAN
+       iptables -A INPUT -j GUARDIAN
+       iptables -A FORWARD -j GUARDIAN
 
        # Block OpenVPN transfer networks
-       /sbin/iptables -N OVPNBLOCK
-       for i in INPUT FORWARD; do
-               /sbin/iptables -A ${i} -j OVPNBLOCK
-       done
+       iptables -N OVPNBLOCK
+       iptables -A INPUT   -i tun+ -j OVPNBLOCK
+       iptables -A OUTPUT  -o tun+ -j OVPNBLOCK
+       iptables -A FORWARD -i tun+ -j OVPNBLOCK
+       iptables -A FORWARD -o tun+ -j OVPNBLOCK
 
        # OpenVPN transfer network translation
-       /sbin/iptables -t nat -N OVPNNAT
-       /sbin/iptables -t nat -A POSTROUTING -j OVPNNAT
+       iptables -t nat -N OVPNNAT
+       iptables -t nat -A POSTROUTING -j OVPNNAT
 
        # IPTV chains for IGMPPROXY
-       /sbin/iptables -N IPTVINPUT
-       /sbin/iptables -A INPUT -j IPTVINPUT
-       /sbin/iptables -N IPTVFORWARD
-       /sbin/iptables -A FORWARD -j IPTVFORWARD
+       iptables -N IPTVINPUT
+       iptables -A INPUT -j IPTVINPUT
+       iptables -N IPTVFORWARD
+       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
+       iptables -N GUIINPUT
+       iptables -A INPUT -j GUIINPUT
+       iptables -A GUIINPUT -p icmp --icmp-type 8 -j ACCEPT
 
        # Accept everything on loopback
-       /sbin/iptables -N LOOPBACK
-       /sbin/iptables -A LOOPBACK -i lo -j ACCEPT
-       /sbin/iptables -A LOOPBACK -o lo -j ACCEPT
+       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.
-       /sbin/iptables -A LOOPBACK -s 127.0.0.0/8 -j DROP
-       /sbin/iptables -A LOOPBACK -d 127.0.0.0/8 -j DROP
+       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
-               /sbin/iptables -A ${i} -j LOOPBACK
+               iptables -A ${i} -j LOOPBACK
        done
 
        # Accept everything connected
        for i in INPUT FORWARD OUTPUT; do
-               /sbin/iptables -A ${i} -j CONNTRACK
+               iptables -A ${i} -j CONNTRACK
        done
 
        # trafic from ipsecX/TUN/TAP interfaces, before "-i GREEN_DEV" accept everything
-       /sbin/iptables -N IPSECINPUT
-       /sbin/iptables -N IPSECFORWARD
-       /sbin/iptables -N IPSECOUTPUT
-       /sbin/iptables -A INPUT -j IPSECINPUT
-       /sbin/iptables -A FORWARD -j IPSECFORWARD
-       /sbin/iptables -A OUTPUT -j IPSECOUTPUT
-       /sbin/iptables -t nat -N IPSECNAT
-       /sbin/iptables -t nat -A POSTROUTING -j IPSECNAT
+       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.
-       /sbin/iptables -A INPUT   -i $GREEN_DEV  -m conntrack --ctstate NEW -j ACCEPT ! -p icmp
+       iptables -A INPUT   -i $GREEN_DEV  -m conntrack --ctstate NEW -j ACCEPT ! -p icmp
        
        # allow DHCP on BLUE to be turned on/off
-       /sbin/iptables -N DHCPBLUEINPUT 
-       /sbin/iptables -A INPUT -j DHCPBLUEINPUT
+       iptables -N DHCPBLUEINPUT 
+       iptables -A INPUT -j DHCPBLUEINPUT
        
        # WIRELESS chains
-       /sbin/iptables -N WIRELESSINPUT
-       /sbin/iptables -A INPUT -m conntrack --ctstate NEW -j WIRELESSINPUT
-       /sbin/iptables -N WIRELESSFORWARD
-       /sbin/iptables -A FORWARD -m conntrack --ctstate NEW -j WIRELESSFORWARD
+       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
-       /sbin/iptables -N OVPNINPUT
-       /sbin/iptables -A INPUT -j OVPNINPUT
+       iptables -N OVPNINPUT
+       iptables -A INPUT -j OVPNINPUT
 
        # TOR
-       /sbin/iptables -N TOR_INPUT
-       /sbin/iptables -A INPUT -j TOR_INPUT
+       iptables -N TOR_INPUT
+       iptables -A INPUT -j TOR_INPUT
        
        # Jump into the actual firewall ruleset.
-       /sbin/iptables -N INPUTFW
-       /sbin/iptables -A INPUT -j INPUTFW
+       iptables -N INPUTFW
+       iptables -A INPUT -j INPUTFW
 
-       /sbin/iptables -N OUTGOINGFW
-       /sbin/iptables -A OUTPUT -j OUTGOINGFW
+       iptables -N OUTGOINGFW
+       iptables -A OUTPUT -j OUTGOINGFW
 
-       /sbin/iptables -N FORWARDFW
-       /sbin/iptables -A FORWARD -j FORWARDFW
+       iptables -N FORWARDFW
+       iptables -A FORWARD -j FORWARDFW
 
        # SNAT rules
-       /sbin/iptables -t nat -N NAT_SOURCE
-       /sbin/iptables -t nat -A POSTROUTING -j NAT_SOURCE
-
-       # 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
+       iptables -t nat -N NAT_SOURCE
+       iptables -t nat -A POSTROUTING -j NAT_SOURCE
 
        # Custom prerouting chains (for transparent proxy)
-       /sbin/iptables -t nat -N SQUID
-       /sbin/iptables -t nat -A PREROUTING -j SQUID
+       iptables -t nat -N SQUID
+       iptables -t nat -A PREROUTING -j SQUID
 
        # DNAT rules
-       /sbin/iptables -t nat -N NAT_DESTINATION
-       /sbin/iptables -t nat -A PREROUTING -j NAT_DESTINATION
+       iptables -t nat -N NAT_DESTINATION
+       iptables -t nat -A PREROUTING -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
-       /sbin/iptables -t nat -N UPNPFW
-       /sbin/iptables -t nat -A PREROUTING -j UPNPFW
-       /sbin/iptables -N UPNPFW
-       /sbin/iptables -A FORWARD -m conntrack --ctstate NEW -j UPNPFW
+       iptables -t nat -N UPNPFW
+       iptables -t nat -A PREROUTING -j UPNPFW
+       iptables -N UPNPFW
+       iptables -A FORWARD -m conntrack --ctstate NEW -j UPNPFW
 
-       # run local firewall configuration, if present
-       if [ -x /etc/sysconfig/firewall.local ]; then
-               /etc/sysconfig/firewall.local start
+       # 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
@@ -216,51 +250,43 @@ iptables_init() {
        # run wirelessctrl
        /usr/local/bin/wirelessctrl
 
-       #POLICY CHAIN
-       /sbin/iptables -N POLICYIN
-       /sbin/iptables -A INPUT -j POLICYIN
-       /sbin/iptables -N POLICYFWD
-       /sbin/iptables -A FORWARD -j POLICYFWD
-       /sbin/iptables -N POLICYOUT
-       /sbin/iptables -A OUTPUT -j POLICYOUT
+       # 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
 
-       # read new firewall
-       /usr/local/bin/firewallctrl
-
-       if [ "$DROPINPUT" == "on" ]; then
-               /sbin/iptables -A INPUT   -m limit --limit 10/minute -j LOG --log-prefix "DROP_INPUT"
-       fi
-       /sbin/iptables -A INPUT -j DROP -m comment --comment "DROP_INPUT"
-       if [ "$DROPFORWARD" == "on" ]; then
-               /sbin/iptables -A FORWARD -m limit --limit 10/minute -j LOG --log-prefix "DROP_FORWARD"
-       fi
-       /sbin/iptables -A FORWARD -j DROP -m comment --comment "DROP_FORWARD"
+       # 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
@@ -268,35 +294,66 @@ 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
+               iptables -t nat -A REDNAT -o $IFACE -j MASQUERADE
 
        fi
+
+       # Reload all rules.
+       /usr/local/bin/firewallctrl
 }
 
 # See how we were called.
 case "$1" in
   start)
+       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
+
+       boot_mesg "Setting up firewall"
        iptables_init
+       evaluate_retval
+
+       # run local firewall configuration, if present
+       if [ -x /etc/sysconfig/firewall.local ]; then
+               /etc/sysconfig/firewall.local start
+       fi
        ;;
   reload)
+       boot_mesg "Reloading firewall"
        iptables_red
+       evaluate_retval
+
        # run local firewall configuration, if present
        if [ -x /etc/sysconfig/firewall.local ]; then
                /etc/sysconfig/firewall.local reload
index 16e10f73e4eb8ce2da27a5c2c445aad7a2ce0f24..32236e6cd761615d885f9a7c14ac73975c432945 100644 (file)
@@ -40,6 +40,9 @@ 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
+               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
 
index 3bd27a473ed740caee448a1c466e3351be4e61d0..d75a2e96c674a5849be6f6d657d11f838e980477 100644 (file)
@@ -50,6 +50,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 +65,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 +98,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 02df4bc975701bd3fcfa8e92add15fa53f63f007..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
-
-       
-       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 28df551038efaa9dae66e6cae0f1b8f5a7f87a81..b09737e39526a8e041fe975818283873f97ee777 100644 (file)
@@ -175,6 +175,14 @@ case "${1}" in
                                boot_mesg "Createing ATM-Bridge as $PPP_NIC ..."
                                br2684ctl -c0 -e${ENCAP} -a0.${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 nas0 address ${MAC}
+                               else
+                                       ip link set dev nas0 address $(cat /sys/class/net/green0/address)
+                               fi
+
                                if [ "$TYPE" == "pppoeatm" ]; then
                                        TYPE="pppoe"
                                fi
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 909d63f669ebfcc32ae4549db122c636bebaa8f0..f9b1aa92f09f6a2aa38aecefd9f6c01cfe2c7823 100644 (file)
@@ -6,7 +6,7 @@
 #
 # Authors     : Arne Fitzenreiter - arne_f@ipfire.org
 #
-# Version     : 1.03
+# Version     : 1.04
 #
 # Notes       :
 #
@@ -37,14 +37,18 @@ case "${1}" in
                fi
 
                boot_mesg "Change Partition ${DRV}3 to all free space ..."
-               echo -e ',+' | sfdisk --no-reread -N3 ${DRV} 2>/dev/null
+               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
 
                ;;
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 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 7674ab52c314d229919db8a3220b3866a67fa2d5..b6d01009a8e5234795bf7b3abaf955bf5f88d4ed 100644 (file)
@@ -41,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
index 52b5c8ceae0b5096ebd551143b723eb7bb7d3088..0a86bb0b49120f9bb7b8c607e69ef72857cd7d49 100644 (file)
@@ -372,7 +372,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]);
index 97de2715ff664bda741617bdfb5c04a456a0fb3e..0f176597de2a42982bbf862cee626a42a09b1246 100644 (file)
@@ -13,7 +13,7 @@ int main(int argc, char *argv[]) {
        if (!(initsetuid()))
                exit(1);
 
-       int retval = safe_system("/var/ipfire/firewall/bin/rules.pl");
+       int retval = safe_system("/usr/lib/firewall/rules.pl");
 
        /* If rules.pl has been successfully executed, the indicator
         * file is removed. */
index 272db0faade2dc3abb79687ad1d077c7308b4175..462ce77cce0b99019a09cc8c3df75161b5e94924 100644 (file)
@@ -365,6 +365,7 @@ ERROR:
 }
 
 void setFirewallRules(void) {
+       char command[STRING_SIZE];
        char protocol[STRING_SIZE] = "";
        char dport[STRING_SIZE] = "";
        char dovpnip[STRING_SIZE] = "";
@@ -405,11 +406,15 @@ void setFirewallRules(void) {
        if (!strcmp(enableorange, "on") && strlen(orangeif))
                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) {
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 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
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
diff --git a/src/patches/fireinfo-0001-Exclude-some-more-invalid-patterns.patch b/src/patches/fireinfo-0001-Exclude-some-more-invalid-patterns.patch
new file mode 100644 (file)
index 0000000..fd1c525
--- /dev/null
@@ -0,0 +1,55 @@
+From 220ffe76a48c72171d7724f7f602a2fdd8bbca6a Mon Sep 17 00:00:00 2001
+From: Michael Tremer <michael.tremer@ipfire.org>
+Date: Sat, 15 Feb 2014 18:37:54 +0100
+Subject: [PATCH] Exclude some more invalid patterns.
+
+---
+ src/fireinfo/system.py | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/src/fireinfo/system.py b/src/fireinfo/system.py
+index 40ff7b0..c875f96 100644
+--- a/src/fireinfo/system.py
++++ b/src/fireinfo/system.py
+@@ -44,12 +44,17 @@ INVALID_ID_STRINGS = (
+       "Chassis", "chassis",
+       "Not Applicable",
+       "None", "empty",
++      "XXXXX",
+       "01010101-0101-0101-0101-010101010101",
+       "00020003-0004-0005-0006-000700080009",
+       "03000200-0400-0500-0006-000700080009",
+       "0000000", "00000000",
+ )
++INVALID_ID_STRINGS_EXACT_MATCH = (
++      "NA",
++)
++
+ class Singleton(type):
+       def __init__(cls, name, bases, dict):
+               super(Singleton, cls).__init__(name, bases, dict)
+@@ -234,12 +239,18 @@ class System(object):
+                       if id is None:
+                               continue
+-                      for i in INVALID_ID_STRINGS:
+-                              if i in id:
++                      for i in INVALID_ID_STRINGS_EXACT_MATCH:
++                              if id == i:
+                                       id = None
+                                       break
+                       if id:
++                              for i in INVALID_ID_STRINGS:
++                                      if i in id:
++                                              id = None
++                                              break
++
++                      if id:
+                               _ids.append(id)
+               ids = _ids
+-- 
+1.8.3.1
+
diff --git a/src/patches/fireinfo-2.1.7-testing.patch b/src/patches/fireinfo-2.1.7-testing.patch
deleted file mode 100644 (file)
index 7690454..0000000
+++ /dev/null
@@ -1,4358 +0,0 @@
-diff --git a/.gitignore b/.gitignore
-index 0caee61..92aa5c5 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -1,2 +1,31 @@
--build
-+/Makefile
-+/build-aux
-+/libtool
-+/missing
-+/src/fireinfo/__init__.py
- *.py[co]
-+/*.tar.bz2
-+/*.tar.gz
-+/*.tar.xz
-+*.log
-+*.a
-+*.cache
-+*.gmo
-+*.la
-+*.lo
-+*.o
-+*.stamp
-+*.trs
-+*~
-+.deps
-+.dirstamp
-+.libs
-+Makefile.in
-+aclocal.m4
-+config.h
-+config.h.in
-+config.log
-+config.status
-+configure
-+install-sh
-+stamp-*
-diff --git a/COPYING b/COPYING
-new file mode 100644
-index 0000000..94a9ed0
---- /dev/null
-+++ b/COPYING
-@@ -0,0 +1,674 @@
-+                    GNU GENERAL PUBLIC LICENSE
-+                       Version 3, 29 June 2007
-+
-+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
-+ Everyone is permitted to copy and distribute verbatim copies
-+ of this license document, but changing it is not allowed.
-+
-+                            Preamble
-+
-+  The GNU General Public License is a free, copyleft license for
-+software and other kinds of works.
-+
-+  The licenses for most software and other practical works are designed
-+to take away your freedom to share and change the works.  By contrast,
-+the GNU General Public License is intended to guarantee your freedom to
-+share and change all versions of a program--to make sure it remains free
-+software for all its users.  We, the Free Software Foundation, use the
-+GNU General Public License for most of our software; it applies also to
-+any other work released this way by its authors.  You can apply it to
-+your programs, too.
-+
-+  When we speak of free software, we are referring to freedom, not
-+price.  Our General Public Licenses are designed to make sure that you
-+have the freedom to distribute copies of free software (and charge for
-+them if you wish), that you receive source code or can get it if you
-+want it, that you can change the software or use pieces of it in new
-+free programs, and that you know you can do these things.
-+
-+  To protect your rights, we need to prevent others from denying you
-+these rights or asking you to surrender the rights.  Therefore, you have
-+certain responsibilities if you distribute copies of the software, or if
-+you modify it: responsibilities to respect the freedom of others.
-+
-+  For example, if you distribute copies of such a program, whether
-+gratis or for a fee, you must pass on to the recipients the same
-+freedoms that you received.  You must make sure that they, too, receive
-+or can get the source code.  And you must show them these terms so they
-+know their rights.
-+
-+  Developers that use the GNU GPL protect your rights with two steps:
-+(1) assert copyright on the software, and (2) offer you this License
-+giving you legal permission to copy, distribute and/or modify it.
-+
-+  For the developers' and authors' protection, the GPL clearly explains
-+that there is no warranty for this free software.  For both users' and
-+authors' sake, the GPL requires that modified versions be marked as
-+changed, so that their problems will not be attributed erroneously to
-+authors of previous versions.
-+
-+  Some devices are designed to deny users access to install or run
-+modified versions of the software inside them, although the manufacturer
-+can do so.  This is fundamentally incompatible with the aim of
-+protecting users' freedom to change the software.  The systematic
-+pattern of such abuse occurs in the area of products for individuals to
-+use, which is precisely where it is most unacceptable.  Therefore, we
-+have designed this version of the GPL to prohibit the practice for those
-+products.  If such problems arise substantially in other domains, we
-+stand ready to extend this provision to those domains in future versions
-+of the GPL, as needed to protect the freedom of users.
-+
-+  Finally, every program is threatened constantly by software patents.
-+States should not allow patents to restrict development and use of
-+software on general-purpose computers, but in those that do, we wish to
-+avoid the special danger that patents applied to a free program could
-+make it effectively proprietary.  To prevent this, the GPL assures that
-+patents cannot be used to render the program non-free.
-+
-+  The precise terms and conditions for copying, distribution and
-+modification follow.
-+
-+                       TERMS AND CONDITIONS
-+
-+  0. Definitions.
-+
-+  "This License" refers to version 3 of the GNU General Public License.
-+
-+  "Copyright" also means copyright-like laws that apply to other kinds of
-+works, such as semiconductor masks.
-+
-+  "The Program" refers to any copyrightable work licensed under this
-+License.  Each licensee is addressed as "you".  "Licensees" and
-+"recipients" may be individuals or organizations.
-+
-+  To "modify" a work means to copy from or adapt all or part of the work
-+in a fashion requiring copyright permission, other than the making of an
-+exact copy.  The resulting work is called a "modified version" of the
-+earlier work or a work "based on" the earlier work.
-+
-+  A "covered work" means either the unmodified Program or a work based
-+on the Program.
-+
-+  To "propagate" a work means to do anything with it that, without
-+permission, would make you directly or secondarily liable for
-+infringement under applicable copyright law, except executing it on a
-+computer or modifying a private copy.  Propagation includes copying,
-+distribution (with or without modification), making available to the
-+public, and in some countries other activities as well.
-+
-+  To "convey" a work means any kind of propagation that enables other
-+parties to make or receive copies.  Mere interaction with a user through
-+a computer network, with no transfer of a copy, is not conveying.
-+
-+  An interactive user interface displays "Appropriate Legal Notices"
-+to the extent that it includes a convenient and prominently visible
-+feature that (1) displays an appropriate copyright notice, and (2)
-+tells the user that there is no warranty for the work (except to the
-+extent that warranties are provided), that licensees may convey the
-+work under this License, and how to view a copy of this License.  If
-+the interface presents a list of user commands or options, such as a
-+menu, a prominent item in the list meets this criterion.
-+
-+  1. Source Code.
-+
-+  The "source code" for a work means the preferred form of the work
-+for making modifications to it.  "Object code" means any non-source
-+form of a work.
-+
-+  A "Standard Interface" means an interface that either is an official
-+standard defined by a recognized standards body, or, in the case of
-+interfaces specified for a particular programming language, one that
-+is widely used among developers working in that language.
-+
-+  The "System Libraries" of an executable work include anything, other
-+than the work as a whole, that (a) is included in the normal form of
-+packaging a Major Component, but which is not part of that Major
-+Component, and (b) serves only to enable use of the work with that
-+Major Component, or to implement a Standard Interface for which an
-+implementation is available to the public in source code form.  A
-+"Major Component", in this context, means a major essential component
-+(kernel, window system, and so on) of the specific operating system
-+(if any) on which the executable work runs, or a compiler used to
-+produce the work, or an object code interpreter used to run it.
-+
-+  The "Corresponding Source" for a work in object code form means all
-+the source code needed to generate, install, and (for an executable
-+work) run the object code and to modify the work, including scripts to
-+control those activities.  However, it does not include the work's
-+System Libraries, or general-purpose tools or generally available free
-+programs which are used unmodified in performing those activities but
-+which are not part of the work.  For example, Corresponding Source
-+includes interface definition files associated with source files for
-+the work, and the source code for shared libraries and dynamically
-+linked subprograms that the work is specifically designed to require,
-+such as by intimate data communication or control flow between those
-+subprograms and other parts of the work.
-+
-+  The Corresponding Source need not include anything that users
-+can regenerate automatically from other parts of the Corresponding
-+Source.
-+
-+  The Corresponding Source for a work in source code form is that
-+same work.
-+
-+  2. Basic Permissions.
-+
-+  All rights granted under this License are granted for the term of
-+copyright on the Program, and are irrevocable provided the stated
-+conditions are met.  This License explicitly affirms your unlimited
-+permission to run the unmodified Program.  The output from running a
-+covered work is covered by this License only if the output, given its
-+content, constitutes a covered work.  This License acknowledges your
-+rights of fair use or other equivalent, as provided by copyright law.
-+
-+  You may make, run and propagate covered works that you do not
-+convey, without conditions so long as your license otherwise remains
-+in force.  You may convey covered works to others for the sole purpose
-+of having them make modifications exclusively for you, or provide you
-+with facilities for running those works, provided that you comply with
-+the terms of this License in conveying all material for which you do
-+not control copyright.  Those thus making or running the covered works
-+for you must do so exclusively on your behalf, under your direction
-+and control, on terms that prohibit them from making any copies of
-+your copyrighted material outside their relationship with you.
-+
-+  Conveying under any other circumstances is permitted solely under
-+the conditions stated below.  Sublicensing is not allowed; section 10
-+makes it unnecessary.
-+
-+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-+
-+  No covered work shall be deemed part of an effective technological
-+measure under any applicable law fulfilling obligations under article
-+11 of the WIPO copyright treaty adopted on 20 December 1996, or
-+similar laws prohibiting or restricting circumvention of such
-+measures.
-+
-+  When you convey a covered work, you waive any legal power to forbid
-+circumvention of technological measures to the extent such circumvention
-+is effected by exercising rights under this License with respect to
-+the covered work, and you disclaim any intention to limit operation or
-+modification of the work as a means of enforcing, against the work's
-+users, your or third parties' legal rights to forbid circumvention of
-+technological measures.
-+
-+  4. Conveying Verbatim Copies.
-+
-+  You may convey verbatim copies of the Program's source code as you
-+receive it, in any medium, provided that you conspicuously and
-+appropriately publish on each copy an appropriate copyright notice;
-+keep intact all notices stating that this License and any
-+non-permissive terms added in accord with section 7 apply to the code;
-+keep intact all notices of the absence of any warranty; and give all
-+recipients a copy of this License along with the Program.
-+
-+  You may charge any price or no price for each copy that you convey,
-+and you may offer support or warranty protection for a fee.
-+
-+  5. Conveying Modified Source Versions.
-+
-+  You may convey a work based on the Program, or the modifications to
-+produce it from the Program, in the form of source code under the
-+terms of section 4, provided that you also meet all of these conditions:
-+
-+    a) The work must carry prominent notices stating that you modified
-+    it, and giving a relevant date.
-+
-+    b) The work must carry prominent notices stating that it is
-+    released under this License and any conditions added under section
-+    7.  This requirement modifies the requirement in section 4 to
-+    "keep intact all notices".
-+
-+    c) You must license the entire work, as a whole, under this
-+    License to anyone who comes into possession of a copy.  This
-+    License will therefore apply, along with any applicable section 7
-+    additional terms, to the whole of the work, and all its parts,
-+    regardless of how they are packaged.  This License gives no
-+    permission to license the work in any other way, but it does not
-+    invalidate such permission if you have separately received it.
-+
-+    d) If the work has interactive user interfaces, each must display
-+    Appropriate Legal Notices; however, if the Program has interactive
-+    interfaces that do not display Appropriate Legal Notices, your
-+    work need not make them do so.
-+
-+  A compilation of a covered work with other separate and independent
-+works, which are not by their nature extensions of the covered work,
-+and which are not combined with it such as to form a larger program,
-+in or on a volume of a storage or distribution medium, is called an
-+"aggregate" if the compilation and its resulting copyright are not
-+used to limit the access or legal rights of the compilation's users
-+beyond what the individual works permit.  Inclusion of a covered work
-+in an aggregate does not cause this License to apply to the other
-+parts of the aggregate.
-+
-+  6. Conveying Non-Source Forms.
-+
-+  You may convey a covered work in object code form under the terms
-+of sections 4 and 5, provided that you also convey the
-+machine-readable Corresponding Source under the terms of this License,
-+in one of these ways:
-+
-+    a) Convey the object code in, or embodied in, a physical product
-+    (including a physical distribution medium), accompanied by the
-+    Corresponding Source fixed on a durable physical medium
-+    customarily used for software interchange.
-+
-+    b) Convey the object code in, or embodied in, a physical product
-+    (including a physical distribution medium), accompanied by a
-+    written offer, valid for at least three years and valid for as
-+    long as you offer spare parts or customer support for that product
-+    model, to give anyone who possesses the object code either (1) a
-+    copy of the Corresponding Source for all the software in the
-+    product that is covered by this License, on a durable physical
-+    medium customarily used for software interchange, for a price no
-+    more than your reasonable cost of physically performing this
-+    conveying of source, or (2) access to copy the
-+    Corresponding Source from a network server at no charge.
-+
-+    c) Convey individual copies of the object code with a copy of the
-+    written offer to provide the Corresponding Source.  This
-+    alternative is allowed only occasionally and noncommercially, and
-+    only if you received the object code with such an offer, in accord
-+    with subsection 6b.
-+
-+    d) Convey the object code by offering access from a designated
-+    place (gratis or for a charge), and offer equivalent access to the
-+    Corresponding Source in the same way through the same place at no
-+    further charge.  You need not require recipients to copy the
-+    Corresponding Source along with the object code.  If the place to
-+    copy the object code is a network server, the Corresponding Source
-+    may be on a different server (operated by you or a third party)
-+    that supports equivalent copying facilities, provided you maintain
-+    clear directions next to the object code saying where to find the
-+    Corresponding Source.  Regardless of what server hosts the
-+    Corresponding Source, you remain obligated to ensure that it is
-+    available for as long as needed to satisfy these requirements.
-+
-+    e) Convey the object code using peer-to-peer transmission, provided
-+    you inform other peers where the object code and Corresponding
-+    Source of the work are being offered to the general public at no
-+    charge under subsection 6d.
-+
-+  A separable portion of the object code, whose source code is excluded
-+from the Corresponding Source as a System Library, need not be
-+included in conveying the object code work.
-+
-+  A "User Product" is either (1) a "consumer product", which means any
-+tangible personal property which is normally used for personal, family,
-+or household purposes, or (2) anything designed or sold for incorporation
-+into a dwelling.  In determining whether a product is a consumer product,
-+doubtful cases shall be resolved in favor of coverage.  For a particular
-+product received by a particular user, "normally used" refers to a
-+typical or common use of that class of product, regardless of the status
-+of the particular user or of the way in which the particular user
-+actually uses, or expects or is expected to use, the product.  A product
-+is a consumer product regardless of whether the product has substantial
-+commercial, industrial or non-consumer uses, unless such uses represent
-+the only significant mode of use of the product.
-+
-+  "Installation Information" for a User Product means any methods,
-+procedures, authorization keys, or other information required to install
-+and execute modified versions of a covered work in that User Product from
-+a modified version of its Corresponding Source.  The information must
-+suffice to ensure that the continued functioning of the modified object
-+code is in no case prevented or interfered with solely because
-+modification has been made.
-+
-+  If you convey an object code work under this section in, or with, or
-+specifically for use in, a User Product, and the conveying occurs as
-+part of a transaction in which the right of possession and use of the
-+User Product is transferred to the recipient in perpetuity or for a
-+fixed term (regardless of how the transaction is characterized), the
-+Corresponding Source conveyed under this section must be accompanied
-+by the Installation Information.  But this requirement does not apply
-+if neither you nor any third party retains the ability to install
-+modified object code on the User Product (for example, the work has
-+been installed in ROM).
-+
-+  The requirement to provide Installation Information does not include a
-+requirement to continue to provide support service, warranty, or updates
-+for a work that has been modified or installed by the recipient, or for
-+the User Product in which it has been modified or installed.  Access to a
-+network may be denied when the modification itself materially and
-+adversely affects the operation of the network or violates the rules and
-+protocols for communication across the network.
-+
-+  Corresponding Source conveyed, and Installation Information provided,
-+in accord with this section must be in a format that is publicly
-+documented (and with an implementation available to the public in
-+source code form), and must require no special password or key for
-+unpacking, reading or copying.
-+
-+  7. Additional Terms.
-+
-+  "Additional permissions" are terms that supplement the terms of this
-+License by making exceptions from one or more of its conditions.
-+Additional permissions that are applicable to the entire Program shall
-+be treated as though they were included in this License, to the extent
-+that they are valid under applicable law.  If additional permissions
-+apply only to part of the Program, that part may be used separately
-+under those permissions, but the entire Program remains governed by
-+this License without regard to the additional permissions.
-+
-+  When you convey a copy of a covered work, you may at your option
-+remove any additional permissions from that copy, or from any part of
-+it.  (Additional permissions may be written to require their own
-+removal in certain cases when you modify the work.)  You may place
-+additional permissions on material, added by you to a covered work,
-+for which you have or can give appropriate copyright permission.
-+
-+  Notwithstanding any other provision of this License, for material you
-+add to a covered work, you may (if authorized by the copyright holders of
-+that material) supplement the terms of this License with terms:
-+
-+    a) Disclaiming warranty or limiting liability differently from the
-+    terms of sections 15 and 16 of this License; or
-+
-+    b) Requiring preservation of specified reasonable legal notices or
-+    author attributions in that material or in the Appropriate Legal
-+    Notices displayed by works containing it; or
-+
-+    c) Prohibiting misrepresentation of the origin of that material, or
-+    requiring that modified versions of such material be marked in
-+    reasonable ways as different from the original version; or
-+
-+    d) Limiting the use for publicity purposes of names of licensors or
-+    authors of the material; or
-+
-+    e) Declining to grant rights under trademark law for use of some
-+    trade names, trademarks, or service marks; or
-+
-+    f) Requiring indemnification of licensors and authors of that
-+    material by anyone who conveys the material (or modified versions of
-+    it) with contractual assumptions of liability to the recipient, for
-+    any liability that these contractual assumptions directly impose on
-+    those licensors and authors.
-+
-+  All other non-permissive additional terms are considered "further
-+restrictions" within the meaning of section 10.  If the Program as you
-+received it, or any part of it, contains a notice stating that it is
-+governed by this License along with a term that is a further
-+restriction, you may remove that term.  If a license document contains
-+a further restriction but permits relicensing or conveying under this
-+License, you may add to a covered work material governed by the terms
-+of that license document, provided that the further restriction does
-+not survive such relicensing or conveying.
-+
-+  If you add terms to a covered work in accord with this section, you
-+must place, in the relevant source files, a statement of the
-+additional terms that apply to those files, or a notice indicating
-+where to find the applicable terms.
-+
-+  Additional terms, permissive or non-permissive, may be stated in the
-+form of a separately written license, or stated as exceptions;
-+the above requirements apply either way.
-+
-+  8. Termination.
-+
-+  You may not propagate or modify a covered work except as expressly
-+provided under this License.  Any attempt otherwise to propagate or
-+modify it is void, and will automatically terminate your rights under
-+this License (including any patent licenses granted under the third
-+paragraph of section 11).
-+
-+  However, if you cease all violation of this License, then your
-+license from a particular copyright holder is reinstated (a)
-+provisionally, unless and until the copyright holder explicitly and
-+finally terminates your license, and (b) permanently, if the copyright
-+holder fails to notify you of the violation by some reasonable means
-+prior to 60 days after the cessation.
-+
-+  Moreover, your license from a particular copyright holder is
-+reinstated permanently if the copyright holder notifies you of the
-+violation by some reasonable means, this is the first time you have
-+received notice of violation of this License (for any work) from that
-+copyright holder, and you cure the violation prior to 30 days after
-+your receipt of the notice.
-+
-+  Termination of your rights under this section does not terminate the
-+licenses of parties who have received copies or rights from you under
-+this License.  If your rights have been terminated and not permanently
-+reinstated, you do not qualify to receive new licenses for the same
-+material under section 10.
-+
-+  9. Acceptance Not Required for Having Copies.
-+
-+  You are not required to accept this License in order to receive or
-+run a copy of the Program.  Ancillary propagation of a covered work
-+occurring solely as a consequence of using peer-to-peer transmission
-+to receive a copy likewise does not require acceptance.  However,
-+nothing other than this License grants you permission to propagate or
-+modify any covered work.  These actions infringe copyright if you do
-+not accept this License.  Therefore, by modifying or propagating a
-+covered work, you indicate your acceptance of this License to do so.
-+
-+  10. Automatic Licensing of Downstream Recipients.
-+
-+  Each time you convey a covered work, the recipient automatically
-+receives a license from the original licensors, to run, modify and
-+propagate that work, subject to this License.  You are not responsible
-+for enforcing compliance by third parties with this License.
-+
-+  An "entity transaction" is a transaction transferring control of an
-+organization, or substantially all assets of one, or subdividing an
-+organization, or merging organizations.  If propagation of a covered
-+work results from an entity transaction, each party to that
-+transaction who receives a copy of the work also receives whatever
-+licenses to the work the party's predecessor in interest had or could
-+give under the previous paragraph, plus a right to possession of the
-+Corresponding Source of the work from the predecessor in interest, if
-+the predecessor has it or can get it with reasonable efforts.
-+
-+  You may not impose any further restrictions on the exercise of the
-+rights granted or affirmed under this License.  For example, you may
-+not impose a license fee, royalty, or other charge for exercise of
-+rights granted under this License, and you may not initiate litigation
-+(including a cross-claim or counterclaim in a lawsuit) alleging that
-+any patent claim is infringed by making, using, selling, offering for
-+sale, or importing the Program or any portion of it.
-+
-+  11. Patents.
-+
-+  A "contributor" is a copyright holder who authorizes use under this
-+License of the Program or a work on which the Program is based.  The
-+work thus licensed is called the contributor's "contributor version".
-+
-+  A contributor's "essential patent claims" are all patent claims
-+owned or controlled by the contributor, whether already acquired or
-+hereafter acquired, that would be infringed by some manner, permitted
-+by this License, of making, using, or selling its contributor version,
-+but do not include claims that would be infringed only as a
-+consequence of further modification of the contributor version.  For
-+purposes of this definition, "control" includes the right to grant
-+patent sublicenses in a manner consistent with the requirements of
-+this License.
-+
-+  Each contributor grants you a non-exclusive, worldwide, royalty-free
-+patent license under the contributor's essential patent claims, to
-+make, use, sell, offer for sale, import and otherwise run, modify and
-+propagate the contents of its contributor version.
-+
-+  In the following three paragraphs, a "patent license" is any express
-+agreement or commitment, however denominated, not to enforce a patent
-+(such as an express permission to practice a patent or covenant not to
-+sue for patent infringement).  To "grant" such a patent license to a
-+party means to make such an agreement or commitment not to enforce a
-+patent against the party.
-+
-+  If you convey a covered work, knowingly relying on a patent license,
-+and the Corresponding Source of the work is not available for anyone
-+to copy, free of charge and under the terms of this License, through a
-+publicly available network server or other readily accessible means,
-+then you must either (1) cause the Corresponding Source to be so
-+available, or (2) arrange to deprive yourself of the benefit of the
-+patent license for this particular work, or (3) arrange, in a manner
-+consistent with the requirements of this License, to extend the patent
-+license to downstream recipients.  "Knowingly relying" means you have
-+actual knowledge that, but for the patent license, your conveying the
-+covered work in a country, or your recipient's use of the covered work
-+in a country, would infringe one or more identifiable patents in that
-+country that you have reason to believe are valid.
-+
-+  If, pursuant to or in connection with a single transaction or
-+arrangement, you convey, or propagate by procuring conveyance of, a
-+covered work, and grant a patent license to some of the parties
-+receiving the covered work authorizing them to use, propagate, modify
-+or convey a specific copy of the covered work, then the patent license
-+you grant is automatically extended to all recipients of the covered
-+work and works based on it.
-+
-+  A patent license is "discriminatory" if it does not include within
-+the scope of its coverage, prohibits the exercise of, or is
-+conditioned on the non-exercise of one or more of the rights that are
-+specifically granted under this License.  You may not convey a covered
-+work if you are a party to an arrangement with a third party that is
-+in the business of distributing software, under which you make payment
-+to the third party based on the extent of your activity of conveying
-+the work, and under which the third party grants, to any of the
-+parties who would receive the covered work from you, a discriminatory
-+patent license (a) in connection with copies of the covered work
-+conveyed by you (or copies made from those copies), or (b) primarily
-+for and in connection with specific products or compilations that
-+contain the covered work, unless you entered into that arrangement,
-+or that patent license was granted, prior to 28 March 2007.
-+
-+  Nothing in this License shall be construed as excluding or limiting
-+any implied license or other defenses to infringement that may
-+otherwise be available to you under applicable patent law.
-+
-+  12. No Surrender of Others' Freedom.
-+
-+  If conditions are imposed on you (whether by court order, agreement or
-+otherwise) that contradict the conditions of this License, they do not
-+excuse you from the conditions of this License.  If you cannot convey a
-+covered work so as to satisfy simultaneously your obligations under this
-+License and any other pertinent obligations, then as a consequence you may
-+not convey it at all.  For example, if you agree to terms that obligate you
-+to collect a royalty for further conveying from those to whom you convey
-+the Program, the only way you could satisfy both those terms and this
-+License would be to refrain entirely from conveying the Program.
-+
-+  13. Use with the GNU Affero General Public License.
-+
-+  Notwithstanding any other provision of this License, you have
-+permission to link or combine any covered work with a work licensed
-+under version 3 of the GNU Affero General Public License into a single
-+combined work, and to convey the resulting work.  The terms of this
-+License will continue to apply to the part which is the covered work,
-+but the special requirements of the GNU Affero General Public License,
-+section 13, concerning interaction through a network will apply to the
-+combination as such.
-+
-+  14. Revised Versions of this License.
-+
-+  The Free Software Foundation may publish revised and/or new versions of
-+the GNU General Public License from time to time.  Such new versions will
-+be similar in spirit to the present version, but may differ in detail to
-+address new problems or concerns.
-+
-+  Each version is given a distinguishing version number.  If the
-+Program specifies that a certain numbered version of the GNU General
-+Public License "or any later version" applies to it, you have the
-+option of following the terms and conditions either of that numbered
-+version or of any later version published by the Free Software
-+Foundation.  If the Program does not specify a version number of the
-+GNU General Public License, you may choose any version ever published
-+by the Free Software Foundation.
-+
-+  If the Program specifies that a proxy can decide which future
-+versions of the GNU General Public License can be used, that proxy's
-+public statement of acceptance of a version permanently authorizes you
-+to choose that version for the Program.
-+
-+  Later license versions may give you additional or different
-+permissions.  However, no additional obligations are imposed on any
-+author or copyright holder as a result of your choosing to follow a
-+later version.
-+
-+  15. Disclaimer of Warranty.
-+
-+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-+
-+  16. Limitation of Liability.
-+
-+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-+SUCH DAMAGES.
-+
-+  17. Interpretation of Sections 15 and 16.
-+
-+  If the disclaimer of warranty and limitation of liability provided
-+above cannot be given local legal effect according to their terms,
-+reviewing courts shall apply local law that most closely approximates
-+an absolute waiver of all civil liability in connection with the
-+Program, unless a warranty or assumption of liability accompanies a
-+copy of the Program in return for a fee.
-+
-+                     END OF TERMS AND CONDITIONS
-+
-+            How to Apply These Terms to Your New Programs
-+
-+  If you develop a new program, and you want it to be of the greatest
-+possible use to the public, the best way to achieve this is to make it
-+free software which everyone can redistribute and change under these terms.
-+
-+  To do so, attach the following notices to the program.  It is safest
-+to attach them to the start of each source file to most effectively
-+state the exclusion of warranty; and each file should have at least
-+the "copyright" line and a pointer to where the full notice is found.
-+
-+    <one line to give the program's name and a brief idea of what it does.>
-+    Copyright (C) <year>  <name of author>
-+
-+    This program is free software: you can redistribute it and/or modify
-+    it under the terms of the GNU General Public License as published by
-+    the Free Software Foundation, either version 3 of the License, or
-+    (at your option) any later version.
-+
-+    This program is distributed in the hope that it will be useful,
-+    but WITHOUT ANY WARRANTY; without even the implied warranty of
-+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+    GNU General Public License for more details.
-+
-+    You should have received a copy of the GNU General Public License
-+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-+
-+Also add information on how to contact you by electronic and paper mail.
-+
-+  If the program does terminal interaction, make it output a short
-+notice like this when it starts in an interactive mode:
-+
-+    <program>  Copyright (C) <year>  <name of author>
-+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-+    This is free software, and you are welcome to redistribute it
-+    under certain conditions; type `show c' for details.
-+
-+The hypothetical commands `show w' and `show c' should show the appropriate
-+parts of the General Public License.  Of course, your program's commands
-+might be different; for a GUI interface, you would use an "about box".
-+
-+  You should also get your employer (if you work as a programmer) or school,
-+if any, to sign a "copyright disclaimer" for the program, if necessary.
-+For more information on this, and how to apply and follow the GNU GPL, see
-+<http://www.gnu.org/licenses/>.
-+
-+  The GNU General Public License does not permit incorporating your program
-+into proprietary programs.  If your program is a subroutine library, you
-+may consider it more useful to permit linking proprietary applications with
-+the library.  If this is what you want to do, use the GNU Lesser General
-+Public License instead of this License.  But first, please read
-+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
-diff --git a/MANIFEST b/MANIFEST
-deleted file mode 100644
-index 24ca115..0000000
---- a/MANIFEST
-+++ /dev/null
-@@ -1,9 +0,0 @@
--sendprofile
--setup.py
--fireinfo/__init__.py
--fireinfo/cpu.py
--fireinfo/device.py
--fireinfo/hypervisor.py
--fireinfo/network.py
--fireinfo/system.py
--src/fireinfo.c
-diff --git a/Makefile.am b/Makefile.am
-new file mode 100644
-index 0000000..260f14f
---- /dev/null
-+++ b/Makefile.am
-@@ -0,0 +1,87 @@
-+###############################################################################
-+#                                                                             #
-+# Pakfire - The IPFire package management system                              #
-+# Copyright (C) 2013 Pakfire development team                                 #
-+#                                                                             #
-+# This program is free software: you can redistribute it and/or modify        #
-+# it under the terms of the GNU General Public License as published by        #
-+# the Free Software Foundation, either version 3 of the License, or           #
-+# (at your option) any later version.                                         #
-+#                                                                             #
-+# This program is distributed in the hope that it will be useful,             #
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-+# GNU General Public License for more details.                                #
-+#                                                                             #
-+# You should have received a copy of the GNU General Public License           #
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-+#                                                                             #
-+###############################################################################
-+
-+ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-+AM_MAKEFLAGS = --no-print-directory
-+AUTOMAKE_OPTIONS = color-tests
-+
-+# remove target it the command fails
-+.DELETE_ON_ERROR:
-+
-+# keep itermediate files
-+.SECONDARY:
-+
-+CLEANFILES =
-+DISTCLEANFILES =
-+EXTRA_DIST =
-+
-+AM_CPPFLAGS = \
-+      -include $(top_builddir)/config.h \
-+      -I $(top_srcdir)/include \
-+      $(OUR_CPPFLAGS)
-+
-+AM_CFLAGS = $(OUR_CFLAGS)
-+AM_LDFLAGS = $(OUR_LDFLAGS)
-+
-+pkgpyexec_LTLIBRARIES =
-+
-+# ------------------------------------------------------------------------------
-+
-+dist_doc_DATA = \
-+      COPYING
-+
-+# ------------------------------------------------------------------------------
-+
-+dist_bin_SCRIPTS = \
-+      src/sendprofile
-+
-+# ------------------------------------------------------------------------------
-+
-+fireinfo_PYTHON = \
-+      src/fireinfo/__init__.py \
-+      src/fireinfo/bios.py \
-+      src/fireinfo/cpu.py \
-+      src/fireinfo/device.py \
-+      src/fireinfo/hypervisor.py \
-+      src/fireinfo/network.py \
-+      src/fireinfo/system.py
-+
-+fireinfodir = $(pythondir)/fireinfo
-+
-+# ------------------------------------------------------------------------------
-+
-+pkgpyexec_LTLIBRARIES += \
-+      _fireinfo.la
-+
-+_fireinfo_la_SOURCES = \
-+      src/_fireinfo/fireinfo.c
-+
-+_fireinfo_la_CFLAGS = \
-+      $(AM_CFLAGS) \
-+      $(PYTHON_DEVEL_CFLAGS)
-+
-+_fireinfo_la_LDFLAGS = \
-+      $(AM_LDFLAGS) \
-+      -shared \
-+      -module \
-+      -avoid-version
-+
-+_fireinfo_la_LIBADD = \
-+      $(PYTHON_DEVEL_LIBS)
-diff --git a/autogen.sh b/autogen.sh
-new file mode 100755
-index 0000000..c08fadf
---- /dev/null
-+++ b/autogen.sh
-@@ -0,0 +1,3 @@
-+#!/bin/sh
-+
-+autoreconf --force --install --symlink
-diff --git a/configure.ac b/configure.ac
-new file mode 100644
-index 0000000..4d5efef
---- /dev/null
-+++ b/configure.ac
-@@ -0,0 +1,110 @@
-+###############################################################################
-+#                                                                             #
-+# Pakfire - The IPFire package management system                              #
-+# Copyright (C) 2013 Pakfire development team                                 #
-+#                                                                             #
-+# This program is free software: you can redistribute it and/or modify        #
-+# it under the terms of the GNU General Public License as published by        #
-+# the Free Software Foundation, either version 3 of the License, or           #
-+# (at your option) any later version.                                         #
-+#                                                                             #
-+# This program is distributed in the hope that it will be useful,             #
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-+# GNU General Public License for more details.                                #
-+#                                                                             #
-+# You should have received a copy of the GNU General Public License           #
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-+#                                                                             #
-+###############################################################################
-+
-+AC_PREREQ([2.64])
-+
-+AC_INIT([fireinfo],
-+      [2.1.7],
-+      [info@ipfire.org],
-+      [fireinfo],
-+      [http://git.ipfire.org/?p=oddments/fireinfo.git;a=summary])
-+
-+AC_CONFIG_MACRO_DIR([m4])
-+AC_CONFIG_HEADERS([config.h])
-+AC_CONFIG_AUX_DIR([build-aux])
-+
-+AC_USE_SYSTEM_EXTENSIONS
-+AC_SYS_LARGEFILE
-+AC_PREFIX_DEFAULT([/usr])
-+
-+AM_INIT_AUTOMAKE([
-+      foreign
-+      1.11
-+      -Wall
-+      -Wno-portability
-+      silent-rules
-+      tar-pax
-+      subdir-objects
-+])
-+AM_SILENT_RULES([yes])
-+LT_PREREQ(2.2)
-+LT_INIT([disable-static])
-+
-+# pkg-config
-+PKG_PROG_PKG_CONFIG
-+# This makes sure pkg.m4 is available.
-+m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
-+
-+# C Compiler
-+AC_PROG_CC
-+AC_PROG_CC_C99
-+AC_PROG_CC_C_O
-+AC_PROG_GCC_TRADITIONAL
-+AC_OPENMP
-+
-+CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
-+      -pipe \
-+      -Wall \
-+      -Wextra \
-+      -Wno-inline \
-+      -Wundef \
-+      "-Wformat=2 -Wformat-security -Wformat-nonliteral" \
-+      -Wno-unused-parameter \
-+      -Wno-unused-result \
-+      -fno-strict-aliasing \
-+      -ffunction-sections \
-+      -fdata-sections \
-+      -fstack-protector-all \
-+      --param=ssp-buffer-size=4])
-+AC_SUBST([OUR_CFLAGS], $with_cflags)
-+
-+AS_CASE([$CFLAGS], [*-O[[12345g\ ]]*],
-+      [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
-+              -Wp,-D_FORTIFY_SOURCE=2])],
-+      [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])])
-+AC_SUBST([OUR_CPPFLAGS], $with_cppflags)
-+
-+CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
-+      -Wl,--as-needed \
-+      -Wl,--no-undefined \
-+      -Wl,--gc-sections \
-+      -Wl,-z,relro \
-+      -Wl,-z,now])
-+AC_SUBST([OUR_LDFLAGS], $with_ldflags)
-+
-+# Python
-+AM_PATH_PYTHON([2.7])
-+PKG_CHECK_MODULES([PYTHON_DEVEL], [python-${PYTHON_VERSION}])
-+
-+AC_CONFIG_FILES([
-+      Makefile
-+      src/fireinfo/__init__.py
-+])
-+
-+AC_OUTPUT
-+AC_MSG_RESULT([
-+      $PACKAGE_NAME $VERSION
-+
-+      CFLAGS:                 ${OUR_CFLAGS} ${CFLAGS}
-+      CPPFLAGS:               ${OUR_CPPFLAGS} ${CPPFLAGS}
-+      LDFLAGS:                ${OUR_LDFLAGS} ${LDFLAGS}
-+      PYTHON_CFLAGS:          ${PYTHON_DEVEL_CFLAGS}
-+      PYTHON_LIBS:            ${PYTHON_DEVEL_LIBS}
-+])
-diff --git a/fireinfo/__init__.py b/fireinfo/__init__.py
-deleted file mode 100644
-index 86fcc66..0000000
---- a/fireinfo/__init__.py
-+++ /dev/null
-@@ -1,24 +0,0 @@
--#!/usr/bin/python
--###############################################################################
--#                                                                             #
--# Fireinfo                                                                    #
--# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
--#                                                                             #
--# This program is free software: you can redistribute it and/or modify        #
--# it under the terms of the GNU General Public License as published by        #
--# the Free Software Foundation, either version 3 of the License, or           #
--# (at your option) any later version.                                         #
--#                                                                             #
--# This program is distributed in the hope that it will be useful,             #
--# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
--# GNU General Public License for more details.                                #
--#                                                                             #
--# You should have received a copy of the GNU General Public License           #
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
--#                                                                             #
--###############################################################################
--
--__version__ = "2.1.7"
--
--from system import System
-diff --git a/fireinfo/cpu.py b/fireinfo/cpu.py
-deleted file mode 100644
-index 32d885d..0000000
---- a/fireinfo/cpu.py
-+++ /dev/null
-@@ -1,194 +0,0 @@
--#!/usr/bin/python
--###############################################################################
--#                                                                             #
--# Fireinfo                                                                    #
--# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
--#                                                                             #
--# This program is free software: you can redistribute it and/or modify        #
--# it under the terms of the GNU General Public License as published by        #
--# the Free Software Foundation, either version 3 of the License, or           #
--# (at your option) any later version.                                         #
--#                                                                             #
--# This program is distributed in the hope that it will be useful,             #
--# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
--# GNU General Public License for more details.                                #
--#                                                                             #
--# You should have received a copy of the GNU General Public License           #
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
--#                                                                             #
--###############################################################################
--
--import os
--
--import system
--
--PROC_CPUINFO = "/proc/cpuinfo"
--
--class CPU(object):
--      """
--              A class that represents the first CPU in a system.
--
--              We get all information form the first CPU (or core) and assume that
--              all other ones are equal.
--      """
--
--      __cpuinfo = {}
--
--      def __init__(self):
--              """
--                      Initialize this class by reading all data from /proc/cpuinfo.
--              """
--              self.__cpuinfo = self.read_cpuinfo()
--
--      @property
--      def system(self):
--              return system.System()
--
--      @staticmethod
--      def read_cpuinfo():
--              """
--                      Read information from PROC_CPUINFO and store
--                      it into a dictionary cpuinfo.
--              """
--              cpuinfo = {}
--
--              f = open(PROC_CPUINFO)
--              while True:
--                      line = f.readline()
--
--                      if not line:
--                              break
--
--                      try:
--                              key, val = line.split(":", 1)
--                      except ValueError:
--                              # We got a line without key, pass that.
--                              pass
--
--                      key = key.strip().replace(" ", "_")
--                      val = val.strip()
--
--                      cpuinfo[key] = val
--
--              f.close()
--
--              return cpuinfo
--
--      @property
--      def bogomips(self):
--              """
--                      Return the bogomips of this CPU.
--              """
--              try:
--                      bogomips = self.__cpuinfo["bogomips"]
--              except KeyError:
--                      bogomips = self.__cpuinfo["BogoMIPS"]
--
--              return float(bogomips)
--
--      @property
--      def model(self):
--              """
--                      Return the model id of this CPU.
--              """
--              try:
--                      model = int(self.__cpuinfo["model"])
--              except KeyError:
--                      model = None
--
--              return model
--
--      @property
--      def model_string(self):
--              """
--                      Return the model string of this CPU.
--              """
--              try:
--                      return self.__cpuinfo["model_name"]
--              except KeyError:
--                      return self.__cpuinfo["Processor"]
--
--      @property
--      def vendor(self):
--              """
--                      Return the vendor string of this CPU.
--              """
--              try:
--                      vendor = self.__cpuinfo["vendor_id"]
--              except KeyError:
--                      if self.system.arch.startswith("arm"):
--                              vendor = "ARM"
--                      else:
--                              vendor = ""
--
--              return vendor
--
--      @property
--      def stepping(self):
--              """
--                      Return the stepping id of this CPU.
--              """
--              try:
--                      stepping = int(self.__cpuinfo["stepping"])
--              except KeyError:
--                      stepping = None
--
--              return stepping
--
--      @property
--      def flags(self):
--              """
--                      Return all flags of this CPU.
--              """
--              try:
--                      flags = self.__cpuinfo["flags"]
--              except KeyError:
--                      flags = self.__cpuinfo["Features"]
--
--              return flags.split()
--
--      @property
--      def speed(self):
--              """
--                      Return the speed (in MHz) of this CPU.
--              """
--              try:
--                      speed = float(self.__cpuinfo["cpu_MHz"])
--              except KeyError:
--                      speed = 0
--
--              return speed
--
--      @property
--      def family(self):
--              """
--                      Return the family id of this CPU.
--              """
--              try:
--                      family = int(self.__cpuinfo["cpu_family"])
--              except KeyError:
--                      family = None
--
--              return family
--      
--      @property
--      def count(self):
--              """
--                      Count number of CPUs (cores).
--              """
--              return os.sysconf("SC_NPROCESSORS_ONLN")
--
--
--if __name__ == "__main__":
--      c = CPU()
--
--      print "Vendor:", c.vendor
--      print "Model:", c.model
--      print "Stepping:", c.stepping
--      print "Flags:", c.flags
--      print "Bogomips:", c.bogomips
--      print "Speed:", c.speed
--      print "Family:", c.family
--      print "Count:", c.count
--      print "Model string:", c.model_string
-diff --git a/fireinfo/device.py b/fireinfo/device.py
-deleted file mode 100644
-index 01338b2..0000000
---- a/fireinfo/device.py
-+++ /dev/null
-@@ -1,133 +0,0 @@
--#!/usr/bin/python
--###############################################################################
--#                                                                             #
--# Fireinfo                                                                    #
--# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
--#                                                                             #
--# This program is free software: you can redistribute it and/or modify        #
--# it under the terms of the GNU General Public License as published by        #
--# the Free Software Foundation, either version 3 of the License, or           #
--# (at your option) any later version.                                         #
--#                                                                             #
--# This program is distributed in the hope that it will be useful,             #
--# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
--# GNU General Public License for more details.                                #
--#                                                                             #
--# You should have received a copy of the GNU General Public License           #
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
--#                                                                             #
--###############################################################################
--
--import os.path
--
--class Device(object):
--      """
--              This is an abstract class that represents all devices in the system.
--              Every single device has its own instance of this class.
--      """
--
--      def __init__(self, path):
--              """
--                      Collect all information about the device by reading the
--                      "uevent" file and parsing it.
--              """
--
--              # Save the path in /sys to the device.
--              self.path = path
--
--              # Datastructure to store information we read.
--              self._uevent = {}
--
--              # Open the uevent file and parse all lines.
--              with open(os.path.join(path, "uevent")) as f:
--                      for line in f.readlines():
--                              key, val = line.split("=")
--                              self._uevent[key] = val.rstrip().lower()
--
--      @property
--      def driver(self):
--              """
--                      Get the driver/kernel module that device is driven by or return None.
--              """
--              return self._uevent.get("DRIVER", None)
--
--                      
--class PCIDevice(Device):
--      """
--              A class that represents all PCI (and PCIe) devices in a system.
--      """
--
--      subsystem = "pci"
--
--      @property
--      def model(self):
--              """
--                      Return the PCI model id of this device.
--              """
--              return self._uevent['PCI_ID'].split(":")[1]
--              
--      @property
--      def vendor(self):
--              """
--                      Return the PCI vendor id of this device.
--              """
--              return self._uevent['PCI_ID'].split(":")[0]
--
--      @property
--      def deviceclass(self):
--              """
--                      Return the PCI device class of this device.
--              """
--              return self._uevent['PCI_CLASS']
--
--      @property
--      def sub_vendor(self):
--              """
--                      Return the PCI vendor sub id of this device.
--              """
--              return self._uevent["PCI_SUBSYS_ID"].split(":")[0]
--
--      @property
--      def sub_model(self):
--              """
--                      Return the PCI model sub id of this device.
--              """
--              return self._uevent["PCI_SUBSYS_ID"].split(":")[1]
--
--
--class USBDevice(Device):
--      """
--              A class that represents all USB devices in a system.
--      """
--
--      subsystem = "usb"
--      
--      def pad(self, s):
--              """
--                      A function to pad ids that have no leading zeroes.
--              """
--              while len(s) < 4:
--                      s = "0"+s
--              return s
--
--      @property
--      def vendor(self):
--              """
--                      Return the USB vendor id of this device.
--              """
--              return self.pad(self._uevent['PRODUCT'].split("/")[0])
--
--      @property
--      def model(self):
--              """
--                      Return the USB model id of this device.
--              """
--              return self.pad(self._uevent['PRODUCT'].split("/")[1])
--
--      @property
--      def deviceclass(self):
--              """
--                      Return the USB device class of this device.
--              """
--              return self._uevent.get("INTERFACE", None)
-diff --git a/fireinfo/hypervisor.py b/fireinfo/hypervisor.py
-deleted file mode 100644
-index 9a3fb09..0000000
---- a/fireinfo/hypervisor.py
-+++ /dev/null
-@@ -1,149 +0,0 @@
--#!/usr/bin/python
--###############################################################################
--#                                                                             #
--# Fireinfo                                                                    #
--# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
--#                                                                             #
--# This program is free software: you can redistribute it and/or modify        #
--# it under the terms of the GNU General Public License as published by        #
--# the Free Software Foundation, either version 3 of the License, or           #
--# (at your option) any later version.                                         #
--#                                                                             #
--# This program is distributed in the hope that it will be useful,             #
--# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
--# GNU General Public License for more details.                                #
--#                                                                             #
--# You should have received a copy of the GNU General Public License           #
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
--#                                                                             #
--###############################################################################
--
--import _fireinfo
--import system
--
--class Hypervisor(object):
--      def __init__(self):
--              self.__info = _fireinfo.get_hypervisor()
--
--      @property
--      def system(self):
--              """
--                      Return the current instance of the System class.
--
--                      We need to do that as a property because otherwise
--                      we get a recursion.
--              """
--              return system.System()
--
--      @property
--      def vendor(self):
--              """
--                      Returns the name of the hypervisor vendor.
--              """
--              if not self.virtual:
--                      return None
--
--              # Some of the hypervisors can be detected in a right way.
--              # We can return them at this place.
--              if self.__info["hypervisor"] in ("Xen", "VMWare", "KVM"):
--                      return self.__info["hypervisor"]
--
--              # Citrix Xen says it is Microsoft Hv.
--              if self.__info["hypervisor"] == "Microsoft" and \
--                              self.system.bios_vendor == "Xen":
--                      return "Xen"
--
--              if not self.__info["hypervisor"]:
--                      # On VMWare systems, the bios vendor string contains "VMWare".
--                      if self.__is_hypervisor_vmware():
--                              return "VMWare"
--
--                      # VirtualBox got "innotek GmbH" as bios vendor.
--                      elif self.__is_hypervisor_virtualbox():
--                              return "VirtualBox"
--
--                      # Check for qemu.
--                      elif self.__is_hypervisor_qemu():
--                              return "Qemu"
--
--                      # Check for Microsoft.
--                      elif self.__is_hypervisor_microsoft():
--                              return "Microsoft"
--
--              return "unknown"
--
--      @property
--      def type(self):
--              """
--                      Returns if the host is running in full virt mode or
--                      if it is running in a paravirtualized environment.
--              """
--              if not self.virtual:
--                      return None
--
--              if self.__info["virtype"]:
--                      return self.__info["virtype"]
--
--              if self.vendor in ("Qemu", "KVM", "VirtualBox", "VMWare"):
--                      return "full"
--
--              return "unknown"
--
--      @property
--      def virtual(self):
--              """
--                      Returns true if the host is running in a virtual environment.
--                      Otherwise: false.
--              """
--              return _fireinfo.is_virtualized() or \
--                      "hypervisor" in self.system.cpu.flags or \
--                      self.__is_hypervisor_virtualbox() or \
--                      self.__is_hypervisor_vmware() or \
--                      self.__is_hypervisor_qemu() or \
--                      self.__is_hypervisor_microsoft()
--
--      def __is_hypervisor_virtualbox(self):
--              """
--                      Check for virtualbox hypervisor by comparing the bios vendor string
--                      to "innotek GmbH".
--              """
--              return self.system.bios_vendor == "innotek GmbH"
--
--      def __is_hypervisor_vmware(self):
--              """
--                      Check for the VMWare hypervisor by the VMWare Hypervisor port check.
--
--                      http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458
--              """
--              if self.system.vendor:
--                      return self.system.vendor.startswith("VMware")
--
--                      # XXX We should use _fireinfo.vmware_hypervisor_port_check() here, too.
--                      # This currently segfaults (and I have no clue why) on VMware player.
--
--      def __is_hypervisor_qemu(self):
--              """
--                      Check for old qemu emulator.
--              """
--              if self.system.bios_vendor:
--                      return self.system.bios_vendor == "Bochs"
--
--              return False
--
--      def __is_hypervisor_microsoft(self):
--              """
--                      Check for Microsoft hypervisor.
--              """
--              if self.system.vendor:
--                      return "Microsoft" in self.system.vendor
--
--              return False
--
--
--if __name__ == "__main__":
--      h = Hypervisor()
--
--      print "Vendor:", h.vendor
--      print "Type:", h.type
--      print "Virtual:", h.virtual
-diff --git a/fireinfo/network.py b/fireinfo/network.py
-deleted file mode 100644
-index 063e9ec..0000000
---- a/fireinfo/network.py
-+++ /dev/null
-@@ -1,53 +0,0 @@
--#!/usr/bin/python
--###############################################################################
--#                                                                             #
--# Fireinfo                                                                    #
--# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
--#                                                                             #
--# This program is free software: you can redistribute it and/or modify        #
--# it under the terms of the GNU General Public License as published by        #
--# the Free Software Foundation, either version 3 of the License, or           #
--# (at your option) any later version.                                         #
--#                                                                             #
--# This program is distributed in the hope that it will be useful,             #
--# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
--# GNU General Public License for more details.                                #
--#                                                                             #
--# You should have received a copy of the GNU General Public License           #
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
--#                                                                             #
--###############################################################################
--
--import os
--
--SYS_CLASS_NET = "/sys/class/net"
--
--class Network(object):
--      def __init__(self):
--              self._devices = os.listdir(SYS_CLASS_NET)
--
--      def has_green(self):
--              return "green0" in self._devices
--
--      def has_red(self):
--              for i in ("red0", "ppp0"):
--                      if i in self._devices:
--                              return True
--
--              return False
--
--      def has_blue(self):
--              return "blue0" in self._devices
--
--      def has_orange(self):
--              return "orange0" in self._devices
--
--
--if __name__ == "__main__":
--      n = Network()
--
--      print "has_green", n.has_green()
--      print "has_red", n.has_red()
--      print "has_blue", n.has_blue()
--      print "has_orange", n.has_orange()
-diff --git a/fireinfo/system.py b/fireinfo/system.py
-deleted file mode 100644
-index 6f02312..0000000
---- a/fireinfo/system.py
-+++ /dev/null
-@@ -1,449 +0,0 @@
--#!/usr/bin/python
--###############################################################################
--#                                                                             #
--# Fireinfo                                                                    #
--# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
--#                                                                             #
--# This program is free software: you can redistribute it and/or modify        #
--# it under the terms of the GNU General Public License as published by        #
--# the Free Software Foundation, either version 3 of the License, or           #
--# (at your option) any later version.                                         #
--#                                                                             #
--# This program is distributed in the hope that it will be useful,             #
--# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
--# GNU General Public License for more details.                                #
--#                                                                             #
--# You should have received a copy of the GNU General Public License           #
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
--#                                                                             #
--###############################################################################
--
--import hashlib
--import json
--import os
--import string
--
--import _fireinfo
--
--import cpu
--import device
--import hypervisor
--import network
--
--PROFILE_VERSION = 0
--
--SYS_CLASS_DMI = "/sys/class/dmi/id"
--SECRET_ID_FILE = "/etc/fireinfo-id"
--
--INVALID_ID_STRINGS = (
--      "OEM", "O.E.M.", "o.e.m.",
--      "N/A", "n/a",
--      "12345", "54321", "202020",
--      "Chassis", "chassis",
--      "Not Applicable",
--      "None", "empty",
--      "01010101-0101-0101-0101-010101010101",
--      "00020003-0004-0005-0006-000700080009",
--      "03000200-0400-0500-0006-000700080009",
--      "0000000", "00000000",
--)
--
--class Singleton(type):
--      def __init__(cls, name, bases, dict):
--              super(Singleton, cls).__init__(name, bases, dict)
--              cls.instance = None
--
--      def __call__(cls, *args, **kw):
--              if cls.instance is None:
--                      cls.instance = super(Singleton, cls).__call__(*args, **kw)
--
--              return cls.instance
--
--
--def read_from_file(filename):
--      """
--              Read all data from filename.
--      """
--      if not os.path.exists(filename):
--              return
--
--      try:
--              with open(filename) as f:
--                      return f.read().strip()
--      except IOError:
--              pass
--
--class System(object):
--      __metaclass__ = Singleton
--
--      def __init__(self):
--              # find all devices
--              self.devices = []
--              self.scan()
--              self.cpu = cpu.CPU()
--              self.hypervisor = hypervisor.Hypervisor()
--
--              # Read /proc/cpuinfo for vendor information.
--              self.__cpuinfo = self.cpu.read_cpuinfo()
--
--      def profile(self):
--              p = {}
--              p["system"] = {
--                      # System information
--                      "model"  : self.model,
--                      "vendor" : self.vendor,
--
--                      # Indicator if the system is running in a
--                      # virtual environment.
--                      "virtual" : self.virtual,
--                      
--                      # System language
--                      "language" : self.language,
--
--                      # Release information
--                      "release" : self.release,
--                      "kernel_release" : self.kernel_release,
--
--                      "memory" : self.memory,
--                      "root_size" : self.root_size,
--              }
--
--              p["devices"] = []
--              for device in self.devices:
--                      d = {
--                              "subsystem" : device.subsystem.lower(), 
--                              "vendor" : device.vendor.lower(), 
--                              "model" : device.model.lower(), 
--                              "deviceclass" : device.deviceclass,
--                              "driver" : device.driver,
--                      }
--
--                      # PCI devices provide subsystem information, USB don't.
--                      if d["subsystem"] == "pci":
--                              d["sub_model"] = device.sub_model
--                              d["sub_vendor"] = device.sub_vendor
--
--                      p["devices"].append(d)
--
--              p["cpu"] = {
--                      "arch" : self.arch,
--                      "vendor" : self.cpu.vendor,
--                      "model" : self.cpu.model,
--                      "model_string" : self.cpu.model_string,
--                      "stepping" : self.cpu.stepping,
--                      "flags" : self.cpu.flags,
--                      "bogomips" : self.cpu.bogomips,
--                      "speed" : self.cpu.speed,
--                      "family" : self.cpu.family,
--                      "count" : self.cpu.count                                
--              }
--
--              p["network"] = {
--                      "green" : self.network.has_green(),
--                      "blue" : self.network.has_blue(),
--                      "orange" : self.network.has_orange(),
--                      "red" : self.network.has_red(),
--               }
--
--              # Only append hypervisor information if we are virtualized.
--              if self.virtual:
--                      p["hypervisor"] = {
--                              "type"   : self.hypervisor.type,
--                              "vendor" : self.hypervisor.vendor,
--                      }
--
--              return {
--                      # Profile version
--                      "profile_version" : PROFILE_VERSION,
--
--                      # Identification and authorization codes
--                      "public_id" : self.public_id,
--                      "private_id" : self.private_id,
--
--                      # Actual profile data
--                      "profile" : p,
--              }
--                              
--              
--      @property
--      def arch(self):
--              return os.uname()[4]
--
--      @property
--      def public_id(self):
--              """
--                      This returns a globally (hopefully) ID to identify the host
--                      later (by request) in the database.
--              """
--              public_id = self.secret_id
--              if not public_id:
--                      return "0" * 40
--
--              return hashlib.sha1(public_id).hexdigest()
--
--      @property
--      def private_id(self):
--              """
--                      The private ID is built out of the _unique_id and used to
--                      permit a host to do changes on the database.
--
--                      No one could ever guess this without access to the host.
--              """
--              private_id = ""
--              for i in reversed(self.secret_id):
--                      private_id += i
--
--              if not private_id:
--                      return "0" * 40
--
--              return hashlib.sha1(private_id).hexdigest()
--
--      @property
--      def secret_id(self):
--              """
--                      Read a "secret" ID from a file if available
--                      or calculate it from the hardware.
--              """
--              if os.path.exists(SECRET_ID_FILE):
--                      return read_from_file(SECRET_ID_FILE)
--
--              return hashlib.sha1(self._unique_id).hexdigest()
--
--      @property
--      def _unique_id(self):
--              """
--                      This is a helper ID which is generated out of some hardware information
--                      that is considered to be constant over a PC's lifetime.
--
--                      None of the data here is ever sent to the server.
--              """
--              ids = []
--
--              # Virtual machines (for example) and some boards have a UUID
--              # which is globally unique.
--              for file in ("product_uuid", "product_serial", "chassis_serial"):
--                      id = read_from_file(os.path.join(SYS_CLASS_DMI, file))
--                      ids.append(id)
--
--              # Sort out all bogous or invalid strings from the list.
--              _ids = []
--              for id in ids:
--                      if id is None:
--                              continue
--
--                      for i in INVALID_ID_STRINGS:
--                              if i in id:
--                                      id = None
--                                      break
--
--                      if id:
--                              _ids.append(id)
--
--              ids = _ids
--
--              # Use serial number from root disk (if available) and if
--              # no other ID was found, yet.
--              if not ids:
--                      root_disk_serial = self.root_disk_serial
--                      if root_disk_serial and not root_disk_serial.startswith("QM000"):
--                              ids.append(root_disk_serial)
--
--              # As last resort, we use the UUID from pakfire.
--              if not ids:
--                      id = read_from_file("/opt/pakfire/db/uuid")
--                      ids.append(id)
--
--              return "#".join(ids)
--
--      @property
--      def language(self):
--              """
--                      Return the language code of IPFire or "unknown" if we cannot get it.
--              """
--              # Return "unknown" if settings file does not exist.
--              filename = "/var/ipfire/main/settings"
--              if not os.path.exists(filename):
--                      return "unknown"
--
--              with open(filename, "r") as f:
--                      for line in f.readlines():
--                              key, val = line.split("=", 1)
--                              if key == "LANGUAGE":
--                                      return val.strip()
--
--      @property
--      def release(self):
--              """
--                      Return the system release string.
--              """
--              return read_from_file("/etc/system-release") or "unknown"
--
--      @property
--      def bios_vendor(self):
--              """
--                      Return the bios vendor name.
--              """
--              return read_from_file("/sys/class/dmi/id/bios_vendor")
--
--      def vendor_model_tuple(self):
--              try:
--                      s = self.__cpuinfo["Hardware"]
--              except KeyError:
--                      return (None, None)
--
--              if s.startswith("ARM-Versatile"):
--                      return ("ARM", s)
--
--              try:
--                      v, m = s.split(" ", 1)
--              except ValueError:
--                      if s.startswith("BCM"):
--                              v = "Broadcom"
--                              m = s
--                      else:
--                              v = None
--                              m = s
--
--              return v, m
--
--      @property
--      def vendor(self):
--              """
--                      Return the vendor string of this system (if any).
--              """
--              ret = None
--              for file in ("sys_vendor", "board_vendor", "chassis_vendor",):
--                      ret = read_from_file(os.path.join(SYS_CLASS_DMI, file))
--                      if ret:
--                              break
--
--              if ret is None:
--                      v, m = self.vendor_model_tuple()
--                      ret = v
--
--              return ret
--
--      @property
--      def model(self):
--              """
--                      Return the model string of this system (if any).
--              """
--              ret = None
--              for file in ("product_name", "board_model", "chassis_model",):
--                      ret = read_from_file(os.path.join(SYS_CLASS_DMI, file))
--                      if ret:
--                              break
--
--              if ret is None:
--                      v, m = self.vendor_model_tuple()
--                      ret = m
--
--              return ret
--
--      @property
--      def memory(self):
--              """
--                      Return the amount of memory in kilobytes.
--              """
--              with open("/proc/meminfo", "r") as f:
--                      firstline = f.readline().strip()
--                      return int(firstline.split()[1])
--
--      @property
--      def kernel_release(self):
--              """
--                      Return the kernel release string.
--              """
--              return os.uname()[2]
--
--      @property
--      def root_disk(self):
--              """
--                      Return the dev node of the root disk.
--              """
--              with open("/etc/mtab", "r") as f:
--                      dev, mountpoint, rest = f.readline().split(" ", 2)
--                      if mountpoint == "/":
--                              # Cut off /dev
--                              dev = dev[5:]
--
--                              # Handle raids and MMC cards like (mmcblk0p3).
--                              if dev[-2] == "p":
--                                      return dev[:-2]
--
--                              # Otherwise cut off all digits at end of string
--                              while dev[-1] in string.digits:
--                                      dev = dev[:-1]
--
--                              return dev
--
--      @property
--      def root_size(self):
--              """
--                      Return the size of the root disk in kilobytes.
--              """
--              path = "/sys/block/%s/size" % self.root_disk
--              if not os.path.exists(path):
--                      return
--
--              with open(path, "r") as f:
--                      return int(f.readline()) * 512 / 1024
--
--      @property
--      def root_disk_serial(self):
--              """
--                      Return the serial number of the root disk (if any).
--              """
--              serial = _fireinfo.get_harddisk_serial("/dev/%s" % self.root_disk)
--
--              if serial:
--                      # Strip all spaces
--                      return serial.strip()
--
--      def scan(self):
--              """
--                      Scan for all devices (PCI/USB) in the system and append them
--                      to our list.
--              """
--              self.devices = []
--
--              toscan = (
--                      ("/sys/bus/pci/devices", device.PCIDevice),
--                      ("/sys/bus/usb/devices", device.USBDevice)
--              )
--              for path, cls in toscan:
--                      if not os.path.exists(path):
--                              continue
--
--                      dirlist = os.listdir(path)
--                      for dir in dirlist:
--                              self.devices.append(cls(os.path.join(path, dir)))
--
--      @property
--      def virtual(self):
--              """
--                      Say if the host is running in a virtual environment.
--              """
--              return self.hypervisor.virtual
--
--      @property
--      def network(self):
--              """
--                      Reference to the network class.
--              """
--              return network.Network()
--
--
--if __name__ == "__main__":
--      s=System()
--      print s.arch
--      print s.language
--      print s.release
--      print s.bios_vendor
--      print s.memory
--      print s.kernel
--      print s.root_disk
--      print s.root_size
--      print "------------\n", s.devices, "\n------------\n"
--      print json.dumps(s.profile(), sort_keys=True, indent=4)
-diff --git a/m4/.gitignore b/m4/.gitignore
-new file mode 100644
-index 0000000..38066dd
---- /dev/null
-+++ b/m4/.gitignore
-@@ -0,0 +1,5 @@
-+libtool.m4
-+ltoptions.m4
-+ltsugar.m4
-+ltversion.m4
-+lt~obsolete.m4
-diff --git a/m4/attributes.m4 b/m4/attributes.m4
-new file mode 100644
-index 0000000..7e080da
---- /dev/null
-+++ b/m4/attributes.m4
-@@ -0,0 +1,288 @@
-+dnl Macros to check the presence of generic (non-typed) symbols.
-+dnl Copyright (c) 2006-2008 Diego Pettenò <flameeyes@gmail.com>
-+dnl Copyright (c) 2006-2008 xine project
-+dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
-+dnl
-+dnl This program is free software; you can redistribute it and/or modify
-+dnl it under the terms of the GNU General Public License as published by
-+dnl the Free Software Foundation; either version 2, or (at your option)
-+dnl any later version.
-+dnl
-+dnl This program is distributed in the hope that it will be useful,
-+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+dnl GNU General Public License for more details.
-+dnl
-+dnl You should have received a copy of the GNU General Public License
-+dnl along with this program; if not, write to the Free Software
-+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-+dnl 02110-1301, USA.
-+dnl
-+dnl As a special exception, the copyright owners of the
-+dnl macro gives unlimited permission to copy, distribute and modify the
-+dnl configure scripts that are the output of Autoconf when processing the
-+dnl Macro. You need not follow the terms of the GNU General Public
-+dnl License when using or distributing such scripts, even though portions
-+dnl of the text of the Macro appear in them. The GNU General Public
-+dnl License (GPL) does govern all other use of the material that
-+dnl constitutes the Autoconf Macro.
-+dnl
-+dnl This special exception to the GPL applies to versions of the
-+dnl Autoconf Macro released by this project. When you make and
-+dnl distribute a modified version of the Autoconf Macro, you may extend
-+dnl this special exception to the GPL to apply to your modified version as
-+dnl well.
-+
-+dnl Check if FLAG in ENV-VAR is supported by compiler and append it
-+dnl to WHERE-TO-APPEND variable
-+dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG])
-+
-+AC_DEFUN([CC_CHECK_FLAG_APPEND], [
-+  AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2],
-+                 AS_TR_SH([cc_cv_$2_$3]),
-+          [eval "AS_TR_SH([cc_save_$2])='${$2}'"
-+           eval "AS_TR_SH([$2])='-Werror $3'"
-+           AC_COMPILE_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])],
-+                                    [eval "AS_TR_SH([cc_cv_$2_$3])='yes'"],
-+                                    [eval "AS_TR_SH([cc_cv_$2_$3])='no'"])
-+           eval "AS_TR_SH([$2])='$cc_save_$2'"])
-+
-+  AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes],
-+        [eval "$1='${$1} $3'"])
-+])
-+
-+dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2])
-+AC_DEFUN([CC_CHECK_FLAGS_APPEND], [
-+  for flag in $3; do
-+    CC_CHECK_FLAG_APPEND($1, $2, $flag)
-+  done
-+])
-+
-+dnl Check if the flag is supported by linker (cacheable)
-+dnl CC_CHECK_LDFLAGS([FLAG], [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
-+
-+AC_DEFUN([CC_CHECK_LDFLAGS], [
-+  AC_CACHE_CHECK([if $CC supports $1 flag],
-+    AS_TR_SH([cc_cv_ldflags_$1]),
-+    [ac_save_LDFLAGS="$LDFLAGS"
-+     LDFLAGS="$LDFLAGS $1"
-+     AC_LINK_IFELSE([int main() { return 1; }],
-+       [eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
-+       [eval "AS_TR_SH([cc_cv_ldflags_$1])="])
-+     LDFLAGS="$ac_save_LDFLAGS"
-+    ])
-+
-+  AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
-+    [$2], [$3])
-+])
-+
-+dnl define the LDFLAGS_NOUNDEFINED variable with the correct value for
-+dnl the current linker to avoid undefined references in a shared object.
-+AC_DEFUN([CC_NOUNDEFINED], [
-+  dnl We check $host for which systems to enable this for.
-+  AC_REQUIRE([AC_CANONICAL_HOST])
-+
-+  case $host in
-+     dnl FreeBSD (et al.) does not complete linking for shared objects when pthreads
-+     dnl are requested, as different implementations are present; to avoid problems
-+     dnl use -Wl,-z,defs only for those platform not behaving this way.
-+     *-freebsd* | *-openbsd*) ;;
-+     *)
-+        dnl First of all check for the --no-undefined variant of GNU ld. This allows
-+        dnl for a much more readable commandline, so that people can understand what
-+        dnl it does without going to look for what the heck -z defs does.
-+        for possible_flags in "-Wl,--no-undefined" "-Wl,-z,defs"; do
-+           CC_CHECK_LDFLAGS([$possible_flags], [LDFLAGS_NOUNDEFINED="$possible_flags"])
-+           break
-+        done
-+     ;;
-+  esac
-+
-+  AC_SUBST([LDFLAGS_NOUNDEFINED])
-+])
-+
-+dnl Check for a -Werror flag or equivalent. -Werror is the GCC
-+dnl and ICC flag that tells the compiler to treat all the warnings
-+dnl as fatal. We usually need this option to make sure that some
-+dnl constructs (like attributes) are not simply ignored.
-+dnl
-+dnl Other compilers don't support -Werror per se, but they support
-+dnl an equivalent flag:
-+dnl  - Sun Studio compiler supports -errwarn=%all
-+AC_DEFUN([CC_CHECK_WERROR], [
-+  AC_CACHE_CHECK(
-+    [for $CC way to treat warnings as errors],
-+    [cc_cv_werror],
-+    [CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
-+      [CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
-+    ])
-+])
-+
-+AC_DEFUN([CC_CHECK_ATTRIBUTE], [
-+  AC_REQUIRE([CC_CHECK_WERROR])
-+  AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
-+    AS_TR_SH([cc_cv_attribute_$1]),
-+    [ac_save_CFLAGS="$CFLAGS"
-+     CFLAGS="$CFLAGS $cc_cv_werror"
-+     AC_COMPILE_IFELSE([AC_LANG_SOURCE([$3])],
-+       [eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
-+       [eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
-+     CFLAGS="$ac_save_CFLAGS"
-+    ])
-+
-+  AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
-+    [AC_DEFINE(
-+       AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
-+         [Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
-+         )
-+     $4],
-+    [$5])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
-+  CC_CHECK_ATTRIBUTE(
-+    [constructor],,
-+    [void __attribute__((constructor)) ctor() { int a; }],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
-+  CC_CHECK_ATTRIBUTE(
-+    [format], [format(printf, n, n)],
-+    [void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
-+  CC_CHECK_ATTRIBUTE(
-+    [format_arg], [format_arg(printf)],
-+    [char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
-+  CC_CHECK_ATTRIBUTE(
-+    [visibility_$1], [visibility("$1")],
-+    [void __attribute__((visibility("$1"))) $1_function() { }],
-+    [$2], [$3])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
-+  CC_CHECK_ATTRIBUTE(
-+    [nonnull], [nonnull()],
-+    [void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
-+  CC_CHECK_ATTRIBUTE(
-+    [unused], ,
-+    [void some_function(void *foo, __attribute__((unused)) void *bar);],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
-+  CC_CHECK_ATTRIBUTE(
-+    [sentinel], ,
-+    [void some_function(void *foo, ...) __attribute__((sentinel));],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
-+  CC_CHECK_ATTRIBUTE(
-+    [deprecated], ,
-+    [void some_function(void *foo, ...) __attribute__((deprecated));],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
-+  CC_CHECK_ATTRIBUTE(
-+    [alias], [weak, alias],
-+    [void other_function(void *foo) { }
-+     void some_function(void *foo) __attribute__((weak, alias("other_function")));],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
-+  CC_CHECK_ATTRIBUTE(
-+    [malloc], ,
-+    [void * __attribute__((malloc)) my_alloc(int n);],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_PACKED], [
-+  CC_CHECK_ATTRIBUTE(
-+    [packed], ,
-+    [struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_CONST], [
-+  CC_CHECK_ATTRIBUTE(
-+    [const], ,
-+    [int __attribute__((const)) twopow(int n) { return 1 << n; } ],
-+    [$1], [$2])
-+])
-+
-+AC_DEFUN([CC_FLAG_VISIBILITY], [
-+  AC_REQUIRE([CC_CHECK_WERROR])
-+  AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
-+    [cc_cv_flag_visibility],
-+    [cc_flag_visibility_save_CFLAGS="$CFLAGS"
-+     CFLAGS="$CFLAGS $cc_cv_werror"
-+     CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
-+     cc_cv_flag_visibility='yes',
-+     cc_cv_flag_visibility='no')
-+     CFLAGS="$cc_flag_visibility_save_CFLAGS"])
-+
-+  AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
-+    [AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
-+       [Define this if the compiler supports the -fvisibility flag])
-+     $1],
-+    [$2])
-+])
-+
-+AC_DEFUN([CC_FUNC_EXPECT], [
-+  AC_REQUIRE([CC_CHECK_WERROR])
-+  AC_CACHE_CHECK([if compiler has __builtin_expect function],
-+    [cc_cv_func_expect],
-+    [ac_save_CFLAGS="$CFLAGS"
-+     CFLAGS="$CFLAGS $cc_cv_werror"
-+     AC_COMPILE_IFELSE([AC_LANG_SOURCE(
-+       [int some_function() {
-+        int a = 3;
-+        return (int)__builtin_expect(a, 3);
-+     }])],
-+       [cc_cv_func_expect=yes],
-+       [cc_cv_func_expect=no])
-+     CFLAGS="$ac_save_CFLAGS"
-+    ])
-+
-+  AS_IF([test "x$cc_cv_func_expect" = "xyes"],
-+    [AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
-+     [Define this if the compiler supports __builtin_expect() function])
-+     $1],
-+    [$2])
-+])
-+
-+AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
-+  AC_REQUIRE([CC_CHECK_WERROR])
-+  AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
-+    [cc_cv_attribute_aligned],
-+    [ac_save_CFLAGS="$CFLAGS"
-+     CFLAGS="$CFLAGS $cc_cv_werror"
-+     for cc_attribute_align_try in 64 32 16 8 4 2; do
-+        AC_COMPILE_IFELSE([AC_LANG_SOURCE([
-+          int main() {
-+            static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
-+            return c;
-+          }])], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
-+     done
-+     CFLAGS="$ac_save_CFLAGS"
-+  ])
-+
-+  if test "x$cc_cv_attribute_aligned" != "x"; then
-+     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
-+       [Define the highest alignment supported])
-+  fi
-+])
-diff --git a/runpychecker.sh b/runpychecker.sh
-index 407b7d6..64366fd 100755
---- a/runpychecker.sh
-+++ b/runpychecker.sh
-@@ -5,4 +5,4 @@ pychecker --only --limit 1000 \
-       --no-callinit --no-local --no-shadow --no-shadowbuiltin \
-       --no-import --no-miximport --no-pkgimport --no-reimport \
-       --no-argsused --no-varargsused --no-override \
--      fireinfo/*.py
-+      src/fireinfo/*.py
-diff --git a/sendprofile b/sendprofile
-deleted file mode 100644
-index da480ce..0000000
---- a/sendprofile
-+++ /dev/null
-@@ -1,132 +0,0 @@
--#!/usr/bin/python
--###############################################################################
--#                                                                             #
--# Fireinfo                                                                    #
--# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
--#                                                                             #
--# This program is free software: you can redistribute it and/or modify        #
--# it under the terms of the GNU General Public License as published by        #
--# the Free Software Foundation, either version 3 of the License, or           #
--# (at your option) any later version.                                         #
--#                                                                             #
--# This program is distributed in the hope that it will be useful,             #
--# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
--# GNU General Public License for more details.                                #
--#                                                                             #
--# You should have received a copy of the GNU General Public License           #
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
--#                                                                             #
--###############################################################################
--
--import json
--import logging
--import logging.handlers
--import os
--import sys
--import urllib
--import urllib2
--
--import fireinfo
--
--ENABLED_FILE = "/var/ipfire/main/send_profile"
--PROXY_SETTINGS = "/var/ipfire/proxy/advanced/settings"
--
--log_level = logging.INFO
--if "-d" in sys.argv:
--      log_level = logging.DEBUG
--
--# Setup logging
--log = logging.getLogger()
--log.setLevel(log_level)
--log.addHandler(logging.handlers.SysLogHandler("/dev/log"))
--log.addHandler(logging.StreamHandler(sys.stderr))
--for handler in log.handlers:
--      handler.setLevel(log_level)
--
--PROFILE_URL = "http://fireinfo.ipfire.org/send/%(public_id)s"
--
--def get_upstream_proxy():
--      if not os.path.exists(PROXY_SETTINGS):
--              return {"host" : ""}
--
--      proxy_settings = {}
--      with open(PROXY_SETTINGS) as f:
--              for line in f.readlines():
--                      k, v = line.split("=", 1)
--                      proxy_settings[k] = v.strip()
--
--      return {
--              "host" : proxy_settings.get("UPSTREAM_PROXY", ""),
--              "user" : proxy_settings.get("UPSTREAM_USER", ""),
--              "pass" : proxy_settings.get("UPSTREAM_PASSWORD", ""),
--      }
--
--def send_profile(profile):
--      logging.debug("Sending profile:")
--      for line in json.dumps(profile, sort_keys=True, indent=4).splitlines():
--              logging.debug(line)
--
--      request = urllib2.Request(PROFILE_URL % profile,
--              data = urllib.urlencode({"profile" : json.dumps(profile)}),
--      )
--      request.add_header("User-Agent", "fireinfo/%s" % fireinfo.__version__)
--
--      # Set upstream proxy if we have one.
--      # XXX this cannot handle authentication
--      proxy = get_upstream_proxy()
--      if proxy["host"]:
--              request.set_proxy(proxy["host"], "http")
--
--      try:
--              urllib2.urlopen(request, timeout=60)
--      except (urllib2.HTTPError, urllib2.URLError), e:
--              reason = "Unknown reason"
--
--              if isinstance(e, urllib2.HTTPError):
--                      reason = "%s" % e
--              elif isinstance(e, urllib2.URLError):
--                      reason = e.reason
--
--              logging.error("Profile was not sent propertly: %s" % reason)
--              return
--
--      logging.debug("Profile was sent successfully.")
--
--def main():
--      # Collect system information
--      system = fireinfo.System()
--      profile = system.profile()
--
--      # If --dump is passed -> only dump the output.
--      if "--dump" in sys.argv:
--              # Remove the private id when dumping the profile because
--              # it contains no information and may confuse people.
--              del profile["private_id"]
--
--              print json.dumps(profile, sort_keys=True, indent=4)
--              return 0
--
--      if "--secret-id" in sys.argv:
--              print system.secret_id
--              return 0
--
--      if "--hardware-string" in sys.argv:
--              print system._unique_id
--              return 0
--
--      if "--public-id" in sys.argv:
--              print system.public_id
--              return 0
--
--      if not os.path.exists(ENABLED_FILE):
--              del profile["profile"]
--
--      try:
--              send_profile(profile)
--      except urllib2.URLError:
--              return 1
--
--      return 0
--
--sys.exit(main())
-diff --git a/setup.py b/setup.py
-deleted file mode 100644
-index 8149f0a..0000000
---- a/setup.py
-+++ /dev/null
-@@ -1,37 +0,0 @@
--#!/usr/bin/python
--###############################################################################
--#                                                                             #
--# Fireinfo                                                                    #
--# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
--#                                                                             #
--# This program is free software: you can redistribute it and/or modify        #
--# it under the terms of the GNU General Public License as published by        #
--# the Free Software Foundation, either version 3 of the License, or           #
--# (at your option) any later version.                                         #
--#                                                                             #
--# This program is distributed in the hope that it will be useful,             #
--# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
--# GNU General Public License for more details.                                #
--#                                                                             #
--# You should have received a copy of the GNU General Public License           #
--# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
--#                                                                             #
--###############################################################################
--
--from distutils.core import setup, Extension
--
--setup(
--      name = "fireinfo",
--      version = "2.1.7",
--      description = "Hardware information gathering library.",
--      license = "GPLv3",
--      author = "IPFire.org Team",
--      author_email = "info@ipfire.org",
--      url = "https://bugzilla.ipfire.org/describecomponents.cgi?product=Fireinfo",
--      ext_modules = [
--              Extension("_fireinfo", ["src/fireinfo.c"])
--      ],
--      packages = ["fireinfo"],
--      scripts = ["sendprofile"],
--)
-diff --git a/src/_fireinfo/fireinfo.c b/src/_fireinfo/fireinfo.c
-new file mode 100644
-index 0000000..08d714b
---- /dev/null
-+++ b/src/_fireinfo/fireinfo.c
-@@ -0,0 +1,231 @@
-+/*
-+ * Fireinfo
-+ * Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include <Python.h>
-+
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <linux/hdreg.h>
-+#include <stdbool.h>
-+#include <string.h>
-+#include <sys/ioctl.h>
-+
-+/* hypervisor vendors */
-+enum hypervisors {
-+      HYPER_NONE       = 0,
-+      HYPER_XEN,
-+      HYPER_KVM,
-+      HYPER_MSHV,
-+      HYPER_VMWARE,
-+      HYPER_OTHER,
-+      HYPER_LAST /* for loop - must be last*/
-+};
-+
-+const char *hypervisor_ids[] = {
-+      [HYPER_NONE]    = NULL,
-+      [HYPER_XEN]     = "XenVMMXenVMM",
-+      [HYPER_KVM]     = "KVMKVMKVM",
-+      /* http://msdn.microsoft.com/en-us/library/ff542428.aspx */
-+      [HYPER_MSHV]    = "Microsoft Hv",
-+      /* http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 */
-+      [HYPER_VMWARE]  = "VMwareVMware",
-+      [HYPER_OTHER]   = NULL
-+};
-+
-+const char *hypervisor_vendors[] = {
-+      [HYPER_NONE]    = NULL,
-+      [HYPER_XEN]     = "Xen",
-+      [HYPER_KVM]     = "KVM",
-+      [HYPER_MSHV]    = "Microsoft",
-+      [HYPER_VMWARE]  = "VMWare",
-+      [HYPER_OTHER]   = "other"
-+};
-+
-+#define NEWLINE "\n\r"
-+
-+char *truncate_nl(char *s) {
-+      assert(s);
-+
-+      s[strcspn(s, NEWLINE)] = 0;
-+      return s;
-+}
-+
-+int read_one_line_file(const char *filename, char **line) {
-+      assert(filename);
-+      assert(line);
-+
-+      FILE *f = NULL;
-+      f = fopen(filename, "re");
-+      if (!f)
-+              return -errno;
-+
-+      char t[2048];
-+      if (!fgets(t, sizeof(t), f)) {
-+              if (ferror(f))
-+                      return errno ? -errno : -EIO;
-+
-+              t[0] = 0;
-+      }
-+
-+      char *c = strdup(t);
-+      if (!c)
-+              return -ENOMEM;
-+      truncate_nl(c);
-+
-+      *line = c;
-+      return 0;
-+}
-+
-+/*
-+ * This CPUID leaf returns the information about the hypervisor.
-+ * EAX : maximum input value for CPUID supported by the hypervisor.
-+ * EBX, ECX, EDX : Hypervisor vendor ID signature. E.g. VMwareVMware.
-+ */
-+#define HYPERVISOR_INFO_LEAF   0x40000000
-+
-+int detect_hypervisor(int *hypervisor) {
-+#if defined(__x86_64__) || defined(__i386__)
-+      /* Try high-level hypervisor sysfs file first: */
-+      char *hvtype = NULL;
-+      int r = read_one_line_file("/sys/hypervisor/type", &hvtype);
-+      if (r >= 0) {
-+              if (strcmp(hvtype, "xen") == 0) {
-+                      *hypervisor = HYPER_XEN;
-+                      return 1;
-+              }
-+      } else if (r != -ENOENT)
-+              return r;
-+
-+      /* http://lwn.net/Articles/301888/ */
-+
-+#if defined(__amd64__)
-+#define REG_a "rax"
-+#define REG_b "rbx"
-+#elif defined(__i386__)
-+#define REG_a "eax"
-+#define REG_b "ebx"
-+#endif
-+
-+      uint32_t eax = 1;
-+      uint32_t ecx;
-+      union {
-+              uint32_t sig32[3];
-+              char text[13];
-+      } sig = {};
-+
-+      __asm__ __volatile__ (
-+              /* ebx/rbx is being used for PIC! */
-+              "  push %%"REG_b"       \n\t"
-+              "  cpuid                \n\t"
-+              "  pop %%"REG_b"        \n\t"
-+
-+              : "=a" (eax), "=c" (ecx)
-+              : "0" (eax)
-+      );
-+
-+      bool has_hypervisor = !!(ecx & 0x80000000U);
-+
-+      if (has_hypervisor) {
-+              /* There is a hypervisor, see what it is... */
-+              eax = 0x40000000U;
-+              __asm__ __volatile__ (
-+                      "  push %%"REG_b"       \n\t"
-+                      "  cpuid                \n\t"
-+                      "  mov %%ebx, %1        \n\t"
-+                      "  pop %%"REG_b"        \n\t"
-+
-+                      : "=a" (eax), "=r" (sig.sig32[0]), "=c" (sig.sig32[1]), "=d" (sig.sig32[2])
-+                      : "0" (eax)
-+              );
-+              sig.text[12] = '\0';
-+
-+              *hypervisor = HYPER_OTHER;
-+
-+              int id;
-+              for (id = HYPER_NONE + 1; id < HYPER_LAST; id++) {
-+                      if (strcmp(hypervisor_ids[id], sig.text) == 0) {
-+                              *hypervisor = id;
-+                              break;
-+                      }
-+              }
-+
-+              return 1;
-+      }
-+#endif
-+      return 0;
-+}
-+
-+
-+static PyObject *
-+do_detect_hypervisor() {
-+      /*
-+              Get hypervisor from the cpuid command.
-+      */
-+      int hypervisor = HYPER_NONE;
-+
-+      int r = detect_hypervisor(&hypervisor);
-+      if (r >= 1) {
-+              const char* hypervisor_vendor = hypervisor_vendors[hypervisor];
-+              if (!hypervisor_vendor)
-+                      Py_RETURN_NONE;
-+
-+              return PyString_FromString(hypervisor_vendor);
-+      }
-+
-+      Py_RETURN_NONE;
-+}
-+
-+static PyObject *
-+do_get_harddisk_serial(PyObject *o, PyObject *args) {
-+      /*
-+              Python wrapper around read_harddisk_serial.
-+      */
-+      static struct hd_driveid hd;
-+      int fd;
-+      char *device;
-+
-+      if (!PyArg_ParseTuple(args, "s", &device))
-+              return NULL;
-+
-+      if ((fd = open(device, O_RDONLY | O_NONBLOCK)) < 0)
-+              return NULL;
-+
-+      if (!ioctl(fd, HDIO_GET_IDENTITY, &hd)) {
-+              char serial[21];
-+              strncpy(serial, (const char *)hd.serial_no, sizeof(serial));
-+
-+              if (serial[0])
-+                      return PyString_FromString(serial);
-+      }
-+
-+      Py_RETURN_NONE;
-+}
-+
-+static PyMethodDef fireinfoModuleMethods[] = {
-+      { "detect_hypervisor", (PyCFunction) do_detect_hypervisor, METH_NOARGS, NULL },
-+      { "get_harddisk_serial", (PyCFunction) do_get_harddisk_serial, METH_VARARGS, NULL },
-+      { NULL, NULL, 0, NULL }
-+};
-+
-+void init_fireinfo(void) {
-+      PyObject *m;
-+
-+      m = Py_InitModule("_fireinfo", fireinfoModuleMethods);
-+      if (m == NULL)
-+              return;
-+}
-diff --git a/src/fireinfo.c b/src/fireinfo.c
-deleted file mode 100644
-index 25b5333..0000000
---- a/src/fireinfo.c
-+++ /dev/null
-@@ -1,427 +0,0 @@
--/*
-- * Fireinfo
-- * Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)
-- *
-- * This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 3 of the License, or
-- * (at your option) any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- * GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
-- */
--
--#include <Python.h>
--
--#include <fcntl.h>
--#include <linux/hdreg.h>
--#include <stdbool.h>
--#include <sys/ioctl.h>
--
--/*
--      Big parts of this were taken from
--      http://git.kernel.org/?p=utils/util-linux-ng/util-linux-ng.git;a=blob;f=sys-utils/lscpu.c
--*/
--
--/* /sys paths */
--#define _PATH_PROC_XEN                "/proc/xen"
--#define _PATH_PROC_XENCAP     _PATH_PROC_XEN "/capabilities"
--#define _PATH_PROC_PCIDEVS    "/proc/bus/pci/devices"
--
--/* Used for the vmware hypervisor port detection */
--#define VMWARE_HYPERVISOR_MAGIC 0x564D5868
--#define VMWARE_HYPERVISOR_PORT  0x5658
--
--#define VMWARE_PORT_CMD_GETVERSION      10
--
--/* virtualization types */
--enum {
--      VIRT_NONE       = 0,
--      VIRT_PARA,
--      VIRT_FULL
--};
--const char *virt_types[] = {
--      [VIRT_NONE]     = "none",
--      [VIRT_PARA]     = "para",
--      [VIRT_FULL]     = "full"
--};
--
--/* hypervisor vendors */
--enum {
--      HYPER_NONE      = 0,
--      HYPER_XEN,
--      HYPER_KVM,
--      HYPER_MSHV,
--      HYPER_VMWARE
--};
--const char *hv_vendors[] = {
--      [HYPER_NONE]    = NULL,
--      [HYPER_XEN]     = "Xen",
--      [HYPER_KVM]     = "KVM",
--      [HYPER_MSHV]    = "Microsoft",
--      [HYPER_VMWARE]  = "VMWare"
--};
--
--struct hypervisor_desc {
--      int hyper;              /* hypervisor vendor ID */
--      int virtype;    /* VIRT_PARA|FULL|NONE ? */
--};
--
--static size_t sysrootlen;
--static char pathbuf[PATH_MAX];
--
--static FILE *path_fopen(const char *mode, const char *path, ...)
--              __attribute__ ((__format__ (__printf__, 2, 3)));
--static int path_exist(const char *path, ...)
--              __attribute__ ((__format__ (__printf__, 1, 2)));
--
--static const char *
--path_vcreate(const char *path, va_list ap)
--{
--      if (sysrootlen)
--              vsnprintf(pathbuf + sysrootlen,
--                        sizeof(pathbuf) - sysrootlen, path, ap);
--      else
--              vsnprintf(pathbuf, sizeof(pathbuf), path, ap);
--      return pathbuf;
--}
--
--static FILE *
--path_vfopen(const char *mode, const char *path, va_list ap)
--{
--      const char *p = path_vcreate(path, ap);
--
--      return fopen(p, mode);
--}
--
--static FILE *
--path_fopen(const char *mode, const char *path, ...)
--{
--      FILE *fd;
--      va_list ap;
--
--      va_start(ap, path);
--      fd = path_vfopen(mode, path, ap);
--      va_end(ap);
--
--      return fd;
--}
--
--static int
--path_exist(const char *path, ...)
--{
--      va_list ap;
--      const char *p;
--
--      va_start(ap, path);
--      p = path_vcreate(path, ap);
--      va_end(ap);
--
--      return access(p, F_OK) == 0;
--}
--
--static int
--has_pci_device(int vendor, int device)
--{
--      FILE *f;
--      int num, fn, ven, dev;
--      int res = 1;
--
--      f = path_fopen("r", _PATH_PROC_PCIDEVS);
--      if (!f)
--              return 0;
--
--       /* for more details about bus/pci/devices format see
--        * drivers/pci/proc.c in linux kernel
--        */
--      while(fscanf(f, "%02x%02x\t%04x%04x\t%*[^\n]",
--                      &num, &fn, &ven, &dev) == 4) {
--
--              if (ven == vendor && dev == device)
--                      goto found;
--      }
--
--      res = 0;
--found:
--      fclose(f);
--      return res;
--}
--
--#if defined(__x86_64__) || defined(__i386__)
--
--/*
-- * This CPUID leaf returns the information about the hypervisor.
-- * EAX : maximum input value for CPUID supported by the hypervisor.
-- * EBX, ECX, EDX : Hypervisor vendor ID signature. E.g. VMwareVMware.
-- */
--#define HYPERVISOR_INFO_LEAF   0x40000000
--
--static inline void
--cpuid(unsigned int op, unsigned int *eax, unsigned int *ebx,
--                       unsigned int *ecx, unsigned int *edx)
--{
--      __asm__(
--#if defined(__PIC__) && defined(__i386__)
--              /* x86 PIC cannot clobber ebx -- gcc bitches */
--              "pushl %%ebx;"
--              "cpuid;"
--              "movl %%ebx, %%esi;"
--              "popl %%ebx;"
--              : "=S" (*ebx),
--#else
--              "cpuid;"
--              : "=b" (*ebx),
--#endif
--                "=a" (*eax),
--                "=c" (*ecx),
--                "=d" (*edx)
--              : "1" (op), "c"(0));
--}
--
--static void
--read_hypervisor_cpuid(struct hypervisor_desc *desc)
--{
--      unsigned int eax = 0, ebx = 0, ecx = 0, edx = 0;
--      char hyper_vendor_id[13];
--
--      memset(hyper_vendor_id, 0, sizeof(hyper_vendor_id));
--
--      cpuid(HYPERVISOR_INFO_LEAF, &eax, &ebx, &ecx, &edx);
--      memcpy(hyper_vendor_id + 0, &ebx, 4);
--      memcpy(hyper_vendor_id + 4, &ecx, 4);
--      memcpy(hyper_vendor_id + 8, &edx, 4);
--      hyper_vendor_id[12] = '\0';
--
--      if (!hyper_vendor_id[0])
--              return;
--
--      if (!strncmp("XenVMMXenVMM", hyper_vendor_id, 12))
--              desc->hyper = HYPER_XEN;
--      else if (!strncmp("KVMKVMKVM", hyper_vendor_id, 9))
--              desc->hyper = HYPER_KVM;
--      else if (!strncmp("Microsoft Hv", hyper_vendor_id, 12))
--              desc->hyper = HYPER_MSHV;
--      else if (!strncmp("VMwareVMware", hyper_vendor_id, 12))
--              desc->hyper = HYPER_VMWARE;
--}
--
--#else /* ! __x86_64__ */
--static void
--read_hypervisor_cpuid(struct hypervisor_desc *desc)
--{
--}
--#endif
--
--static void
--read_hypervisor(struct hypervisor_desc *desc)
--{
--      read_hypervisor_cpuid(desc);
--
--      if (desc->hyper)
--              /* hvm */
--              desc->virtype = VIRT_FULL;
--
--      else if (path_exist(_PATH_PROC_XEN)) {
--              /* Xen para-virt or dom0 */
--              FILE *fd = path_fopen("r", _PATH_PROC_XENCAP);
--              int dom0 = 0;
--
--              if (fd) {
--                      char buf[256];
--
--                      if (fscanf(fd, "%s", buf) == 1 &&
--                          !strcmp(buf, "control_d"))
--                              dom0 = 1;
--                      fclose(fd);
--              }
--              desc->virtype = dom0 ? VIRT_NONE : VIRT_PARA;
--              desc->hyper = HYPER_XEN;
--
--      } else if (has_pci_device(0x5853, 0x0001)) {
--              /* Xen full-virt on non-x86_64 */
--              desc->hyper = HYPER_XEN;
--              desc->virtype = VIRT_FULL;
--      }
--}
--
--static void
--read_harddisk_serial(char *device, char *serial) {
--      static struct hd_driveid hd;
--      int fd;
--
--      if ((fd = open(device, O_RDONLY | O_NONBLOCK)) < 0) {
--          return;
--      }
--
--      if (!ioctl(fd, HDIO_GET_IDENTITY, &hd)) {
--          strncpy(serial, (const char *)hd.serial_no, 20);
--      }
--}
--
--#if defined(__x86_64__) || defined(__i386__)
--static bool
--is_virtualized() {
--      unsigned int eax, ebx, ecx, edx;
--
--      cpuid(0x1, &eax, &ebx, &ecx, &edx);
--
--      /*
--              Bitwise detection of the 31st bit.
--              This indicates if a host runs in a virtual environment.
--      */
--      if (ecx & (1<<31))
--              return true;
--
--      return false;
--}
--
--void
--hypervisor_port(unsigned int cmd, unsigned int *eax, unsigned int *ebx,
--              unsigned int *ecx, unsigned int *edx)
--{
--      __asm__(
--#if defined(__PIC__) && defined(__i386__)
--              /* x86 PIC really cannot clobber ebx */
--              "pushl %%ebx;"
--              "inl (%%dx);"
--              "movl %%ebx, %%esi;"
--              "popl %%ebx;"
--              : "=S" (*ebx),
--#else
--              "inl (%%dx);"
--              : "=b" (*ebx),
--#endif
--                "=a" (*eax),
--                "=c" (*ecx),
--                "=d" (*edx)
--              : "0" (VMWARE_HYPERVISOR_MAGIC),
--                "1" (cmd),
--                "2" (VMWARE_HYPERVISOR_PORT),
--                "3" (UINT_MAX)
--              : "memory"
--      );
--}
--#else
--static bool
--is_virtualized() {
--      /*
--              Always return false, because other architectures
--              do not support the virtualization bit.
--      */
--      return false;
--}
--
--void
--hypervisor_port(unsigned int cmd, unsigned int *eax, unsigned int *ebx,
--              unsigned int *ecx, unsigned int *edx)
--{
--}
--#endif
--
--int
--hypervisor_port_check(void) {
--              uint32_t eax, ebx, ecx, edx;
--
--              hypervisor_port(VMWARE_PORT_CMD_GETVERSION, &eax, &ebx, &ecx, &edx);
--
--              if (ebx == VMWARE_HYPERVISOR_MAGIC)
--                      return 1; // Success - running under VMware
--              else
--                      return 0;
--}
--
--static PyObject *
--do_get_hypervisor() {
--      /*
--              Get hypervisor from the cpuid command.
--      */
--      struct hypervisor_desc _desc, *desc = &_desc;
--      memset(desc, 0, sizeof(*desc));
--
--      read_hypervisor(desc);
--
--      PyObject *d = PyDict_New();
--      PyObject *o;
--
--      /* Hypervisor */
--      if (desc->hyper == HYPER_NONE) {
--              o = Py_None;
--      } else {
--              o = PyString_FromString((const char *)hv_vendors[desc->hyper]);
--      }
--      PyDict_SetItemString(d, "hypervisor", o);
--
--      /* Virtualization type */
--      if (desc->virtype == VIRT_NONE) {
--              o = Py_None;
--      } else {
--              o = PyString_FromString((const char *)virt_types[desc->virtype]);
--      }
--      PyDict_SetItemString(d, "virtype", o);
--
--      return d;
--}
--
--static PyObject *
--do_is_virtualized() {
--      /*
--              Python wrapper around is_virtualized().
--      */
--
--      if (is_virtualized())
--              return Py_True;
--
--      return Py_False;
--}
--
--static PyObject *
--do_get_harddisk_serial(PyObject *o, PyObject *args) {
--      /*
--              Python wrapper around read_harddisk_serial.
--      */
--
--      char serial[21];
--      memset(serial, 0, sizeof(serial));
--
--      char *device;
--      if (!PyArg_ParseTuple(args, "s", &device))
--              return NULL;
--
--      read_harddisk_serial(device, serial);
--
--      if (serial[0])
--              return PyString_FromString(serial);
--
--      return Py_None;
--}
--
--static PyObject *
--do_hypervisor_port_check() {
--      /*
--              Python wrapper around hypervisor_port_check().
--      */
--
--      if (hypervisor_port_check())
--              return Py_True;
--
--      return Py_False;
--}
--
--static PyMethodDef fireinfoModuleMethods[] = {
--      { "get_hypervisor", (PyCFunction) do_get_hypervisor, METH_NOARGS, NULL },
--      { "is_virtualized", (PyCFunction) do_is_virtualized, METH_NOARGS, NULL },
--      { "get_harddisk_serial", (PyCFunction) do_get_harddisk_serial, METH_VARARGS, NULL },
--      { "vmware_hypervisor_port_check", (PyCFunction) do_hypervisor_port_check, METH_NOARGS, NULL },
--      { NULL, NULL, 0, NULL }
--};
--
--void init_fireinfo(void) {
--      PyObject *m;
--
--      m = Py_InitModule("_fireinfo", fireinfoModuleMethods);
--}
-diff --git a/src/fireinfo/__init__.py.in b/src/fireinfo/__init__.py.in
-new file mode 100644
-index 0000000..05c520e
---- /dev/null
-+++ b/src/fireinfo/__init__.py.in
-@@ -0,0 +1,24 @@
-+#!/usr/bin/python
-+###############################################################################
-+#                                                                             #
-+# Fireinfo                                                                    #
-+# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
-+#                                                                             #
-+# This program is free software: you can redistribute it and/or modify        #
-+# it under the terms of the GNU General Public License as published by        #
-+# the Free Software Foundation, either version 3 of the License, or           #
-+# (at your option) any later version.                                         #
-+#                                                                             #
-+# This program is distributed in the hope that it will be useful,             #
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-+# GNU General Public License for more details.                                #
-+#                                                                             #
-+# You should have received a copy of the GNU General Public License           #
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-+#                                                                             #
-+###############################################################################
-+
-+__version__ = "@PACKAGE_VERSION@"
-+
-+from system import System
-diff --git a/src/fireinfo/bios.py b/src/fireinfo/bios.py
-new file mode 100644
-index 0000000..56e3af0
---- /dev/null
-+++ b/src/fireinfo/bios.py
-@@ -0,0 +1,50 @@
-+#!/usr/bin/python
-+###############################################################################
-+#                                                                             #
-+# Fireinfo                                                                    #
-+# Copyright (C) 2013 IPFire Team (www.ipfire.org)                             #
-+#                                                                             #
-+# This program is free software: you can redistribute it and/or modify        #
-+# it under the terms of the GNU General Public License as published by        #
-+# the Free Software Foundation, either version 3 of the License, or           #
-+# (at your option) any later version.                                         #
-+#                                                                             #
-+# This program is distributed in the hope that it will be useful,             #
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-+# GNU General Public License for more details.                                #
-+#                                                                             #
-+# You should have received a copy of the GNU General Public License           #
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-+#                                                                             #
-+###############################################################################
-+
-+import os.path
-+
-+DMI_VENDORS = [
-+      "/sys/class/dmi/id/sys_vendor",
-+      "/sys/class/dmi/id/board_vendor",
-+      "/sys/class/dmi/id/bios_vendor",
-+]
-+
-+class BIOS(object):
-+      def __init__(self, system):
-+              self.system = system
-+
-+      def check_vendor(self, vendor, startswith=True):
-+              for file in DMI_VENDORS:
-+                      if not os.path.exists(file):
-+                              continue
-+
-+                      with open(file, "r") as f:
-+                              v = f.read()
-+
-+                      # Strip the vendor string.
-+                      v = v.strip()
-+
-+                      if startswith and v.startswith(vendor):
-+                              return True
-+                      elif v == vendor:
-+                              return True
-+
-+              return False
-diff --git a/src/fireinfo/cpu.py b/src/fireinfo/cpu.py
-new file mode 100644
-index 0000000..32d885d
---- /dev/null
-+++ b/src/fireinfo/cpu.py
-@@ -0,0 +1,194 @@
-+#!/usr/bin/python
-+###############################################################################
-+#                                                                             #
-+# Fireinfo                                                                    #
-+# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
-+#                                                                             #
-+# This program is free software: you can redistribute it and/or modify        #
-+# it under the terms of the GNU General Public License as published by        #
-+# the Free Software Foundation, either version 3 of the License, or           #
-+# (at your option) any later version.                                         #
-+#                                                                             #
-+# This program is distributed in the hope that it will be useful,             #
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-+# GNU General Public License for more details.                                #
-+#                                                                             #
-+# You should have received a copy of the GNU General Public License           #
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-+#                                                                             #
-+###############################################################################
-+
-+import os
-+
-+import system
-+
-+PROC_CPUINFO = "/proc/cpuinfo"
-+
-+class CPU(object):
-+      """
-+              A class that represents the first CPU in a system.
-+
-+              We get all information form the first CPU (or core) and assume that
-+              all other ones are equal.
-+      """
-+
-+      __cpuinfo = {}
-+
-+      def __init__(self):
-+              """
-+                      Initialize this class by reading all data from /proc/cpuinfo.
-+              """
-+              self.__cpuinfo = self.read_cpuinfo()
-+
-+      @property
-+      def system(self):
-+              return system.System()
-+
-+      @staticmethod
-+      def read_cpuinfo():
-+              """
-+                      Read information from PROC_CPUINFO and store
-+                      it into a dictionary cpuinfo.
-+              """
-+              cpuinfo = {}
-+
-+              f = open(PROC_CPUINFO)
-+              while True:
-+                      line = f.readline()
-+
-+                      if not line:
-+                              break
-+
-+                      try:
-+                              key, val = line.split(":", 1)
-+                      except ValueError:
-+                              # We got a line without key, pass that.
-+                              pass
-+
-+                      key = key.strip().replace(" ", "_")
-+                      val = val.strip()
-+
-+                      cpuinfo[key] = val
-+
-+              f.close()
-+
-+              return cpuinfo
-+
-+      @property
-+      def bogomips(self):
-+              """
-+                      Return the bogomips of this CPU.
-+              """
-+              try:
-+                      bogomips = self.__cpuinfo["bogomips"]
-+              except KeyError:
-+                      bogomips = self.__cpuinfo["BogoMIPS"]
-+
-+              return float(bogomips)
-+
-+      @property
-+      def model(self):
-+              """
-+                      Return the model id of this CPU.
-+              """
-+              try:
-+                      model = int(self.__cpuinfo["model"])
-+              except KeyError:
-+                      model = None
-+
-+              return model
-+
-+      @property
-+      def model_string(self):
-+              """
-+                      Return the model string of this CPU.
-+              """
-+              try:
-+                      return self.__cpuinfo["model_name"]
-+              except KeyError:
-+                      return self.__cpuinfo["Processor"]
-+
-+      @property
-+      def vendor(self):
-+              """
-+                      Return the vendor string of this CPU.
-+              """
-+              try:
-+                      vendor = self.__cpuinfo["vendor_id"]
-+              except KeyError:
-+                      if self.system.arch.startswith("arm"):
-+                              vendor = "ARM"
-+                      else:
-+                              vendor = ""
-+
-+              return vendor
-+
-+      @property
-+      def stepping(self):
-+              """
-+                      Return the stepping id of this CPU.
-+              """
-+              try:
-+                      stepping = int(self.__cpuinfo["stepping"])
-+              except KeyError:
-+                      stepping = None
-+
-+              return stepping
-+
-+      @property
-+      def flags(self):
-+              """
-+                      Return all flags of this CPU.
-+              """
-+              try:
-+                      flags = self.__cpuinfo["flags"]
-+              except KeyError:
-+                      flags = self.__cpuinfo["Features"]
-+
-+              return flags.split()
-+
-+      @property
-+      def speed(self):
-+              """
-+                      Return the speed (in MHz) of this CPU.
-+              """
-+              try:
-+                      speed = float(self.__cpuinfo["cpu_MHz"])
-+              except KeyError:
-+                      speed = 0
-+
-+              return speed
-+
-+      @property
-+      def family(self):
-+              """
-+                      Return the family id of this CPU.
-+              """
-+              try:
-+                      family = int(self.__cpuinfo["cpu_family"])
-+              except KeyError:
-+                      family = None
-+
-+              return family
-+      
-+      @property
-+      def count(self):
-+              """
-+                      Count number of CPUs (cores).
-+              """
-+              return os.sysconf("SC_NPROCESSORS_ONLN")
-+
-+
-+if __name__ == "__main__":
-+      c = CPU()
-+
-+      print "Vendor:", c.vendor
-+      print "Model:", c.model
-+      print "Stepping:", c.stepping
-+      print "Flags:", c.flags
-+      print "Bogomips:", c.bogomips
-+      print "Speed:", c.speed
-+      print "Family:", c.family
-+      print "Count:", c.count
-+      print "Model string:", c.model_string
-diff --git a/src/fireinfo/device.py b/src/fireinfo/device.py
-new file mode 100644
-index 0000000..01338b2
---- /dev/null
-+++ b/src/fireinfo/device.py
-@@ -0,0 +1,133 @@
-+#!/usr/bin/python
-+###############################################################################
-+#                                                                             #
-+# Fireinfo                                                                    #
-+# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
-+#                                                                             #
-+# This program is free software: you can redistribute it and/or modify        #
-+# it under the terms of the GNU General Public License as published by        #
-+# the Free Software Foundation, either version 3 of the License, or           #
-+# (at your option) any later version.                                         #
-+#                                                                             #
-+# This program is distributed in the hope that it will be useful,             #
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-+# GNU General Public License for more details.                                #
-+#                                                                             #
-+# You should have received a copy of the GNU General Public License           #
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-+#                                                                             #
-+###############################################################################
-+
-+import os.path
-+
-+class Device(object):
-+      """
-+              This is an abstract class that represents all devices in the system.
-+              Every single device has its own instance of this class.
-+      """
-+
-+      def __init__(self, path):
-+              """
-+                      Collect all information about the device by reading the
-+                      "uevent" file and parsing it.
-+              """
-+
-+              # Save the path in /sys to the device.
-+              self.path = path
-+
-+              # Datastructure to store information we read.
-+              self._uevent = {}
-+
-+              # Open the uevent file and parse all lines.
-+              with open(os.path.join(path, "uevent")) as f:
-+                      for line in f.readlines():
-+                              key, val = line.split("=")
-+                              self._uevent[key] = val.rstrip().lower()
-+
-+      @property
-+      def driver(self):
-+              """
-+                      Get the driver/kernel module that device is driven by or return None.
-+              """
-+              return self._uevent.get("DRIVER", None)
-+
-+                      
-+class PCIDevice(Device):
-+      """
-+              A class that represents all PCI (and PCIe) devices in a system.
-+      """
-+
-+      subsystem = "pci"
-+
-+      @property
-+      def model(self):
-+              """
-+                      Return the PCI model id of this device.
-+              """
-+              return self._uevent['PCI_ID'].split(":")[1]
-+              
-+      @property
-+      def vendor(self):
-+              """
-+                      Return the PCI vendor id of this device.
-+              """
-+              return self._uevent['PCI_ID'].split(":")[0]
-+
-+      @property
-+      def deviceclass(self):
-+              """
-+                      Return the PCI device class of this device.
-+              """
-+              return self._uevent['PCI_CLASS']
-+
-+      @property
-+      def sub_vendor(self):
-+              """
-+                      Return the PCI vendor sub id of this device.
-+              """
-+              return self._uevent["PCI_SUBSYS_ID"].split(":")[0]
-+
-+      @property
-+      def sub_model(self):
-+              """
-+                      Return the PCI model sub id of this device.
-+              """
-+              return self._uevent["PCI_SUBSYS_ID"].split(":")[1]
-+
-+
-+class USBDevice(Device):
-+      """
-+              A class that represents all USB devices in a system.
-+      """
-+
-+      subsystem = "usb"
-+      
-+      def pad(self, s):
-+              """
-+                      A function to pad ids that have no leading zeroes.
-+              """
-+              while len(s) < 4:
-+                      s = "0"+s
-+              return s
-+
-+      @property
-+      def vendor(self):
-+              """
-+                      Return the USB vendor id of this device.
-+              """
-+              return self.pad(self._uevent['PRODUCT'].split("/")[0])
-+
-+      @property
-+      def model(self):
-+              """
-+                      Return the USB model id of this device.
-+              """
-+              return self.pad(self._uevent['PRODUCT'].split("/")[1])
-+
-+      @property
-+      def deviceclass(self):
-+              """
-+                      Return the USB device class of this device.
-+              """
-+              return self._uevent.get("INTERFACE", None)
-diff --git a/src/fireinfo/hypervisor.py b/src/fireinfo/hypervisor.py
-new file mode 100644
-index 0000000..0c07cfa
---- /dev/null
-+++ b/src/fireinfo/hypervisor.py
-@@ -0,0 +1,119 @@
-+#!/usr/bin/python
-+###############################################################################
-+#                                                                             #
-+# Fireinfo                                                                    #
-+# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
-+#                                                                             #
-+# This program is free software: you can redistribute it and/or modify        #
-+# it under the terms of the GNU General Public License as published by        #
-+# the Free Software Foundation, either version 3 of the License, or           #
-+# (at your option) any later version.                                         #
-+#                                                                             #
-+# This program is distributed in the hope that it will be useful,             #
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-+# GNU General Public License for more details.                                #
-+#                                                                             #
-+# You should have received a copy of the GNU General Public License           #
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-+#                                                                             #
-+###############################################################################
-+
-+import _fireinfo
-+import system
-+
-+class Hypervisor(object):
-+      def __init__(self):
-+              self.__hypervisor = _fireinfo.detect_hypervisor()
-+
-+      @property
-+      def system(self):
-+              """
-+                      Return the current instance of the System class.
-+
-+                      We need to do that as a property because otherwise
-+                      we get a recursion.
-+              """
-+              return system.System()
-+
-+      @property
-+      def vendor(self):
-+              """
-+                      Returns the name of the hypervisor vendor.
-+              """
-+              # Citrix Xen says it is Microsoft Hv.
-+              if self.__hypervisor == "Microsoft" and self.system.bios_vendor == "Xen":
-+                      return "Xen"
-+
-+              # Some of the hypervisors can be detected in a right way.
-+              # We can return them at this place.
-+              if self.__hypervisor:
-+                      return self.__hypervisor
-+
-+              # Check DMI and BIOS information...
-+              if self.__bios_is_bochs():
-+                      return "Bochs"
-+              elif self.__bios_is_microsoft():
-+                      return "Microsoft"
-+              elif self.__bios_is_qemu():
-+                      return "Qemu"
-+              elif self.__bios_is_virtualbox():
-+                      return "VirtualBox"
-+              elif self.__bios_is_vmware():
-+                      return "VMWare"
-+              elif self.__bios_is_xen():
-+                      return "Xen"
-+
-+      @property
-+      def virtual(self):
-+              """
-+                      Returns true if the host is running in a virtual environment.
-+                      Otherwise: false.
-+              """
-+              if self.vendor:
-+                      return True
-+
-+              return False
-+
-+      def __bios_is_bochs(self):
-+              """
-+                      Check for Bochs emulator.
-+              """
-+              return self.system.bios.check_vendor("Bochs")
-+
-+      def __bios_is_microsoft(self):
-+              """
-+                      Check for Microsoft hypervisor.
-+              """
-+              return self.system.bios.check_vendor("Microsoft Corporation")
-+
-+      def __bios_is_qemu(self):
-+              """
-+                      Check for qemu emulator.
-+              """
-+              return self.system.bios.check_vendor("QEMU")
-+
-+      def __bios_is_virtualbox(self):
-+              """
-+                      Check for virtualbox hypervisor by comparing the bios vendor string
-+                      to "innotek GmbH".
-+              """
-+              return self.system.bios.check_vendor("innotek GmbH")
-+
-+      def __bios_is_vmware(self):
-+              if self.system.bios.check_vendor("VMware-"):
-+                      return True
-+              elif self.system.bios.check_vendor("VMW"):
-+                      return True
-+
-+              return False
-+
-+      def __bios_is_xen(self):
-+              return self.system.bios.check_vendor("Xen")
-+
-+
-+if __name__ == "__main__":
-+      h = Hypervisor()
-+
-+      print "Vendor:", h.vendor
-+      print "Virtual:", h.virtual
-diff --git a/src/fireinfo/network.py b/src/fireinfo/network.py
-new file mode 100644
-index 0000000..063e9ec
---- /dev/null
-+++ b/src/fireinfo/network.py
-@@ -0,0 +1,53 @@
-+#!/usr/bin/python
-+###############################################################################
-+#                                                                             #
-+# Fireinfo                                                                    #
-+# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
-+#                                                                             #
-+# This program is free software: you can redistribute it and/or modify        #
-+# it under the terms of the GNU General Public License as published by        #
-+# the Free Software Foundation, either version 3 of the License, or           #
-+# (at your option) any later version.                                         #
-+#                                                                             #
-+# This program is distributed in the hope that it will be useful,             #
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-+# GNU General Public License for more details.                                #
-+#                                                                             #
-+# You should have received a copy of the GNU General Public License           #
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-+#                                                                             #
-+###############################################################################
-+
-+import os
-+
-+SYS_CLASS_NET = "/sys/class/net"
-+
-+class Network(object):
-+      def __init__(self):
-+              self._devices = os.listdir(SYS_CLASS_NET)
-+
-+      def has_green(self):
-+              return "green0" in self._devices
-+
-+      def has_red(self):
-+              for i in ("red0", "ppp0"):
-+                      if i in self._devices:
-+                              return True
-+
-+              return False
-+
-+      def has_blue(self):
-+              return "blue0" in self._devices
-+
-+      def has_orange(self):
-+              return "orange0" in self._devices
-+
-+
-+if __name__ == "__main__":
-+      n = Network()
-+
-+      print "has_green", n.has_green()
-+      print "has_red", n.has_red()
-+      print "has_blue", n.has_blue()
-+      print "has_orange", n.has_orange()
-diff --git a/src/fireinfo/system.py b/src/fireinfo/system.py
-new file mode 100644
-index 0000000..0a60bcc
---- /dev/null
-+++ b/src/fireinfo/system.py
-@@ -0,0 +1,451 @@
-+#!/usr/bin/python
-+###############################################################################
-+#                                                                             #
-+# Fireinfo                                                                    #
-+# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
-+#                                                                             #
-+# This program is free software: you can redistribute it and/or modify        #
-+# it under the terms of the GNU General Public License as published by        #
-+# the Free Software Foundation, either version 3 of the License, or           #
-+# (at your option) any later version.                                         #
-+#                                                                             #
-+# This program is distributed in the hope that it will be useful,             #
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-+# GNU General Public License for more details.                                #
-+#                                                                             #
-+# You should have received a copy of the GNU General Public License           #
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-+#                                                                             #
-+###############################################################################
-+
-+import hashlib
-+import json
-+import os
-+import string
-+
-+import _fireinfo
-+
-+import bios
-+import cpu
-+import device
-+import hypervisor
-+import network
-+
-+PROFILE_VERSION = 0
-+
-+SYS_CLASS_DMI = "/sys/class/dmi/id"
-+SECRET_ID_FILE = "/etc/fireinfo-id"
-+
-+INVALID_ID_STRINGS = (
-+      "OEM", "O.E.M.", "o.e.m.",
-+      "N/A", "n/a",
-+      "12345", "54321", "202020",
-+      "Chassis", "chassis",
-+      "Not Applicable",
-+      "None", "empty",
-+      "01010101-0101-0101-0101-010101010101",
-+      "00020003-0004-0005-0006-000700080009",
-+      "03000200-0400-0500-0006-000700080009",
-+      "0000000", "00000000",
-+)
-+
-+class Singleton(type):
-+      def __init__(cls, name, bases, dict):
-+              super(Singleton, cls).__init__(name, bases, dict)
-+              cls.instance = None
-+
-+      def __call__(cls, *args, **kw):
-+              if cls.instance is None:
-+                      cls.instance = super(Singleton, cls).__call__(*args, **kw)
-+
-+              return cls.instance
-+
-+
-+def read_from_file(filename):
-+      """
-+              Read all data from filename.
-+      """
-+      if not os.path.exists(filename):
-+              return
-+
-+      try:
-+              with open(filename) as f:
-+                      return f.read().strip()
-+      except IOError:
-+              pass
-+
-+class System(object):
-+      __metaclass__ = Singleton
-+
-+      def __init__(self):
-+              self.bios = bios.BIOS(self)
-+
-+              # find all devices
-+              self.devices = []
-+              self.scan()
-+              self.cpu = cpu.CPU()
-+              self.hypervisor = hypervisor.Hypervisor()
-+
-+              # Read /proc/cpuinfo for vendor information.
-+              self.__cpuinfo = self.cpu.read_cpuinfo()
-+
-+      def profile(self):
-+              p = {}
-+              p["system"] = {
-+                      # System information
-+                      "model"  : self.model,
-+                      "vendor" : self.vendor,
-+
-+                      # Indicator if the system is running in a
-+                      # virtual environment.
-+                      "virtual" : self.virtual,
-+                      
-+                      # System language
-+                      "language" : self.language,
-+
-+                      # Release information
-+                      "release" : self.release,
-+                      "kernel_release" : self.kernel_release,
-+
-+                      "memory" : self.memory,
-+                      "root_size" : self.root_size,
-+              }
-+
-+              p["devices"] = []
-+              for device in self.devices:
-+                      d = {
-+                              "subsystem" : device.subsystem.lower(), 
-+                              "vendor" : device.vendor.lower(), 
-+                              "model" : device.model.lower(), 
-+                              "deviceclass" : device.deviceclass,
-+                              "driver" : device.driver,
-+                      }
-+
-+                      # PCI devices provide subsystem information, USB don't.
-+                      if d["subsystem"] == "pci":
-+                              d["sub_model"] = device.sub_model
-+                              d["sub_vendor"] = device.sub_vendor
-+
-+                      p["devices"].append(d)
-+
-+              p["cpu"] = {
-+                      "arch" : self.arch,
-+                      "vendor" : self.cpu.vendor,
-+                      "model" : self.cpu.model,
-+                      "model_string" : self.cpu.model_string,
-+                      "stepping" : self.cpu.stepping,
-+                      "flags" : self.cpu.flags,
-+                      "bogomips" : self.cpu.bogomips,
-+                      "speed" : self.cpu.speed,
-+                      "family" : self.cpu.family,
-+                      "count" : self.cpu.count                                
-+              }
-+
-+              p["network"] = {
-+                      "green" : self.network.has_green(),
-+                      "blue" : self.network.has_blue(),
-+                      "orange" : self.network.has_orange(),
-+                      "red" : self.network.has_red(),
-+               }
-+
-+              # Only append hypervisor information if we are virtualized.
-+              if self.virtual:
-+                      p["hypervisor"] = {
-+                              "vendor" : self.hypervisor.vendor,
-+                      }
-+
-+              return {
-+                      # Profile version
-+                      "profile_version" : PROFILE_VERSION,
-+
-+                      # Identification and authorization codes
-+                      "public_id" : self.public_id,
-+                      "private_id" : self.private_id,
-+
-+                      # Actual profile data
-+                      "profile" : p,
-+              }
-+                              
-+              
-+      @property
-+      def arch(self):
-+              return os.uname()[4]
-+
-+      @property
-+      def public_id(self):
-+              """
-+                      This returns a globally (hopefully) ID to identify the host
-+                      later (by request) in the database.
-+              """
-+              public_id = self.secret_id
-+              if not public_id:
-+                      return "0" * 40
-+
-+              return hashlib.sha1(public_id).hexdigest()
-+
-+      @property
-+      def private_id(self):
-+              """
-+                      The private ID is built out of the _unique_id and used to
-+                      permit a host to do changes on the database.
-+
-+                      No one could ever guess this without access to the host.
-+              """
-+              private_id = ""
-+              for i in reversed(self.secret_id):
-+                      private_id += i
-+
-+              if not private_id:
-+                      return "0" * 40
-+
-+              return hashlib.sha1(private_id).hexdigest()
-+
-+      @property
-+      def secret_id(self):
-+              """
-+                      Read a "secret" ID from a file if available
-+                      or calculate it from the hardware.
-+              """
-+              if os.path.exists(SECRET_ID_FILE):
-+                      return read_from_file(SECRET_ID_FILE)
-+
-+              return hashlib.sha1(self._unique_id).hexdigest()
-+
-+      @property
-+      def _unique_id(self):
-+              """
-+                      This is a helper ID which is generated out of some hardware information
-+                      that is considered to be constant over a PC's lifetime.
-+
-+                      None of the data here is ever sent to the server.
-+              """
-+              ids = []
-+
-+              # Virtual machines (for example) and some boards have a UUID
-+              # which is globally unique.
-+              for file in ("product_uuid", "product_serial", "chassis_serial"):
-+                      id = read_from_file(os.path.join(SYS_CLASS_DMI, file))
-+                      ids.append(id)
-+
-+              # Sort out all bogous or invalid strings from the list.
-+              _ids = []
-+              for id in ids:
-+                      if id is None:
-+                              continue
-+
-+                      for i in INVALID_ID_STRINGS:
-+                              if i in id:
-+                                      id = None
-+                                      break
-+
-+                      if id:
-+                              _ids.append(id)
-+
-+              ids = _ids
-+
-+              # Use serial number from root disk (if available) and if
-+              # no other ID was found, yet.
-+              if not ids:
-+                      root_disk_serial = self.root_disk_serial
-+                      if root_disk_serial and not root_disk_serial.startswith("QM000"):
-+                              ids.append(root_disk_serial)
-+
-+              # As last resort, we use the UUID from pakfire.
-+              if not ids:
-+                      id = read_from_file("/opt/pakfire/db/uuid")
-+                      ids.append(id)
-+
-+              return "#".join(ids)
-+
-+      @property
-+      def language(self):
-+              """
-+                      Return the language code of IPFire or "unknown" if we cannot get it.
-+              """
-+              # Return "unknown" if settings file does not exist.
-+              filename = "/var/ipfire/main/settings"
-+              if not os.path.exists(filename):
-+                      return "unknown"
-+
-+              with open(filename, "r") as f:
-+                      for line in f.readlines():
-+                              key, val = line.split("=", 1)
-+                              if key == "LANGUAGE":
-+                                      return val.strip()
-+
-+      @property
-+      def release(self):
-+              """
-+                      Return the system release string.
-+              """
-+              return read_from_file("/etc/system-release") or "unknown"
-+
-+      @property
-+      def bios_vendor(self):
-+              """
-+                      Return the bios vendor name.
-+              """
-+              return read_from_file("/sys/class/dmi/id/bios_vendor")
-+
-+      def vendor_model_tuple(self):
-+              try:
-+                      s = self.__cpuinfo["Hardware"]
-+              except KeyError:
-+                      return (None, None)
-+
-+              if s.startswith("ARM-Versatile"):
-+                      return ("ARM", s)
-+
-+              try:
-+                      v, m = s.split(" ", 1)
-+              except ValueError:
-+                      if s.startswith("BCM"):
-+                              v = "Broadcom"
-+                              m = s
-+                      else:
-+                              v = None
-+                              m = s
-+
-+              return v, m
-+
-+      @property
-+      def vendor(self):
-+              """
-+                      Return the vendor string of this system (if any).
-+              """
-+              ret = None
-+              for file in ("sys_vendor", "board_vendor", "chassis_vendor",):
-+                      ret = read_from_file(os.path.join(SYS_CLASS_DMI, file))
-+                      if ret:
-+                              break
-+
-+              if ret is None:
-+                      v, m = self.vendor_model_tuple()
-+                      ret = v
-+
-+              return ret
-+
-+      @property
-+      def model(self):
-+              """
-+                      Return the model string of this system (if any).
-+              """
-+              ret = None
-+              for file in ("product_name", "board_model", "chassis_model",):
-+                      ret = read_from_file(os.path.join(SYS_CLASS_DMI, file))
-+                      if ret:
-+                              break
-+
-+              if ret is None:
-+                      v, m = self.vendor_model_tuple()
-+                      ret = m
-+
-+              return ret
-+
-+      @property
-+      def memory(self):
-+              """
-+                      Return the amount of memory in kilobytes.
-+              """
-+              with open("/proc/meminfo", "r") as f:
-+                      firstline = f.readline().strip()
-+                      return int(firstline.split()[1])
-+
-+      @property
-+      def kernel_release(self):
-+              """
-+                      Return the kernel release string.
-+              """
-+              return os.uname()[2]
-+
-+      @property
-+      def root_disk(self):
-+              """
-+                      Return the dev node of the root disk.
-+              """
-+              with open("/etc/mtab", "r") as f:
-+                      dev, mountpoint, fs, rest = f.readline().split(" ", 3)
-+                      if mountpoint == "/" and not fs == "rootfs":
-+                              # Cut off /dev
-+                              dev = dev[5:]
-+
-+                              # Handle raids and MMC cards like (mmcblk0p3).
-+                              if dev[-2] == "p":
-+                                      return dev[:-2]
-+
-+                              # Otherwise cut off all digits at end of string
-+                              while dev[-1] in string.digits:
-+                                      dev = dev[:-1]
-+
-+                              return dev
-+
-+      @property
-+      def root_size(self):
-+              """
-+                      Return the size of the root disk in kilobytes.
-+              """
-+              path = "/sys/block/%s/size" % self.root_disk
-+              if not os.path.exists(path):
-+                      return
-+
-+              with open(path, "r") as f:
-+                      return int(f.readline()) * 512 / 1024
-+
-+      @property
-+      def root_disk_serial(self):
-+              """
-+                      Return the serial number of the root disk (if any).
-+              """
-+              serial = _fireinfo.get_harddisk_serial("/dev/%s" % self.root_disk)
-+
-+              if serial:
-+                      # Strip all spaces
-+                      return serial.strip()
-+
-+      def scan(self):
-+              """
-+                      Scan for all devices (PCI/USB) in the system and append them
-+                      to our list.
-+              """
-+              self.devices = []
-+
-+              toscan = (
-+                      ("/sys/bus/pci/devices", device.PCIDevice),
-+                      ("/sys/bus/usb/devices", device.USBDevice)
-+              )
-+              for path, cls in toscan:
-+                      if not os.path.exists(path):
-+                              continue
-+
-+                      dirlist = os.listdir(path)
-+                      for dir in dirlist:
-+                              self.devices.append(cls(os.path.join(path, dir)))
-+
-+      @property
-+      def virtual(self):
-+              """
-+                      Say if the host is running in a virtual environment.
-+              """
-+              return self.hypervisor.virtual
-+
-+      @property
-+      def network(self):
-+              """
-+                      Reference to the network class.
-+              """
-+              return network.Network()
-+
-+
-+if __name__ == "__main__":
-+      s=System()
-+      print s.arch
-+      print s.language
-+      print s.release
-+      print s.bios_vendor
-+      print s.memory
-+      print s.kernel
-+      print s.root_disk
-+      print s.root_size
-+      print "------------\n", s.devices, "\n------------\n"
-+      print json.dumps(s.profile(), sort_keys=True, indent=4)
-diff --git a/src/sendprofile b/src/sendprofile
-new file mode 100644
-index 0000000..da480ce
---- /dev/null
-+++ b/src/sendprofile
-@@ -0,0 +1,132 @@
-+#!/usr/bin/python
-+###############################################################################
-+#                                                                             #
-+# Fireinfo                                                                    #
-+# Copyright (C) 2010, 2011 IPFire Team (www.ipfire.org)                       #
-+#                                                                             #
-+# This program is free software: you can redistribute it and/or modify        #
-+# it under the terms of the GNU General Public License as published by        #
-+# the Free Software Foundation, either version 3 of the License, or           #
-+# (at your option) any later version.                                         #
-+#                                                                             #
-+# This program is distributed in the hope that it will be useful,             #
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-+# GNU General Public License for more details.                                #
-+#                                                                             #
-+# You should have received a copy of the GNU General Public License           #
-+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-+#                                                                             #
-+###############################################################################
-+
-+import json
-+import logging
-+import logging.handlers
-+import os
-+import sys
-+import urllib
-+import urllib2
-+
-+import fireinfo
-+
-+ENABLED_FILE = "/var/ipfire/main/send_profile"
-+PROXY_SETTINGS = "/var/ipfire/proxy/advanced/settings"
-+
-+log_level = logging.INFO
-+if "-d" in sys.argv:
-+      log_level = logging.DEBUG
-+
-+# Setup logging
-+log = logging.getLogger()
-+log.setLevel(log_level)
-+log.addHandler(logging.handlers.SysLogHandler("/dev/log"))
-+log.addHandler(logging.StreamHandler(sys.stderr))
-+for handler in log.handlers:
-+      handler.setLevel(log_level)
-+
-+PROFILE_URL = "http://fireinfo.ipfire.org/send/%(public_id)s"
-+
-+def get_upstream_proxy():
-+      if not os.path.exists(PROXY_SETTINGS):
-+              return {"host" : ""}
-+
-+      proxy_settings = {}
-+      with open(PROXY_SETTINGS) as f:
-+              for line in f.readlines():
-+                      k, v = line.split("=", 1)
-+                      proxy_settings[k] = v.strip()
-+
-+      return {
-+              "host" : proxy_settings.get("UPSTREAM_PROXY", ""),
-+              "user" : proxy_settings.get("UPSTREAM_USER", ""),
-+              "pass" : proxy_settings.get("UPSTREAM_PASSWORD", ""),
-+      }
-+
-+def send_profile(profile):
-+      logging.debug("Sending profile:")
-+      for line in json.dumps(profile, sort_keys=True, indent=4).splitlines():
-+              logging.debug(line)
-+
-+      request = urllib2.Request(PROFILE_URL % profile,
-+              data = urllib.urlencode({"profile" : json.dumps(profile)}),
-+      )
-+      request.add_header("User-Agent", "fireinfo/%s" % fireinfo.__version__)
-+
-+      # Set upstream proxy if we have one.
-+      # XXX this cannot handle authentication
-+      proxy = get_upstream_proxy()
-+      if proxy["host"]:
-+              request.set_proxy(proxy["host"], "http")
-+
-+      try:
-+              urllib2.urlopen(request, timeout=60)
-+      except (urllib2.HTTPError, urllib2.URLError), e:
-+              reason = "Unknown reason"
-+
-+              if isinstance(e, urllib2.HTTPError):
-+                      reason = "%s" % e
-+              elif isinstance(e, urllib2.URLError):
-+                      reason = e.reason
-+
-+              logging.error("Profile was not sent propertly: %s" % reason)
-+              return
-+
-+      logging.debug("Profile was sent successfully.")
-+
-+def main():
-+      # Collect system information
-+      system = fireinfo.System()
-+      profile = system.profile()
-+
-+      # If --dump is passed -> only dump the output.
-+      if "--dump" in sys.argv:
-+              # Remove the private id when dumping the profile because
-+              # it contains no information and may confuse people.
-+              del profile["private_id"]
-+
-+              print json.dumps(profile, sort_keys=True, indent=4)
-+              return 0
-+
-+      if "--secret-id" in sys.argv:
-+              print system.secret_id
-+              return 0
-+
-+      if "--hardware-string" in sys.argv:
-+              print system._unique_id
-+              return 0
-+
-+      if "--public-id" in sys.argv:
-+              print system.public_id
-+              return 0
-+
-+      if not os.path.exists(ENABLED_FILE):
-+              del profile["profile"]
-+
-+      try:
-+              send_profile(profile)
-+      except urllib2.URLError:
-+              return 1
-+
-+      return 0
-+
-+sys.exit(main())
diff --git a/src/patches/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-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/imq_kernel3.10.23.patch b/src/patches/imq_kernel3.10.23.patch
deleted file mode 100644 (file)
index 9ee85e7..0000000
+++ /dev/null
@@ -1,1568 +0,0 @@
-diff -uNr linux-3.9.1/drivers/net/imq.c linux-3.9.1-imqmq/drivers/net/imq.c
---- linux-3.9.1/drivers/net/imq.c      1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.9.1-imqmq/drivers/net/imq.c        2013-05-08 17:30:41.715552053 +0300
-@@ -0,0 +1,861 @@
-+/*
-+ *             Pseudo-driver for the intermediate queue device.
-+ *
-+ *             This program is free software; you can redistribute it and/or
-+ *             modify it under the terms of the GNU General Public License
-+ *             as published by the Free Software Foundation; either version
-+ *             2 of the License, or (at your option) any later version.
-+ *
-+ * Authors:    Patrick McHardy, <kaber@trash.net>
-+ *
-+ *            The first version was written by Martin Devera, <devik@cdi.cz>
-+ *
-+ * Credits:    Jan Rafaj <imq2t@cedric.vabo.cz>
-+ *              - Update patch to 2.4.21
-+ *             Sebastian Strollo <sstrollo@nortelnetworks.com>
-+ *              - Fix "Dead-loop on netdevice imq"-issue
-+ *             Marcel Sebek <sebek64@post.cz>
-+ *              - Update to 2.6.2-rc1
-+ *
-+ *           After some time of inactivity there is a group taking care
-+ *           of IMQ again: http://www.linuximq.net
-+ *
-+ *
-+ *           2004/06/30 - New version of IMQ patch to kernels <=2.6.7
-+ *             including the following changes:
-+ *
-+ *           - Correction of ipv6 support "+"s issue (Hasso Tepper)
-+ *           - Correction of imq_init_devs() issue that resulted in
-+ *           kernel OOPS unloading IMQ as module (Norbert Buchmuller)
-+ *           - Addition of functionality to choose number of IMQ devices
-+ *           during kernel config (Andre Correa)
-+ *           - Addition of functionality to choose how IMQ hooks on
-+ *           PRE and POSTROUTING (after or before NAT) (Andre Correa)
-+ *           - Cosmetic corrections (Norbert Buchmuller) (Andre Correa)
-+ *
-+ *
-+ *             2005/12/16 - IMQ versions between 2.6.7 and 2.6.13 were
-+ *             released with almost no problems. 2.6.14-x was released
-+ *             with some important changes: nfcache was removed; After
-+ *             some weeks of trouble we figured out that some IMQ fields
-+ *             in skb were missing in skbuff.c - skb_clone and copy_skb_header.
-+ *             These functions are correctly patched by this new patch version.
-+ *
-+ *             Thanks for all who helped to figure out all the problems with
-+ *             2.6.14.x: Patrick McHardy, Rune Kock, VeNoMouS, Max CtRiX,
-+ *             Kevin Shanahan, Richard Lucassen, Valery Dachev (hopefully
-+ *             I didn't forget anybody). I apologize again for my lack of time.
-+ *
-+ *
-+ *             2008/06/17 - 2.6.25 - Changed imq.c to use qdisc_run() instead
-+ *             of qdisc_restart() and moved qdisc_run() to tasklet to avoid
-+ *             recursive locking. New initialization routines to fix 'rmmod' not
-+ *             working anymore. Used code from ifb.c. (Jussi Kivilinna)
-+ *
-+ *             2008/08/06 - 2.6.26 - (JK)
-+ *              - Replaced tasklet with 'netif_schedule()'.
-+ *              - Cleaned up and added comments for imq_nf_queue().
-+ *
-+ *             2009/04/12
-+ *              - Add skb_save_cb/skb_restore_cb helper functions for backuping
-+ *                control buffer. This is needed because qdisc-layer on kernels
-+ *                2.6.27 and newer overwrite control buffer. (Jussi Kivilinna)
-+ *              - Add better locking for IMQ device. Hopefully this will solve
-+ *                SMP issues. (Jussi Kivilinna)
-+ *              - Port to 2.6.27
-+ *              - Port to 2.6.28
-+ *              - Port to 2.6.29 + fix rmmod not working
-+ *
-+ *             2009/04/20 - (Jussi Kivilinna)
-+ *              - Use netdevice feature flags to avoid extra packet handling
-+ *                by core networking layer and possibly increase performance.
-+ *
-+ *             2009/09/26 - (Jussi Kivilinna)
-+ *              - Add imq_nf_reinject_lockless to fix deadlock with
-+ *                imq_nf_queue/imq_nf_reinject.
-+ *
-+ *             2009/12/08 - (Jussi Kivilinna)
-+ *              - Port to 2.6.32
-+ *              - Add check for skb->nf_queue_entry==NULL in imq_dev_xmit()
-+ *              - Also add better error checking for skb->nf_queue_entry usage
-+ *
-+ *             2010/02/25 - (Jussi Kivilinna)
-+ *              - Port to 2.6.33
-+ *
-+ *             2010/08/15 - (Jussi Kivilinna)
-+ *              - Port to 2.6.35
-+ *              - Simplify hook registration by using nf_register_hooks.
-+ *              - nf_reinject doesn't need spinlock around it, therefore remove
-+ *                imq_nf_reinject function. Other nf_reinject users protect
-+ *                their own data with spinlock. With IMQ however all data is
-+ *                needed is stored per skbuff, so no locking is needed.
-+ *              - Changed IMQ to use 'separate' NF_IMQ_QUEUE instead of
-+ *                NF_QUEUE, this allows working coexistance of IMQ and other
-+ *                NF_QUEUE users.
-+ *              - Make IMQ multi-queue. Number of IMQ device queues can be
-+ *                increased with 'numqueues' module parameters. Default number
-+ *                of queues is 1, in other words by default IMQ works as
-+ *                single-queue device. Multi-queue selection is based on
-+ *                IFB multi-queue patch by Changli Gao <xiaosuo@gmail.com>.
-+ *
-+ *             2011/03/18 - (Jussi Kivilinna)
-+ *              - Port to 2.6.38
-+ *
-+ *             2011/07/12 - (syoder89@gmail.com)
-+ *              - Crash fix that happens when the receiving interface has more
-+ *                than one queue (add missing skb_set_queue_mapping in
-+ *                imq_select_queue).
-+ *
-+ *             2011/07/26 - (Jussi Kivilinna)
-+ *              - Add queue mapping checks for packets exiting IMQ.
-+ *              - Port to 3.0
-+ *
-+ *             2011/08/16 - (Jussi Kivilinna)
-+ *              - Clear IFF_TX_SKB_SHARING flag that was added for linux 3.0.2
-+ *
-+ *             2011/11/03 - Germano Michel <germanomichel@gmail.com>
-+ *              - Fix IMQ for net namespaces
-+ *
-+ *             2011/11/04 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ *              - Port to 3.1
-+ *              - Clean-up, move 'get imq device pointer by imqX name' to
-+ *                separate function from imq_nf_queue().
-+ *
-+ *             2012/01/05 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ *              - Port to 3.2
-+ *
-+ *             2012/03/19 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ *              - Port to 3.3
-+ *
-+ *             2012/12/12 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
-+ *              - Port to 3.7
-+ *              - Fix checkpatch.pl warnings
-+ *
-+ *           Also, many thanks to pablo Sebastian Greco for making the initial
-+ *           patch and to those who helped the testing.
-+ *
-+ *             More info at: http://www.linuximq.net/ (Andre Correa)
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <linux/moduleparam.h>
-+#include <linux/list.h>
-+#include <linux/skbuff.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/rtnetlink.h>
-+#include <linux/if_arp.h>
-+#include <linux/netfilter.h>
-+#include <linux/netfilter_ipv4.h>
-+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
-+      #include <linux/netfilter_ipv6.h>
-+#endif
-+#include <linux/imq.h>
-+#include <net/pkt_sched.h>
-+#include <net/netfilter/nf_queue.h>
-+#include <net/sock.h>
-+#include <linux/ip.h>
-+#include <linux/ipv6.h>
-+#include <linux/if_vlan.h>
-+#include <linux/if_pppox.h>
-+#include <net/ip.h>
-+#include <net/ipv6.h>
-+
-+static int imq_nf_queue(struct nf_queue_entry *entry, unsigned int queue_num);
-+
-+static nf_hookfn imq_nf_hook;
-+
-+static struct nf_hook_ops imq_ops[] = {
-+      {
-+      /* imq_ingress_ipv4 */
-+              .hook           = imq_nf_hook,
-+              .owner          = THIS_MODULE,
-+              .pf             = PF_INET,
-+              .hooknum        = NF_INET_PRE_ROUTING,
-+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
-+              .priority       = NF_IP_PRI_MANGLE + 1,
-+#else
-+              .priority       = NF_IP_PRI_NAT_DST + 1,
-+#endif
-+      },
-+      {
-+      /* imq_egress_ipv4 */
-+              .hook           = imq_nf_hook,
-+              .owner          = THIS_MODULE,
-+              .pf             = PF_INET,
-+              .hooknum        = NF_INET_POST_ROUTING,
-+#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
-+              .priority       = NF_IP_PRI_LAST,
-+#else
-+              .priority       = NF_IP_PRI_NAT_SRC - 1,
-+#endif
-+      },
-+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
-+      {
-+      /* imq_ingress_ipv6 */
-+              .hook           = imq_nf_hook,
-+              .owner          = THIS_MODULE,
-+              .pf             = PF_INET6,
-+              .hooknum        = NF_INET_PRE_ROUTING,
-+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
-+              .priority       = NF_IP6_PRI_MANGLE + 1,
-+#else
-+              .priority       = NF_IP6_PRI_NAT_DST + 1,
-+#endif
-+      },
-+      {
-+      /* imq_egress_ipv6 */
-+              .hook           = imq_nf_hook,
-+              .owner          = THIS_MODULE,
-+              .pf             = PF_INET6,
-+              .hooknum        = NF_INET_POST_ROUTING,
-+#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
-+              .priority       = NF_IP6_PRI_LAST,
-+#else
-+              .priority       = NF_IP6_PRI_NAT_SRC - 1,
-+#endif
-+      },
-+#endif
-+};
-+
-+#if defined(CONFIG_IMQ_NUM_DEVS)
-+static int numdevs = CONFIG_IMQ_NUM_DEVS;
-+#else
-+static int numdevs = IMQ_MAX_DEVS;
-+#endif
-+
-+static struct net_device *imq_devs_cache[IMQ_MAX_DEVS];
-+
-+#define IMQ_MAX_QUEUES 32
-+static int numqueues = 1;
-+static u32 imq_hashrnd;
-+
-+static inline __be16 pppoe_proto(const struct sk_buff *skb)
-+{
-+      return *((__be16 *)(skb_mac_header(skb) + ETH_HLEN +
-+                      sizeof(struct pppoe_hdr)));
-+}
-+
-+static u16 imq_hash(struct net_device *dev, struct sk_buff *skb)
-+{
-+      unsigned int pull_len;
-+      u16 protocol = skb->protocol;
-+      u32 addr1, addr2;
-+      u32 hash, ihl = 0;
-+      union {
-+              u16 in16[2];
-+              u32 in32;
-+      } ports;
-+      u8 ip_proto;
-+
-+      pull_len = 0;
-+
-+recheck:
-+      switch (protocol) {
-+      case htons(ETH_P_8021Q): {
-+              if (unlikely(skb_pull(skb, VLAN_HLEN) == NULL))
-+                      goto other;
-+
-+              pull_len += VLAN_HLEN;
-+              skb->network_header += VLAN_HLEN;
-+
-+              protocol = vlan_eth_hdr(skb)->h_vlan_encapsulated_proto;
-+              goto recheck;
-+      }
-+
-+      case htons(ETH_P_PPP_SES): {
-+              if (unlikely(skb_pull(skb, PPPOE_SES_HLEN) == NULL))
-+                      goto other;
-+
-+              pull_len += PPPOE_SES_HLEN;
-+              skb->network_header += PPPOE_SES_HLEN;
-+
-+              protocol = pppoe_proto(skb);
-+              goto recheck;
-+      }
-+
-+      case htons(ETH_P_IP): {
-+              const struct iphdr *iph = ip_hdr(skb);
-+
-+              if (unlikely(!pskb_may_pull(skb, sizeof(struct iphdr))))
-+                      goto other;
-+
-+              addr1 = iph->daddr;
-+              addr2 = iph->saddr;
-+
-+              ip_proto = !(ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)) ?
-+                               iph->protocol : 0;
-+              ihl = ip_hdrlen(skb);
-+
-+              break;
-+      }
-+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
-+      case htons(ETH_P_IPV6): {
-+              const struct ipv6hdr *iph = ipv6_hdr(skb);
-+              __be16 fo = 0;
-+
-+              if (unlikely(!pskb_may_pull(skb, sizeof(struct ipv6hdr))))
-+                      goto other;
-+
-+              addr1 = iph->daddr.s6_addr32[3];
-+              addr2 = iph->saddr.s6_addr32[3];
-+              ihl = ipv6_skip_exthdr(skb, sizeof(struct ipv6hdr), &ip_proto,
-+                                     &fo);
-+              if (unlikely(ihl < 0))
-+                      goto other;
-+
-+              break;
-+      }
-+#endif
-+      default:
-+other:
-+              if (pull_len != 0) {
-+                      skb_push(skb, pull_len);
-+                      skb->network_header -= pull_len;
-+              }
-+
-+              return (u16)(ntohs(protocol) % dev->real_num_tx_queues);
-+      }
-+
-+      if (addr1 > addr2)
-+              swap(addr1, addr2);
-+
-+      switch (ip_proto) {
-+      case IPPROTO_TCP:
-+      case IPPROTO_UDP:
-+      case IPPROTO_DCCP:
-+      case IPPROTO_ESP:
-+      case IPPROTO_AH:
-+      case IPPROTO_SCTP:
-+      case IPPROTO_UDPLITE: {
-+              if (likely(skb_copy_bits(skb, ihl, &ports.in32, 4) >= 0)) {
-+                      if (ports.in16[0] > ports.in16[1])
-+                              swap(ports.in16[0], ports.in16[1]);
-+                      break;
-+              }
-+              /* fall-through */
-+      }
-+      default:
-+              ports.in32 = 0;
-+              break;
-+      }
-+
-+      if (pull_len != 0) {
-+              skb_push(skb, pull_len);
-+              skb->network_header -= pull_len;
-+      }
-+
-+      hash = jhash_3words(addr1, addr2, ports.in32, imq_hashrnd ^ ip_proto);
-+
-+      return (u16)(((u64)hash * dev->real_num_tx_queues) >> 32);
-+}
-+
-+static inline bool sk_tx_queue_recorded(struct sock *sk)
-+{
-+      return (sk_tx_queue_get(sk) >= 0);
-+}
-+
-+static struct netdev_queue *imq_select_queue(struct net_device *dev,
-+                                              struct sk_buff *skb)
-+{
-+      u16 queue_index = 0;
-+      u32 hash;
-+
-+      if (likely(dev->real_num_tx_queues == 1))
-+              goto out;
-+
-+      /* IMQ can be receiving ingress or engress packets. */
-+
-+      /* Check first for if rx_queue is set */
-+      if (skb_rx_queue_recorded(skb)) {
-+              queue_index = skb_get_rx_queue(skb);
-+              goto out;
-+      }
-+
-+      /* Check if socket has tx_queue set */
-+      if (sk_tx_queue_recorded(skb->sk)) {
-+              queue_index = sk_tx_queue_get(skb->sk);
-+              goto out;
-+      }
-+
-+      /* Try use socket hash */
-+      if (skb->sk && skb->sk->sk_hash) {
-+              hash = skb->sk->sk_hash;
-+              queue_index =
-+                      (u16)(((u64)hash * dev->real_num_tx_queues) >> 32);
-+              goto out;
-+      }
-+
-+      /* Generate hash from packet data */
-+      queue_index = imq_hash(dev, skb);
-+
-+out:
-+      if (unlikely(queue_index >= dev->real_num_tx_queues))
-+              queue_index = (u16)((u32)queue_index % dev->real_num_tx_queues);
-+
-+      skb_set_queue_mapping(skb, queue_index);
-+      return netdev_get_tx_queue(dev, queue_index);
-+}
-+
-+static struct net_device_stats *imq_get_stats(struct net_device *dev)
-+{
-+      return &dev->stats;
-+}
-+
-+/* called for packets kfree'd in qdiscs at places other than enqueue */
-+static void imq_skb_destructor(struct sk_buff *skb)
-+{
-+      struct nf_queue_entry *entry = skb->nf_queue_entry;
-+
-+      skb->nf_queue_entry = NULL;
-+
-+      if (entry) {
-+              nf_queue_entry_release_refs(entry);
-+              kfree(entry);
-+      }
-+
-+      skb_restore_cb(skb); /* kfree backup */
-+}
-+
-+static void imq_done_check_queue_mapping(struct sk_buff *skb,
-+                                       struct net_device *dev)
-+{
-+      unsigned int queue_index;
-+
-+      /* Don't let queue_mapping be left too large after exiting IMQ */
-+      if (likely(skb->dev != dev && skb->dev != NULL)) {
-+              queue_index = skb_get_queue_mapping(skb);
-+              if (unlikely(queue_index >= skb->dev->real_num_tx_queues)) {
-+                      queue_index = (u16)((u32)queue_index %
-+                                              skb->dev->real_num_tx_queues);
-+                      skb_set_queue_mapping(skb, queue_index);
-+              }
-+      } else {
-+              /* skb->dev was IMQ device itself or NULL, be on safe side and
-+               * just clear queue mapping.
-+               */
-+              skb_set_queue_mapping(skb, 0);
-+      }
-+}
-+
-+static netdev_tx_t imq_dev_xmit(struct sk_buff *skb, struct net_device *dev)
-+{
-+      struct nf_queue_entry *entry = skb->nf_queue_entry;
-+
-+      skb->nf_queue_entry = NULL;
-+      dev->trans_start = jiffies;
-+
-+      dev->stats.tx_bytes += skb->len;
-+      dev->stats.tx_packets++;
-+
-+      if (unlikely(entry == NULL)) {
-+              /* We don't know what is going on here.. packet is queued for
-+               * imq device, but (probably) not by us.
-+               *
-+               * If this packet was not send here by imq_nf_queue(), then
-+               * skb_save_cb() was not used and skb_free() should not show:
-+               *   WARNING: IMQ: kfree_skb: skb->cb_next:..
-+               * and/or
-+               *   WARNING: IMQ: kfree_skb: skb->nf_queue_entry...
-+               *
-+               * However if this message is shown, then IMQ is somehow broken
-+               * and you should report this to linuximq.net.
-+               */
-+
-+              /* imq_dev_xmit is black hole that eats all packets, report that
-+               * we eat this packet happily and increase dropped counters.
-+               */
-+
-+              dev->stats.tx_dropped++;
-+              dev_kfree_skb(skb);
-+
-+              return NETDEV_TX_OK;
-+      }
-+
-+      skb_restore_cb(skb); /* restore skb->cb */
-+
-+      skb->imq_flags = 0;
-+      skb->destructor = NULL;
-+
-+      imq_done_check_queue_mapping(skb, dev);
-+
-+      nf_reinject(entry, NF_ACCEPT);
-+
-+      return NETDEV_TX_OK;
-+}
-+
-+static struct net_device *get_imq_device_by_index(int index)
-+{
-+      struct net_device *dev = NULL;
-+      struct net *net;
-+      char buf[8];
-+
-+      /* get device by name and cache result */
-+      snprintf(buf, sizeof(buf), "imq%d", index);
-+
-+      /* Search device from all namespaces. */
-+      for_each_net(net) {
-+              dev = dev_get_by_name(net, buf);
-+              if (dev)
-+                      break;
-+      }
-+
-+      if (WARN_ON_ONCE(dev == NULL)) {
-+              /* IMQ device not found. Exotic config? */
-+              return ERR_PTR(-ENODEV);
-+      }
-+
-+      imq_devs_cache[index] = dev;
-+      dev_put(dev);
-+
-+      return dev;
-+}
-+
-+static int imq_nf_queue(struct nf_queue_entry *entry, unsigned int queue_num)
-+{
-+      struct net_device *dev;
-+      struct sk_buff *skb_orig, *skb, *skb_shared;
-+      struct Qdisc *q;
-+      struct netdev_queue *txq;
-+      spinlock_t *root_lock;
-+      int users, index;
-+      int retval = -EINVAL;
-+      unsigned int orig_queue_index;
-+
-+      index = entry->skb->imq_flags & IMQ_F_IFMASK;
-+      if (unlikely(index > numdevs - 1)) {
-+              if (net_ratelimit())
-+                      pr_warn("IMQ: invalid device specified, highest is %u\n",
-+                              numdevs - 1);
-+              retval = -EINVAL;
-+              goto out;
-+      }
-+
-+      /* check for imq device by index from cache */
-+      dev = imq_devs_cache[index];
-+      if (unlikely(!dev)) {
-+              dev = get_imq_device_by_index(index);
-+              if (IS_ERR(dev)) {
-+                      retval = PTR_ERR(dev);
-+                      goto out;
-+              }
-+      }
-+
-+      if (unlikely(!(dev->flags & IFF_UP))) {
-+              entry->skb->imq_flags = 0;
-+              nf_reinject(entry, NF_ACCEPT);
-+              retval = 0;
-+              goto out;
-+      }
-+      dev->last_rx = jiffies;
-+
-+      skb = entry->skb;
-+      skb_orig = NULL;
-+
-+      /* skb has owner? => make clone */
-+      if (unlikely(skb->destructor)) {
-+              skb_orig = skb;
-+              skb = skb_clone(skb, GFP_ATOMIC);
-+              if (unlikely(!skb)) {
-+                      retval = -ENOMEM;
-+                      goto out;
-+              }
-+              entry->skb = skb;
-+      }
-+
-+      skb->nf_queue_entry = entry;
-+
-+      dev->stats.rx_bytes += skb->len;
-+      dev->stats.rx_packets++;
-+
-+      if (!skb->dev) {
-+              /* skb->dev == NULL causes problems, try the find cause. */
-+              if (net_ratelimit()) {
-+                      dev_warn(&dev->dev,
-+                               "received packet with skb->dev == NULL\n");
-+                      dump_stack();
-+              }
-+
-+              skb->dev = dev;
-+      }
-+
-+      /* Disables softirqs for lock below */
-+      rcu_read_lock_bh();
-+
-+      /* Multi-queue selection */
-+      orig_queue_index = skb_get_queue_mapping(skb);
-+      txq = imq_select_queue(dev, skb);
-+
-+      q = rcu_dereference(txq->qdisc);
-+      if (unlikely(!q->enqueue))
-+              goto packet_not_eaten_by_imq_dev;
-+
-+      root_lock = qdisc_lock(q);
-+      spin_lock(root_lock);
-+
-+      users = atomic_read(&skb->users);
-+
-+      skb_shared = skb_get(skb); /* increase reference count by one */
-+
-+      /* backup skb->cb, as qdisc layer will overwrite it */
-+      skb_save_cb(skb_shared);
-+      qdisc_enqueue_root(skb_shared, q); /* might kfree_skb */
-+
-+      if (likely(atomic_read(&skb_shared->users) == users + 1)) {
-+              kfree_skb(skb_shared); /* decrease reference count by one */
-+
-+              skb->destructor = &imq_skb_destructor;
-+
-+              /* cloned? */
-+              if (unlikely(skb_orig))
-+                      kfree_skb(skb_orig); /* free original */
-+
-+              spin_unlock(root_lock);
-+              rcu_read_unlock_bh();
-+
-+              /* schedule qdisc dequeue */
-+              __netif_schedule(q);
-+
-+              retval = 0;
-+              goto out;
-+      } else {
-+              skb_restore_cb(skb_shared); /* restore skb->cb */
-+              skb->nf_queue_entry = NULL;
-+              /*
-+               * qdisc dropped packet and decreased skb reference count of
-+               * skb, so we don't really want to and try refree as that would
-+               * actually destroy the skb.
-+               */
-+              spin_unlock(root_lock);
-+              goto packet_not_eaten_by_imq_dev;
-+      }
-+
-+packet_not_eaten_by_imq_dev:
-+      skb_set_queue_mapping(skb, orig_queue_index);
-+      rcu_read_unlock_bh();
-+
-+      /* cloned? restore original */
-+      if (unlikely(skb_orig)) {
-+              kfree_skb(skb);
-+              entry->skb = skb_orig;
-+      }
-+      retval = -1;
-+out:
-+      return retval;
-+}
-+
-+static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb,
-+                              const struct net_device *indev,
-+                              const struct net_device *outdev,
-+                              int (*okfn)(struct sk_buff *))
-+{
-+      return (pskb->imq_flags & IMQ_F_ENQUEUE) ? NF_IMQ_QUEUE : NF_ACCEPT;
-+}
-+
-+static int imq_close(struct net_device *dev)
-+{
-+      netif_stop_queue(dev);
-+      return 0;
-+}
-+
-+static int imq_open(struct net_device *dev)
-+{
-+      netif_start_queue(dev);
-+      return 0;
-+}
-+
-+static const struct net_device_ops imq_netdev_ops = {
-+      .ndo_open               = imq_open,
-+      .ndo_stop               = imq_close,
-+      .ndo_start_xmit         = imq_dev_xmit,
-+      .ndo_get_stats          = imq_get_stats,
-+};
-+
-+static void imq_setup(struct net_device *dev)
-+{
-+      dev->netdev_ops         = &imq_netdev_ops;
-+      dev->type               = ARPHRD_VOID;
-+      dev->mtu                = 16000; /* too small? */
-+      dev->tx_queue_len       = 11000; /* too big? */
-+      dev->flags              = IFF_NOARP;
-+      dev->features           = NETIF_F_SG | NETIF_F_FRAGLIST |
-+                                NETIF_F_GSO | NETIF_F_HW_CSUM |
-+                                NETIF_F_HIGHDMA;
-+      dev->priv_flags         &= ~(IFF_XMIT_DST_RELEASE |
-+                                   IFF_TX_SKB_SHARING);
-+}
-+
-+static int imq_validate(struct nlattr *tb[], struct nlattr *data[])
-+{
-+      int ret = 0;
-+
-+      if (tb[IFLA_ADDRESS]) {
-+              if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN) {
-+                      ret = -EINVAL;
-+                      goto end;
-+              }
-+              if (!is_valid_ether_addr(nla_data(tb[IFLA_ADDRESS]))) {
-+                      ret = -EADDRNOTAVAIL;
-+                      goto end;
-+              }
-+      }
-+      return 0;
-+end:
-+      pr_warn("IMQ: imq_validate failed (%d)\n", ret);
-+      return ret;
-+}
-+
-+static struct rtnl_link_ops imq_link_ops __read_mostly = {
-+      .kind           = "imq",
-+      .priv_size      = 0,
-+      .setup          = imq_setup,
-+      .validate       = imq_validate,
-+};
-+
-+static const struct nf_queue_handler imq_nfqh = {
-+      .outfn = imq_nf_queue,
-+};
-+
-+static int __init imq_init_hooks(void)
-+{
-+      int ret;
-+
-+      nf_register_queue_imq_handler(&imq_nfqh);
-+
-+      ret = nf_register_hooks(imq_ops, ARRAY_SIZE(imq_ops));
-+      if (ret < 0)
-+              nf_unregister_queue_imq_handler();
-+
-+      return ret;
-+}
-+
-+static int __init imq_init_one(int index)
-+{
-+      struct net_device *dev;
-+      int ret;
-+
-+      dev = alloc_netdev_mq(0, "imq%d", imq_setup, numqueues);
-+      if (!dev)
-+              return -ENOMEM;
-+
-+      ret = dev_alloc_name(dev, dev->name);
-+      if (ret < 0)
-+              goto fail;
-+
-+      dev->rtnl_link_ops = &imq_link_ops;
-+      ret = register_netdevice(dev);
-+      if (ret < 0)
-+              goto fail;
-+
-+      return 0;
-+fail:
-+      free_netdev(dev);
-+      return ret;
-+}
-+
-+static int __init imq_init_devs(void)
-+{
-+      int err, i;
-+
-+      if (numdevs < 1 || numdevs > IMQ_MAX_DEVS) {
-+              pr_err("IMQ: numdevs has to be betweed 1 and %u\n",
-+                     IMQ_MAX_DEVS);
-+              return -EINVAL;
-+      }
-+
-+      if (numqueues < 1 || numqueues > IMQ_MAX_QUEUES) {
-+              pr_err("IMQ: numqueues has to be betweed 1 and %u\n",
-+                     IMQ_MAX_QUEUES);
-+              return -EINVAL;
-+      }
-+
-+      get_random_bytes(&imq_hashrnd, sizeof(imq_hashrnd));
-+
-+      rtnl_lock();
-+      err = __rtnl_link_register(&imq_link_ops);
-+
-+      for (i = 0; i < numdevs && !err; i++)
-+              err = imq_init_one(i);
-+
-+      if (err) {
-+              __rtnl_link_unregister(&imq_link_ops);
-+              memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
-+      }
-+      rtnl_unlock();
-+
-+      return err;
-+}
-+
-+static int __init imq_init_module(void)
-+{
-+      int err;
-+
-+#if defined(CONFIG_IMQ_NUM_DEVS)
-+      BUILD_BUG_ON(CONFIG_IMQ_NUM_DEVS > 16);
-+      BUILD_BUG_ON(CONFIG_IMQ_NUM_DEVS < 2);
-+      BUILD_BUG_ON(CONFIG_IMQ_NUM_DEVS - 1 > IMQ_F_IFMASK);
-+#endif
-+
-+      err = imq_init_devs();
-+      if (err) {
-+              pr_err("IMQ: Error trying imq_init_devs(net)\n");
-+              return err;
-+      }
-+
-+      err = imq_init_hooks();
-+      if (err) {
-+              pr_err(KERN_ERR "IMQ: Error trying imq_init_hooks()\n");
-+              rtnl_link_unregister(&imq_link_ops);
-+              memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
-+              return err;
-+      }
-+
-+      pr_info("IMQ driver loaded successfully. (numdevs = %d, numqueues = %d)\n",
-+              numdevs, numqueues);
-+
-+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
-+      pr_info("\tHooking IMQ before NAT on PREROUTING.\n");
-+#else
-+      pr_info("\tHooking IMQ after NAT on PREROUTING.\n");
-+#endif
-+#if defined(CONFIG_IMQ_BEHAVIOR_AB) || defined(CONFIG_IMQ_BEHAVIOR_BB)
-+      pr_info("\tHooking IMQ before NAT on POSTROUTING.\n");
-+#else
-+      pr_info("\tHooking IMQ after NAT on POSTROUTING.\n");
-+#endif
-+
-+      return 0;
-+}
-+
-+static void __exit imq_unhook(void)
-+{
-+      nf_unregister_hooks(imq_ops, ARRAY_SIZE(imq_ops));
-+      nf_unregister_queue_imq_handler();
-+}
-+
-+static void __exit imq_cleanup_devs(void)
-+{
-+      rtnl_link_unregister(&imq_link_ops);
-+      memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
-+}
-+
-+static void __exit imq_exit_module(void)
-+{
-+      imq_unhook();
-+      imq_cleanup_devs();
-+      pr_info("IMQ driver unloaded successfully.\n");
-+}
-+
-+module_init(imq_init_module);
-+module_exit(imq_exit_module);
-+
-+module_param(numdevs, int, 0);
-+module_param(numqueues, int, 0);
-+MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will be created)");
-+MODULE_PARM_DESC(numqueues, "number of queues per IMQ device");
-+MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS_RTNL_LINK("imq");
-+
-diff -uNr linux-3.9.1/drivers/net/Kconfig linux-3.9.1-imqmq/drivers/net/Kconfig
---- linux-3.9.1/drivers/net/Kconfig    2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/drivers/net/Kconfig      2013-05-08 17:30:29.011952562 +0300
-@@ -206,6 +206,125 @@
-       depends on RIONET
-       default "128"
-+config IMQ
-+      tristate "IMQ (intermediate queueing device) support"
-+      depends on NETDEVICES && NETFILTER
-+      ---help---
-+        The IMQ device(s) is used as placeholder for QoS queueing
-+        disciplines. Every packet entering/leaving the IP stack can be
-+        directed through the IMQ device where it's enqueued/dequeued to the
-+        attached qdisc. This allows you to treat network devices as classes
-+        and distribute bandwidth among them. Iptables is used to specify
-+        through which IMQ device, if any, packets travel.
-+
-+        More information at: http://www.linuximq.net/
-+
-+        To compile this driver as a module, choose M here: the module
-+        will be called imq.  If unsure, say N.
-+
-+choice
-+      prompt "IMQ behavior (PRE/POSTROUTING)"
-+      depends on IMQ
-+      default IMQ_BEHAVIOR_AB
-+      help
-+        This setting defines how IMQ behaves in respect to its
-+        hooking in PREROUTING and POSTROUTING.
-+
-+        IMQ can work in any of the following ways:
-+
-+            PREROUTING   |      POSTROUTING
-+        -----------------|-------------------
-+        #1  After NAT    |      After NAT
-+        #2  After NAT    |      Before NAT
-+        #3  Before NAT   |      After NAT
-+        #4  Before NAT   |      Before NAT
-+
-+        The default behavior is to hook before NAT on PREROUTING
-+        and after NAT on POSTROUTING (#3).
-+
-+        This settings are specially usefull when trying to use IMQ
-+        to shape NATed clients.
-+
-+        More information can be found at: www.linuximq.net
-+
-+        If not sure leave the default settings alone.
-+
-+config IMQ_BEHAVIOR_AA
-+      bool "IMQ AA"
-+      help
-+        This setting defines how IMQ behaves in respect to its
-+        hooking in PREROUTING and POSTROUTING.
-+
-+        Choosing this option will make IMQ hook like this:
-+
-+        PREROUTING:   After NAT
-+        POSTROUTING:  After NAT
-+
-+        More information can be found at: www.linuximq.net
-+
-+        If not sure leave the default settings alone.
-+
-+config IMQ_BEHAVIOR_AB
-+      bool "IMQ AB"
-+      help
-+        This setting defines how IMQ behaves in respect to its
-+        hooking in PREROUTING and POSTROUTING.
-+
-+        Choosing this option will make IMQ hook like this:
-+
-+        PREROUTING:   After NAT
-+        POSTROUTING:  Before NAT
-+
-+        More information can be found at: www.linuximq.net
-+
-+        If not sure leave the default settings alone.
-+
-+config IMQ_BEHAVIOR_BA
-+      bool "IMQ BA"
-+      help
-+        This setting defines how IMQ behaves in respect to its
-+        hooking in PREROUTING and POSTROUTING.
-+
-+        Choosing this option will make IMQ hook like this:
-+
-+        PREROUTING:   Before NAT
-+        POSTROUTING:  After NAT
-+
-+        More information can be found at: www.linuximq.net
-+
-+        If not sure leave the default settings alone.
-+
-+config IMQ_BEHAVIOR_BB
-+      bool "IMQ BB"
-+      help
-+        This setting defines how IMQ behaves in respect to its
-+        hooking in PREROUTING and POSTROUTING.
-+
-+        Choosing this option will make IMQ hook like this:
-+
-+        PREROUTING:   Before NAT
-+        POSTROUTING:  Before NAT
-+
-+        More information can be found at: www.linuximq.net
-+
-+        If not sure leave the default settings alone.
-+
-+endchoice
-+
-+config IMQ_NUM_DEVS
-+      int "Number of IMQ devices"
-+      range 2 16
-+      depends on IMQ
-+      default "16"
-+      help
-+        This setting defines how many IMQ devices will be created.
-+
-+        The default value is 16.
-+
-+        More information can be found at: www.linuximq.net
-+
-+        If not sure leave the default settings alone.
-+
- config TUN
-       tristate "Universal TUN/TAP device driver support"
-       select CRC32
-diff -uNr linux-3.9.1/drivers/net/Makefile linux-3.9.1-imqmq/drivers/net/Makefile
---- linux-3.9.1/drivers/net/Makefile   2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/drivers/net/Makefile     2013-05-08 17:30:29.011952562 +0300
-@@ -9,6 +9,7 @@
- obj-$(CONFIG_DUMMY) += dummy.o
- obj-$(CONFIG_EQUALIZER) += eql.o
- obj-$(CONFIG_IFB) += ifb.o
-+obj-$(CONFIG_IMQ) += imq.o
- obj-$(CONFIG_MACVLAN) += macvlan.o
- obj-$(CONFIG_MACVTAP) += macvtap.o
- obj-$(CONFIG_MII) += mii.o
-diff -uNr linux-3.9.1/include/linux/imq.h linux-3.9.1-imqmq/include/linux/imq.h
---- linux-3.9.1/include/linux/imq.h    1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.9.1-imqmq/include/linux/imq.h      2013-05-08 17:30:29.011952562 +0300
-@@ -0,0 +1,13 @@
-+#ifndef _IMQ_H
-+#define _IMQ_H
-+
-+/* IFMASK (16 device indexes, 0 to 15) and flag(s) fit in 5 bits */
-+#define IMQ_F_BITS    5
-+
-+#define IMQ_F_IFMASK  0x0f
-+#define IMQ_F_ENQUEUE 0x10
-+
-+#define IMQ_MAX_DEVS  (IMQ_F_IFMASK + 1)
-+
-+#endif /* _IMQ_H */
-+
-diff -uNr linux-3.9.1/include/linux/netfilter/xt_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter/xt_IMQ.h
---- linux-3.9.1/include/linux/netfilter/xt_IMQ.h       1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.9.1-imqmq/include/linux/netfilter/xt_IMQ.h 2013-05-08 17:30:29.011952562 +0300
-@@ -0,0 +1,9 @@
-+#ifndef _XT_IMQ_H
-+#define _XT_IMQ_H
-+
-+struct xt_imq_info {
-+      unsigned int todev;     /* target imq device */
-+};
-+
-+#endif /* _XT_IMQ_H */
-+
-diff -uNr linux-3.9.1/include/linux/netfilter_ipv4/ipt_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter_ipv4/ipt_IMQ.h
---- linux-3.9.1/include/linux/netfilter_ipv4/ipt_IMQ.h 1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.9.1-imqmq/include/linux/netfilter_ipv4/ipt_IMQ.h   2013-05-08 17:30:29.011952562 +0300
-@@ -0,0 +1,10 @@
-+#ifndef _IPT_IMQ_H
-+#define _IPT_IMQ_H
-+
-+/* Backwards compatibility for old userspace */
-+#include <linux/netfilter/xt_IMQ.h>
-+
-+#define ipt_imq_info xt_imq_info
-+
-+#endif /* _IPT_IMQ_H */
-+
-diff -uNr linux-3.9.1/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter_ipv6/ip6t_IMQ.h
---- linux-3.9.1/include/linux/netfilter_ipv6/ip6t_IMQ.h        1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.9.1-imqmq/include/linux/netfilter_ipv6/ip6t_IMQ.h  2013-05-08 17:30:29.011952562 +0300
-@@ -0,0 +1,10 @@
-+#ifndef _IP6T_IMQ_H
-+#define _IP6T_IMQ_H
-+
-+/* Backwards compatibility for old userspace */
-+#include <linux/netfilter/xt_IMQ.h>
-+
-+#define ip6t_imq_info xt_imq_info
-+
-+#endif /* _IP6T_IMQ_H */
-+
-diff -uNr linux-3.9.1/include/net/netfilter/nf_queue.h linux-3.9.1-imqmq/include/net/netfilter/nf_queue.h
---- linux-3.9.1/include/net/netfilter/nf_queue.h       2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/include/net/netfilter/nf_queue.h 2013-05-08 17:30:29.015285965 +0300
-@@ -26,5 +26,11 @@
- void nf_register_queue_handler(const struct nf_queue_handler *qh);
- void nf_unregister_queue_handler(void);
- extern void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
-+extern void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
-+
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+extern void nf_register_queue_imq_handler(const struct nf_queue_handler *qh);
-+extern void nf_unregister_queue_imq_handler(void);
-+#endif
- #endif /* _NF_QUEUE_H */
-diff -uNr linux-3.9.1/include/uapi/linux/netfilter.h linux-3.9.1-imqmq/include/uapi/linux/netfilter.h
---- linux-3.9.1/include/uapi/linux/netfilter.h 2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/include/uapi/linux/netfilter.h   2013-05-08 17:30:29.015285965 +0300
-@@ -13,7 +13,8 @@
- #define NF_QUEUE 3
- #define NF_REPEAT 4
- #define NF_STOP 5
--#define NF_MAX_VERDICT NF_STOP
-+#define NF_IMQ_QUEUE 6
-+#define NF_MAX_VERDICT NF_IMQ_QUEUE
- /* we overload the higher bits for encoding auxiliary data such as the queue
-  * number or errno values. Not nice, but better than additional function
-diff -uNr linux-3.9.1/net/core/dev.c linux-3.9.1-imqmq/net/core/dev.c
---- linux-3.9.1/net/core/dev.c 2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/net/core/dev.c   2013-05-08 17:30:29.018619368 +0300
-@@ -129,6 +129,9 @@
- #include <linux/inetdevice.h>
- #include <linux/cpu_rmap.h>
- #include <linux/static_key.h>
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+#include <linux/imq.h>
-+#endif
- #include "net-sysfs.h"
-@@ -2529,7 +2532,12 @@
-                       }
-               }
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+              if (!list_empty(&ptype_all) &&
-+                                      !(skb->imq_flags & IMQ_F_ENQUEUE))
-+#else
-               if (!list_empty(&ptype_all))
-+#endif
-                       dev_queue_xmit_nit(skb, dev);
-               skb_len = skb->len;
-diff -uNr linux-3.9.1/net/core/skbuff.c linux-3.9.1-imqmq/net/core/skbuff.c
---- linux-3.9.1/net/core/skbuff.c      2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/net/core/skbuff.c        2013-05-08 17:30:29.021952772 +0300
-@@ -73,6 +73,9 @@
- struct kmem_cache *skbuff_head_cache __read_mostly;
- static struct kmem_cache *skbuff_fclone_cache __read_mostly;
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+static struct kmem_cache *skbuff_cb_store_cache __read_mostly;
-+#endif
- static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
-                                 struct pipe_buffer *buf)
-@@ -92,6 +95,82 @@
-       return 1;
- }
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+/* Control buffer save/restore for IMQ devices */
-+struct skb_cb_table {
-+      char                    cb[48] __aligned(8);
-+      void                    *cb_next;
-+      atomic_t                refcnt;
-+};
-+
-+static DEFINE_SPINLOCK(skb_cb_store_lock);
-+
-+int skb_save_cb(struct sk_buff *skb)
-+{
-+      struct skb_cb_table *next;
-+
-+      next = kmem_cache_alloc(skbuff_cb_store_cache, GFP_ATOMIC);
-+      if (!next)
-+              return -ENOMEM;
-+
-+      BUILD_BUG_ON(sizeof(skb->cb) != sizeof(next->cb));
-+
-+      memcpy(next->cb, skb->cb, sizeof(skb->cb));
-+      next->cb_next = skb->cb_next;
-+
-+      atomic_set(&next->refcnt, 1);
-+
-+      skb->cb_next = next;
-+      return 0;
-+}
-+EXPORT_SYMBOL(skb_save_cb);
-+
-+int skb_restore_cb(struct sk_buff *skb)
-+{
-+      struct skb_cb_table *next;
-+
-+      if (!skb->cb_next)
-+              return 0;
-+
-+      next = skb->cb_next;
-+
-+      BUILD_BUG_ON(sizeof(skb->cb) != sizeof(next->cb));
-+
-+      memcpy(skb->cb, next->cb, sizeof(skb->cb));
-+      skb->cb_next = next->cb_next;
-+
-+      spin_lock(&skb_cb_store_lock);
-+
-+      if (atomic_dec_and_test(&next->refcnt))
-+              kmem_cache_free(skbuff_cb_store_cache, next);
-+
-+      spin_unlock(&skb_cb_store_lock);
-+
-+      return 0;
-+}
-+EXPORT_SYMBOL(skb_restore_cb);
-+
-+static void skb_copy_stored_cb(struct sk_buff *new, const struct sk_buff *__old)
-+{
-+      struct skb_cb_table *next;
-+      struct sk_buff *old;
-+
-+      if (!__old->cb_next) {
-+              new->cb_next = NULL;
-+              return;
-+      }
-+
-+      spin_lock(&skb_cb_store_lock);
-+
-+      old = (struct sk_buff *)__old;
-+
-+      next = old->cb_next;
-+      atomic_inc(&next->refcnt);
-+      new->cb_next = next;
-+
-+      spin_unlock(&skb_cb_store_lock);
-+}
-+#endif
- /* Pipe buffer operations for a socket. */
- static const struct pipe_buf_operations sock_pipe_buf_ops = {
-@@ -562,6 +641,28 @@
-               WARN_ON(in_irq());
-               skb->destructor(skb);
-       }
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+      /*
-+       * This should not happen. When it does, avoid memleak by restoring
-+       * the chain of cb-backups.
-+       */
-+      while (skb->cb_next != NULL) {
-+              if (net_ratelimit())
-+                      pr_warn("IMQ: kfree_skb: skb->cb_next: %08x\n",
-+                              (unsigned int)skb->cb_next);
-+
-+              skb_restore_cb(skb);
-+      }
-+      /*
-+       * This should not happen either, nf_queue_entry is nullified in
-+       * imq_dev_xmit(). If we have non-NULL nf_queue_entry then we are
-+       * leaking entry pointers, maybe memory. We don't know if this is
-+       * pointer to already freed memory, or should this be freed.
-+       * If this happens we need to add refcounting, etc for nf_queue_entry.
-+       */
-+      if (skb->nf_queue_entry && net_ratelimit())
-+              pr_warn("%s\n", "IMQ: kfree_skb: skb->nf_queue_entry != NULL");
-+#endif
- #if IS_ENABLED(CONFIG_NF_CONNTRACK)
-       nf_conntrack_put(skb->nfct);
- #endif
-@@ -683,6 +784,9 @@
-       new->sp                 = secpath_get(old->sp);
- #endif
-       memcpy(new->cb, old->cb, sizeof(old->cb));
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+      skb_copy_stored_cb(new, old);
-+#endif
-       new->csum               = old->csum;
-       new->local_df           = old->local_df;
-       new->pkt_type           = old->pkt_type;
-@@ -3053,6 +3157,13 @@
-                                               0,
-                                               SLAB_HWCACHE_ALIGN|SLAB_PANIC,
-                                               NULL);
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+      skbuff_cb_store_cache = kmem_cache_create("skbuff_cb_store_cache",
-+                                                sizeof(struct skb_cb_table),
-+                                                0,
-+                                                SLAB_HWCACHE_ALIGN|SLAB_PANIC,
-+                                                NULL);
-+#endif
- }
- /**
-diff -uNr linux-3.9.1/net/ipv6/ip6_output.c linux-3.9.1-imqmq/net/ipv6/ip6_output.c
---- linux-3.9.1/net/ipv6/ip6_output.c  2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/net/ipv6/ip6_output.c    2013-05-08 17:30:29.021952772 +0300
-@@ -89,9 +89,6 @@
-       struct in6_addr *nexthop;
-       int ret;
--      skb->protocol = htons(ETH_P_IPV6);
--      skb->dev = dev;
--
-       if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
-               struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
-@@ -167,6 +164,13 @@
-               return 0;
-       }
-+      /*
-+       * IMQ-patch: moved setting skb->dev and skb->protocol from
-+       * ip6_finish_output2 to fix crashing at netif_skb_features().
-+       */
-+      skb->protocol = htons(ETH_P_IPV6);
-+      skb->dev = dev;
-+
-       return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL, dev,
-                           ip6_finish_output,
-                           !(IP6CB(skb)->flags & IP6SKB_REROUTED));
-diff -uNr linux-3.9.1/net/netfilter/core.c linux-3.9.1-imqmq/net/netfilter/core.c
---- linux-3.9.1/net/netfilter/core.c   2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/net/netfilter/core.c     2013-05-08 17:30:29.025286174 +0300
-@@ -188,9 +188,11 @@
-               ret = NF_DROP_GETERR(verdict);
-               if (ret == 0)
-                       ret = -EPERM;
--      } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE) {
-+      } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE ||
-+                 (verdict & NF_VERDICT_MASK) == NF_IMQ_QUEUE) {
-               int err = nf_queue(skb, elem, pf, hook, indev, outdev, okfn,
--                                              verdict >> NF_VERDICT_QBITS);
-+                                              verdict >> NF_VERDICT_QBITS,
-+                                              verdict & NF_VERDICT_MASK);
-               if (err < 0) {
-                       if (err == -ECANCELED)
-                               goto next_hook;
-diff -uNr linux-3.9.1/net/netfilter/Kconfig linux-3.9.1-imqmq/net/netfilter/Kconfig
---- linux-3.9.1/net/netfilter/Kconfig  2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/net/netfilter/Kconfig    2013-05-08 17:30:29.025286174 +0300
-@@ -641,6 +641,18 @@
-         To compile it as a module, choose M here.  If unsure, say N.
-+config NETFILTER_XT_TARGET_IMQ
-+        tristate '"IMQ" target support'
-+      depends on NETFILTER_XTABLES
-+      depends on IP_NF_MANGLE || IP6_NF_MANGLE
-+      select IMQ
-+      default m if NETFILTER_ADVANCED=n
-+        help
-+          This option adds a `IMQ' target which is used to specify if and
-+          to which imq device packets should get enqueued/dequeued.
-+
-+          To compile it as a module, choose M here.  If unsure, say N.
-+
- config NETFILTER_XT_TARGET_MARK
-       tristate '"MARK" target support'
-       depends on NETFILTER_ADVANCED
-diff -uNr linux-3.9.1/net/netfilter/Makefile linux-3.9.1-imqmq/net/netfilter/Makefile
---- linux-3.9.1/net/netfilter/Makefile 2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/net/netfilter/Makefile   2013-05-08 17:30:29.025286174 +0300
-@@ -82,6 +82,7 @@
- obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
- obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
- obj-$(CONFIG_NETFILTER_XT_TARGET_HMARK) += xt_HMARK.o
-+obj-$(CONFIG_NETFILTER_XT_TARGET_IMQ) += xt_IMQ.o
- obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
- obj-$(CONFIG_NETFILTER_XT_TARGET_LOG) += xt_LOG.o
- obj-$(CONFIG_NETFILTER_XT_TARGET_NETMAP) += xt_NETMAP.o
-diff -uNr linux-3.9.1/net/netfilter/nf_internals.h linux-3.9.1-imqmq/net/netfilter/nf_internals.h
---- linux-3.9.1/net/netfilter/nf_internals.h   2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/net/netfilter/nf_internals.h     2013-05-08 17:30:29.025286174 +0300
-@@ -29,7 +29,7 @@
-                   struct net_device *indev,
-                   struct net_device *outdev,
-                   int (*okfn)(struct sk_buff *),
--                  unsigned int queuenum);
-+                  unsigned int queuenum, unsigned int queuetype);
- extern int __init netfilter_queue_init(void);
- /* nf_log.c */
-diff -uNr linux-3.9.1/net/netfilter/nf_queue.c linux-3.9.1-imqmq/net/netfilter/nf_queue.c
---- linux-3.9.1/net/netfilter/nf_queue.c       2013-05-08 06:58:03.000000000 +0300
-+++ linux-3.9.1-imqmq/net/netfilter/nf_queue.c 2013-05-08 17:30:29.025286174 +0300
-@@ -22,6 +22,23 @@
-  */
- static const struct nf_queue_handler __rcu *queue_handler __read_mostly;
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+static const struct nf_queue_handler __rcu *queue_imq_handler __read_mostly;
-+
-+void nf_register_queue_imq_handler(const struct nf_queue_handler *qh)
-+{
-+      rcu_assign_pointer(queue_imq_handler, qh);
-+}
-+EXPORT_SYMBOL_GPL(nf_register_queue_imq_handler);
-+
-+void nf_unregister_queue_imq_handler(void)
-+{
-+      RCU_INIT_POINTER(queue_imq_handler, NULL);
-+      synchronize_rcu();
-+}
-+EXPORT_SYMBOL_GPL(nf_unregister_queue_imq_handler);
-+#endif
-+
- /* return EBUSY when somebody else is registered, return EEXIST if the
-  * same handler is registered, return 0 in case of success. */
- void nf_register_queue_handler(const struct nf_queue_handler *qh)
-@@ -71,7 +89,8 @@
-                     struct net_device *indev,
-                     struct net_device *outdev,
-                     int (*okfn)(struct sk_buff *),
--                    unsigned int queuenum)
-+                    unsigned int queuenum,
-+                    unsigned int queuetype)
- {
-       int status = -ENOENT;
-       struct nf_queue_entry *entry = NULL;
-@@ -85,7 +104,17 @@
-       /* QUEUE == DROP if no one is waiting, to be safe. */
-       rcu_read_lock();
--      qh = rcu_dereference(queue_handler);
-+      if (queuetype == NF_IMQ_QUEUE) {
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+              qh = rcu_dereference(queue_imq_handler);
-+#else
-+              BUG();
-+              goto err_unlock;
-+#endif
-+      } else {
-+              qh = rcu_dereference(queue_handler);
-+      }
-+
-       if (!qh) {
-               status = -ESRCH;
-               goto err_unlock;
-@@ -233,9 +261,11 @@
-               local_bh_enable();
-               break;
-       case NF_QUEUE:
-+      case NF_IMQ_QUEUE:
-               err = nf_queue(skb, elem, entry->pf, entry->hook,
-                               entry->indev, entry->outdev, entry->okfn,
--                              verdict >> NF_VERDICT_QBITS);
-+                              verdict >> NF_VERDICT_QBITS,
-+                              verdict & NF_VERDICT_MASK);
-               if (err < 0) {
-                       if (err == -ECANCELED)
-                               goto next_hook;
-diff -uNr linux-3.9.1/net/netfilter/xt_IMQ.c linux-3.9.1-imqmq/net/netfilter/xt_IMQ.c
---- linux-3.9.1/net/netfilter/xt_IMQ.c 1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.9.1-imqmq/net/netfilter/xt_IMQ.c   2013-05-08 17:30:29.025286174 +0300
-@@ -0,0 +1,72 @@
-+/*
-+ * This target marks packets to be enqueued to an imq device
-+ */
-+#include <linux/module.h>
-+#include <linux/skbuff.h>
-+#include <linux/netfilter/x_tables.h>
-+#include <linux/netfilter/xt_IMQ.h>
-+#include <linux/imq.h>
-+
-+static unsigned int imq_target(struct sk_buff *pskb,
-+                              const struct xt_action_param *par)
-+{
-+      const struct xt_imq_info *mr = par->targinfo;
-+
-+      pskb->imq_flags = (mr->todev & IMQ_F_IFMASK) | IMQ_F_ENQUEUE;
-+
-+      return XT_CONTINUE;
-+}
-+
-+static int imq_checkentry(const struct xt_tgchk_param *par)
-+{
-+      struct xt_imq_info *mr = par->targinfo;
-+
-+      if (mr->todev > IMQ_MAX_DEVS - 1) {
-+              pr_warn("IMQ: invalid device specified, highest is %u\n",
-+                      IMQ_MAX_DEVS - 1);
-+              return -EINVAL;
-+      }
-+
-+      return 0;
-+}
-+
-+static struct xt_target xt_imq_reg[] __read_mostly = {
-+      {
-+              .name           = "IMQ",
-+              .family         = AF_INET,
-+              .checkentry     = imq_checkentry,
-+              .target         = imq_target,
-+              .targetsize     = sizeof(struct xt_imq_info),
-+              .table          = "mangle",
-+              .me             = THIS_MODULE
-+      },
-+      {
-+              .name           = "IMQ",
-+              .family         = AF_INET6,
-+              .checkentry     = imq_checkentry,
-+              .target         = imq_target,
-+              .targetsize     = sizeof(struct xt_imq_info),
-+              .table          = "mangle",
-+              .me             = THIS_MODULE
-+      },
-+};
-+
-+static int __init imq_init(void)
-+{
-+      return xt_register_targets(xt_imq_reg, ARRAY_SIZE(xt_imq_reg));
-+}
-+
-+static void __exit imq_fini(void)
-+{
-+      xt_unregister_targets(xt_imq_reg, ARRAY_SIZE(xt_imq_reg));
-+}
-+
-+module_init(imq_init);
-+module_exit(imq_fini);
-+
-+MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
-+MODULE_LICENSE("GPL");
-+MODULE_ALIAS("ipt_IMQ");
-+MODULE_ALIAS("ip6t_IMQ");
-+
-diff -uNr linux-3.10.23/include/linux/skbuff.h linux-3.10.23-imqmq/include/linux/skbuff.h
---- linux-3.10.23/include/linux/skbuff.h       2013-12-08 17:17:21.000000000 +0100
-+++ linux-3.10.23-imqmq/include/linux/skbuff.h 2013-12-09 15:49:26.329991968 +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
-@@ -488,6 +497,10 @@
-       /* 7/9 bit hole (depending on ndisc_nodetype presence) */
-       kmemcheck_bitfield_end(flags2);
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+      __u8                    imq_flags:IMQ_F_BITS;
-+#endif
-+
- #ifdef CONFIG_NET_DMA
-       dma_cookie_t            dma_cookie;
- #endif
-@@ -617,6 +630,12 @@
-       return (struct rtable *)skb_dst(skb);
- }
-+
-+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+extern int skb_save_cb(struct sk_buff *skb);
-+extern int skb_restore_cb(struct sk_buff *skb);
-+#endif
-+
- extern void kfree_skb(struct sk_buff *skb);
- extern void kfree_skb_list(struct sk_buff *segs);
- extern void skb_tx_error(struct sk_buff *skb);
-@@ -2730,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 --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/linux-2.6.30-no-pcspkr-modalias.patch b/src/patches/linux-2.6.30-no-pcspkr-modalias.patch
deleted file mode 100644 (file)
index 439269c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/drivers/input/misc/pcspkr.c b/drivers/input/misc/pcspkr.c
-index 34f4d2e..3e40c70 100644
---- a/drivers/input/misc/pcspkr.c
-+++ b/drivers/input/misc/pcspkr.c
-@@ -24,7 +24,6 @@
- MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
- MODULE_DESCRIPTION("PC Speaker beeper driver");
- MODULE_LICENSE("GPL");
--MODULE_ALIAS("platform:pcspkr");
- static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
- {
diff --git a/src/patches/linux-3.10-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.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;
+ }
index 6606095b1f3e61edad3c2d8af2df4642829fac14..71eb24e481e9b208a9563bb6855c230a37b2accf 100644 (file)
@@ -1,8 +1,6 @@
-diff --git a/src/_updown/_updown.in b/src/_updown/_updown.in
-index 3a40e21..d9f3ea0 100644
 --- a/src/_updown/_updown.in
 +++ b/src/_updown/_updown.in
-@@ -193,6 +193,29 @@ custom:*)         # custom parameters (see above CAUTION comment)
+@@ -178,6 +178,29 @@
        ;;
  esac
  
@@ -32,7 +30,7 @@ index 3a40e21..d9f3ea0 100644
  # utility functions for route manipulation
  # Meddling with this stuff should not be necessary and requires great care.
  uproute() {
-@@ -397,12 +420,12 @@ up-host:iptables)
+@@ -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.
@@ -46,9 +44,9 @@ index 3a40e21..d9f3ea0 100644
 -          -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 ]
-@@ -410,10 +433,10 @@ up-host:iptables)
+       # 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 \
@@ -61,7 +59,7 @@ index 3a40e21..d9f3ea0 100644
          fi
        fi
        ;;
-@@ -421,12 +444,12 @@ down-host:iptables)
+@@ -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.
@@ -75,9 +73,9 @@ index 3a40e21..d9f3ea0 100644
 -          -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 ]
-@@ -434,10 +457,10 @@ down-host:iptables)
+       # 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 -- \
@@ -90,7 +88,7 @@ index 3a40e21..d9f3ea0 100644
          fi
        fi
        ;;
-@@ -447,24 +470,24 @@ up-client:iptables)
+@@ -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
@@ -113,16 +111,26 @@ index 3a40e21..d9f3ea0 100644
 -        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
-@@ -473,12 +496,51 @@ up-client:iptables)
+       # 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 \
@@ -176,7 +184,7 @@ index 3a40e21..d9f3ea0 100644
        ;;
  down-client:iptables)
        # connection to client subnet, with (left/right)firewall=yes, going down
-@@ -486,28 +548,28 @@ down-client:iptables)
+@@ -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
@@ -202,8 +210,9 @@ index 3a40e21..d9f3ea0 100644
 +        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 \
@@ -211,8 +220,15 @@ index 3a40e21..d9f3ea0 100644
 +               $IPSEC_POLICY_OUT -j MARK --set-mark 50
        fi
        #
-       # log IPsec client connection teardown
-@@ -516,12 +578,51 @@ down-client:iptables)
+       # 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 -- \
@@ -266,7 +282,7 @@ index 3a40e21..d9f3ea0 100644
        ;;
  #
  # IPv6
-@@ -556,10 +657,10 @@ up-host-v6:iptables)
+@@ -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.
@@ -279,7 +295,7 @@ index 3a40e21..d9f3ea0 100644
            -s $PLUTO_ME $S_MY_PORT $IPSEC_POLICY_OUT \
            -d $PLUTO_PEER_CLIENT $D_PEER_PORT -j ACCEPT
        #
-@@ -580,10 +681,10 @@ down-host-v6:iptables)
+@@ -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.
@@ -292,7 +308,7 @@ index 3a40e21..d9f3ea0 100644
            -s $PLUTO_ME $S_MY_PORT $IPSEC_POLICY_OUT \
            -d $PLUTO_PEER_CLIENT $D_PEER_PORT -j ACCEPT
        #
-@@ -606,10 +707,10 @@ up-client-v6:iptables)
+@@ -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
@@ -305,7 +321,7 @@ index 3a40e21..d9f3ea0 100644
              -s $PLUTO_PEER_CLIENT $S_PEER_PORT \
              -d $PLUTO_MY_CLIENT $D_MY_PORT $IPSEC_POLICY_IN -j ACCEPT
        fi
-@@ -618,10 +719,10 @@ up-client-v6:iptables)
+@@ -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
@@ -318,7 +334,7 @@ index 3a40e21..d9f3ea0 100644
              -s $PLUTO_MY_CLIENT $S_MY_PORT \
              -d $PLUTO_PEER_CLIENT $D_PEER_PORT $IPSEC_POLICY_OUT -j ACCEPT
        fi
-@@ -645,11 +746,11 @@ down-client-v6:iptables)
+@@ -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
@@ -332,7 +348,7 @@ index 3a40e21..d9f3ea0 100644
              -s $PLUTO_PEER_CLIENT $S_PEER_PORT \
              -d $PLUTO_MY_CLIENT $D_MY_PORT \
                 $IPSEC_POLICY_IN -j ACCEPT
-@@ -659,11 +760,11 @@ down-client-v6:iptables)
+@@ -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/strongswan-5.1.1-delay-dpd.patch b/src/patches/strongswan-5.1.1-delay-dpd.patch
deleted file mode 100644 (file)
index db3d664..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-From b76e96e2ef4d56c863b36c8d3c39e3c2efcf4a7c Mon Sep 17 00:00:00 2001
-From: Martin Willi <martin@revosec.ch>
-Date: Fri, 1 Nov 2013 11:28:53 +0100
-Subject: [PATCH] ike: Don't immediately DPD after deferred DELETEs following IKE_SA rekeying
-
-Some peers seem to defer DELETEs a few seconds after rekeying the IKE_SA, which
-is perfectly valid. For short(er) DPD delays, this leads to the situation where
-we send a DPD request during set_state(), but the IKE_SA has no hosts set yet.
-Avoid that DPD by resetting the INBOUND timestamp during set_state().
----
- src/libcharon/sa/ike_sa.c |    8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
-
-diff --git a/src/libcharon/sa/ike_sa.c b/src/libcharon/sa/ike_sa.c
-index 0282087..d482f8b 100644
---- a/src/libcharon/sa/ike_sa.c
-+++ b/src/libcharon/sa/ike_sa.c
-@@ -687,6 +687,14 @@ METHOD(ike_sa_t, set_state, void,
-                                       DBG1(DBG_IKE, "maximum IKE_SA lifetime %ds", t);
-                               }
-                               trigger_dpd = this->peer_cfg->get_dpd(this->peer_cfg);
-+                              if (trigger_dpd)
-+                              {
-+                                      /* Some peers delay the DELETE after rekeying an IKE_SA.
-+                                       * If this delay is longer than our DPD delay, we would
-+                                       * send a DPD request here. The IKE_SA is not ready to do
-+                                       * so yet, so prevent that. */
-+                                      this->stats[STAT_INBOUND] = this->stats[STAT_ESTABLISHED];
-+                              }
-                       }
-                       break;
-               }
--- 
-1.7.4.1
-
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 12c0f1df5f19853160f5c212bb91c15cd8889ec1..f97e75074b48e5bf9d6f6412b800ce7d5084a03e 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;
-}
+my $ip = &General::GetDyndnsRedIP();
 
-#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
-       }
-
-       # 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 {
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
+
+$@