stop)
boot_mesg "Stopping avahi..."
- killproc /usr/sbin/avahi-daemon -k
+ /usr/sbin/avahi-daemon -k
;;
reload)
###############################################################################
# #
# 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 #
rmtree("${General::swroot}/portfw");
}
system("/usr/local/bin/firewallctrl");
- }
# Convert old OpenVPN CCD files (CN change, core 75).
system("/usr/local/bin/convert-ovpn");
--- /dev/null
+/etc/my.cnf
+/srv/mysql
-#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=
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]);
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;}
}
'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() {
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
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++;
}
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++;
}
@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"
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;
+}
sub showhttpheaders
{
print "Cache-control: private\n";
- print "Connection: close\n";
print "Content-type: text/html; charset=UTF-8\n\n";
}
LoadPlugin cpu
#LoadPlugin cpufreq
LoadPlugin disk
+LoadPlugin entropy
LoadPlugin interface
LoadPlugin iptables
LoadPlugin load
%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
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
# 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
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
case "${CONFIG_TYPE}" in
2)
- HAVE_BLUE="true"
+ HAVE_ORANGE="true"
;;
3)
- HAVE_ORANGE="true"
+ HAVE_BLUE="true"
;;
4)
HAVE_BLUE="true"
;;
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
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
;;
*)
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
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
-#!/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";
my $p2pfile = "${General::swroot}/firewall/p2protocols";
my $configgrp = "${General::swroot}/fwhosts/customgroups";
my $netsettings = "${General::swroot}/ethernet/settings";
-my $errormessage = '';
-my $orange = '';
-my $green = '';
-my $blue = '';
-my ($TYPE,$PROT,$SPROT,$DPROT,$SPORT,$DPORT,$TIME,$TIMEFROM,$TIMETILL,$SRC_TGT);
-my $CHAIN = "FORWARDFW";
-my $conexists = 'off';
-my $command = 'iptables -A';
-my $dnat ='';
-my $snat ='';
&General::readhash("${General::swroot}/firewall/settings", \%fwdfwsettings);
&General::readhash("$netsettings", \%defaultNetworks);
&General::readhasharray($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);
}
&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>;
}
}
}
- 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;
}
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
# 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
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
#
# 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
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
#
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
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
#
# 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
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
#
# DMA Clients
#
-CONFIG_NET_DMA=y
CONFIG_ASYNC_TX_DMA=y
# CONFIG_DMATEST is not set
# CONFIG_AUXDISPLAY is not set
# 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
#
# 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
CONFIG_ARCH_HAS_CPUFREQ=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_ARM_PATCH_PHYS_VIRT=y
CONFIG_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
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
CONFIG_ARCH_VT8500=y
CONFIG_ARCH_WM8850=y
CONFIG_ARCH_ZYNQ=y
+CONFIG_PLAT_ORION=y
CONFIG_PLAT_VERSATILE=y
CONFIG_ARM_TIMER_SP804=y
#
# Processor Type
#
+CONFIG_CPU_PJ4B=y
CONFIG_CPU_V7=y
CONFIG_CPU_32v6K=y
CONFIG_CPU_32v7=y
# CONFIG_CPU_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
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
CONFIG_ARM_NR_BANKS=8
CONFIG_MULTI_IRQ_HANDLER=y
+CONFIG_PJ4B_ERRATA_4742=y
CONFIG_ARM_ERRATA_430973=y
CONFIG_PL310_ERRATA_588369=y
CONFIG_ARM_ERRATA_643719=y
#
CONFIG_ARM_AMBA=y
CONFIG_PCI=y
-CONFIG_PCIE_DW=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_SYSCALL=y
# CONFIG_PCI_DEBUG is not set
#
# PCI host controller drivers
#
+CONFIG_PCIE_DW=y
CONFIG_PCI_IMX6=y
# CONFIG_PCCARD is not set
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
# CONFIG_THUMB2_KERNEL is not set
CONFIG_AEABI=y
# CONFIG_OABI_COMPAT is not set
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
CONFIG_HAVE_ARCH_PFN_VALID=y
CONFIG_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
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
# 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
# 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
#
# Bus devices
#
+CONFIG_MVEBU_MBUS=y
+CONFIG_OMAP_OCP2SCP=y
+CONFIG_OMAP_INTERCONNECT=y
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
CONFIG_MTD=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
# CONFIG_MTD_SM_COMMON is not set
# CONFIG_MTD_NAND_DENALI is not set
# CONFIG_MTD_NAND_GPIO is not set
+CONFIG_MTD_NAND_OMAP2=y
+CONFIG_MTD_NAND_OMAP_BCH=m
+CONFIG_MTD_NAND_OMAP_BCH8=y
+# CONFIG_MTD_NAND_OMAP_BCH4 is not set
CONFIG_MTD_NAND_IDS=y
# CONFIG_MTD_NAND_RICOH is not set
# CONFIG_MTD_NAND_DISKONCHIP is not set
CONFIG_MTD_NAND_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
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
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
# 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
#
# 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
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
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
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
# 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
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
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
# 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
# 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
# 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
#
# 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
# CONFIG_SERIAL_JSM is not set
# CONFIG_SERIAL_VT8500 is not set
CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_OMAP=y
+CONFIG_SERIAL_OMAP_CONSOLE=y
CONFIG_SERIAL_SCCNXP=m
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
CONFIG_I2C_GPIO=m
CONFIG_I2C_IMX=m
# CONFIG_I2C_INTEL_MID is not set
+CONFIG_I2C_MV64XXX=y
CONFIG_I2C_NOMADIK=y
# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
CONFIG_I2C_PCA_PLATFORM=m
# CONFIG_I2C_PXA_PCI is not set
CONFIG_I2C_SIMTEC=m
CONFIG_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
#
CONFIG_GPIO_GENERIC_PLATFORM=y
# CONFIG_GPIO_EM is not set
+CONFIG_GPIO_MVEBU=y
CONFIG_GPIO_MXC=y
CONFIG_GPIO_PL061=y
# CONFIG_GPIO_RCAR is not set
# CONFIG_GPIO_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
CONFIG_W1_MASTER_MXC=m
CONFIG_W1_MASTER_DS1WM=m
# CONFIG_W1_MASTER_GPIO is not set
+# CONFIG_HDQ_MASTER_OMAP is not set
#
# 1-wire Slaves
# CONFIG_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
# CONFIG_BATTERY_GOLDFISH is not set
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_GPIO=y
+CONFIG_POWER_RESET_QNAP=y
CONFIG_POWER_RESET_RESTART=y
CONFIG_POWER_RESET_VEXPRESS=y
CONFIG_POWER_AVS=y
CONFIG_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
CONFIG_ARM_SP805_WATCHDOG=m
# CONFIG_DW_WATCHDOG is not set
CONFIG_MPCORE_WATCHDOG=m
+CONFIG_OMAP_WATCHDOG=m
CONFIG_TWL4030_WATCHDOG=m
# CONFIG_MAX63XX_WATCHDOG is not set
CONFIG_IMX2_WDT=m
CONFIG_MFD_SYSCON=y
# CONFIG_MFD_TI_AM335X_TSCADC is not set
# CONFIG_MFD_LP8788 is not set
+CONFIG_MFD_OMAP_USB_HOST=y
# CONFIG_MFD_PALMAS is not set
# CONFIG_TPS6105X is not set
# CONFIG_TPS65010 is not set
# CONFIG_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
# 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
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
#
# 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
#
# 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
#
# Video and audio decoders
#
+CONFIG_VIDEO_SAA717X=m
CONFIG_VIDEO_CX25840=m
#
# Video encoders
#
+CONFIG_VIDEO_SAA7127=m
#
# Camera sensor devices
#
# Video improvement chips
#
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
#
# Miscelaneous helper chips
#
+CONFIG_VIDEO_M52790=m
#
# Sensors used on soc_camera driver
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
#
# DVB-S (satellite) frontends
#
+CONFIG_DVB_CX24110=m
CONFIG_DVB_CX24123=m
CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
CONFIG_DVB_ZL10039=m
CONFIG_DVB_S5H1420=m
CONFIG_DVB_STV0288=m
CONFIG_DVB_STV0299=m
CONFIG_DVB_STV6110=m
CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
CONFIG_DVB_TUNER_ITD1000=m
CONFIG_DVB_TUNER_CX24113=m
CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
CONFIG_DVB_CX24116=m
CONFIG_DVB_M88DS3103=m
+CONFIG_DVB_M88DC2800=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_TS2020=m
CONFIG_DVB_DS3000=m
+CONFIG_DVB_MB86A16=m
CONFIG_DVB_TDA10071=m
#
# DVB-T (terrestrial) frontends
#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
CONFIG_DVB_CX22702=m
CONFIG_DVB_DRXD=m
+CONFIG_DVB_L64781=m
CONFIG_DVB_TDA1004X=m
CONFIG_DVB_NXT6000=m
CONFIG_DVB_MT352=m
CONFIG_DVB_TDA10048=m
CONFIG_DVB_AF9013=m
CONFIG_DVB_EC100=m
+CONFIG_DVB_STV0367=m
CONFIG_DVB_CXD2820R=m
CONFIG_DVB_RTL2830=m
CONFIG_DVB_RTL2832=m
#
# DVB-C (cable) frontends
#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
CONFIG_DVB_TDA10023=m
CONFIG_DVB_STV0297=m
# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
#
CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
CONFIG_DVB_BCM3510=m
CONFIG_DVB_LGDT330X=m
CONFIG_DVB_LGDT3305=m
#
CONFIG_DVB_LNBP21=m
CONFIG_DVB_LNBP22=m
+CONFIG_DVB_ISL6405=m
CONFIG_DVB_ISL6421=m
CONFIG_DVB_ISL6423=m
CONFIG_DVB_A8293=m
CONFIG_DVB_LGS8GXX=m
CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_TDA665x=m
CONFIG_DVB_IX2505V=m
CONFIG_DVB_IT913X_FE=m
CONFIG_DVB_M88RS2000=m
# CONFIG_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
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
# 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
# CONFIG_FB_BROADSHEET is not set
# CONFIG_FB_AUO_K190X is not set
# CONFIG_FB_SIMPLE is not set
+CONFIG_OMAP2_VRFB=y
+CONFIG_OMAP2_DSS=y
+# CONFIG_OMAP2_DSS_DEBUG is not set
+# CONFIG_OMAP2_DSS_DEBUGFS is not set
+CONFIG_OMAP2_DSS_DPI=y
+CONFIG_OMAP2_DSS_RFBI=y
+CONFIG_OMAP2_DSS_VENC=y
+CONFIG_OMAP4_DSS_HDMI=y
+CONFIG_OMAP4_DSS_HDMI_AUDIO=y
+CONFIG_OMAP2_DSS_SDI=y
+CONFIG_OMAP2_DSS_DSI=y
+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=8
+CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
+CONFIG_FB_OMAP2=m
+CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
+CONFIG_FB_OMAP2_NUM_FBS=3
+
+#
+# OMAP2/3 Display Device Drivers
+#
+CONFIG_PANEL_GENERIC_DPI=m
+CONFIG_PANEL_TFP410=m
+CONFIG_PANEL_SHARP_LS037V7DW01=m
+CONFIG_PANEL_PICODLP=m
+CONFIG_PANEL_TAAL=m
# CONFIG_EXYNOS_VIDEO is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=m
# CONFIG_BACKLIGHT_LM3639 is not set
# CONFIG_BACKLIGHT_LP855X is not set
# CONFIG_BACKLIGHT_PANDORA is not set
+# CONFIG_BACKLIGHT_TLC59108 is not set
#
# Console display driver support
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=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
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
CONFIG_SND_USB_CAIAQ=m
CONFIG_SND_USB_CAIAQ_INPUT=y
CONFIG_SND_USB_6FIRE=m
+CONFIG_SND_FIREWIRE=y
+# CONFIG_SND_FIREWIRE_SPEAKERS is not set
+# CONFIG_SND_ISIGHT is not set
+# CONFIG_SND_SCS1X is not set
CONFIG_SND_SOC=m
CONFIG_SND_SOC_DMAENGINE_PCM=y
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
CONFIG_SND_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
#
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
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_EHCI_PCI=y
CONFIG_USB_EHCI_MXC=m
+CONFIG_USB_EHCI_HCD_OMAP=y
+CONFIG_USB_EHCI_HCD_ORION=y
CONFIG_USB_EHCI_HCD_PLATFORM=y
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_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
CONFIG_MMC_SDHCI_ESDHC_IMX=y
CONFIG_MMC_SDHCI_PXAV3=m
CONFIG_MMC_SDHCI_PXAV2=m
+CONFIG_MMC_OMAP=y
+CONFIG_MMC_OMAP_HS=y
CONFIG_MMC_MXC=m
# CONFIG_MMC_TIFM_SD is not set
+CONFIG_MMC_MVSDIO=y
# CONFIG_MMC_CB710 is not set
# CONFIG_MMC_VIA_SDMMC is not set
CONFIG_MMC_DW=m
CONFIG_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
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
# 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
#
# DMA Devices
#
+CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
CONFIG_AMBA_PL08X=y
# CONFIG_DW_DMAC is not set
+CONFIG_MV_XOR=y
CONFIG_MX3_IPU=y
CONFIG_MX3_IPU_IRQS=4
CONFIG_TIMB_DMA=m
CONFIG_IMX_SDMA=y
CONFIG_IMX_DMA=y
CONFIG_MXS_DMA=y
+CONFIG_DMA_OMAP=y
CONFIG_DMA_ENGINE=y
CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_DMA_OF=y
#
# DMA Clients
#
-CONFIG_NET_DMA=y
CONFIG_ASYNC_TX_DMA=y
# CONFIG_DMATEST is not set
# CONFIG_AUXDISPLAY is not set
# 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
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
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
# CONFIG_PM_DEVFREQ is not set
# CONFIG_EXTCON is not set
CONFIG_MEMORY=y
+# CONFIG_TI_EMIF is not set
CONFIG_IIO=m
CONFIG_IIO_BUFFER=y
CONFIG_IIO_BUFFER_CB=y
# CONFIG_VME_BUS is not set
CONFIG_PWM=y
CONFIG_PWM_IMX=m
+# CONFIG_PWM_TIECAP is not set
+# CONFIG_PWM_TIEHRPWM is not set
CONFIG_PWM_TWL=m
CONFIG_PWM_TWL_LED=m
CONFIG_PWM_VT8500=m
CONFIG_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
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
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
#
# 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
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
#
# 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
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=19
-# CONFIG_CGROUPS is not set
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_RESOURCE_COUNTERS=y
+# CONFIG_MEMCG is not set
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_CFS_BANDWIDTH is not set
+CONFIG_RT_GROUP_SCHED=y
+# CONFIG_BLK_CGROUP is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_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
CONFIG_NETFILTER_NETLINK_ACCT=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
-CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK=y
CONFIG_NF_CONNTRACK_MARK=y
# CONFIG_NF_CONNTRACK_ZONES is not set
CONFIG_NF_CONNTRACK_PROCFS=y
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_CLS_CGROUP=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
# CONFIG_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
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
# CONFIG_BCACHE_DEBUG is not set
# CONFIG_BCACHE_EDEBUG is not set
# CONFIG_BCACHE_CLOSURES_DEBUG is not set
+CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=m
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=m
CONFIG_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
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
# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
# CONFIG_TIMB_DMA is not set
CONFIG_PL330_DMA=y
+CONFIG_DMA_BCM2708=y
CONFIG_DMA_ENGINE=y
CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_DMA_OF=y
#
# DMA Clients
#
-CONFIG_NET_DMA=y
CONFIG_ASYNC_TX_DMA=y
CONFIG_DMATEST=m
# CONFIG_AUXDISPLAY is not set
# CONFIG_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
#
# 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
CONFIG_SCx200=m
CONFIG_SCx200HR_TIMER=m
# CONFIG_OLPC is not set
+CONFIG_APULED=y
CONFIG_ALIX=y
CONFIG_NET5501=y
CONFIG_GEOS=y
CONFIG_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
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
# CONFIG_BCACHE_DEBUG is not set
# CONFIG_BCACHE_EDEBUG is not set
# CONFIG_BCACHE_CLOSURES_DEBUG is not set
+CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=y
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=m
#
# CONFIG_WAN is not set
CONFIG_VMXNET3=m
+CONFIG_HYPERV_NET=m
CONFIG_ISDN=y
CONFIG_ISDN_I4L=m
CONFIG_ISDN_PPP=y
#
# 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
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
# CONFIG_FB_AUO_K190X is not set
+CONFIG_FB_HYPERV=m
# CONFIG_EXYNOS_VIDEO is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=m
# CONFIG_BACKLIGHT_LM3630 is not set
# CONFIG_BACKLIGHT_LM3639 is not set
# CONFIG_BACKLIGHT_LP855X is not set
+# CONFIG_BACKLIGHT_OT200 is not set
#
# Console display driver support
# CONFIG_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
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
#
# DMA Clients
#
-CONFIG_NET_DMA=y
CONFIG_ASYNC_TX_DMA=y
# CONFIG_DMATEST is not set
CONFIG_DCA=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
# 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
#
# 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
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
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
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
# CONFIG_BCACHE_DEBUG is not set
# CONFIG_BCACHE_EDEBUG is not set
# CONFIG_BCACHE_CLOSURES_DEBUG is not set
+CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=y
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=m
CONFIG_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
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
# CONFIG_FB_AUO_K190X is not set
+CONFIG_FB_HYPERV=m
# CONFIG_EXYNOS_VIDEO is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=m
# CONFIG_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
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
#
# DMA Clients
#
-CONFIG_NET_DMA=y
CONFIG_ASYNC_TX_DMA=y
# CONFIG_DMATEST is not set
CONFIG_DCA=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
# 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
'title' => "$Lang::tr{'hardware graphs'}",
'enabled' => 1,
};
+ $substatus->{'61.entropy'} = {
+ 'caption' => "$Lang::tr{'entropy'}",
+ 'uri' => '/cgi-bin/entropy.cgi',
+ 'title' => "$Lang::tr{'entropy graphs'}",
+ 'enabled' => 1,
+ };
$substatus->{'71.connections'} = {
'caption' => $Lang::tr{'connections'},
'uri' => '/cgi-bin/connections.cgi',
'title' => "$Lang::tr{'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'}",
+ENABLED=off
+ENABLED_BLUE=off
+ENABLED_ORANGE=off
+DDEST_PORT=1149
+DPROTOCOL=udp
+VPN_IP=
#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
#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
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
sbin/dracut-gencmdline
sbin/lsinitrd
sbin/mkinitrd
-sbin/switch_root
usr/share/dracut
usr/share/dracut/dracut-functions
usr/share/dracut/modules.d
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
#usr/share/man/man8/dracut-catimages.8
#usr/share/man/man8/dracut-gencmdline.8
#usr/share/man/man8/dracut.8
+sbin/switch_root
#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
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
etc/rc.d/init.d/networking/red.up/50-ipsec
etc/rc.d/init.d/networking/red.up/50-ovpn
etc/rc.d/init.d/networking/red.up/98-leds
-etc/rc.d/init.d/networking/red.up/99-U-dialctrl.pl
etc/rc.d/init.d/networking/red.up/99-fireinfo
etc/rc.d/init.d/networking/red.up/99-pakfire-update
etc/rc.d/init.d/networking/wpa_supplicant.exe
etc/rc.d/init.d/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
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
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
#usr/include/asm-generic/ioctl.h
#usr/include/asm-generic/ioctls.h
#usr/include/asm-generic/ipcbuf.h
+#usr/include/asm-generic/kvm_para.h
#usr/include/asm-generic/mman-common.h
#usr/include/asm-generic/mman.h
#usr/include/asm-generic/msgbuf.h
#usr/include/asm-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
#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
#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
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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#boot/dtb-KVER-ipfire-multi/armada-xp-db.dtb
#boot/dtb-KVER-ipfire-multi/armada-xp-gp.dtb
#boot/dtb-KVER-ipfire-multi/armada-xp-openblocks-ax3-4.dtb
-#boot/dtb-KVER-ipfire-multi/bcm11351-brt.dtb
-#boot/dtb-KVER-ipfire-multi/bcm2835-rpi-b.dtb
-#boot/dtb-KVER-ipfire-multi/ccu9540.dtb
-#boot/dtb-KVER-ipfire-multi/ecx-2000.dtb
-#boot/dtb-KVER-ipfire-multi/highbank.dtb
-#boot/dtb-KVER-ipfire-multi/hrefprev60.dtb
-#boot/dtb-KVER-ipfire-multi/hrefv60plus.dtb
#boot/dtb-KVER-ipfire-multi/imx25-karo-tx25.dtb
#boot/dtb-KVER-ipfire-multi/imx25-pdk.dtb
#boot/dtb-KVER-ipfire-multi/imx27-apf27.dtb
#boot/dtb-KVER-ipfire-multi/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
#boot/dtb-KVER-ipfire-multi/omap4-sdp.dtb
#boot/dtb-KVER-ipfire-multi/omap4-var-som.dtb
#boot/dtb-KVER-ipfire-multi/omap5-evm.dtb
-#boot/dtb-KVER-ipfire-multi/prima2-evb.dtb
-#boot/dtb-KVER-ipfire-multi/snowball.dtb
-#boot/dtb-KVER-ipfire-multi/socfpga_cyclone5.dtb
-#boot/dtb-KVER-ipfire-multi/socfpga_vt.dtb
-#boot/dtb-KVER-ipfire-multi/spear1310-evb.dtb
-#boot/dtb-KVER-ipfire-multi/spear1340-evb.dtb
#boot/dtb-KVER-ipfire-multi/sun4i-a10-cubieboard.dtb
#boot/dtb-KVER-ipfire-multi/sun4i-a10-hackberry.dtb
#boot/dtb-KVER-ipfire-multi/sun4i-a10-mini-xplus.dtb
#boot/dtb-KVER-ipfire-multi/sun5i-a13-olinuxino.dtb
-#boot/dtb-KVER-ipfire-multi/tegra114-dalmore.dtb
-#boot/dtb-KVER-ipfire-multi/tegra114-pluto.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-harmony.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-iris-512.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-medcom-wide.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-paz00.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-plutux.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-seaboard.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-tec.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-trimslice.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-ventana.dtb
-#boot/dtb-KVER-ipfire-multi/tegra20-whistler.dtb
-#boot/dtb-KVER-ipfire-multi/tegra30-beaver.dtb
-#boot/dtb-KVER-ipfire-multi/tegra30-cardhu-a02.dtb
-#boot/dtb-KVER-ipfire-multi/tegra30-cardhu-a04.dtb
#boot/dtb-KVER-ipfire-multi/vexpress-v2p-ca15-tc1.dtb
#boot/dtb-KVER-ipfire-multi/vexpress-v2p-ca15_a7.dtb
#boot/dtb-KVER-ipfire-multi/vexpress-v2p-ca5s.dtb
#boot/dtb-KVER-ipfire-multi/zynq-zc702.dtb
boot/vmlinuz-KVER-ipfire-multi
boot/zImage-ipfire-multi
-boot/uInit-ipfire-multi
lib/modules/KVER-ipfire-multi
#lib/modules/KVER-ipfire-multi/build
#lib/modules/KVER-ipfire-multi/kernel
#lib/modules/KVER-ipfire-multi/kernel/arch/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
#lib/modules/KVER-ipfire-multi/kernel/crypto/salsa20_generic.ko
#lib/modules/KVER-ipfire-multi/kernel/crypto/seed.ko
#lib/modules/KVER-ipfire-multi/kernel/crypto/serpent_generic.ko
-#lib/modules/KVER-ipfire-multi/kernel/crypto/sha1_generic.ko
#lib/modules/KVER-ipfire-multi/kernel/crypto/sha512_generic.ko
#lib/modules/KVER-ipfire-multi/kernel/crypto/tcrypt.ko
#lib/modules/KVER-ipfire-multi/kernel/crypto/tea.ko
#lib/modules/KVER-ipfire-multi/kernel/crypto/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
#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/solos-pci.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/atm/suni.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/block
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/DAC960.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/cciss.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/block/cryptoloop.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/mg_disk.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/nvme.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/rsxx
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/rsxx/rsxx.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/sx8.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/umem.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/block/virtio_blk.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth
#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/ath3k.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/bcm203x.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/bluetooth/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
#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
#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
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/gl520sm.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/hih6130.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/hwmon-vid.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/i5k_amb.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ibmaem.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ibmpex.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ina209.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/ina2xx.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/it87.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lineage-pem.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm63.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm73.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm75.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/lm77.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sch56xx-common.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sht15.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sht21.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/sis5595.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/smsc47b397.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/smsc47m1.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/smsc47m192.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/hwmon/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
#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
#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
#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
#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
#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
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/au8522_decoder.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/au8522_dig.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/bcm3510.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx22700.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx22702.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx24110.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/cx24113.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/zl10036.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/zl10039.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/dvb-frontends/zl10353.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/firewire
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/firewire/firedtv.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/adv7180.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/cs5345.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/m52790.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/msp3400.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/mt9v011.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/ov7670.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/saa6588.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/saa7115.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/saa7127.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/vp27smpx.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/wm8739.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/i2c/wm8775.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/mmc
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/mmc/siano
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/mmc/siano/smssdio.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/b2c2
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/b2c2/b2c2-flexcop-pci.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88/cx8800.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88/cx8802.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/cx88/cx88xx.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ddbridge
+#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ddbridge/ddbridge.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/dm1105
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/dm1105/dm1105.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ivtv
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/dvb-ttpci.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/pci/ttpci/ttpci-eeprom.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/coda.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci/dm644x_ccdc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci/vpfe_capture.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/davinci/vpss.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/m2m-deinterlace.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/marvell-ccic
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/omap
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/omap/omap-vout.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/sh_veu.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/mx3_camera.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/soc_camera.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/platform/timblogiw.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/ati_remote.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/gpio-ir-recv.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/iguanair.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/rc/imon.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_stv0680.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_t613.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_topro.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_tv8532.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_vc032x.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/gspca/gspca_vicam.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tm6000/tm6000-alsa.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tm6000/tm6000-dvb.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/tm6000/tm6000.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-budget
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-dec
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-dec/ttusb_dec.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/ttusb-dec/ttusbdecfe.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/usbvision
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/usbvision/usbvision.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/usb/uvc
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/tuner.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/v4l2-int-device.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-core.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-dma-sg.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-dvb.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf-vmalloc.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/media/v4l2-core/videobuf2-vmalloc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memory
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memory/emif.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick
#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/core
#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/core/memstick.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/core/mspro_block.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/jmb38x_ms.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/r592.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/rtsx_pci_ms.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/memstick/host/tifm_ms.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptbase.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptctl.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptfc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptsas.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptscsih.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/fusion/mptspi.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_block.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_bus.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_core.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_proc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/message/i2o/i2o_scsi.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/88pm800.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/88pm805.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/88pm80x.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lm3533-core.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lm3533-ctrlbank.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lpc_ich.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/lpc_sch.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/max8907.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/retu-mfd.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/rtsx_pci.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/sm501.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/twl4030-madc.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/viperboard.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/vx855.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/mfd/wl1273-core.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/misc
#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/altera-stapl
#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/altera-stapl/altera-stapl.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/bmp085-i2c.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/cb710
-#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/cb710/cb710.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/ds1682.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/dummy-irq.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/eeprom
#lib/modules/KVER-ipfire-multi/kernel/drivers/misc/eeprom/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
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/oki-semi
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/oki-semi/pch_gbe
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/packetengines
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/packetengines/hamachi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/packetengines/yellowfin.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic/netxen
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/ethernet/qlogic/netxen/netxen_nic.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/usbnet.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/usb/zaurus.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/veth.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/virtio_net.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/vmxnet3
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/vmxnet3/vmxnet3.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/vxlan.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ar5523
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath5k
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/carl9170
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/wil6210
-#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/atmel.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/atmel_pci.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/b43
#lib/modules/KVER-ipfire-multi/kernel/drivers/net/wireless/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
#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
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-msm6242.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-mv.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-mxc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-omap.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pcf8523.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pcf8563.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-pcf8583.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-rx8581.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-snvs.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-stk17ta8.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-tegra.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-v3020.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-vt8500.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/rtc/rtc-x1205.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/aic94xx/aic94xx.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/arcmsr
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/arcmsr/arcmsr.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/atp870u.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/be2iscsi
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/be2iscsi/be2iscsi.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/bfa
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/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
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mpt3sas/mpt3sas.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mvsas
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mvsas/mvsas.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/mvumi.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/nsp32.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/osd
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/osd/libosd.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/osd/osd.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/qla4xxx
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/qla4xxx/qla4xxx.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/raid_class.ko
+#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/scsi_debug.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/scsi_tgt.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/scsi_transport_fc.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/scsi_transport_iscsi.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/scsi/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
#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/dwc3/dwc3.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host
#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/ehci-mxc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/ehci-orion.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/hwa-hc.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/imx21-hcd.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/isp1362-hcd.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/sl811-hcd.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/ssb-hcd.ko
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/whci
-#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/host/whci/whci-hcd.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/image
#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/image/mdc800.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/image/microtek.ko
#lib/modules/KVER-ipfire-multi/kernel/drivers/usb/misc/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
#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
#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
#lib/modules/KVER-ipfire-multi/kernel/kernel/trace/ring_buffer_benchmark.ko
#lib/modules/KVER-ipfire-multi/kernel/lib
#lib/modules/KVER-ipfire-multi/kernel/lib/asn1_decoder.ko
+#lib/modules/KVER-ipfire-multi/kernel/lib/bch.ko
#lib/modules/KVER-ipfire-multi/kernel/lib/cordic.ko
#lib/modules/KVER-ipfire-multi/kernel/lib/crc-itu-t.ko
#lib/modules/KVER-ipfire-multi/kernel/lib/crc7.ko
#lib/modules/KVER-ipfire-multi/kernel/lib/zlib_deflate
#lib/modules/KVER-ipfire-multi/kernel/lib/zlib_deflate/zlib_deflate.ko
#lib/modules/KVER-ipfire-multi/kernel/net
+#lib/modules/KVER-ipfire-multi/kernel/net/802
+#lib/modules/KVER-ipfire-multi/kernel/net/802/garp.ko
+#lib/modules/KVER-ipfire-multi/kernel/net/8021q
+#lib/modules/KVER-ipfire-multi/kernel/net/8021q/8021q.ko
#lib/modules/KVER-ipfire-multi/kernel/net/atm
#lib/modules/KVER-ipfire-multi/kernel/net/atm/atm.ko
#lib/modules/KVER-ipfire-multi/kernel/net/atm/br2684.ko
#lib/modules/KVER-ipfire-multi/kernel/net/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
#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
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/atmel
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/atmel/snd-soc-atmel-pcm.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-ab8500-codec.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-alc5632.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-dmic.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-omap-hdmi-codec.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-sgtl5000.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-tlv320aic23.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-tlv320aic3x.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-tpa6130a2.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-twl4030.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-twl6040.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-wm8903.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/codecs/snd-soc-wm9712.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/dwc
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/dwc/designware_i2s.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-eukrea-tlv320.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-fsl-ssi.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-fsl-utils.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-audmux.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-pcm.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-sgtl5000.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/fsl/snd-soc-imx-ssi.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/generic
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/generic/snd-soc-simple-card.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-am3517evm.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-abe-twl6040.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-dmic.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-hdmi-card.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-hdmi.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-mcbsp.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-mcpdm.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap-twl4030.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-omap3pandora.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/omap/snd-soc-rx51.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soc/snd-soc-core.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-alc5632.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-pcm.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-trimslice.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-utils.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-wm8903.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra-wm9712.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-ac97.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-das.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-i2s.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra20-spdif.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra30-ahub.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/tegra/snd-soc-tegra30-i2s.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500/snd-soc-ux500-mach-mop500.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500/snd-soc-ux500-plat-dma.ko
-#lib/modules/KVER-ipfire-multi/kernel/sound/soc/ux500/snd-soc-ux500-plat-msp-i2s.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/soundcore.ko
#lib/modules/KVER-ipfire-multi/kernel/sound/synth
#lib/modules/KVER-ipfire-multi/kernel/sound/synth/emux
#lib/modules/KVER-ipfire-multi/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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/xfrm6_mode_transport.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/xfrm6_mode_tunnel.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/ipv6/xfrm6_tunnel.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/ircomm
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/ircomm/ircomm-tty.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/ircomm/ircomm.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/irda.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/irlan
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/irlan/irlan.ko
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/irnet
-#lib/modules/KVER-ipfire-rpi/kernel/net/irda/irnet/irnet.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/key
#lib/modules/KVER-ipfire-rpi/kernel/net/key/af_key.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/l2tp
#lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_core.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_eth.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_ip.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_ip6.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_netlink.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/l2tp/l2tp_ppp.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/llc
#lib/modules/KVER-ipfire-rpi/kernel/net/llc/llc.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/mac80211
#lib/modules/KVER-ipfire-rpi/kernel/net/mac80211/mac80211.ko
+#lib/modules/KVER-ipfire-rpi/kernel/net/mac802154
+#lib/modules/KVER-ipfire-rpi/kernel/net/mac802154/mac802154.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter
#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs
#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/ipvs/ip_vs.ko
#lib/modules/KVER-ipfire-rpi/kernel/net/netfilter/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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
+#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
+++ /dev/null
-#boot/MLO
-#boot/u-boot.bin
-boot/boot.scr
-boot/boot.script
-boot/convert_bootscript
#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
#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
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
etc/rc.d/init.d/networking/red.up/50-ipsec
etc/rc.d/init.d/networking/red.up/50-ovpn
etc/rc.d/init.d/networking/red.up/98-leds
-etc/rc.d/init.d/networking/red.up/99-U-dialctrl.pl
etc/rc.d/init.d/networking/red.up/99-fireinfo
etc/rc.d/init.d/networking/red.up/99-pakfire-update
etc/rc.d/init.d/networking/wpa_supplicant.exe
etc/rc.d/init.d/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
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
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
#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
#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
#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
#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
#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
#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
#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
#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
#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
+etc/strongswan.d/charon/padlock.conf
usr/lib/ipsec/plugins/libstrongswan-padlock.so
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
#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
--- /dev/null
+usr/bin/rngtest
+usr/sbin/rngd
+#usr/share/man/man1/rngtest.1
+#usr/share/man/man8/rngd.8
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
#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
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
#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
var/log/squid/access.log
var/log/updatexlrator
#var/logs
-#var/run/squid
#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
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
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
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
usr/lib/ipsec/plugins/libstrongswan-cmac.so
usr/lib/ipsec/plugins/libstrongswan-constraints.so
usr/lib/ipsec/plugins/libstrongswan-curl.so
+usr/lib/ipsec/plugins/libstrongswan-dhcp.so
usr/lib/ipsec/plugins/libstrongswan-des.so
usr/lib/ipsec/plugins/libstrongswan-dnskey.so
usr/lib/ipsec/plugins/libstrongswan-eap-identity.so
usr/lib/ipsec/plugins/libstrongswan-eap-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
#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
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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
+++ /dev/null
-usr/bin/vnstati
-#usr/share/man/man1/vnstati.1.gz
-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
--- /dev/null
+../../../common/beep
\ No newline at end of file
run
srv/web/ipfire/cgi-bin/credits.cgi
srv/web/ipfire/cgi-bin/gui.cgi
+srv/web/ipfire/cgi-bin/entropy.cgi
srv/web/ipfire/cgi-bin/index.cgi
srv/web/ipfire/cgi-bin/netinternal.cgi
srv/web/ipfire/cgi-bin/ovpnmain.cgi
srv/web/ipfire/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
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
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
--- /dev/null
+../../../../common/i586/strongswan-padlock
\ No newline at end of file
--- /dev/null
+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
--- /dev/null
+../../../common/openssh
\ No newline at end of file
--- /dev/null
+../../../common/rng-tools
\ No newline at end of file
--- /dev/null
+../../../common/tzdata
\ No newline at end of file
--- /dev/null
+../../../common/wpa_supplicant
\ No newline at end of file
#
#
-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
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 \
# 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.
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 /
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
/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
# 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
/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 )
echo "Name: linux-pae" > /opt/pakfire/db/installed/meta-linux-pae
echo "ProgVersion: 0" >> /opt/pakfire/db/installed/meta-linux-pae
echo "Release: 0" >> /opt/pakfire/db/installed/meta-linux-pae
+ echo "Name: linux-pae" > /opt/pakfire/db/meta/meta-linux-pae
+ echo "ProgVersion: 0" >> /opt/pakfire/db/meta/meta-linux-pae
+ echo "Release: 0" >> /opt/pakfire/db/meta/meta-linux-pae
fi
fi
echo "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
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 &
--- /dev/null
+../packages/parted
\ No newline at end of file
--- /dev/null
+etc/sysconfig/vdr-plugins.d/dvbapi.conf
+etc/vdr/plugins/dvbapi
+usr/lib/vdr/libvdr-dvbapi.so.2.0.0
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
--- /dev/null
+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
#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
#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
#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
#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
#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
#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
#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
#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
#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
--- /dev/null
+#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
#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
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
#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
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
#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
#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
#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
--- /dev/null
+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
--- /dev/null
+etc/vdr/plugins/eepg
+usr/lib/vdr/libvdr-eepg.so.2.0.0
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
--- /dev/null
+ACTION=="add|remove", KERNEL=="hw_random", RUN+="/etc/rc.d/init.d/rngd udev-event"
# -----------------------------------------------------------
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);
###############################################################################
# #
# 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 #
######################
#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
#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
-WARNING: translation string unused: Client status and controlc
WARNING: translation string unused: ConnSched scheduler
WARNING: translation string unused: ConnSched select profile
WARNING: translation string unused: HDD temperature
WARNING: translation string unused: 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
WARNING: translation string unused: ddns help plus
WARNING: translation string unused: debugme
WARNING: translation string unused: deep scan directories
+WARNING: translation string unused: default ip
WARNING: translation string unused: default networks
WARNING: translation string unused: default services
WARNING: translation string unused: description
WARNING: translation string unused: 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
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: 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
WARNING: translation string unused: outgoing firewall view group
WARNING: translation string unused: outgoing firewall warning
WARNING: translation string unused: override mtu
-WARNING: translation string unused: ovpn
WARNING: translation string unused: ovpn config
WARNING: translation string unused: ovpn dl
+WARNING: translation string unused: ovpn engines
WARNING: translation string unused: ovpn log
+WARNING: translation string unused: ovpn reneg sec
WARNING: translation string unused: ovpn_fastio
WARNING: translation string unused: ovpn_fragment
WARNING: translation string unused: ovpn_mssfix
WARNING: translation string unused: 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
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
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
-WARNING: translation string unused: Client status and controlc
WARNING: translation string unused: ConnSched scheduler
WARNING: translation string unused: ConnSched select profile
WARNING: translation string unused: HDD temperature
WARNING: translation string unused: ansi t1.483
WARNING: translation string unused: apply
WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
WARNING: translation string unused: available updates
WARNING: translation string unused: backup archive
WARNING: translation string unused: backup clear archive
WARNING: translation string unused: ddns help plus
WARNING: translation string unused: debugme
WARNING: translation string unused: deep scan directories
+WARNING: translation string unused: default ip
WARNING: translation string unused: default networks
WARNING: translation string unused: default services
WARNING: translation string unused: description
WARNING: translation string unused: dial user password has been changed
WARNING: translation string unused: dialup settings
WARNING: translation string unused: disconnect
+WARNING: translation string unused: disconnects
WARNING: translation string unused: display traffic at home
WARNING: translation string unused: display webinterface effects
WARNING: translation string unused: dmz pinhole configuration
WARNING: translation string unused: dmz pinhole rule added
WARNING: translation string unused: dmz pinhole rule removed
WARNING: translation string unused: dmzpinholes for same net not necessary
+WARNING: translation string unused: dns server
WARNING: translation string unused: do not log this port list
WARNING: translation string unused: donation-link
WARNING: translation string unused: done
WARNING: translation string unused: 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: 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
WARNING: translation string unused: outgoing firewall view group
WARNING: translation string unused: outgoing firewall warning
WARNING: translation string unused: override mtu
-WARNING: translation string unused: ovpn
WARNING: translation string unused: ovpn config
WARNING: translation string unused: ovpn dl
+WARNING: translation string unused: ovpn engines
WARNING: translation string unused: ovpn log
+WARNING: translation string unused: ovpn reneg sec
WARNING: translation string unused: ovpn_fastio
WARNING: translation string unused: ovpn_fragment
WARNING: translation string unused: ovpn_mssfix
WARNING: translation string unused: psk
WARNING: translation string unused: quick control
WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
WARNING: translation string unused: reboot schedule
WARNING: translation string unused: reboot sure
WARNING: translation string unused: refresh update list
WARNING: translation string unused: tor bridge enabled
WARNING: translation string unused: tor errmsg invalid node id
WARNING: translation string unused: tor exit country
+WARNING: translation string unused: total connection time
WARNING: translation string unused: traffic back
WARNING: translation string unused: traffic calc time
WARNING: translation string unused: traffic calc time bad
WARNING: translation string unused: 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
WARNING: translation string unused: ansi t1.483
WARNING: translation string unused: apply
WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
WARNING: translation string unused: available updates
WARNING: translation string unused: backup archive
WARNING: translation string unused: backup clear archive
WARNING: translation string unused: dial user password has been changed
WARNING: translation string unused: dialup settings
WARNING: translation string unused: disconnect
+WARNING: translation string unused: disconnects
WARNING: translation string unused: display traffic at home
WARNING: translation string unused: display webinterface effects
WARNING: translation string unused: dmz pinhole configuration
WARNING: translation string unused: dmz pinhole rule added
WARNING: translation string unused: dmz pinhole rule removed
WARNING: translation string unused: dmzpinholes for same net not necessary
+WARNING: translation string unused: dns server
WARNING: translation string unused: do not log this port list
WARNING: translation string unused: donation-link
WARNING: translation string unused: done
WARNING: translation string unused: 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
WARNING: translation string unused: psk
WARNING: translation string unused: quick control
WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
WARNING: translation string unused: reboot schedule
WARNING: translation string unused: reboot sure
WARNING: translation string unused: refresh update list
WARNING: translation string unused: 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
WARNING: translation string unused: use ibod
WARNING: translation string unused: view log
WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
WARNING: translation string unused: vpn incompatible use of defaultroute
WARNING: translation string unused: vpn mtu invalid
WARNING: translation string unused: vpn on blue
WARNING: translation string unused: 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: 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
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
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
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
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
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
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 external port nat
WARNING: untranslated string: fwdfw hint ip1
WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw hint mac
WARNING: untranslated string: fwdfw iface
WARNING: untranslated string: fwdfw log
WARNING: untranslated string: fwdfw log rule
WARNING: untranslated string: fwdfw use srcport
WARNING: untranslated string: fwdfw use srv
WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw warn1
WARNING: untranslated string: fwdfw wd_fri
WARNING: untranslated string: fwdfw wd_mon
WARNING: untranslated string: fwdfw wd_sat
WARNING: untranslated string: 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
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
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
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
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
WARNING: translation string unused: ansi t1.483
WARNING: translation string unused: apply
WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
WARNING: translation string unused: available updates
WARNING: translation string unused: backup archive
WARNING: translation string unused: backup clear archive
WARNING: translation string unused: dial user password has been changed
WARNING: translation string unused: dialup settings
WARNING: translation string unused: disconnect
+WARNING: translation string unused: disconnects
WARNING: translation string unused: display traffic at home
WARNING: translation string unused: display webinterface effects
WARNING: translation string unused: dmz pinhole configuration
WARNING: translation string unused: dmz pinhole rule added
WARNING: translation string unused: dmz pinhole rule removed
WARNING: translation string unused: dmzpinholes for same net not necessary
+WARNING: translation string unused: dns server
WARNING: translation string unused: do not log this port list
WARNING: translation string unused: donation-link
WARNING: translation string unused: done
WARNING: translation string unused: 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
WARNING: translation string unused: psk
WARNING: translation string unused: quick control
WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
WARNING: translation string unused: reboot schedule
WARNING: translation string unused: reboot sure
WARNING: translation string unused: refresh update list
WARNING: translation string unused: 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
WARNING: translation string unused: use ibod
WARNING: translation string unused: view log
WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
WARNING: translation string unused: vpn incompatible use of defaultroute
WARNING: translation string unused: vpn mtu invalid
WARNING: translation string unused: vpn on blue
WARNING: 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
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
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
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
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
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
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 external port nat
WARNING: untranslated string: fwdfw hint ip1
WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw hint mac
WARNING: untranslated string: fwdfw iface
WARNING: untranslated string: fwdfw log
WARNING: untranslated string: fwdfw log rule
WARNING: untranslated string: fwdfw use srcport
WARNING: untranslated string: fwdfw use srv
WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw warn1
WARNING: untranslated string: fwdfw wd_fri
WARNING: untranslated string: fwdfw wd_mon
WARNING: untranslated string: fwdfw wd_sat
WARNING: untranslated string: 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
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
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
WARNING: untranslated string: tor traffic limit soft
WARNING: untranslated string: tor traffic read written
WARNING: untranslated string: tor use exit nodes
+WARNING: untranslated string: uplink
+WARNING: untranslated string: upload dh key
WARNING: untranslated string: upload new ruleset
WARNING: untranslated string: uptime load average
WARNING: untranslated string: urlfilter file ext block
WARNING: untranslated string: 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
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
WARNING: translation string unused: ansi t1.483
WARNING: translation string unused: apply
WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
WARNING: translation string unused: available updates
WARNING: translation string unused: backup archive
WARNING: translation string unused: backup clear archive
WARNING: translation string unused: dial user password has been changed
WARNING: translation string unused: dialup settings
WARNING: translation string unused: disconnect
+WARNING: translation string unused: disconnects
WARNING: translation string unused: display traffic at home
WARNING: translation string unused: display webinterface effects
WARNING: translation string unused: dmz pinhole configuration
WARNING: translation string unused: dmz pinhole rule added
WARNING: translation string unused: dmz pinhole rule removed
WARNING: translation string unused: dmzpinholes for same net not necessary
+WARNING: translation string unused: dns server
WARNING: translation string unused: do not log this port list
WARNING: translation string unused: donation-link
WARNING: translation string unused: done
WARNING: translation string unused: 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
WARNING: translation string unused: psk
WARNING: translation string unused: quick control
WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
WARNING: translation string unused: reboot schedule
WARNING: translation string unused: reboot sure
WARNING: translation string unused: refresh update list
WARNING: translation string unused: 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
WARNING: translation string unused: use ibod
WARNING: translation string unused: view log
WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
WARNING: translation string unused: vpn incompatible use of defaultroute
WARNING: translation string unused: vpn mtu invalid
WARNING: translation string unused: vpn on blue
WARNING: translation string unused: 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: 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
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
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
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 external port nat
WARNING: untranslated string: fwdfw hint ip1
WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw hint mac
WARNING: untranslated string: fwdfw iface
WARNING: untranslated string: fwdfw log
WARNING: untranslated string: fwdfw log rule
WARNING: untranslated string: fwdfw use srcport
WARNING: untranslated string: fwdfw use srv
WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw warn1
WARNING: untranslated string: fwdfw wd_fri
WARNING: untranslated string: fwdfw wd_mon
WARNING: untranslated string: fwdfw wd_sat
WARNING: untranslated string: 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
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
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
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: translation string unused: ansi t1.483
WARNING: translation string unused: apply
WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
WARNING: translation string unused: available updates
WARNING: translation string unused: backup archive
WARNING: translation string unused: backup clear archive
WARNING: translation string unused: dial user password has been changed
WARNING: translation string unused: dialup settings
WARNING: translation string unused: disconnect
+WARNING: translation string unused: disconnects
WARNING: translation string unused: display traffic at home
WARNING: translation string unused: display webinterface effects
WARNING: translation string unused: dmz pinhole configuration
WARNING: translation string unused: dmz pinhole rule added
WARNING: translation string unused: dmz pinhole rule removed
WARNING: translation string unused: dmzpinholes for same net not necessary
+WARNING: translation string unused: dns server
WARNING: translation string unused: do not log this port list
WARNING: translation string unused: donation-link
WARNING: translation string unused: done
WARNING: translation string unused: 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
WARNING: translation string unused: psk
WARNING: translation string unused: quick control
WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
WARNING: translation string unused: reboot schedule
WARNING: translation string unused: reboot sure
WARNING: translation string unused: refresh update list
WARNING: translation string unused: 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
WARNING: translation string unused: use ibod
WARNING: translation string unused: view log
WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
WARNING: translation string unused: vpn incompatible use of defaultroute
WARNING: translation string unused: vpn mtu invalid
WARNING: translation string unused: vpn on blue
WARNING: translation string unused: 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: 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
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
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
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
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
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
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 external port nat
WARNING: untranslated string: fwdfw hint ip1
WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw hint mac
WARNING: untranslated string: fwdfw iface
WARNING: untranslated string: fwdfw log
WARNING: untranslated string: fwdfw log rule
WARNING: untranslated string: fwdfw use srcport
WARNING: untranslated string: fwdfw use srv
WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw warn1
WARNING: untranslated string: fwdfw wd_fri
WARNING: untranslated string: fwdfw wd_mon
WARNING: untranslated string: fwdfw wd_sat
WARNING: untranslated string: 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
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
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
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
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
WARNING: translation string unused: ansi t1.483
WARNING: translation string unused: apply
WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
WARNING: translation string unused: available updates
WARNING: translation string unused: backup archive
WARNING: translation string unused: backup clear archive
WARNING: translation string unused: dial user password has been changed
WARNING: translation string unused: dialup settings
WARNING: translation string unused: disconnect
+WARNING: translation string unused: disconnects
WARNING: translation string unused: display traffic at home
WARNING: translation string unused: display webinterface effects
WARNING: translation string unused: dmz pinhole configuration
WARNING: translation string unused: dmz pinhole rule added
WARNING: translation string unused: dmz pinhole rule removed
WARNING: translation string unused: dmzpinholes for same net not necessary
+WARNING: translation string unused: dns server
WARNING: translation string unused: do not log this port list
WARNING: translation string unused: donation-link
WARNING: translation string unused: done
WARNING: translation string unused: 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
WARNING: translation string unused: psk
WARNING: translation string unused: quick control
WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
WARNING: translation string unused: reboot schedule
WARNING: translation string unused: reboot sure
WARNING: translation string unused: refresh update list
WARNING: translation string unused: 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
WARNING: translation string unused: use ibod
WARNING: translation string unused: view log
WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
WARNING: translation string unused: vpn incompatible use of defaultroute
WARNING: translation string unused: vpn mtu invalid
WARNING: translation string unused: vpn on blue
WARNING: translation string unused: warn when traffic reaches
WARNING: translation string unused: web proxy configuration
WARNING: translation string unused: weekly firewallhits
+WARNING: translation string unused: wlanap wlan services
WARNING: translation string unused: xtaccess all error
WARNING: translation string unused: xtaccess bad transfert
WARNING: translation string unused: yearly firewallhits
WARNING: untranslated string: 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
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
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
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
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
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
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 external port nat
WARNING: untranslated string: fwdfw hint ip1
WARNING: untranslated string: fwdfw hint ip2
+WARNING: untranslated string: fwdfw hint mac
WARNING: untranslated string: fwdfw iface
WARNING: untranslated string: fwdfw log
WARNING: untranslated string: fwdfw log rule
WARNING: untranslated string: fwdfw use srcport
WARNING: untranslated string: fwdfw use srv
WARNING: untranslated string: fwdfw useless rule
+WARNING: untranslated string: fwdfw warn1
WARNING: untranslated string: fwdfw wd_fri
WARNING: untranslated string: fwdfw wd_mon
WARNING: untranslated string: fwdfw wd_sat
WARNING: untranslated string: 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
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
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
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
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
WARNING: translation string unused: ansi t1.483
WARNING: translation string unused: apply
WARNING: translation string unused: archive not exist
+WARNING: translation string unused: attemps
WARNING: translation string unused: available updates
WARNING: translation string unused: backup archive
WARNING: translation string unused: backup clear archive
WARNING: translation string unused: ddns help plus
WARNING: translation string unused: debugme
WARNING: translation string unused: deep scan directories
+WARNING: translation string unused: default ip
WARNING: translation string unused: default networks
WARNING: translation string unused: default services
WARNING: translation string unused: description
WARNING: translation string unused: dial user password has been changed
WARNING: translation string unused: dialup settings
WARNING: translation string unused: disconnect
+WARNING: translation string unused: disconnects
WARNING: translation string unused: display traffic at home
WARNING: translation string unused: display webinterface effects
WARNING: translation string unused: dmz pinhole configuration
WARNING: translation string unused: dmz pinhole rule added
WARNING: translation string unused: dmz pinhole rule removed
WARNING: translation string unused: dmzpinholes for same net not necessary
+WARNING: translation string unused: dns server
WARNING: translation string unused: do not log this port list
WARNING: translation string unused: donation-link
WARNING: translation string unused: done
WARNING: translation string unused: firmware
WARNING: translation string unused: firmware upload
WARNING: translation string unused: force update
+WARNING: translation string unused: forward firewall
WARNING: translation string unused: forwarding rule added
WARNING: translation string unused: forwarding rule removed
WARNING: translation string unused: forwarding rule updated
WARNING: translation string unused: 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
WARNING: translation string unused: invert
WARNING: translation string unused: ip address in use
WARNING: translation string unused: ipfire side
+WARNING: translation string unused: ipsec no connections
WARNING: translation string unused: iptable rules
WARNING: translation string unused: isdn
WARNING: translation string unused: isdn settings
WARNING: translation string unused: 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
WARNING: translation string unused: psk
WARNING: translation string unused: quick control
WARNING: translation string unused: reboot ask
+WARNING: translation string unused: reboot question
WARNING: translation string unused: reboot schedule
WARNING: translation string unused: reboot sure
WARNING: translation string unused: refresh update list
WARNING: translation string unused: tor bridge enabled
WARNING: translation string unused: tor errmsg invalid node id
WARNING: translation string unused: tor exit country
+WARNING: translation string unused: total connection time
WARNING: translation string unused: traffic back
WARNING: translation string unused: traffic calc time
WARNING: translation string unused: traffic calc time bad
WARNING: translation string unused: use ibod
WARNING: translation string unused: view log
WARNING: translation string unused: vpn aggrmode
+WARNING: translation string unused: vpn configuration main
WARNING: translation string unused: vpn incompatible use of defaultroute
WARNING: translation string unused: vpn mtu invalid
WARNING: translation string unused: vpn on blue
WARNING: translation string unused: 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
# Checking cgi-bin translations for language: fr #
############################################################################
< 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
< dns address deleted txt
< dnsforward
< 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
if ($errormessage) {
&Header::openbox('100%', 'left', $Lang::tr{'error messages'});
- print "<font class='base'>$errormessage </font>";
+ print "$errormessage ";
&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
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'}: <img src='/blob.gif' alt='*' /></font></td>
+<td class='base' style='color:${Header::colourred};'>$Lang::tr{'name'}: <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'}: </font></td>
+<td class='base' style='text-align:right; color:${Header::colourred};'>$Lang::tr{'alias ip'}: </td>
<td><input type='text' name='IP' value='$settings{'IP'}' size='16' /></td>
-<td class='base' align='right'>$Lang::tr{'enabled'} </td>
+<td class='base' style='text-align:right;'>$Lang::tr{'enabled'} </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='*' /> $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='*' /> $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>
#
&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
;
#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' />
</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'}' />
</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'}' />
# Restart service associated with this
system '/usr/local/bin/setaliases';
}
+
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($_);
&& !($param =~"bInterface")
&& !($param =~"bAlternateSetting")
&& !($param =~"bNumEndpoints")
+ && !($param =~"config matches")
+ && !($param =~"resource")
&& !($param eq "")
) {
# 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>
# 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&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+ <a href="?sort_field=5&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&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+ <a href="?sort_field=1&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
- <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&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+ <a href="?sort_field=3&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&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+ <a href="?sort_field=2&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
- <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&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+ <a href="?sort_field=4&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&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+ <a href="?sort_field=8&sort_order=a"><img style="width:10px" src="/images/down.gif" alt=""></a>
- <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&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+ <a href="?sort_field=9&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&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+ <a href="?sort_field=6&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&sort_order=d"><img style="width:10px" src="/images/up.gif" alt=""></a>
+ <a href="?sort_field=7&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>
my $sip_extra;
if ($sip ne $sip_ret) {
- $sip_extra = "<font color='#FFFFFF'>></font> ";
+ $sip_extra = "<span style='color:#FFFFFF;'>></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'>></font> ";
+ $dip_extra = "<span style='color:#FFFFFF;'>></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>";
}
$sserv_ret = uc(getservbyport($sport_ret, lc($l4proto)));
}
- $sport_extra = "<font color='#FFFFFF'>></font> ";
+ $sport_extra = "<span style='color:#FFFFFF;'>></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>";
}
$dserv_ret = uc(getservbyport($dport_ret, lc($l4proto)));
}
- $dport_extra = "<font color='#FFFFFF'>></font> ";
+ $dport_extra = "<span style='color:#FFFFFF;'>></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
}
&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> </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> </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/*>;
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> </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> </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
;
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> <img src='/blob.gif' alt='*' /></td>
+ <td width ='20%' class='base'>$Lang::tr{'remark'}: <img src='/blob.gif' alt='*' /></td>
<td><input type='text' name='REMARK' value='$cgiparams{'REMARK'}' size='40' maxlength='50' /></td>
</tr>
</table>
<table width='100%'>
<tr>
- <td class='base' width='55%'><img src='/blob.gif' alt ='*' align='top' /> <font class='base'>$Lang::tr{'this field may be blank'}</font></td>
+ <td class='base' width='55%'><img src='/blob.gif' alt ='*' align='top' /> $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' />
--- /dev/null
+#!/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;
+}
<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
;
<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
;
if ($errormessage) {
&Header::openbox('100%', 'left', "$Lang::tr{'error messages'}");
- print "<FONT CLASS='base'>$errormessage </FONT>\n";
+ print "<font class='base'>$errormessage </font>\n";
&Header::closebox();
}
</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>
use strict;
use Sort::Naturally;
+use utf8;
+use feature 'unicode_strings';
+
no warnings 'uninitialized';
+
# enable only the following on debugging purpose
#use warnings;
#use CGI::Carp 'fatalsToBrowser';
require '/var/ipfire/general-functions.pl';
require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";
-require "${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"); }
$errormessage=&checksource;
if(!$errormessage){&checktarget;}
if(!$errormessage){&checkrule;}
+
#check if manual ip (source) is orange network
if ($fwdfwsettings{'grp1'} eq 'src_addr'){
my ($sip,$scidr) = split("/",$fwdfwsettings{$fwdfwsettings{'grp1'}});
if ( "$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'}){
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';
}
}
#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'}"
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;
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
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
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>";}
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){
print "<class name='base'>$hint\n";
print " </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
{
$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'};
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'>";
</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
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>
&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'};
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
{
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]='';
}
}
}
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]='';
}
}
}
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];
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/|/,/;
<td colspan='13'> </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
<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;
use strict;
# enable only the following on debugging purpose
-use warnings;
+#use warnings;
+
use Sort::Naturally;
use CGI::Carp 'fatalsToBrowser';
no warnings 'uninitialized';
my %fwinp=();
my %fwout=();
my %ovpnsettings=();
-
+my %netsettings=();
my $errormessage;
my $hint;
&General::readhash("$configovpn", \%ovpnsettings);
&General::readhasharray("$configipsec", \%ipsecconf);
&General::readhash("$configipsecrw", \%ipsecsettings);
-
+&General::readhash("/var/ipfire/ethernet/settings", \%netsettings);
&Header::getcgihash(\%fwhostsettings);
&Header::showhttpheaders();
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>
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>
<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)
{
}
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>";
}
}
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>";
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
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'){
&General::readhasharray("$fwconfigfwd", \%fwfwd);
&General::readhasharray("$fwconfiginp", \%fwinp);
&General::readhasharray("$fwconfigout", \%fwout);
+
if (!keys %customnetwork)
{
print "<center><b>$Lang::tr{'fwhost empty'}</b>";
}
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]' />
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>";
}
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
{
$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' />
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>";
}
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]) {
}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]){
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]' />
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>";
}
print " <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]) {
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) {
}
sub checkgroup
{
- &General::readhasharray("$configsrvgrp", \%customservicegrp );
+ &General::readhasharray("$configgrp", \%customgrp );
my $name=shift;
foreach my $key (keys %customservicegrp) {
if($customservicegrp{$key}[0] eq $name){
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'}.
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>';
}
&Header::closebox();
&Header::closebigbox();
&Header::closepage();
+
+sub redirect {
+ print "Status: 302 Moved Temporarily\n";
+ print "Location: index.cgi\n\n";
+ exit (0);
+}
close (FILE);
if ( $found == 0 )
{
- $errormessage="$errormessage<P>$Lang::tr{'invalid input'}";
+ $errormessage="$errormessage<p>$Lang::tr{'invalid input'}</p>";
goto SAVE_ERROR;
}
&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;
background-color: #DCDCDC;
}
-->
-</STYLE>
+</style>
END
;
####################### End added for snort rules control #################################
$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
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'>";
# 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;
}
}
# 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;
# If have display 2 rules, start new row
if (($ruledefdisplaycnt % 2) == 0) {
- print "</TR><TR>";
+ print "</tr><tr>";
$ruledefdisplaycnt = 0;
}
# 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++;
# 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>
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;
###############################################################################
# #
# 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 #
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 {
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
}
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
}
$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;
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`;
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.
$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
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>";
}
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
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 {
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>";
}
}
}
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>";
}
}
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();
+
print <<END
-<DIV align='left'>
+<div align='left'>
END
;
}
print "</td>\n</tr>\n";
}
-print "</table></DIV><br />";
+print "</table></div><br />";
&Header::closebox();
## MANGLE
print <<END
-<DIV align='left'>
+<div align='left'>
END
;
}
print "</td>\n</tr>\n";
}
-print "</table></DIV><br />";
+print "</table></div><br />";
&Header::closebox();
## NAT
print <<END
-<DIV align='left'>
+<div align='left'>
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");
&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;
}
my $next;
- if ($start == $lines - ${Header::viewsize}) {
+ if ($start == $lastPageIndex) {
$next = -1;
} else {
$next = $start + ${Header::viewsize};
<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
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
--- /dev/null
+#!/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 </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'}: </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'> $Lang::tr{'day'}: </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='<<' /></td>
+<td width='5%' align='center'><input type='submit' name='ACTION' title='$Lang::tr{'day after'}' value='>>' /></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";
+}
+
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
;
$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")
{
$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
;
last;
}
}
-}sub checkversion {
- #Automatic Updates is disabled
- return "0","0";
- }
+}
+
+sub checkversion {
+ #Automatic Updates is disabled
+ return "0","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
;
$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")
{
$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
;
&Header::closepage();
sub findkey {
+ my $v;
foreach $v (@keytabjc) {
if ($tabjc{$v} eq $_[0]) {
delete $tabjc{$v};
}
}
}
+
sub checkversion {
- #Automatic Updates is disabled
- return "0","0";
- }
+ #Automatic Updates is disabled
+ return "0","0";
+}
+
eval($thiscode);
if ($@ ne '')
{
- $errormessage = "$Lang::tr{'bad ignore filter'}.$@<P>";
+ $errormessage = "$Lang::tr{'bad ignore filter'}.$@<p>";
$filter = '';
} else {
my $loop = 1;
--- /dev/null
+#!/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 </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'}: </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'> $Lang::tr{'day'}: </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='<<' /></td>
+<td width='5%' align='center'><input type='submit' name='ACTION' title='$Lang::tr{'day after'}' value='>>' /></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
+;
+}
+
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
;
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++;
}
print <<END
-</TABLE>
+</table>
END
;
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});
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++;
}
print <<END
-</TABLE>
+</table>
END
;
&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>';
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>";
}
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>";
}
}
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
;
&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="";
# #
###############################################################################
###
-# Based on IPFireCore 55
+# Based on IPFireCore 76
###
use CGI;
use CGI qw/:standard/;
$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'} = '';
$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"); }
}
}
-# 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
return;
}
+
sub writeserverconf {
my %sovpnsettings = ();
my @temp = ();
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')
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"; }
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.
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";
}
$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 '') {
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";
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'});
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";
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'});
$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'};
###
### 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);
}
}
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();
&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
###
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
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`;
}
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'>
$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'}:");
}
} 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")) {
}
} 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',
}
# 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");
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'});
&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>
}
print ">$country</option>";
}
- print <<END
- </select></td>
- <td colspan='2'> </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> </td>
<td><input type='submit' name='ACTION' value='$Lang::tr{'generate root/host certificates'}' /></td>
<td> </td><td> </td></tr>
<tr><td class='base' colspan='4' align='left'>
<img src='/blob.gif' valign='top' alt='*' /> $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'> </td></tr>
<td><input type='submit' name='ACTION' value='$Lang::tr{'upload p12 file'}' /></td>
<td colspan='2'> </td></tr>
<tr><td class='base' colspan='4' align='left'>
- <img src='/blob.gif' valign='top' al='*' > $Lang::tr{'this field may be blank'}</td></tr>
+ <img src='/blob.gif' valign='top' al='*' > $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)
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";
}
$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";
}
} else {
$errormessage = $Lang::tr{'invalid key'};
}
-
+ &General::firewall_reload();
###
### Download PKCS12 file
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`;
&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
###
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`;
# }
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'} = '';
$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';
$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);
&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
;
</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>
</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"){
&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>
&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>
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>
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'/>
#
# <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>
}
print "</table>";
- print <<END
+ print <<END;
<table width='100%' border='0' cellpadding='2' cellspacing='0'>
<tr><td></td></tr>
<tr><td></td></tr>
} 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>
} 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>
}
&Header::closebox();
+ print "<div align='center'><a href='/cgi-bin/ovpnmain.cgi'>$Lang::tr{'back'}</a></div>";
&Header::closebigbox();
&Header::closepage();
exit (0);
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]);
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]);
###
$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);
}
###
-# Check im Dest Port is vaild
+# Check if Dest Port is vaild
###
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];
$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);
&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%'> </td><td width='25%'> </td></tr>
<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> </td><td> </td></tr>
</table>
END
}
&Header::closebigbox();
&Header::closepage();
- exit(0);
+ exit(0);
##
$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'});
goto VPNCONF_ERROR;
}
- if ($cgiparams{'OVPN_MGMT'} eq '') {
+ if ($cgiparams{'OVPN_MGMT'} eq '') {
$cgiparams{'OVPN_MGMT'} = $cgiparams{'DEST_PORT'};
}
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)$/)) {
}
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'}))) {
}
} 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")) {
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'};
$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'};
$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);
###
$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") {
}
$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'});
&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'}) {
} else {
print "<td width='25%'><input type='text' name='NAME' value='$cgiparams{'NAME'}' maxlength='20' /></td>";
}
-
-
-
- print <<END
+
+ print <<END;
<td width='25%'> </td>
<td width='25%'> </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'} <img src='/blob.gif'</td>
- <td><input type='checkbox' name='COMPLZO' $checked{'COMPLZO'}{'on'} /></td>
-
- <tr><td class='boldbase' nowrap='nowrap'>mssfix <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 <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'} <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 <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'}): <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'} <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: <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: <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'} <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
;
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>
} 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> </td></tr>
###
if ($cgiparams{'TYPE'} eq 'host') {
- print <<END
+ print <<END;
</select></td></tr>
<td> </td><td class='base'>$Lang::tr{'valid till'} (days):</td>
</table>
END
}else{
- print <<END
+ print <<END;
</select></td></tr>
<tr><td> </td><td> </td><td> </td></tr>
<tr><td> </td><td> </td><td> </td></tr>
#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'} = '';
$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'} = '';
&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 = "";
$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%'> </td>
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>
<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'} </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
;
}
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> </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> </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> </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> </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'> <b>$Lang::tr{'legend'}:</b></td>
- <td> <img src='/images/info.gif' alt='$Lang::tr{'show certificate'}' /></td>
- <td class='base'>$Lang::tr{'show certificate'}</td>
- <td> <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'>
#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 {
}
- print <<END
+ print <<END;
<td align='center' $col1>$active</td>
<form method='post' name='frm${key}a'><td align='center' $col>
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'}' />
print "<td> </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'}' />
</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'}' />
# If the config file contains entries, print Key to action icons
if ( $id ) {
- print <<END
+ print <<END;
<table border='0'>
<tr>
- <td class='boldbase'> <b>$Lang::tr{'legend'}:</b></td>
- <td> <img src='/images/on.gif' alt='$Lang::tr{'click to disable'}' /></td>
- <td class='base'>$Lang::tr{'click to disable'}</td>
- <td> <img src='/images/info.gif' alt='$Lang::tr{'show certificate'}' /></td>
- <td class='base'>$Lang::tr{'show certificate'}</td>
- <td> <img src='/images/edit.gif' alt='$Lang::tr{'edit'}' /></td>
- <td class='base'>$Lang::tr{'edit'}</td>
- <td> <img src='/images/delete.gif' alt='$Lang::tr{'remove'}' /></td>
- <td class='base'>$Lang::tr{'remove'}</td>
+ <td class='boldbase'> <b>$Lang::tr{'legend'}:</b></td>
+ <td> <img src='/images/on.gif' alt='$Lang::tr{'click to disable'}' /></td>
+ <td class='base'>$Lang::tr{'click to disable'}</td>
+ <td> <img src='/images/info.gif' alt='$Lang::tr{'show certificate'}' /></td>
+ <td class='base'>$Lang::tr{'show certificate'}</td>
+ <td> <img src='/images/edit.gif' alt='$Lang::tr{'edit'}' /></td>
+ <td class='base'>$Lang::tr{'edit'}</td>
+ <td> <img src='/images/delete.gif' alt='$Lang::tr{'remove'}' /></td>
+ <td class='base'>$Lang::tr{'remove'}</td>
</tr>
<tr>
- <td> </td>
- <td> <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> </td>
+ <td> <img src='/images/off.gif' alt='?OFF' /></td>
+ <td class='base'>$Lang::tr{'click to enable'}</td>
+ <td> <img src='/images/media-floppy.png' alt='?FLOPPY' /></td>
+ <td class='base'>$Lang::tr{'download certificate'}</td>
+ <td> <img src='/images/openvpn.png' alt='?RELOAD'/></td>
+ <td class='base'>$Lang::tr{'dl client arch'}</td>
+ </tr>
</table><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> </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> </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> </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> </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'> <b>$Lang::tr{'legend'}:</b></td>
+ <td> <img src='/images/info.gif' alt='$Lang::tr{'show certificate'}' /></td>
+ <td class='base'>$Lang::tr{'show certificate'}</td>
+ <td> <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();
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>
<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
<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
print <<END;
<table>
<tr><td>
- <img src='/images/indicator.gif' alt='$Lang::tr{'aktiv'}' />
+ <img src='/images/indicator.gif' alt='$Lang::tr{'aktiv'}' title='$Lang::tr{'aktiv'}' />
<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
</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 -->
</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">
</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
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 " </CLASS>\n";
+ print "<class name='base'>$errormessage\n";
+ print " </class>\n";
&Header::closebox();
&Header::closebigbox();
if ($errormessage) {
&Header::openbox('100%', 'center', $Lang::tr{'error messages'});
- print "<CLASS name='base'>$errormessage\n";
- print " </CLASS>\n";
+ print "<class name='base'>$errormessage\n";
+ print " </class>\n";
&Header::closebox();
}
;
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
;
}
<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>
<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>
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.'};
}
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) {
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();
<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++ )
}
print <<END
</select><td width='33%' align='center'>
- <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++ )
print <<END
</select><td width='33%' align='center'>
<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'>
<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>
<td width='33%' align='left'><input type='text' name='DPORT' maxlength='11' value='$qossettings{'DPORT'}' />
<td width='33%' align='center'>
<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'>
<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
@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>
<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>
<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
<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]' />
<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
<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
<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
###############################################################################
# #
# 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 #
if ($errormessage) {
&Header::openbox('100%', 'left', $Lang::tr{'error messages'});
- print "<FONT CLASS='base'>$errormessage </FONT>\n";
+ print "<font class='base'>$errormessage </font>\n";
&Header::closebox();
}
&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";
<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
<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
<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
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;
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;
<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 />
<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'}
<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
;
#<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
#;
$id = 0;
foreach $updatefile (@downloadfiles)
{
- $updatefile =~ s/.*://;
+ $updatefile =~ s/.*:download/download/;
my $size_updatefile = 0;
my $mtime = 0;
if(-e "$repository/$updatefile") {
{
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);
}
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);
}
}
$id = 0;
foreach $updatefile (@files)
{
- $updatefile =~ s/.*://;
+ $updatefile =~ s/.*:separator://;
my $size_updatefile = 0;
my $mtime = 0;
if(-e "$repository/$updatefile") {
<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 = '';
<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
;
############################################################################################################################
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;
{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;
- }
+}
+
} else {
$errormessage = $Lang::tr{'invalid key'};
}
-
+ &General::firewall_reload();
###
### Choose between adding a host-net or net-net connection
###
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'};
<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>
&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'}'>
###############################################################################
# #
# 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 #
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;
}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 ){
$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;
$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
#
&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> </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%'> </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%'> </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%'> </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();
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: </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: </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: </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'}: </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: </td><td class='base' colspan='3'>
<select name='HW_MODE'>
<option value='a' $selected{'HW_MODE'}{'a'}>802.11a</option>
<option value='gn' $selected{'HW_MODE'}{'gn'}>802.11gn</option>
</select>
</td></tr>
-
-<tr><td width='25%' class='base'>$Lang::tr{'wlanap encryption'}: </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
;
END
;
}
-
-print <<END
-<tr><td width='25%' class='base'>$Lang::tr{'wlanap country'}: </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'}: </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: </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: </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: </td><td class='base' colspan='3'>
END
;
print "<input type='text' name='TXPOWER' size='10' value='$wlanapsettings{'TXPOWER'}' /></td></tr>"
}
print <<END
-<tr><td width='25%' class='base'>Passphrase: </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: </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): </td><td class='base' width='25%'>
<select name='SYSLOGLEVEL'>
<option value='0' $selected{'SYSLOGLEVEL'}{'0'}>0 ($Lang::tr{'wlanap verbose'})</option>
<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: </td><td class='base' width='25%'>
<select name='MACMODE'>
<option value='0' $selected{'MACMODE'}{'0'}>0 (off)</option>
}
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'} />
</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> <a href="/cgi-bin/wireless.cgi">$Lang::tr{'wlanap link wireless'}</a></td></tr>
<tr><td> <a href="/cgi-bin/dhcp.cgi">$Lang::tr{'wlanap link dhcp'}</a></td></tr>
+<tr><td><br></td></tr>
</table>
END
;
interface=$wlanapsettings{'INTERFACE'}
country_code=$wlanapsettings{'COUNTRY'}
ieee80211d=1
+ieee80211h=1
channel=$wlanapsettings{'CHANNEL'}
END
;
###############################################################################
# #
# 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";
border-top: 1px solid lightgrey;
border-bottom: 1px solid lightgrey;
background: #cccccc;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
}
.tbl th:first-child {
.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;
}
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>";
&genmenu();
my $headline = "IPFire";
- if ($settings{'WINDOWWITHHOSTNAME'} eq 'on') {
+ if (($settings{'WINDOWWITHHOSTNAME'} eq 'on') || ($settings{'WINDOWWITHHOSTNAME'} eq '')) {
$headline = "$settings{'HOSTNAME'}.$settings{'DOMAINNAME'}";
}
<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) {
$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";
$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);
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);
%tr = (
%tr,
-'Act as' => 'Konfiguriert als',
+'Act as' => 'Konfiguriert als:',
'Add Level7 rule' => 'Level7-Regel hinzufügen',
'Add Port Rule' => 'Port-Regel hinzufügen',
'Add Rule' => 'Regel hinzufügen',
'Choose Rule' => 'Wählen Sie <u>eine</u> der untenstehenden Regeln aus.',
'Class' => 'Klasse',
'Class was deleted' => 'wurde mit eventuell vorhandenen Unterklassen gelöscht',
-'Client status and controlc' => 'Client-Status und -Kontrolle',
'ConnSched action' => 'Aktion:',
'ConnSched add action' => 'Aktion hinzufügen',
'ConnSched change profile title' => 'Wechsle zu Profil:',
'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',
'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:',
'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',
'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!',
###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2012 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2014 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
include Config
-VER = 2.2.23
+VER = 2.2.26
THISAPP = httpd-$(VER)
DL_FILE = $(THISAPP).tar.bz2
$(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)
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
$(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/
include Config
-VER = 1.2.2
+VER = 1.3
THISAPP = beep-$(VER)
DL_FILE = $(THISAPP).tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = d541419fd7e5642952d7b48cbb40c712
+$(DL_FILE)_MD5 = 49c340ceb95dbda3f97b2daafac7892a
install : $(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 \
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
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" \
###############################################################################
# #
# 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
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 05bae01409bb699f14297d726df2aa23
+$(DL_FILE)_MD5 = 8a57fc73335bf1ab0e16a02ecccdae76
install : $(TARGET)
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
VER = 2008-04-13
THISAPP = ffmpeg-export-$(VER)
PROG = ffmpeg-libs
-PAK_VER = 4
+PAK_VER = 5
DEPS = ""
include Config
-VER = 2.1.7
+VER = 2.1.9
THISAPP = fireinfo-v$(VER)
DL_FILE = $(THISAPP).tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 97f6744c1ff61eb104a9278df12451c8
+$(DL_FILE)_MD5 = a4dbb3a4111f263b5059b2f76b14b32c
install : $(TARGET)
$(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
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
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
###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2013 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2014 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
include Config
-VER = 2.0
+VER = 2.1
THISAPP = hostapd-$(VER)
DL_FILE = $(THISAPP).tar.gz
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = hostapd
-PAK_VER = 26
+PAK_VER = 28
DEPS = ""
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = ba22e639bc57aa4035d2ea8ffa9bbbee
+$(DL_FILE)_MD5 = bb9c50e87c5af6f89f387e63911effac
install : $(TARGET)
###############################################################################
# #
# 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
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = dcbf7271c016bdb71102eb623b807f83
+$(DL_FILE)_MD5 = 701717fbbba6065af4ff5138bd3a3a9c
install : $(TARGET)
@$(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)
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
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; \
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = libmad
-PAK_VER = 1
+PAK_VER = 2
DEPS = ""
+CFLAGS += -Wa,--noexecstack
+
###############################################################################
# Top-level Rules
###############################################################################
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
CFLAGS =
CXXFLAGS =
-PAK_VER = 32
+PAK_VER = 38
DEPS = ""
VERSUFIX=ipfire$(KCFG)
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)
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
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
# 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
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
# 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-*
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)
###############################################################################
# #
# 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 #
include Config
-VER = 1.3.11
+VER = 1.4.4
THISAPP = nginx-$(VER)
DL_FILE = $(THISAPP).tar.gz
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = nginx
-PAK_VER = 1
+PAK_VER = 3
###############################################################################
# Top-level Rules
$(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)
$(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 \
--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)
include Config
-VER = 4.2.4p7
+VER = 4.2.6p5
THISAPP = ntp-$(VER)
DL_FILE = $(THISAPP).tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 8c19ff62ed4f7d64f8e2aa59cb11f364
+$(DL_FILE)_MD5 = 00df80a84ec9528fcfb09498075525bc
install : $(TARGET)
$(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
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)
include Config
-VER = 6.4p1
+VER = 6.6p1
THISAPP = openssh-$(VER)
DL_FILE = $(THISAPP).tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = a62b88b884df0b09b8a8c5789ac9e51b
+$(DL_FILE)_MD5 = 3e9800e6bca1fbac0eea4d41baa7f239
install : $(TARGET)
--- /dev/null
+###############################################################################
+# #
+# 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)
include Config
-VER = 1.607
+VER = 1.631
THISAPP = DBI-$(VER)
DL_FILE = $(THISAPP).tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = bd5785b39675213948a61dea1b400012
+$(DL_FILE)_MD5 = 444d3c305e86597e11092b517794a840
install : $(TARGET)
--- /dev/null
+###############################################################################
+# #
+# 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)
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)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 5652b955e16716cec48da464b083c76f
+$(DL_FILE)_MD5 = ae89dbfcf08bdfbea19066cfbf599127
install : $(TARGET)
md5 : $(subst %,%_MD5,$(objects))
-dist:
- @$(PAK)
-
###############################################################################
# Downloading, checking, md5sum
###############################################################################
$(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)
include Config
-VER = d4f5315
+VER = 940dc3b
THISAPP = rpi-firmware-$(VER)
DL_FILE = $(THISAPP).tar.xz
DL_FROM = $(URL_IPFIRE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 65c0a859ab96cb563a80e3529c78f555
+$(DL_FILE)_MD5 = d8e02dc961aa8b5289912fe926a420de
install : $(TARGET)
###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2013 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2014 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
include Config
-VER = 3.6.22
+VER = 3.6.23
THISAPP = samba-$(VER)
DL_FILE = $(THISAPP).tar.gz
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = samba
-PAK_VER = 56
+PAK_VER = 57
DEPS = "cups"
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 59add4bb178ebc188d857bc13a508c0b
+$(DL_FILE)_MD5 = 2f7aee1dc5d31aefcb364600915b31dc
install : $(TARGET)
include Config
-VER = 3.3.11
+VER = 3.4.4
THISAPP = squid-$(VER)
DL_FILE = $(THISAPP).tar.xz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = dd016ff5f14b2548083b3882207914f6
+$(DL_FILE)_MD5 = dc2bcb967fc6b15bbbc6b961010c0c00
install : $(TARGET)
###############################################################################
# Downloading, checking, md5sum
###############################################################################
+
$(patsubst %,$(DIR_CHK)/%,$(objects)) :
@$(CHECK)
# 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
include Config
-VER = 5.1.1
+VER = 5.1.2
THISAPP = strongswan-$(VER)
DL_FILE = $(THISAPP).tar.bz2
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = e3af3d493d22286be3cd794533a8966a
+$(DL_FILE)_MD5 = d45a2e89c624bceaf2e53c9b9cdddf83
install : $(TARGET)
@$(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 \
include Config
-VER = 1.6.8p12
+VER = 1.8.10p1
THISAPP = sudo-$(VER)
DL_FILE = $(THISAPP).tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = b29893c06192df6230dd5f340f3badf5
+$(DL_FILE)_MD5 = 1d9c2bc5aaf02608343d17b9a666e8e1
install : $(TARGET)
$(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)
include Config
-VER = 0.2.4.18-rc
+VER = 0.2.4.20
THISAPP = tor-$(VER)
DL_FILE = $(THISAPP).tar.gz
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = tor
-PAK_VER = 5
+PAK_VER = 6
DEPS = "libevent2"
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 6cc5bc776e9d61a9fb1b000609ed2692
+$(DL_FILE)_MD5 = a8cd8e3b3a3f6a7770f2c22d280f19b8
install : $(TARGET)
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
###############################################################################
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)
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)
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
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
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = vdr
-PAK_VER = 8
+PAK_VER = 9
DEPS = "vdr_streamdev"
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)
--- /dev/null
+###############################################################################
+# #
+# 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)
--- /dev/null
+###############################################################################
+# #
+# 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)
include Config
-VER = 1.6
+VER = 1.11
THISAPP = vnstat-$(VER)
DL_FILE = $(THISAPP).tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = ccaffe8e70d47e0cf2f25e52daa25712
+$(DL_FILE)_MD5 = a5a113f9176cd61fb954f2ba297f5fdb
install : $(TARGET)
$(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
###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2013 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2014 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
include Config
-VER = 2.0
+VER = 2.1
THISAPP = wpa_supplicant-$(VER)
DL_FILE = $(THISAPP).tar.gz
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 3be2ebfdcced52e00eda0afe2889839d
+$(DL_FILE)_MD5 = e96b8db5a8171cd17a5b2012d6ad7cc7
install : $(TARGET)
# 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>. #
# #
############################################################################
#
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
# 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=""
# 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
# arm multi platform (Panda, Wandboard ...) kernel build
ipfiremake linux KCFG="-multi"
ipfiremake cryptodev KCFG="-multi"
+ ipfiremake e1000e KCFG="-multi"
+ ipfiremake igb KCFG="-multi"
# arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
ipfiremake linux KCFG="-kirkwood"
# ipfiremake 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
ipfiremake sysstat
ipfiremake vsftpd
ipfiremake strongswan
+ ipfiremake rng-tools
ipfiremake lsof
ipfiremake br2684ctl
ipfiremake pcmciautils
ipfiremake vdr_streamdev
ipfiremake vdr_vnsiserver3
ipfiremake vdr_epgsearch
+ ipfiremake vdr_dvbapi
+ ipfiremake vdr_eepg
ipfiremake w_scan
ipfiremake icecast
ipfiremake icegenerator
ipfiremake git
ipfiremake squidclamav
ipfiremake vnstat
- ipfiremake vnstati
ipfiremake iw
ipfiremake wpa_supplicant
ipfiremake hostapd
ipfiremake netsnmpd
ipfiremake perl-DBI
ipfiremake perl-DBD-mysql
+ ipfiremake perl-DBD-SQLite
+ ipfiremake perl-File-ReadBackwards
ipfiremake cacti
ipfiremake icecc
ipfiremake openvmtools
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
#!/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)
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
# 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
# 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
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
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
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
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
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
}
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
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
#
# Authors : Arne Fitzenreiter - arne_f@ipfire.org
#
-# Version : 1.03
+# Version : 1.04
#
# Notes :
#
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
;;
/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
;;
--- /dev/null
+#!/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
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)
/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
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]);
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. */
}
void setFirewallRules(void) {
+ char command[STRING_SIZE];
char protocol[STRING_SIZE] = "";
char dport[STRING_SIZE] = "";
char dovpnip[STRING_SIZE] = "";
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) {
############################################################################
#
. /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
############################################################################
#
. /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
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'
############################################################################
#
. /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
############################################################################
#
. /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
--- /dev/null
+#!/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}
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+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
+
+++ /dev/null
-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())
--- /dev/null
+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);
--- /dev/null
+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;
+ }
--- /dev/null
+#
+# 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;
+
--- /dev/null
+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'. */
--- /dev/null
+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)
--- /dev/null
+#
+# 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);
--- /dev/null
+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. */
--- /dev/null
+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)); \
++ } \
++})
--- /dev/null
+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);
+ }
--- /dev/null
+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
+++ /dev/null
-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);
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
--- /dev/null
+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
+
+++ /dev/null
-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)
- {
--- /dev/null
+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/
--- /dev/null
+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");
++
--- /dev/null
+diff -Naur linux-3.10.30.org/sound/pci/cs5535audio/cs5535audio.c linux-3.10.30/sound/pci/cs5535audio/cs5535audio.c
+--- linux-3.10.30.org/sound/pci/cs5535audio/cs5535audio.c 2014-02-13 22:48:15.000000000 +0100
++++ linux-3.10.30/sound/pci/cs5535audio/cs5535audio.c 2014-02-15 12:45:49.545688703 +0100
+@@ -83,8 +83,8 @@
+ break;
+ udelay(1);
+ } while (--timeout);
+- if (!timeout)
+- snd_printk(KERN_ERR "Failure writing to cs5535 codec\n");
++// if (!timeout)
++// snd_printk(KERN_ERR "Failure writing to cs5535 codec\n");
+ }
+
+ static unsigned short snd_cs5535audio_codec_read(struct cs5535audio *cs5535au,
+@@ -108,9 +108,9 @@
+ break;
+ udelay(1);
+ } while (--timeout);
+- if (!timeout)
+- snd_printk(KERN_ERR "Failure reading codec reg 0x%x,"
+- "Last value=0x%x\n", reg, val);
++// if (!timeout)
++// snd_printk(KERN_ERR "Failure reading codec reg 0x%x,"
++// "Last value=0x%x\n", reg, val);
+
+ return (unsigned short) val;
+ }
-diff --git a/src/_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
# 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.
- -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 \
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.
- -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 -- \
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
- 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 \
;;
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
+ 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 \
+ $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 -- \
;;
#
# 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.
-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.
-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
-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
-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
-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
+++ /dev/null
-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
-
+++ /dev/null
-#!/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 = "‹no action since clearing›";
- $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);
-}
# 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 {
--- /dev/null
+#!/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
+
+$@